viernes, 5 de julio de 2013

Wordpress error : THE PLUGIN GENERATED XXX CHARACTERS OF UNEXPECTED OUTPUT DURING ACTIVATION

Mientras trabajo en la creacion de un plugin me encontre con el siguiente error en la activacion del plugin:

"The plugin generated xxx characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin."

Wodpress no es muy claro para decirnos el tipo de error que necesitamos corregir , por lo tanto
necesitamos encontrar una manera para saber cual es el error que ocurrio durante la activacion
del plugin , wordpres trabaja con algo llamado "hook" donde podemos ejecutar algun
metodo entonces escribimos en nuestro plugin la siguiente linea

function catchErrorPlugin()
{
    file_put_contents('./wp_plugin_error.log', ob_get_contents());
}
add_action('activated_plugin', 'catchErrorPlugin');

Esto va crear un archivo con la descripcion exacta del error que necesitamos corregir .

miércoles, 3 de julio de 2013

Wordpress: Creando plugin con WP_List_Table y undefined function convert_to_screen()

Trabajando en la creacion de un plugin para wordpress donde tengo que usar  la clase " WP_List_Table " me encontre con el siguiente error en la parte del front-end  cuando instancias la clase para crear la tabla.

undefined function convert_to_screen() 

El problema con esto es que WP_List_Table no encuentra el metodo que se encuentra en "wp-admin/includes/template.php " buscando en interent fue todo un caos , algunos dicen que es un bug , otros dicen que pasa por que ese ese metodo solo accesible para el area de admin ya que ahi no pasa el error.

Bueno solo escribo aqui para postear como he solucionado el error tienes que agregar estas linea donde estas extendiendo la clase WP_List_Table.

if(!class_exists('WP_List_Table')){
    require_once( ABSPATH .'wp-admin/includes/template.php');
    require_once( ABSPATH .'wp-admin/includes/class-wp-list-table.php' );
}   

Al agregar "template.php" WP_List_Table tendra acceso al metodo que necesita , estoy seguro que en terminos de seguridad no es correcto acceder a metodos admin en el front-end pero tenia que solucionar el problema.

martes, 2 de julio de 2013

Como mandar informacion secreta encriptada




Con todo el asunto que paso recientemente con el caso de PRISM el proyecto ultra secreto del EEUU donde nos espía a todos en el planeta  y tiene acceso todos nuestros datos de google , facebook , twitter , yahoo , etc.

Viene la pregunta y ahora que hacemos ? como puedo enviar alguna información sin que el gobierno de EEUU tenga acceso a ellos , ya que si envías un sms , email o haces una llamada telefónica ten por seguro que el gobierno tiene esos datos por que la compañías no encriptan esa información en sus bases de datos.

Bueno con esto en mente hay una web que te permite enviar información de carácter ultra secreto encriptado y una vez que es leído destruye el mensaje todo esto de manera totalmente anónimo y gratuito , por ahora es lo seguro que se puede usar para enviar información , ya que si quieres enviar tu numero de tarjeta de crédito por correo es una mala idea . link del servicio abajo

link: https://www.noteshred.com/

lunes, 1 de julio de 2013

Para que sirve Underscore.js



En este post quiero hablar de underscore.js una libreria javascript que nos ofrece muchas utilidades que nos harán las vida mas fácil al trabajar con tipos de datos object y array , la razón por la que hago este  post es para ofrecer ejemplos un poco mas prácticos  de lo que puede hacer underscore.js.

Hace un tiempo atrás yo no conocía esta librería y por razones de trabajo tuve a revisar su pagina oficial para saber de que se trataba , la primera vez que leí la documentación y ver algunos ejemplos de la pagina no me termino de convencer y no le preste mucha atención a la librería e incluso pensé que era una perdida de tiempo , pero después varios amigos del trabajo me explicaron el uso de underscore.js aplicados con ejemplos reales en proyectos y hasta ese momento me di cuenta del potencial de esta librería.

Si nadie me hubiera explicado el uso de underscore.js con usos prácticos nunca me hubiera interesado en la librería   , creo que los ejemplos de la pagina oficial no lograron transmitirme el verdadero potencial de esta librería por esta razon escribo este post para tratar transmitir a otros lo que yo no entendi en su momento.

Para los siguientes ejemplos puedes usar el modo consola de google chrome para ejecutarlos o puedes crear un proyecto pequeño en tu maquina , todas las instrucciones de como usar la librería están en la pagina oficial de underscore.js aqui solo veremos ejemplos practicos de algunos metodos.

Lo primero que necesitamos es un arreglo de objetos que nos simulen datos provenientes de una BD : 

var json = [ 
{ "id": "18741DB9-B869-B378-8624-0B9F593F84BA", "name": "Ross", "email": "lobortis@arcuetpede.ca", "about": "nisl. Quisque fringilla euismod enim.", "title": "Mr." }, { "id": "E2D7A39E-4583-A27A-BC55-98489F062FB1", "name": "Bruno", "email": "egestas.nunc@eratvitaerisus.edu", "about": "Donec tincidunt. Donec vitae erat", "title": "Ms." }, { "id": "26CC1826-2BBA-5ABB-CB7E-D06AD96D1A23", "name": "Audra", "email": "tincidunt.vehicula.risus@tempus.com", "about": "Nullam suscipit, est ac facilisis", "title": "Mr." }, { "id": "4F0FCC7A-A715-4AC2-B64F-830AA3441995", "name": "Kelsey", "email": "sodales.at@quis.net", "about": "mi felis, adipiscing fringilla, porttitor", "title": "Mr." }, { "id": "8A3A6AF5-225D-D812-ABB0-3668D27F677F", "name": "Blaine", "email": "suscipit.est.ac@aclibero.ca", "about": "lorem eu metus. In lorem.", "title": "Mr." }, { "id": "8B7A6266-5CDD-AF5A-6C15-ECF6273A26FB", "name": "Brielle", "email": "Morbi.metus@nislQuisque.net", "about": "ullamcorper eu, euismod ac, fermentum", "title": "Dr." }, { "id": "3C1D2DF8-CB72-EF58-2B7D-DD266E54710A", "name": "Susan", "email": "rutrum@aliquet.org", "about": "mattis. Cras eget nisi dictum", "title": "Mrs." }, { "id": "1F391F0E-DE13-5089-7A92-8BA9B1264245", "name": "Brent", "email": "nibh.dolor@magna.edu", "about": "fringilla. Donec feugiat metus sit", "title": "" }, { "id": "340DCB7E-428E-EA04-E394-513893AE2E56", "name": "Cally", "email": "Cras.lorem@eunullaat.net", "about": "nunc. In at pede. Cras", "title": "" }, { "id": "C061F9A3-EC77-6B24-E0A4-218134EA240E", "name": "Edan", "email": "vel.mauris@sed.ca", "about": "sit amet orci. Ut sagittis", "title": "Ms." } ] ;

Con este ejemplo vamos comenzar nuestra practica. En la variable json estamos asignando un arreglo de objetos donde cada elemento del arreglo es un objecto con la siguiente estructura :


"id": "18741DB9-B869-B378-8624-0B9F593F84BA",
"name": "Ross",
"email": "lobortis@arcuetpede.ca",
"about": "nisl. Quisque fringilla euismod enim.",
"title": "Mr." 
}


En total hay 10 elementos en nuestro arreglo , con la misma estructura pero con diferente datos a simple vista no puede parecer mucho pero ahora imagina este arreglo pero de 200 elementos que fueron devueltos de una consulta a alguna BD.

Ahora vamos a ver algunos métodos , no voy explicar las definiciones estas las puedes revisar en la pagina oficial solo comentare algunas ideas de como usarlos :

each : Puede usarse para realizar operaciones por cada elemento del arreglo ejemplo :

_.each( json , function(element){ console.log(element.title + element.name) });

El resultado de esto sera :

Mr.Ross Ms.Bruno Mr.Audra Mr.Kelsey Mr.Blaine Dr.Brielle Mrs.Susan Brent Cally Ms.Edan

Has notado lo simple que fue iterar en cada elemento del arreglo y concatenar 2 propiedades de el mismo en una sola linea de codigo ? Si no usaramos underscore.js para hacer esto tendríamos que usar un ciclo FOR que nos tomaría fácilmente mas de 4 lineas de código.

map: Lo podemos usar para para extraer solo las propiedades que nos interesan de cada uno de los elementos del arreglo . ejemplo:

_.map(json, function(element){ return {"name": element.name ,"email" : element.email } });

El resultado sera un arreglo de 10 elementos donde la estructura de cada elemento es la siguiente :


{
email: "lobortis@arcuetpede.ca"
name: "Ross"
}

Aquí solo hemos extraído los datos que necesitábamos de todo el conjunto original.

find : Podemos usarlo para encontrar un elemento en especifico que necesitemos . ejemplo :

_.find(json, function(element){ return element.id == "8A3A6AF5-225D-D812-ABB0-3668D27F677F" });

El resultado sera :

{
id: "8A3A6AF5-225D-D812-ABB0-3668D27F677F",
name: "Blaine", 
email: "suscipit.est.ac@aclibero.ca", 
about: "lorem eu metus. In lorem.",
title: "Mr."
}

filter : Se usa para filtrar los resultados según una condición , por ejemplo si queremos saber cuales son los elementos del arreglo que tienen "Mr ." en la propiedad title. ejemplo:

_.filter(json, function(element){ return element.title == "Mr."; });

El resultado sera un arreglo de 4 elementos donde cada elemento tiene "Mr.s" en la propiedad title.

some : podemos usarlo para saber si existe algun valor en especifico esta presente en los elemento , ya que este metodo devuelve true si es encontrado. ejemplo :

_.some(json, function(element){ return element.name == "Brent" })

El resultado sera : true.

every : puede ser usado para saber si todos los elementos del arreglo son del tipo "Mr." ejemplo :

_.every(json,function (element) { return element.title == "Mr." });

El resultado sera : false por que en nuestro arreglo tenemos "Mr." y "Ms." presentes.


groupBy : Usado para agrupar colecciones de objetos, ejemplo :

var data = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"];
var n = 3;
var lists = _.groupBy(data, function(element , index) {
                            return Math.floor(index/n);
                    });


El resultado sera: Un arreglo donde cada elemento es una coleccion de 3 elementos.

sortBy : Usado para ordenar arreglos en order ascendente  

_.sortBy([3, 2, 1, 4, 6, 5], function(num){ 
return num; 
});
 
El resultado sera : [1, 2, 3, 4, 5, 6]

Si quieres hacerlo en order descendente solo tienes que usar metodo reverse del objecto array()

_.sortBy(that.currentSession.players, function(player){ 
return player.points; 
}).reverse();

uniq : usado para remover objetos duplicados de un arreglo

var data = [{'name': 'Amir', 'surname': 'Rahnama'}, {'name': 'Amir', 'surname': 'Stevens'}];
 

 _.uniq(data,false, function(element){ return element.name; }); 


 Hasta aquí he cubierto el uso básico de Underscore.js , te recomiendo que leas la documentación para saber que otras cosas puedes hacer con el como usar los templates y encadenar métodos espero haber aclarado un poco el uso de esta libreria

Link : http://underscorejs.org/




Icon Fonts La nueva manera de insertar iconos en tu web


Icon Fonts es una idea genial para insertar iconos en tu web sin usar archivos de  imágenes como lo hacemos normalmente , tiene muchas ventajas sobre la manera tradicional.

Iba a escribirlas aquí pero encontré un link muy bueno donde las describen mejorde lo que yo lo haria y para que reinventar la rueda verdad ? de todas formas me extraño que en mi blog no haya escrito nada sobre este tema , ya que tiene su buen rato esto de los Icon Fonts.

martes, 25 de junio de 2013

invoiceomatic.io Servicio web para enviar factura a tu cliente

Servicio web para enviar factura a tu cliente de manera facil y gratis  , El servicio te permite llenar el contenido de tu factura seleccionar el tipo de moneda y sera enviado al correo que tu decidas en formato pdf . muy interesante para ocaciones que no tenemos una plantilla de factura y no queremos usar el word para esto.

Aunque el servicio no te permite guardar tu factura en su version gratuita cumple lo que promete.

link : http://invoiceomatic.io/

martes, 28 de mayo de 2013

Carrito de compra javascript opensource facil de intergrar de 8kb

Si alguna vez  necesitas integrar un carrito de compra sencillo en algun proyecto SimpleCart es tu solucion.  Esta libreria javascript pone a tu disposicion un  sistema de carrito de compra del lado del navegador sencillo pero bonito con 4 tipos de sistema  de pagos listo para  usar.

Sin base datos , sin complicados codigos del lado del servidor , sin dolores de cabeza simplemente necesitas un JSON para alimentar el sistema y listo !!! en minutos tendra tu tienda online.

y lo mejor de todo que solo mide 8kb minificado.

link : http://simplecartjs.org/


Buenas practicas para escribir codigo CSS



Por lo general cuando aprendemos a programar estilos en CSS en algun tutorial o libro a menudo olvidan mencionar buenas practicas para nuestro codigo ,  cosa que deberia ser muy importante pero por alguna razon nadie presta mucha atencion a como deberiamos de estructurar nuestro codigo CSS.

He encontrado un articulo de Philip Walton muy interesante sobre buenas practicas  en nuestro codigo CSS , consejos de como estructurarlo y como usar de manera optima los selectores , a mi parecer una lectura obligada para cualquier desarrollador web.

Lo unico malo aqui pues es que esta en ingles , pero si te dedicas a esto del desarrollo web ya estaras acostumbrado.





martes, 21 de mayo de 2013

Angular, Backbone, CanJS y Ember cual es el mejor MVC Javascript ?

Con la evolución de javascript desde hace tiempo tenemos a nuestra disposición una serie de frameworks MVC para usar en nuestro proyectos , aprender a usar uno  de estos frameworks puede ser determinante al momento conseguir un empleo ,  ya que todo indica que el desarrollo de aplicaciones va por este camino.

Encontré una guia muy util donde se hace una comparacion sobre los distintos framework que existen en la actualidad , asi que si estas en el proceso de aprender algun framework MVC esta guia te ayudara mucho a decidir cual es el mejor para ti.




domingo, 12 de mayo de 2013

app-UI alternativa a Jquery Mobile

APP-UI es un proyecto open source para maquetacion de interfaces para dispositivos moviles algo parecido a Jquery Mobile. Según la web oficial puede trabajar en conjunto con otros frameworks tipo bootstrap de twitter , aqui les dejo el video de presentacion .

lunes, 15 de abril de 2013

Instrucciones en tu App tipo overlay

Una parte interesante cuando estas desarrollando alguna App es de que manera publicaras las instrucciones , por lo general están los vídeos o alguna pagina de FAQ. Hoy encontre un script Javascript que te permite poner instrucciones en tu App a manera de overlay muy elegante por cierto.

Se llama Chardin.js entren y hechen un vistazo a su demo.

lunes, 8 de abril de 2013

37 cursos universitarios, online y gratuitos que inician en abril





He encontrado una web donde se han recopilando varios enlaces con cursos universitarios para cualquiera que le pueda interesar y todo gratuitos , creo que el único  problema es que la mayoría están en ingles.

si quieren pueden dar una mirada en este link


jueves, 4 de abril de 2013

Google abandona el motor webkit

En el mundo de desarrollo web webkit es el motor de render de los navegadores
mas usado siendo google chrome el que mejor uso hace de el . El solo hecho de tener
multiples motores de render es un dolor de cabeza para nosotros los desarrolldores
siempre tenemos que adaptar nuestro codigo para cada uno.

Alguna vez  pense que llegariamos a tener un solo motor de render unico , pero eso
ahora es historia ya que google ha anunciado que abandona el motor de render webkit por blink
las razones de esto segun google es ingenieria , habia mucho codigo anterior que habia
que darle mantenimiento y la otra es que ahora pueden implementar muchas cosas nuevas sin tener
muchos problemas.

Lo que sorprende mas es que Opera dara el salto a blink junto con google. Creo que veremos muchas
cosas buenas en el futuro con este motor. Por ahora google dice que con blink no necesitaremos poner
prefijos como lo hacemos anteriormente.

jueves, 21 de marzo de 2013

Aprende a usar las Devtool de google chrome

Si eres un desarrollador de aplicaciones web unas de las herramientas mas importantes que tienes que aprender a usar son las devtools de google chrome , son un set de herramientas muy poderosas para ayudarte a depurar tu aplicacion ya sea el HTML , CSS , JAVASCRIPT.

Esta es una de esas herramientas que nunca deben faltar para cualquier desarrollador de aplicaciones web y como siempre los chicos de google quieren enseñarnos a usarlas han creado una web donde tiene video de entrenamiento para que puedas aprender a utilizar esta herramienta.

Animo a cualquier que todavia no sepa usar esta herramienta a que descubra lo maravilloso de este mundo.

martes, 12 de marzo de 2013

Tutorial sobre CSS Layout para maquetar

Un buen tutorial para comprender muy bien el uso de css layout para cuando estamos maquetando nuestros proyectos web.

Unos de los mejores que he visto


link : http://learnlayout.com


martes, 5 de marzo de 2013

Lectura obligada de como crear mejores landing page

He leido un articulo de como crear mejores landing page para nuestro sitio web. A veces cuando diseñamos una pagina tenemos muchos problemas al escoger que elementos son los apropiados para  nuestra pagina y cuales llamaran mas la atención de nuestros usuario.

No solo basta con tener un diseño bonito también necesitamos resolver un problema que tenga nuestro usuario y tambien  darle la solución. Nathan Barry ha escrito en su pagina una historia sobre como diseño su landing page en unos de sus proyectos y créanme cuando les digo que la lectura vale totalmente la pena ,  aprenderás muchas cosas del proceso y en que partes debes enfocarte mas cuando creas landing page.

Bueno todo bonito hasta ahora lo único malo aquí es que la pagina esta en ingles y si no puedes leer un poco de ingles te puedes ayudar con el traductor de google , de cualquier manera es una lectura que no puedes perderte.

Link : http://nathanbarry.com/step-by-step-landing-page-copywriting/





lunes, 4 de marzo de 2013

Aprende expresiones regulares de manera visual

En el campo de programación las expresiones regulares suelen ser las mas difíciles de entender , pero hoy he descubierto una herramienta donde puedes probar tus expresiones regulares de manera visual ,  esta herramienta es increíble  para llegar a entender como funcionan las expresiones.

Link: http://www.debuggex.com/?re=&str=


martes, 26 de febrero de 2013

Aprende a usar git en 15 minutos de forma interactiva



Si alguien por ahi quiere aprender a usar  GIT  he encontrado un link de una web donde de manera interactiva aprenderas a usarlo.

link: http://try.github.com/levels/1/challenges/1

tlk.io reviviendo los chat rooms desde el infierno



Necesitas una sala de chat rapido para compartir ideas con tu amigos ? tlk.io te crea una sala de chat rapido y facil que puedes compartir con una  url.

Solo escribe el nombre de tu sala y despues compartes tu link nada mas facil que eso.

He visto muchos muchos proyectos de chat pero este es el mas facil , rapido y sobre todo muy elegante para usar. puedes insertarlo en tus paginas web para interactuar con tus usuarios .

Pense que los chat room estaban muertos pero este proyecto ha dado en el clavo para dejarlo morir..

link: http://tlk.io/