Entradas de la categoría: ‘Programación’

Prefiero no salir en los resultados.

Últimamente ha subido el porcentaje de rebotes en las visitas a mi web de gramática alemana. Como también han subido las visitas, me ha parecido normal, y como la valoración general es positiva, no me había preocupado.
Esta mañana, puntualmente, estaba prestando atención al origen de las visitas y …
Si entra un iraquí lógicamente me va a causar un rebote, pero un rebote de 11.000 visitas no pienso que me haga mucho mal.
Pero últimamente paises como Portugal tienen un 80% de visitas nuevas (otros algo menos) y un 85% de rebotes (otros algo menos) ¿qué me aporta bueno? pienso que nada, porque puede que haya algún español o hispanohablante viviendo allí que pueda estar interesado en el alemán pero los demás llegan por error y lógicamente se marchan. Yo creo, sinceramente, que valdría la pena no salir en esos resultados.

December 3rd, 2009 by admin

A Facebook se la suda IE6

Facebook tiene aproximádamente 300 millones de usuarios en estos momentos, y no se preocupa por Internet Explorer 6 … pero aquí esta Albin preocupándose por una miserable línea que no aparece en IE6 en un proyecto que esta a punto de salirse de fecha.
No es que no me guste hacer un buen trabajo, yo he defendido desde hace una década el escribir el código a mano y me ha preocupado siempre que fuera XHTML válido, pero sin complicarse la vida absurdamente.
Es que, además, me parece que contra más nos preocupemos por los usuarios de IE6 menos van a sentir la necesidad de actualizarse y más largo va a ser este calvario.

September 30th, 2009 by admin

Libros que cuentan cómo hacerlo bien

Hay una serie de libros que todo programador debería leer en su vida, y contra antes mejor. Conforme me hago más mayor, más lamento no haber encontrado el tiempo necesario para leerlos, sobre todo después de leer «La décima sinfonía» porque me gusta una violinista, en vez de leer «Design Patterns» porque mi vida es la programación. Pero existe otra razón, a parte de que me gusten las mujeres casi tanto como programar, por la que me cuesta leer esos libros. Y es que dibujan un mundo mejor, cuando la realidad de mi trabajo desvirtua cada día un poco más ese mundo mejor. Recuerdo que cuando comencé a leer “Peopleware”, un libro sobre dirección de equipos, no podía evitar contrastar la teoría con la realidad y no hace falta que cuente quién salía perdiendo, yo.
Hoy he leído en MasQueCodigo que los chicos de «The Pragmatic Programmer» editarán una revista llamada PragPub. La presentación es uno de esos textos escritos por apasionados de la tecnología y la programación que te trasmiten cierto cosquilleo en el estómago.
· PragPub comentado en MasQueCodigo
· PeopleWare en Amazon
· The Pragmatic Programmer en Amazon
· Design Patterns en Amazon

July 2nd, 2009 by admin

Porqué no funcionaba el correctamente configurado DNS (bind)

El problema de no tener ni puta idea de Linux es que vas siguiendo pistas sin saber realmente lo que estás haciendo, lo cual es algo que, dicho sea de paso, detesto.

Cuando alquilé mi primer servidor dedicado me apuntaba en un fichero de texto todas las acciones que hacía para configurarlo (dónde estaba cada fichero, qué cambiaba o añadía en él) para poderlo seguir a pies juntillas el día que tuviera que configurarlo de nuevo o configurar otro.

Así que, cuando reciéntemente alquilé mi segundo servidor dedicado, me fui diréctamente a mi fichero de texto a refrescar la memoria sobre cómo configurar un DNS. Repetí los pasos a pies juntillas, peeerooo … no salió bien. El DNS no estaba accesible.

Pero si al hacer “restart” no da error debe ser que al menos sintácticamente es correcto. Pero si aún no tengo reglas en iptables no puede ser un fallo de comunicación. Ay que no! amigo.

Leyendo me encuentro que a parte de named.conf y named.conf.local hay otro fichero que también participa en el juego (y he leido más cosas sobre unas key que no imagino qué serán) se trata de named.conf.options y por comparación entre servidores parece que, de Ubuntu 8.04 a Ubuntu 8.10 han decidido añadir “listen-on { 127.0.0.1; };” y que por lo visto así solo se escucha a si mismo, super útil para un servidor público, vamos.

Ya me podía haber roto un cuerno pensando qué leches pasaba.

June 14th, 2009 by admin

Soluciones extrañas (I)

He creado un newsletter en mi página de gramática alemana. La idea es que los usuarios que prefieren un e-mail o que no están familiarizados con otros medios (RSS, Twitter, etc.) puedan suscribirse para recibir información en sus correos. La cuestión es ¿qué información?

No tardé en darme cuenta que el número de secciones podía ir creciendo con el tiempo. Cada nueva sección susceptible de enviar algún tipo de resumen de actividad por mail (noticias, novedades, comentarios, participaciones, …) requeriría un nuevo campo lógico en la tabla (que al final acaban siendo Enum o Integer, todo un desperdicio).

Puede parecer una tontería pero poner un nuevo campo me da mucha pereza, porque al tener el proyecto en un hosting compartido, crear un campo requiere hacer un php únicamente para que lance esa consulta (en el caso más rápido) o hacer login en el panel general, bucar la opción de bases de datos, lanzar el phpMyAdmin, localizar la tabla, pulsar en ‘añadir campo’, rellenar sus características y finalmente crearlo … en resumen ¡2 tediosos minutos! :o )

Total, que como últimamente (ya os contaré otra) me da por probar soluciones extrañas (ni originales, ni extremas, ni retros, ni nada más que extrañas, porque si no puedo experimentar en mis propios proyectos dónde lo hago) pues se me ocurrió hacer un único campo numérico de 32 bits (para no quedarme corto) donde cada bit significará si estás o no estás suscrito a una posible sección. A fin de cuentas, no en vano cuenta con operadores a nivel de bit. De acuerdo en que no es así con MySQL. El día que quiera hacer algo tipo «actualiza todos los que estén en la lista Noticias» (es decir, que su primer bit esté a 1) será la hostia porque los usuarios pueden estar suscritos solo a esa sección o en esa y en cualquiera de las otras, lo cual supone que habiendo 4 posibles listas, ya tenemos 7 posibilidades que tienen el bit de noticias activado y los demás en cualquier estado posible. Esto lo comento para no parecer un atolondrado inconsciente. Pero eso es porque lo imaginais como un «WHERE Suscrito IN (1, 3, 5, 7, 9, 11, 13)» y no como un bucle en PHP que recorre todos los registros y para aquellos que cumplen la condición «FieldValue && nlNoticias» se hace una acción.

Entonces ¿he cambiado la posibilidad de necesitar 30 segundos haciendo un php que corra un alter por cada campo que quiera añadir en el futuro, por la posibilidad de necesitar en varios minutos en hacer un php que haga un bucle y corra alguna consulta o comando cuando se cumle una condición? SI, pero es que me apetecía mucho.

June 9th, 2009 by admin

Hasta los huevos de Idealista.

Llevo una eternidad sin postear pero en algún sitio tenía que reventar.

He tenido que hacer un fichero de exportación para el principal portal inmobiliario (en visitas) y después de haber hecho ficheros de exportación para un montón de portales puedo afirmar que son lo peor.

Para empezar, y conste que puedo admitir las ventajas retro cuando las veo, no importan de XML sino de un TXT separado por tuberias (el carácter “|”).

Utilizan los diferentes campos de una dirección como clave de registro, con lo cual no puedes tener dos vivienda en el mismo patio a menos que sepas en qué puerta están. En el nombre de la calle no permiten caracteres extraños, es decir, caracteres que no sean letras, así que olvídate de abreviar “Edif.” o “Sn.” o nombres en valenciano como “Nou D’Octubre” pero aceptan la “ñ” y los acentos, que es una suerte. El patio tiene que ser numérico, así que no puedes vender un piso en el “31 bis” de una calle. El campo escalera es obligatorio, me pregunto cuántas fincas tienen más de una escalera. También el piso es obligatorio, así que cuando no lo sabes te lo inventas. Y si estas intentando vender un estudio, este no puede tener habitaciones, obligatorio que sean cero. Tienen definidos un montón exagerado de tipos de vías (hasta una que se llama “pozo”), y sin embargo no tienen contemplado “urbanización” o “bloque”. Otros campos que me he tenido que inventar “Estado” (todos en buen estado, pues no lo sé y algo había que poner), si es exterior, si tiene calefacción y si tiene ascensor … vamos, que van a ser anuncios de lo más fidedignos.

Lo peor es que precisamente su argumento siempre es “en Idealista cuidamos mucho la calidad de los anuncios”. Claro, por eso mentimos en todos los datos que no sabemos o no podemos concretar porque no tienen sentido alguno.

Tienen bueno, que puedes volcar los datos y acto seguido obtener un listado de ‘fallos’ para revisar y corregir rápido. Pero es que me pongo enfermo con toda la basura que he tenido que hacer para pasar sus validaciones.

June 2nd, 2009 by admin

Listado de posibles ataques XSS

Si os habeis sorprendido por todas las formas posibles de escribir Viagra, vais a alucinar con todas estas formas diferentes de hacer un ataque Cross Side Scripting.

July 2nd, 2008 by admin

Cuesta menos probar que pensar.

Escribo una función, la pruebo, no hace lo esperado, pienso, la cambio, pruebo, no hace lo esperado, pienso, la cambio, pruebo, no hace lo esperado, pienso, la cambio, pruebo, no hace lo esperado, pienso, la cambio, pruebo, … ups! si no estaba llamando a la nueva función sino aún a la antigua, cambio la llamada y funciona perfectamente.

Ostras! entonces, todos estos cambios que he hecho, sin ver realmente cómo fallaba, significan que podía haber escrito la función bien desde el principio toda de una …  :o ? Todo menos pararse a pensar calmadamente desde el principio.

June 6th, 2008 by admin

Editor de ficheros Host y Estadísticas web en tiempo real

No entiendo que una persona gaste energías en hacer otro cliente de FTP, que no aporta nada, ni en usabilidad, ni en funcionalidades, …

Por otro lado, algunas personas realmente creen que pueden aportar algo, y presentan espectacularmente su producto de estadísticas web.

Y otras aún buscan utilidades que suplan necesidades específicas…

A raíz de haber aprendido a configurar VirtualHost en Apache, me había planteado lo útil que sería un programa que te facilitara editar, activar y desactivar líneas, en el archivo host de Windows, para probar dominios en local como si estuvieran en real. Y justo este lunes, lo encuentro en Genbeta, un Editor de ficheros Host.

March 13th, 2008 by admin

Relaciones : Vistas vs Trigers

El título puede resultar raro pero es que la idea -reconozco que- es un poco rara en sí misma.

En resumidas cuentas, para no complicarlo más de lo necesario, … ¿Creeis, o en qué circustancias creeis, que puede ser ventajoso tener una tabla con el resultado de una vista, para consultarla en lugar de consultar la vista?

Es decir, tener un conjunto de tablas relacionadas, con un triger que cuando sucede algún Insert, Update, o Delete,  vacían una tabla común y la rellenan con el resultado de la relación de estas tablas.

Principalmente me saltó la duda porque tengo una tabla de Municipios, una de Provincias, una de Paises, y una de Comarcas, lógicamente todas relacionadas entre ellas, y no son datos que cambien a menudo, como mucho añadimos algún municipio de vez en cuando, y me pregunto si tiene sentido estar consultando siempre una vista con todos sus inner join cuando el resultado es el 99.9% de las veces el mismo … y me planteaba que t_Municipios incluya sComarca, sProvincia, sPais y se rellenen con un Trigger …

February 27th, 2008 by admin