viernes, 26 de septiembre de 2014

Error en la instalación de MongoDB en Debian 7


He estado utilizando a MongoDB con Debian para montar las bases de datos de la empresa donde trabajo (ser jefe tiene sus ventajas) y hasta hoy en la mañana no había tenido ningún problema. Traté de instalar mongodb en una de las máquinas de la oficina que tenía ya instalado Debian y falló. No tenía mucho tiempo de revisar, pensé que era un problema aislado y seguí con los pendientes del día anterior.

Poco entregaron un servidor y lo asignaron al área para que trabajaramos ahí y pusieramos en producción un proyecto, me sentí motivado porque siempre es bueno estrenar los juguetes nuevos, más si es un servidor.

Instalé algunas librerías, uno que otro paquete que necesitaba, NodeJS y demás. No tuve problema alguno hasta que empecé con MongoDB. Dos fallos en un día. Ni modo, a darle..

Seguí los pasos de la página oficial pero cuando quise iniciar el servicio....
[FAIL] Starting database: mongod failed!
[FAIL] Starting database: mongod failed!
invoke-rc.d: initscript mongod, action "start" failed.
dpkg: error al procesar mongodb-org-server (--configure):
 el subproceso instalado el script post-installation devolvió el código de salida de error 1
Configurando mongodb-org-mongos (2.6.4) ...
Configurando mongodb-org-tools (2.6.4) ...
dpkg: problemas de dependencias impiden la configuración de mongodb-org:
 mongodb-org depende de mongodb-org-server; sin embargo:
 El paquete `mongodb-org-server' no está configurado todavía.

dpkg: error al procesar mongodb-org (--configure):
 problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
 mongodb-org-server
 mongodb-org
E: Sub-process /usr/bin/dpkg returned an error code (1)

¡El mismo error apareció!

No iniciaba...


"Ok, tranquilo", me dije a mi mismo. "Revisa los logs antes de googlear", recordé. Quise hacer las pruebas en la máquina que previamente había mostrado ese error. Es mejor echar a perder un equipo de 10mil pesos que uno de 10mil dólares...

En la guía de instalación decía claramente que los logs se guardaban en /var/log/mongodb.

tail -n30 /var/log/mongodb/mongod.log
La clave estaba en un par de líneas:
2014-07-15T12:59:41.089+0000 [initandlisten] ERROR: Insufficient free space for journal files
2014-07-15T12:59:41.089+0000 [initandlisten] Please make at least 3379MB available in /data/db/journal or use --smallfiles

Lo chistoso es que según yo, ese disco tenía 1TB.

Bien, ahora para ver el problema:
df -h
root@delta:/home/global# df -h
S.ficheros                                             Tamaño Usados  Disp Uso% Montado en
rootfs                                                   323M   164M  143M  54% /
udev                                                      10M      0   10M   0% /dev
tmpfs                                                    790M   352K  790M   1% /run
/dev/disk/by-uuid/9710f932-bf8e-4455-a0af-5df066802577   323M   164M  143M  54% /
tmpfs                                                    5.0M      0  5.0M   0% /run/lock
tmpfs                                                    4.7G      0  4.7G   0% /run/shm
/dev/sda9                                                890G   3.5G  842G   1% /home
/dev/sda8                                                368M    82M  268M  24% /tmp
/dev/sda5                                                8.3G   2.5G  5.5G  31% /usr
/dev/sda6                                                2.8G   1.4G  1.3G  52% /var

El error estaba en que instalaron Debian en todo el disco duro con la opción de separar el directorio /var 

En este caso el espacio disponible estaba en /home. Entonces lo más práctico es cambiar el path en la configuración. Consulté la guía nuevamente. Para no hacer tanto rollo y hacer las pruebas más rápido, creé un directorio y edité el archivo de configuración; no sin antes hacer
cp /etc/mongod.conf /etc/mongod.conf.bak
Cambié la opción al directorio que había creado.


Traté de iniciar nuevamente:
mongod --config /etc/mongodb.conf

Intenté reparar:
mongod --repair

Ok, cambiaré el path de la base.
mongod --repair --dbpath /home/global/mongodb/



De nuevo error. De regreso a ver el .log.

Ahora el error es de permisos.



¡Já! Creé el directorio para la base de datos como root. A todo el mundo le puede pasar...
chown mongodb mongo/*


¡Listo!

Ahora vamos por el server, será lo mismo pero tendré que esperar hasta el lunes porque ya casi es hora de la salida...


jueves, 11 de septiembre de 2014

Cómo usar un resaltador de sintaxis en Blogger o en tu página personal.


He querido compartir algunas cosas en mi blog pero por cuestiones de tiempo (ahora trabajo de tiempo completo en una oficina) no había podido entrar por aquí. Una de las características que quiero tener en mi blog es el resaltador de sintaxis para poder poner código en las entradas.

Después de googlear por un rato encontré muchos artículos sobre la solución de Alex Gorvatchev (yo la usaba hace tiempo) pero por alguna razón no me decidí a utilizarla; al final me decidí por highlight.js. 

Aquí los pasos para integrarla a su platilla de blogger (los pasos para ponerlo en otro sitio son práctimente los mismos).

1. Abrimos el panel de nuestro blog y damos clic en "Plantilla" y después en "Editar HTML".






2. Agregar los CDN justo antes del cierre de la etiqueta . NOTA: debido a que la plantilla es un documento XML se requiere que cierres todas tus tags por lo que deberás cerrar la etiqueta si no quieres que te muestre un error.



3. Ahora solo falta que en cuando escribas una entrada agregues la clase correspondiente al lenguaje:
<pre><code class="html">...</code></pre>


var express = require('express');
var app = express();
var bodyParser = require('body-parser');


Les dejo nuevamente el enlace de la librería.

Felices líneas.

miércoles, 20 de noviembre de 2013

Cómo saber si hay conexión de datos en FirefoxOS.

Si estamos desarrollando una aplicación que requiera hacer peticiones a un servidor o descargar contenido de una fuente externa, tal vez necesitemos saber si el dispositivo está o no conectado a una red.

Según la documentación de FirefoxOS, existen varios métodos para realizar esta tarea; sin embargo, cuando los probé ninguno me dió los resultados esperados. La opción más popular en Google y que aparece en más ejemplos es la siguiente:

var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;  

En teoría, solo bastaría saber el valor de connection.bandwidth pero de esta forma parece que siempre devuelve Infinity. Otra solución es realizar una petición a algún servidor y así detectar si se está conectado o no según la respuesta que se obtenga.

Para mi lo que mejor se adaptó a lo que necesitaba fue utilizar navigator.onLine. Aquí un ejemplo:

var online = navigator.onLine;

if(online){
   // aquí va el código
}

Ojalá les sirva.
Felices líneas.

martes, 29 de octubre de 2013

Cross Domain en Firefox OS. Ejemplo

Cuando hacemos una aplicación y queremos mandar datos a un servidor (por ejemplo a una web API), nos topamos con errores debido a que no se nos permite hacer peticiones 'Cross Domain'.

A continuación un ejemplo de cómo puede realizarse.  Nótese el argumento en al crear el objeto (mozSystem: true)

var url = "http://pagina.net/test.php";

var request = new XMLHttpRequest({ mozSystem: true });

request.open("get", url, true);
        request.onreadystatechange = function() {

          if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
             
              var data = request.responseText;
              //console.log(data);
            }
          }
        }
        request.send();


Saludos y felices líneas.

miércoles, 7 de agosto de 2013

Hola mundo en Firefox OS

Mozilla va con todo y quiere ser una alternativa real en el mundo de los dispositivos y aplicaciones móviles. Su "nuevo" bebé, Firefox OS,  tiene grandes expectativas y se perfila para ser una de las sorpresas de este año.

Hola mundo


Empecemos a desarrollar para este nuevo SO; obviamente el primer paso será el clásico "Hola mundo".

Herramientas

Firefox promete que cualquier desarrollador de front-end podrá crear aplicaciones en Firefox OS (FFOS) ya que está basado en HTML5, por lo que las herramientas no son nada del otro mundo.

Necesitaremos un editor de texto. Sublime Text es una buena opción.
También se requiere el simulador de FFOS (add-on de Firefox).

Pasos.

+ Crear la estructura de la aplicación:

La estructura de una aplicación básica para FFOS es muy similar a la de una aplicación web (una página). No es obligatorio tener nuestros recursos en carpetas pero se recomienda; así pues, nuestros scripts en JavaScript irán en un directorio "js", las imágenes en uno llamado "images" y así sucesivamente.

Para nuestro ejemplo, solo necesitaremos tres archivos y crearemos una carpeta llamada "app" (o con cualquier otro nombre):
  • Un archivo index.html
  • El archivo manifest.webapp
  • El archivo manifest.appcache
  • Una imagen icon.png 
+ index.html

Aquí diseñamos la aplicación, como cualquier página web, este es el comienzo.

<!DOCTYPE html>
<html>
<head>
<title>Hola mundo en Firefox OS</title>
</head>
<body>
<h1>Mi primera app en Firefox OS</h1>
<p>Hola mundo</p>
</body>
</html>
 
+ manifest.webapp

 Contiene la información necesaria de nuestra aplicación. Este archivo es muy importante dentro de cualquier aplicación de FFOS, es requisito indispensable contar con él.

Como verás, es un simpre JSON:

{
  "version": 1.0,
  "name": "Hola mundo en Firefox OS",
  "description": "Esta es mi primer app para Firefox OS",
  "launch_path": "/index.html",
  "icons": {
    "128": "icon.png"
  },
  "developer": {
    "name": "Hiram E. Perez",
    "url": "http://hiramperez.net"
  },
   "installs_allowed_from": ["*"],
   "default_locale": "es"
}



Los campos  permitidos y su descripción los puedes ver en la documentación.


+ manifest.appcache

En este archivo se indica qué recursos serán "cacheados", es decir, que estarán disponibles en todo momento.

CACHE MANIFEST
# v0.1
/index.html
/icon.png


+ icon.png

Es el ícono de nuestra aplicación. Crearemos una imagen con extensión png de 128 x 128 pixeles. Si no quieres complicarte, puedes descargar una imagen con estas dimensiones.

Así se ven los archivos de la aplicación.



Simulador

Una vez que hayamos creado nuestros documentos abrimos nuestro simulador de Firefox OS.


En la pestaña del add-on, damos clic en Add directory y seleccionamos el archivo manifest.webapp. Se abrirá el emulador y veremos nuestra app.






Ahora solo faltará agregar los estilos (CSS) y las funcionalidades (JS).

Felices líneas

martes, 6 de agosto de 2013

Instalar MATE en Debian 7 (Wheezy).

A muchos usuarios de Debian no nos gusta el entorno de escritorio que tiene por defecto la nueva versión estable (wheezy). Por ello, se han desarrollado forks que nos devuelven la apariencia "acostumbrada".

Para instalar MATE en nuestro sistema sigue estos pasos:

Editar tus repositorios.


$ su

(ingresa la contraseña de root).

# nano /etc/apt/sources.list

Al final del archivo añade las líneas (recuerda que para pegar en terminal se utiliza Ctrl + Shift + V:

# MATE
deb http://repo.mate-desktop.org/debian wheezy main


Guarda los cambios: Ctrl + O (guardar) y Ctrl + X (cerrrar).

Actualiza los orígenes.

# apt-get update (te marcará un error, normal).

# apt-get install mate-archive-keyring

Instala los paquetes base:

# apt-get install mate-core

Para terminar, instala MATE

# apt-get install mate-desktop-environment-extra

Extra: Te recomiendo que instales el "demonio" para notificaciones; te servirá mucho si instalas aplicaciones como Guake.

# apt-get install mate-notification-daemon

Ahora tendrás una opción más al iniciar tu sesión. Si gustas puedes desinstalar Gnome en este punto.

Felices líneas.

Fuente: http://www.forosla.com/como-instalar-mate-en-debian-7-wheezy/

miércoles, 29 de mayo de 2013

Cómo cambiar el idioma de Firefox.


Hace un par de días actualicé a la nueva versión estable de Debian e instalé Firefox sin mayor problema (no ocupé iceweasel porque necesitaba la última versión para realizar algunas pruebas); sin embargo, lo instalé en inglés.

No me molesta en absoluto el idioma pero tampoco quería quedarme sin saber cómo cambiar el idioma.

La solución que ocupé fue esta:

1. Descargar el idioma directamente de los archivos de Mozilla. En mi caso, busqué en la versión de 64 bits para evitarme cualquier problema aunque no lo creí necesario ya que se trata de un complemento.

ftp://ftp.mozilla.org/pub/firefox/releases/latest/linux-x86_64/xpi/

Eliges instalas el idioma deseado; por ejemplo, en español, hay 4 opciones: es-AR, es-CL, es-ES y es-MX.




2. Abrimos una nueva pestaña y escribimos "about:config" para ver la configuración del navegador y buscamos la propiedad "general.useragent.locale".



3. Cambiamos el valor según el idioma descargado, yo descargue "es-MX".





Solamente resta reiniciar y listo.

sábado, 12 de enero de 2013

Cómo instalar Sublime Text en Debian.

Sublime Text es un editor de texto escrito en python muy versátil y que se ha vuelto muy popular en estos días; el único pero es que no es libre o de código abierto. Si quieres evitar un molesto aviso después de que salves tu trabajo, deberás comprar una licencia de uso.

Si te interesa un editor libre, te recomiendo que busques en este catálogo con muchas alternativas (no solo editores).

Después de la explicación, pondremos manos a la obra:

1. Descargar la versión de Sublime Text según nuestro sistema operativo desde su página oficial. En mi caso será "Linux 64 bits".

2. Extraemos el archivo descargado (observa que el nombre del archivo tiene espacios y tiene una forma "especial" de escribirlo). Desde una terminal vamos a la carpeta donde se almacena y ejecutamos:

$ tar -xvjf Sublime\ Text\ 2.0.1\ x64.tar.bz2

Tip: escribimos "tar -xvjf Sub" y presionamos la tecla TAB para que se autocomplete.

3. Movemos la carpeta a /opt/sublime-text; primero tendremos que "loguearnos" como root:

# su
# mv Sublime\ Text\ 2 /opt/sublime-text

4. Creamos los enlaces simbólicos correspondientes:

# ln -s /opt/sublime-text/ /usr/local/sublime-text
# ln -s /usr/local/sublime-text/sublime_text /usr/local/bin/sublime_text

5. (Opcional) Borramos el paquete descargado.

$ rm Sublime\ Text\ 2.0.1\ x64.tar.bz2

6. Agregamos Sublime Text al menú de aplicaciones dando clic derecho en la barra de menú.



7. En la sección Programación, añadimos un nuevo elemento con los siguientes datos:

Tipo: aplicación.
Nombre: Sublime Text.
Comando: sublime_text
Ícono: /opt/sublime-text/sublime-text/sublime_text.png



Y listo, ya tienes todo listo para trabajar con este buen editor.



Felices líneas.

domingo, 13 de mayo de 2012

Resolviendo ecuaciones simultáneas de primer grado con tres o más incógnitas.


Hace unos días, durante mis aventuras en el transporte colectivo de la ciudad de México, observé a un par de estudiantes discutiendo la forma de resolver sistemas de ecuaciones. Recordé que esa se podía convertir en una tarea tediosa cuando cursas la preparatoria o los primeros meses de la universidad; no tanto por la dificultad al realizarlo sino por los múltiples métodos que existen para hacerlo, a veces prefería que una calculadora lo hiciera por mi.

Aprovechando que el trayecto era un tanto largo, recordé aquellas épocas de estudiante en las que en ocasiones buscaba una manera más rápida y eficiente para realizar las cosas (y no porque fuera cómoda o me diera más tiempo para ir al estacionamiento de la facultad para jugar futbol o ir a un bar con mis amigos, que conste). Me vino a la mente un método en particular para realizarlo y no ocupar varias hojas de papel (sí, en mis tiempos todavía se usaban esas cosas llamadas cuadernos) para hacer las operaciones. Además de que tenía otra ventaja: era fácil de programar. En esta entrada trataré explicar una forma de resolver estos sistemas de ecuaciones y de paso, activo de nuevo esta cosa llamada blog que sufre de abandono por culpa de Twitter.

Antes de empezar, asumo que si estás leyendo esto por lo menos tienes una idea de qué son las ecuaciones simultáneas de primer grado con tres o más incógnitas. Si no es así, entonces te recomiendo que visites este enlace.

Como antecedente, vendría bien que recordaramos algunos métodos para buscar los valores de las incógnitas. Una forma popular para encontrar la solución en un sistema de tres ecuaciones es por el método de determinantes. Creo que desde la secundaria nos torturan con las "chorrocientas" operaciones que se tienen que hacer para encontrar las dichosas determinantes y luego, para rematar, tenías que multiplicar la matriz y casi casi rezarle a Pitágoras para que te saliera bien. Ya en la prepa y universidad, con toda esa experiencia en álgebra y otras tantas brujerías, veías métodos con matrices y escuchabas hablar de un tal Gauss y su método y las cosas empezaban a cambiar, claro no faltaba el profesor que te decía que lo hicieras por los clásicos métodos de igualación o sustitución pero cuando veías un sistema de más de tres ecuaciones se volvía horriblemente fastidioso y no se diga cuándo lo tenías que hacer por matriz inversa.

El método de Gauss-Jordan parecía que tomaba lo mejor de las anteriores alternativas y ser más directo. Por si no lo recuerdas, era el método en el cual reducías en cada paso el número de ecuaciones y de incógnitas hasta que terminabas con una sencilla ecuación de primer grado con una sola incógnita; solo faltaría que fueras sustituyendo los valores para encontrar el resto. Suena bien, pero existe otra alternativa: el método Gauss-Jordan-Aragón.

Según un profesor de la facultad, el chistoso nombre se debía a que en la FES Aragón se había inventado el procedimiento, aunque la verdad nunca me tomé la molestía de investigar. El nombre es lo de menos, el chiste es que funcione. En realidad no varía mucho del Gauss-Jordan original pero puede que veas una ligera ventaja. Al final del día es solo una alternativa más.

Tomando como ejemplo el ejercicio #186 del Baldor tenemos:

1) 2x + 4y + 3z = 3
2) 10x - 8y - 9z = 0
3) 4x + 4y - 3z = 2

Preparamos el escenario utilizando solamente los coeficientes y los términos independientes y organizándolos por columnas formando una pseudo-matriz:

Ahora tomamos los primeros términos de la primera y segunda ecuación (con asterisco) para formar una fracción (2/10). Para eliminar los primeros términos multiplicamos los términos de la  primer ecuación por el inverso de la fracción (en este caso 10/2 que es igual a 5 obviamente) y les restamos los de la segunda.

Para explicarlo mejor, lo pondré paso a paso el primer paso:

Se comprueba la eliminación del término (puesto que el resultado es cero). Ahora los siguientes términos:



Ahora lo mismo para la tercer ecuación. De igual forma que en le paso anterior, formamos una fracción y obtenemos su inverso para multilplicar término por término. En el ejemplo se toma el 2 y el 4 para formar 2/4; el inverso por lo tanto es 2. Quedando:




Se puede observar que ahora tenemos un sistema de dos ecuaciones. Como al principio tomamos los nuevos primeros términos y formamos otra fracción: 28/4, su inverso es 1/7 ya simplificado.

Lo demás es cosa fácil:

Para la última fila obtenida, como en otros métodos podemos multiplicar todos los términos para simplificar. En este caso, multiplicaremos por -7 para que quede el término en solitario 39z = 13. Lo demás en imágenes:


Encontrado el primer resultado, "subimos un nivel" y sustituimos donde se tengan dos términos.


Y por último:


Y así obtuvimos que: x = 1/2, y = 1/4, z = 1/3.


Aunque confuso en un principio, este método resulta muy útil cuando se tienen tres o más ecuaciones simultáneas, por lo regular, también podemos darnos cuenta rápidamente cuando los sistemas no tienen solución.

Ofrezco disculpas por el post tan largo pero aproveché para quitarme las ganas de estar "typeando" de nuevo en mi blog.

Felices cálculos.




miércoles, 13 de julio de 2011

Cómo instalar Compiz en Debian Squeeze

Uno de los atractivos de tener instalado GNU/Linux en nuestra computadora es la facilidad de personalizar su entorno. Como claro ejemplo están los efectos de Compiz.




Instalarlo es muy sencillo:

# aptitude install compiz compizconfig-settings-manager compiz-fusion-plugins-main compiz-fusion-plugins-extra fusion-icon

El siguiente paso es hacer que se ejecute desde el inicio; desde Sistema - Preferencias - Aplicaciones al inicio añadimos:

Nombre: Compiz
Comando: compiz --replace
Comentario: Compiz


Y con esto ya tendremos instalado compiz:

Notas:

Si tienes tarjeta gráfica ATI Radeon HD, se recomienda que instales:

# aptitude install firmware-linux-nonfree

# aptitude install xserver-xorg-video-radeonhd

Probablemente tengas que agregar los repositorios backports:

# gedit /etc/apt/sources.list

y al final agregamos:

#backports
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

Fuente.

martes, 21 de junio de 2011

Aplicaciones de escritorio para Twitter (y más).

El crecimiento de Twitter se ha ido incrementado desde su origen en 2006 y se ha convertido en una herramienta informativa más que social para muchas personas. Podemos usarla de muchas maneras, desde su página oficial hasta una aplicación específicamente programada para ello. Si eres usuario de Twitter, seguramente ya has utilizado alguna aplicación de escritorio que te facilita el recibir y hacer 'tuits' (o como sea que tú le digas).

Muchas de estas aplicaciones son basadas en Adobe Air, por lo que pueden ser utilizadas tanto en Linux como en Windows (aunque en estos últimos días se ha anunciado que Adobe ya no dará más soporte oficial a este producto para Linux). Aquí algunos ejemplos:

Seesmic:

Puedes manejar múltiples cuentas de twitter, pudiendo combinar una misma timeline para todas o visualizarlas por separado. Integra múltiples servicios (desde su Seesmic Marketplace) y varias redes sociales como Facebook, Liked in, Buzz, etcétera.


Disponible para Window$ y Mac. Tiene versión para móvil y para navegador.


Twhirl (from Seesmic):

Fácil y rápido. Una versión minimalista pero no por eso menos potente; Tal vez no ofrezca muchas características pero todas las importantes están disponibles. Puedes conectar múltiples cuentas (incluso identi.ca). También subir fotos y acortar enlaces. Yo la uso cada vez que puedo.


Disponible solo para Windows y Mac.

TweetDeck:

Una de las más populares. Es muy buena para admistrar tanto twitter como Facebook. Su diseño basado en columnas te permite elegir qué ver. Puedes subir imágenes, acortar enlaces y programar tus publicaciones. Es la que yo uso.


Disponible para Window$, Mac, Linux y Navegador.

Por supuesto faltan muchas opciones más (por ejemplo para Linux) incluyendo plug ins para navegadores, sin embargo estas a mi parecer puden cubrir tus necesidades al 100%. Si tienen alguna sugerencia pueden hacerla llegar a @driverInside y aprovechando me dan follow.

Salu2.

sábado, 7 de mayo de 2011

Cómo obtener los videos flash desde terminal.

Antes era simple obtener los videos flash reproducidos en nuestro explorador ya que se guardaban en el directorio /tmp.

Sin embargo, después de la actualización de Flash Player a la versión 10.2 en Ubuntu 10.10 ya no se puede hacer de esta forma así que debemos ingeniar la forma de lograrlo.

Aquí los pasos:

1. Reproducir el video y antes de que termine de cargar por completo ejecutar en una terminal:

$ lsof | grep Flash



responderá algo parecido a

npviewer. 12708 driver 11u REG 8,3 13842230 262472 /tmp/FlashXXMo5KqA (deleted)

2. Cuando haya terminado de cargarse por completo, sin cerrar el navegador se copia a nuestra carpeta personal (o donde nosotros indiquemos), cambiando "12708" y "11" según corresponda.

$ cp /proc/12708/fd/11 videoDescargado.flv


Y con eso ya tenemos el video flash descargado.


Fuente: Punto Libre.

notas: Según el autor, este método funciona con Firefox y Chrome sobre Ubuntu 10.10 y Debian Squeeze (32 y 64 bits; leer fuente).

Extra:

Puedes descargar todos tus videos desde youtube con youtube-dl tan fácil como:

$ ./youtube-dl http://www.youtube.com/watch?v=VVWNZPOUhO8

Los pasos para instalar son:

1. Descargar fuente desde github

wget https://github.com/rg3/youtube-dl/raw/2010.12.09/youtube-dl

2. Dar permisos de ejecución.

chmod +x youtube-dl

3. Para descargar el video (ejemplo):

$ ./youtube-dl http://www.youtube.com/watch?v=VVWNZPOUhO8

Importante:

No descargar con apt-get install youtube-dl ya que el paquete no está actualizado y envia un error como este:

ERROR: unable to download video (format may not be available)

miércoles, 12 de enero de 2011

Como solucionar problema de parpadeo de pantalla en las HP dv5

Hace tiempo, la pantalla de mi laptop empezó a parpadear sin razón aparente; salían lineas horizontales blancas (algunas veces verticales) como si se tratara del ruido en las señales de las televisiones. Era realmente molesto a veces pero lo "solucionaba" con solo cambiar de posición la computadora o con abrir y cerrarla.

Les dejo un video para que se den una idea:



La solución a este problema es realmente sencilla y sobre todo barata :)

Todo radica en lo que puede ser un error de diseño que provoca que el cable encargado de envíar la señal de video se desconecte provocando las molestas líneas.

Para realizar la reparación sigue estos sencillos pasos:

1. Desconecta el cable de alimentación y retira la batería.

2. Necesitas quitar 8 tornillos en total, todos en la parte inferior de la computadora: 2 en las esquinas, 3 en un extremo y 3 más donde se coloca la batería.



3. Desarma con cuidado el panel donde se encuentran los controles de volumen y el botón de apagado. No será necesario que lo quites por completo, podrás alcanzar el cable sin problema.




4. Ajusta bien la conexión y asegurate de el cable este bien colocado como se ve en la imagen.

Con mucho cuidado, empuja el conector si lo ves suelto.




De esta forma ya no tendrás problema y no habrás gastado ni un solo centavo (a menos de que tengas que comprar un desarmador).



Espero que con esto ya no tengan problemas con la pantalla de su laptop.

Fuente (en italiano).

Nota: Por los artículos que pude leer en Internet, también algunos modelos de HP son afectados, en ese caso te recomiendo que descargues el manual de usuario correspondiente antes de que intentes este método para que no tengas dudas en cómo desarmar tu máquina; existen también otros problemas similares de parpadeo y muchas fuentes sugieren métodos parecidos por lo que puedes probar con éste antes de gastar en alguna refacción. Si decides llevar a cabo las instrucciones que describo en esta entrada recuerda que lo haces bajo tu propio riesgo, yo solo te comparto mi experiencia esperando que te sirva tanto como a mi.
No creo que este de más recordarte que si tu equipo aún cuenta con garantía lo mejor es que la hagas válida.
Salu2.-

viernes, 31 de diciembre de 2010

Script en PHP para felicitar a todos tus followers

Para este 31 de diciembre quise desearles un feliz año a todos los que me hacen el favor de leerme vía Twitter, así que me resigné a la tardada tarea de hacerlo persona por persona. No suena tan mal pero me tardaría todo el día, así que se me ocurrió la idea de hacerlo mediante un script (en PHP).

Primero hay que registrar tu aplicación (client) para obtener el consumer key, el consumer key secret, etcétera; sigue las instrucciones en esta otra entrada.

Recuerda instalar PHP CLI y PHP curl. Si utilizas un Debian o Ubuntu todo es tan fácil como

apt-get install php5-cli
apt-get install php5-curl

Uso: php felizanio.php


Ahora el código:

require('twitteroauth.php');

// Oauth settings: llenar segun datos al crear tu aplicacion
$consumerKey= 'XXXXXXXXXXXXXXXXXXXXXXX';
$consumerSecret = 'XXXXXXXXXXXXXXXXXXXX';
$oauthToken = 'XXXXXXXXXXXXXXXXXXX';
$oauthTokenSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';

$followers = array();

$conexion = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);

$followers = get_followers($conexion, $followers); // se obtiene un arreglo con todos tus followers

mensaje($conexion, $followers); // Manda el mensaje.


function get_followers($con, $fl){
$next_cursor = -1;
$hay_followers = true;
$path = 'statuses/followers';

while($hay_followers){
$parametros = array('cursor'=> $next_cursor,);
$timeline = $con->get($path,$parametros);

$users = $timeline->users;
$next_cursor = $timeline->next_cursor;

foreach($users as $value){
$fl[] = "@".$value->screen_name;
} // fin foreach

if($next_cursor == 0){
$hay_followers = false;
} //fi
} // fin while
return $fl;
} // fin get_followers()

function mensaje($con,$fl){

$a = "#FF y Feliz año ";
$b = $a;

foreach($fl as $value){
$value.= " ";
if(strlen($b.$value) <=140){
$b.=$value;
}else{
$twitter = $con->post('statuses/update', array('status' => $b));
echo"\n"."$b"."\n";
$b=$a;
$b.=$value;
}
}
$twitter = $con->post('statuses/update', array('status' => $b));
echo"\n"."$b"."\n";

}


*Nota: También son necesarias las librerias twitteroauth.php y Oauth.php escritas por Abraham Williams.

Todos los archivos necesarios están en aquí.

http://www.fileden.com/files/2010/10/29/3004194//felizanio.zip


Por último, para todos aquellos que puedan leer este artículo les deseo un 2011 lleno de paz y mucho éxito, que todos sus proyectos se realicen.

Felices líneas.

as

martes, 2 de noviembre de 2010

Una alternativa a Limewire [Actualizado]




En esta entrada les quiero mostrar a FrostWire como una de las alternativas a Limewire, que como sabrán, dejo de funcionar por problemas legales.

La interfaz de FrostWire es casi idéntica a las anteriores de Limewire, es Open Source y también te permite bajar torrents, compartir archivos y todo lo que un programa P2P hace.

Descárgalo de aquí

http://www.frostwire.com/?id=downloads

Edit:

En los blogs de hipertextual me enteré de LimeWire Pirate Edition, el cual tiene todas las virtudes de la versión PRO del desaparecido LimeWire pero sin costo alguno. Actualmente se encuentra disponible vía torrent.

También puedes descargarlo aquí.

viernes, 29 de octubre de 2010

Script para dejar de seguir a alguien si ha publicado cierta frase en Twitter. (PHP)



Después del rollo que me aventé en el título de esta entrada paso a explicar:

En Twitter hay frases o temas que se ponen de moda, algunos son graciosos, otros interesantes, probablemente haya los que nos parezcan tan molestos que quisieramos dejar de seguir a aquellos que escriban sobre él. Respecto a lo anterior, cierto día leí a una persona que comentaba en tono de broma que sería buena idea que hubiera un script que pudiera "dar unfollow" a quienes escribieran cierta frase en su estatus; a mí en lo personal me hizo gracia ya que en verdad hay momentos en que parece que sí hace falta algo así, por lo que me dí a la tarea de empezar a escribir unas líneas al respecto hasta que salió este script.

Antes que nada debo aclarar, que el verdadero fin de realizar este ejemplo no es dar unfollow a diestra y siniestra (para eso no sigo a nadie desde un principio), sino para ver el uso de Oauth y de la API de twitter, puede que un segmento de este código le sirva a alguien en un futuro:

Ahora sí manos a la obra. Como ya sabrán antes hacer una actualización a twitter era relativamente fácil con PHP (y con cualquier otro lenguaje), sin embargo hace unos meses solo se puede hacer mediante Oauth. Afortunadamente almas caritativas han hecho el trabajo sucio por nosotros y han escrito las librerías que facilitan nuestra tarea.

Para que nuestro script funcione necesitamos crear una aplicación: "logueados" en nuestra cuenta de Twitter desde esta página.

Llenamos los datos:

En Application Name, Description, Application Website y Organization escribe lo que desees.
En Application Type selecciona Client.
Callback URL déjala en blanco.
Default Access type: Read & Write.
Por último si quieres adórnala con ícono.

Una vez registrada nuestra aplicación necesitaremos los siguientes datos:

Consumer Key y Consumer Secret.

Además

Access Token (oauth_token) y Access Token Secret (oauth_token_secret).

Estos últimos los obtenemos dando click en el botón My Access Token que esta a la derecha.


El código es el siguiente:


#! /usr/bin/php

require('twitteroauth.php');

// Oauth settings: llenar segun datos al crear tu aplicacion

$consumerKey= 'XXXXXXXXXXXXXXXXXXXXX';
$consumerSecret = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthToken = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthTokenSecret = 'XXXXXXXXXXXXXXXXXXXXX';

// crea el objeto.
$conexion = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);

$path = 'statuses/home_timeline';

$parametros = array('count'=> 6, 'page'=> 1,);


if(isset($argv[1])){
$i = 1;
while(isset($argv[$i])){
$cadena = $cadena.$argv[$i]." ";
$i++;
}

$cadena = chop($cadena);

$timeline = $conexion->get($path,$parametros);

if ($conexion->http_code == 200) {

foreach($timeline as $tweet){

$texto = $tweet->text;
// se obtiene un objeto con los datos de usuario
$user = $tweet->user;

$usuario = $user->screen_name;

// si esta el texto, hace el unfollow
if(strstr($texto,$cadena)){
echo"BYE BYE $usuario ahora sigue a @driverInside :D";
$conexion->post('friendships/destroy', array('screen_name' => $usuario));
}

}

} else {
echo"\n Error de conexion \n";
}

}else{
echo"\nDebes ingresar la cadena a buscar.\n";
echo"Uso: php unfollow.php [cadena]\n";
echo"Ejemplo: php unfollow.php #SigueAdriverInside";
}

?>

Un ejemplo de uso es php unfollow.php Un ejemplo de mensaje

Notas:

Necesitas obviamente tener php.

http://windows.php.net/download/
apt-get install php5-cli

También necesitas curl:

apt-get install php5-curl
(en el instalador de php en Windows deberás seleccionar que se instale curl).

Como puedes ver en la línea "require('twitteroauth.php');" el programa utiliza otros archivos para funcionar, estos son twitteroauth.php y Oauth.php escritos por Abraham Williams ( http://abrah.am ) los cuales debes poner en la misma carpeta que tu aplicación.

Aquí los archivos:

http://generadoresfree.com/wc/manuales/aptelmex.zip
http://www.fileden.com/files/2010/10/29/3004194//aptelmex.zip


Y lo más importante, es multiplataforma (bueno lo he probado en Ubuntu 10.10, Ubuntu 9.10, Windows 7 y Windows XP; en Mac todavía no :3).

Sin más les deseo felices líneas y feliz día de muertos.

miércoles, 22 de septiembre de 2010

Cómo asegurar nuestras contraseñas

Las buenas prácticas nos señalan que debemos tener una buena contraseña que cumpla con características como estas:

  • Mínimo de caracteres.
  • Que contenga símbolos especiales (./%$...)
  • Que incluya mayúsculas y minúsculas.
  • Que no contenga tu nombre de usuario.
  • No incluya caracteres consecutivos o repetidos (12345, 88888)
  • Y un largo etcétera.
Sin embargo (aquí viene el pero) leyendo a @cfernandezlara y @cibercrimen me entero que el 75% de los usuarios de internet utilizan la misma contraseña en sus cuentas de correo electrónico y redes sociales.

A mí parecer esto se debe en parte a que recordar una contraseña con las características antes mencionadas parece muy complicado, además si tengo varias cuentas (msn, gmail, facebook, twitter, etcétera) la dificultad parece aumentar.

¿Pero en realidad es tan difícil recordar tantas contraseñas? La respuesta es no. Una solución es seguir teniendo la misma contraseña pero con algunos cambios, uno de ellos es utilizar el mismo nombre del sitio (o servicio) dentro de la contraseña para poder diferenciarlas más o menos del siguiente modo:

mismaClave + Sitio

Siguiendo esta fórmula podemos ir formando una contraseña segura con estos sencillos pasos:

1. Elegir una frase fácil de recordar (o tu misma contraseña de siempre); como es el mes patrio y año del bicentenario yo voy a usar "viva México". Quedaría:

vivaMexico

2. Utilizar 1337, es decir, sustituir letras por números o caracteres especiales.

v1v4M3x1c0

3. Separar la frase con uno o varios caracteres especiales. También puedes ponerlos al principio o al final.

v1v4..M3x1c0

Date cuenta que tienes tu contraseña de siempre, con algunos cambios pero que no dificultan el que la recuerdes ya que puede leerse casi igual que al principio.

4. Añadir el sitio o servicio. Esto es lo que la hace única. Ya sea que pongas el nombre completo del sitio o servicio o una abreviatura.

v1v4..M3x1c0twi
v1v4..M3x1c0msn
FBv1v4..M3x1c0
SQLv1v4..M3x1c0


Al final tenemos una contraseña de 14 o 15 caracteres de longitud, con mayúsculas y minúsculas, con caracteres especiales y fácil de recordar. Ahora cuando quieras ingresar a alguno de tus perfiles solo pensaras en tu frase o contraseña de siempre y en la página donde te encuentres.

Más info:

Wiki
Microsoft
Comprobador de contraseñas



lunes, 23 de agosto de 2010

Is your Apple Mac feeling slow?

Navegando por la red me encontré con esta imagen y no pude parar de reir. Creo que no tengo que explicarla, pero si no sabes de que se trata, solamente te diré que no debes de hacerlo.

Para que no se queden con la duda, les dejo un video que muestra lo que pasa en un Ubuntu 9.10.




Imagen de hornoxe.com
Para saber más.

jueves, 19 de agosto de 2010

Envío automatizado de mensajes en emesene con Eval

Si son usuarios de algún cliente de mensajería instantánea, probablemente hayan querido encontrar la manera de mandar mensajes a alguno de sus contactos de manera automática; por ejemplo el contenido de un archivo de texto.

Se me ocurrió utilizar uno de los complementos que tiene emesene llamado EVAL para dicha tarea.

Primero tuve que habilitar el complemento.

Ahora el script en python.

/eval import time
archivo = open("/home/driver/msn.txt","r")
for linea in archivo.readlines():
send(linea)
time.sleep(3)
archivo.close()


Noten que hay una instrucción time.sleep() yo la agregué para darle una pausa al envio. Una opción puede ser time.sleep(0.5) para que mande los mensajes cada medio segundo.

Por último, tenemos que copiar el script y pegarlo en la ventana del contacto al que queremos enviar el texto.

Salu2 y felices líneas.

miércoles, 21 de julio de 2010

Paint.net: Una buena alternativa.



Hoy les voy a recomendar una excelente herramienta (que muy probablemente ya conozcan) para editar imágenes: Paint.net.

Este software es útil tanto para las personas que gustan del diseño gráfico como para aquellas que sólo quieren redimensionar sus imágenes y hacerles pequeños ajustes.

En mi opinión es una alternativa excelente a opciones un poco más avanzados como Photoshop o Illustrator además hay que sumarle que su mayor ventaja es que no hay que pagar licencia y existen gran variedad de plug-ins que lo hacen muy competitivo.

Descárgalo de aquí

Salu2.