20140328

Cómo hacer miniaturas de una web desde Ubuntu

UPDATE: EN UBUNTU 14.04 HE TENIDO QUE HACER UN PAR DE CAMBIOS PARA QUE FUNCIONE:
- En lugar de instalar libicu48 se debe instalar libicu52, o sea:
apt-get install libicu52
- El make petará porque se tienen que incluir unas clases adicionales, ir al fichero CutyCapt.hpp y añadir estas lineas al principio antes de hacer el make.
#include
#include

#include

En este post quiero explicar como realizar un screenshot de una URL cualquiera utilizando un software gratuito y de código abierto que funciona de maravilla.

Vamos a usar CutyCapt, en concreto vamos a ver la instalación y ejecución en Ubuntu.
























Primero vamos a instalar librerias de soporte varias, entre ellas Subversion para descargar CutyCapt de su repositorio y xvfb que nos permitirá lanzar una instancia de XWindows de manera muy sencilla.

apt-get install subversion libqt4-webkit libqt4-dev g++ xvfb libicu48 

Descargamos CutyCapt de su repositorio de subversion (posicionarse primero en el directorio donde lo queramos instalar):

svn co svn://svn.code.sf.net/p/cutycapt/code/ cutycapt 

Instalamos:

cd cutycapt/CutyCapt 
qmake
make 


Ya estamos listos para usarlo!

 Ejemplo de comandos:

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.omatech.com --out=omatech.png 
xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.easypromosapp.com --out=easypromos.png 

Podemos jugar con los distintos parámetros como la resolución de pantalla y por supuesto la url y el fichero y formato de salida.

Con estas sencillas instrucciones puedes montar un generador de thumbnails de urls con muy poco esfuerzo via línea de comandos.

Puedes adaptar fácilmente estas instrucciones a tu propia versión de Linux, creo que CutyCapt incluso funciona para Windows.

 ¡A disfrutar!

Más información sobre CutyCapt en su web: http://cutycapt.sourceforge.net/

20140202

Playing with the Marvel API in PHP

This sunday afternoon I've been trying the new marvel.com API.

As a huge fan of the house of the ideas I think this can be a great tool for developers around the world.

If you're new to the API you must connect to marvel developers developer.marvel.com and sign in and request an API key.

Once you get your private and public keys you can try the API, there are methods for getting comics, characters, creators and much more.

You can use this little sample to see the working of the API if you're a PHP coder.

You can see a live demo here marvel.omatech.com this simply shows 100 characters per page and let you select the page in the top links, you can browse all the Marvel characters in only 40 lines of code.

20140101

Presentació de l'iPhone SDK (esdikey)

(post del 2008 que se'm va quedar en drafts)

Aquesta nit no podía dormir i com que sabía que hi havia la presentació d'Apple del nou SDK per l'iPhone, m'he decidit a veure el vídeo de presentació.

JA NO PODRE DORMIR !

Increible, un SDK amb accés a totes les funcionalitats del Sistema Operatiu i les increibles funcionalitats que només trobes en un iPhone:

- Multi-touch interface
- TCP/IP integrat
- 3D Engine
- Posibilitat de localitzar-te
- Accés a la API del accelerometer (moviment espaial, tipus Wiimote)
- SQLLite integrat

A més el SDK es gratuit, pots baixar-te'l i començar a programar JA!

També han pressentat una especie de tenda on podras descarregar els programes (sempre validats per Apple). Falta veure si aquest model de distribució de software trionfa o no, pero les característiques son espectaculars.

- Instal.lació i actualització dels programes "over the air" sempre que tinguis connexió
- Els programes gratuits son realment gratuits, si passen el control de qualitat d'Apple, el desenvolupador no ha de pagar res i l'usuari tampoc.
- Els programes de pagament es venen amb un rati de 70-30 (70 pel developer, 30 per Apple)

L'unic fee que han anunciat es un fee de 99$ per entrar dins del developer program, amb la qual cosa crec que donaran support als desenvolupadors, dema mateix, omatech.com s'apuntarà al developer program, no hi ha res a perdre i si molt a guanyar.

Bé, els competidors ja es poden possar les piles:
- Nokia ja cal que espabilis
- Microsoft deixa-ho ja, si en tants anys no t'has fet amb el mercat, ja no ho faras
- Google, potser necessitaras alguna cosa més que un Android per trencar el mercat.

Si encara no era un "believer" avui m'han convençut, l'iPhone arrasarà, es un producte trencador que pot capturar molt "developer mind share" en molt poc temps i aquest cop Microsoft no té ni idea del que li ve a sobre.

Més informació a http://developer.apple.com
Per cert aquí teniu el vídeo que m'ha fet veure la llum

Historic handhelds en els últims 16 anys

Tots els que em coneixeu sabeu que soc un friki dels gadgets tipus PDA o handheld des de fa un munt d'anys, en concret el 2014 farà 16 anys que tinc dispositius d'aquest tipus.

Com a registre personal documento les meves compres:

Palm Personal - 17/04/1998 (29 messos d'us)
Palm Vx - 01/09/2000 (27 messos d'us)
Palm Tungsten T - 05/12/2002 (24 messos d'us)
Palm T|5 - 20/12/2004 (25 messos d'us)
Palm T|X - 05/01/2007 (19 messos d'us)
Palm Centro - 27/07/2008 (22 messos d'us)
Palm Pixi Plus - 25/05/2010 (13 messos d'us)
iphone4 - 10/06/2011 (30 messos d'us)
iphone5c 10/12/2013 (?)

Com veureu l'iPhone4 ha estat el gadget que m'ha durat més, molt aprop de la primera Palm Personal que vaig tenir, l'iPhone4 encara em podia haver durat més pero el canvi a iOS7 l'ha enlentit molt, en canvi el hardware estava en perfecte estat i el guardaré com backup del nou iPhone5c.

Post resum 2013

Gadgets of the year (comprats o regalats):
Bateria multi-dispositiu
Aeroccino de Nespresso
Deshuesador per cireres i olives
iPhone 5C

Samarretes del any:
Evolucio acabant en robot
#soytanfriky (amic invisible d'omatech)

Friky coses guays:
angular.js
sphinxsearch per cerques per proximitat geoespacial
postman
pusher
Panic's Status Board
Meteor.com
redline
ReactPHP
Neo4j
ArangoDB
FoundationDB

Jocs als que m'he viciat aquest any:
Dots
Plants vs Zombies 2
Speedball2 (iOS)

Grups guays que he descobert aquest any:
The babies
Merchandise

Millors concerts als que he anat:
Blur
Breeders
Adam Green and Binki Shapiro
The postal service

Millors pelis que he vist:
Life during wartime
The descendants
Los Vengadores
Un metodo peligroso
La historia mas grande jamas vendida
Rompe Ralph
Hysteria
Malditos bastardos
Terminator Salvation
Young Adult
Nunca me abandones
Resident Evil, venganza
El dictador
Lo imposible
Star Trek into darkness
Argo

Llibres que he llegit i m'han agradat:
Biografia d'Steve Jobs
Rework, Jason Fried
Yo, precario, Javier Lopez Menacho
Matar al padre, Nothomb
Condenada, Palahniuck
World War Z, Max Brooks

Comics:
Cuarenton
Guia del mal padre
Europesadilla
Los capullos no regalan flores
Messiah Complex
198
Planet Hulk
World War Hulk
Fear Itself
The Chaos Wars
Avengers vs. X-Men
War of Kings
Ardalen

Series a les que m'he enganxat (per ordre d'adiccio):
Breaking Bad s1, s2, s3, s4, s5
Game of thrones s3
Boarwalk Empire s3
Big Bang s6
The walking dead s3
The following s1
Fringe s5

Teatre:
Incendis al Romea
Palla, Fusta, Pedra al tantarantana
La granja mes petita del mon a la fundacio Miro
Blancaneus al Casino l'Aliança
Aladdi al Casino l'Aliança
Ventafocs al Casino l'Aliança
Do not disturb al Casino l'Aliança

Documentals:
Searching for Sugar Man
Documental Tomi Hungerer

Millors restaurants:
Gorria
Els pescadors
Mam's (Arbucies)

20131116

Problems with a rootkit


During this week I've been struggling with a problem with one of our servers.

The server started to collapse with no aparent reason, sometimes we see suspicious processes like this:

./m64 -o stratum+tcp://mine.pool-x.eu:9000 -u gvsall.64 -p 64 --algo scrypt --no-longpoll -B

Searching in google found that it's a miner of bitcoins WTF???

Killing the process and changing the root password seems to have no effect, then I've got to make deeper analysis.

Finally I figured out that the problem was a rootkit installed on the server, then I've taken two curses of action:

1) Remove the rogue software installed
2) Avoid being hacked again addressing the server's vulnerability

1) Remove the malicious software installed by the rootkit


Usually those kind of programs install in temporary folders, look at:
/tmp
/var/tmp

ALERT: Always look with -a flag because usually there are lots of hidden files 

ls -la 

You must look too for crontabs installed by the rootkit.

cd /var/spool/cron/crontabs
ls -la 

Look specially for www-data crontabs or users that you don't control and musn't be there.

Look too in the /etc/passwd file looking for uncontrolled users, use the last command to see last logins into the system.

To find suspicius files and processes you can use this programs, are really easy to use and will give you clues about how to solve the server's vulnerability too:


Look for the reports generated by those and rm or quarantine the rogue files.

2) Avoid being hacked again addressing the server's vulnerability


Usually those kinds of programs are installed using some webserver vulnerability.

Years ago I've found a similar rootkit that exploited a vulnerability of PHPMyAdmin, the rule of thumb is try to update your software often to avoid this kind of problems.

This time it was a problem with php running in CGI mode.

You must look at clues using chkrootkit and rkhunter, then look at the apache logs for suspicius strings like:

GET /w00tw00t.at.ISC.SANS...
POST //%63%67%69%2D%62%69%...
POST cgi-bin/php-cgi?-d+allow_url_include=on+-d...
POST cgi-bin/php5?-d+allow_url_include=on+-d...

Often you didn't even need the cgi-bin/php running at all because the standard installation doesn't work through CGI. That's old configuration and probably you don't even need that.

If you can avoid using cgi-bin look at the sites-enabled folder and try to get rid of cgi configurations. Look specially at default site, you can find old lines of config that you don't use at all.

Restart the Apache server after that.


Interesting posts and links:

20130218

Como transformar tablas MyISAM a InnoDB masivamente en MySQL

He encontrado este truco en StackOverflow funciona bien con tablas relativamente pequeñas, del orden de Megas, si pasamos a tablas de Gigas el tema empieza a tardar y ya tienes que hacer algun tipo de exportación e importación.

El script:

SELECT CONCAT('ALTER TABLE `',table_schema,'`.'
,table_name,' ENGINE=InnoDB;') InnoDBConversionSQL
FROM information_schema.tables 
WHERE engine='MyISAM' AND table_schema NOT IN
('information_schema','mysql','performance_schema') 
ORDER BY (data_length+index_length);


Si quereis ver el tamaño de cada tabla antes de ejecutarlo:

SELECT CONCAT('ALTER TABLE `',table_schema,'`.'
,table_name,' ENGINE=InnoDB;') InnoDBConversionSQL
, data_length+index_length
FROM information_schema.tables 
WHERE engine='MyISAM' AND table_schema NOT IN
('information_schema','mysql','performance_schema') 
ORDER BY (data_length+index_length);

Recomiendo siempre empezar por las primeras tablas (más pequeñas) e ir subiendo, hasta que veamos que el proceso tarda demasiado.

20130103

Post resum del 2012

Gadgets of the year (comprats o regalats):
Carregador solar iPhone
iPad mini

Samarretes del any:
Twitter entre ocells
El pingüi emperador
El ciclop i les ulleres 3D
El dinosaure jugant als asteroids
Lobezno looney tunes
La tassa "I was here"
Conversa ipod walkman
Arquitectura d'Star Wars
Che-Waka
Han Solo
May the force be with you (Halcon milenario)
Human after all
Los planetas


Friky coses guays:
3D printing
Descubrir que "The Wizard of Oz" era una critica al patro Or i una crida a incorporar la Plata. Silver Bugs
Trello
Git
phpfog
redis
blitz
pingdom
siege
emberjs
divshot
http://www.senado.es/web/composicionorganizacion/senadores/composicionsenado/senadoresenactivo/consultaordenalfabetico/index.html?id=500K%20FOR%20THIS%20CRAP
Que Joss Weddon va ser un dels guionistes de Toy Story

Jocs als que m'he viciat aquest any:
DESERT

Grups guays que he descobert aquest any:
DESERT

Millors concerts als que he anat:
The Pains of being pure at heart (razz2)
Stone Roses
Maximo Park
The Cure
Sr. Chinarro

Millors pelis que he vist:
Batman capucha roja
La verdadera historia de la Princesa Leia (Wishful Drinking)
The help
Sherlock Holmes juego de sombras
Toy Story 3
Cisne negro
Un dios salvaje
Los chicos estan bien
Solo una noche
Insidious
Kidnapped: historia de un secuestro
Sombras tenebrosas
No tengas miedo a la oscuridad
Caperucita roja
Contagio
La dama de hierro
Batman a–o uno
Los juegos del hambre
Moonrise Kingdom
Brave
J. Edgard
La pesca del salmon en Yemen
TED
Prometheus
Batman: Dark Knight Rises

Curts:
No tomorrow
Simiocracia

Llibres que he llegit i m'han agradat:
Los juegos del hambre
Una forma de vida, Amelie Nothomb

Comics:
Molts, no ho he registrat però l'ultim "Sonrisas de Bombay"

Series a les que m'he enganxat (per ordre d'adiccio):
Boardwalk empire s2 s3
Walking Dead s2 s3
Downtown Abbey s2 s3
Big Bang s6
Sherlock s1 s2
Mentes criminales s6 s7 s8

Documentals:
Profesion IT-Girl
Perl Jam 20

Sortides al Extranjer:
DESERT

Millors Hotels als que he anat:
DESERT

Millors restaurants:
Els Pescadors
Gorria

20121009

Update daily USD to EUR exchange rate in PHP using openexchangerates.org

The process, loops for the last days and call the API of openexchangerates.org, storing in the database the daily conversion from USD to EUR.

require_once('./conf/config.php');
require_once('./models/exchanges.php');

$exchanges=new exchanges();
$days = array();
for($i = 1; $i < 10; $i++)
{
  $days[] = date("Y-m-d", strtotime('-'. $i .' days'));
}
foreach ($days as $day)
{
  $json = file_get_contents('http://openexchangerates.org/api/historical/'.$day.'.json?app_id=YOURAPIID');
  $data = json_decode($json, TRUE);
  $conversion=$data['rates']['EUR'];
 if ($exchanges->exists($day))
 {
   $ret=$exchanges->update($day, $conversion);
 }
 else
 {
   $ret=$exchanges->insert($day, $conversion);
 }
  echo($day.' '.$conversion.' '.$ret).SEP;
}


Enjoy!!!

20120601

Promociones en Facebook

Hoy os presento promociones-en-facebook.com donde podreis estar al dia de las promociones y concursos que se crean en Facebook.

¡Estad atentos a los chollos!