En este caso, para Centos funciona, pero para Debian no.
...2.1.1 Document Naming and LinkingWSDL documents can be assigned an optional name attribute of type NCNAME that serves as a lightweight form of documentation. Optionally, a targetNamespace attribute of type URI may be specified. The URI MUST NOT be a relative URI.
WSDL allows associating a namespace with a document location using an import statement:
<pre class="western"><definitions ....=""> </definitions></pre>
...
Diseño web y otras salsas
Arreglando los engranajes del ciberespacio
viernes, 27 de enero de 2017
Error de SOAP: couldn't load from file: failed to load external entity
miércoles, 10 de diciembre de 2014
Resolviendo el error "FATAL ERROR: EXCEPTION THROWN WITHOUT A STACK FRAME IN UNKNOWN ON LINE 0"
FATAL ERROR: EXCEPTION THROWN WITHOUT A STACK FRAME IN UNKNOWN ON LINE 0
Habla sobre una excepción lanzada y en la linea cero, sin embargo no indica el archivo ni la linea del código, por lo que se hace difícil su depuración.
En varios foros de stackoverflow aparecen posibles soluciones a este problema:
http://stackoverflow.com/questions/10485371/baffled-php-fatal-error-exception-thrown-without-a-stack-frame-in-unknown-on-l
http://stackoverflow.com/questions/5440640/session-saving-problem-getting-php-fatal-error-exception-thrown-without-a-stac
http://stackoverflow.com/questions/4624223/object-in-session-fatal-error-exception-thrown-without-a-stack-frame-in-unknow
Según comentan en estos foros, a veces sucede cuando intervienen las sesiones. Así que busque el código que guarda los datos en sesión y pude aislar el código problema:
$objeto_xml = new SimpleXmlElement($xml) ;
$_SESSION['id_envio'] = $objeto_xml->id ;
Como ven se esta asignando un objeto a la sesión. Al terminar el programa, PHP intenta guardar el objeto retornado por simpleXml y al parecer el metodo __destruct de simplexml que lanza una excepcion que produce el error. Pues bien, la solución fue sustituir la segunda linea de código por
$_SESSION['id_envio'] = (int)$objeto_xml->id ;
y listo, no mas errores en el código.
miércoles, 11 de abril de 2012
WWW.RADIOMACONDO.FM: ¿Qué se aprobó en el proyecto de Ley 201?
lunes, 9 de abril de 2012
solucionar problemas de sonido en gateway 3522gz en linux
en linux ubuntu
Fecha: 2012-abril-9
problema:
no hay sonido.
Detalle del problema:
La versión de ubuntu es oneiric 11.10
el driver esta instalado y el hardware de la tarjeta de sonido son detectados.
No aparecen errores en dmesg o errores al reproducir un sonido.
solución:
Al parecer la instalación por defecto del driver hace que quede activada una opción que no se usa en la configuración de sonido de Ubuntu y esto ocasiona que el sonido este muteado.
Lo que se debe hacer es instalar el programa de configuración de la tarjeta y despues configurarla.
Primero se debe instalar gnome-alsamixer, aplicación que muestra opciones extendidas de configuración de la tarjeta de sonido.
sudo apt-get install gnome-alsamixer
Al iniciar este programa se debe desactivar la casilla que indica "External Amplifier".
si esto no funciona, verificar que exista algun nivel de audio en el canal master, en PCM y en stereo.
Si esto no llegara a funcionar, probar seleccionando y deseleccionando las casillas mostradas una por una.
miércoles, 11 de enero de 2012
Replicación en MySQL
INTRO
Aunque he trabajado con MYSQL desde hace más de 8 años, no había tenido la oportunidad de usar en forma la bien conocida característica de replicación en MYSQL. Esta característica permite duplicar en línea los datos de un servidor a otro y es altamente configurable. Lamentablemente o afortunadamente, he tenido unos tropiezos para configurar los servidores y ajustarlos de la manera en que los necesito. En este escrito resumo la configuración de una replicación de dos servidores maestro-esclavo.
HISTORIA
Inicialmente había la necesidad de disminuir la carga de un servidor cuyas actualizaciones e inserciones eran frecuentes y que esporádicamente se consultaba. El problema consistía en que cuando los registros pasaban del millón, las consultas se hacían supremamente lentas y lo peor del caso era que las consultas hacían que algunos procesos de inserción abortaran por timeout. Al no poder crecer en hardware lo que se hizo fuépensar inmediatamente en alguna forma de copia de la BD a otro servidor. Sin embargo la Base de datos es bastante grande por lo que esto se descartó. Se pensó entonces en usar el sistema de replicación nativa de Mysql y ver como se comportaba.
Replicación remota
Basicamente se hizo todo el proceso desde cero:
- Se configuró el servidor maestro
- Se bloqueó la BD para no permitir escritura
- Se hizo un Dump de la BD
- Se copió la BD remotamente. Esta parte fue algo demorada.
- Se desbloqueo la BD
- Se hizo el import al nuevo servidor
- Se activó la replicación en el servidor esclavo
Luego de un tiempo se hizo una revisión del servidor esclavo y apareció inicialmente con errores de consultas SQL. Poco tiempo después al poder resolver el problema también aparecía con otro tipo de errores y había que “saltar” ciertas consultas leidas con errores para que continuara la replicación.
El caso es que después de varios saltos hechos manualmente a las consultas y a los logs, la replicación ya no se pudo recuperar y toco empezar de cero la copia y volver a replicar. Despues de varios intentos fallidos con la replicación remota se decidió por cambiar la forma de copiar la información local.
Replicación Local
La conclusión a la que se llegó es que como la replicación se hacía a través de equipos que pertenecen a redes remotas, y como el número de transacciones por segundo es alto, hay una gran probabilidad de que la replicación falle en algún punto. Es decir, la replicación configurada no sirve para redes con pérdida considerable de paquetes de datos.
El método de replicación que funcionó fue dejar el servidor de replica dentro de la misma máquina, aunque supongo que debería funcionar dentro de una LAN, o una red lo suficientemente rápida que permita el transporte confiable de datos.
Se instaló en el mismo equipo un servidor MYSQL en un puerto alterno que serviría como esclavo. A continuación explico la configuraciones paso a paso para complatar la replicación.
PASOS DE CONFIGURACION
Se configura el maestro para que permita la conexión del servidor esclavo:
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb
server-id=1
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '
FLUSH PRIVILEGES;
Desde una consola del Maestro se ejecuta el comando siguiente para bloquear la escritura de tablas:
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Lo que muestra una información parecida a:
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183 | exampledb | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)Con este comando se verifica el estado de los logs y la posición. Esta información se usará mas tarde.Esta conexión se deja abierta mientras termina el proceso de replicación.
En otra consola, se hace el respectivo backup de la base o bases de datos a replicar:
mysqldump -u root -p
En el mysql esclavo se ejecuta el siguiente comando para realizar el import de la bd
mysql -u root -p
Enter password:
CREATE DATABASE exampledb;
quit;
mysql -u root -p
La consola del maestro inicial se puede cerrar en este momento. Ejecutar en la linea de comandos de mysql:
mysql> UNLOCK TABLES;
Se debe editar el archivo de configuracion/etc/mysql.cnf en el esclavo para activar la replicación:
server-id=2
master-host=192.168.0.100
master-user=slave_user
master-password=secret
master-connect-retry=60
replicate-do-db=exampledby después reiniciar el MySQL.
Luego se abre una consola de mysql en el esclavo y se ejecuta este comando con los datos de posición del archivo copiados antes:
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.100', MASTER_USER='slave_user', MASTER_PASSWORD='
START SLAVE;
Para verificar el estado de la replicación se ejecuta el sgte comando:
SHOW SLAVE STATUS\G
Entre las cosas mas importantes a verificar en esta salida es verificar que estas dos líneas estén en Yes:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Referencias:
http://www.howtoforge.com/mysql_database_replication
http://www.howtoforge.com/how-to-set-up-database-replication-in-mysql-on-ubuntu-9.10
http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html
miércoles, 16 de febrero de 2011
About CodeIgniter
Between the frameworks I have managed, I consider CodeIgniter is one of the most to develop quality web sites quickly. It shows great versatiliy, is fast because not load too much libraries at beginning and has a rapid learning curve.
I’m working for more than two years with this tool and I thinks is very useful to create web sites, mainly if they use a database. Once you learn to work with it, the developing of the application is immediately.
Basically, CodeIgniter is a tool what uses OOP or Object Oriented Programming and uses MVC (Model/View/Controller) design pattern that let us to divide the developing segments in individual parts. The model let us create the queries to the database, the view is used to visualize and organize the HTML code; and the controller controls all the logic of interaction with the user. This division lowers the errors when you are debugging code and permits a better organization to the code structure.
Advantages
Between the advantages I can mention the faster loading. Because uses few libraries when is starting, CodeIgniter can load the controllers faster.
It owns a quick learning curve. If you know about OOP of course, You can handle this tool more faster in a intuitive manner, since the libraries and functions are few. The manual provided with the application is clear and it explains its internal functionally and the description of main library methods directly.
It manages Active Record. This functionality let make logic sequences of simple queries, which eases time developing.
Interaction with new libraries. It’s easy to develop custom libraries that are called by different controllers.
Disadvantages
Lack of plugin to create CRUD libraries automatically. I suggest should exist such tool in professional editors like Aptana, so one can generate the PHP code from a database model.
Use of CLI to run commands on shell, for example crontabs. Although, according to news, some future version will include this feature.
Suggested Editors
Aptana is a PHP versatile editor that supports from 4 to 5.3 PHP versions. It identifies the PHP language structure and detects syntax errors. Is very useful.
If you need an WYSIWYG editor, you can try Dreamweaver.
CodeIgniter can be downloaded from the website: http://codeigniter.com
Acerca de CodeIgniter
Entre los frameworks que he manejado considero que CodeIgniter es uno de los mejores a la hora de desarrollar rápidamente sitios web de calidad. Presenta una gran versatilidad, es rápido por su baja carga de librerías y tiene una curva rápida de aprendizaje.
Llevo más de 2 años trabajando con esta herramienta y me ha parecido muy útil a la hora de crear sitios web que interactúen con bases de datos. Una vez se aprende a trabajar con la herramienta, el desarrollo de la aplicación es inmediato.
Basicamente CodeIgniter es una herramienta que usa POO, o Programación Orientada a Objetos y utiliza el patrón de diseño MVC(modelo/vista/controlador) que permite separar los segmentos de desarrollo en partes independientes. El modelo permite crear las consultas a bases de datos, La vista permiten el manejo del código HTML y parte visual básica, y el controlador permite el manejo de toda la lógica de interacción con el usuario. Esta separación minimiza los errores a la hora de depurar el código y le da una mayor organización a la estructura de código.
Ventajas
Dentro de las ventajas que posee este framework se pueden mencionar su rapidez de carga. Al llamar a pocas librerías en el momento de arrancar, permite cargar velozmente las páginas.
Posee una curva rápida de aprendizaje. Si se tiene conocimiento previo de POO claro esta, se puede aprender a manejar la herramienta rápidamente y de manera intuitiva, pues las librerías y funciones a manejar no son muchas. El manual es muy claro y explica su funcionamiento interno y la descripción de los métodos de las librerías principales.
Maneja Registro Activo en BD. Esto permite crear secuencias lógicas de consultas simples, lo que facilita el tiempo de desarrollo.
Interacción con nuevas librerías. Es fácil crear librerías personalizadas que interactúen con varios controladores.
Desventajas
Falta de plugins para la creación de Librerías CRUD. Sugiero que debe existir en editores profesionales tales como Aptana algún plugin que permita crear código de CodeIgniter a partir de un modelo de BD.
Uso de CLI(command line input). Es necesario el uso de CLI para ejecutar comandos que deben correr por un Shell, como por ejemplo crontabs. Sin embargo, según noticias, en próximas versiones lo piensan incluir.
Editores sugeridos
Aptana es un editor de PHP versátil, que soporta versiones de php desde la 4 hasta la 5.3. Reconoce la estructura de lenguaje de PHP e incluso detecta errores de sintaxis.
Si se necesita un editor WYSIWYG, se puede optar usar como complemento a DreamWeaver.
Esta aplicación la pueden descargar en http://codeigniter.com