Entradas

Mostrando entradas de mayo, 2011

Unobstrusive wev dev

Imagen
Lea el artículo original en  Unobstrusive web dev .

Un entorno de desarrollo Drupal portable con XAMPP y FreeCommander

Imagen
Uso habitualmente Windows 7 y XAMPP 1.7.1 (por la compatibilidad con Drupal 6.x). Hay proyectos que avanzo en casa y hay otros que avanzo en la oficina. En muchas ocasiones requiero consultar cómo hice algo en tal o cual site y me gustaría poder tenerlos al mismo tiempo. Portatil Ir cargando una laptop podría ser ser, pero creo que preferiría otra opción. USB Podría tener mi entorno de desarrollo en el USB y trabajar directamente allí. XAMPP tiene versiones portables que se pueden instalar en un USB. XAMPP Lite es incluso más ligera. Sin embargo, mi experiencia es que es realmente muy lento. Hosting Un tiempo probé hacer el desarrollo directamente en un hosting. La ventaja es que el desarrollo se hace en un solo lugar. La desventaja es que la edición via FTP es mucho más lenta. Además, es una opción vulnerable porque el hosting puede quedar fuera de servicio o haber problemas de conectividad, lo que me ocurrió algunas veces (es para ponerse a pensar, si uno ha puesto bastan

uphp para Drupal

Imagen
En días recientes, navegando por Internet, me topaba con las opiniones de algunos desarrolladores sobre Drupal. Comparado con otros frameworks, como los tipo MVC, CakePHP o similares, Drupal es raro. Brillante, pero raro. No es MVC y se apoya, más bien, en una arquitectura que usa hooks para permitir la colaboración de los módulos que se instalen. Drupal tiene su modo particular de hacer las cosas y cuesta un poco acostumbrarse. A su modo de tratar los formularios, de hacer los temas, de intervenir en el flujo. Sin embargo, el hecho es que Drupal está floreciendo más rápido que otros frameworks. Muchos puristas de OOP critican que no use objetos, aunque Drupal dice que implementa los conceptos de OOP de modo diferente. Quizás sea eso. Que Drupal ofrece una forma diferente de hacer las cosas que, una vez que se aprenden, ayuda a ser más colaborativo y productivo. Pero, si uno tiene un sistema modelado en OOP tradicional, puede encontrar algunos inconvenientes para pasarlo a Drupal

Resolviendo node.save en Services

Imagen
El módulo services  viene con algunos servicios por default. Node Service pone a nuestra disposición varios servicios relativos a nodos. Uno de ellos es node.save . node.save permite publicar un nodo desde otro site. En particular, otro site Drupal. Sin Keys Servidor Suponiendo que el site donde queremos publicar es http://myserver.example.com , allí se instala services. Hay que activar los módulos: Services XMLRPC Server Node Service En la interfaz de administración (admin/build/services), en la pestaña Browse , puede navegar por los servicios disponibles. Como está activado Node Service , estarán disponibles: node.view node.get node.save node.delete Cuando elige un servicio, se le mostrará su sintaxis y un formulario de prueba. En el caso de node.save , se requiere como parámetro un array node. Como la publicación se hará como usuario anónimo, hay que darle los permisos necesarios para crear el tipo de nodo que deseamos. Por ejemplo, si queremos crear de este modo

Usando XMLRPC con Services

Imagen
Services es un módulo que permite definir web services que responden a solicitudes usando diversos protocolos. Por default, viene con soporte para XMLRPC. En este ejemplo, hay un proveedor de web services y un cliente de web services. Proveedor Supongamos que el proveedor del web service tenga el url http://webservice-provider.com Luego de instalar el módulo services (y activar Services y XMLRPC Server) puede entrar al administrador, admin/build/services, para navegar por los services definidos por default. Uno puede agregar más services, colocando un módulo adecuado en modules/services/services/. Por ejemplo, si tengo un tipo de contenido llamado job: modules/services/services/job_service/job_service.info name = Job Service description = Provides a job service package = Services - services dependencies[] = services core = 6.x modules/services/services/job_service/job_service.module /** * Implements hook_service */ function job_service_service() { return array(