Categoría: Programacion

Una ayudita para dos errores comunes en XAMPP y otros

Escrito el , visto 2334 veces Ver usuariopor Fabio Baccaglioni



Para aquellos web developers que tienen que trabajar en PCs con Windows una solución muy común es instalar a mano todo o utilizar un paquete como XAMPP o WAMP o similar. Hay varios pero eso no es lo relevante, el problema es el manejo (o más bien, la falta de...) de certificados en la Windola.

A veces por más que queramos no podemos instalar un Linux (mi PC de laburo tiene 6GB de RAM, olvídense de virtualizar) y siempre desarrollar en local es lo mejor, así que vamos con dos tips para dos errores comunes, usualmente cuando usamos CURL y cómo resolverlos. Y si, se que muchos ya no usan PHP porque no es "cool", pero ellos tienen otros problemas (dale Node, dejá de descargar mil paquetes para un puto hola mundo), pero todavía hay millones de desarrollos en esta plataforma.

Lo común es encontrarse con el error:

Fatal error: Uncaught CurlException: 77: error setting certificate verify locations


o similares, si justo estan trabajando con la API de Facebook (y su SDK) seguro que se les da, otro también es:

SSL certificate error: unable to get local issuer certificate


Mismo problema pero con el certificado SSL, pues bien, lo ideal en estos casos es descargar un certificado válido (el famoso cacert.pem o ca-bundle.crt) e instalarlo de forma local y manual.

Primero que nada apaguen Apache, stop al servicio, y busquen dónde está PHP en su instalación. Si utilizan XAMPP seguro es bajo C:\xampp\php\

Descarguen uno de estos certificados, este o este y lo guardan en la misma carpeta.

Luego editan el archivo php.ini y buscan dos tags en particular: curl.cainfo y openssl.cafile y agregan la ruta al certificado:

curl.cainfo="C:/xampp/ca-bundle.crt"

openssl.cafile="C:/xampp/ca-bundle.crt"


Ahora pueden reiniciar el Apache (o Nginx, lo que usen) y listo, su app de prueba de facebook o google o lo que sea que necesite certificado va a funcionar (si tienen suerte :D).

Seguir leyendo el post »

El problema del volumen de datos que nunca pudiste probar

Escrito el , visto 4761 veces Ver usuariopor Fabio Baccaglioni



Más de una vez programamos algo pensando que está funcionando ok, que la solución fue bien pensada, que está todo como debería. Lo probamos, "en local funciona", armamos el deploy y lo mandamos al servidor sin volver a pensar en él.

Pero siempre, siempre, hay un problema de performance, y les puedo contar mil y una historias de problemas semejantes. Nadie testea una puta mierda con volúmen, nadie le da importancia y todo empieza a fallar.

Como sabrán algunos este blog no utiliza Wordpress, lo programé todo de cero y todavía sobrevive porque lo hackeo constantemente, un cachito aquí, otro allá, y más o menos sobrevive al paso del tiempo. Pero para cuestiones laborales o de otros clientes siempre utilizo Wordpress y un clásico allí son los plugins.

No voy a meterme en detalles técnicos demasiado complejos pero me dan ganas de contar un poco cómo es este tema para aquellos que putean desde el otro lado y no entienden qué está sucediendo en realidad, es como un pequeño rant para programadores, implementadores y usuarios que putean a diario :D

Seguir leyendo el post »

Contador de actividad en redes sociales

Escrito el , visto 10483 veces Ver usuariopor Fabio Baccaglioni

Estuve programando un poco para aliviar la carga en el blog, noté que el javascript necesario para imprimir los botones de Facebook, Google+ y Twitter era sencillamente demasiado.

El tiempo de carga de la web ya es alto porque, como casi todo blog, tiene un mínimo de una imagen por post, con diez posts por portada eso da un mínimo de 1Mb a 2Mb de datos, a eso súmenle todos los adornos, el CSS, fondo, íconos y avatares.

Pero esto era tan sólo transferencia, un segundo más, un segundo menos, optimizable y manejable, lo que no era optimizable eran los scripts externos.

Primero cambié post por post esto el año pasado:



Para contabilizar por cada post hice un script que toma justamente el mismo contador que ya tienen las redes para sus propios botones, pero a mediados del año pasado Twitter arruinó todo y quitó esa posibilidad. Actualmente es imposible saber, desde afuera de Twitter, cuánta gente compartió un enlace en particular. No importa, dejé el botón para que puedan seguir compartiendo la nota y así funciona.

Pero me quedaba otra parte del blog que todavía tomaba esa inmensidad de scripts, en el menú a la derecha. Tengan en cuenta que todos esos javascripts estaban tomando información de ustedes, trackeándolos, y ya bastante tenemos con los banners y analytics que el otro día Facebook anunció que empezaba a trackear usuarios externos a partir de estos botones y demás agregados. Basta, demasiado.

Así que me puse en campaña de reprogramar esta parte:



Toda consulta a las redes sociales se hace desde un cron en el servidor, no toca al usuario, evita ensuciar de más javascript el blog y acelera al menos un segundo la carga y ni hablar la presentación en PCs modestas o teléfonos.

El código fuente es sencillo y se los comparto aquí en mi Github ya que a alguno le puede llegar a servir. Está hecho en PHP pero tranquilamente lo pueden convertir a cualquier lenguaje, es una boludé.

Queda pendiente hacerle un template responsive al blog así no mantengo doble estructura y modernizarlo un poco, pero ¿Qué quieren? Bastante que sigue funcionando ¿No? Después les cuento más sobre el SSL que ya tienen funcionando hace semanas y que casi nadie notó.

Seguir leyendo el post »

Agregar Emojis en tu sitio o blog

Escrito el , visto 5245 veces Ver usuariopor Fabio Baccaglioni


Dato: si odiás a los emojis sos una persona completamente normal, si los amás sos Capitán Intriga

No, tranquilos, no voy a agregar Emojis aquí, es ya mucho peso y haría que la página tarde mucho en cargar, pero el otro día me pregunté si tenía a mano alguna librería que me permitiese hacerlo ¿De dónde los saco?

Para empezar no voy a juzgar demasiado (mentira) a quienes utilizan los emojis, para mi hay tres clases de personas, las que utilizan sólo palabras para expresarse (grandes escritores/redactores), los que utilizan palabras y gestos (yo me siento así) y los mudos que necesitan señas, claro. Pero los Emojis los ubico en un cuarto y nuevo grupo: los que no siendo mudos aun necesitan hacer señas porque no se saben ni una puta palabra :D

Bueno, no todos, si los usamos como los viejos símbolos ASCII que inventábamos, una vez cada tanto, estarías en el segundo grupo, son gestos, pero hay gente que no hace más que utilizar Emojis y encontré que existe forma de incorporarlos en un blog o sitio.

Seguir leyendo el post »

Scrapear Twitter sin consumir la API

Escrito el , visto 5296 veces Ver usuariopor Fabio Baccaglioni



Si algo está publicado en una web, se puede tomar, quiera o no el autor. Aun cuando te cierren o limiten una API, si es público, se puede obtener.

Así estaba yo ayer queriendo dejar de consumir tanto la API de Twitter cuando ejecutaba mi analizador de bots, estoy preparando una charla para el SM Day y quiero darla con data fresca y además un sistema mejorado (que publico en un git público, por si les interesa), pero me faltaba algo que le diese inteligencia al sistema para identificar bots más rápidamente.

La cuestión era sencilla, como humano basta con entrar al timeline de cualquier usuario de Twitter para darte cuenta si es un bot o no, hay patrones obvios que por más dedicación al spam que tengan no pueden evitar, de hecho, así es como funcionan la mayoría de los sistemas anti spam.

Por cada bot que identifico leo sus followers y followings, esta nueva lista de usuarios puede tener bots o gente común, si tenía de pronto 100 usuarios nuevos ¿Cómo podría identificar rápidamente si son potencialmente bots? si por cada uno vuelvo a consultar la API esto me dejaría sin API calls muy pronto, pero Twitter no te bloquea si simplemente entrás a la web de cada usuario.

Así pues ¿Podría identificar el texto en cada tuit publicado en su página sin tener que hacer una consulta a la API? Si, "scrapeando" la web de twitter...

Seguir leyendo el post »

Nuevo diseño en LinksDV

Escrito el , visto 3759 veces Ver usuariopor Fabio Baccaglioni



Así es, luego de mucho tiempo en desarrollo y principalmente porque no tenía un lapso de tiempo como para dedicarle, pude terminar el rediseño de todo el sitio de LinksDV.com

La nueva versión necesita MUCHO trabajo todavía, siempre se aceptan bugfixes y todo eso, principalmente del CSS que no es mi fuerte, pero básicamente lo que hice fue extender el diseño que ya tenía el RSS Reader a todo el sitio.

En esta primer etapa de rediseño las funcionalidades son casi las mismas de siempre, no quise agregar demasiado porque ya era mucho laburo arreglar mil y un formularios. Utilicé Bootstrap para hacer más fácil cualquier aporte, tiene incongruencias aquí y allá pero en líneas generales creo que quedó "usable".

Les cuento más detalles y novedades a continuación.

Seguir leyendo el post »

Un Putin en HTML5

Escrito el , visto 3646 veces Ver usuariopor Fabio Baccaglioni

Es un detallecito pero sirve como dato, hace ya un tiempo que más de un lector me había dicho que la página les estaba matando el procesador.

Hice la tarea (aunque haya mil cosas que mejorar en este blog, pero esta era jodida) sacando scripts innecesarios, hasta llegué a limpiar los headers y no dejar ni javascript alguno. El problema persistía.

Y ¿Saben qué era? el GIF de Putin!!!! ese que está en el pie de la página danzando y desconcentrando a todos :D así es, una boludez, miren que caía tanto Chrome como Firefox en esto, principalmente Chrome era el de peor performance, tienen algún drama con los GIFs grandes y por lo visto afectaba al procesador.

Pero como no voy a esperar a que Google le mejore la performance a eso (imagino que los Tumblr deben arruinar procesadores y la Ruleta Rusa ni me imagino), decidí cortar por lo sano, un Putin Danzarín pero en video:



Sencillamente cargarlo con el famoso tag Video de HTML5 y reubicarlo para que funcione mejor, creo que está óptimo ahora y seguramente no se ve bien con alguna versión de Internet Explorer o algún otro browser raro el cual no debe representar ni el 1% de ustedes así que, fuck you.

Miren con qué poco le podés cambiar la performance a un sitio :P

PS: lo loco es que todavía exista gente que nunca lo vió, ¿el scroll lo tienen difícil?

Seguir leyendo el post »

Un mapa con el clima actual

Escrito el , visto 3635 veces Ver usuariopor Fabio Baccaglioni

Google cierra Google Weather y me tuve que inventar mi propio mapa con clima, le quedan pocos días a esa API y es una lástima, proveía de un muy buen mapa (el de Google Maps) con datos climáticos de distintas ubicaciones, pero he aquí que, evidentemente, no es rentable y matan la API en un mes.

Por ende tuve que inventarme uno, si, utilizando Google Maps, pero en vez de recurrir a su set de datos lo hago con el propio. En Catchweather ya tengo muchas ubicaciones guardadas, así que pensé en lo siguiente, si tomo las que tengo en una zona delimitada, busco las más importantes (por tamaño), consulto el clima de cada una y lo muestro como marcadores, puede llegar a funcionar.



El trabajito no es simple, por cada ubicación debo consultar los RSS de un máximo de 20 localidades, se toma su tiempo, entre 2 y 3 segundos máximo, lo que frena un poco la velocidad de carga de la página. Esto con muchos usuarios no se nota, pero como somos poquitos por hora se nota, los status de clima los mantengo por cinco minutos así que, salvo que entremos todos cada un minuto, se nota cuando debe cargar todo de nuevo. Pero al no tener volumen no importa demasiado crear un cron o algo así.

Crear este mapa me permite, además, tener una nueva sección en Catchweather con el clima de zonas aledañas, lo que no quiero, todavía, agregarle es que puedas moverte por el mapa y vaya cargando dinámicamente más ciudades, el costo no lo justifica (y no soy Google!). Debería, eso sí, mejorar los íconos, pero por el momento estoy usando el mismo set de siempre, más adelante lo modernizo un poco, probablemente con algunos PNG con transparencias o algo así.

La idea es, también, ver si se puede proveer el servicio para los demás, no lo pensé en un comienzo pero si funciona para mí podría liberar el script, no es muy complicado, cada ciudad es un marcador, el ícono en vez de ser una flecha es el del clima local. El rango de coordenadas en el que busca es de dos grados en cada dirección y toma ciudades mayores, así que los pueblos chicos no debería mostrarlos. El sistema de posicionamiento y cálculo de tamaños es el de la API Places de Yahoo.



Lo bueno de hacerlo así separable es que puedo pasar el mapa a OpenStreetMap en cualquier momento, no es que lo prefiera porque es más lento, pero en algún momento Google decide que no es negocio para ellos que tengas su mapa y te lo baja. Es una pena que le quiten atención a servicios tan buenos que tienen pero, lo dan gratis! no puedo reclamar demasiado :P

Otro experimento que por ahí a algún nardogeek programador le interese.

Seguir leyendo el post »

MySQL: Full Text Search para palabras pequeñas

Escrito el , visto 5885 veces Ver usuariopor Fabio Baccaglioni



Si, ya se, ahora está de moda usar MongoDB y abandonar SQL a las patadas porque la moda así lo indica, pero a los hechos, el lenguaje SQL es genial y sirve para mucho, así que hago un minipost para programadores que hacen búsquedas Full Text Search (hice esa nota hace 10 años!!) en sus MySQL.

Como sabrán es pesadito hacer este tipo de consultas pero a veces tenemos una cantidad de datos que es manejable, por ejemplo un sitio web, ahora bien, MySQL viene configurado para no buscar palabras menores a 4 caracteres pero he aquí que MUCHAS siglas utilizan sólo tres.

AMD, ARM, OSX, iOS, ADN, RPG, JPG, mierda, no pararía de terminar de enumerarlas, las palabras o siglas de tres caracteres estan por todos lados así que para permitirlo hay que habilitar la cantidad:

en /etc/mysql/my.cnf (o donde tengan el archivo de configuración)

[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3


Y reiniciar el server. Ahora bien, hay que reconstruir los índices y para una tabla con 100.000 registros con texto que pesa 400Mb no es nada raro que se vaya al doble, lo digo por experiencia personal. El índice será enorme porque ahora contendrá muchas, muchas palabras más que si se quedaba en el límite de 4 carateres.

Para reiniciar los índices:

REPAIR TABLE tbl_name QUICK;


A todo esto, me sirvió para incorporar la búsqueda en el Lector de RSS de LinksDV. Si, ahora tienen un lector de feeds con buscador y todo Guiño

Seguir leyendo el post »

Se buscan developers!

Escrito el , visto 4277 veces Ver usuariopor Fabio Baccaglioni


Cabeza real de hacker en uso


Así es, esta vez soy yo el que está buscando desarrolladores para un proyecto en el que estoy trabajando hace un tiempo, es para el Ministerio de Modernización del Gobierno de la Ciudad de Buenos Aires, el área de Gobierno Electrónico que más innova y donde se pueden hacer muuuuuchas cosas muy interesantes.

Pero como siempre hacen falta cerebritos y programadores, es por ello que los convoco, porque se que a más de uno de ustedes les interesa jugar con nuevas tecnologías, cosas libres y abiertas (si, acá todo es Open Source), datos, sitios y muchas cosas más.

Andamos necesitando lo siguiente, en todos los casos perfiles Senior...

Web:

Senior backend Python / PHP / Javascript Preferentemente Conocimientos en Drupal, Django o expressjs son un plus.

Mobile:

Android nativo, un programador que realmente maneje Android como se debe. Plus los que sepan Titanium, JS y apps para iOS. Si ya tienen apps, envien url.

En ambos casos Git también es un plus porque todo se maneja con repositorios y mucho del código es publicado y forkeado libremente.

Se que no es muy específico porque estamos buscando perfiles "Senior" donde muy probablemente alguno no sepa alguna cosa pero pueda aprenderla rápidamente, además de lo buscado trabajamos con MUCHAS más cosas pero ya saben, es algo variadito.

Si estan interesados no duden en enviar su CV tanto a mí o al mail de Mariano Carballal marianocarballal(at)gmail(punto)com con el titulo "DEV GCBA", luego los contactaremos y habrá entrevistas y todo ese rollo, pero lo principal es que, si les interesa, envíen CV y nos comunicamos.

Seguir leyendo el post »

122 Noticias (13 páginas, 10 por página)



Powered by
Cake Division