jueves, 23 de enero de 2014

Crear una sesion en 2 dominos distintos con PHP y Curl no es posible (creo)


Siempre se da la ocasión que necesitas crear una sesión en una aplicación y al mismo tiempo tiene que crearse una sesión para el mismo usuario en otro sistema en otro dominio, porque de alguna manera comparten datos o cosas por el estilo.

Para hacer esto podemos hacer uso de http://enable-cors.org/ que permite comunicación entre dos dominios distintos. Otra forma de hacer esto es usando JSONP , que no es mas que un simple truco para superar las restricciones de "same domain policy" en peticiones Ajax.

Pero hoy quiero hablar de tratar de crear una sesión desde PHP usando Curl , Curl nos permite hacer peticiones a una URL desde PHP y recibir los datos en el mismo script. Lo lógico de pensar  es que si puedo hacer una petición desde PHP y enviar parámetros en la petición, entonces puedo enviar las credenciales del usuario al mismo tiempo para crear la sesión en 2 sistemas distintos.

Bueno en teoría si funciona, el script al que hagas la petición desde PHP recibirá los datos y responderá como se espera pero lo que no funciona es al momento de crear la sesión. Si tratas de crear la sesión usando JSONP enviando los datos en la query string funcionara perfectamente pero con Curl no funcionara.
El problema es con la identificación de la sesión, normalmente cuando tu inicias una sesión con PHP se crea un identificador único el cual luego es pasado a nuestro navegador en forma de cookie ó GET , ese identificador es guardado en el servidor y la próxima vez  que un script llama a  "session_start()" PHP verifica ese  identificador en el servidor, si lo encuentra entonces hay una sesión creada. En caso de no encontrar el identificador de la sesión PHP creara uno nuevo.

Entonces la petición Curl no puede recibir el identificador de la sesión que se creo en PHP , por lo tanto cuando visitas el sitio B  no existe el identificador en el servidor para tu navegador. Este comportamiento no pasa con JSONP.

Puedes hacer pruebas usando las funciones session_name() , session_id() de PHP y podrás comprobar que los identificadores de las sesión no son los mismos usando Curl en el sitio A y B.

He leído en algunas paginas que puedes pasar el identificador se sesion del sitio A al B en los parámetros para usar el mismo ID, pero no lo he llegado a comprobar no tengo idea de como hacerlo. No soy un experto en PHP si me he equivocado por favor corríjanme para poder aprender también.

He escrito esta entrada  por si alguna persona también tuvo la idea como yo de usar Curl para crear sesiones y no tiene idea de por que no funciona.



http://saulburgos.com/books/googlemaps.html



lunes, 20 de enero de 2014

Que es un OKR ? ( Objective and Key Result )

No tenia idea de que diablos era un OKR , pero en este video los chicos de mejorando.la queda muy bien explicado. Hasta ahora me estoy dando cuenta de la buena herramienta que son. Esta es una corta definicion sacada de la web de mejorando.la.

" La idea de los OKRs es manejar objetivos personales medibles y enfocados a la visión de la empresa. Los OKRs deben ser públicos, y su función será medir el crecimiento a nivel de empleado, equipo u organización. "

Y aqui el video:


Link : https://mejorando.la/

viernes, 17 de enero de 2014

Explicacion como trabaja la programacion orientada a objetos en javascript

El siguiente es un video donde explican detalladamente como funcion la programacion orientada a objetos ( OOP ) en Javascript , mejor explicacion no puedes conseguir. Recomendado en caso que no sepas como trabaja o simplemente quieras reafirmar tus conocimientos.

Bueno el unico problema es que esta en ingles, pero si habilitas los subtitulos y con la ayuda de google translate podras entenderlo sin problemas. No olvides visitar el link de la pagina oficial , por que ofrecen una herramienta para visualizacion de objectos muy buena donde puedes practicar y ver como tus objectos estan formados y su herencia.









miércoles, 15 de enero de 2014

Como comunicar 2 iframe con diferentes dominios

Mas que escribir un tutorial sobre este tema quiero compartir los link donde yo he encontrado la respuesta a esta duda, basicamente existe una nueva API window.postMessage que permite enviar eventos desde dentro de un iframe hacia su padre contendor.

Los publico por que me fue muy dificil encontrar estos link y quiero ayudar a otros con el mismo problema.

En el siguiente link podras encontrar una explicacion detallada de como funciona este metodo cuando no usamos la API HTML5

 http://softwareas.com/cross-domain-communication-with-iframes

Este es la definicion de la API :

https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

Aqui un tutorial de como usar la API

http://davidwalsh.name/window-postmessage

Los mejores 100 codigos de Codepen del 2013

El sitio Codepen ha publicado sus 100 mejores codigos publicados del 2013 basado en un algoritmo ninja que ellos tienen. Recomiendo revisar la lista por que hay unos experimentos realmente interesantes que puedes reutilizar en tus propios sitios web, como por ejemplo butones, loader, menus , ect.

link: http://codepen.io/2013/popular


Utilisima herramienta para crear screenshot de tus web Apps





Piensa en esta situacion :

Pasas el tiempo programando una aplicacion web super cool y ahora quieres presentarla a tu audiencia de una forma muy atractiva en situaciones comunes de la vida real y en un determinado dispositivo. Bueno lo primero que piensas es en bajar un template photoshop de un iphone por ejemplo y hacer el montaje tu mismo como por ejemplo en este link : http://365psd.com/day/2-219/

Bueno supongamos que no quieres hacer el montaje tu mismo ó que no sabes como usar photoshop, la verdad que no hay mucho que hacer en estas situacion hasta ahora.

Les presento : Placeit.net una herramienta para hacer este tipo de montajes automaticamente por ti, solo tienes que subir tu imagen y seleccionar el tipo de situacion de la vida cotidiana que mas te guste, pero eso no es todo tambien puedes usar la url de tu sitio web y placeit.net automaticamente creara un screenshot de tu sitio web, y el resultado es muy bueno.

Por ejemplo la imagen de presentacion de esta entrada es de este blog, ha quedado super cool aah? El servicio ofrece una opcion gratuita y de pago.

link : https://placeit.net/#!/stages/listening-music-black-iphone-4

Interesante concepto de tienda online para vender tus productos conoce : Junkstr

La idea de vender productos en linea no ha cambiado nada en los ultimos años, es por eso que esta idea me ha gustado mucho. Basicamente replica la venta por lotes de productos en la web, la misma dinamica usada en los mercados de pulgas.

El proyecto fue desarrollado pro Patricio VidalRodolfo Berríos , desde mi blog los felicito por su idea me parece muy util. Para saber mas sobre como function Junkstr mira el siguiente video. ( por cierto me gusta mucho el nombre )



Ttambien tienes la opcion de que puedes regalar un articulo, me parece excelente.

Link : http://www.fayerwayer.com/2014/01/junkstr-vende-tus-cachureos-por-lotes-fw-startups/

viernes, 27 de diciembre de 2013

Video tutorial introduccion a Google Maps API

Si alguna vez te ha interesado en crear mapas para tu sitios webs en Google Developers han publicado 4 vídeos introductorios sobre la API de Google Maps, aunque están en ingles puedes poner los subtitulos, los cuales pueden guiarte mejor. Los vídeos cubren lo mas básico para  principiantes que quieren comenzar a trabajar con mapas en sus webs.







Adicional a estos videos puedes ver el capitulo de ejemplo de mi libro introductorio a Google Maps donde puedes encontrar un pequeño tutorial sobre como empezar con Google Maps en este link

http://webmasternoob.blogspot.com/2016/01/libro-google-maps-javascript-indice.html


Tambien google tiene un Curso oficial: https://www.udacity.com/course/google-maps-apis--ud864

link: http://googlegeodevelopers.blogspot.com/2013/12/fab-friday-is-google-maps-video-fest.html

lunes, 16 de diciembre de 2013

Jquery Mobile : Overlay Panel desde abajo

JQuery Mobile recientemente a agregado un interesante widget llamado "panel" el cual es muy bonito para mostrar informacion en los lados de tu App.  Pueden un ejemplo aqui : 


A mi me gusta mucho esta manera de mostrar informacion. Recientemente necesitaba usar uno de esos panales pero queria que este saliera desde abajo, intentando imitar el comportamiento de algunas Apps que habia visto pot ahi.

Bueno JQuery Mobile no tiene esa funcionalidad por ahora en los panales, seguro lo agregan mas adelante, Asi que despues de una extensa busqueda en internet sin exito, he decidido programarlo yo mismo y a mi paracer el resultado quedo bastante decenton,  no perfecto pero decente :)

Como lei en muchas paginas en interent, hay bastante gente buscando este comportamiento por lo cual decidi compartirlo.  Haciendo click en "list of items" podran abrir el panel con una listview de JQuery Mobile






sábado, 14 de diciembre de 2013

El color de piel de jesus

Sobre el color de piel de jesus : 

Según el consenso de expertos científicos Jesús era, como la mayoría de Judios del primer siglo, probablemente un hombre de piel oscura. Algunos artistas occidentales populares representaron a jesus como blanco de ojos azules ,Talvez impulsados por algunos versículos bíblicos que que hablan sobre la pureza, la rectitud y la oscuridad del pecado y del mal.

El único problema es que las representaciones son históricamente inexactas,Escrituras cristianas dicen muy poco acerca de la apariencia física de Jesús. Ellos no hacen ningún comentario sobre la nariz, color de ojos, pigmentación de la piel ó el cabello . Como algunos historiadores y teólogos han planteado, el silencio de las Escrituras sobre el tema de color de la piel de Jesús es fundamental para el gran atractivo del cristianismo con gente de varias etnias. En un mundo donde la raza a menudo divide a las comunidades e incluso las iglesias, las representaciones bíblicas del hijo de Dios lo posicionan como uno que puede unir esas brechas.

Como Martin Luther King Jr.’s dijo una vez : "¿Por qué Dios hizo a Jesús blanco, cuando la mayoría de los pueblos del mundo no son blancos? 

Su respuesta fue : "El color de la piel de Jesús es de poca o ninguna importancia" porque lo que hizo a Jesús excepcional  fue "Su disposición a entregar su voluntad a la voluntad de Dios.".

Mientras esperamos su llegada la mayoria seguirá creyendo que jesus luce como un super modelo escandinavo de ojos azules.

link: http://www.theatlantic.com/politics/archive/2013/12/insisting-jesus-was-white-is-bad-history-and-bad-theology/282310/

sábado, 23 de noviembre de 2013

Galeria de estilo de colores para tus mapas Google Maps

Con la API de Google Maps nosotros podemos crear mapas personalizados cambiando los colores por los que nosotros queramos usando un arreglo de estilos. Pero esto puede ser muy tedioso al querer  lograr un resultado decente con los colores perfectos.

Con este problema en mente, ha nacido http://snazzymaps.com/ , una web con una colección de estilos de mapas Google Maps que puedes aplicar a tus propios mapas. Muy util para usar en tus proyectos de manera rápida.



Tutorial sobre sublime text

Si quieres un buen tutorial sobre el editor de moda hoy en dia Sublime text , te recomiendo este link donde podrás encontrar tutoriales gratuitos de https://tutsplus.com/ , que están muy buenos.

link : https://tutsplus.com/course/improve-workflow-in-sublime-text-2/

Y tambien si quieres sacarle el maximo a este super editor recomiendo que visites este link:

link: http://scotch.io/bar-talk/best-of-sublime-text-3-features-plugins-and-settings


Responsive image con Mobify.js

He leído incontables artículos sobre como tratar el problema de responsive images, debido a que no tenemos un estándar todavía para resolver este problema, muchas soluciones aparecen día a día tratando de resolverlo. 

Pero entre todas las soluciones que leo, en mi opinión personal esta es  la mejor de todas:  Mobify.js es una librería open source para mejorar los sitios responsive, la cual automáticamente redimensiona y comprime las imágenes sin escribir nada de código, simplemente entregamos nuestra imagen en alta resolución y la API se encargara del resto por nosotros.

Para saber mas sobre su uso y un análisis detallado sobre como funciona les dejo el siguiente link, la verdad que mejor articulo que este no hay sobre el uso de esta librería .


¿Sabes cuánto cobrar por una hora de tus servicios?

Interesante web donde con solo responder 6 sencillas preguntas no ayudara a saber cuanto debemos cobrar por nuestros servicios.

link: http://cosmonauta.mx/toolbox/precioporhora.html

Elementos HTML con float escapan de su contenedor padre.

Cuando usas la propiedad CSS "float" en algunos elementos estos salen del flujo normal del documento y provoca que los mismos salgan de su contenedor padre. Muchos blogs recomiendan insertar un elemento HTML con la propiedad "clear:both" después de los elementos para resolver el problema. Hoy hice una pequeña recopilación de como resolver este problema de 3 maneras distintas, en el siguiente ejemplo.



La verdad que en la tercera opcion funciona correctamente pero no logro entender el por que. La que mas me ha gustado es la segunda opcion usando :after de css3 .

Link para leer un poco sobre block formatting; http://www.yuiblog.com/blog/2010/05/19/css-101-block-formatting-contexts/

Link: http://html5hub.com/after-float/#i.685flmb6repov7


Debugging con console.table() en Google Chrome

No hace mucho leí un articulo sobre el uso de console.table() , una función del modo consola en Google Chrome para una mejor presentación de datos. Es una interesante manera de mostrar los datos que el clasico console.log(). Aqui les dejo un ejemplo de como usarlo:


Muy simple de usarlo y con una presentación de datos muy cómoda.También trabaja con objectos por ejemplo si tenes un objecto y cada propiedad del objecto es otro objecto. 




sábado, 9 de noviembre de 2013

Facebook Plugin Comment no aparece

Existe un comportamiento muy interesante con el plugin de comentarios de Facebook. Que algunas veces no aparece en pantalla, en algunos blog la solución común es utilizar el método:

FB.XFBML.parse();

Que reparsea todo el contenido forzando a que aparezca los comentarios en tu pagina. Pero hay un comportamiento un tanto extraño que pasa cuando tienes tus comentarios Facebook ocultos y con alguna acción del usuario quieres que sean mostrados. El problema es que al parecer el plugin Facebook toma el ancho de su padre para crear la caja de los comentarios y ese ancho es asignado al iframe.

El problema es que si el elemento padre de los comentarios esta oculto el plugin Facebook toma el ancho 0px para el iframe lo que ocasiona que no sea mostrado en pantalla, por que no tiene ancho alguno. Lo que tenemos que hacer en este caso es llamar a FB.XFBML.parse  hasta que el elemento padre este visible.

He creado un ejemplo de este comportamiento en el siguiente link , el cual puedes ver como el plugin de comentarios no aparece la primera vez cuando le haces click pero si remueves los comentarios de esta linea de codigo :

//FB.XFBML.parse();

Podrás ver como aparecen, esto pasa por que le estamos pasando una callback al método show de jquery que se ejecutara hasta que el elemento este visible, de esta manera el plugin puede tomar el ancho del padre para crearse.



link : http://jsfiddle.net/SaulBurgos/tDQMZ/


Error PHP Warning: Cannot modify header information - headers already sent by

Como programador PHP en algún momento te habrás encontrado con este mensaje de error al momento de usar cookies ó haciendo una redirección con PHP  :

Warning: Cannot modify header information - headers already sent by

El problema con este error es que en algún lado de tu script php ya se ha enviado información sobre tu pagina web, por ejemplo con algún echo o algo asi. Estos casos son mas comunes cuando estas trabajando un en proyecto existente y no sabes por donde esta la linea de código que ha enviado información.

Para resolver este problema tiene que usar Output Buffering para evitar que se envie informacion al navegador antes de tiempo. Normalmente PHP  sin output buffering envia al navegador el codigo generado por tu script en pedazos, cada vez que encuentra un echo ó un print inmediatamente lo envia al navegador procesando asi todo tu script PHP. Pero con output buffering activado todo el codigo generado es guardado en una variable  hasta que todo el script PHP es leido y solo hasta después es enviado al navegador como una sola pieza.

Una ventaja de usar output buffering es que disminuye la cantidad de tiempo que toma mostrar una pagina por que no es enviada en pedazos.

Para ver un ejemplo sencillo de su uso, puedes visitar el siguiente link de Brian Cray donde tiene unos ejemplos muy buenos y mucha mas información sobre su uso.

Link : http://web.archive.org/web/20101216035343/http://dev-tips.com/featured/output-buffering-for-web-developers-a-beginners-guide

PHP manual : http://php.net/manual/en/function.ob-start.php




domingo, 27 de octubre de 2013

Verificar compatibilidad de navegadores

Por lo general cuando estoy en un proyecto web y quiero saber si una API es compatible con algunos navegadores, siempre reviso la web de http://www.w3schools.com/ o alguna que otra web similar. En estas webs por lo general no se muestra la compatibilidad con navegadores móviles, lo cual es muy importante hoy en día.

Hoy me ha llegado una web llamada http://caniuse.com/, que es excelente para este propósito mostrando en una tabla sencilla una lista de navegadores de escritorio y móviles con el tipo de compatibilidad que estas buscando. Excelente herramienta para saber que una API es soportada por algún navegador en especifico y una de las mejores que he visto.

Una web importante a tener en cuenta si eres desarrollador web.

link : http://caniuse.com/

martes, 15 de octubre de 2013

PHP mostrar los mesajes de error del codigo

Algunas ocasiones cuando estas trabajando con PHP en un proyecto existente, te das cuenta que la aplicación no muestra ningún mensaje de error, aun cuando deliberadamente tu escribes mal algún método solo para ver si se muestra un error, y lo unico que obtienes es una pagina en blanco.

Esta pasa algunas veces por que en el servidor están desactivados los mensajes de error, lo cual es un problema  por que no podemos saber que nos esta causando el problema. Algunas veces para solucionar esto, es tan fácil  con solo agregar las siguientes lineas al inicio de tu script PHP :

error_reporting(E_ALL);

ini_set('display_errors', '1');



Pero algunas veces esto no funciona, cuando esto falla lo único que queda por hacer es crear un script PHP adicional por ejemplo llamado "first.php" que contenga las lineas anteriores de código, adicional a estas lineas haremos un "include" ó "requiere" con la ruta del script PHP donde creemos que esta el error. Entonces a través  de "first.php" vamos a acceder a nuestro script que tenemos que debuguear, de esta manera vamos a forzar a PHP a mostrar los errores en ese script que nos servirá de intermediario.

Esto pasa por que PHP necesita parsear el código antes de ejecutarlo y si existe algún error de parseo en mismo script donde estas definiendo la configuración para mostrar los errores, estos no se mostraran al momento que se encuentre un error. Por eso es recomendable dividir tu código en varias secciones y después incluirlos en un único script con "include" ó "requiere".