Gastón Ramos – Ruby, Rails…

Blog dedicado al desarrollo web en general pero más que nada en ruby on rails

Learn by doing with emacs

Continúo con el tutorial práctico de Emacs, hoy aprendí las teclas básicas para mover el cursos através del texto, les dejo un pequeño resúmen:

	C-f	Move forward a character
	C-b	Move backward a character

	M-f	Move forward a word
	M-b	Move backward a word

	C-n	Move to next line
	C-p	Move to previous line

	C-a	Move to beginning of line
	C-e	Move to end of line

	M-a	Move back to beginning of sentence
	M-e	Move forward to end of sentence


Ahora a practicar!

Learn by doing with emacs

Hoy empecé a hacer el tutorial de emacs (estoy usando emacs24) que viene “de fábrica”, Learn by doing.
Aprendí cosas básicas que no sabía (muy mal lo mío), por ejemplo, como moverme en la pantalla:

C-v moverme hacia adelante un pantalla
M-v moverme hacia atrás una pantalla

Y algo que me gustó mucho es esto, apretando

C-l

hacemos que la pantalla se redibuje y deje en el centro
el texto que tenemos dónde está el cursor, genial!

Otra cositas para moverme por el texto:

			  Previous line, C-p
				  :
				  :
   Backward, C-b .... Current cursor position .... Forward, C-f
				  :
				  :
			    Next line, C-n

Estas combinaciones de teclas no son caprichosas y uno de los objetivos que
tiene es que mantengamos las manos en la posición standard.
Para arrancar el tutorial presionar las teclas C-h t dentro del editor emacs.

Tip Linux/Bash: rename, un comando muy cheto para renombrar un conjunto de archivos

Hace un tiempo atrás tuve que renombrar un conjunto de archivos, como soy vago, no quería hacerlos a mano uno por uno, así que buscando un poquito
me encontré con este hermoso script en perl: rename, que en realidad es un symlink a /usr/bin/prename. Rename sirve para renombrar un conjunto de archivos
utilizando un regex, por ejemplo para eliminar la extensión .bak de todos los archivos:

rename 's/\.bak$//' *.bak

o para cambiar todas la letras mayúsculas por minúsculas:

rename 'y/A-Z/a-z/' *

como pueden ver las limitaciones están en la imaginación y el conocimiento de regex de cada uno.

Este fué el primer tip Linux/Bash, dicho sea esto, me comprometo a escribir uno por semana.

Los ejemplos de este artículo fueron extraídos/copiados del manual de rename (man rename).

Configurar acentos con teclado US en GNU/Linux Debian

Hace poco adquirí una laptop Sony Vaio S series ultrabook con teclado US, y por unos días estuve escribiendo sin acentos, obviamente esta no era una forma correcta de escribir, así que después de un poco de investigación encontré la forma de configurar el teclado correctamente, así:

Editar el archivo /etc/default/keyboard

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="intl"
XKBOPTIONS="lv3:ralt_switch,terminate:ctrl_alt_bksp"

BACKSPACE="guess"

básicamente lo que tengo es un teclado pc105, pero el detalle
a tener en cuenta es en XKBOPTIONS la opción “lv3:ralt_switch”
que hace que cuando apretamos la tecla alt derecho, las funciones de algunas teclas cambien, entonces para escribir una a acentuada, lo que tenemos que hacer es apretar “alt-der” + “‘” y luego la “a”.

Así que ahora podemos disfrutar de los acentos, y para escribir una “ñ” tenemos que apretar: “alt-der” + “shift” + “~” y luego la “n”.

Mi charla de programación extrema

El jueves pasado fue la primer meetup del grupo rubylit, me tocó dar una charla de XP, estuvo buena, surgió el debate, algunos contaron historias propias, me quedé muy conforme, acá les dejo los slides:

http://gastonramos.com.ar/slides/xp

Resaltar paréntesis en emacs

Emacs tip: Posicionando el cursor en un paréntesis resalta cual es el otro paréntesis que lo abre o lo cierra, para lograr esto necesitamos agregar esto al .emacs:

(show-paren-mode t)

También funciona con llaves y corchetes.

Saludos.

 

 

 

Huerta orgánica, 5 meses más tarde…

Hola vuelvo a postear sobre mi primer proyecto de permacultura, la huerta orgánica, pueden leer el primer post y ver las fotos, como pueden observar he podido cosechar choclos, un choclo por cada planta de maíz,es poco, me habían comentado que cada planta daba como 4 choclos, debe ser por qué le puse abono una sola vez y al tierra no es muy buena, también pude cosechar porotos, chaucha sable y chaucha de a metro, tomate, rúcula, y albahaca, la labahaca dió buenos resultados, coseché más alabahca de la que puedo comer :), y todabvía queda un montón, otra cosa que me dió buenos resultados es la la calabaza, la planta de calabaza se ha extendido por todo el terreno hacia el este, y hay más 12 calabazas grandes, y ya me comí 3.

Algunas reflexiones/conclusiones que he sacado son:

  • Tengo que etiquetar lo que siembro por que después no me acuerdo, poner fecha, etc.
  • Tengo que tratar de mejorar los bancales por que están muy desprolijos
  • Tengo que abonar siempre, antes y después de sembrar

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

Musica random

Desde hace bastante tiempo que vengo usando un script en bash para escuchar música, lo que hace es seleccionar temas en forma aleatoria desde el directorio que le paso como parámetro, escuchar música así tiene varias ventajas:

  • En menos de un segundo ya estoy escuchando música (lo que tardo en escribir “musica” en la consola”)
  • Escucho música que de otra forma no esucharía, entonces a veces me sorpende a mí mismo la música que tengo en mi notebook.
  • No tengo que pensar en qué musica seleccionar.
  • Si un tema no me gusta, simplemente hago Ctrl + C y pasa al siguiente.

El script es este:

#!/bin/sh
DIR=$1
find $1 -iname "*.mp3" | mpg123 --random --title --list - --verbose

requiere tener instalado el programa mpg123 y luego llamamos al script así:

./musica-random.sh /home/musica

Y listo.

 

Focus

La semana pasada fuí a la última meetup de Rubylit del año, hubo dos charlas una de ellas fué “Focus” por Eloy, la charla era un resúmen del libro Focus de Leo Babauta, la idea es tratar de focalizarnos en lo que más nos gusta hacer (en mi caso por ej programar) y no perder el tiempo en cosas que no tienen importancia para nosotros, como por ej: facebook, twitter, leer el mail, etc, tarea que no es fácil en la era de la distracción. Hoy terminé de leer libro y la verdad es que me pareció genial, es cortito, la versión en español tiene unas 129 paginas, se lo recomiendo a cualquier persona que realice una actividad creativa que requiera concentración, además tiene un capítulo especial para las personas que son Padres, que es mi caso.

Aca pueden descargar el libro que es gratuito y además tiene licencia libre: http://homominimus.com/2010/12/03/focus-de-leo-babauta-traduccion-al-espanol/

Empecé a practicas algunas cosas que recomienda el libro esta semana, algunas son:

  • Leer el mail 2 veces al día (por al mañana temprano y al finalizar el día laboral)
  • No abrir facebook
  • No leer ninguna página web que no tenga que ver con lo que estoy haciendo
  • No abrir el skype si no es necesario
  • Abrir el chat irc en otro escritorio (lo uso para comunicarme con mis compañeros de trabajo dado que trabajo en forma remota)
  • Concentrarme pura y exclusivamente en lo que estoy haciendo en ese momento y no en otra cosa
  • Tengo momentos de desconexión total a internet, por ej cuando estoy trabajando en la huerta, y los sábados y los domingos genralmente no me conecto
  • Miro tele una hora al día aproximadamente

Y voy por más!

Como usar COPY from con ruby y PG driver

Estoy trabajando en un proyecto dónde necesito importar unos archivos csv muy grandes, apróximadamenteunos 40 millones de registros cada uno, luego de varias pruebas con ruby, decidí usar COPY from, sencillamente por que el script de ruby demorarba unas 15hs mientras que el copy from 20 minutos, pasé por varios errores intentando correr el COPY from con Sequel uno de los errores decía que para correr COPY from file debo ser super usuario, y que podía usarCOPY from STDIN como usuario normal (error de PG) así que la forma que encontré de correr el copy from STDIN es usando directamente el driver de PG así:

class CopyCsvImporter

  def initialize(csv_file, args)
    @csv_file     = csv_file
    @separator    = args[:separator]
    @delete_table = args[:delete_table]
    @fields       = args[:fields]
    @table        = args[:table]
  end

  def copy_cmd
    "COPY #{@table} (#{@fields}) FROM STDIN DELIMITER '|'"
  end

  def conn
    conn_args = {:dbname => App.db_conf['database'], :user => App.db_conf['username'],
                 :password => App.db_conf['password'], :host => App.db_conf['host']}

    @conn ||= PG.connect conn_args
  end

  def import!
    conn.exec copy_cmd
    File.open(@csv_file) do|f|
      f.each_line{|line| conn.put_copy_data(line)}
    end
    conn.put_copy_end
  end

end

Preste atención sobre todo al método import. Esto fué todo!

Follow

Get every new post delivered to your Inbox.

Join 370 other followers