miércoles, 18 de junio de 2014

I love Ruby!

Una vez que te decidiste a transitar el camino de Ruby, no vas a volver!
 ...si pasas el primer peaje.

Hoy les dejo una entrada simple y cortita que trata de cómo instalar cualquier versión de Ruby en cualquier Unix base.
Lo que vamos a utilizar es RVM: Ruby Version Manager.
Rvm te deja deployar cada proyecto con su entorno propio y dedicado, desde una versión específica de Ruby hasta el conjunto de gemas requeridas por la aplicación. Tener este sistema corta con el problema de tener conflicto entre proyectos por distintas versiones de gemas que, según la web de rvm, nos causa muchas horas de dificil rastreo de errores y pérdida de cabello.


Sin más, vamos a las específicas!
Lo que vamos a hacer no es para nada complicado, pero hay que hacerlo paso por paso y asegurarnos de que todo va saliendo bien ya que un paso depende del otro. Parece un pecado decirlo así pero si sos de los usuario de windows que están haciendo la migración al mundito linux, ésto te va a venir al pelo!!

Antes de comenzar con rvm, necesitamos tener curl: sudo apt-get install curl

cd ~/ 
curl -L https://get.rvm.io | bash -s stable --ruby 
source .rvm/scripts/rvm
rvm reload

Ahora, lo siguiente es agregar ésta línea en ~/.bashrc



# This loads RVM into a shell session.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"


Y listo, ahora cada vez que abras la consula "ruby -v" va a retornar la versión de turno en el rvm.


Para instalar ruby, lo que tenemos que hacer es tirar el siguiente comando:
rvm install 2.1.1
que lo que va a hacer es instalar el último patch level de la versión 2.1.1 (funciona con cualquier versionado).
Si instalamos varias versiones, hacemos:
rvm list
Para ver qué versiones tenemos en nustro sistema y para utilizar una de esas versiones específicas:
rvm use <version> --default

donde <version> podría ser: 2.1.1


sábado, 10 de mayo de 2014

Papyre pad 703 modding

 Hace un par de días me compré una hermosa tablet Papyre pad 703 y me encontré con un par de problemitas:
  1. Tenía el theme de Gaturro que, para un pibe de 23 años, era un poco molesto; imágenes de gatitos y patitas de gato por todos lados.
  2. Venía con aplicaciones preinstaladas que cuando las eliminaba o actualizaba y reiniciaba la tablet se volvían a instalar solas.

Entonces si sos como yo, que tenés esa tablet por ahí o por la relación precio-potencia estás interesado en comprarla pero lo único que te retiene de usarla o comprarla es alguno, incluso ambos, de los problemas que comenté arriba, ésta entrada es para vos!

En la presenta entrada del blog me voy a limitar a indicar los pasos a seguir para lograr hacer un modding de tu Papyre pad 703. Sacando el paso de obtener root en la tablet, lo demás es aplicable a cualquier sistema Android (salvando las diferencias de tamaños en las imagenes) puesto que todo android manjea el mismo file system.



Primero: Antes de poder lograr cualquier cosa tenemos que conseguir permisos de root en nuestro android. Esto es fácil una vez que conseguiste información de cómo rootear el "Rockchip rk3188" y acá tenemos que agradecerle a Agustin que fue la persona que, recorriendo lugares recónditos de internet, consiguió el aplicativo para rootear esta tablet.
 

Según wikipedia: The RK3188 is based on ARM's Cortex A9 design and features a quad core CPU clocked up to 1.6 GHz frequency on a 28 nm process,
(http://en.wikipedia.org/wiki/Rockchip#RK31xx_series).

Haciendo click acá podrán descargar el aplicativo. La descarga consiste en un archivo zip que guarda una carpetilla con todo lo necesario, lo que nosotros debemos hacer es descomprimir este archivo en algún lugar de nuestro disco y recordar dónde.
Acto seguido, abrimos una terminal con Inicio -> Ejecutar -> cmd.exe (si tenés windows 8 como yo, y lo puedo decir abiertamente ya que el que tengo es legar :D, en el menú inicio escribís "cmd admin" y presionas ENTER)  y navegar hasta la carpeta que acabamos de descomprimir.
Ahora necesitamos encender la tablet, si no la tenemos encendida, y activar el famoso y ponderado modo depuración USB. Para tal objetivo: 

Configuración -> Opciones del desarrollador -> Depuración de USB.

Conectamos mediante el cable USB nuestra tablet a la PC.
Dentro de la carpeta que descomprimimos hay un archivo .bat, de nombre "TPSparkyRoot", que es el que tenemos que ejecutar; acto que logramos escribiendo, en cmd, "TPSparkyRoot.bat" (sin las comillas), Precionamos ENTER y seguimos las instrucciones.

Si todo salió bien, tendremos nuestra tablet rooteada.


Segundo: Como segundo paso voy a explicar cómo evitar que las aplicaciones se instalen solas (y se desactualicen, en caso de actualizarlas y reiniciar la tablet) y así poder quitar las aplicaciones que no utilizamos, de las que vienen preinstaladas.
El proceso es muy simple.
Habiendo rooteado nuestra tablet, se instalaron un par de programitas re lindos que nos van a facilitar las tareas.
El primer paso es desinstalar las aplicaciaciones que no queremos tener. Luego la aplicación RootExplorer nos va a permitir navegar por el sistema de archivos de nuestra tablet, entonces nos dirigimos, con la aplicación, a /system/preinstall y pulsamos, en la parte superior, "mount R/W" para que nos permita modificar el contenido.
Adivinad .... si, ahí están todos los apk's. Bajo la misma aplicación, rootexplorer, podemos eliminarlos manteniendo el dedo sobre el apk y seleccionando "Delete".


Tercero: Ahora vamos a ver el tema del molesto splash o bootAnimation de las patitas de gato y muchos gaturros felices por detrás.
Resulta que en el File System de android tenemos una carpeta especial en la cual podemos encontrar un archivo zip llamado "bootanimation" (bootanimation.zip), /system/media.
Lo que hay que hacer es bajarse y/o hacer un nuevo bootanimation.zip y reemplazarlo.

Te dejo dos cosas:
  1. Un enlace hermoso, pero en inglés, sobre cómo hacer tu propio bootanimation: http://apcmag.com/how-to-make-your-own-android-rom-part-3-boot-animation.htm
  2. Un enlace a una lista linda de bootanimation hechos: http://rootzwiki.com/topic/5561-boot-animation-huge-collection-of-boot-animations-updated-11-04-11/  
Te pasas el archivo bootanimation.zip a la tarjeta de memoria como harías con la música y después con el rootExplorer lo pasas a la carpeta en donde va el bootanimation. 

Importante: Si bajaste un .zip con otro nombre a "bootanimation" es importante que lo renombres a, justamente, "bootanimation".

sábado, 5 de abril de 2014

Habemus Blog.


Estoy feliz, motivado y expectante sobre esto; siempre quise escribir un blog de temática general pero nunca me animé, diversos motivos siempre me frenaban.
Todo cambió, por suerte. Hoy la realidad es otra, estoy en un intento fuerte de dejar de fumar y pensé: "qué mejor para dejar una rutina, un vicio, que empezar otro -más sano- y encima poder mantener las manos y la mente ocupada?".

Yo soy Ramiro, una más de las vidas que conocieron la luz en mayo de 1991. Soy bastante curioso y me gusta aprender cosas prácticas. Suelo tener problemas con las cosas impuestas, pero llego a ser muy sinérgico con las cosas que me llaman la atención; me encantan los desafíos y disfruto cuando tengo el tiempo para lograrlos.
Académicamente: me encuentro cursando la carrera de Ingeniería en Informática en la Universidad Nacional del Litoral.
Laboralmente: Rectorado (UNL), Mesa de ayuda - Informática-

-¿Qué esperar de este blog?
Nada/Todo. Siempre me gustó la idea de algo multidisciplinal, indagar en distintas cosas.

-¿A quién está dirigido el blog?
Público en general. Voy a tratar de lograr una forma estándar de expresión





Como primer entrada, les dejo un regalito:

Resulta que, en la facu, me encuentro haciendo algunas cosas con el Xilinx ISE Desing y el tema es que cuando hacemos el vhdl testbench hay que generar las distintas combinaciones de valores de verdad (binarios) para las variables de entrada; lo cual es fácil para pocas variables pero se torna molesto para cuando tenemos 3 o más.
Para olvidarme de ésto hice un pequeño script en Ruby: que genera sólo el código necesario y luego lo copia al clipboard para ser pegado en el testbench.

#require 'rubygems' #descomentar esta línea para ruby 1.8
require 'clipboard'
=begin
READ THIS:
  Linux:
      sudo gem install clipboard #Agrega la gema que labura con el clipboard
      sudo apt-get install xclip #Interfaz, de linea de comando, para copy&paste sobre entornos gráfico.
  Windows:
    gem install ffi
    gem install clipboard
=end

def alg1(v)
  #Algoritmo que arma el "arbol binario".
  #de la tabla de verdad para las variables. 
    if (v <= 0) then
      return Array.new([0, 1])
    else
      return Array.new([0, alg1(v-1), 1, alg1(v-1)])
    end
end
def alg2(v, str, pos)
    if (v.size == 2) then
      _ret1 = String.new()
      _ret1 = str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[0]) + "';"
      _ret1 = _ret1 + "\nWAIT FOR 10 NS;\n"
      _ret1 = _ret1 + str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[1]) + "'; \nWAIT FOR 10 NS;"
    else
      _ret2 = String.new()
      _ret2 = alg2(v[1], str + "#{ARGV[ARGV.size - pos]} <= '" +String(v[0]) + "';\n", pos -1)
      _ret2 = _ret2 + "\n"
      _ret2 = _ret2 + alg2(v[3], str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[2]) + "';\n", pos - 1)
     
    end
end

  if (ARGV[0] == '-h' or ARGV.size == 0) then
    puts "Usage:"
    puts "\truby vhdlPlugin.rb [-h | [A B [C ...]]]"
    puts()
    puts "-h : Show this message"
    puts "A B [C ...] : Generate the Xilinx code from the TruthTable of those literals, and send it to the clipboard"
  end
  if (ARGV.size > 1) then
  puts "[Sending text to clipboard...]"
  Clipboard.copy(alg2(alg1(ARGV.size - 1), "", ARGV.size)) #para n+1 variables
  puts("[ok]")
  end

Primero: Hay que tener instalado Ruby en el sistema!

Segundo:
      Linux:
      sudo gem install clipboard #Agrega la gema que labura con el clipboard
      sudo apt-get install xclip #Interfaz, de linea de comando, para copy&paste sobre entornos gráfico.
    Windows:
    gem install ffi
    gem install clipboard
Tercero: La forma de utilizarlo, es la siguiente
    ruby script.rb A B C
    Esto generará el código para los literales de entrada A, B y C

Espero que álguien, porque tengo fe de que alguna persona leerá este blog, se cope con hacer una versión mas copada.