Cabeza de Ratón: versus el Amor Letal

sNews en IIS

Cortito y al pie: me encontré ante la terrible situación de tener que instalar un sitio que había armado con snews en un servidor con IIS, cosa que creí no iba a pasarme nunca y zas! no funcionaba el .htaccess, claro, es exclusivo de nuestro querido y libre Apache. Cuando busco ayuda de como hacer funcionar sNews en IIS, la respuesta que encontré en los foros de sNews es que esta hecho para funcionar solo en el sistema que esta en mas del 80% de los servidores del mundo, Apache, por supuesto.
Seguí buscando y consulté al servicio de hosting, y resulta que IIS tiene un Mod Rewrite propio que estaba activado en este hosting. Encontré este sitio y con su ayuda creé un archivo Web.config en la raíz de mi sitio con este contenido:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <configSections>
        <sectionGroup name="system.webServer">
            <sectionGroup name="rewrite">
                <section name="rewriteMaps" overrideModeDefault="Allow" />
                <section name="rules" overrideModeDefault="Allow" />
            </sectionGroup>
        </sectionGroup>
    </configSections>
    <system.webServer>
        <directoryBrowse enabled="true" />
        <caching>
            <profiles>
                <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
                <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00:00" />
            </profiles>
        </caching>
        <rewrite>
            <rules>
                <rule name="block favicon" stopProcessing="true">
                    <match url="favicon\.ico" />
                    <action type="CustomResponse" statusCode="404" subStatusCode="1"
                        statusReason="The requested file favicon.ico was not found"
                        statusDescription="The requested file favicon.ico was not found" />
                </rule>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^example\.com$" />
                    </conditions>

                    <action type="Redirect" redirectType="Permanent" url="http://www.example.com/{R:1}" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                        <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?category={R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
        <defaultDocument>
            <files>
                <remove value="index.php" />
                <add value="index.php" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

y voilà! mi sitio en sNews funcionando con sus lindas urls amigables!

CMS : Snews

Snews es un CMS ultra simple, pero muy potente, ideal para resolver las necesidades de blog pequeños.
Existen mods, addons y aplicaciones de terceros que amplían su funcionalidad, haciendo pequeñas modificaciones en el código. Como se imaginaran es necesario tener un mínimo conocimiento de php para utilizar esto, digamos que escapa la filosofía del clic de WordPress. Esto depende de como se lo mire puede ser bueno o malo. En mi caso buenísimo por que te una flexibilidad difícil de encontrar en otros CMS más grandes, sin complicarse, claro.
La instalación es casi tan sencilla como descomprimir el contenido de zip en una carpeta, no encontré las instrucciones en castellano para linkear así que les dejo un detalle de las cosas a tener en cuenta:

  1. Bajar el zip de la última versión
  2. Descomprimir en el servidor
  3. Con tu administrador de mysql favorito crear la base de datos e importar el sql que se encuentra en la carpeta /sql/ del proyecto.
  4. Configurar la conexión de la base de datos en las primeras líneas del archivo snews.php:
    // MySQL host
    'dbhost' => 'localhost',
    // Database name
    'dbname' => 'snews17',
    // Database Username
    'dbuname' => 'root',
    // Database password
    'dbpass' => 'root',

Pantallazo-sNews 1.7
Y listo!, claro, siempre y cuando se cumplan ciertos requisitos:

  • Tener el Apache instalado con el mod_rewrite habilitado, para que funcionen las url amigables
  • MySQL
  • PHP versión 4.3.x o superior
  • .htaccess (con permisos de edición)

Haciendo click en login ingresan a la administración, el usuario y contraseña por defecto es test. Ahí van a ver las múltiples opciones que tiene.

Sugerencias:

  • Cambiar el prefijo de las tablas, es una medida de seguridad que no esta demás. Esto se hace modificando el archivo sql antes de importarlo. Luego indicar en el snews.php el prefijo usado:

    // Table prefix for multiple sNews systems on one database
    // if you don't need it just leave it blank
    'prefix' => ' '

  • Pueden bajar el archivo de idiomas, bajarlo en la carpeta /lang/ y setear en la configuración el idioma deseado. Yo tomé el archivo EN.php de esa carpeta y creé mi traducción propia: ES.php, la pueden bajar a su riesgo por que puede que tenga muchos errores.

We are under attack!

Si alguien intento entrar a blog este fin de semana (ordas de visitas truncas!), habrán notado que habíamos sido sido raptados por un “pirata” de la web. En fin, cosas que pasan. A favor nuestro estamos alojados en un servidor bien serio que nos recuperó la cuenta rápidamente y nos recomendó asegurar nuestro WordPress para evitar nuevos ataques.
Entonces, gentileza obliga, vamos listar las medidas a tener en cuenta a la hora de mejorar la seguridad de nuestro querido WordPress:

  1. Mantener la versión de WordPress actualizada, siempre, evitemos que nos ataquen por bugs conocidos y resueltos.
  2. Lo mismo corre para los plugins y para los themes. Además tratar de que sean de fuentes confiables. Creo que a partir de la versión 2.7 WP te avisa siempre que haya actualizaciones disponibles.
  3. Siempre, siempre hacer backups de todo (esto es para mi).
  4. instalar el plugin WP Security Scan que sugiere varias modificaciones, entre ellas:
    • Cambiar el prefijo por defecto de las tablas. Esto es una medida que se puede tomar a la hora de la instalación, o bien modificarlas en uno ya instalado. A mi la herramienta que trae el plugin no me funcionó, pero pude hacer manualmente haciendo un backup del sql de la base de datos y remplazando el wp_ por una cadena nueva del tipo gql257s_ por ejemplo, subir de nuevo la base de datos con este sql. Luego reemplazar en el wp-config.php la cadena $table_prefix = ‘wp_’; por $table_prefix = ‘gql257s_ ‘;. Como precauciones, no hay que estar logueado en el panel de administración al momento de hacerlo y se deben desactivar todos los Plugins, una vez restaurada la base de datos se activan nuevamente. No hacer esto puede generar el maldito error “No tienes autorización para acceder a esta página” (que no supe solucionar) al loguearte.
    • Eliminar el usuario admin que crea por defecto, para no ser tan obvios.
    • Crear el archivo .htaccess para nuestro wp-admin. Yo lo hice siguiendo este instructivo de paso creé el del wp-content también.
    • También hace un chequeo de los permisos que deberias tener en cada una de las carpetas de tu blog, y te sugiere los cambios necesarios.
    • Otras recomendaciones que en las últimas versiones de WP vienen por defecto o en el theme que uso viene por defecto, como ocultar la versión de WP, apagar los errores de de la base de datos, etc.

Buscando un poco encontré un par de link interesantes en el blog de aNieto que vale la pena recorrerlos para estar mas seguros:
10 pasos para proteger tu panel de administrador y uno mas viejito:
Las páginas blancas de la seguridad WordPress

AutoCompletado con Symfony

Denominamos ‘Autocompletado’  al comportamiento que se produce en campos de texto especiales donde a medida que tipeamos este nos devuelve, generalmente en forma de lista, los resultados de una búsqueda en función del texto introducido.

Es muy útil cuando consideramos que la cantidad de opciones de un campo tipo select es muy grande; por ejemplo, un listado de países. More »

Contra la pared: documento e Internet Explorer requerido.

En la lista de correo de usuarios de Ubuntu de Argentina leo el emprendimiento de un muchacho al encarar un site donde se publiquen aquellas páginas webs que requieren internet explorer para su uso.

Internet Explorer requerido. Algo demasiado habitual.

Internet Explorer requerido. Algo demasiado habitual.

En un primer momento me llama la atención de manera poco agradable la cantidad de páginas del gobierno nacional que están bajo esta condición: FONCyt, SeSOP, AFIP, etc.

Con poco podría ser de otra manera, no ?; más si tenemos en cuenta que gracias a Dios Internet Explorer no monopoliza como lo hacía antes, y parece ser que la tendencia es aún más pesimista para uno de los peores navegadoras que he conocido.

Subir proyecto de Symfony a hosting

Hoy tuve que subir un proyecto de symfony a un hosting ‘normal’; o sea, sólo tenía acceso por ftp y un administrador simple de MySql, el tan conocido por todos PhpMyAdmin. Este artículo intentará ser una simple guía para poder realizar esta tarea que tantos dolores de cabeza les trae al grupo de aprendices de symfony; en los cuales estamos todos menos ese tal Fabien.

Aclaremos que lo hice usando Symfony 1.2, por lo que puede variar en algunos detalles cuando usemos otra versión. More »

JavaScripts dinámicos en Symfony.

Me he visto en la necesidad de cargar archivos javascript dinámicos en una aplicación desarrollada en Symfony. Aquí, mi solución.

Javascript Dinámico ?

Pues la verdad así entiendo a un archivo javascript que modifica su contenido en función de ciertos factores. Por ejemplo, generar una estructura de datos en notación JSON en base a datos producto de una consulta realizada en el modelo. More »

sfPropelMooDooPlugin – Algunas Capturas

Presento un par de capturas del resultado del generator. Estas son imágenes preliminares, queda mucho por corregir, refactorizar, etc.

Captura del producto del generador

Captura del producto del generador

Todavía no quiero mostrar un ejemplo funcionando porque algunas cosas me dan un poco de vergüenza. Están muy mal hechas y a conciencia.

Captura de sfPropelMooDooPlugin

sfPropelMooDooPlugin

Hace un buen tiempo que empecé a programar con Symfony y desde la salida de la versión 1.2 me he dedicado a crear un generador administrativo (admin-generator) para Propel. Una tarea más que laboriosa para quien no domina al 100% muchas cosas del framework, tiene ambiciones,  aires de grandeza y no tiene donde caerse muerto.

Estos últimos días he tomado la decisión de publicar el código no sin antes terminar al menos algunas puntos primordiales como documentación

Publicar en primera instancia me ayudará a ponerme metas y responsabilidades, y también aclarar mis ideas. Cuando uno escribe con la convicción de que hay personas que lo leen reafirma conceptos para poder transmitir de la mejor manera posible el mensaje al lector. Por lo menos, así lo veo yo.
Y en segunda instancia, algo no seguro, poder recibir críticas, correcciones y porque no participación de otras personas.

Esta publicación estará, sin lugar a dudas, llena de correcciones que inevitablemente surgirán.

Objetivos

Implementar un plugin para symfony que nos permita incorporar a nuestros proyectos un generador similar al generator de propel pero con algunas mejoras sustanciales:

  • Widgets de Formularios adaptados a las tecnologías usadas.
  • Uso de AJAX.
  • Implementación de una UI (Interface de Usuario).
  • JavaScript no intrusivo.

Tecnologías

Inevitablemente el plugin deberá tener un buen soporte del lado cliente. En este caso utilizaremos mooTools.

Metodología de funcionamiento

La idea global de la metodología de funcionamiento es implementar un pequeño motor en el cliente (JS) con la capacidad suficiente de ‘entendimiento’  con las convenciones de funcionamiento de los scripts generador por Propel en el servidor.

Esta historia recién empieza …

Me estaré volviendo viejo con mal gusto

Hace mucho tiempo que no escribo en mi querido blog. He pasado por diversas experiencias que me han alejado de tan agradable rutina. Igual, creo que pasa en primera instancia por la motivación; y luego otros factores secundarios pero no menos importantes, como la constancia, organización; cualidades que últimamente se han esfumado.

Hoy pienso que debería escribir sobre algo relevante; cosa que no estoy muy seguro que lo sea. En estos días me ha llamado la atención la facilidad con la que se puede adquirir material ‘prohibido’ en internet.

En realidad este no es el punto; todos sabemos que unos de los principales negocios desde los inicios de internet es la pornografía, por ejemplo. Pero hasta donde yo recordaba … todo se hacía desde el anonimato. Solía consumir material porno cuando buscaba cracks o serials para alguna aplicación pirata. Siempre sitios 100% desprolijos, armados con fotos berretas, gif animados, letras rojas y amarillas grandes, etc.

Al alejarme del soft privativo me alejé de los cracks y consecuentemente, en gran medida, de las chicas (y de los chicos por cierto). Mientras escribo esta entrada no dejo de escuchar a Mario Pergorini promocionar una y otra vez desde ‘cual es?’ su web de mierda www.cuales.fm.

cualesson

Y eso me llama la atención. Ya no son piratas anónimos, es el mismo pelotudo que tanto respeto se ha ganado con algunos programas televisivos, comentarios contestatarios, excelentes reportajes, etc.

Me da un poco de cosa como se va blanqueando el negocio y que no se entienda que internet es un medio tan o más influyente para el consumidor que la tele. Está flotando en el aire la idea que en la tele hay cosas que se pueden hacer y cosas que no (aunque es de terror) y el producto puede estar en tela de juicio del consumidor. Internet no. Es tierra de nadie.

control_de_edadNo estoy en contra de publicar este tipo de material, y uno es consciente que tampoco se puede controlar. Lo que me da por las pelotas es la grasa que chorrea este tipo de sitio, con nombre y apellido, que acuden a una gorda garchando (la escena es morbosamente asquerosa) para levantar las visitas y así promocionarlo con el único control que es casi tan berreta como el video mismo. Una verdadera porquería.

Todo bien, que cada quien haga de su culo un colectivo y deje subir a quien quiera.

No hay mejor momento para invocar una de las frases más repetidas entre personas entre 25 y 35 años: Me estaré volviendo viejo.