Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

domingo, 27 de septiembre de 2015

En esta entrada hablaremos sobre como manejar websockets desde php utilizando PHPSocketMaster, una librería que permite manejar tanto sockets como websockets. También explicaremos un poco como utilizar sockets comunes.


Los sockets son mecanismos de conexión y comunicación entre dos pc, todos los lenguajes de programación que conozco tienen algún tipo de soporte para manejar sockets. Los sockets trabajan con la metodología Cliente-Servidor, es decir uno de los sockets se conecta a otro (el cliente) y el otro socket recibe la conexión (El que sirve o servidor), generalmente el segundo tiene la facultad de aceptar más de una conexión, trabaja aceptando la conexión entrante y derivandola a un segundo socket que mantenga la conexion, reciba los mensajes, y responda, liberando el primero para aceptar nuevas conexiones y deribarlas a otros.

PHPSocketMaster es una librería de autoría propia que permite trabajar con sockets en php, tanto websockets como comunes, es decir mi librería permite conectarse a un programa hecho en otro lenguaje, o aceptar conexiones de otros programas o desde un websocket.

¿Cual es la diferencia entre un socket común y un websocket?, los websockets en realidad son sockets comunes que incluyen un protocolo de encriptación y handshake (es decir que todos los mensajes van encriptados y recorren un protocolo particular llamado websocket).

Aquí está el repositorio de la librería con la última versión estable.

La documentación, es muy extensa y explica bien como utilizar cada parte. (50% ingles, español completo).

Un socket puede estar en dos modos, como cliente para conectarse a otra pc, o como servidor a la escucha de conexiones de otra pc (es decir esperando que otra pc se conecte).

Si nosotros queremos crear un cliente es muy sencillo, incluimos la librería, y extendemos el PHPSocketMaster, aquí esta la documentacion y además hay ejemplos en la carpeta examples.

En terminos generales lo que hacemos es extender la clase principal creando una clase nueva que va a ser nuestro sockets, al estar orientado a eventos, nosotros tenemos que escribir las funciones de eventos en nuestra clase, y poner lo que hará nuestro codigo cuando ocurra cada uno de los eventos.
La lista de eventos se puede ver aquí. Dentro de nuestra clase escribimos lo que hará nuestro cliente al conectarse a algo.

Generalmente podemos conectarlo a servidores de distintas cosas, siempre que tengamos el protocolo correspondiente podemos conectarlo a un chat irc, o hacer una petición HTTP, incluso podemos conectarlo a los servidores de whatsapp (si conseguimos su protocolo).
Lamentablemente, PHPSocketMaster no soporta crear un cliente websocket (es decir no podemos hacernos pasar por un cliente web).

Luego si nosotros queremos crear un servidor es muy simple, hay que extender dos clases, la primera es la del socket que recibe las conexiones, como expliqué antes, este recibirá las conexiones entrantes y las derivará a socokets secundarios. Luego debemos extender la clase de los sockets que recibirán cada conexion, donde pondremos que pasará con cada uno de ellos.
Aquí está la documentación, y también hay ejemplos en la carpeta examples.

Para finalizar si quiciesemos crear un servidor que hacepte websockets, es mucho más sencillo, al servidor normal solo hay que agregarle una constante, y listo.
Aquí está la documentación.

Para simplificar las cosas cuando se trata de servidores, se me ocurrió crear una clase que se encarge de gestionar y controlar los sockets, porque el mayor problema en los servidores es poder organizar y controlar todos los sockets. Puedes ver el repositorio de esta librería aquí, también tiene ejemplos y requiere que se incluya PHPSocketMaster.

Si quieres saber qué se podría hacer con websockets para tener una idea, se puede crear un cliente de pocker multijugador en tiempo real, como éste, o crear un servidor de chat como aremos en esta serie de entradas, incluso podemos crear un servidor web como apache en php tranquilamente, o un servidor de XMPP, o cualquier otra cosa que utilice sockets, que a fin de cuentas es casi todo.

Saludos para todos! espero les haya gustado y estén atentos a nuevas entradas donde publicaremos como utilizar los sockets desde javascript para conectarnos a un server en php, y luego desarrollaremos un proyecto ejemplo donde crearemos un servidor de chat.

jueves, 17 de septiembre de 2015


Hace ya tiempo que no creaba una entrada, pero decidí volver a darle un poquito de énfasis a mi blog, y de paso explicar un poco de las tecnologías que estoy utilizando hoy en día.

En esta entrada haremos una breve introducción a websockets, para luego crear una serie de entradas a modo "manual" del usuario de websockets.

Internet con el paso del tiempo fué avanzando en lo que es tecnología y fué implementando nuevas herramientas, una de las cosas que se enseñan de entrada cuando uno aprende a desarrollar web, es que el protocolo por el que se rigen los servidores web es HTTP y es un protocolo sin estado, ¿Qué quiere decir?, en términos simples podemos creer que nos está diciendo que http no se mantiene en el tiempo y no tiene un estado que varía en el mismo, HTTP es un protocolo simple donde con una cabecera se exige un recurso, el servidor procesa el recurso y lo entrega dando por finalizada la conexión, es decir, no se mantiene nada en ejecución ni nada por el estilo.

jueves, 5 de febrero de 2015

En la entrada de hoy hablaremos sobre aiml, un pequeño modelo para almacenar conocimientos de inteligencia artificial en nuetros bots.



Aiml permite el almacenamiento de conocimientos en grupos de topics, para ubicarlos mediante patrones.
En éste documento hablaremos sobre el formato de un documento aiml (basados en xml) y todas sus características.

Descarga Aquí

Saludos!

viernes, 24 de octubre de 2014

Buenas tardes lectores, en esta entrada (la nº 100) pensaba hacer algo diferente, por lo que realizaré una entrevista a Cody Roodaka, desarrollador de un framework (PHPmini) orientado a objetos en php, el framework aún no es público pero considero que será un gran framework, que realmente vale la pena ver.

El framework entre otras prestaciones tiene la capacidad de implementar componentes que den soporte mejorado a las aplicaciones diarias que se desarrollen, y utiliza una versión alterada de MVC.

Sin más pasemos a las preguntas.

¿Por qué razón se te dio por desarrollar un framework?

Pues, principalmente por necesidad e inconformidad. Originalmente inicié el Framework habiéndome frustrado en la búsqueda de un núcleo adecuado para tres proyectos personales.
Requería de algo que me permitiera programar cómodo, pero que no me limite en funcionalidad y flexibilidad, o que represente exceso de consumo de RAM injustificado. No me agradaron completamente los Frameworks más conocidos como CodeIgniter y Kohana, por lo que decidí construir (en primera instancia, de manera privada) el mío propio.

¿Ha sido una tarea dura/larga?

Pues, si bien no me surgieron problemas serios, el Framework sufrió reescritura tras reescritura, ya sea porque no me convence algo, u olvidé algún concepto, siempre renuevo su código -y la de todos sus componentes- para acercarme más a lo que quiero lograr; algo complejo, ligero y relativamente fácil de usar.
Algo que he de destacar es que quiero programar sin mirar el código de nadie más. Sí he escuchado, analizado y escrito conceptos complejos de Alexander, Ignacio Rostagno y otros programadores, pero sin mirar su código o preguntarles cómo lo harían. Y no fue hasta que le mostré el progreso a Alexander que mantuve esa ideología. Esto lo hago tanto por mera auto-superación, como por la búsqueda de un funcionar "único".

¿Cuál es la ventaja de tu framework contra los populares frameworks actuales (como yii, codeigniter, etc.)?

Buena pregunta. Todos son buenas bases para comenzar a programar, Pero muchos dejan atrás extensibilidad, flexibilidad y facilidad de uso por una mayor complejidad. A mi parecer, ese es un error gravísimo ya que la esencia de un framework es reducir el tiempo de desarrollo, y si para comenzar a crear una aplicación tengo que aprender a usar dicho framework como si programara en otro lenguaje, deja de ser redituable.
Mi punto de vista con respecto a la pregunta en concreto, es que mi framework apunta a ser utilizado con facilidad y comodidad.

¿Cuándo crees que estará publicada al menos la primer versión?

Mi meta personal es que para Noviembre del corriente año, el Framework ya esté dentro de un repositorio público en Github.

¿Qué nivel de seguridad crees que tenga tu framework para con ataques conocidos como rfi, lfi, sqli, xss, etc.?

Por suerte, mis conocimientos y amigos en el tema, como Alexander y Ernesto me permiten saber dónde y qué reforzar en materia de Seguridad. He de considerarle, modestias aparte, Seguro.
De por sí, la estructura del Framework inhibe LFI y RFI, y el funcionamiento de mi librería de bases de datos valida por sí misma todas las entradas.

¿Cuáles crees que sean los puntos débiles de tu framework?

Siempre hay cosas que mejorar, Alex, lo sabes. Opino que aún está muy verde como para decir "hay una falencia X". Además, no he hecho las pruebas que me permitan saber esa clase de cosas. Por otro lado, supongo que eso saldrá a la luz cuando sea probado por terceros.

¿Cómo maneja las vistas tu framework?, en algunos frameworks como codeigniter no cuentan con gestor de plantillas

Las vistas fueron uno de los muchos dolores de cabeza que he tenido. No quería poner a RainTPL y ya, eso no tenía razón de ser. Quería algo más dinámico, algo realmente útil.
Cuando comencé a plantearme la idea, me enfoqué en la Modularidad, tanto de CSS como de JS para lograr ese anhelado dinamismo. El componente por sí mismo actúa como Gestor de Plantillas, Archivos CSS, JS y de idiomas con una sencilla implementación que, a mi parecer, es muy cómoda.
Algo a destacar también, es su versatilidad a la hora de trabajar con AJAX.

Para ir cerrando la entrevista, ¿Qué opinas del blog std-io.com?

Pues, como siempre dije, el blog reboza de información que supera mis conocimientos. Te has esmerado mucho con su desarrollo y te ha ido estupendamente. Mis más sinceras felicitaciones, amigo.

Agradecemos desde ya tu predisposición a responder nuestras preguntas, y agradecemos la colaboración a nuestro blog.

Muy bien, ahora que respondió nuestras preguntas daré mi franca opinión, tuve la suerte de poder ver el código que está en desarrollo, y en una entrada anterior explicaba por qué los frameworks son horribles, este framework en particular tiene la flexibilidad necesaria para no contradecir conceptos básicos como lo es la esencia de objetos en poo.

Yo creo que deben probarlo, RainTPL (su gestor de plantillas) cuenta con un sistema de cacheado y además deja una vista clara y limpia, muy ordenada. La forma de manejar los modelos es muy buena, y los controladores no dejan nada que desear. Considero un framework limpio, claro con sus objetivos, minimalista que no consume casi recursos, muy bien estructurado, y recomendable.

Estaré esperando su lanzamiento, y les recomiendo que lo prueben.

Saludos! nos veremos en la próxima entrada :)

jueves, 16 de octubre de 2014

Buenas tardes lectores, mientras espero para ver el lanzamiento del satelite geoestacionario argentino arsat-1, voy a escribir una publicación para compartir mi manual para trabajar con sockets en php.


En este manual utilizaremos la librería PHPSocketMaster que pueden ver su repositorio oficial aquí, para realizar clientes, servidores y servidores para websockets en php, entre otras cosas.

domingo, 12 de octubre de 2014

Buenas tardes lectores, hoy quiero hablar de un tema que resulta sin darme cuenta es algo importante para mi como programador, la elección de un lenguaje de programación es una de las cosas más importantes en la vida de un programador, y hoy les traigo la razón por la que yo programo en php.


Quizá es un tema relativamente recurrente en mi blog ya que en entradas anteriores publiqué mi decisión definitiva de cambiar de lenguaje que pueden ver en este enlace, entonces ¿Por qué no cambié?


sábado, 11 de octubre de 2014

Buenas tardes lectores, el otro día estaba pensando en razón de (creo) una charla que tuve con un amigo y me cuestioné la utilidad de este patrón de diseño MVC, ya que resulta que suele ser el as bajo la manga de cualquier programador en php para decir que su código responde a un patrón que le asegura la robustez



Desde ya que decir que el patrón mvc asegura la robustez en un código es una falacia, mvc aplicado a la web es una total mentira y ahora explicaremos el porqué de esto.

viernes, 10 de octubre de 2014

Buenas tardes lectores, les traigo aquí el fruto de mi esfuerzo, hace un par de días publiqué una entrada en la cual dejaba un enlace a una web de buenas prácticas en php (ver entrada aquí) y decidí que era un muy buen material que me gustaría que estuviera en nuestro idioma, por lo que puse manos a la obra y a traducir.


jueves, 9 de octubre de 2014

Buenas tardes, los que me conocen y siguen el blog sabrán que rara vez publico código, pero hoy traigo un proyecto que me llevó bastante tiempo y me costó un poquito realizar y me gustaría compartir con ustedes.


El proyecto lo comencé, porque desde que hice las distintas versiones de mi bot de irc en php, siempre tuve la mala suerte de decidir crear nuevas clases una y otra vez para manipular los sockets ya que ninguna me convencía pero no deceaba perder demaciado tiempo en el desarrollo de una clase manipuladora de sockets siendo mi proyecto en realidad un bot para irc.

miércoles, 8 de octubre de 2014

Buenas tardes lectores, hoy traigo algo muy interesante que me llamó la atención, es un blog que publican las "buenas prácticas" para programar en php.-

¿Con qué me refiero a buenas prácticas? al hecho de poner " o ', en que situaciones usar cada una, cuando usar o no tal o cual cosa, el punto es que aprendas como programar de buena manera para que tu código cumpla los requisitos básicos para empezar a pensar en calidad de software.

Buenas tardes lectores, le estoy sacando un jugo bárbaro a mi paper de programación orientada a objetos y hoy publicaré algo que noté tratando de utilizar un framework muy conocido y uno de los que se concideran mejorcitos, como en un par de entradas anteriores saco este texto de mi paper que pueden descargar desde la sección de nuestros pdfs.


martes, 7 de octubre de 2014



Buenas tardes, hoy traigo otra publicación extraída de mi paper de programación orientada a objetos, que pueden ver y descargar desde la sección de nuestros pdfs.


Algo sumamente interesante que encontré en python y que no había visto en php son los wrappers, los wrappers son una forma de trabajar muy particular, donde si hay una cierta cantidad de funciones que realizan una cierta tarea ya sea de validado de parámetros o lo que sea, se quita el código de cada una de las funciones y se lo mete en una función extra, luego se llama a esa función y se le pasa como parámetro la función particular que requiere de estas tareas.

lunes, 6 de octubre de 2014

Desde hacía bastante tiempo que quería publicar mi opinión sobre singleton, y hoy aquí está, quiero agregar que este texto es parte de un paper que publiqué hace unos días llamado Programación orientada a objetos en php (puedes verlo en la lista de nuestros pdf).




Singleton es una forma de manejar las clases, que evita la creación de múltiples instancias, en cualquier momento uno puede obtener la instancia que se creó originalmente, de modo que en cualquier lugar tienes acceso a la instancia, sin necesidad de ir llevando la variable que tiene la instancia de un lugar al otro, simplemente se adquiere la instancia utilizando una función estática.
Buenas tardes a todos los lectores, hace mucho no publicaba nada, pero hoy decidí desarrollar y llevar adelante un nuevo pdf sobre programación orientada a objetos.


Hablaremos sobre varias cosas, además de una introducción para iniciados en el tema de la programación orientada a objetos hablaremos sobre la falencia de Singleton, y el error que representa, sobre Wrappers, mi property nunca puede faltar, sobre Factory en php, y sobre el gran problema que tienen hoy en día los framewroks (referido al gran error que tienen en el concepto de programación orientada a objetos)

jueves, 5 de diciembre de 2013

Buenas tardes queridos lectores, bienvenidos a otra entrada de mi blog de programación...
Seguro que me deben de haber visto publicar cosas como que a mi php me interesa porque simplemente paso el tiempo haciendo a algunas aplicaciones interesantes...

Hoy quiero publicar una entrada que marca el final de php, hoy estaba viendo unos códigos de Haskell (muy interesante lenguaje de programación, un mundo diferente para ser sincero), y recordé que hoy ya no tengo muchos motivos para programar en php, si bien es un lenguaje que me agradó durante un tiempo, hoy en día considero que no vale la pena seguir haciendo monstruitos jajaja.-

martes, 3 de diciembre de 2013

Buenas! como andan? como habrán leido en la publicación de josé ando medio ocupado, tengo que estudiar para el ingreso a la universidad, pero no puedo con mi genio y tenía que ponerme a hacer algo jajaja.
Hoy traigo un experimento que hice en base a la idea de un BlockClosure (bloque de ejecución diferida) que quería agregar a mi modelo de componentes en php


Bueno la cosa es simple, creo dos clases y hago que una hable con la otra, como si fuesen dos personas.

jueves, 28 de noviembre de 2013

Buenas tardes, el otro día andaba en el colectivo y me surgió una idea de como crear tipos en php y realmente por qué hacerlo?

Antes que nada, voy a aclarar que esto es una idea tipo "pasatiempo" realmente no me puse seriamente a planificar la idea, aunque no me parece mala, pero tampoco me parece una muy buena idea.

En php los tipos son manejados por el intérprete automáticamente, y se puede evaluar el tipo de dato usando un Triple Igual (===).
No obstante la falta de especificación de dichos tipos, a diferencia de otros lenguajes, en un aspecto puede llegar a ser interesante, pero en otro genera un problema que nunca antes se había dado, principalmente porque disminuye la seguridad en un lenguaje tan flexible.

miércoles, 27 de noviembre de 2013

Esto ya lo había publicado como hace un mes, pero nunca lo puse en el blog asique aquí está.



El objetivo de este código es hacer "hablar a la computadora un texto", y que se escuche con un sintetizador. Es decir para todos los fanáticos de loquendo y textSpeech (escribir un texto y que la pc lo hable) acá tenemos mi código en php con su voz marica, que dice lo que ponemos en una variable.

Hola, buenas tardes a todos, esta entrada la hago en base a la petición de CrazyKade de que explique mi idea sobre la utilización de eval como una shell.

Para ésto realizé un documento en PDF y lo subí a scribd.
Pueden verlo a continuación...

martes, 26 de noviembre de 2013

Buenas! lectores queridos y no tan queridos, hoy dejo una nueva entrada en mi blog referente a uno de mis proyectos en los que trabajo, resulta que mi proyecto consta de crear un editor de mapas para un juego basado prácticamente en html y Jquery.

Esta imagen fue generada por mi navegador (chrome) lo probé en firefox que lo uso siempre pero mi forma de crear los mosaicos no funciona en firefox y queda una cosa fea.
La idea era armar una tabla de cuadros de 16x16 que sean completados con "mosaicos" que nos permitan graficas habitaciones o paisajes o mapas en realidad.
Subscribete al RSS Follow me on Twitter!