sábado, 28 de febrero de 2009

KDE4 en MacOSX

En la entrada anterior comentaba que había instalado KDE (3.5) en el Mac usando la herramienta Fink.
La gente de KDE también tiene preparada la versión 4 para instalarlo en el Mac, además no hay que compilarlos.

He probado a instalarlo, no hay más que ejecutar el instalador y ya está.
Novedades respecto a KDE3 en Mac:

  • No necesita el sistema XWindow para correr.

  • Las aplicaciones aparecen bajo un directorio propio bajo /Applications


Esto último es un problema: por ejemplo, Konqueror o Dolphin esperan encontrarse los programas auxiliares (Kate para editar textos, Okular para visualizar pdf, Gwenview para ver imágenes, etc) en el PATH, pero estas aplicaciones no están como tal, no existe el ejecutable, sino el "Application Bundle" o directorio .app. 

Como curiosidad no está mal, pero no veo muy estable este KDE4 como para usarlo habitualmente, además falla de vez en cuando.

Para desinstalarlo hay que borrar /Applications/MacPorts/Qt, /Applications/KDE4 y una buena ristra de ficheros y directorios bajo /opt/local (cuidado ahí, que otros programas también dejan ahí sus ficheros).

[gallery link="file" columns="5"]

miércoles, 25 de febrero de 2009

¿Dependemos en exceso de algunas compañías?

Tras la caída de Gmail ayer, mucha gente se está empezando a replantear si tenemos una dependencia excesiva de Google (u otras empresas) y si estamos ante un nuevo monopolio.

Personalmente, mi relación con los productos de Google es de amor/odio. Su buscador me parece muy bueno, Gmail es el correo web que más me gusta de todos los que he probado y otros "inventos" suyos me parecen geniales (GTalk, Maps, Groups, muchas de las APIs para desarrolladores, ...).

El odio viene provocado por la envidia ;-)
Como desarrollador web no puedo dejar de admirar, desde el punto de vista técnico, lo bien que han hecho algunas cosas.

Sin embargo, reconozco que puede que estén acumulando demasiado poder. Muchos responsables de sitios web viven pendientes del PageRank de su web, la publicidad AdSense (una de las principales fuentes de ingresos de Google) no es del agrado de todo el mundo y su actuación en algunos países es bastante cuestionable (p. ej., en China).

Pese a todo, veo dos diferencias muy importantes respecto a otros monopolios existentes:

  1. Sus productos, por lo general, son buenos. Algunos, muy buenos. De otras compañías no puede decirse lo mismo (estoy pensando en los navegadores de Microsoft).

  2. Este monopolio es consentido por los usuarios. No viene preinstalado en nuestros ordenadores. Nadie nos obliga a utilizar Google para hacer nuestras búsquedas, ni usar Gmail para nuestro correo, ni pinchar en los anuncios AdSense.


¿Qué opinan? ¿Estamos dando mucho poder a esta empresa?

domingo, 22 de febrero de 2009

Tira nº 63: enredado


Que ningún programador/a se sienta ofendido/a. Todos hemos escrito código guarro alguna vez que otra ;-)

META: estoy intentando retomar las tiras y voy a hacer el esfuerzo de publicar con mayor frecuencia. Para la semana que viene ya tengo otra preparada.

viernes, 20 de febrero de 2009

El desarrollo de una página web

Me ha dado mucha envidia José Pujol con sus "posts" en los que explica el día a día de su trabajo, así que en esta entrada voy a hacer lo mismo.

En la web de Público tenemos dos partes muy diferenciadas: el gestor de contenidos y las páginas que genera (básicamente, la portada, las subportadas y las páginas con noticias) y el resto (blogs, video, sección de cine, archivos estáticos, etc).

Hoy voy a tratar de contar cómo hemos construido la página web del concurso Foto Libre.

Lo primero que hicimos fue reunirnos con la gente del periódico que organizaba el concurso (departamentos de fotografía, "marketing" y sistemas). En esta reunión se estableció la mecánica del concurso desde un punto de vista genérico, sin entrar en detalles técnicos.
Esta fase se suele denominar "toma de requisitos" y es fundamental para que un proyecto salga adelante. Tienen que quedar perfectamente especificadas todas las características deseables.

Con esta información, desde la parte de diseño y programación web (nosotros) se hicieron unos bocetos o esquemas de las páginas. Por ejemplo: "pantalla de inicio, desde ahí el usuario puede ir al formulario de registro o a la galería de fotos", o "pantalla de registro, el usuario introduce sus datos para participar y se le envía un correo de confirmación", etc.
Existe un término llamado "casos de uso" que sirve para documentar las posibles interacciones y flujo de trabajo de una aplicación.
En este punto, todavía no se ha escrito nada de código, pero son pasos necesarios para que todo salga bien. Si no está claro qué se quiere obtener, difícilmente el proyecto será del gusto del peticionario.

Cuando todos los implicados han dado el visto bueno a estos bocetos, empieza el trabajo de los diseñadores (Matteo y Daniel) y programadores (Rodrigo y el autor de estas líneas).

El separar funciones es bueno y productivo y permite avanzar en paralelo. Mientras los diseñadores van esbozando las distintas pantallas, los programadores vamos haciendo el trabajo "de trastienda": diseño de la base de datos (si es necesaria, claro), elección de la tecnología que se utilizará en el desarrollo (lenguajes de programación, "frameworks", etc), diseño funcional de la aplicación (separación de las distintas funcionalidades de la aplicación), etc.

En este punto, los diseñadores nos proveen con algunos archivos HTML y CSS estáticos. Los programadores los "desmenuzamos" y asignamos a cada parte de la aplicación una labor, algunas de estas unidades funcionales son las que se encargan de generar el HTML de forma dinámica (obteniendo los datos de las fotos de una base de datos, validando los datos que introducen los usuarios cuando se registran o suben fotos, etc).
Es la llamada "capa de presentación".

Hoy en día muchas webs se diseñan siguiendo un patrón o modelo muy conocido: MVC (Modelo, Vista, Controlador).
La capa M (modelo) abstrae, representa y ofrece mecanismos de acceso a los datos "crudos" de la aplicación, la capa C (controlador) se ocupa de gestionar las peticiones de las distintas páginas y solicitar los datos para generar estas páginas.
Por último, la capa V (vista o presentación) "pinta" o representa los datos en un formato determinado (en nuestra aplicación de Foto Libre, en HTML).

Para muchas páginas web sencillas o informales esta separación está casi más en la mente de las persona que escribe el código, pero en desarrollos de mayor entidad conviene separar físicamente estas funcionalidades.

Espero no haberles aburrido mucho. Es difícil condensar en unas pocas líneas tanta información. Otro día les contaremos más cosas sobre el trabajo que hacemos.

KDE en MacOSX

Gracias al proyecto Fink tenía instaladas algunos programas que no vienen de serie en el MacOS X, además del estupendo gestor de paquetes apt. En el trabajo utilizo Linux (Kubuntu) y especialmente konqueror y sus kios

Así que me he armado de paciencia e instalado KDE en el Mac. No es complicado, sólo hay que seguir las instrucciones de la gente de mac.kde.org. Pero es muy tedioso: hay que compilar todo y aunque la herramienta fink es muy buena, una noche entera de gcc no se la quita nadie al ordenador.

El resultado merece la pena, por lo menos a mí. Además es muy curioso.

Kicker+Dock
konqueror

 

 

 

 

 

 

 

 

 

Por cierto, se trata de KDE 3.5 y corre bajo el sistema XWindow. Creo que el KDE 4 ya corre nativo en MacOSX, pero no me atrevo a probarlo todavía.

lunes, 16 de febrero de 2009

jQuery vs Prototype

La aparición de estas librerías o "frameworks" para programar JavaScript han supuesto un ahorro de tiempo importante para los desarrolladores. Ya no hay que estar tan pendiente de las incompatibilidades entre navegadores, simplifican mucho el trabajo con el árbol DOM, etc.

Empecé a trabajar con Prototype un poco por "imposición técnica" y ya me pareció una maravilla el poder abstraerme de los XmlHttpRequest y demás. Desde hace un tiempo estoy empezando a profundizar más en jQuery, y, en mi opinión, me parece más cómodo y sencillo.

  • En jQuery los selectores utilizan la sintaxis de CSS y son uniformes, es más claro -- p. ej.: $('#titulo') ó $('div.resaltado') en Prototype serían $('titulo') y $$('div.resaltado').

  • En jQuery las operaciones típicas como ocultar/mostrar un elemento o conjunto de elementos son más sencillas: da igual que nuestro selector nos devuelva un sólo elemento o un conjunto de ellos, el método es el mismo -- p. ej.: $('#titulo').hide() ó $('div.resaltado').hide()

  • Generalizando mucho, podemos decir que jQuery es más conciso y Prototype más explícito.

lunes, 9 de febrero de 2009

Buscamos un programador

La oferta está en Infojobs:

http://madrid.oferta.infojobs.net/programador/of-i505412954531003515812741935302

Que nadie se eche para atrás con tanto requisito. Lo de J2EE y Spring es deseable, no imprescindible. Respecto al CSS y (X)HTML, lo básico para montar una página con sentido. De la presentación se encargan nuestros diseñadores.

Resumiendo, queremos un desarrollador LAMP.

viernes, 6 de febrero de 2009

Cajetín de búsqueda de funciones PHP para Firefox

No me lo puedo creer, pero no he encontrado un motor de búsqueda que funcione para consultar las funciones de PHP desde Firefox.

El único que he encontrado (https://addons.mozilla.org/en-US/firefox/addon/8984) no sé porqué no lo puedo instalar (tengo cuenta en addons.mozilla.org).

No he sabido buscar, puede que sea un poco torpe; así que he hecho un copia-pega de uno de los que tenía instalados y retocando un par de parámetros, ya tengo el mío.
Está en esta dirección: http://davidasorey.net/static/php-manual-search.xml



Para utilizarlo, sólo hay que salvar el fichero xml en nuestro directorio “Profile”/searchplugins de Firefox y listo.

Un día de estos lo subiré a addons.mozilla.org ;-)

jueves, 5 de febrero de 2009

Tramposos/as …

Se va acercando el final de la primera semana del concurso "Foto Libre" y estamos empezando a comprobar la veracidad de las votaciones. Es sorprendente: casi todas las fotos más votadas lo son fraudulentamente.

¿Cómo detectamos votos fraudulentos?

Tenemos mucha información: la dirección IP desde la que se emite el voto, la marca de tiempo, el identificador de la sesión, etc. Con estos datos es muy fácil controlar los votos no válidos: por ejemplo, desde la misma IP cada medio minuto llega un voto a una foto determinada. Paran un rato y luego siguen.

Cuando las IPs son de empresas, universidades u otras entidades, estos patrones se dan sobre todo en horario laboral. Las IPs "particulares" presentan este patrón diferente, más continuado, sobre todo de noche.

Es curioso cómo, cuando hay dinero por medio, la gente es capaz de estarse horas (hemos detectado algunos "tramposos" que han estado hasta cuatro horas en la madrugada) delante de su ordenador votando a su foto (o la de su amigo) repetidamente. ¿Acaso piensan que en este tipo de concursos no existen mecanismos de control?

En fin, no se fíen mucho por ahora de las fotos más votadas porque están siendo revisadas.