Netbeans es mi IDE favorito desde hace años y últimamente me ha tocado realizar varios proyectos usando el framework Yii. Para todo desarrollador / programador es una realidad que no conocemos en totalidad un lenguaje o framework y por ello siempre estamos acudiendo a la documentación  para repasar sintaxis y nombre de métodos, sobre todo de las variables u objetos manipulados en cierto momento. Por eso, es bueno configurar el IDE para que autocomplete el código y muestre la documentación de funciones para leer conocer el funcionamiento sin tener que cambiar de ventana.

Hace unos días descubrí en la documentación oficial como configurar Netbeans para trabajar con Yii. Y les explico aquí como realizarlo:

  • Entra al menu File (Archivo), luego a Project properties (Propiedades del proyecto) y finalmente a PHP Include Path (Ruta de cabeceras de PHP) e incluimos la ruta donde se guarda el framework de yii, de hecho la carpeta se llama «framework».
  • Luego entramos a Tools (Herramientas), luego a Options (Opciones), hacemos clic en la pestaña superior de Miscellaneous (Misceláneas) y hacemos clic en Files (Archivos), luego del paréntesis agregamos «yiilite\.php» para que quede algo como «^(yiilite\.php|CVS|SCCS|….»
  • Reiniciamos Netbeans y veremos como ahora se autocompleta el código, al momento de instaciar clases accederemos a sus métodos y documentación.

Para el caso de algunas vistas parciales donde recibimos objetos que no están declarados en el archivo, podemos decirle al IDE que tipo es cada variable usando la siguiente sintaxis:

/* @var $this MyController */
/* @var $model MyObject */
$this->metodo() // se puede escribir usando auto completación
$model->id; // se puede escribir usando auto completación

Con estos sencillos pasos se hará mas fácil la escritura de código php usando Yii en Netbeans.

Completado de código PHP con Yii en Netbeans

Completado de código PHP con Yii en Netbeans

Hace unos días logré luego de unos meses terminar este libro tan largo pero muy valioso. Empecé a leer este libro por un artículo que vi por ahí donde recomendaban 10 libros indispensables para el desarrollo de software, este fué el segundo que escogí para leer y realmente me gustó porque cubre todo los aspectos del desarrollo de software: recolección de datos del cliente, diseño, arquitectura, desarrollo, pruebas, mejoramiento de procesos, trabajo en equipo, y mas.

A diferencia de «El programador pragmático«, Code Complete esta enfocado no solo a desarrolladores sino a cualquier persona que trabaje en esta rama, tiene capítulos dedicado al puro diseño del software, otros a diseño de interfaces gráficas, otro a como trabajar en equipo y tratar con los clientes. Sin embargo, si eres programador o desarrollador este libro es obligatorio que lo leas, te enseña a como programar mejor con ejemplos de código, como realizar pruebas automatizadas para mejorar tu productividad, como hacer código mantenible y entendible, selección de herramientas y tecnologías, etc.

Portada de Code Complete

Portada de Code Complete

Realmente vale la pena leer el libro, son casi 1000 páginas pero cada una de ellas lo vale. Incluso si dominamos los temas expuestos allí sirve de repaso volver a leerlos, o como me pasó a mi en muchos capítulos de temas que «conocía»: aprendí nuevas cosas y aprendí a mejorar hábitos existentes. Si eres una persona graduada o con experiencía en desarrollo de software, debes leer este libro de lo contrario es mejor esperar porque el libro exige tener cierta experiencia, para alguien nuevo puede ser muy útil pero mas difícil de comprender el contenido.

Aquí les dejo la página oficial del libro donde pueden encotrar información para comprarlo: http://cc2e.com/

Octubre empezó con una mala semana para la gente de la informática, el pasado 12 de octubre muere el famoso programador Dennis Ritchie, otra de las personas que admiraba (si entran en la pagina de mi semi-auto-biografía en el blog pueden observarlo en la lista de mis héroes informáticos) por su gran trabajo que cambió la humanidad.

Steve Jobs fue alguien con gran visión hacia el futuro de la tecnología pero quienes lo hacían realidad era sus empleados, sin embargo, Dennis Ritchie fue alguien que hizo realidad la tecnología, su trabajos mas importantes fue crear el «Lenguaje C» y el sistema operativo «UNIX». Ambas tecnologías son usadas ampliamente, de hecho, cuando navegas en Internet estas usando una tecnología derivada de su trabajo, si estas usando programas o teléfonos inteligentes estas usando software derivado de sus creaciones.

Actualmente estoy dando clases de Computación I en la Universidad del Táchira y el pensum incluye enseñar lenguaje C, recuerdo en la primera clase al hablar un poco sobre él y la historia de lenguaje C, dije que fué creado hace 40 años y  un estudiante me preguntó: Si es algo tan viejo y para la tecnología eso es prehistorico, ¿Por qué se sigue usando? Lo que se me ocurrió responderle fue: porque es poderoso y simple.

Realmente luego de tanto tiempo programar es C es algo muy útil, produce software poderoso, disponible para cualquier plataforma y con buena documentación. Por ello la mayoría de sistemas operativos están programados en este lenguaje, es fácil de comprender la sintaxis, crea programas eficientes, está disponible para todo tipo de arquitectura:  teléfono celular, consolas de videojuegos, computadoras, etc. Respecto a UNIX, su diseño es excelente por su sencillez, casi todos los sistemas operativos lo utilizan y/o descienden de el: Linux, los telefonos con Android, Bada, WebOs, el sistema operativo de las Mac (MacOs) y de los iPhones (iOS). Casi el 70% de los servidores de Internet usan sistemas operativos con arquitectura UNIX.

Así que si usas tecnología digital hoy en día, es muy probable que estes usando tecnología influenciada por el trabajo de Dennis Ritchie, desde tu reproductor musical hasta la computadora, desde que te conectas a Internet o utilizas un reproductor blu-ray, entre otros. Gracias a este hombre le debemos gran parte del avance de hoy en día, pero su trabajo solo era comprendido por la gente del área y no por las personas «comunes».

Para finalizar quiero compartirles mi frase favorita de él y la canción de programar en C:

«UNIX es básicamente un sistema operativo muy sencillo, pero hace falta ser un genio para entender su simplicidad».

Dennis Ritchie.

El viernes pasado recibi mi invitación para participar en la beta de AppInventor, un programa para crear aplicaciones para Android sin necesidad de escribir código, si nunca lo han escuchado o desean ver una introducción, pueden chequear el siguiente vídeo:

Para comenzar a usarlo, se debe iniciar sesión con la cuenta de google y descargar un instalador, revisándolo por encima, trae un emulador de un móvil con Android, un depurador de código y parte del SDK de Android. El instalador pesa casi 60MB y está disponible para Windows, GNU/Linux y MacOS.

Pantalla principal de AppInventor

Pantalla principal de AppInventor

Una vez instalado no pude encontrar el ejecutable para iniciar la aplicación, pero al buscar información en la página, me di cuenta que es una aplicación web hecha en HTML5/Javascript (estos de Google se estan tomando en serio la computación en la nube), la misma, contiene a la izquierda un menu con una serie de componentes para usar en la interfaz de la aplicación, en el medio la ventana de la pantalla telefóno y a la derecha las propiedades del componente y un navegador de componentes usados. Esta interfaz es sencilla, igual a los IDEs existentes por lo que para los desarrolladores no será problema el uso de AppInventor, los componentes simplemente se arrastran a la pantalla del teléfono y con doble click vamos editando las propiedades.

Esta parte es sólo la vista de la aplicación (como el modelo MVC) por lo que para agregar eventos y definir las acciones a ejecutar cuando el usuario interactúa con estos componentes, utilizamos la vista de bloques, accesible por un botón en la parte superior derecha. Al hacer click allí, se abre una aplicación Java Web Start (se vé el gran uso de Java en Android por parte de Google) donde pasarmos a la vista de asignación de eventos y acciones (como el controlador segun MVC), lo interesante, es que podemos asignar eventos y acciones a través de bloques parecidos a las piezas de un rompecabeza, uniendo los bloques podremos realizar el programa deseado sin escribir una línea de código. El famoso Hola Mundo, lo hice en menos de 5 minutos sin leer manuales, usando 3 bloques como se ve en la siguiente imagen:

Bloques de acciones en AppInventor

Bloques de acciones en AppInventor

Luego podemos ver los resultados en nuestro teléfono Android o usando el emulador, generar el paquete y distribuirlo. No he leído, pero creo que por ahora no hay mucha interacción con el Market y no se como es la licencia para el uso de esta aplicación.

Me gustó como se trabaja con esta herramienta y permite desarrollar cosas sencillas en pocos pasos (obviamente cosas complejas requiere escribir código), además permite a personas ajenas a la programación, realizar aplicaciones sencillas para si mismas. Google está haciendo un buen trabajo con esto y me llamó la atención que todo fuese bajo web, muchos no nos imaginaríamos hace unos años la posibilidad de crear aplicaciones desde el navegador.

Hoy salió a la luz una noticia importante para todos aquellos desarrolladores de PHP, pues Facebook acaba de mostrar su entorno de ejecución de PHP con el fin de optimizar hasta un 50% o más (dependiendo de los casos) la ejecución de scripts en este lenguaje. Tal vez le parezca un poco de optimización pero cuando eres una empresa grande como Facebook que cuenta con 50000 servidores aproximadamente y sirve a 300000000 de usuarios, un 50% mas de rendimiento por el mismo hardware, es bastaste.

Lo que hizo esta gente es crear un traductor de PHP a C++, donde luego se compila a lenguaje de máquina utilizando G++ (el compilador GNU de C++), permitiendo «migrar» aplicaciones PHP a lenguaje de máquina y ejecutarse con mayor velocidad, obviamente se pierde las voluntades del lenguaje dinámico e interpretado  junto a la eliminacion de algunos comandos que no se pueden adaptar a C++, como el caso de eval() que evalúa código PHP en tiempo de ejecución, el uso de $$ y otras funciones mas.

En el screencast del lanzamiento su creador comentó que este proyecto no busca sustuir el entorno de ejecución de PHP ni hacer que la gente compile todo a C++, sino que en ambientes de alta demanda, utilizar PHP con servidores web tradicionales en el momento de desarrollo y luego cuando se esté listo para producción compilarlo en C++ y obtener mayor rendimiento.

Cabe destacar que HipHop PHP también es un servidor web para servir estas páginas generadas y que se esta trabajando en un interprete para PHP, sin embargo es muy temprano para dar opiniones ya que apenas hoy se hizo el anuncio y liberación del codigo en Github , esperemos a ver que ofrece el futuro del proyecto de código abierto.

Mas informacion: https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php–move-fast/

Esta frase de Ted Nelson lo explica todo:

¿Que por qué los videojuegos están mucho mejor diseñados que los programas tipo Office? Los videojuegos están diseñados por gente a la que le encanta jugar con ellos. Los programas como Office están diseñados por gente que querrí­a hacer cualquier otra cosa durante el fin de semana.

Totalmente cierto, jejejee.
Visto en Microsiervos.