Usar el API de Facebook en PHP
Ese fin de semana he tenido que dedicar un buen rato a lidiar con los caprichos de la API de Facebook, una API que a mi gusto tiene la peor documentación jamás vista. Por eso, y para que ustedes no sufran lo que he sufrido yo les dejo una pequeña explicación de cómo lo he hecho yo. seguramente como siempre pasa existen muchas maneras de hacer esto, pero esta es la que a mi me funcionó.
Lo primero que necesitaremos, evidentemente, es la API oficial de Facebook, que podemos descargar desde GitHub. Descomprimimos el archivo y lo subimos a nuestro servidor.
También necesitamos crear una aplicación en facebook, que será la encargada de llevar a cabo estas operaciones sobre nuestro perfil de usuario o pagina comercial. Para ello hay que dirigirnos al sitio web de desarrolladores de Facebook, donde tendremos que validar nuestra cuenta,ya sea introduciendo nuestro numero celular para que nos envíen un código de confirmación, o bien introduciendo nuestro número de cuenta. En serio, es escalofriante, pero ya sabemos todos como es Facebook.
Una vez que creemos la aplicación podremos consultar el id de la aplicación y la clave secreta de aplicación en esa misma página. Estos son dos de los datos que vamos a necesitar, así que hay que tenerlos a mano.
Lo siguiente que necesitamos es que nuestro usuario dé permisos a nuestra aplicación para poder interactuar con nuestra cuenta. Esto lo podemos hacer de forma sencilla utilizando una URL especialmente diseñada a tal efecto, que tendrá el siguiente aspecto:
https://graph.facebook.com/oauth/authorize?type=user_agent&
client_id=ID_APLICACION&
redirect_uri=http://www.facebook.com/connect/login_success.html&
scope=offline_access,manage_pages,publish_stream,create_event
donde:
client_ides el id de la aplicación, que habíamos apuntado en el paso anteriorredirect_uries la página a la que vamos a redireccionar el navegador una vez hayamos dado los permisos a la aplicación- y
scopees una lista de permisos, cuyos posibles valores podemos consultar en la documentación al respecto. El permisooffline_accesses uno de los más importantes: permite que el token que nos va a pasar Facebook para autenticarnos no caduque, incluso cuando el usuario esté desconectado. Si quieres interactuar con las páginas que gestiona tu usuario, en lugar, o además de con tu propia cuenta personal, necesitarás requerir también el permisomanage_pages

Al cargar la URL en tu navegador y pulsar ‘Permitir’, si no ha pasado nada raro, Facebook debería redirigirte a la página que indicaste como valor de redirect_uri, añadiendo a esta un parámetro access_token, que es el que utilizaremos para identificarnos, y otro expires_in, que nos informa de que el token de acceso no va a caducar.
Para comprobar que todo funciona correctamente puedes intentar cargar la siguiente URL:
https://graph.facebook.com/me?access_token=ACCESS_TOKEN
Si el token de acceso es el adecuado, Facebook nos mostrará un objeto JSON con la información de nuestra cuenta de usuario. En caso contrario, mostrará un objeto JSON informando del error.
Ahora bien, si queremos interactuar con las páginas que administremos, en lugar de con nuestra página personal, necesitaremos un access token distinto. Para obtenerlo preguntaremos a Facebook por la información de las distintas páginas y aplicaciones que administramos utilizando la URL:
https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN
Listo. Ahora sí, ya estamos preparados para empezar a jugar con la API de Facebook. Para publicar en el muro, crear eventos y subir imágenes en Facebook utilizaremos la clase del mismo nombre, a cuyo constructor le pasamos un array con el identificador de nuestra aplicación y su contraseña:
El método que nos interesa de esta clase es api, que normalmente tendrá como primer parámetro una cadena del tipo "/ID_USUARIO/SERVICIO" o "/ID_PAGINA/SERVICIO". El segundo parámetro es siempre el método a utilizar (POST o GET), y el tercero, un array con los argumentos necesarios para ese servicio.
Para publicar algo en el muro, por ejemplo, utilizaríamos como primer parámetro una cadena "/ID_USUARIO/feed" y como tercer parámetro, un array con claves message (el mensaje a publicar) y access_token, siendo este último el valor que obtuvimos anteriormente para identificar a nuestro usuario o alguna de las páginas de marca que administramos (OJO: el token de acceso del usuario no sirve para identificar a la página y viceversa).
Para terminar, les dejo una pequeña clase que les permitirá escribir en el muro, subir una foto o crear un evento.
Listo!!
Wallpapper del día
Proyecto: Cotizador en PHP
Aquí un proyecto que me encargaron de un cotizador en PHP.
Lo que me pidieron es poder cotizar en linea cuando no están en la empresa y necesitan mandar por email una cotización express.
Por el momento no guarda la información de los productos en una base de datos, pero si lee la información de los clientes de una, si es que se tiene, si no, puede ingresarse de forma manual al instante, lo más importante es que es funcional y cumple con lo que me pidieron.
Primero creamos un archivo cotiza.php donde vamos a insertar los datos del cliente, productos, cantidad y precio.
Despues creamos el archivo ver.php, que es donde vamos a ver la cotización ya con subtotal. total, iva y todo
Este es el resultado:


Espero les sirva algún día
Wallpapper del día – Biblioteca
DNS Públicos
Todos los profesionales del sistema conocemos algunos DNS públicos para en caso de necesidad hacer algunas pruebas o tenerlos como alternativa, los más comunes son los de google… extremadamente difíciles de memorizar y suelen ser de los mejores:
$ cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4
El fichero de configuración por defecto en Linux suele ser el /etc/resolv.conf en distros basadas en ubuntu hoy en día tienen la peculiaridad de que hay un par de líneas que dictan los siguiente:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
Con lo que si editamos sólo el fichero /etc/resolv.conf al reiniciar nos volvera a tener la configuración original. El fichero clave para que esto ocurra y dejar los cambios permanentes es el que indica más abajo en Linux Mint en mi caso:
#OpenDNS Fallback (configured by Linux Mint in /etc/resolvconf/resolv.conf.d/tail).
Open DNS
Muy populares y son abiertos
Extraído de Wikipedia: En los últimos años OpenDNS se ha convertido además de en un proveedor global gratuito de resolución DNS, en un proveedor de servicios de seguridad de Internet en La Nube. Las características de seguridad incluyen un filtro de phishing y corrección de errores ortográficos (por ejemplo escribir wikipedia.or en vez de wikipedia.org). Al entrar en sitios clasificados como fraudulentos, OpenDNS bloquea el acceso a esos sitios, aunque esto se puede configurar en el panel de control.
$ cat /etc/resolv.conf nameserver 208.67.222.222 nameserver 208.67.220.220
OpenNic
Alternativa libre que eliminan logs de navegación por IP después de 24 horas
$ cat /etc/resolv.conf nameserver 202.83.95.227 nameserver 216.87.84.211 nameserver 64.0.55.201 nameserver 184.154.13.11
Level 3 Comunication
Los tiempos de respuesta son de lo mejor del mercado:
$ cat /etc/resolv.conf nameserver 4.2.2.1 nameserver 4.2.2.2 nameserver 4.2.2.3 nameserver 4.2.2.4 nameserver 4.2.2.5 nameserver 4.2.2.6
Norton ConnectSafe
La compañía de seguridad Symantec ha creado una serie de DNS que ofrecen varias opciones de seguridad extra contra malware y phising.
$ cat /etc/resolv.conf nameserver 198.153.192.40 nameserver 198.153.194.40
Aparte de la protección anterior también hay filtro de contenidos (adultos, drogas, etc)
$ cat /etc/resolv.conf nameserver 198.153.192.50 nameserver 198.153.194.50
Si quieres una protección extrema añadiendo filtro de contenidos que sean aptos para toda la familia puedes utilizar
$ cat /etc/resolv.conf nameserver 198.153.192.60 nameserver 198.153.194.60
Si te das cuenta son los mismos pero subiendo de 40,50,60 según el nivel de control que quieras poner.
Dyn Internet Guide
Estos DNS prometen además de buena disponibilidad una protección extra ante páginas peligrosas filtrando contenidos comprobados como maliciosos.
$ cat /etc/resolv.conf nameserver 216.146.35.35 nameserver 216.146.36.36
Conectar PHP con Oracle
Últimamente he estado trabajando en un proyecto en el cual es necesario que sea escalable en cuanto a la conexión a base de datos Hablo de escalabilidad ya que la aplicación debe de conectarse con MySQL y Oracle mediante PHP, con la primer Database no hay problema ya que PHP trabaja bastante bien con MySQL, pero con Oracle si había que habilitar cierta extensión para poder trabajar, ó instalar una aplicación la cual tenia la extensión necesaria.
Lo primero que tenemos que hacer es comprobar si existe alguna extensión oci8, para eso buscamos esta cadena en el phpinfo():
Si encontramos alguna cadena después de la cadena oci8, como en la anterior imagen, solo bastara con modificar una linea en el php.ini y reiniciar el servidor.
Para modificar el archivo iremos a la ubicación donde se encuentra, en este caso es c:xamppphp pero esto varía dependiendo del OS y de el paquete xampp, editaremos con nuestra aplicación favorita para tal fin:
Una vez abierto el archivo buscaremos la siguiente linea y eliminamos el ” ; ” asi descomentando:
1
extension=php_oci8_11g.dll
Solo nos queda reiniciar el servicio del Servidor Apache, así que paramos e iniciamos el servidor para que tome los cambios. Ojo, esto es importante!
Ahora si la versión que tengamos no tenga este soporte nativo para Oracle? Googleando encontré una solución para este problema.
Ahora veamos si nos funciona, crearemos una carpeta en nuestro servidor local, a nuestro gusto, y en ella el archivo que hará la conexión con el Servidor Oracle:
La linea 3 es la encargada de la conexion, esta consta del nombre de usuario, la contraseña, y host de Oracle. Recordemos que el host se puede manejar tanto por IP como por el nombre de la maquina.
Bueno, para finalizar, si todo sale bien podremos ver el siguiente resultado cuando abramos el archivo por el navegador web:
Ilustrador italiano / diseñador gráfico, Alberto Seveso ha creado esta sorprendente serie de snap shotsde tinta y agua. A través de la combinación de dos componentes relativamente inertes y similares, Seveso nos introduce en una nueva perspectiva en la estética visual. El resultado se ve increíble
Activar menú clásico en Windows 8 sin instalar ningún programa
Instalé en una maquina virtual una version de evaluación de Windows 8 y me sentí como un señor de 80 años tratando de usar una computadora por primera vez, NO LOGRE NADA!!!
No encontré opciones o herramientas que desde 1995 estubieron siempre en un mismo lugar, EL MENÚ DE INICIO al ver que no lograba nada con esta nueva interfaz decidí que era mas fácil buscar como habilitar el menú clásico de nuevo en vez de aprender a usar la nueva interfaz.
Encontré muchos métodos muy buenos pero que implicaban instalar software de terceros, pero conociendo bien a la gente de Microsoft sabía que el menú seguía ahí solo que escondido, así que encontré lo siguiente
Activar el menú clásico desde regedit
1. presionar la tecla Windows + la tecla R ( o ir a la parte derecha superior con el ratón y presionar la lupa )
2. escribir regedit en la ventana que ha salido después pulsamos Intro
3. Cambiar de ruta Key_Current_UserSoftware MicrosoftWindowsCurrentVersionExplorer
4. Cambiar el valor del registro RPEnabled de 1 a 0
5. Si no ha aparecido el botón de inicio con el menú clásico de Windows entonces reinicia la computadora
También se puede hacer desde la Terminal:
1. presionar la tecla Windows + la tecla R al mismo tiempo
2. escribir cmd y ejecutar como Administrador
3. escribir reg add “HKCUSoftware MicrosoftWindowsCurrentVersionExplorer” /v RPEnabled /t REG_DWORD /d 0 /f
4. Si no ha aparecido el botón de inicio con el menú clásico de Windows entonces reinicia la computadora
El resultado es el siguiente:









