Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Najaraba.com: Software libre, metodologías ágiles y más.

Agilismo como proceso de innovación

Marzo 31st, 2011 - [Enlace local]

Siempre he tenido bastante claro que el desarrollo de software es un proceso de aprendizaje. Los desarrolladores no podemos plasmar en código aquello que no hemos aprendido de un sistema o del dominio del negocio. Ahora también lo veo como un proceso de innovación. Todo desarrollo de software es en sí mismo innovador, por que no existe antes aquello que quieres construir, teniendo cada desarrollo

» Leer más, comentarios, etc...

Arragonán

Desarrollando UniversalPlaces

Marzo 31st, 2011 - [Enlace local]

Ando metido en un proyecto muy chulo llamado UniversalPlaces, TorresBurriel ya publicó un post hablando sobre el lanzamiento inicial y el equipo(equipazo!).

UniversalPlaces es una web donde se pueden reservar estancias en hoteles. A día de hoy todavía en fases iniciales de lo que se pretende que llegue a ser, pero seguro que en los próximos meses dará mucho que hablar :)

Si indagáis un poco, veréis que el equipo es de todo menos convencional. Y no me refiero a que el equipo esté por encima de la media(que lo está!), si no a que es un equipo “a medida” para el proyecto. Cada miembro del equipo trabajamos independientemente a los demás, y aunque alguna vez hayamos podido/podemos/podamos coincidir, tenemos otros jaleos :) . Una apuesta diferente a la habitual por parte de Javier Mcallan, para entrar a competir en un sector tan duro como es el del turismo en internet.

Mi rol dentro del equipo ha resultado ser programador y algo así como el responsable(o irresponsable :P ) de la parte técnica. Nuestro objetivo desde la parte técnica, es que la tecnología existente resulte la menor limitación posible para ofrecer una mejor experiencia de usuario, y os aseguro que está siendo todo un reto!

UniversalPlaces

Bueno, y cómo imagino que no esperaríais otra cosa de mi, os voy a contar un poco acerca de que tecnologías estamos utilizando(por ahora nada excesivamente especial):

Y como curiosidad una métrica, a día de hoy, con la funcionalidad que se puede ver, tenemos poco más de 2200 líneas de código groovy y java.

» Leer más, comentarios, etc...

Bitácora de Javier Gutiérrez Chamorro (Guti) » Programación

Rendimiento de variables dentro de cadenas en PHP

Marzo 30th, 2011 - [Enlace local]

Tras la sorpresa de Rendimiento de constantes en PHP, os puedo adelantar que esta vez, probablemente lo hagáis de nuevo. Se trata de concatenar variables a cadenas. La primera forma, usa cadenas delimitadas por comillas simples, y el operador punto. La segunda usa el método heredado de Perl, de incluir las variables dentro del literal, [...]

Artículos relacionados:
Composición de cadenas
Rendimiento de constantes en PHP
Rendimiento DHTML

» Leer más, comentarios, etc...

Picando Código

Instalación y configuración de entorno de desarrollo Android con Eclipse

Marzo 30th, 2011 - [Enlace local]

Android

Android

Desde que salió Android en 2007, lo descargué y probé e hice un análisis del SDK de Android en el blog. Desde entonces he estado siempre con ganas de desarrollar algo serio. Parece el momento ideal dado el crecimiento enorme que está teniendo la plataforma a nivel mundial.

Además de esto, coincide que en mi trabajo actual tengo la opción de elegir hacia qué tecnologías orientar mi carrera. Y mis objetivos para este año van hacia Android y Ruby.

En fin, varias veces me consultaron cómo instalar el entorno de desarrollo Android para empezar a trabajar con el framework. Así que aprovechando que estoy haciendo una instalación nueva y actualizada del SDK en mi computadora de escritorio, vamos a ir listando los pasos para mandar para acá a otras personas que me lo consulten :P

Preparar el ambiente

En principio, necesitamos la JDK, y una instalación de Eclipse. En mi caso voy a usar una instancia de Eclipse Classic versión 3.6.2. Pero los pasos deberían funcionar bien con cualquier instancia de Eclipse.

Eclipse 3.6.2

Eclipse 3.6.2

Descargar el SDK

Ingresen al sitio de descarga del SDK (Kit de desarrollo de software). Ahí descarguen el archivo correspondiente a su sistema operativo. En GNU/Linux, se descarga un archivo tar.gz con el nombre android-sdk-linux_x86 o similar. Descomprimimos este archivo en un directorio que luego recordemos. En mi caso uso ~/software/devel.

El paquete que descargamos no es el ambiente de desarrollo completo, incluye algunas herramientas centrales, que pueden usarse para descargar el resto de los componentes. Así que al descargar este archivo, ni siquiera tenemos una plataforma Android para empezar.

El SDK usa una estructura modular que separa las partes principales – versiones de la plataforma Android, extensiones, herramientas, muestras y documentación- en un set de componentes instalables separados. Para empezar a desarrollar se necesita al menos una plataforma Android y el paquete SDK Platform-tools (herramientas en las cuales depende la plataforma).

El ejecutable del gestor que descargamos, android,  se encuentra en el directorio tools: ~/software/devel/android-sdk-linux_x86/. En esta interfaz de usuario, en el menu de “Available Components” encontramos varias cosas que podemos ir instalando:

Bien, vistos algunos de los elementos, la guía oficial de desarrolladores Android recomienda una instalación básica de: SDK Tools (lo primero que instalamos), SDK platform-tools y SDK platform – necesitamos al menos una para compilar nuestro proyecto en esa plataforma y crear un dispositivo virtual para probarla.

Android SDK AVD manager

Android SDK AVD manager

Además de eso, yo instalé la documentación y los samples correspondientes. Como ven, me descargué Android 2.3.3. Si bien ya está disponible Android 3 – Honeycomb, éste está orientado a tablets, y por ahora quiero empezar con desarrollos para teléfonos móviles, después veremos qué pasa…

Instalar el plugin de Android para Eclipse

Este proceso es bastante sencillo, la instalación es como cualquier plugin de Eclipse. Vamos a Help > Install new software… y agregamos el sitio de descarga de Google:

ADT Plugin -https://dl-ssl.google.com/android/eclipse/

Seleccionamos todos los paquetes, aceptamos la licencia, e instalamos. Tras instalar, hay que decirle a Eclipse dónde tenemos instalado el SDK de Android. En Windows > Preferences / Android, hay un diálogo para buscar la ubicación y guardar los cambios.

Crear un Dispositivo Virtual Android

Vamos a ejecutar nuestras aplicaciones en un Emulador de Android. Antes de poder usarlo, debemos crear un Android Virtual Device (AVD). Este define la imagen del sistema y las configuraciones del dispositivo a usar por el emulador. Lo creamos en el gestor de SDK y AVD. Si ya instalamos el plugin de Eclipse, podemos ir a Windows > Android SDK and AVD Manager y ahí elegir el menu de Virtual Devices. Presionar el botón de New, e ingresar los datos.

Hay que elegir un nombre característico del dispositivo (al poder tener varias plataformas Android instaladas, podemos usar un dispositivo para cada una o más), la plataforma a la que apuntamos y lo creamos.

Listo, ya tenemos todo el entorno configurado, así que lo que queda de ahora en más es aprender, leer mucho y programar. Ya contaré más cuando tenga mejor estudiado el desarrollo en sí. La aplicación Hola Mundo tras instalar el entorno:

Aplicación Hola Mundo

Aplicación Hola Mundo

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

Picando Código

James Gosling, el padre de Java, a trabajar para Google

Marzo 28th, 2011 - [Enlace local]

James Goslig @ Google

James Goslig @ Google

James Gosling anunció hoy en su blog el próximo paso en su camino. El anuncio traducido al español:

A través de algunas vueltas raras en el camino el pasado año, y un tardis encontrado en el recorrido, me encuentro hoy empezando mi trabajo en Google. Una de las cosas más difíciles de la vida es tomar decisiones. Me costó decir “no” a otro montón de excelentes posibilidades. Encuentro raro que en este momento estoy tomando el camino más transitado, pero parece interesantemente divertido con gran influencia. No sé en qué estaré trabajando. Espero que sea un poco de todo, sazonado con una gran dósis de rabieta malhumorada.

Así que el padre de Java se suma al plantel de Google, que también incluye entre otros a Guido van Rossum – autor de Python – y Ken Thompson -desarrollador de Unix y el lenguaje de programación C-.

Si hubiera que adivinar para qué proyectos va a trabajar, por tirar nombres menciono Android o Go.

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

knocte :: MonoTema

RT: MEF vs MonoAddins

Marzo 27th, 2011 - [Enlace local]

Just re-posting in my blog an interesting email that was sent to the MonoAddins list, comparing these two Addin frameworks:> Can you give a short summary on why you replaced MEF with Mono.Addins?Basically it came down to maturity. Mono.Addins seems far more stable and mature than MEF. The MEF documentation was lacking, inconsistent and out of date in a lot of places. But all that could be

» Leer más, comentarios, etc...

xperiments.es

StageWebView StageWebViewBridge Comunicación entre actionscript y javascript y viceversa

Marzo 26th, 2011 - [Enlace local]

Clase que extiende StageWebView y nos permite:

* Comunicación entre Actionscript y Javascript.
* Comunicación entre Javascript y Actionscript.
* Carga de ficheros y resources locales de una manera simple.
* Extiende el método loadString con comunicación AS3 -> JS -> AS3
Por ejemplo podemos llamar una función de javascript desde actionscript de la siguiente manera:

1
webView.bridge.call('someFunctionToCall', callBackFunction, ...arguments );
1
2
// referenciar resources locales de una manera sencilla
<img src="appfile:/image.png" alt="" />

Podeis encontrarla en:

http://code.google.com/p/stagewebviewbridge/

En un post futuro, postearé un tutorial

» Leer más, comentarios, etc...

Picando Código

ArchLinux: package-query: requires pacman

Marzo 25th, 2011 - [Enlace local]

ArchLinux

ArchLinux

Intentando actualizar mi sistema ArchLinux, tuve un pequeño conflicto que no me permitía actualizar el gestor de paquetes pacman:

[fernando@hoth ~]$ yaourt -Syu

(…)

:: The following packages should be upgraded first :
pacman
:: Do you want to cancel the current operation
:: and upgrade these packages now? [Y/n]

resolving dependencies…
looking for inter-conflicts…
error: failed to prepare transaction (could not satisfy dependencies)
:: package-query: requires pacman<3.5

Encontré la solución en los foros de Archlinux, y la comparto por acá. La solución:

  1. Eliminar package-query y yaourt (ya que depende del primero):
    [fernando@hoth ~]$ sudo pacman -R package-query
  2. Actualizar pacman:
    [fernando@hoth ~]$ sudo pacman -S pacman
  3. Actualizar la base de datos de pacman:
    [fernando@hoth ~]$ sudo pacman-db-upgrade
    [fernando@hoth ~]$ sudo pacman -Syu
  4. Reinstalar package-query y yaourt:
    [fernando@hoth ~]$ sudo pacman -S package-query yaourt
  5. Y ahora sí, actualizar el sistema:
    [fernando@hoth ~]$ yaourt -Syu --aur

Aparentemente el paquete pacman-color también da problemas, ya que depende de una versión anterior de pacman. Espero que haya servido, disfruten su actualización :D

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

Najaraba.com: Software libre, metodologías ágiles y más.

Equipos autogestionados y liderazgo… ¿oxímoron?

Marzo 25th, 2011 - [Enlace local]

En la búsqueda del equipo perfecto, me preguntaba si la autogestión en un equipo y el liderazgo son cuestiones contrapuestas. Jorge me decía que pueden parecer por falta de comprensión de la palabra liderazgo, y JMBeas le ha dedicado un post, hablando más del liderazgo individual.Mi pequeño tweet iba más bien por otro lado. A un equipo autogestionado le considero así, por que son capaces de

» Leer más, comentarios, etc...

Ingenieria de Software / Software Engineering / Project Management / Business Process Management

PMO Starter KIT

Marzo 25th, 2011 - [Enlace local]

Desde Project at works y teniendo como sponsor a Instantis se proporciona el material PMO Starter Kit, muy, muy bueno para aquellos que estan empezando a formar una oficina de Proyectos

http://www.instantis.com/campaigns/pmo_starter_kit_download.html

» Leer más, comentarios, etc...

Javier Pérez

Community Manager: el arte de vender humo

Marzo 25th, 2011 - [Enlace local]

Community Manager es un término que comenzó a hacerse popular en España en mayo de 2010. Pero, ¿antes de esa fecha no existía ese trabajo? Claro que existía… periodismo, marketing, y atención al cliente, resumen las áreas que un community manager debe tratar y que se hacía desde hace muchos años, pero entonces los llamábamos “webmasters“. Un buen día, un “gurú experto conocedor de las sinergias de Internet”, decidió usar el término, y hay que reconocer que tuvo un gran éxito, porque España es el segundo país del mundo que más utiliza ese término, por destrás de Australia. Es decir, el community manager español tiene un nombre anglosajón que es más usado en España que en Reino Unido o EEUU… ¿Cómo es esto posible?

Pero no nos engañemos, aunque resulten graciosos, los que hablan spanglish no hacen ningún mal a nadie. El problema viene cuando se vende humo, es decir, eres un fontanero en paro y optas como solución el abrir una cuenta en Twitter y ponerte en la bio que eres un community manager con 5 años de experiencia (recordemos que en España esta figura comenzó en mayo de 2010). “Total, lo único que tengo que hacer es escribir tweets y comentarios en Facebook…” – se autocomplacía el fontanero.

Y ojalá escribir sandeces en las redes sociales fuera la única tarea de un community manager. Porque ahora está de moda que cada community manager tenga su propio blog (lo que provocó el reciente DDoS en WordPress.com ?) y hablar sobre “su trabajo”… “¡Dios mío! Ya he escrito dos artículos y no sé qué más contar.” – se dijeron los community managers fontaneros. Y aquí llego el siguiente problema: los community managers tenían que escribir artículos en sus blogs diariamente, porque un gurú de los blogs, community manager colega de un tío con muchos seguidores en Twitter, dijo que había que publicar un artículo cada día para optimizar el SEO. Y, claro, no tenían nada que contar. ¿Qué hicieron los community managers fontaneros? Pues lo que hace un español cuando ve peligrar su puesto de trabajo: hablar de cualquier cosa con total convicción en lo que se dice aunque no se tenga ni puta idea de lo que se está hablando.

Y así tenemos a community managers hablando en sus blogs de cosas como: “física cuántica aplicada a la interacción usuario-empresa”, “fusión nuclear y sus ventajas en las redes sociales“, o incluso de programación, analítica web, o SEO… Un parque de community managers fontaneros que conforman un auténtico club de la comedia, sobre todo cuando te das cuenta de algo que todos tienen en común: faltas de ortografía y de gramática en cada párrafo que escriben, que viniendo de quienes se supone deben escribir a nuestros clientes, es como para echarse a temblar.

La creación de la figura community manager ha tenido unas consecuencias devastadoras… periodistas, comerciales y profesionales de la atención al cliente en las colas del INEM, mientras que 4 listos deambulan por España vendiendo humo a propios y extraños a cambio de buenos sueldos. Y aún hay quien cree que esto de la crisis no es culpa de los españoles.

Bendito país.

community manager: el vendedor de humo

» Leer más, comentarios, etc...

Fetishcode

Desinstalar extensiones en JDeveloper 11g.

Marzo 24th, 2011 - [Enlace local]

A

» Leer más, comentarios, etc...

xailer.info (esp)

Cómo Crear Citas en Google Calendar desde Xailer

Marzo 24th, 2011 - [Enlace local]

Hace unos días me vi  en la necesidad de implementar a uno de mis clientes acceso a google maps y a la creación de eventos en google calendar. El tema de los mapas lo pude resolver fácilmente gracias a la estupenta aportación que Bingen hizo en su momento.

Para integración del calendario no me quedó más remedio que calzarme las botas de explorador y ponerme a investigar cómo podía hacerlo. Un ratico en google y en seguida me di cuenta de que atacar a la mayoría de los servicios de google (calendario, contactos, youtube, etc..) es francamente fácil… siempre y cuando utilices  .net

Xailer por un lado, .net  por el otro, ¿Cómo resolverlo?
En un principio pensé en crear una aplicación de consola en VB y hacer una llamada con ShellExecute, pasándole los datos como parámetros. Lo probé y funcionaba, pero fui incapaz de hacer que el programa en VB le devolviera a Xailer si la operación había tenido éxito o no.

Necesitaba una forma en que los dos programas se comunicaran entre sí… Una especie de cliente servidor básico… ¡¡Los Sockets!!

A partir de un artículo de José Alfonso en chochurro, me puse a investigar cómo establecer comunicación entre distintas aplicaciones y aquí está el resultado.

Vamos a ver cómo podemos generar nuevas entradas en el calendario de google asociado a una cuenta de correo gmail o google apps. Además, en el caso de que tengamos un nº de teléfono móvil asociado al calendario, nos permitirá recibir alertas por sms gratuitas.

Nuestro ejemplo nos va a permitir establecer conexión desde xailer (actuando como cliente) con una aplicación diseñada en VB.net (que actúa como servidor) y cuyo único objetivo es crear un nuevo evento en google calendar de acuerdo con los datos proporcionados por el cliente (xailer) y devolver si el proceso ha tenido éxito o no.

Para el proyecto de VB necesitaremos  descargar Google Data API Setup, que contine las dll de conexión necesarias para conertar VB con los servicios de Google .

CLIENTE XAILER

Para empezar nos crearemos un formulario para capturar la información que vamos a enviar al servirdor,esto es: el usuario y su contraseña y los datos referentes a la cita que queremos crear.
Completamos el formulario con un botón para enviar la información y un pequeño TPanel en el centro del formulario, que inicialmente estará oculto y nos servirá para mostrar información al usuario cuando pulse el botón de envío.

Una vez creado el formulario, vamos a hacer uso del evento OnInitializate del mismo, que se ejecuta cuando creamos el formulario
//------------------------------------------------------------------------------
  1. METHOD FormInitialize( oSender ) CLASS TForm1
  2. ::oSocket := ClientSock2():New( "127.0.0.1", 2000 )
  3. ::oDateEdit1:Value   := Date()
  4. ::oDateEdit2:Value   := Date()
  5. ::oTimePicker1:cTime := Time()
  6. ::oTimePicker2:cTime := Time()
  7.    WITH OBJECT ::oDatos := TExsTruct():New()
  8.       :AddMember( "Usuario")
  9.       :AddMember( "Clave")
  10.       :AddMember( "FechaInicio")
  11.       :AddMember( "FechaFinal")
  12.       :AddMember( "Avisar")
  13.       :AddMember( "Texto")
  14.       :AddMember( "Lugar")
  15.       :AddMember( "Comentario")
  16.    END
  17. RETURN Nil
//------------------------------------------------------------------------------

En él inicializaremos el cliente socket para conectarnos con el servidor, los controles de fecha y hora del formulario y nos creamos una estructura de datos llamada oDatos. Esta estructura contiene la información que le pasaremos al servidor de una forma mucho más organizada que si utilizáramos datas independientes.

Como podéis ver, al crear el objeto de la clase ClientSock le decimos la dirección Ip del servidor y el puerto al que conectarnos. En nuestro ejemplo, nos conectamos a la misma máquina en la que tenemos el ejecutable xailer, pero cambiando la Ip podríamos alojar el servidor Gcal en cualquier equipo de una red, o incluso, en un servidor de internet.

Vamos a ver ahora qué ocurre cuando el usuario pulsa el botón de enviar:

//------------------------------------------------------------------------------
  1. METHOD BtnBmp1Click( oSender ) CLASS TForm1
  2. Local cResult
  3. oSender:Disable()
  4. ::oPanel1:Show()
  5. ProcessMessages()
  6. ::oSocket:Verificar()

Primero desactivamos el botón para evitar que un usuario impaciente pulse dos veces y genere dos entradas en el calendario.
A continuación, hacemos visible la pantallita de espera y forzamos un processmessages para que se actualice la pantalla.
Luego, llamamos al método verificar() de la clase Socket, que se encargará de comprabar que el servidor está instalado y funcionando.

El siguiente paso es cargar la estructura oDatos con los valores que recibirá el servidor.

  1. WITH OBJECT ::oDatos
  2.    :Usuario     := ::oEditBanner1:cText
  3.    :Clave       := ::oEditBanner2:cText
  4.    :FechaInicio := dTos(::oDateEdit1:Value) + ;
  5.                    Left(::oTimePicker1:cTime,2) + ;
  6.                    SubStr(::oTimePicker1:cTime,4,2)
  7.    :FechaFinal  := dTos(::oDateEdit2:Value) +;
  8.                    Left(::oTimePicker2:cTime,2) +;
  9.                    SubStr(::oTimePicker2:cTime,4,2)
  10.    :Avisar      := If( Empty( ::oCombobox1:cText),"0",::oCombobox1:cText)
  11.    :Texto       := ::oEdit1:Value
  12.    :Lugar       := ::oEdit2:Value
  13.    :Comentario  := ::oMemo1:Value
  14. END

y enviamos la información al servidor a través del socket mediante el evento enviar(), con el identificador “N:” (de nuevo dato) y los datos de la agenda.

  1. IF ::oSocket:Enviar("N:"+ ::oDatos:Usuario              +"||"+;
  2.                           ::oDatos:Clave                +"||"+;
  3.                           ::oDatos:Texto                +"||"+;
  4.                           ::oDatos:FechaInicio          +"||"+;
  5.                           ::oDatos:FechaFinal           +"||"+;
  6.                           ::oDatos:Comentario           +"||"+;
  7.                           ::oDatos:Lugar                +"||"+;
  8.                           ::oDatos:Avisar               +"¬" )

Como separador de campo usamos el código “||” . También usaremos la terminación “¬” para que el servidor seconozca el fin de la cadena transmitida
Ya solo nos queda ponernos a “escuchar” y esperar a que el servidor nos diga algo.

  1. ::oSocket:Recibir( 256 )
  2.       cResult := ::oSocket:crespuesta
  3.       If cResult = "Conectado"
  4.          cResult = ""
  5.       END IF
  6.       DO WHILE Empty( cResult )
  7.          ::oSocket:Recibir( 256 )
  8.          cResult := ::oSocket:crespuesta
  9.       END
Aquí, solo un pequeño comentario. Puede que al servidor se le haya quedado pendiente decirnos algo (como que nos hemos conectado correctamente), así que si el servidor nos responde con “Conectado”, hacemos oídos sordos y esperamos una nueva respuesta.

Una vez nos ha respondido, mostramos al usuario el mensaje de confirmación o de error, según el caso, y volvemos a empezar el proceso.

  1. ::oPanel1:Hide()
  2.       IF cResult = "OK"
  3.          MsgInfo("Datos enviados correctamente")
  4.          ::oEdit1:Value := ""
  5.          ::oEdit2:Value := ""
  6.          ::oMemo1:Value := ""
  7.       ELSE
  8.          MsgInfo("Error:"+AllTrim(cResult))
  9.       ENDIF

En el caso de que la conexión ::oSocket:Enviar() falle, saltamos a este ELSE, que nos informa del error y verifica la conexión, lanzando el servidor si es preciso.

  1. ELSE
  2.       MsgStop("Imposible enviar datos"+CRLF+"Servidor desconectado","ERROR")
  3.       ::oSocket:Verificar()
  4. END IF

Por último, sólo nos queda no olvidarnos de activar nuevamente el botón de envío, ser educados y cerrar la conexión del socket para que lo puedan utilizar otros procesos, y ceder el foco al control oDateEdit, para crear otra entrada en el calendario

  1. oSender:Enable()
  2. ::oSocket:Cerrar()
  3. ::oDateedit1:SetFocus()
  4. RETURN Nil
//------------------------------------------------------------------------------

Vamos a ver ahora la clase ClientSock2, que contiene algunas modificaciones que he realizado sobre la clase ClientSock original.

Fijaros que gracias a las herencia, uno de los fundamentos de la programación orientada a objetos, he podido adaptar su funcionamiento a las necesidades de mi programa sin tener que modificar una sola línea de código de la clase original

Para ello tan sólo tenemos que crear nuestra clase “heredando” (FROM) todas las características de la clase original.

  1. CLASS ClientSock2 FROM ClientSock

A continuación indicamos los nuevos métodos (verificar) y los que se van a modificar (error), y cerramos nuestra nueva clase

  1. METHOD Error()
  2. METHOD Verificar()
  3. ENDCLASS

El método error ha sido modificado para que NO me avise con un mensaje de alerta cuando se produce el error 2 (no se puede conectar) y así no interfiera con el método verificar y se pueda reconectar el servidor sin intervención del usuario

//------------------------------------------------------------------------------
  1. METHOD Error() CLASS ClientSock2
  2.    IF ::nError != 0 .and. ::nError != 2
  3.      MsgInfo( "Error Socket " + Str( ::nError ) )
  4.    END IF
  5. RETURN ::nError

Y el método verificar() se encarga de comprobar que efectivamente tenemos conexión con el servidor Gcal, y en caso contrario lanzar el ejecutable correspondiente al servidor y esperar a que éste esté disponible.
Para que la carga del servidor se haga un poco más amena, también cambio el cursor a modo “reloj de arena” y muestro una ventanita en la parte inferior derecha de la pantalla avisando de que se está cargando del servidor.

//------------------------------------------------------------------------------
  1. METHOD Verificar(  ) CLASS ClientSock2
  2. LOCAL oForm
  3. InetInit()
  4. Application:lBusy:=.T.
  5.   IF !::Conectar()
  6.       DEFINE FORM oForm OF GetActiveform() SIZE 170, 45 BORDERSTYLE bsSPLASH Color CLR_BLACK,CLR_YELLOW
  7.          @   1518 LABEL " ACTIVANDO SERVIDOR" OF oForm
  8.          oForm:nLeft=Screen:nWidth170
  9.          oForm:nTop=Screen:nClientHeight45
  10.       ACTIVATE FORM oForm
  11.       EXECUTE("gcalserver.exe",NIL,NIL,6)
  12.       DO WHILE !::Conectar()
  13.          ProcessMessages()
  14.       END
  15.       oForm:Close()
  16.    ENDIF
  17.    Application:lBusy:=.F.
//------------------------------------------------------------------------------

En cuanto al servidor VB, su explicación detallada se sale de la temática del blog, pero a modo resumen tan sólo tenemos que crear un proyecto de tipo aplicacion de consola y agregar las referencias las dll aportadas por google. A continuación nos queda crear el sistema de escucha socket y actuar en consecuencia según los datos recibidos. En nuestro caso, cuando la cadena recibida empieza por “N:” , generar una nueva entrada en google calendar.
En el fichero con el ejemplo tenéis tanto el código fuente de xailer, como el código fuente y el ejecutable VB y las dll necesarias para su funcionamiento.

Este ejemplo es una primera aproximación a lo que podemos hacer integrando varios sistemas de programación. Ampliando un poco el servidor VB seremos capaces de que nuestro sistema también pueda modificar eventos creados, borrarlos, etc…

Algunas referencias interesantes

Descripción general de las API de Google Apps
Herramientas y API de Google Calendar
Data API Developer’s Guide: .NET
http://code.google.com/p/google-gdata/
Utilizando Sockets en VB .NET

Si bien la solución a través de sockets funciona, creo que en este caso sería mucho más bonito y elegante poder utilizar una dll creada en .net y llamarla directamente desde xailer.
Pero eso se escapa de mis conocimientos de VB, y además, algo he de dejar para vosotros! . Así que si alguien tiene ganas, puede empezar en
http://msdn.microsoft.com/en-us/library/zsfww439(v=VS.71).aspx

Como siempre, el ejemplo en el área de downloads.

» Leer más, comentarios, etc...

Picando Código

Reseña Tron Legacy

Marzo 23rd, 2011 - [Enlace local]

Sí, llego tarde a la reseña de Tron Legacy, pero esta reseña vale la pena.
Pongámonos en contexto: Con un grupo de compañeros de mi trabajo anterior, compartíamos muchos gustos en común en lo referente al cine, entre otras cosas. Generalmente debatimos sobre series de televisión y películas, además de compartir nuestro material multimedia correspondiente.

En algún momento de nuestro período de tiempo trabajando juntos, salió el tema de la película Tron. Esto desencadenó en una charla sobre la película, seguido de una partida de Armagetron Advance, el clon libre en 3D del juego Tron. Lo que empezó como un momento de dispersión, se transformó en una tradición diaria. Tras cada Daily Meeting de Scrum, dedicábamos unos 10 a 20 minutos jugando Armagetron Advanced en red. Algún día nos tendremos que volver a juntar a jugar…

En fin, ya estábamos al tanto de la salida de Tron Legacy, así que siguiendo la tradición de Armagetron, pensábamos ir en patota al cine a ver el estreno de la película. Por problemas de organización, tiempo, y demás obstáculos que se interponen entre los super héroes y su deber por salvar al mundo, no llegamos a organizarnos para ir.

Tron Legacy

Tron Legacy

En un momento supuse que iba a ir a ver Tron Legacy por mi cuenta si era necesario. Pero no quería ir a verla en 3D, me molesta pagar de  más por algo que no aporta nada y además perjudica la experiencia de ir a ver la película en el cine. Si no quería verla en 3D, debía verla doblada al español. Esto queda totalmente fuera de competencia. No sé la cantidad de películas que no he ido a ver al cine por el simple hecho de que sólo la pasan doblada al español. Resumiendo, no fuimos a verla al cine.

Recientemente uno de los integrantes del grupo Armagetron – Martín Andrade – miró Tron Legacy más o menos al mismo tiempo que yo. Compartió por correo con el resto del equipo su crítica de la película, con la que estoy bastante de acuerdo. Martín es bastante buen escritor, y me gustó como quedó la crítica, así que pedí para reproducirla por acá. Después de todo, para eso es un blog sino para coleccionar cosas interesantes que uno ve por ahí. A continuación, la columna de cine a cargo de Martín Andrade:

Debo admitir, la verdad que la vi sin demasiadas expectativas, solo una ineludible empatía y afición por el juego, puedo aseverar luego de dicho esto, otra vez que Disney ha sacado de su galera mágica otro gran “fiasco”. Carente de un argumento sólido, usando “clichés” de su versión antecesora, “Tron Legay” es solo algunos destellos de buenos efectos especiales y un “rebusque” o “refrite” de viejos personajes quemados en “Tron”, ya que como todos sabemos a ésta altura del partido todo lo que toca la compañía Disney ya no es oro.

Si la puntúo del uno al diez, puedo darle sin temor a equivocarme un cuatro, es una película para ver en cine y hasta me atrevería a decir que en “3D” o bien para ver en la matiné del canal 12, un sábado por la noche cuando ya te han expulsado de los demás canales restantes. Todo ésto viene a que si no viste la primer película, no te enteras de que va, ni siquiera explicándote el pobre argumento que es acompañado de actuaciones lavadas y con poco juego actoral.

Para los que vimos la primera, el argumento de “Tron” y como se planteó el desarrollo de la misma en un abitat digital donde todo era virtual, motor fundamental por el cual nos “colgamos” todos los que le seguimos la propuesta, nos quedamos con una “baba” que simula ser una especie de realidad virtual, más real que la realidad. Otra de las cosas que pasan al verla es la sensación de que los genios de Disney sacudieron el polvo al argumento primario, lo “refritaron” y se dieron el gusto de hacer una película con todo lo que no pudieron hacer en la primer versión.

En resumen una película “sosa”, sin mucho que desear, un argumento totalmente predecible y algún “efectito” que otro que dura muy poco como para dejarnos llenos.

“Por lo menos así lo veo yo”

Tron Legacy

Tron Legacy

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

Bitácora de Javier Gutiérrez Chamorro (Guti) » Programación

Mi configuración de WordPress

Marzo 23rd, 2011 - [Enlace local]

Continuando con Renovación del blog y mi paso a WordPress, voy a daros algunos detalles más sobre mi actual configuración. Si no tenéis mucho rodaje con él, seguro que os encamina para poder empezar. Primero de todo escogí un tema que me gustase, buscaba en este orden que fuera funcional, sencillo, y bonito. Encontré Arclite 2.03 que me gustó por su liquidez, que es indispensable si buscamos la facilidad de lectura. Luego cargué una buena batería de plugins, recomendados, o recopilados por mi. Hay que destacar que cuantos más añadamos más cargado y lento será el blog, pero si necesitas una determinada funcionalidad, no queda más remedio que tenerlos. En mi caso, los instalados son: - Advanced Random Posts 2.3 - Akismet 2.5.3 - All in One SEO Pack 1.6.13.2 - Contact Form 7 2.4.4 - Digg Digg 4.5.0.7 - FeedBurner FeedSmith 2.3.1 - FV Gravatar Cache 0.3.2 - Google XML Sitemaps 3.2.4 - Maintenance Mode 5.4 - Really Simple CAPTCHA 1.2 - Subscribe to Comments Reloaded 1.6 - Thank Me Later 2.0.0.2 - W3 Total Cache 0.9.1.3 - WP-DBManager 2.60 - WP-PageNavi 2.74 - WP-PostRatings 1.61 - WP-PostViews 1.60 - WP-Stats 2.50 - WP-Syntax 0.9.9 - Yet Another Related Posts [...]

Artículos relacionados:
Mi configuración de Samurize
Potenciado por WordPress
Nueva configuración en LFS (1:40,22)

» Leer más, comentarios, etc...

Cuaderno de software

Reto: ArraySiblings en Gists

Marzo 23rd, 2011 - [Enlace local]

Hoy he tenido que programar en el trabajo un algoritmo para recuperar los hermanos siguiente y anterior de un elemento en un array asociativo. Se me ha ocurrido abstraerlo como para compartirlo en un y preguntar en Twitter si alguien puede mejorar la eficiencia del algoritmo. La verdad es que estaba perezoso y no me he comido mucho la cabeza como podréis comprobar si veis el código.

El caso es que @gonzalo123 ha tenido el gran detallazo de hacerme caso y ha creado un Gist con su implementación usando un walker. ¡Bien!

Visto el tremendo éxito (no esperaba ni una sola reacción xD), he modificado mi Gist con los tests que había hecho y un interfaz definido, para que cualquiera pueda hacer un fork del Gist y subir su propuesta de clase ArraySiblings.

Si alguien más se anima a subir su implementación podemos hacer un resumen y un pequeño benchmark de rendimiento con las distintas aproximaciones.

Lista de Gists:


» Leer más, comentarios, etc...

Ingenieria de Software / Software Engineering / Project Management / Business Process Management

Seminario Ejecutivo “Como hacer negocios en la nube”

Marzo 23rd, 2011 - [Enlace local]

Interesante seminario ejecutivo sobre como hacer negocios en la nube con Windows Azure

http://blogs.msdn.com/b/emprendedores/archive/2011/03/03/seminario-como-hacer-negocios-en-la-nube.aspx

» Leer más, comentarios, etc...

MadeInFlex

AIR 2.6 released!!

Marzo 22nd, 2011 - [Enlace local]

Ha salido una nueva versión de Adobe AIR, la 2.6, con las últimas mejoras para dispositivos iOS mobile y con importantes mejoras en cuanto a renderización HTML, mejoras para aplicaciones desktop y sporte para debug sobre USB.
A continuación desglosamos estas características.

Mejoras para iOS

Otras mejoras en AIR 2.6

Hay mas mejoras, pero hemos comentado las más interesantes. Para más información:
link1
link2

Descargas de AIR 2.6:
SDK
Runtime

» Leer más, comentarios, etc...

xailer.info (esp)

Componente FTPFile

Marzo 21st, 2011 - [Enlace local]

Actualización del componente FTPFile para ser usado en tiempo de diseño desde el IDE y poder establecer de manera visual sus propiedades y eventos.

Esta actualización crea una nueva paleta de componentes que añade los componentes TInternet, TFtp y TBlatMail a la paleta del IDE para poder manejarlos visualmente.

El ZIP incluye los fuentes, los archivos de proyecto para Xailer 2. También se incluyen la librería y la DLL ya construidas para los que tienen versiones de Xailer 2 anteriores a la 2.3

» Leer más, comentarios, etc...

Variable not found

Nos vamos de tournée: Microsoft Web Camps 2011

Marzo 21st, 2011 - [Enlace local]

Web Camps 2011: Make Web, not WarDurante las próximas semanas estaré de gira participando como ponente en los Web Camps que se celebrarán en cinco ciudades del país, bajo el lema “Make Web Not War”.



En estos eventos, como se puede ver en la agenda, se tratarán temas relacionados con tecnologías y desarrollo para la web:

El itinerario previsto es:

Si estáis interesados en asistir, sólo tenéis que ir a la web oficial de la gira, e inscribiros en la ciudad más cercana. En la misma página encontraréis información sobre los horarios y ubicación exacta del evento.



¡Espero veros por allí! :-)



Publicado en: Variable not found.



» Leer más, comentarios, etc...

Picando Código

Mini-truco: Aplicaciones para edición archivos de audio y video

Marzo 21st, 2011 - [Enlace local]

Haciendo este video para NavegadoresWeb.com, estuve usando algunas herramientas de edición de video. Encontré algunas cosas increíbles y muy fáciles de usar que quiero compartir acá.

recordMyDesktop

recordMyDesktop

En primer lugar usé qt-recordMyDesktop para capturar el video. Es un programa bastante simple, elegimos una ventana (o grabamos toda la pantalla) y a grabar. También tenemos la opción de grabar audio yalgunas opciones más en “Advanced”.

El formato por defecto de salida de recordMyDesktop es OGV. Tuve que convertirlo a MPG por dos razones:

  1. El programa de edición de video que iba a usar no abre archivos OGV.
  2. YouTube tampoco soporta OGV. Intenté subir un video en este formato antes, y el resultado fue desastroso, se veía todo mal, y tuve que resubirlo en MPG.

 

Para convertir OGV a MPG, usé ffmpeg:

ffmpeg -i video.ogv video.mpg

Después usé AviDemux para cortar una parte al final del video, y lo aceleré agregando frames por segundo. Tenía el video pero sin sonido. Elegí una canción de un disco que tenía en formato m4a. La convertí a Wav con faad:

Convertir archivo m4a a wav:

[fernando@hoth ~]$ faad cancion.m4a

También podemos convertir este wav en mp3 con lame:

[fernando@hoth ~]$ lame cancion.wav cancion.mp3

Ahora, algo que me resultó bastante impresionante de ffmpeg, fue cómo agregar un archivo de sonido a un video.

[fernando@hoth ~]$ ffmpeg -i cancion.wav -i video.mpg video-sonido.mpg

El resultado final está a la vista, quedé bastante conforme y me resultó bastante sencillo hacer todo esto con software libre.

ffmpeg es bastante poderoso, estuve mirando algunas de las opciones del programa, y convertir entre distintos formatos de video es bastante fácil. Como ven no tiene mucha complicación. Tiene mucho más parámetros que no usé, aparentemente los que usa por defecto fueron suficientes para mi video.

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

Variable not found

Enlaces interesantes 35

Marzo 20th, 2011 - [Enlace local]

Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el lunes, 14 de marzo de 2011 hasta el domingo, 20 de marzo de 2011. Espero que te resulten interesantes. :-)

Y no olvides que puedes seguir esta información en vivo y en directo desde Variable not found en Facebook, o a través de Twitter.



Publicado en: www.variablenotfound.com.



» Leer más, comentarios, etc...

Bitácora de Javier Gutiérrez Chamorro (Guti) » Programación

Rendimiento de constantes en PHP

Marzo 19th, 2011 - [Enlace local]

En PHP tengo por costumbre el usar variables globales como constantes, pero no ha sido hasta hace bien poco que me he cuestionado su eficiencia, teniendo en cuenta que existe define. Pensando de manera análoga a C, suponía que define iba a ser mucho más eficiente, al ser una constante definida en tiempo de interpretación. Nada más sencillo que comprobarlo con el siguiente código: <?php $KI_MAX_ITER = 1000; define('KI_MAX_ITER', 1000);   $fInicio=microtime(true); for ($iCont1=0; $iCont1<$KI_MAX_ITER; $iCont1++) { for ($iCont2=0; $iCont2<$KI_MAX_ITER; $iCont2++) { $iCont3=($KI_MAX_ITER != $KI_MAX_ITER); $iCont3=$KI_MAX_ITER; $iCont3=($KI_MAX_ITER == $KI_MAX_ITER); }   } $fFin=microtime(true); echo ($fFin - $fInicio) . '<br>';   $fInicio=microtime(true); for ($iCont1=0; $iCont1<KI_MAX_ITER; $iCont1++) { for ($iCont2=0; $iCont2<KI_MAX_ITER; $iCont2++) { $iCont3=(KI_MAX_ITER != KI_MAX_ITER); $iCont3=KI_MAX_ITER; $iCont3=(KI_MAX_ITER == KI_MAX_ITER); }   } $fFin=microtime(true); echo ($fFin - $fInicio) . '<br>'; ?> El resultado es que usar una varíable de ámbito global ha llevado 0.41 segundos, mientras que hacerlo con define 0.89. En conclusión, a la hora de usar constantes, evita define siempre que sea posible, usando en su defecto variables globales. Artículos relacionados:Flash 9 Alpha y rendimiento Rendimiento Javascript vs VBScript Rendimiento de Google Chrome

Artículos relacionados:
Flash 9 Alpha y rendimiento
Rendimiento Javascript vs VBScript
Rendimiento de Google Chrome

» Leer más, comentarios, etc...

Javier Pérez

Autónomo: el guerrero solitario

Marzo 18th, 2011 - [Enlace local]

Hace meses que me hice autónomo, y ha sido el periodo más largo que he estado sin escribir en el blog. El título ya podría dar alguna pista de los motivos.

Toda mi vida he sido trabajador por cuenta ajena, y desde esa posición siempre he admirado a quienes tienen el valor de emprender un negocio propio. No soy la norma en este país, porque la mayoría de trabajadores suelen tener un profundo rechazo hacia el mundo empresarial. Pero tuve la suerte de crecer en una familia de empresarios, y pude comprobar en primera persona la tragedia y el sacrificio diario que supone emprender un negocio propio.

Pero nunca podría haber imaginado lo que se siente en primera persona del singular. Estos últimos meses se podrían resumir en dos palabras: guerra y soledad. La soledad está clara, nadie ayuda a un autónomo excepto tú mismo. Es decir, no tienes compañeros más allá de algún amigo que también es autónomo, aunque seguramente no sea de la misma profesión. Aunque tampoco he conocido a muchos compañeros de verdad en mis más de 10 años de asalariado… los puedo contar con los dedos de una mano.

Es la declaración de guerra lo que más me erosiona. Primero contra el propio Estado Español. Se me ocurrió la feliz idea de solicitar lo que se conoce como “capitalización del paro“. Consiste en que el Estado te da un porcentaje en metálico del total de la subvención por desempleo para que realices inversiones. Es decir, no te lo puedes gastar en lo que quieras, sólo en aquello que esté relacionado con la actividad que vas a realizar, y además tienes que gastarlo en 30 días. En algunos sitios los comercios organizan un concurso que es muy similar: sortean 6.000 € (por ejemplo) entre todos los consumidores y el que gane debe gastarse ese dinero en un día. Así me sentí yo.

La documentación la tienes que entregar en el INEM, guardando la misma cola que el resto de desempleados, lo que se traduce en mañanas enteras perdidas únicamente para entregar papeles en mano a un funcionario. Y todavía los políticos se preguntan de dónde salió esta crisis… Ya trabajando mientras realizaba estas gestiones, tuve que ir unas 5 veces al INEM, lo que se traduce con 5 jornadas laborales perdidas, y a 200 € por jornada… haz la cuenta de cuánto me hizo perder el Estado sólo por darme dinero en metálico por anticipado que sólo podría gastar en un mes. ¿No es maravilloso?

Después de esto decidí contratar a un asesor fiscal, y fue sin duda la mejor inversión que hice. Se acabó el pelearme con funcionarios del Estado. Ahora tocaba pelearme con proveedores, arrendadores, bancos y clientes. De Málaga a Malagón

Encontrar un local/oficina no fue difícil. Gracias a la crisis cada vez hay más locales vacíos y los precios han bajado. Pero tratar con los arrendadores ya fue otro cantar… “No puedes pintar”, “no puedes poner aire acondicionado”… Al fin encontré un local cerca de casa. Ideal. Pero había que reformar, poner aire acondicionado, alarma, suministros, teléfono, internet…

Solicité presupuestos para hacer la reforma. Nada complicado, pintar y poner tomas de red. Me decidí por un señor que vivía en la misma ciudad. El primer día hacen un boquete en la pared que llega a los baños del bar de al lado y le rompen los azulejos… Aquí ya debí haber tirado la toalla.

Terminan la reforma, ponen el aire acondicionado, me instalan la alarma, suministros dados de alta, y finalmente llega, al fin, el servicio técnico de ONO para ponerme línea de teléfono e internet… Llega al local, mira, pone cara de pocas ganas de trabajar, mira la roseta de cables del edificio… y me dice que no puede tirar cable hasta el local porque el tubo está obstruido. “Adiós“, me dijo. “Bueno, que le dén a ONO“, me dije. Llamo a Movistar y llegan dos semanas después. El técnico me dice que no me puede poner ADSL porque no me llegaría ni 1 MB. “A tomar vientos Movistar“, me dije. Llamé a Vodafone hace un mes y medio, y aún estoy esperando a que venga un técnico a ponerme la línea. Llamo cada día al servicio de atención al cliente porque ya conozco a todas las operadoras y nos vamos contando qué tal nos va la vida. Quién me iba a decir que meter internet en un local iba a ser tan complicado, cuando cualquier ocupa tiene metido cable con todos los canales gratis.

Y en estas estamos, después de arrendar un local, reformarlo, instalarle aire acondicionado y alarma, y contratar sumistros, está cerrado a cal y canto porque las operadoras de este bendito país no quieren darme servicio de internet. Insisto, y todavía los políticos se preguntan de dónde salió la crisis.

Ni pagando te ayudan y estás totalmente desprotegido. La guerra declarada a todo el mundo en la más absoluta soledad. Eso es ser autónomo. Y si antes admiraba a los autónomos, ahora los idolatro. Son superhéroes.

autonomo guerrero solitario

» Leer más, comentarios, etc...

Picando Código

Multiverseros: La realidad no supera a infinitas ficciones

Marzo 18th, 2011 - [Enlace local]

Ignacio Alcuri es un escritor uruguayo. Además de escribir varios libros (de los cuales confieso solo leí parte de uno en visitas al baño) ha participado del programa de radio Justicia Infinita, los programas de televisión Los Informantes y Reporte Descomunal, y la obra teatral de monólogos humorísticos De Pie.

Hace unos días, Alcuri anunció en Twitter el próximo lanzamiento de un sitio sobre cómics, cine, televisión, juegos y otras yerbas. Conociendo al personaje, la idea de este sitio despertó mi interés, ya que es un conocido fanático de los cómics. Al día siguiente de este tweet, se presentó Multiverseros.

Multiverseros

Multiverseros

En la presentación los autores del sitio nos cuentan:

Los cuatro energúmenos que comandamos Multiverseros (rodeados de un nutrido grupo humano) nos conocimos gracias a nuestras aficiones en común; todas esas que se asocian a los nerds, geeks, freaks o como quieran llamar a aquellas personas con gustos que implican dejar volar la imaginación.

¿Alguien se sintió identificado? Todo empezó con un foro cerrado donde publicaban sus reflexiones hasta llegar a un punto en que decidieron abrir la cancha a más gente. El sitio está armado sobre un foro phpBB, y cuenta con participación abierta. Podemos inscribirnos a discutir sobre estos distintos temas que tanto nos apasionan, y leer además las columnas fijas de los autores del sitio.

Los responsables, además de Alcuri (fanboy de DC…) son:

Los temas principales sobre los que escriben en este sitio, como se mencionó más arriba son: Cine/TV, Cómics y Juegos.

En la sección de Juegos, hay una columna dedicada a jugar Ludopatía Congénita: juegos de rol, juegos de mesa y ocasionalmente videojuegos.

Personalmente no he tenido la oportunidad de participar de un juego de rol, pero estoy por introducirme a ese mundo. Si les interesa ir viendo de qué va la cosa les recomiendo el artículo 15 preguntas sobre RPG de esta columna. Ahí, se responden grandes interrogantes de la humanidad como ¿Qué es un juego de Rol? y la más importante ¿Jugar rol no es DEMASIADO nerd?

Respecto al Cine/Tv, en la columna Delante de la pantalla, han publicado un interesante artículo extensivo sobre shows ideales para el bolsillo del geek-caballero y la cartera de la geek-dama. Series que mirar y las que se vienen en 2011 en ¡Vieja, empezó el programa de Superman!

Sin dudas la mayor cantidad de contenido la veamos en la sección de Cómics, ya que hay varias columnas interesantes relacionadas al tema. Hay una columna entera – Desde las trincheras – dedicada a la guerra de Marvel vs. DC. Inútiles por 5.000 es una columna dedicada a determinar hechos intrascendentes como cuántas villanas pasaron por las páginas de Batman o cuántos años tiene Batman.

Como contrapartida, la super útil columna Tomo Uno, donde anuncian: reseñaremos cómics pero además de hablar de las historias, hablaremos del objeto “libro de cómics”. Encuadernación, prólogo, extras… todas esas cosas que contribuyen al disfrute de la lectura tradicional.

En fin, un sitio completito, y el ritmo de publicaciones viene bastante bien, así como el nivel de lo escrito. Visítenlo e investígenlo, hay mucho más contenido por descubrir. Desde acá mucha suerte a estos 4 paladines del cyber espacio, que tengan mucho éxito con este emprendimiento.

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» Leer más, comentarios, etc...

Información legal y técnica