codigo

Un problema del webmail de Network Solutions ( UTF8 )

En el nuevo corporativo tengo asignadas dos cuentas de correo. Una personal y otra para pruebas, debido a que mi aplicativo va a estar enviando correos con xml y txt a los clientes.

Normalmente bajo todo de la empresa por webmail, y lo mio propio lo hago desde outlook express. El dominio de la empresa tiene el correo bajo Network Solutions.

Estuve haciendo pruebas y uno de los ejemplos, que me mandaron suelto, llego mal una Ñ. Revisaron el origen y estaba bien, el problema que encontré necesitaba seguimiento.

Tengo cuentas de correo desconocidas en gmail, yahoo y hotmail. No para usarlas sino para estas pruebas.

Pedir que me enviaran el ejemplo y en todas se ve bien.

Extraño.

Al hacer que me mandaran exactamente el mismo ejemplo pude descartar la fuente. De entrada en gmail se descarga bien con el mismo navegador, o sea que la opción de descarga del webmail de Network Solutions , mete un doble uuencode, y por eso la ñ me lelgaba con doble codificación.

Lo que deberé hacer es probar despues ver desde el imap de network solutions y con eso veo si lo descarto también o no.

que lata.

A veces DEBES reinventar el hilo negro

En este momento tengo en varios lugares establecidos sistemas de tickets, programados por mí, para pendientes de clientes. Algunos en python, uno en ruby, lo demás en PHP bajo GPL o LGPL.

Sugerí varios en el trabajo anterior, y los tenía implantados en el 2010 antes de la reestructuración, pero en una junta de junio del 2011 (la que fue de todo el día ) se hizo una presentación de 10 minutos que no decía nada, y decidieron usar un software propietario, sin licencia y muy pesado para una implantación PARCIAL y no metódica. La excusa que dijeron después era la opción para reaccionar/recibir correos de clientes. Dos de mis softwares lo hacían por IMAP.

Ahora me encuentro en una opción parecida. Resulta que el proyecto del mes por la empresa principal de las que contrataron a la PYME debo convertir unos xml/txt a otro formato. Algo muy parecido era el trabajo "inicial" de los "analistas" del trabajo anterior Lo que ellos hacían era adaptar un php a cada cliente.

Tengo que hacer algo similar, pero para un solo cliente corporativo. Solo que en este caso además que el código era confuso y las bases de datos no estaban optimizadas, no puedo por copyright reutilizar ese código, e inclusive ya lo borré de mis respaldos. Así que lo que hice fue buscar algo similar en internet (encontrado en 3 minutos con código libre en una revista española de hace varios años), y elaboré desde cero la validación de los XML que regresan los SCADA. Ya se guarda en una base de datos mysql el resultado de importar los XML de los scada, y me falta generar el sitio web con sus catálogos, pero tengo ya los ingredientes como los descuentos de burbuja .

Lo que está criminal es lo que noté desde entonces : falta de limpieza y enfoque en lo que estaban haciendo.

No es posible que en menos de 4 horas yo tenga funcionando adecuadamente un sistema de PROCESADO Y FILTRADO en base de datos de un xml de scada, mientras que ellos no quisieron jamás poner los servicios estadísticos que sugerí en el 2010.

Y aqui ya está la base de los servicios estadísticos, porque los datos exportados/explotados ya están en la base de datos, y se pueden filtrar.

Alla no.

Y tenian dos/tres personas dedicadas de tiemplo completo a hacer cambio a ese script personalizado, cuando podía hacerse por una sola persona (un programador real con el sueldo adecuado, ni siquiera se necesita alguien con mi experiencia y sueldo para eso), y así gastaban tres medios sueldos en algo que una sola persona pudo hacer. Esas personas, analistas, no analizaban. (quizá un dia explique lo que para el director de corporativo era un analista y que era un programador pero el concepto era una de las versiones mas enredadas que he escuchado)

Por mas que lo veo, las piezas del rompecabezas de lo que ofrecí en el 2010 eran evidentes. Aquí es un servicio añadido de lo que voy a hacer este MES, y en donde estaba antes, la mitad de eso, era el trabajo de tres personas durante mas de dos años.

Que horror.

A veces al hacer algo de cero por cuestiones de copyright (o por código basura), puedes hacer bastante Reingeniería y hacer algo evidente.

Las siguientes etapas me hacen creer que el demo está el viernes, por lo menos parcial. Dejaré las bases de datos al ultimo porque estaré corriendo sobre WAMPServer en lo que me definen servidor.

FireWall , wireshark y VPN

En el corporativo donde estoy tengo de manera terrible problemas con el servidor principal con sus docenas de conexiones ftp simultáneas. he notado algo raro también con la redirección de puertos.

El problema radica en que además que nuestras conexiones de internet son inestables, no puedo hacer pruebas en el server de la empresa porque las pruebas muestran problemas, y no hay forma de saber si son o no son por el uso excesivo de cpu del server. Pasa de 5 el load promedio aleatorio si alguien usó el sistema de tickets propietario, que no hice yo.

Asi que creo que lo mas sensato es hacer la prueba en uno de mis propios servidores, configurar lfd en ambos servidores para bloquear las direcciones ip de las dos conexiones de internet (aunque son variables duran un buen rato) y habilitar en mi server mas libre uno de mis dominios con una orden para dar die si no es la dirección de mi propia VPN.

Sigue el problema de bajo rendimiento de la red pero es la unica forma que se me ocurre de probar esto en horas de trabajo, después de todo es para la empresa.

6824 artículos

Hace unos minutos habló el cliente que tiene miles de artículos en un sistema para 200, quejàndose de lentitud del server.

Oh surprise.

Se tarda 17 segundos en el listado de artículos (que incluye la capacidad de editar).

Solo que el sistema tiene de parte de el 6824 artículos.

No los 200-400 para los que el sistema está diseñado.

Los de ventas la regaron al permitirle ese uso; por lo menos se le va a cobrar la adecuación para usar el método alterno, pero es un cliente de 1800 al año y la adecuación anda en unos 12 a 30 mil si conozco al corporativo. Yo puedo hacerlo en menos de 8 horas, asi que el costo no llega a 3 mil pesos.

Mientras el cliente sufre.

Update:
A mediados de diciembre se les hizo una pantalla de alta rápida de artículos. Ya van , a mediados de enero, en 9800 artículos, tardan 35 segundos en cada alta de artículos. Esto les va a estallar, porque meter artículos a lo idiota, indica que no tienen nomenclatura. No pueden esperar que un sistema de cambios de precios diarios maneje cinco facturas de diferente precio el mismo día y siga teniendo integridad referencial cuando en las especificaciones se habla de 200 artículos y un precio por día.

El problema de los archivos propietarios elevados al cubo

Hace años nos quejábamos si nos mandaban un correo con una versión rara de office.

Uno de los requisitos que pongo a los clientes del corporativo es que me envien un archivo XML de ejemplo , para agilizar el proceso de lo que quieren hacer. Ocasionalmnte me mandan un XSD del que genero un ejemplo con el lenguaje o plataforma .net

Oh surprise.

Hoy me mandaron un DOC realizado en quien sabe que versión de office. Ese documento de word contiene un objeto embebido (bueno, varios) pero el que necesito No lo lee ninguna de las tres pc disponibles.

Ninguna de tres versiones funciona.

Solución:

1 ) Guardar el doc.
2 ) Desde Cmd ponerle extensión ZIP
3 ) descomprimirlo.
4 ) Tomar del subdirectorio el archivo XSD

Funciona porque:

Muchos formatos de doc recientes son realmente archivos zip.

Que estupidez !

Barcos sin brújula

Historia larga pero parecida a cuestiones del presente.

Hace unos años me encargaron un proyecto que debía correr en mysql y en MSSQL por lo menos. Se hicieron una serie de documentos al respecto; el documento 3 era la transcripción de una serie de preguntas que hice, alrededor de 25, sobre unos puntos finos de negocio.

El que era mi jefe inmediato y director de esa empresa, me contestó todas las preguntas y como buen profesional lo puse por escrito y se lo mandé para su Visto Bueno. Tres meses después resultó que esas preguntas, tres o cuatro de ellas estaban muy mal contestadas, se había perdido un mes y medio de trabajo de dos personas en eso. Hizo berrinche, cambió el organigrama y me puso bajo las ordenes del área de desarrollo de ASP, solo que yo debía hacer este software en php.

Ok.

No me dieron datos de servidores de acceso (mssql y mysql), hice un memorandum, lo envie por correo a tres personas, y dije que de manera temporal iba a usar dos sistios mios, alfonsoorozco.com y alfonsoorozco.net para hostear el proyecto y hacer las pruebas.

Hubo una junta especialmente ríspida. Va un antecedente.

Me acuerdo que el lunes y martes de esa semana me pusieron a explicarle al Gerente de Ventas (vendedor de unos 35 años) lo necesario para un sitio web (querían vender hospedaje web , y su idea era entre otras cosas que yo les ayudara a preparar los servidores ). Recuerdo que le expliqué a esta persona que un sitio web normalmente con acabados bien hechos (tipo rojointenso.net o garradejaguar.org ) normalmente el diseño se puede hacer en x costo, se configura un CMS , o se hace un diseño y logos en photoshop. Asi que cobrando por un año , incluyendo diseño, servicio del sistema que estabamos haciendo, podía venderse en unos 9000 sin mucho problema, mas nuestra licencia.

Su presupuesto que me mostró el miércoles, para una ferretería mu grande era de .... 35 mil pesos por el sitio. Esta persona metió en sus cálculos el precio de depreciación de mi pc, del becario que iba a hacer los logotipos, de la maquina del becario, de la gasolina de ver al cliente, de los sueldos promedio... Y no consideraba el precio real del hospedaje en server, que no teníamos.

Ese mismo día me dice:

Dice el jefe (el director de la empresa)que si mientras haces el sistema puedes enseñarle al becario X como se programa para que el haga el siguiente.

¿?

Le dije:

Si pero se multiplica el tiempo por 2. Esta persona me va a distraer y además tengo que verificar que sepa lo básico del lenguaje y de servidores, y el sistema de programación de Pair programming ( http://en.wikipedia.org/wiki/Pair_programming )necesita dos programadores de la misma capacidad, así que lo que puedo hacer es un poco de Extreme Programming (http://en.wikipedia.org/wiki/Extreme_programming), pero al mismo tiempo dar curso de parvulitos. De momento estoy usando RAD http://en.wikipedia.org/wiki/Rapid_application_development pero no puede trabajarse en RAD y enseñarse a la vez.

A final de cuentas Entre las preguntas de sitio y similares, hablé con el de ventas unas ocho horas.

El jueves presenté mi avance y el director de la empresa me empezó a reclamar por no haber avanzado las metas del mes. Le mostré que las metas a seis meses las había cumplido al segundo mes, y que las metas del año iban, A LOS TRES MESES, en un 60 %. Se enfureció cuando le expliqué que no podía mantener el ritmo de trabajo normal, si me ponían a enseñarle a alguien que no tenía experiencia (por entonces yo tenía unos 16 años de experiencia), y que evidentemente no iban a poder obtener la misma calidad, para que lo manejaran en sus tiempos.

Junta explosiva de berrinche por el sujeto

El viernes el director de ese corporativo (dedicado al ramo de seguros) me pidió moderar la junta semanal, del lunes, lo que implicaba hacer la minuta y orden del día. Esa junta era independiente de todo lo demás.

En la junta del lunes, el director del corporativo nos informó que iba a haber un cambio de jugada, y en pocas palabras, que no nos sintiéramos mal. Que una vez termináramos los objetivos del año , (que yo llevaba en un 60%) iba a haber un aumento de sueldo de 25%.

Se puso por escrito (parte de la minuta).

El cambio de jugada consistió en quitar de los objetivos del año varias cosas. Y en ese momento mi proyecto pasaba a estar 90%. Dijo claramente que no iban a haber cargas de trabajo de esos proyectos, y que el aumento se hacía en cuanto se acabara.

Hice la minuta, la pase a firma (firmaron mi jefe directo, el director de la empresa, contralora, etc); me puse a trabajar en el 10% restante, y el miércoles de la siguiente semana estaba terminado, probado, autorizado por el usuario final.

Dos semanas después dela junta que moderé, el usuario final llevaba una semana usando el sistema, habiéndome autorizado que el sistema cumplía lo necesario de las especificaciones; el documento de liberación iba con copia al director del corporativo.

Un jueves, para celebrar el cierre del proyecto me invita a comer mi jefe (no el director de la empresa ni del corporativo, sino el gerente de desarrollo), y supe lo que iba a pasar. Así que me preparé a pagar yo la comida (por lo que iba a pasar al dia siguiente segun yo), fuimos a comer a las cuatro de la tarde al bife del padrino que estaba cerca de plaza galerías. El se puso hasta atrás, pero antes pude hablar acerca del próximo proyecto. Recuerdo que me dijo que le gustaba mucho mi manera de trabajar, pero que el problema de el directivo de la empresa era que sus utilidades dependían de otra cosa, y que yo hiciera el proyecto en menos de cuatro meses cuando era de un año lo había puesto en ridículo, y considerando que al principio se había perdido un mes, era peor.

Pagué yo. Era poco después de las siete PM, y Recuerdo que fueron poco mas de 1400 (no llegaba ni al 10% de mi sueldo). El valet Parking llamó un taxi, lo pagué e hice que llevaran a mi jefe al trabajo (avisandoles por teléfono que iba para allá). Yo tomé mi coche y me fui a mi casa que me quedaba de camino.

Al dia Siguiente me llama el director de la empresa para decirme que me iban a descontar el día por haber salido a las cuatro. Le expliqué que mi jefe me invitó a comer, y que salimos a las siete. La situación se puso absurda. En esas llegó mi jefe (11 am) y aproveché para comentar que necesitaba los requerimientos del siguiente proyecto, y los datos para un servidor de Mysql y otro de MSSQL para pasar los datos del que acabamos de terminar. Les mostré en la laptop de mi propiedad las bases de datos jalando en local de mi pc de escritorio (que era de la empresa), y se las copié a un USB nuevo que abrí en ese momento.

El siguiente movimiento del director de la empresa fue pedirme que borrara la información de los programas y de las bases de datos de mis sitios. Lo hice en frente de el y de mi jefe inmediato. Con eso solo quedaban los datos de la base de datos, en la computadora local. La idea era que iban a respaldar los datos en un servidor externo.

El proyecto estaba terminado así que pedí el aumento de 25% que había dicho el director general. La respuesta fue que no me lo iban a dar porque el proyecto era por un año (¿?) y que querían que le enseñara a un becario a hacer un sistema, con el mismo sueldo (que eran como 18 mas prestaciones), en el mismo tiempo.

Claro que si yo quería tomar mi liquidación de tres meses de sueldo, el estaba encantado.

Asi que la tomé. Diez minutos después tenía mi cheque. Baje a cobrarlo y lo deposité en mi tarjeta de crédito del mismo banco. Por previsor siempre tengo todo preparado por continuidad de negocio.

Mi jefe inmediato avisó a todos que era mi ultimo día, y pidió unas pizzas de Papa Johns. El director de la empresa dijo que se seguía el procedimiento estandard.

Antes de irme, teniendo ya en mi poder los documentos de entrega firmados, llega el fierrero (un estudiante de UNITEC que estaba a cargo de las redes y demás) y me devuelve mi USB ya formateado. Y dijo muy contento:

Ya formatee la Máquina de escritorio también.

¿?

El procedimiento normal era formatear la pc de la persona. El no respaldó mi información de Words, Data Architects y excel, porque verificó los discos que quemé en la entrega junto con el código fuente. Y el pensaba que los datos estaban en otro servidor (de nuestro cliente, que afortunadamente era interno)

Asi que lo que hizo el técnico fue formatear mi maquina dos veces, y se perdieron TODOS los datos de casi tres meses de captura. Le instaló el sistema operativo encima. Y era Disco SATA, que no estaba soportado entonces por Norton.

El director de la empresa hizo berrinche mayúsculo, se puso morado, vio que no iban bases de datos en los discos de entrega y los aventó al piso. Mis proyectos los suelo entregar en discos de 210 mb ( http://www.amazon.com/Memorex-Pocket-Mini-Discs-50-Pack-Spindle/dp/B0000... ), así que cuando los aventó al piso, los discos valieron madre.

Se perdió el código. No hay herramientas que recuperen archivos rar dañados de discos de 210 mb.

================================================================

Varios años después sigo monitorando esa empresa. Apenas acaban de sacar una nueva versión del software que hice, ahora en ASP.

================================================================

En el corporativo en que estoy en que estoy estamos haciendo ajustes a un sistema de colegio de profesionistas hecho por un argentino sobre un proyecto a la medida mal diseñado y mal ejecutado. Ya expliqué que sale
mas caro dar mantenimiento a ese monstruo que hacer el sistema de ceros.

Ayer hubo una junta y el socio técnico, y el director de una de las empresas de aquí, fueron a proponerles que se hiciera un nuevo software. No hay presupuesto en el colegio, asi que me pidieron una serie de ajustes larguísimos que usarán una o dos semanas de mi tiempo, y estoy seguro que por lo menos pagan 30 mil. Con eso se podría hacer su sistema de ceros.

Me siento igual que cuando en aquella empresa hicieron un presupuesto de página web en 35 mil hace varios años.

Explotador de JSON y pesadillas de código arbitrario.

Las dos ultimas semanas han estado saturadas de trabajo. Por lo general duermo muy poco pero esta semana dos ocasiones seguidas he dormido menos de lo común.

Por otra parte, he estado realizando un cliente de JSON y el universo de bases de datos es de un gb y medio actualizandose cada 20 minutos. Si me descarga la cabecera de código last modified, lo que me evita descargas de más.

Sigo probando ideas de servers al mismo tiempo. Y me acordé hace rato de algo , de una incomodidad fuerte en sueños allá por el domingo: Aunque pràcticamente no sueño, uno de esos días tuve una pesadilla de código arbitrario bajo el JSON.

Digo pesadilla para referirme a un sueño sin lógica, sin fin constructivo, e incluso a media depuración en sueños, yo pensaba: Se que esto es un sueño porque el cliente ya me regresa bien el header de last modify, asi que no entiendo que me quiere decir mi mente al comentarme del código arbitrario. Si mi parser no ejecuta objetos y convierte como paso previo a un array que no puede ejecutar por definición, ergo, este no es una pesadilla de código arbitrario sino un sueño estúpido.

Asi que me desperté. En ocasiones he soñado con código fuente y formas de mejorarlo, pero nunca me imaginé que fuera posible una pesadilla de código arbitrario bajo JSON.

Lo bueno de conocer las reglas del RFC y hacer tu propio parser, te hace inmune a ataques de idiotas con mucho tiempo libre.

Y sigue la mata dando

Me reportaron que una pantalla que tiene cerca de 200 combos cargados de bases de datos, esta lenta y provoca pantalla en blanco en uno de los clientes del corporativo.

Load arriba de 2, solución obvia: Comentar esta línea
//if ( extension_loaded( "zlib" ) ) ob_start( "ob_gzhandler" ); // Habilita compresion. No mover si no se entiende.

Explicación:
El server no tiene suficiente cpu disponible para iniciar el zlib de php.

El uso que le está dando a ese server no es el originalmente planeado, y no toman en cuenta la sobrecarga que le está causando.

Otra vez los logs...

El 23 de mayo escribí acerca de tener archivos dentro o fuera de la base de datos :http://alfonsoorozcoaguilar.com/node/602

El 4 de julio comenté que el tmp medía 23 gb. Lo borro cada semana.

Algo hicieron con los cambios de derechos que el tmp esta usando 58 gb de 120... y nose borran con miscript. Al limitar ejecuciones de llamadas a system desde php, los scripts de hace un mes tampoco sirven

Que bárbaros.

Lo bueno es que parece que mi versión propia de repositorio de archivos para corregir las deficiencias de cvs como subversion puede resolver esto por hoy.

Cosa rara con los passport de microsoft

Varios de los sistemas que he desarrollado se autentifican por CURL contra passport de microsoft.

Una de las dos claves que uso, no relacionadas con hotmail, no funciona. Probablemente desactivada por no entrar al messenger en esa cuenta. La otra lo usa incidentalmente cuando skype falla. Y son dos dominios desconocidos.

Interesante.

Sea l oque sea no usare la autentificacion por "passport de facebook" jamas.