viernes, 7 de noviembre de 2008

VIM background color

Normalmente uso Konsole con transparencia lo que me permite ver el papel tapiz de mi escritorio, esto provoca que algunas veces no pueda ver bien la sintaxis colorida que presenta el VIM, para estos casos lo que suelo hacer es presionar ESC varias veces, luego escribir :set bg=dark o :set bg=light según sea el caso. Pues bueno buscando por ahí encontré esta wiki y vi como hacer el cambio con solo oprimir una tecla, en este caso F11, aquí esta el código que se tiene que agregar al ~/.vimrc

.vimrc:

map <F11> :let &background = ( &background == "dark"? "light" : "dark" )<CR>

Snippets en Blogger a todo color!!!

Muchas veces he visto en las paginas de los foros como a la hora de mostrar algún fragmento de código (snippets) se muestran con una fuente especial, con sintaxis remarcada, etc., tal cual se ve en un editor tipo VIM o Kate, pues bueno, después de un tiempo con eso en mente para agregarlo a mi Blogger traté hacerlo por medio del elemento HTML <div> con su respectiva hoja de estilo añadida a la plantilla de mi Blogger pero no funciono como yo quería, afortunadamente encontré que podía usar la etiqueta <pre> que sirve exactamente a mis propósitos, es posible modificar este elemento por medio de hojas de estilo para que quede a nuestro gusto.

VIM:
Para que VIM nos exporte un mejor codigo HTML y que nos sea mas fácil usarlo agregamos lo siguiente al archivo ~/.vimrc:

.vimrc

map <F11> :let &background = ( &background == "dark"? "light" : "dark" )<CR>

syntax on
" Conversion HTML (:help 2html.vim)
let g:html_use_css = 1
let g:html_use_encoding = "utf8"
let g:use_xhtml = 1



Para darle formato a un código oprimimos varias veces la tecla ESC, después escribimos gg=GG, esto indentará nuestro código. Si queremos reemplazar los tabuladores por espacios oprimimos varias veces ESC, luego escribimos :set expandtab y damos ENTER, seguido de :retab, y listo. Para exportar esto a HTML volvemos a dar ESC varias veces y escribimos :runtime syntax/2html.vim para utilizar este plugin, bastará con guardad el archivo HTML mostrado y extraer de él la sección de la hoja de estilo y todo lo contenido dentro de las etiquetas <pre>, este código lo insertaremos en editor de Blogger junto con la hoja de estilo.

Kate:
Kate hasta donde veo no usa hojas de estilo al exportar en HTML, por eso los atributos de color se agregarán dentro de las etiqueta <span> provocando un poco mas de desorden, aunque de esta forma no tenemos que estar agregando la seccion <style> al Blogger.

Con Kate para reemplazar todos los tabuladores por espacio (8 en mi configuración) daremos clic en Tools->Clean Indentation (Herramientas->Borrar Sangrado) y Tools->Align (Herramientas->Alinear), despues damos clic en File->Exporta as HTML... (Archivo->Exportar como HTML...) después bastará con copiar la parte del código HTML dentro de las etiquetas <pre></pre> y pegarlo en el blog.


Fuentes:
[1]
[2]

...

domingo, 19 de octubre de 2008

Configuracion nVidia Geforce 6150 Go

Esta tarjeta viene integrada con una salida VGA para conectar un monitor externo y una salida de S-Video para conectar una TV, en mi caso uso un cable macho-macho de S-Video y en una de las puntas uso un adaptador de S-Video (macho) a RCA (macho) ya que mi TV solo tiene este tipo de entrada para el video auxiliar.

Para esta tarjeta solo es posible tener dos displays activos a la vez y como mi idea es hacer uso de los distintos displays (monitor externo LG Studioworks 440Si, TV Samsun de 27'') para extender mi escritorio hago las siguientes convinaciones: LCD laptop, LCD laptop+Monitor, LCD laptop+TV.

La primer forma en que configuré esto fue mediante el uso de Xinerama añadiendo diferentes secciones "ServerLayout" al xorg.conf. Esto es una desventaja en el caso de que nuestro Linux arranque en runlevel 4 (Slackware) por defecto, ya que al haber un "ServerLayout" que se usa por default es necesario matar e iniciar de nuevo las X's con un distinto "layout" desde la linea de comandos de acuerdo al display que queramos usar o siempre iniciar en runlevel 3 y desde la linea de comandos iniciar las X's con el layout deseado. A continuación muestro el archivo xorg.conf que cumple con esto:

Código:

Section "ServerLayout"
Identifier "Desk"
Screen 0 "Screen Lap" 0 480
Screen 1 "Screen CRT" Above "Screen CRT"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics TouchPad" "AlwaysCore"
EndSection

Section "ServerLayout"
Identifier "Lap"
Screen 0 "Screen Lap" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics TouchPad" "AlwaysCore"
Option "Xinierama" "0"
EndSection

Section "ServerLayout"
Identifier "TV"
Screen 0 "Screen Lap" 0 480
Screen 1 "Screen TV" Above "Screen Lap"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics TouchPad" "AlwaysCore"
EndSection

Section "Files"
RgbPath "/usr/lib/X11/rgb"
ModulePath "/usr/lib/modules/extensions"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/lib/X11/fonts/misc/:unscaled"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/misc/"
FontPath "/usr/lib/X11/fonts/Type1/"
FontPath "/usr/lib/X11/fonts/Speedo/"
FontPath "/usr/lib/X11/fonts/100dpi/"
FontPath "/usr/lib/X11/fonts/75dpi/"
FontPath "/usr/lib/X11/fonts/cyrillic/"
FontPath "/usr/lib/X11/fonts/TTF/"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
Load "synaptics"
EndSection

Section "ServerFlags"
Option "DefaultServerLayout" "Lap"
Option "Xinerama" "1"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
Identifier "Synaptics TouchPad"
Driver "synaptics"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc104"
Option "XkbLayout" "latam"
EndSection

Section "Monitor"
Identifier "Monitor CRT"
VendorName "LG"
ModelName "Studioworkss 40Si"
HorizSync 31.5 - 48.4
VertRefresh 60.0 - 75.0
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Monitor Lap"
VendorName "Unknown"
ModelName "Nvidia Default Flat Panel"
HorizSync 29.0 - 49.0
VertRefresh 0.0 - 61.0
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Monitor TV"
VendorName "SAMSUNG"
ModelName "TV-0"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Videocard Lap"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce Go 6150"
BusID "PCI:0:5:0"
Screen 0
EndSection

Section "Device"
Identifier "Videocard TV"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce Go 6150"
Screen 1
EndSection

Section "Device"
Identifier "Videocard CRT"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce Go 6150"
BusID "PCI:0:5:0"
Screen 1
EndSection

Section "Screen"
Identifier "Screen Lap"
Device "Videocard Lap"
Monitor "Monitor Lap"
DefaultDepth 24
Option "RenderAccel" "True"
Option "metamodes" "DFP: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen CRT"
Device "Videocard CRT"
Monitor "Monitor CRT"
DefaultDepth 24
Option "RenderAccel" "True"
Option "metamodes" "CRT: 1024x768 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen TV"
Device "Videocard CRT"
Monitor "Monitor TV"
DefaultDepth 24
Option "RenderAccel" "True"
Option "metamodes" "TV: 640x480 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

...

lunes, 9 de junio de 2008

Renombrar archivos que contienen espacios y/o saltos de linea en sus nombres.

En ocasiones es necesario renombrar archivos que en su nombre contienen espacios en blanco y/o saltos de linea y puede darse el caso de que no se interpreten bien por algunos comandos en Linux debido a esta situación. Por ejemplo, si se quisieran renombrar todos los archivos dentro de un directorio que terminan con la extensión .MP3 a .mp3 sin alterar el nombre de las canciones (sin importar si son letras mayúsculas o minúsculas) podríamos usar algo como:

Código:

$ for arch in *.MP3; do name=`echo "$arch" | cut -d. -f1`; mv "$arch" "${name}.mp3"; done

De esta forma procesamos todos los archivos en el directorio actual que coincidan con la extensión .MP3, guardamos la parte del nombre del archivo sin extensión dentro de la variable name y hacemos el renombrado.

Nota: Lo importante a tomar en cuenta en este ejemplo es el uso de "double-quotes" para encerrar el nombre de las variables ("$arch" y "${name}.mp3") ya que con esto evitamos que la shell interprete los nombres de los archivos como varias entradas en el caso que contengan espacios en blanco o caracteres de new-line dentro del nombre y trata a cada entrada como una sola. Imagino que es posible utilizar alguna aproximación distinta como el uso de find -print0 y xargs -0 ó xargs -i '{}' pero bueno, es bien sabido que en Linux hay mas de una forma de pelar a un gato =).


...

viernes, 22 de febrero de 2008

Links mas útilies con Snap Shots

Bueno, he estado buscando algo de información para hacer un poco mas vistoso mi Blog, entre las cosas que deseaba era poder hacer que los visitantes tuvieran una previsualización de ciertos links y, voilà!! encontré este post mostrando precisamente como.

He tomado alguno de los tips que Amanda Fazani escritora de www.bloggerbuster.com da, por ejemplo el evitar que ciertos links sean referenciados con Snap Shots ya que a veces no es lo deseado, por ejemplo, algunas imágenes que se muestran en mi blog y al dar clic muestran la imagen en tamaño real. Para esto basta con agregar el siguiente código class="snap_noshots" a las etiquetas A HREF que queramos de la siguiente forma:

<a href="http://www.blogger.com/alguna_imagen.gif" class="snap_noshots">
<img src="http://url_alguna_imagen.gif" />
</a>




...

I Robot - Luke Arm

Simplemente wow!!! vagando por ahí en uno de los sitios que ahora frecuento gracias a mis residencias encontré este video. Es un proyecto llamado DEKA del Departamento de Defensa de los EUA en el cual se hace investigación sobre una nueva generación de prótesis. Han desarrollado un brazo robot al que han nombrado Luke Arm haciendo referencia al personaje de Luke Skywalker de la saga de la Guerra de las Galaxias. Es verdaderamente impresionante y me hace recordar lo mucho que se trata este tema en el cine con películas como "Yo Robot", "Inteligencia Artificial", "El Hombre Bicentenario", "Matrix", etc., que hablan del tema en donde la fusión y la convivencia del hombre y la maquina es cada vez mayor hasta el punto en que ya no se sabe si el límite es la ciencia ficción.
  1. Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano sufra daño.
  2. Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto si estas órdenes entran en conflicto con la Primera Ley.
  3. Un robot debe proteger su propia existencia, hasta donde esta protección no entre en conflicto con la Primera o la Segunda Ley.
...