miércoles, marzo 05, 2014

Factoria / Cooperativa de Software

martes, julio 09, 2013

Fluxset: para configurar rapidamente un segundo teclado y monitor

 
 https://github.com/karancho/fluxset 
 
Script que permite configurar rapidamente un segundo teclado y monitor.

Escenario
- Monitor corriendo a 1360x768
- Segundo monitor, conectado por VGA o HDMI
- Segundo teclado, en otro idioma
- Fluxbox, LXDE o cualquier Windows Manager sin panel de control
- Estupido panel de control de Unity, Gnome o KDE, o peor aun de Windows (inutil sin drivers), incapaz de setear correctamente, o con deficiencias la resolución de video.
Este script permite elegir rapidamente entre los modos.
-------------------------

Script able to set up a second monitor and a second keyboard

 Scenario:
- Display running at 1360x768 - Second monitor display, awaiting on VGA or HDMI
- Second keyboard in another languaje
- Fluxbox, LXDE or any other Window Manager without control panel - Stupid control panel on Unity, Gnome, KDE or fat WM, unable to put adequately 1920x1080, 1024x768, etc

This tiny script let quickly to choose  a double monitor + keyboard configuration 

---------------------------

Sergio Alonso - escuelaint@gmail.com

miércoles, mayo 08, 2013

ncurses es un sentimiento


Todos aquellos que alguna vez jugaron con conio.h, seguramente descubrirán con agrado a ncurses.

Aquí puede verse algunas de las tantas aplicaciones hechas con esa magnifica librería.

WM: LXDE
Terminal: Terminator

Aplicaciones: finch (google chat + skype + irc + etc), turses (twitter), cplay, mutt (con gmail), mytop

Estas app vienen muy bien si les toca una computadora limitada en recursos para trabajar. En este caso, en un Celeron con 1.6 GB de RAM

Si, ya se que estamos en el año 2013. Pero al linuxero le dan estas cosas, total, "se las arregla".

martes, diciembre 11, 2012

Ordenar y limpiar archivos grandotes con Ruby y Bash


Curiosidad:

Tengo una colección de diccionarios que me pasó Dinno hace un tiempo. Quería dejar el aircrack cotejándolos, pero son 44 archivos, y quería ver como serializarlos, es decir, procesarlos a todos. Ademas, estoy seguro que hay palabras que se repiten entre los diccionarios.
Se me ocurrió unir todos los archivos en uno solo, ordenar las palabras internamente, y borrar las duplicadas.

Unificar todos los diccionarios en uno solo, se pudo hacer directamente desde el irb:

archivos = Dir.entries(".")
=> ["numeros.txt", "HackPass-1.txt", "pass_habituales2.txt", "passlist.txt", "passlist-3.txt", "user.txt", "otras_palabras.txt", "HackPass-3.txt", "passwordjhon.lst", "passwords.txt", etc etc

archivos.size.times do
system("cat #{archivos[i]} >> TODOS.txt")
i = i + 1
end

Listo, ahora tengo un archivo de 141 MB. Luego, para ordenarlo y limpiarlo, me dio fiaca y use el viejo uniq:

cat TODOS.txt | sort | uniq > TODOS_LIMPIOS.txt

Si comparamos tamaños:
ls -lh TODOS*
-rw-rw-r-- 1 s s  95M dic 12 00:01 TODOS_LIMPIOS.txt
-rw-rw-r-- 1 s s 141M dic 11 23:56 TODOS.txt

¡Que diferencia! y esto implica MUCHO tiempo de proceso menos para aircrack ;)

Es decir, comparemos la cantidad de palabras:

wc -l TODOS* 

11.035.510 TODOS_LIMPIOS.txt
15.746.349 TODOS.txt

Esto implica 4.710.839 menos comparaciones que deberá hacer nuestro querido amigo aircrack. Y por cierto, la resta de este numero al total de claves es importante para saber cuanto le falta al programa para terminar, ya que si bien va mostrando la cantidad de claves analizadas, no muestra cuantas les queda por procesar.

Es decir, si lanzo:

aircrack-ng -w TODOS_LIMPIOS.txt -b C8:6C:87:56:5E:0D speedynet.cap 

Y veo que mi CPU es capaz de procesar aproximadamente 1300 claves por segundo, puedo saber que

11035510 / 1300 / 60 / 60 = 2.35 hs

Y a esperar. Bastante menos, espero ;)

miércoles, octubre 24, 2012

Configurar rsync en Windows 2008 Server para permitir backups desde Backuppc (Linux)


Compartir recursos rsync en Windows 2008

  1. Instalar CwRsync (Server) https://www.itefix.no/i2/cwrsync
  2. Entrar a Inicio → CwRsync Server → rsyncd.conf
  3. Agregar las siguientes lineas (adapte a sus necesidades, y tenga en cuenta que la ruta /cygdrive apunta a los discos c, d, etc)

UID = 0
GID = 0

[bases]
path = /cygdrive/d/xampp/mysql/data
read only = false
transfer logging = yes

[dump_sql]
path = /cygdrive/d/dump_sql
read only = false
transfer logging = yes

  1. Entre a Inicio → Ejecutar → Services.msc
  2. Active Rsyncserver como “automático” e inicie por primera vez el servicio.
  3. Nota para el administrador del servidor de backup: ejemplo de entrada en /etc/backuppc/ (todas las lineas son importantes)

$Conf{RsyncShareName} = [
'dump_sql',
'bases'
];
$Conf{CompressLevel} = '3';
$Conf{PingMaxMsec} = '500';
$Conf{XferMethod} = 'rsyncd';
$Conf{RsyncdAuthRequired} = 0

viernes, agosto 24, 2012

Elegir entre dos GRUB

Si han instalado otra distribución de Linux junto a la que usan actualmente, en otra partición, la última les pisará el GRUB anterior.

Por ejemplo, tengo instalado Ubuntu 12 Precise, al cual adosé en otra partición a Backtrack 5r3, el cual es mas viejo (basado en 10.04 Lucid) pero con un kernel muy enchulado para ciertas cosas.

Para volver a tener el GRUB de Precise, es cuestion de adaptar lo que necesitemos en
/etc/default/grub

Luego hacer
sudo grub-install /dev/sda

y luego
sudo update-grub

Eso es todo.

domingo, mayo 20, 2012

Fluxbox y Conky en Precise 12.04

La mejor manera de no perder estas cosas es postearlo aca



El resto de los trucos pueden encontrarlos en mi post http://bunker-blog.blogspot.com.ar/2007/07/pimpin-my-fluxbox.html

miércoles, marzo 21, 2012

JRuby + Jirb + Swing

Tan simple como llamar al jirb que se encuentra en http://jruby.org/tryjruby


y escribir esto que encontré en la wikipedia:

require 'java'
 
frame = javax.swing.JFrame.new()
frame.getContentPane().add(javax.swing.JLabel.new('Hello, World!'))
frame.setDefaultCloseOperation(javax.swing.JFrame::EXIT_ON_CLOSE)
frame.pack()
frame.set_visible(true)


jueves, febrero 09, 2012

Reasignar teclas en Xorg

Una función casi desconocida de Linux, o de al menos en el modo X, es la posibilidad de asignar teclas a otras teclas.
Esto es muy útil. Supongamos que se me rompe la barra espaciadora en una notebook muy cara. En ese caso puedo remapearla hacia otra tecla. En este caso, reapuntarla hacia CapsLock, que no es una tecla estrictamente necesaria:

xmodmap -e "keycode 117 = space"

En mi caso, tengo un precioso teclado tipo chiclet, muy confortable y cómodo para escribir, el A4tech KV-300H.



Pero cuya única contra, es que carece de las teclas < y > - lo cual es una molestia cuando escribo tags.

De tal manera que decidí asignar ambos símbolos sobre las teclas Super (banderita estupida de Windows).

Pasos 

Para encontrar la tecla sobre la cual queremos asignar una función debemos escribir
$ xmodmap -pke

Del listado que arroja este comando, escogí


keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Bien, ahora necesitamos descubrir cual es el código correspondiente a ambas teclas super. Para ello usamos un especie de scanner que detecta pulsaciones:

$ showkey -a

Pulse cualquier tecla -- o Ctrl-D para salir de este programa

< 60 0074 0x3c
> 62 0076 0x3e

Ya tengo todo lo que necesito. Ahora reasignamos:

$ xmodmap -e "keycode 133 = 60"
$ xmodmap -e "keycode 134 = 62"


Ahora ya puedo usar las teclas Super para disparar > y <

Finalmente, lo ideal sería dejar este mapeo cargado en el arranque. Para ello, en Debian/Ubuntu creamos un archivo llamado

/etc/init.d/keyremap

que contenga estas líneas

#!/bin/sh

xmodmap -e "keycode 133 = 60"
xmodmap -e "keycode 134 = 62"



Y lo programamos en el arranque:

sudo chmod +x /etc/init.d/keyremap
sudo update-rc.d keyremap defaults

Por cierto, este truco funciona solo bajo X. Una leve variación para hacerlo funcionar bajo terminal de texto puede ser encontrada en http://linuxcool.wordpress.com/2008/04/05/mapear-teclas/

Fuentes:

viernes, noviembre 25, 2011

ComboBox Desplegable y busqueda integrada (Autocompletar)

La idea es ir escribiendo en el comboBox, y que este vaya iterando los items hasta llegar facilmente al deseado, al estilo de Google Suggest.

Este ejemplo es valido para Netbeans 7.01, y usa de base los proyectos creados con
Nuevo Proyecto - Java - Java Desktop Application

Primero baje las librerías "bundle" de swingx. No del sitio oficial, que esta caído, sino de aca: http://java.net/downloads/swingx/releases

En Herramientas - Palette, fabrique una nueva paleta de herramientas llamada SwingX



Integre las librerias a la paleta de herramientas segun: http://wiki.netbeans.org/AvbravotutorialSwingX, pero bajela las librerias desde mi vinculo.



Netbeans mostrara las paletas disponibles sobre las cuales integrar estos nuevos elementos. Escoja la creada anteriormente [] SwingX. Cuando toque [Finalizar] parecera que Netbeans se cuelga, ya que tarda un buen rato en integrar todo.

De la nueva Paleta SwingX arrastre un elemento JXComboBox,



 y pongale un nombre, por ejemplo, cachoBox


Pase a vista de código, y agregue arriba, despues del package, las siguientes líneas. Chequee que las tenga a todas:

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;


import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;


En el constructor del proyector, despues de las lineas

super(app);
initComponents();

ponga algo asi como

cachoBox.setEditable(true); //para poder escribir adentro
cachoBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "alejandro", "berenice", "juan", "ana", "bartolo", "diana", "cesar" }));
cachoBox.setName("cachoBox");
AutoCompleteDecorator.decorate(this.cachoBox);

El programa tendría que verse corriendo como


Espero que les sirva. Citando al Dr Nick Riviera: ¡adios a todos!

jueves, noviembre 24, 2011

Liberado el libro Ruby on Rails 3 en Windows y Linux Ubuntu

En fecha coincidente con la Primer Meetup de Mendoza.Rb: Intro a Ruby on Rails, a realizarse hoy a las 19:30 en la Facultad de Ingenieria de la UNC, es que aprovecho para dar la noticia:

Liberada versión 0.93 del libro Rails 3 en Windows y Linux Ubuntu 


  • Se agradecen comentarios en el sistema de bug tracking. Todo me sirve para mejorar la obra.
  • Taringueros: se agradecería que vinculen esta dirección en lugar de subir el libro a rapidshare, megaupload.com, debido a que cada dos meses publico una versión nueva de este libro, y de la otra manera estarían subiendo información a Internet que quedará obsoleta en poco tiempo.
  • Se encuentra disponible en http://www.bunker.org.ar/incubadora

Que aproveche :)

jueves, noviembre 17, 2011

PRIMER MEETUP DE MENDOZA.RB: INTRO A RUBY ON RAILS

PRIMER MEETUP DE MENDOZA.RB: INTRO A RUBY ON RAILS

Esta es la primer reunión organizada por Mendoza.rb, la idea es pasar
una tarde codeando Ruby o Rails aprendiendo y compartiendo experiencias.

Daremos una intro bien básica sobre el lenguaje y el framework para
aquellos que recién empiezan y que servirá tambien como un repaso del
"estado del Arte" para quienes ya vienen usando estas herramientas.

Es muy recomendable que cada uno venga con su notebook y asi poder
trabajar tranquilos. Tambien les pedimos que cada uno lleve una
zapatilla de corriente para no tener problemas con las baterias ni el
los lugares para "enchufarnos".

Si podés te animás, andá instalando Ruby 1.9.3 y  Rails 3.1.1, asi
evitamos perder tiempo haciendo descargas e instalaciones. De todos
modos, si tuviste algun problema para hacerlo, cuando vengas te damos
una mano, quedate tranquilo :-)

(Bibliografía: http://r3uw.heroku.com)

El punto de encuentro es en la escalera de entrada a la Facultad de
Ingenieria en la Uncuyo.

La facultad cierra 21:00 asi que a las 19:00 empezamos. Por favor
lleguen un rato antes a la entrada asi a la hora de inicio ya estamos en
el aula.
 
Para mayor información o por cualquier consulta que tengas para hacernos
podes encontrarnos en nuestra pagina de Google+
https://plus.google.com/105462708028134418515/posts o registrarte en
https://eventioz.com/events/primer-meetup-de-mendozarb-intro-a-ruby-on-rails/registrations/EFOmc27slV

Te esperamos,
Mendoza.rb

jueves, octubre 27, 2011

Midnight Commander en Red Hat Enterprise


Al parecer, en RedHat Enterprise tienen que garpar por usar el yum, para cosas tan triviales como instalar el Midnight Commander.

Lo mas simple
Buscar la version adecuada aca: http://rpm.zaytsev.net/mc/

En mi caso, una version para 64bits
wget http://rpm.zaytsev.net/mc/epel-5-x86_64/mc-4.7.2-2.190.gb341645.el5.x86_64.rpm

Y lo instalan con
yum install mc-4.7.2-2.190.gb341645.el5.x86_64.rpm --nogpgcheck 

yum es mas completo que rpm -i, ya que le provee de algunos paquetes necesarios.

Enjoy.


jueves, septiembre 29, 2011

Jugando con Python y Oracle Express 10 en Ubuntu / Debian


Machete útil para el curso de Python que voy a dar en Belatrix

Instalando Oracle Express 10 en Ubuntu / Debian
  • Agregar en /etc/apt/sources.list

deb http://oss.oracle.com/debian unstable main non-free
  • Importar las llaves

wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
  • Actualizar repos

sudo apt-get update
  • Instalar

sudo aptitude install oracle-xe-client oracle-xe-universal 
  • Configurar

sudo /etc/init.d/oracle-xe configure
  • Setear algunos paths al fnal de los archivos ~/.bash y en ~/.profile tanto del usuario con poder de sudo que realizó la instalación, como del usuario oracle (sudo su - oracle), como del root (necesario para compilar algunas cosas). Recordar que luego de cambiar estos archivos, se debe loguear nuevamente, e incluso reiniciar las X, para que las variables de entorno queden correctamente seteadas. Si no sabe de lo que estoy hablando, reincie la compu.
Entonces, al final de ~/.profile



if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Al final del ~/.bashrc

ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

  • Reinicie X, sesiones, o la maquina. 
  • Pruebe que se puede loguear como sysdba
sudo su - oracle
sqplus / as sysdba

  • Acceda a la interface web entrando a http://127.0.0.1:8080/apex como sys (o sysdba) + el password escrito durante el sudo /etc/init.d/oracle-xe configure
  • Entre a Administration > Manage Database Users > Users
  • En Account Status cambie el status de HR a unlocked y cambie la contraseña. Esto, porque la contraseña podría estar outdated. Enseguida vamos a necesitar esa contraseña. En mi caso, le he puesto "hr".
  • Nuevamente dentro del sqlplus lance algunos comandos, solo para conocer el nivel de acceso.
alter session set current_schema=HR
select * from all_users ;
select * from all_tables where owner = 'HR';


Para jugar con python, y corrigiendo apenas lo que encontré en http://agiletesting.blogspot.com/2005/05/installing-and-using-cxoracle-on-unix.html
  • Baje la ultima versión de cx_Oracle-x.x.tar.gz desde aqui.
  • Copie en /root los .bashrc y .profile anteriores, para que root tenga acceso a varias variables de entorno y rutas necesarias para compilar
  • Instale el paquete gcc
  • Conviértase en root sin olvidar el - mediante:
sudo su - root
  • Descomprima cx_Oracle-X.x.tar.gz y ejecute denro de la subcarpeta 
python setup.py install
  • Aqui va un ejemplo de conexión, con la contraseña "hr" del usuario HR. Idealmente, no copie el código desde aquí. Este lenguaje es muy sensible a los espacios, en su lugar hágalo desde aquí: http://pastebin.com/GqZBS38C

import cx_Oracle                                  
from pprint import pprint

connection = cx_Oracle.Connection("HR", "hr")
cursor = cx_Oracle.Cursor(connection)

#Ejemplo trayendo desde una tabla de sistema
sql = "SELECT TABLE_NAME FROM ALL_TABLES"
cursor.execute(sql)
data = cursor.fetchall()
print "TABLE_NAME"
pprint(cursor.description)
pprint(data)
cursor.close()
connection.close()


lunes, septiembre 12, 2011

Detectar y reparar el sistema de archivos

(Actualización)

Una pregunta que me hacen a menudo es como reparar el sistema de archivos en Linux. O, "cual sería el scandisk".
Es muy raro que se deba reparar el sistema de archivos. Pero esta acción a veces corrige algunos comportamientos extraños. Pero por si no lo sabían, no se puede reparar un volumen montado si esta siendo usado

Por eso lo ideal es pedirle al comando fsck que revise en el próximo reinicio, antes de montarlo:
  • Crear como root un archivo en la raíz del volumen, llamado forcefsck. Por ejemplo, para la raíz:
sudo touch /forcefsck
  • Hacer lo mismo por cada volumen que tengan en una particion aparte. A mi me gusta dejar el home en la ultima particion, de modo que ademas hago:
sudo touch /home/forcefsck

Otra manera es pedirle al script que reinicia, que chequee las particiones durante el proximo reboot:

sudo shutdown -rF now

Por cierto, si se detecta comportamiento extraño, siempre hay que hacer una revisión de sectores dañados. Este comando no escribe datos, solo informa de sectores ilegibles. Por ejemplo, para revisar la primer partición

sudo badblocks /dev/sda1

Y otro comando que es muy util es 

sudo palimpsest

Este comando, al menos en Ubuntu, nos muestras los valores SMART de la controladora. Es es una alerta temprana a un disco que se encuentra fallando, o que probablemente va a fallar. Tambien es muy útil para sacarse algunas dudas, ya que al informarnos la cantidad de horas de vida que tiene el disco, es muy util para comprobar si nos han vendido un disco viejo. Es un comando imprescindible antes de comenzar la instalación de cualquier computadora destinada a servidor. 


Cuando las cosas estan realmente mal, y ni siquiera arranca el sistema operativo, lo ideal es iniciar con un cd o pendrive limpio, mirar las particiones con

cat /proc/partitions

y limpiar con algo asi como

sudo fsck.ext4 -cDfty -C 0 /dev/sd**

Lo que significa

  • Analizar sectores dañados
  • Optimizar carpetas
  • Mostrar progreso

viernes, septiembre 09, 2011

Trabajo en Belatrix

Broadcasting a todos mis pollos (recibidos):

En Belatrix se encuentran a la busqueda de recursos para QA y Desarrollo... y hay puestos para juniors.

Mandenme please curriculums, si son en ingles mejor.

Si no saben como hacer un curriculum en ingles: http://www.delicious.com/karancho/ingles+curriculum


jueves, agosto 25, 2011

Curso de Linux Inicial



Pa quien interese: empiezo este viernes a dictar un curso de #Linux Inicial en #UTN Facultad Regional Mendoza - Viernes de 18 a 21:30 hs

Para mas datos: sergio [at] eim esc edu ar