He comentado que hace poco mas de seis meses recibí una llamada del corporativo donde estoy en este momento. Hay acuerdos pesaditos de Confidencialidad (mismos que yo escribí y fui el primero en firmar), pero a veces me pregunto si pasa con el conocimiento esotérico lo mismo que con los RVM (http://en.wikipedia.org/wiki/Relevance_vector_machine), en pocas palabras, si tienen métodos de auto corrección por relevancia iterativa .

Esta noche me espera una buena desvelada. He estado haciendo a ratos un módulo de RVM en php usando XMLRPC pero para que los clientes sean terceras personas. Ya hice el cliente en menos de cuatro horas el lunes o martes ignorando lo que hizo el programador jefe de otra unidad, mismo que me hizo perder dos días haciendo algo no funcional.

Reviisando con otra tercera unidad (donde estàn Aidee y jaime) ellos no tuvieron problema al leer el cliente.

El problema es que uno de los socios se comprometió a regresar información valida de una base datos (que no existe ni esta diseñada en este momento), con datos estadísticos de muestra, para servir a seis procesos XML-RPC. Lo que me obliga a desvelarme para tener para mañana tanto la estructura de la base de datos,como datos de ejemplo, asi como seis receptores de método (no complicado porque ya está), pero además automatizar un método de respuesta por cada receptor.

En la práctica implicaa hacer seis métodos que cada uno haga inserción y consulta a la base, así como una bitacora e interacción con la base de datos final.

Afortunadamente pude elegir y me aprobaron usar INNO.

Creo que lo mas trabajoso va a ser el parser para interpretar las respuestas sin usar clases como la que pasó el jefe de unidad mencionado. Espero tenerlo a la una de la mañana, pero no se si me voy por un ejemplo de array simple, o simpleXML.

Es cuestión de pensarlo.

Mientras, tengo que hacer pausa para ir al baño, y media hora para hacer el esquema mental antes de ir a la escuela por mis hijos.

Ayer estuve revisando problemas de load alerts en cuatro servers diferentes, en tres datacenters diferentes.

Cada uno se contrató en un lugar diferente, pero todos con las mismas características.
Y uno me dice : 1024 (lo que es)
Otro : 1512 (50% bonus, ok)
Otro : 2048 (100% bonus, ok, ese proveedor es conocido que actualizó todo)
Otro : 4096 ???

Asi que resulta que o cpanel maneja diferente la forma de dar el burst ultimamente, o el proveedor que esta dando 1024 me quitó el burst cuando separé el cluster.

Hice este script que da bastante información util, aunque debe saberse que esperar de los diferentes buffers bajo Linux. En lo personal, este script es el que decidió mi auto pregunta de ayer.

El gethostbyname lo uso para saber la ip aunque esté corriendo bajo IIS y no Apache.

http://www.alfonsoorozcoaguilar.com/codigo/memoriaburst.txt

Hace unos años era habitual usar sistemas en modo cgi-bin , y PHP tiene soporte para modo CGI además de texto. Normalmente Cgi no tiene problemas si esta bien documentado, y pasé una buena parte del día de hoy configurando un software de CGI en perl bajo Cpanel.

Por lo menos ya pasé de la ventana de setup, pero que me costó, me costó.

El problema estaba en dos factores después de instalar los módulos de Perl:

1 ) El instalador del software no es intuitivo. Pude resolver la mayor parte del problema gracias a que si no estaba el archivo de configuración, un «check» avisaba si faltaba algo. Me decía que el host cumplía los requisitos. Así que pude saber que el problema era el config.
2 ) el software de marras estaba diseñado para jalar en perl, y trae mal la ruta del script . Ensayo y error funcionó.. ruta por ruta.

Ahora entiendo porque este es el primer programa en cgi obligatorio que veo en en los ultimos cinco años. No creo que Movable Type pase del 2013. Se estpan dando en la torre solos.

Noté un problema raro con este dominio hace unos dias, que resultó ser un problema de que las bases de datos estan en Miami y el host en otro estado. Ya se supone que lo estan verificando, pero no se ve bien.

Hice un codigo simple para validar el tiempo de carga real de manera externa, necesita Curl.
======================================
$url=’http://www.Example.com’; loadtime($url);

function loadtime($url){
echo «
Testing time needed to serve the Url: $url»;
$starttime = microtime();
$startarray = explode(» «, $starttime);
$starttime = $startarray[1] + $startarray[0];
file_get_contents($url);
$endtime = microtime();
$endarray = explode(» «, $endtime);
$endtime = $endarray[1] + $endarray[0];
$totaltime = ($endtime – $starttime);
echo » $totaltime»;
} // loadtime
======================================

Ayudando a la persona del CMS GPL que decía ayer, me puse a investigar porqué el minieditor causa problemas diversos.

El me pidió ayuda sobre los caracteres raros (htmlentities lo resolvió), pero lo que me choca es el limite duro de alrededor de 4k por mensaje. El problema parece residir en la forma en que funciona INNERHTML para procesar nodos de texto grandes.

De entrada Innerhtml es una forma elegante o sucia según a quien se le pregunte, para solución rápida de edición online, pero es la unica si se requiere compatibilidad con IE 5 o 6, que no soportan el estandard DOM completo.

Una búsqueda a detalle de los nodos y su limite, me hace pensar que el problema puede ser por sistema operativo. Lo probé en la toshiba del trabajo (windows home premium), explorer 8 ff y chrome actualizados, y lo mejor es chrome en cuanto a largo. Sin embargo, opera 9 y 11 se cortan a 2k aunque el supuesto largo de opera 9 es 32k.

En resumen: Ese cms es excelente para contenido corto. Quizá un ajuste de 1 kb aprox, me permita editar de 20 a 32k por un post / textarea standard. Interesante de todos modos.

El fork se impone.

Esta semana he estado colaborando en un sistema opensoruce del que supongo puedo hacer un fork, es un CMS bastante decente con el problema que solo maneja texto de menos de 4k por entrada por limitaciones de post pero es una idea bastante decente. Hay un problemita que quedé de arreglar para mañana (no introducido por mi) por codigo que no es utf8.

El fork pensaba hacerlo en lobo blanco.

Lo bueno es que me quedaba un solo cliente en el server loboblanco y estoy en proceso de migración pero implica cambiar de una plataforma a otra (hsphere a cpanel)

Este es el checklist aproximado hecho y por hacer:

Checklist para migrar Dominios de hsphere a Cpanel.

Hecho:
1 ) suspender el account del dominio actual
2 ) respaldar base de datos por base de datos en archivos independientes.
3 ) respaldar files del dominio (170 mb aprox)
4 ) crear en nuevo server el dominio
5 ) preparar las cuentas de correo
6 ) migrar el contenido de las cuentas de correo
7 ) subir el respaldo del punto 3

Sigue:

1 ) Subir el respaldo y verificarlo
2 ) Crear bases de datos en nuevo server.
3 ) Migrar dominio en el registrar para que apunte al nuevo servidor
4 ) editar mi archivo hosts para estar seguros que esta apuntando al nuevo server.
5 ) subir bases de datos al nuevo server.
6 ) ajustar las aplicaciones
7 ) probar aplicación por aplicación
8 ) sacar respaldo nuevo ok y descargarlo
9 ) ajustes y pruebas a cuentas de correo.
10 ) despues de unos dias, eliminar el account de hsphere

Uno de los problemas extraños que he encontrado con el analizador de código, es que algunos proyectos populares, como wordpress, tienen código que no sigue ciertas normas. También he visto que drupal, por ejemplo, permite que archivos de su build no lleven cierre de tags php (ejemplo, install.php )

El problema es de enfoque. A pesar que Joomla es uno de los peores códigos que he visto, y tiene mas hoyos de seguridad que un queso, las personas los seleccionan por lo que son capaces de hacer, no por la calidad del código.

El analizador de código no tiene nada que ver con lo que el programa trata de hacer o hace, solamente busca calidad del código.

Las pruebas de hoy dan resultados positivos. Sin embargo, el problema básico sigue siendo el mismo. En el trabajo necesitamos una jerarquía de que llama a qué, de donde, y no solo los problemas individuales del archivo. Parece que la solución será crear un html en el estilo hypertexto del antiguo Norton Guides.

Algunas métricas que ya tiene:
1 ) Espacios vacíos
2 ) SLOC
3 ) Funciones
4 ) Count de requires

Por implementar:
1 ) Avisos de shorttags.

Aunque no se ha definido bien de donde viene el problema, y que el internet ya se resolvió en la oficina, no podemos dejar de lado que las redes Wan son bastante mas inseguras.

Hay dos o tres razones que justifican la inestabilidad anterior:
1 ) Cable troceado
2 ) Intercepción pasiva o Sniffing
3 ) Tampering o Intercepción activa. Paso previo a un ataque de MITM.

Los ataques de MITM Son especialmente problemáticos con la naturaleza del trabajo que realizamos en la empresa, y una red WAN es un problema serio que facilita estos ataques. Pasamos a tener demasiados puntos de falla.

La solución evidente es tener acceso nosotros a una conexión independiente o cableada, así que podríamos estar mas seguros de si hay o no un MITM. La red cableada restringe el campo de posibles MITM, y una conexión tipo BAM o Ego ayudaría.

Pensando en esto, y que el código que enviamos por correo puede ser interceptado, me pareció bueno usar el método de aescrypt.zip, un software de encriptado via AES que usé hace tiempo, que edita archivos de texto con passphrase. El problema fue que no corre en Windows 7 home premium, y cambiar la plataforma de los programadores de aquí no sería opción porque las máquinas virtuales no correrian en windows 7 home, que sería el downgrade a la licencia que tenemos en las laptops.

Así que la alternativa es simple.. y el problema mayor. Independientemente de la posibilidad de MITM la necesidad de un cifrado Rijndael o similar para notas de juntas confidenciales, está presente.

Descargué varios editores con criptografia pero no regresan el texto como debía ser cuando no vienen en UTF-8 (y si la idea implica en cierto nivel manejo de correo, mejor sigo al RFC 1642 para envío seguro por correo, y por lo tanto no es UTF8 sino
UTF7). Por lo mismo, decidí hacer un editor rijndael propio (fueron unas dos horas y 70 SLOC en PHP). Incluso este texto lo estoy capturando en ese editor y luego el texto lo subiré al blog. El lunes edito el mensaje para poner el código.

Básicamente para un editor hecho en casa me quedaban dos alternativas: Twofish o rijndael. Para evitar complicaciones elegí Rijndael.

Que necesita para mi un editor seguro de texto seguro ?
1 ) Evidentemente contraseña reversible
2 ) No necesitar login, pero guardar passphrase en memoria
3 ) No preguntar demasiado la passphrase. Los editores que use en su momento eran molestos en ese aspecto.
4 ) Permitir desconexión rápida para ir al baño, por ejemplo.
5 ) Permitirme abrir tres archivos fijos a la vez. Como pueden ser enviados por correo en scripts, manejaré como archivos editables editor.txt editor2.txt y editor3.txt

Estos objetivos se cumplieron muy rápido con CURL y unos cambios en mcrypt. Como los programadores de php tienen puesto WAMPSERVER, el editor puede ser un solo archivo, y los archivos texto finales pueden copiarse a un USB o enviarse por correo, sin que sean crackeables.

En una etapa posterior, el no usar utf8 permite que este editor evolucione a un editor de código PHP que mande la información a un Sftp seguro o via post CURL. Tiene que ser un FTP con SSL porque a pesar que en el server destino se implemente un ftp, si no tiene SFTP el password del ftp es texto plano y un sniffer o MITM obtiene la credencial, haciendo lo demás inútil. Un post de información via CURL tiene limitaciones prácticas en tamaño a menos uqe revises un crc32 del post, pero es poco fiable, asi que de entrada la solución actual me permite una tercera opción. Enviar por un correo bajo socket seguro, y que el server lo lea del correo. Así el password estaría menos expuesto.

El objetivo previo se cumple: Editor seguro con estándar Rijndael en pocas SLOC de PHP.

Otra función práctica podría ser en la casa como clipboard. Se pone el dato en un sitio sin problemas. No sirve en ese caso como defensa ante MITM, pero es otra posible aplicación.

Edit del 7 de febrero:
Se coloca en http://www.alfonsoorozcoaguilar.com/codigo/rijndael.txt el codigo fuente del editor rijndael, y se deja un ejemplo operativo en

http://www.alfonsoorozcoaguilar.com/codigo/editor.php

Por lo que veo si quiero dedicar mas tiempo de nómina al analizador de código será via un cambio de licencia. El proyecto puede servir para el software SaaS que estamos usando, así que habrá mas respaldo usandolo como LGPL que como GPL, eso si, versión 2.

Por otra parte ayer instalé una Maquina virtual con XP para pruebas del tunneling en el windows 7. No me gustan las máquinas virtuales, pero como necesito acceso a ciertos correos de outlook express por las pruebas, no se puede hacer con windows 7. Así que en el windows xp irá outlook express.

Noté que por no estar usando lightspeed, en ocasiones algunos procesos de apache usan cada uno 6% de CPU en el servidor.

Actividades autoasignadas de hoy:
1 ) Terminar el analizador de Reporte de TD, porque la información origen viene dañada.
2 ) Instalar Tunneling.
3 ) Preferentemente avanzar en el mecanismo de parser