Protocol Buffer

Hoy casi llegué a mi límite de paciencia informática.

Una persona me pidió que le revisara un presupuesto que le mandaron. Básicamente era revisar si cumplía con los principios una cotización. Hay un sistema legacy que estas personas tienen funcionando en python, hecho hace unos dos años por un europeo sobre PB en lugar de JSON o XML. PB es la abreviatura de protocol Buffer, y se supone iba a funcionar como entorno Web.

http://www.google.com/#sclient=psy&hl=es&biw=1280&bih=651&source=hp&q=protocol+buffer&aq=f&aqi=&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=a0ccdfe7824bbb43

Surprise.

Cotización implicaba lo no pedido de rehacer el sistema bajo Php 5.2 (??? porque no 5.3 ? )y rehacer los 2 .proto para integrar los nuevos enum.

Supuse que iba a pasar lo que pasó, y me contacté por skype con la persona que mandó la cotización. El puntos suspensivos estaba seguro de que podía manejarse un sitio web bajo php con PB porser lenguaje C la base de php y que puede compilarse, pero el modo web es diferente al modo intérprete. En el skype al preguntarle no me pudo decir la diferencia entre 5.2 y 5.3 de php, y tampoco sabía que era globals off.

Su presupuesto era de 2400 euros sin darse cuenta que ofrecía un imposible. Educadamente le dí un .proto de hello world, y le dije que nos enviara la prueba de concepto de lectura.

Supongo que se vaa tener que hacer en XML-RPC a final de cuentas y el europeo no dará señales de vida. le dije que hay que tomar una decisión el lunes y que nos mande la prueba de concepto funcional. Supongo que será lo ultimo que se sepa de el.

Desaparece e-go

Se de varios lugares que manejaban internet redundante a través de ego. El servicio desaparece y eso afecta de manera indirecta.

Recibí este correo y la información esta también en su sitio:

http://www.igo.com.mx/

“Apreciable suscriptor:

“Es lamentable para nosotros tener que comunicarte que por razones de fuerza mayor y que nos son ajenas; dejaremos de brindarte el servicio de Internet que tenemos contratado a partir del 30 de junio de 2011.

“Estimado suscriptor esta empresa ha hecho un esfuerzo, para que el servicio se te brinde por treinta días más, y lo cual está acorde con el contrato que tenemos celebrado.

“En caso de que requieras mayor información, nos ponemos a tus órdenes en el teléfono número 51740245 (para el caso de Guadalajara 36787890; Monterrey 83993096; Toluca 2770088; y Mexicali 018003433346) y por correo electrónico a: informes@ego.net.mx

“La cuenta de correo que tienes asignada como suscriptor, con terminación @ego ó @igo; dejará de funcionar a partir del 30 de junio de 2011.

“Si has realizado pagos por adelantado y que corresponden a meses posteriores al 30 de junio de 2011, te haremos el reembolso respectivo.

“Personal autorizado de nuestra empresa, te visitara en tu domicilio, a fin de recoger el equipo de nuestra propiedad a través del cual te prestamos el servicio o bien nos entregues dicho equipo en el Centro de Atención a Clientes de tu localidad.

Uno de tantos problemas del encode 64

Hoy Me reportaron un problema las herramientas automáticas que diseñé hace años, pero que no corro diariamente.

Básicamente me informó que el sitio de un profesionista peruano que se dedica a hacer sitios web y es cliente de una PYME tenía un error. El error era debido a que el estaba usando una dirección de nombre de host diferente a la actual que contenía la base de datos.

Solucionado. Muchas semanas sin que el verificara sus propios archivos. Esa es una de las ventajas de tener pocas visitas. Lo que sí, no le va a servir de nada el enlace a gráficas de google si quiere buscar las estadísticas desde que empezó el problema.

No se para que se toma la molestia de usar encode en datos que sustituyen el localhost. Yo me di cuenta al encontrar una lectura a base64_decode que no tenía que estar ahí.

Tuve que poner el server correcto, base64_encode y sustituir su programa.

Paradoja de código y mes de mayo 2012

La paradoja de código dice que un código abierto es mas «seguro» porque otras personas pueden revisarlo y encontrarle errores. Sin embargo implica también mas trabajo para el que revisa el subversion, git o sistema de merges para evitar puertas traseras.

Por otra parte, muchas empresas manejan como secreto industrial los algoritmos de programación por lo que no es posible hacerlo publico.

A lo largo de los años he realizado pen testing (http://www.google.com/#sclient=psy&hl=es&site=&source=hp&q=pen%20testing&aq=1&aqi=g-s1g2&aql=&oq=pen+test&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=18f19db784e74cbb&pf=p&pdl=300 ) para diversas empresas e instituciones de gobierno. En la mañana de ayer se me ocurrió una idea para solucionar un problema que tiene el potencial de matar tres pajaros de un tiro, siempre y cuando lo registre como código cerrado, preferentemente con una PYME nueva creada solamente para ser holder de derechos de autor.

hay que pensarlo con calma, pero espero tener el software listo el 31 de mayo 2012 en un sitio específico. No es mala idea empezar a detallar parte de ese proyecto, aunque sin código a la vista.

Y codigo cerrado. No hay que dejar en código libre algo que puede usarse para pentesting, aunque la integración de servidores múltiples y automatización de servers puede ser libre, el pentesting automatizado sobre dominios propios debe ser cerrado.

El problema de los browsers para desarrollo de PHP

Durante unos dos años usé de manera cotidiana Google Chrome , sobre todo por el modo incógnito y su disponibilidad en Linux. La ventaja del modo incógnito es el desaparecerde un plumazo todos los archivos de caché de sesión.

Por razones que creo ya publiqué en otro lugar, en todos los desarrollos web que intervengo prohibo todo el uso de cookies y limito las llamadas de java a php para regresar el largo de pantalla,y uso de manera repetida no cache y no pragma.

Comenté hace unos días acerca de los problemas que me estaba dando chrome al administrar dominios bajo hsphere por el exceso de ljs (light java script) y la sobreoptimización de java que provocaba la caída del browser. Además las nuevas versiones del browser Chrome usan muchoi mas memoria que las originales. A ojo de buen cubero, unas 10 a 20 veces más y creciendo de manera exponencial en base a las ventanas abiertas.

Esta semana estuve probando maxthon, y con lo que me dió problemas fue al hacer un pago en tienda electrónica de amazon, debido a que al cambiar a mi account de paypal, me cerraba la sesión bajo el motor de firefox, impidiéndome cambiar para que cobrara de balance en lugar de tarjeta.

Dedicaré unas semanas a probar browsers alternos bajo xp. Maxthon sigue siendo bueno para desarrollo por su opción de un botón, pero no para compra electrónica. Me resulta igual de parcial que el chrome, que para mi juicio era mejor hace uno o dos años que ahora que hace sobreoptimización de cachés que me causan problemas con los jqueries del colegio.

¿nadie piensa en mediano plazo siquiera ?

No acabo de entender porqué tanta gente de 35 años no tiene la mas mínima idea de que va a hacer de su vida excepto ilusiones. Ni hablar de largo plazo. Aunque no llego a los 40, decidí a los 17 como iba a estar a los 70 y todo va de acuerdo al plan.

Veo aquí a varias personas dando tumbos. Una de mis empresas factura a este lugar al que llamo «trabajo» por simplicidad. Ser empleado no es necesariamente malo, pero no acaban de darse cuenta que tener mis propias empresas con todo lo que conlleva me da un punto de vista diferente y la experiencia de veinte años no es solamente de código y programación sino de preveer lo que van a hacer los idiotas (aunque es imposible predecir cual de los idiotas en turno va a ser).

El plan al momento va bien.

Archivos dentro o afuera de la base de datos

El dia de hoy me toco hablar un poco con algunas personas sobre el problema de los archivos de aplicaciones si se guardan o no en la base de datos.

Supongo que fue por el archivo de barrapunto de la mañana. En el trabajo tenemos en este momento un servidor con 3 gb de espacio usado en archivos, donde la mayor parte corresponde a pdf generados y xml.

Este problema es mas extraño de lo que parece.

Si consideramos que muchas veces la gente habla de oidas, no se dan cuenta que el problema es otro.

Nuestra prioridad debe ser guardar información de manera segura, y poder revisar a través de bitácoras quien accede a la información. En este caso nos estamos basando en posibles bitacoras de apache mismas que evidentemente no tienen filtro de busqueda ni podemos hacer consultas relacionales sobre lo buscado.

En cambio los archivos que sirvo del sistema de repositorio(desarrollado por mi), puede saberse y filtrarse quien que cuando browser e ip. Esa información de acceso no esta disponible por archivos sueltos.

Por otra parte, si se hace por archivos sueltos incluso con ext4 ya hay baja de rendimiento cuando se manejan mas de 4000 archivos (y podemos darnos un tiro en el pie con inodes).

http://www.google.com/#sclient=psy&hl=es&site=&source=hp&q=inodes&aq=f&aqi=g5&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=d2c6e4c2397eeac2

A la larga o a la corta se va a tener que migrar esta información a base de datos, probablemente mi propio repositorio. Nosotros no necesitamos filtrar el archivo, sino encontrarlo rápido y en niveles de archivos grande es mas rapido saber ruta directa por base de datos referencial.

Cosas a favor de base de datos con blobs:

1 ) posibilidad de restringir acceso por paises o usuarios a un registro.
2 ) Forma rapida de encontrar archivos duplicados (lo hice en el repositorio de semarnat con ORACLE guardando ademas del blob el md5_file )
3 ) respaldo en un solo paso. Solo respaldo de datos, porque los archivos de texto o imagenes ya estan en la base. Respaldas base de datos y no directorio.
4 ) Escalabilidad. Si se te llena el directorio en un sistema raid5, como amplias el disco duro si tienes un cluster de reserva ?
5 ) Si usas round robbin es mil veces mas simple sincronizar solo base de datos y ordenes sql que bases de datos y archivos.
6 ) Inodes.

Etc.

Mensajes al aire.

Hace unas semanas escribi en un mensaje de un editor seguro RIJNDAEL y puse un ejemplo operativo.

https://alfonsoorozcoaguilar.com/node/552

Hace un momento entre y alguien dejo, por segunda vez en estos meses, mensajes. El mensaje del editor 1 y 2 se ven iguales el tres es mas largo.

Pero hay una barrera de lenguaje y ese es el propósito.

Si alguien prefiere dejar un mensaje cifrado que nunca voy a leer, mejor.

Podría poner cambios para detectar la contraseña.

No hace falta, es un honeypot y va a seguir cumpliendo su cometido guardando datos en bitácoras de apache. 3 de mayo 2011 =)

http://www.google.com/#sclient=psy&hl=es&source=hp&q=honeypot&aq=f&aqi=&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=d2c6e4c2397eeac2

Deja que me persigan los abyectos
quiero sentir la envidia aunque me abrume

Notas sobre Rewrite Mod

La semana pasada me vi obligado a utilizar un software que venía con rewrite mod de apache como requisito. He usado anteriormente varios software similares, y este tenía la ventaja de usarlo como opcional.

Le dije que no lo quería activado.

Hice pruebas, todo muy bien oh ah.

Y ese mismo día le encontré un defecto simple pero fatal. A borrarlo.

Si bien en el pasado he usado software que lo usa, y que uno de mis propios softwares lo usa, es absolutamente suicida el usar rewrite mod de apache en panel de control interno de un software.

Procesos largos e InnerHTML

Mientras escribo al mismo tiempo pienso en una situación que crea dos problemnas.

SITUACION:
Inicialmente me estan pidiendo una rutina para uso interno que verifique en tablas medianas unas comprobaciones básicas que otras personas no hicieron. Incluye unos subselect anidados, y será un proceso pesado. Se indica el cliente, yo calculo su identidad y verifico contra el detalle.

PROBLEMA 1:
el proceso implica una cantidad tremenda de tablas (2 por cada cliente) porque se estableció de esa manera por las máquinas virtuales. No puedo crear índices en tablas que no existen y pierdo tiempo verificando si existen. No puedo asumir que existen o que estan bien diseñados. En el cliente ejemplo, La tabla Padre usa 4003 registros, la hija unos 16 mil. Esto indica por lo menos correr 8006(padre*2) ordenes sql, debido a que justamente estamos detectando inconsistencias entre totales, para correr otras sql correctivas. Evidentemente esto puede causar sobrecarga, pero no puedo alterar de manera definitiva tablas que no existen todavia (de los clientes que se hará) y es mas suceptible a fallas. Las tablas actuales, siguiendo la norma de diseño que implanté usan INOODB y no MYISAM aunque no usan integridad referencial.

Cual es el alcance ?
Se deduce que esa unidad de negocio no tiene implementado diseño de unidades de prueba, y la carencia de índices indica que nadie tiene idea de mantenimiento a Bases de datos posterior… ni control de calidad sobre el diseño de base de datos.

La consulta a realizar es pesada, de uso interno, bajo pedido de alguien de soporte, y debe mostrar el avance en un lugar fijo de pantalla para que no piensen que se paralizó. Preferentemente mostrar loads de linux.

Solución:
Implementar un innerhtml para que se vea el avance. Crear uno o mas indice y borrarlo al terminar. Una hora o dos de codificación para el reporte.

=======================================
Problema 2:

Igualito al alcance:

Se deduce que esa unidad de negocio no tiene implementado diseño de unidades de prueba, y la carencia de índices indica que nadie tiene idea de mantenimiento a Bases de datos posterior… ni control de calidad sobre el diseño de base de datos.