Un naúfrago en una isla


Archive for the ‘Informática’ Category

Una forma elegante de formatear una fecha

Todos sabemos que MySQL devuelve los campos de tipo fecha con el formato “YYYY/MM/DD” que en Europa es poco práctico, así que a la hora de presentar dichos campos siempre tenemos que formatearlos. En PHP Se puede formatear usando la función substr pero lo cierto es que la forma más elegante sería usando la función date:

function formatDate($mydate){
		return date('d/m/Y H:i:s',strtotime($mydate));
}

Donde $mydate sería el campo fecha devuelto por MySQL.

  • Share/Bookmark

Como logarse a una cuenta de Google con PHP y cURL (II)

Hace ya varios meses que posteé una forma de logarse a una cuenta de Google usando cURL. Yo particularmente lo usaba para obtener ciertos datos de Google Analytics y procesarlos. Pero hace algunos días este script dejó misteriosamente de funcionar y, tras una ardua búsqueda en Internet, descubrí que el problema estaba en un nuevo parámetro que hay que enviar por POST a la hora de logarse. El parámetro se llama GALX y el problema está en que su valor no es estático sino que se genera dinámicamente cada vez que se accede a la página de login.

Pero “a grandes males, grandes remedios”. Así que la solución está en extraer el valor de GALX (que se almacena en un input type hidden) del formulario de login y enviarlo como parametro a través de cURL. Como una imagen valen más que mil palabras os dejo el script tal y como debería quedar para logarse sin problemas

<?
//authentication

$churl ="https://www.google.com/accounts/ServiceLoginBoxAuth";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.25 Safari/532.0");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL, $churl);
$response=curl_exec ($ch);

$pattern = '/name="GALX"\s+value="(.+)"/';
preg_match($pattern, $response, $matches);
$GALX=$matches[1];

$churl ="https://www.google.com/accounts/ServiceLoginBoxAuth";
$username=urlencode('usuario@dominio.com'); //por lo general será usuario@gmail.com
$password="tupassword";
$postdata="GALX=$GALX&Email=$username&Passwd=$password";

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_URL, $churl);
curl_exec ($ch);

//end authentication
?>
  • Share/Bookmark

Comando en linux para reemplazar texto

Reemplazar un texto por otro en varios ficheros a la vez se puede convertir en algo tedioso, sobre todo si esos ficheros no están ubicados en el mismo directorio, o incluso puede darse el caso de que no sepamos que ficheros necesitan ser reemplazados. Para ello tenemos este pequeña sentencia que nos ayudará a hacerlo del tirón :)

find . -name  "*.txt" -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;

Este comando lo que hará es buscar todos los ficheros con extensión txt en el directorio y subdirectorios desde donde estamos lanzando el comando, y reemplazará en todos los ficheros que encuentre la palabra TEXTO1 por la palabra TEXTO2.

En el caso de que queramos cambiar cualquier fichero sin importar la extensión tan solo tenemos que sustituir -name  ”*.txt” por -type f

find . -type f -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;

Nunca está de más recordar que es una sentencia bastante peligrosa ya que no hay marcha atrás. Hay que estar muy seguro de lo que queremos sustituir y donde queremos sustituirlo ;)

  • Share/Bookmark

La puÑetera eÑe

Uno de los primeros problemas al que nos enfrentamos los hispanoparlantes cuando vivimos en el extranjero es a la ausencia en nuestros teclados de nuestra querida letra Ñ.  Solucionarlo es relativamente fácil cuando posees un teclado normal, ya que como todos sabéis, con la combinación de teclas “ALT+164 y ALT+165″ podemos insertar la letra ñ tanto en minúsculas como en mayúsculas.  Pero qué pasa cuando no tenemos teclado numérico como sucede en la mayoría de portátiles?.

Yo durante bastante tiempo tuve instalado en Windows los dos teclados (el irlandés y el español) y pasaba de uno a otro con la combinación de teclas  ”ALT+SHIFT”.  Pero muchas veces no pulsaba correctamente las teclas y escribía un “;”, otras veces (y no sé por qué) se quedaba marcado el bloqueo mayúsculas…total, que al final tardabas más que copiando y pegando la ñ de otro lado.

Así que ese fue el siguiente paso, tener siempre a mano la página de Google España y así poder copiar alguna de las ñ’s que salían en su web…pero el método me parecía (y me parece) super cutre así que me dije…”vamos, por dios, tiene que haber otra manera”. Y sí que la hay y consiste en…remapear el teclado.

En algunos teclados, como el irlandés o el de UK, pulsando “Alt Gr + vocal” consigues que esa vocal salga acentuada. Así es como yo pongo las tildes, me parece la forma más rápida.  Yo quería poder hacer lo mismo para la ñ pulsando “Alt Gr + n”. Pues bien, cómo podemos hacer eso?, pues remapeando el teclado como ya hemos comentado antes.

La propia Microsoft nos pone a disposición un programa muy sencillo de usar para poder hacerlo, el Microsoft Keyboard Layout Creator . Una vez instalado el programa sólamente hay que seguir unos cuantos pasos.

1) Nos vamos al menú “File” y seleccionamos la opción “Load existing Keyboard…”

keyboard1

2) En este ejemplo vamos a usar el teclado de UK,  por lo que será el que seleccionaremos en la lista:

keyboard2

3)  Una vez cargado el teclado que deseamos modificar, marcamos la casilla “Alt + Ctrl (AltGr) ” y hacemos click sobre la tecla “n” del teclado virtual que aparece en el programa. Se nos abrirá una ventanita donde deberemos poner la letra que queremos que se corresponda con esa combinacion de teclas (en nuestro caso la letra ñ). Después hacemos lo mismo pero marcando además la casilla “Shift” para así poder introducir la Ñ mayúscula.

keyboard3

4)  Ahora que ya hemos remapeado el teclado, nos vamos al menú “Proyect” y seleccionamos la opción “Properties”.  Rellenamos los campos a nuestro gusto (no dejar ninguno en blanco) teniendo en cuenta que el campo “Name” no puede tener más de 8 caracteres, y le damos al botón “Ok”

keyboard4

5)  Ya por último nos vamos de nuevo al menú “Project” y seleccionamos “Build DLL and Setup Package”. Si todo ha ido bien el programa nos mostrará un mensaje diciéndonos dónde se ha creado el instalador del nuevo teclado e incluso dándonos la opción de abrir el directorio donde se encuentra (por defecto en la carpeta de “Mis Documentos”). Decimos que sí para que abra el directorio y nos encontraremos, entre otros ficheros, un fichero llamado “setup.exe” que es el que ejecutaremos para instalar nuestro nuevo teclado. Se va a instalar como si se tratara de un programa normal. De hecho podremos más tarde desinstalarlo yéndonos a “añadir o quitar programas” del Panel de Control de Windows, como cualquier otro programa.

6) Y por fín, el último paso :) . Ahora solamente nos queda seleccionar el nuevo teclado en nuestra configuración regional de Windows y borrar nuestro antiguo teclado.

keyboard5

Todo este proceso no lleva más de 5 minutos aunque a primera vista parezca un poco enrevesado.  Además, si tenemos que hacer esto en varios ordenadores con el mismo teclado, no hace falta decir que no es necesario instalar el Keyboard Layout Creator en todos ellos, simplemente con ejecutar el instalador del nuevo teclado que hemos creado es suficiente :)

Espero que os sea de ayuda este post ;)

  • Share/Bookmark

Como situarse en un punto concreto en un vídeo de Youtube

¿Cuántas veces hemos dicho (probablemente escrito) “lo interesante empieza en el minuto 1:37 del vídeo” o “fíjate en la chica que sale en el minuto 4:37″?, ¿muchas verdad?.

Pues bien,  todos sabemos que no es  muy complicado moverse por un vídeo de Youtube usando la barra de progreso del mismo, pero nunca está de más saberse este pequeño truco para poder enlazar directamente con la posición del vídeo que queremos mostrar.

Para ello solamente tenemos que añadir al final de la URL el siguiente texto:

#t=5m21s

Donde el 5 serían los minutos y 21 los segundos de la posición del vídeo que queremos ver.  Con este ejemplo quedará más claro. Vamos a situarnos en el segundo 32 del vídeo:

http://www.youtube.com/watch?v=sCRT2KzsPaM#t=0m32s

Supongo que todos habéis visto la luna reflejándose en el agua de una piscina sin tener que visionar los 31 segundos previos verdad?.

Pues eso es todo amigos, sé que olvidaréis como se hace en el momento que necesitéis hacerlo pero oye, lo importante es la salud!! :)

  • Share/Bookmark

Dentro de 20 años

Siempre he pensado que estuve acertado a la hora de decidir como ganarme la vida. Ser programador me ha servido para poder cambiar de trabajo cuando he querido, de forma rápida y con un sueldo, que sin ser alto, sí que era superior al de la media. Aunque programar es lo que menos me gusta dentro de lo que es la informática, lo cierto es que no se me da mal y en ocasiones hasta  me entretiene (que eso en un trabajo no es poco). Hasta ahí todo bien…pero hay una cosa que desde que cumplí los 30 años me inquieta bastante…qué pasará dentro de 20 años?.

Puedo imaginarme a un panadero, a un profesor…a un montón de profesionales cumpliendo su labor dignamente a cualquier edad…pero un programador?, podré competir con los jóvenes? la experiencia será suficiente?. Y si me reconvierto dentro de la profesión…qué sabré hacer?, mis conocimientos son tan técnicos que si me sacas de ellos no soy nadie. No tengo madera de líder, ni cualidades organizativas o comerciales. Yo necesito un teclado y un problema informático, es lo único que sé hacer. Tal vez sería hora de empezar a labrarme otro porvenir.

Lo que tengo claro es que dentro de 20 años, si la salud me acompaña, sabremos la respuesta ;)

P.d: aunque en todos los posts parezca un amargado siempre llevo mi sonrisa a cuestas eh? :)

  • Share/Bookmark

Cambiar el formato de una fecha devuelta por Microsoft SQL Server

No sé por qué extraña razón MS SQL Server devuelve las fechas en el formato “1 Jan 1900 0:00″ que es bastante poco práctico, todo sea dicho. Así que si estáis programando con PHP podéis formatear la fecha a vuestro antojo simplemente añadiendo esta sentencia:

$format="d/m/Y H:i";
date($format,strtotime($mydate));

siendo $mydate la fecha devuelta por MSSQL y $format el formato que le queráis dar

Una cosa más para finalizar. Sí no os muestra los segundos (os muestra siempre cero segundos) simplemente añadid esta línea a vuestro script php

ini_set('mssql.datetimeconvert',false);
  • Share/Bookmark

Como asociar tu propio dominio (con y sin WWW) a un blog de blogspot

Hace poco mi novia se creó un blog en Blogspot (o Blogger) y queríamos asociarle un dominio que habíamos comprado. No queríamos una simple redirección sino que la URL siempre fuera la del dominio. Los de Blogspot, que recuerdo que pertenecen a Google, tenían pensada esa posibilidad y haciendo ciertos cambios en los registros DNS de tu dominio podías asociarlo sin problemas.

Busqué por Internet y en el mismo blog de ayuda de Blogspot te explicaban como hacerlo. Lo curioso es que, si echais un vistazo a dicho artículo, explican como asociar el subdominio www.tudominio.com (es decir, con las www) pero no explican como asociar el dominio a secas, sin las www.

Le estuve dando vueltas y caí en que si además de crear el registro CNAME  que explicaba la ayuda, creaba un registro de tipo A, podría asociar el dominio sin las www.  El problema es que, como bien sabéis, un registro A tiene que apuntar a una dirección IP…y qué IP poner?. Pues muy sencillo, hice un ping a ghs.google.com  y me devolvió la IP 66.249.91.121…voilà, al día siguiente (ya sabéis que tarda un poco en propagarse las DNS, a veces son minutos y otras veces días) tanto con las www como sin ellas se podía acceder al blog.

Espero que este post os haya servido de ayuda :)

Registros DNS

  • Share/Bookmark

Hola, me llamo Jesús y soy googlecohólico

Ayer por la mañana Google dejó de funcionar, bueno, mejor dicho, dejó de funcionar correctamente. Y es que, como explican en el blog oficial de Google, un error humano hizo que todos los resultados de la búsqueda fueran catalogados de “peligrosos” y no se podía acceder a ellos con un simple click.

Pues durante esa hora estuve completamente bloqueado, es tal mi dependencia que ni siquiera pensé en usar otro buscador como Live Search o Yahoo.

Y lo cierto es que esto ya me lo tenía que haber olido cuando hace tiempo que dejé de meter las urls en la barra de direcciones, directamente meto el nombre de la web en el buscador de Google. Ya ni siquiera me preocupo de escribir las palabras bien en inglés, dejo que Google me las corrija (terrible error por mi parte) y lo primero que hago cuando reinstalo por completo un ordenador es instalar la barra de herramientas de Google …y así un larguísimo etcétera …

Si os interesa hacer terapias de grupo ya sabéis donde encontrarme :P

  • Share/Bookmark

ATI y sus bucles infinitos

Mi “suegro” llevaba meses con un problema en su portátil nuevo. Cada cierto tiempo y aleatoriamente le salía un pantallazo azul de Windows que le hacía perder todo el trabajo (porque no quedaba más remedio que reiniciar el ordenador). Así que llevaba meses escribiendo una palabra y grabando, escribiendo una palabra y grabando…un auténtico martirio vamos. Como nunca quiere molestarme estuvo así durante mucho tiempo hasta que ya desesperado me contó lo que pasaba. El problema ocurría en Windows XP porque cuando arrancaba con Vista (tiene los dos instalados en el mismo ordenador) no le pasaba. Obviamente, por razones que no vienen al caso, no le quedaba más remedio que usar XP :) .

En concreto, el error que le salía era este:

En Español:

“Se ha encontrado un problema y Windows ha sido apagado para evitar daños al equipo.

El problema parece estar originado por el siguiente archivo: ati2dvag

Si esta es la primera vez que se ve esta pantalla de error de detención, reinicie el equipo. Si esta pantalla aparece otra vez, siga los siguientes pasos:

La unidad del dispositivo se ha estancado en un bucle infinito. Esto usualmente indica que hay un problema con el mismo dispositivo o con la unidad del dispositivo que ha programado el hardware incorrectamente.

Consulte con su proveedor de dispositivos de hardware para obtener cualquier actualización de controladores.”

En inglés:

“A problem has been detected and windows has been shut down to prevent damage to your computer.

The problem seems to be caused by the following file : ati2dvag

If this is the first time you ‘ve seen this stop error screen, restart your computer. If this screen appears again, follow these steps :

The device driver got stuck in an infinite loop. This usually indicates problem with the device itself or with the device driver programming the hardware incorrectly.

Please check with your hardware device vendor for any driver updates.”

Estuve investigando y vi que era un problema que llevaban arrastrando las tarjetas de video ATI desde hace varios años, concretamente encontré entradas en foros preguntando como solucionar este problema del 2003.

Probé todas las posibles soluciones sugeridas y el problema persistía hasta que vi en un comentario de un blog (lo siento, no recuerdo donde) que una persona lo había solucionado instalando los drivers modificados de Omega. Desinstalé los drivers oficiales de ATI, instalé los Omega driver y…mi suegro todavía me lo está agradeciendo ;)

Esta es la dirección para bajaros los Omega drivers:

http://www.omegadrivers.net/ati.php

Tened en cuenta que no son los drivers oficiales de ATI sino unos modificados, así que no me hago responsable de lo que pueda pasar. Aunque para vuestra tranquilidad os diré que yo los usé hace tiempo y jamás me dieron ningún problema. Además, que puede ser peor que tener que reiniciar el ordenador cada dos por tres? :)

Espero de corazón que esto os sirva para solucionar el problema en vuestro caso.

  • Share/Bookmark