Links of the day 12/11/2012

I have been just sharing links these last few posts, and sadly, today is not the exception. I am aware there are a few posts that need to be written, and I need to continue on that series that I started about building AIR Apps, but time has just not been too kind with me lately. Anyway, I hope this links can keep you busy.

Javascript:
http://davidwalsh.name/documentfragment – Just a quick intro to document fragment.
http://davidwalsh.name/deferred – Javascript defer for a cleaner code.
http://www.sitepoint.com/get-started-with-three-js/ – Getting started with three.js
http://blog.millermedeiros.com/stop-writing-plugins-start-writing-components/ – Plugins VS Components. Interesting.
http://blog.millermedeiros.com/namespaces-are-old-school/ – Namespaces are old school, use modules.
http://blog.millermedeiros.com/amd-is-better-for-the-web-than-commonjs-modules/ – A look into why AMD is better than commonjs modules. Is it?

VIM:
blog.millermedeiros.com/tag/vim/ – Improved VIM status bar. Nice!

HTML 5
http://davidwalsh.name/phone-link-protocol – The phone link protocol.
http://davidwalsh.name/vibration-api – The vibrating API. Lets hope it does not get abused.

WordPress:
http://davidwalsh.name/ssl-wordpress – Quick and easy way to force SSL on wordpress sites.
http://dzineblog.com/2012/12/best-practices-for-keeping-wordpress-clean-secure.html – WordPress security best practices.

Interior Design:
http://www.home-designing.com/2012/12/toblerone-house-brazil
http://www.home-designing.com/2012/12/super-small-space-living-inspiration-ikea

Ubuntu
http://www.atareao.es/ubuntu/conociendo-ubuntu/quieres-aprender-a-crear-paquetes-para-ubuntu/ – How to create Ubuntu packages. (Spanish)

Design:
http://dzineblog.com/2012/11/33-new-freebie-buttons-and-icon-sets-released-in-autumn-2012.html – Free icon sets.

Ruby:
http://ruby-python.com.ar/ruby/ – A ruby tutorial that I have not yet followed, but I share in case you are interested. (Spanish)

Other:
http://davidwalsh.name/twitter-cards – Nice explanation on how to create twitter cards.
http://creativefan.com/black-and-white-backgrounds/ – Black and white backgrounds. Mostly pictures, and some of them are not really B&W, but still interesting.
http://alt1040.com/2012/12/twitter-rastrea-webs – Twitter keeps track of the sites you visit. And how to stop it. (Spanish)
http://build-podcast.com/ – A postcast about development tools.
http://www.mightydeals.com/ – A website that seems to offer good deals on resources for web professionals.

Enjoy the readings, and don’t hate me for posting nothing but links these last few rounds.

Setting Up a New Working Environment

If you have followed the blog for long enough, it is no news to you that up untill now I use an old Dell latitude D610 as my main computer. I’ve been working on this modern Dinosaur since 2010, when I first started as a feelance. About a month ago, I decided it was time to buy a new computer, despite the fact that the old computer still works pretty well. I now have a brand new computer that runs on a quad core AMD chip, and has the humble amount of 4GB of memory. 4GB may not be much this days, but it is still double what I have on the D610.

Untill a couple of days ago, the new computer was just sitting there. I decided I would not let my money go to waste, and set up the new computer. I made space for it on the desk, and set it there with an external monitor. (In fact, I bought a new desk to fit this new machine). Until today, I’ve been using that computer just as a firefox house, playing some music on youtube, and searching for stuff on the web, while I try to little by little get rid of my 50+ firefox tabs on the D610. However, the objective is to gradually move all my work environment to this new computer, and leave the old one as a server. The first step is clear: Find a way to access the old computer (running linux) from the new computer, which runs windows 7. I first thought of installing an FTP server, but I decided I would much rather work over SSH than FTP. So, this is what I did:

1) Installed PuTTy on Windows.

Installing programs on windows is pretty easy: you download the executable file, open it, and follow instructions. The intaller can be downloaded from http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

I went for the “installer for everything except PuTTYtel” mostly because I was too lazy to install puTTY and pscp separately.

At some point I considered copSSH, just because it integrates a client as well as a server, but gave it up when they asked for my email to download the software. I get more than enough spam, so, thanks but no thanks.

The second step was to install an ssh server on the D610, which runs ubuntu.

That is even simpler than what we did on the windows machine. Just open the terminal and enter:

sudo apt-get install openssh-server

That was all. I can now ssh into the ubuntu box from the windows machine.

I think I’m little by little getting away from that sick relationship I have with ubuntu. I am finding myself more and moe annoyed with ubuntu every day. I am not hopping windows will be better, but at least, when I want another linux distro, I will not fall for ubuntu again.

So, what is next? I think next I will install an FTP server, just becuase wordpress sometimes needs one. Then I might install some version manager system. But the real next steps is to start using the windows machine more and leaving the ubuntu box as just a server.

Some links that were useful, or maybe not, are recorded here for future reference:
http://www.sevenforums.com/customization/19864-ssh-windows-7-a.html
http://principialabs.com/beginning-ssh-on-ubuntu/
https://help.ubuntu.com/11.10/serverguide/C/openssh-server.html

Terminal Stays on Top Of all Other Windows on Ubuntu 2D

Personally I don’t care much for eye-candy.Don’t get me wrong; I love beautiful interfaces -minimalists ones if possible. However, I think sometimes too much is too much. I would rather have a beautiful, simple interfaces that is resources-friendly, than a super cool, animated one that uses too many resources on the computer, especially when working with old, or not-so-powerful computers.

Currently I own two laptops. One is an HP pavilion g6 with a quad-core AMD A6 chip, and 4GB of memory. Not a top-of-the-line computer, but certainly more than enough for what I do. Which is editing text files and FTPing into servers, and of course, running my own server. The problem is I’ve got no time to set it up for my needs, so it currently serves to the only purpose of running IE and Safari in it, and to make me think: “Why did I buy this thing?”

The other computer is a dell latitude d610 which I bought a while back. If I remember well, it has an Intel M chip which, needless to say, it is not that powerful, but amazingly enough it runs pretty well, and it is enough for my needs.

I run this Dell with an external monitor attached to it whose maximum resolution is a descent 1280 by 1024. The problem is that the computer can’t handle that resolution plus the 1024 X 768 screen on the laptop. I decided to start using ubuntu 2D, which is pretty resources-friendly. The computer flies in comparison to using the regular ubuntu (3D?).

Everything was well, until I noticed that the terminal window (either gnome-terminal or terminator) would stay on top of any other window even when that other window had the focus. I asked my good friend duckduckgo about the issue, and one of the search results was this page: http://superuser.com/questions/351496/why-does-the-terminal-in-unity-2d-ubuntu-11-10-always-stay-in-the-foreground/371329#371329

The solution to the problem is posted there, so you might not want to read the rest of the entry, but if you do, Thanks!

Personally I don’t quite like the idea of creating a xorg.config file. That file was removed from ubuntu back in 11.04, or at least I think that is when it was removed. I am not aware of the reasons why that config file was removed, but I just didn’t like the idea of adding it back.

The page mentioned earlier, however, gave me an idea of why I was having that problem. (There is also an interesting discussion of the problem on http://ubuntuforums.org/showthread.php?p=11387297#poststop). So I decided to take a look at gconf-editor, especially after seeing this post: http://marianochavero.wordpress.com/2011/04/20/a-simple-gui-for-unity-2d-settings-ubuntu-11-04/.

It turns out you can turn off Composite on Metacity through gconf-editor. I’m sure you already read the instructions on http://superuser.com/questions/351496/why-does-the-terminal-in-unity-2d-ubuntu-11-10-always-stay-in-the-foreground/371329#371329 That I posted, but if you didn’t, here they are:

Open the terminal and type: gconf-editor /apps/metacity/general

look for the compositing_manager options and uncheck it. Your windows will flicker and the problem will be solved.

I hope this proves useful to some of you.

For now I’ve decided to give XFCE a try, and see how everything goes. After all, the flexibility of switching between environments an managers is one of the reasons I use linux.

Some links that where useful, or maybe not, are recorded here for future reference:
https://help.ubuntu.com/community/Metacity
http://marianochavero.wordpress.com/2011/04/20/a-simple-gui-for-unity-2d-settings-ubuntu-11-04/
http://ubuntuforums.org/showthread.php?p=11387297#poststop
http://superuser.com/questions/351496/why-does-the-terminal-in-unity-2d-ubuntu-11-10-always-stay-in-the-foreground/371329#371329

QuickTip: Opening Files from Remote Server over FTP with Vim Using FireFTP

I use FireFTP for my daily FTP needs. It’s really nice, works great, has lots of flexibility and it integrates right into firefox; What else could I ask for?

I also use vim for my editing needs. Vim is powerful, flexible, and in my experience, the best text editor out there. However, until today,I opened files from remote servers using gEdit. When I first set up FireFTP I was still a gEdit user. Even today, I occasionally use gEdit, especially when I need to scan through large files.

Today I finally decided it was time to start opening files from remote servers on vim after finding myself using a lot of the vim commands on gEdit while editing remote files. It turns out setting files to open on vim in FireFTP is quite simple:

Simply open FireFTP.
On one of the panels, right-click on a file and go to Open With, and click on Add Programs…
On the window that appears, fill in the Name, Path, and Arguments text fields like this:

Name -> Vim
Path -> /usr/bin/terminator
Arguments -> -x vim %file%

I use terminator instead of the gnome terminal, but if you use terminal, then your path will be /usr/bin/gnome-terminal

That’s it.

Problemas con la tarjeta wireless despues de actualizar a unbuntu 11.10

Hoy liberaron ubuntu 11.10 y como siempre, lo instalé para ver que hay de nuevo. Lo primero que noté de nuevo es que mi tarjeta wireless ya no funcionaba. Mientras se instalaba, ubuntu me decía que había problemas con el paquete que maneja la tarjeta. Lo primero que se me ocurrió fue correr un upgrade para ver que me tiraba.

En efecto, después de correr sudo apt-get upgrade me encontré con un paquete que no se había intalado correctamente. Tras aceptar la intalación del mismo, la tarjeta volvió a funcionar correctamente.

Si tienes el mismo probelma, te sugiero empieces corriendo sudo apt-get upgrade en la terminal. Si eso no te soluciona el problema, puedes ir al software center y buscar “firmware-“. Elige la opción apropiada según tu sistema.

Esto puede aplicar también para algunas otras cosas que no estén funcionando bien después de la actualización.

El problema con chmod

chmod es uno de esos comandos que muy pocas veces uso. Para los que no sepan, chmod sirve para cambiar los que cada usuario tiene sobre un archivo. Hay más de una manera de establecer dichos permisos, pero en mi caso, viniendo de un entorno web y del uso de FTP, me gusta usar permisos del tipo 777 (Todos los clientes FTP que he usado usan esta forma de registrar permisos). Personalmente no me gusta el 777 y me inclino más por 664.

Que significan esos números?

El sistema asigna un numero a cada tipo de acción que un usuario puede llevar a cabo en un archivo determinado. 4 es para lectura, 2 para escritura y 1 para indicar que el archivo en cuestión puede ser ejecutado como programa. De este modo, si queremos que un archivo pueda ser leido y modificado necesitamos 4 para lectura y 2 para escritura; 4 + 2 =6. Para indicar dichos permisos usamos 6. Si queremos que un archivo pueda ser leido, pero no ejecutado ni modificado, entonces solo necesitamos 4. Si queremos que un archivo pueda ser leido, modificado y ejecutado, necesitamos los 3 permisos para un total de 7 (4 +2 +1 = 7)

Ahora, por que 3 numeros?

Como puedes ver, los permisos se establecen usando 3 números (de hecho se pueden establecer más propiedades como si el archivo es sticky o no). Estos 3 numeros pertenecen a los 3 tipos de usuario de un sistema linux: Usuario, Grupo, Otros.

Usuario se refiere al usuario deño del archivo en cuestión. Grupo se refiere a otros usuarios pertenecientes al grupo del cual el archivo es miembro. Otros se refiere a todos los demás usuarios. De este modo si queremos que un archivo pueda ser:

Leido y modificado por el dueño del archivo en cuestion
Leido y modificado por usuarios pertenecientes al grupo del cual el archivo es miembro
Leido por todos los demás usuarios

En este caso usariamos 664. El primer 6 establece permisos de lectura y escritura para el dueño del archivo, el segundo 6 establece permisos de lectura y escritura para el grupo al cual pertenece el archivo, y el 4 del final establece permisos de lectura para otros usuarios.

Asta ahora todo bien, entonces donde está el problema?

El problema es que si a un archivo le especificas que puede ser ejecutado, cada vez que quieras abrirlo pudiera ser que tu sistema te pregunte si deseas ejecutarlo o mostrarlo. Esto se buelve molesto y quita tiempo después de unas cuantas veces. Si el archivo en cuestión es uno que estás modificando constantemente, quizá no quieras que tu sistema te pregunte a cada rato que es lo que quieres hacer con dicho archivo.

La solución por supuesto es sencilla, en lugar de 7, usamos 6. Por ejemplo, si los permisos eran 774, los cambiamos a 664. Pero que pasa cuando tenemos todo un projecto que por ciertas razones tiene permisos indeseados? Ya sea que no tiene los suficientes permisos o tiene permisos de más.

Considera un projecto que esta dividido en folders, cada folder contiene varios archivos y probablemente más folders. En mi caso estoy con un projecto de más de 500 archivos. Como cambio los permisos de todos esos archivos sin tener que ir uno por uno?

La respuesta es simple (o tal vez no). Al comando chmod podemos ponerle una banderita de modo que sea recursivo. Por ejemplo:

chmod -R 664 miFolder/

Esto va a establecer permisos a todos los archivos dentro de miFolder y es multinivel. Pero una vez lo ejecutas, te encuentras con un error de acceso. Hay archivo que no pudieron ser accesados. Y si vas a tu navegador de archivos, ahora ya no puedes abrir las carpetas. Result que para las carpetas, el permiso de ejecución significa otra cosa. Más concretamente, significa que la carpeta puede ser explorada, y lo que hicimos fué revocar ese permiso. Ahora nuestra carpeta no puede ser explorada. Y ese es precisamente el problema.

Como revoco permisos de ejecución en solo archivos y no carpetas?

Después de probar con algunas convinaciones, llegué a la solución:

chmod -R -x+X miFolder/

Lo que hacemos aquí es sencillo primero revocamos permisos de ejecución en a todos los archivos, incluyendo carpetas. Luego, con X asignamos permisos de ejecución solo a archivos que ya tenían permisos de ejecución y a Carpetas. En nuestro caso solo carpetas son asignadas permisos de ejecución (o exploración en su caso) ya que previamente revocamos permisos de ejcución a todos los archivos.

De esta manera hemos resuelto nuestro problema con un solo comando sin importat la cantidad de archivos con los que estemos tratando.

Activando mod_rewrite en apache. Ubuntu 11.4

Hace ya un tiempo escribí sobre como activar mod_rewrite en apache2. Esta vez lo voy a explicar nuevamente, pero con una diferencia crucial. El post anterior nos enseña como activar el módulo para apache2 compilado manualmente. Esta vez explico como activarlo para apache2 instalado desde repositorios, es decir usando apt-get, o algo similar, en contraste con compilar desde el código fuente.

Lo primero que vamos a hacer es abrir la consola (Terminal) y ponemos lo siguiente

sudo a2enmod rewrite

Esto nos va a crear un archivo en /etc/apache2/mods-enabled con una sola linea, la cual indica a apache que cargue el modulo rewrite. No se si sea posible simplemente crear este archivo a mano, pero por si las dudas, usen a2enmod.

La linea de comandos les dirá que reinicien apache para que los cambios surtan efecto, pero no lo hagan aun. Por el contrario, corran este comando:

sudo vim /etc/apache2/sites-available/default

Esto va a iniciar vim lilsto para editar el archivo defaul que se encuentra en la carpeta /etc/apache2/sites-available/ Si no se sienten agusto editando con vim, pueden usar su editor favorito como gedit.

Para gedit usen el comenado

gksudo gedit /etc/apache2/sites-available/default

Es importante correrlo con gksudo ya que el archivo no nos pertenece y necesitamos privilegios especiales para poder editarlo.

Una vez estemos listos para editar el archivo default, ya sea con vim, gedit o su editor preferido, buscamos la liena que dice

AllowOverride None

Hay varias, en mi caso con cambiar la primera bastó.

Cambiamos None por All de modo que nos quede
AllowOverride All

Guardamos el archivo y lo cerramos. Ahora si ya estamos listos para reiniciar apache. Para esto corremos el comando

sudo /etc/init.d/apache2 restart

Eso es todo, ahora deberías poder hacer redirecciones sin ningún problema.

 

Problemas con mysql en unbuntu 10.4 (libmysqlclient.so.15)

Ayer actualicé ubuntu a 10.4 Por la tarde cuando estaba por probar algunos cambios en un tema de worpdress me encontré que mi servidor me estaba dando un problema y no iniciaba.

httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: libmysqlclient.so.15: cannot open shared object file: No such file or directory

Una de las cosas que actualiza ubuntu es mysql y al parecer esto produce un error. El error en sí no es difícil de solucionar, y puedes hacerlo en 5 minutos. Lo único que está pasando es que ubuntu elimina un archivo e inserta otro en su lugar. Estamos hablando específicamente de libmysqlclient.so.15. Por suerte encontré un sitio que mantiene una copia de este archivo, por lo que lo único que tienes que hacer es obtener una copia y guardarla en donde el servidor espera que este dicho archivo.

sudo wget -O /usr/lib/libmysqlclient.so.15 http://files.directadmin.com/services/es_5.0/libmysqlclient.so.15
--2010-05-01 08:51:08--  http://files.directadmin.com/services/es_5.0/libmysqlclient.so.15

En este caso lo que estamos haciendo es obtener una copia del archivo faltante y guardandola en nuestra computadora. Notar que usamos sudo ya que como usuario normal no podríamos escribir en /usr/lib/.

una vez hecho esto, inicia tu servidor como siempre. El problema debería estar resuelto.

Com activar mod_rewrite en apache2 -ubuntu.

Si compilaste manualmente apache2, probablemente no configuraste el modulo rewrite, que es el que permite usar htaccess en tu servidor.Al menos esto me pasó a mi. Aclaro que las siguientes instrucciones son para aquellos que compilaron apache manualmente.

Haz una instalación cono comúnmente lo harías, pero al inicio, cuando haces el ./config agrega lo siguiente:
--enable-rewrite=share.
En mi caso solo estaba instalando ese modulo, por lo que la instalación se veía de este modo:

./configure --prefix=/usr/local/apache2 \
--enable-rewrite=share

Para ser sincero no se si es necesario poner las instrucciones en lineas separadas, pero a mi no me funcionó poniéndolas en la misma linea.
Después puedes proseguir con tu instlación normal.

Una vez tengas todo instalado, revisa que en /usr/local/apache2/modules/ tengas un archivo llamado mod_rewrite.so Si lo tienes, entonces todo ha salido bien. Ahora edita tu archivo de configuración, debe estar en /usr/local/apache2/conf/httpd.conf, agrega la siguiente linea:

LoadModule rewrite_module /usr/local/apache2/modules/mod_rewrite.so

y localiza la parte donde dice:

<Directory “/path/a/tus/archivos/”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
#El valor original era None, lo cambio para usar .htaccess
AllowOverride None

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

</Directory>

Fíjate la linea que dice AllowOverride None, cambia el None por All de modo que diga AllowOverride All
Inicia tu servidor y debería estar funcionando con soporte para htaccess.

Como configurar google public DNS en ubuntu.

Hace algunos días google anunció el lanzamiento de su servicio public DNS. Para aquellos que no sabe, DNS es el sistema que se encarga de traducir las URL a ip. Por ejemplo, cuando en tu navegador introduces la dirección http://www.google.com, esta es traducida a una dirección ip, en este caso:  74.125.19.105 Para comprobarlo, introduce los numero anteriores en la barra de direcciones de tu navegador y presiona enter. Esto debería llevarte directamente a la pagina de google.

Por que querría alguien cambiar la configuración de sus DNS?

Las respuestas pueden ser muchas, puedo mencionar por ejemplo, por velocidad. Es posible que un servicio sea más lento que otro ya sea por que aplica muchos filtros o simplemente por que el servicio es lento. En mi caso, decidí cambiar los DNS por que mi ISP aplicaba filtros de modo que si yo me equivocaba y ponía una dirección incorrecta, el navegador se iba al buscador y la publicidad de mi ISP. Además, estoy acostumbrado a simplemente poner la dirección, por ejemplo google y presionar enter, sin poner el .com, pero mi ISP me mandaba a su buscador en lugar de auto completar el dominio (google.com) (No estoy seguro, pero se supone que el navegador por si solo debería se capaz de completar el dominio). La situación era muy molesta, y por esa razón decidí hacer el cambio.

Como hacer el cambio de DNS en ubuntu?

En la verción 9.10 de ubuntu, solo tienes que hacer una modificación al archivo de configuración del cliente DHCP.

Primero abre el terminal y escribe:

ls /etc/dhcp3/

y presiona enter.

Fíjate que tengas un archivo llamado dhclient.conf

si está ahí, escribe:

gksudo gedit /etc/dhcp3/dhclient.conf

Esto te abrirá dhclient.conf en gedit. Ve hasta el final y agrega la siguiente linea:

prepend domain-name-servers 8.8.8.8, 8.8.4.4;

guarda los cambios y cierra gedit.

y listo, ahora ya puedes conectarte a internet usando google public DNS.

Que hace esto?

Lo único que hace el cambio que hemos hecho en dhclient.conf es agregar la IP de los DNS a usar antes de las de los de tu ISP. Lo más seguro es que estés usando las que tu proveedor de Internet te ha provisto como era mi caso.

Notas:

1)Se puede usar vi (sudo vi) en lugar de gedit (gksudo gedit), pero personalmente me siento más comodo con gedit que con vi.

2)Si tienes acceso al panel administrativo de tu router (conecciones inalámbricas) probablemente puedas hacer configuraciones más avanzadas. En mi caso, por ejemplo, podría introducir directamente los DNS desde ahí y hacer algunos otros cambios, pero prefiero no hacerlo y recomiendo no hacerlo a menos que sepas exactamente lo que estás haciendo.