Blog

[PHP] Cómo iniciarse en PHP en 2013

La evolución de la tecnológica es realmente impresionante y en el mundo del desarrollo de software lo es más, hemos visto como en años o meses recientes hemos tenido un gran aparición de nuevos frameworks he inclusive lenguajes, PHP también ha ido evolucionando mucho y a pasos agigantados, recientemente (bueno no tanto), tenemos el placer de poder usar Namespaces, Clousures, Traits, y hasta un Web server embedido.

Sin embargo hay algo que hoy en día permanece igual, o prácticamente sin cambios, y eso es iniciar con el lenguaje, si bien hay muchos tutoriales y muy bien hechos creo que muchos ya están muy desactualizados o bien siguen procesos y normas no muy útiles en la actualidad.

Esto puede ser un verdadero problema con un programador que recién empieza a conocer PHP y comprueba que cosas que leyó en un libro o en un blog ya no le funcionaran.

Pensando en esto escribiré algunos tips, que quizás pueden ser muy útiles para los que apenas están iniciando con PHP.

1.- Qué es PHP

Bueno PHP es un lenguaje de scripting interpretado es decir, se compila mientras se ejecuta, escrito en el año 1995 por Rasmus Lerdorf, originalmente creado como unas herramientas que permitan monitorear las visitas de su paginas web, escrito en C y Perl, de hecho originalmente su nombre PHP viene de PHP/FI, Personal Home Pages/Form Interpreter.

Posteriormente cuando tomó cierta popularidad, fue reescrito completamente en C por Zeev Suraski y Andi Gutmans en el año 1998, y de ahí surgió la versión 3.0 y a partir de ahí viene con un motor llamado Zend Engine el cual es el core del lenguaje como tal.

PHP siguió evolucionando hasta llegar al día de hoy a la versión 5.4 (stable), la cual nos entrega un lenguaje maduro, con amplio soporte a features actuales, como OOP, Namespaces, Webserver, Traits, clousures (lambda functions) el cual posee una gran comunidad de desarrolladores, patrocinado y desarrollado por Zend Inc.

2.-Para que sirve PHP
Basándonos en el punto anterior, básicamente podemos resumir en que PHP hoy en día en un lenguaje útil, actual y muy potente, el cual es nos puede dar amplias soluciones en el mundo web.

PHP nos sirve para el desarrollo de sitios, blogs, e-commerces, aplicaciones web, webservices y básicamente todo lo que tenga que ver con el protocolo HTTP y que puedas ver desde un navegador web o consumir mediante un webservices (JSON/REST, XML, SOAP).

Con PHP no podrás hacer aplicaciones de escritorio aunque es posible(con PHP-GTK) pero no se deberias, PHP fue hecho para Web.

3.- PHP es feo y sigue malas prácticas?

PHP es como lo dije anteriormente un lenguaje de scripting, y tu puedes escribir tu código como a ti te guste estructurado, orientado a objetos inclusive funcional, PHP no te obliga a usar un tipo de programación.

PHP tiene una genial guia para inciarse en el mundo de las buenas practicas, http://es.phptherightway.com/ (PHP la manera correcta) en donde podemos consultar muchas cosas para iniciar de la mejor manera con este maravilloso lenguaje.

Tambien tiene estandares de código los cuales se pueden consultar aqui https://github.com/php-fig/fig-standards/tree/master/accepted, los llamados PSR. Aunque siempre se acostumbra a manejar el standard que manejen en su proyecto

Continuara…

[Personal] Ajaxman …. Zend, English and more (in spanish)

Pues nada tenia mucho que no escribia y no por que no quisiera, si no por que ando muy ocupado, pero bueno queria pasar un rato por aqui a platicarles un poco que hecho y que estoy haciendo.

Pues nada, tengo media año trabajando como Senior Software Developer en Linio México, parte de Rocket-Internet GMBH, muy a gusto. Aqui he aprendido muchas cosas y desarrollado otras más, trabajamos con muchas tecnologias muy interesantes como Zend Framework, y muchas cosas asi.

Tambien he por mi trabajo, he tenido la oportunidad de empezar a estudiar ingles en Harmmon Hall, y voy bien “i think(yo creo)” jaja.

Y regresando al aspecto tecnologico he aprendido ultimamente sobre muchas tecnologias, las cuales me gustaria platicar en el blog, como mencione anteriormente, Zend Framework 1 y 2, Solr Engine, Nginx, MongoDB, Memcache, Xdebug, Socket.io, Node.js, Snv y Git, hasta ya de nuevo estaba a punto de sacar la certificación de PHP, pero entre poco ingles, poco tiempo y poco dinero jaja, pues aun no la hago.

En resumen espero en breve empezar a postear de nuevo, no tan frecuente pero al menos cosas bastante interesantes, o eso creo, entonces nos vemos hasta el siguiente post.

Tambien tengo un cupón de descuento en Linio.com.mx, donde trabajo, es el: LINjavl1105 por si gustan comprar, obtendran un atractivo descuento.

 

See you later!

[Musikli.com] El portal de letras de canciones, información musical, grupos de musica y más

Hola tanto tiempo sin postear, esto ya pasa más seguido, pero ahora si tengo una muy buena excusa.

Durante tiempo estuve trabajando en un proyecto, el cual originalmente fue liberado hace unos dias pero hoy es cuando lo presento oficialmente:

Musikli.com

Musikli, el cual ahora esta en fase beta(casi alpha), en este proyecto tenemos muchos objetivos, y metas a realizar, entonces musikli se reume en:

Un sencillo portal donde encontras, letras de canciones, albumnes, información general sobre artistas en la primera parte, posteriormente se tienen contempladas muchas interesantes y utiles mejoras, las cuales estaran siendo liberadas paulatinamente.

Actualmente ya es posible crear tu cuenta “Volverte FAN”, y agregar canciones de el artista que desees, ovbiamente hay pasa por un proceso de revisión antes de ser publicado. En un futuro como FAN podras hacer muchas mas cosas.

Tambien agregamos una cuenta de twitter  @musikli. la de Facebook, estamos en proceso, aunque ya existe facebook.com/musikli, digamos que la cuenta de Facebook esta en fase pre-alpha.


Les pido que la visiten la prueben, se registren y nos den un feedback sobre este interesante proyecto, aceptamos sugerencias de todo tipo, criticas, etc, inclusive si deseas participar apoyando de alguna otra forma(financiamento, formar parte del equipo), sera un placer contar con tus comentarios, para ello disponemos de la siguiente dirección de e-mail: contact@musikli.com

Espero que el proyecto sea interesante para todos, apoyanos y participa.

Javier
Fundador de Musikli.com

[Taller-PHP] Desarrollo de Aplicaciones Web con Kohana Framework

Pues otra vez aca posteando mucho trabajo y poco tiempo para postear jaja como siempre.

Solo que esta vez con buenas noticias, dare un Taller completamente gratis con el apoyo de la red Novatecas y las instalaciones de Telmexhub, el taller es sobre como empezar a programar y conocer las ventajas el Framework Kohana PHP Version 3.x.

Taller:

Desarrollo de Aplicaciones Web con Kohana Framework

  1. Introducción
    1. Conociendo el Framework y por que usarlo
    2. Ventajas
    3. Usando un IDE (Netbeans, Eclipse, Zend Studio)
  2. Getting started con Kohana
    1. Instalación
    2. Nuestro Primer programa
    3. La arquitectura de diseño MVC
      1. Modelo
      2. Modulos Database y ORM
      3. Vista
      4. Controlador
  3. Creando un Blog con Kohana
    1. Creando nuestros controladores modelos y vistas
    2. Conociendo el paradigma HMVC
    3. Agregando el Panel de control
    4. Conociendo el modulo A1 para autenticacion
    5. Entornos de programación con Kohana
  4. Retroalimentación
    1. Que tanto puedo hacer con Kohana
    2. Quienes usan kohana
    3. Como puedo ampliar sus funcionalidades

Requisitos:

(más…)

[PHP] Usando el modulo de autenticación Kohana A1

Kohana A1, es un modulo de kohana el cual nos permite implementar de una forma efectiva, potente y clara, un sistema de autenticación, de una forma fácil y sencilla.

Antes de empezar a usarlo es importante considerar que el modulo usa la el constructor crypt de PHP pero usando como hash CRYPT_BLOWFISH, esto no afecta si estas usando PHP 5.3, pero si tienes este inconveniente al final del post pondré como solucionarlo(o cambiarte de hosting a uno mas actualizado).

Vamos a ver como usarlo para hacer un login.

Requisitos:

  • Kohana 3.2
  • Kohana A1 module
  • Kohana ORM
  • Kohana Database

Como dicen los requisitos para usar A1 debemos de estar conectados a una base de datos, también debemos de tener un modulo que abstraiga dicha base de datos, para esto podemos usar Kohana ORM, Automodeler, Jelly, Sprig o entre otros, si estamos haciendo pruebas yo recomiendo usar Kohana ORM, y ya en base a sus requerimientos y necesidades usar el que mas les agrade.

Instalamos kohana de modo que quede en http://localhost/kohana1/ ,creamos una base de datos yo la llamare, “system” y le pondré como datos de conexión ultra-seguros user:root password:root, recuerden activar el modulo database y ORM.

Y posteriormente nos toca, agregar el siguiente código SQL a nuestra base de datos, obviamente lo pueden modificar a su gusto, aunque de momento dejémoslo así.

Ahora procedemos a bajar el modulo A1, que esta aquí: https://github.com/Wouterrr/A1/

Y lo ponemos en nuestro carpeta modules nombrando a la carpeta A1 de modo que quedara asi “modules/A1″.Dentro de dicha “modules/A1″ hay una carpeta config y dentro de ella un archivo llamado a1.php, bien este archivo es el archivo de configuración del modulo Kohana A1, de igual forma que se hace con todos los módulos hay que copiar este archivo a “application/config/” para poder editarlo y que no afecte directamente al modulo.

El archivo se ve de la siguiente forma:

Aquí pongo la descripción de cada elemento:

  • driver: EL ORM que usara (ORM,jelly,mango,sprig[se pueden agregar mas pero hay que modificar el modulo o extenderlo])
  • user_model: tabla(modelo) que se usara ‘user’
  • cost: fuerza (tamaño de la clave) entre 4 y 31, lo ideal es 12, si ponen un numero muy grande tomar en cuenta que consumirá mas recursos.
  • cookie: los datos de la cookie que generara a1, para hacer el login(nombre y duración)
  • columns: aquí le estamos asignando a los items de A1, las columnas de la base de datos, es decir si en su base de datos el nombre de usuarios están en el campo nombre, tendrán que poner ‘username’ => ‘nombre’, modificando lo que esta en el array, los campos opcionales de momento no los usaremos, aunque cabe señalar que solo guardan información extra.
  • session: Aquí es donde definimos el tipo de sesión, de momento y regularmente bastara con dejarlo como esta, si su aplicación correrá en varios servidores conviene ponerlo en modo database(aunque en este caso hay que hacer un par de cosas mas, espero postear pronto sobre esto)

.

No se les olvide activar le modulo en el bootstrap, el cual en la sección módulos debería verse así:
(más…)

[PHP] El patrón de diseño (o antipatrón) singleton vs Inyección de dependencias ¿Que debo usar?

PHP es un lenguaje con el cual podemos usar herramientas avanzadas de desarrollo, algunas de estas herramientas son los patrones de diseño (Design Patterns),regularmente cuando empezamos a adentrarnos a esto de los patrones de diseño, uno de los primeros patrones que empezamos a usar es el patrón singleton, el cual garantiza un único acceso a cierto clase como una base de datos la implementación que yo uso/usaba es la siguiente:

En la primera clase tenemos la implementación del singleton, y en la segunda clase en el constructor estamos llamando al singleton, sin embargo, caemos en una mala practica, la cual si vemos Mysql::getInstance() es como si fuera una llamada a una clase estática global, la cual es como si estuviéramos usando variables globales, lo cual es totalmente desaconsejado de usar, como comentan en mundogeek por las siguientes cosas:

  • El código es más difícil de entender
  • El código es más difícil de depurar
  • El código es más difícil de testear
  • El código es más difícil de mantener
  • El código es más difícil de reutilizar
  • Las variables globales matan gatitos

Extraído de: http://mundogeek.net/archivos/2011/07/12/variables-globales/

Entonces vemos que a pesar que de es posible usar Singleton no deberíamos de usarlo, solo en casos muy excepcionales, aunque es mejor buscar algún otro patrón de diseño.
(más…)

[Taller-Kohana] Taller relampago de Kohana PHP en streaming

Kohana PHP, es el framework que como bien saben me gusta mucho por muchas cosas, y en esta ocasión el conocer sobre kohana me ha dado una nueva experiencia, en este caso se trató de dar una platica “rápida” vía streaming a programadores  PHP, principalmente de Colombia aunque claro estaba dirigida para todo el que quisiera.

La verdad me gustó mucho aunque creo que me extendí demasiado, total que terminamos en 1 hora y media, pero aun así mi temario que tenía preparado no se terminó, llegue como a la mitad, aunque trate de sentar las bases del framework y estoy en espera de que si lo solicitan puede haber una parte dos.

Iniciamos con una breve introducción de unos cuantos slides, en donde aborde conceptos básicos del framework, como POO, MVC, HMVC, Cascading Files, entre otros, posteriormente pasamos a bajar el framework he instalarlo, de ahí nos pusimos a revisar el bootstrap, y crear nuestro !Hello World!, también comentamos sobre los módulos, y activamos los módulos de Database y ORM, he hicimos un modelo y una vista para hacer consultas desde nuestro controlador.

(más…)

[Ajaxman] Nuevos rumbos, más programacion y proyectos

Hola los saludo a todos de nuevo, como dije alguna vez el blog siempre seguirá arriba.

Les  platico un poco de que ha sido de mi durante este paro de labores(blog).

Primero lo mas importante hace 2 meses fui papa por segunda vez, en esta ocasión de una niña hermosa llamada Avril.

Mi hijo angel ya sabe usar paint(windows) y tuxpaint(Debian linux) y al parecer le gusta la informática, los números, las letras,los colores.

También hace dias cumpli  3 años de casado y feliz.

También, pasaron otras cosas como cambio de trabajo, y en lo profesional empecé a interesarme aun mas en PHP y las best practiques  como refactorización, más OOP, namespaces, TDD, DRY, KISS, SOLID, DI, y hasta integración continua, si bien aun me falta mucho por aprender(y no conozco todo eso pero me gustaría) estoy esforzándome en llevar esto a la practica.

Conoci git y github(Control de versiones) y me gusta mucho usarlo, y recomendarlo.

Entonces que es lo que viene, bueno de momento, el miércoles tengo una sesión relámpago de kohana via streaming para México y Colombia, también en breve anunciare la fecha del taller de Kohana en telmexhub(esta en proceso), también vienen más proyectos en mente pero el más próximo es que es probable que en el siguiente año forme mi empresa (Desarrollo web con alta calidad (Q&A)), y quizas hasta lance un libro sobre kohana en español, en fin muchos proyectos, poco a poco informare de cada uno de ellos, de momento mi primer pendiente es retomar el blog, eso si no prometo postear mucho pero eso si contenido de calidad e interesante buen eso tratare.

En fin, muchas cosas se vienen ojala les gusten, y de paso si quieren saber más sobre todo esto o desean algún servicio (freelance), no duden en contactarme, ya sea en el contacto o por mi twitter  @ajaxman

Ha y gracias por seguir visitando el blog

[PHP] Una forma forma simple de usar Urls amigables

Las urls amigables son indispensables en el desarrollo de aplicaciones web, y con PHP no supone mayor inconveniente el implementarlas salvo configurar bien el servidor (Apache + ModRewrite, Ngix, Lighttp, IIS).

Sin embargo hay una tecnica bastante usada que a veces muchos desconocemos y esta usar la url, pero usando el nombre del archivo o script que estamos procesando esto es.

Si nuestra url es asi:

www.ajaxman.net/index.php?post=15&name=PHP-en-la-web

Podremos tener urls amigables sin necesidad de usar Modrewrite en Apache o sin necesidad de configurar nada de la siguiente forma.

www.ajaxman.net/index.php/PHP-en-la-web/15.html

Como vemos esta url si la indexaria Google y los demas buscadores, pero no hubo necesidad de configurar nada, entonces ello nos daria un buen posicionamiento, por ejemplo si buscamos automoviles en mexico o computadoras en Monterrey, podriamos usar este texto como parte de la url sin meternos en problemas con el servidor.

Ahora bien para tomar esta variable es muy facil, solo basta con usar la siguiente variable del servidor.

Si ejecutamos el codigo anterior veremos que nos arrojara lo siguiente (usando la url de ejemplo de arriba)

string(22) “/PHP-en-la-web/15.html”

Como vemos usando simplemente esta variable del servidor podemos obtener la url que le enviamos y posteriormente procesarla para lanzar nuestro controlador o clase que deseemos.

Como recomendacion nunca reciban el parametro para incluir ese mismo archivo algo asi

Podremos tener urls amigables sin necesidad de usar Modrewrite en Apache o sin necesidad de configurar nada de la siguiente forma.

www.ajaxman.net/index.php/productos_15.php // Que invocaria al archivo productos_15.php

Pero el cual puede ser un grave fallo de seguridad y puede dar lugar a que nos inyecten codigo en nuestra aplicación.

Bueno este solo fue un tip y ya me extendi como siempre, pronto mas posts sobre kohana php, y sobre como enlazarlo con el sistema de plantillas twig, el ORM Doctrine y tambien intentare mejorar un modulo de kohana para usar Zend Search Lucene, pero luego les platico más.

[Kohana PHP] EL QueryBuilder de Kohana PHP Parte I, Uso de DB::Query()

El framework Kohana PHP, aparte de poseer un interesante y muy completo ORM, tiene otra opción que nos permite mejorar nuestras consultas a la base de datos.

Este se llama QueryBuilder, el cual como su nombre lo indica es un constructor de consultas.

En el post anterior, comente como usar el ORM de kohana, el cual como vemos nos ahorra mucho trabajo y nos permite hacer consultas complejas mediante el uso de la orientación a objetos, sin embargo no todo es tan maravilloso como suena, una de las cosas mas contraproducentes que tiene este y la mayoría de ORM’s es la siguiente.

Ejemplo de lo que sucede al hacer una consulta usando el ORM

Como vemos por default, nos esta haciendo un select *, esta consulta puede afectar seriamente nuestro rendimiento cuando nuestra tabla contiene muchos registro o muchos campos, además de que cuando tenemos tablas con un campo ambiguo, hacer funcionar bien el ORM puede darnos varios dolores de cabeza.

Los desarrolladores de kohana, antes de lanzar el ORM, crearon un constructor de consultas, el cual nos da toda la potencia de el lenguaje SQL, pero usando técnicas de orientación a objetos usando PHP.

Para usarla lo haremos configurando todo lo necesario como lo hicimos en el post anterior, y crearemos los querys de la siguiente forma.

* Uso de método estático DB::query()

Esta es una de las herramientas mas completas que tenemos dentro del QueryBuilder, básicamente es un método estático en donde recibe dos parámetros, el primero de tipo integer que en realidad es una constante de la clase Database, en donde le indicamos que tipo de consulta haremos( select, delete, insert, update), veamos su equivalencia.

El segundo parámetro es string donde indicamos la consulta que necesitemos hacer la cual puede incluir algunas variables las cuales estarán indicadas mediante dos puntos y el nombre de variable, el cual no tiene nada que ver con las variables de PHP, y posteriormente se le puede indicar el valor de dicha variable mediante el método param, parameters o bind.

Veamos como quedarí­a una consulta normal

Pero aun no tenemos terminada nuestra consulta, para que se ejecute debemos especificarlo explícitamente mediante el método execute.
Veamos algunos ejemplos de como usar lo que hemos visto en un query complejo y algunas variantes de como hacer esto.

(más…)