sábado, 27 de agosto de 2011

aDeskBar Dock [remover gnome panel]


Si queremos darle un cambio a nuestro escritorio Gnome (fue probado exitosamente en Linux Mint Debian Edition y Linux Mint 10) aDeskBar es una muy buena opcion, es un dock bastante ligero y muy personalizable, para mi, un ex-usuario de Mac OS el tener un dock se hizo vital. Y prefiero algo que no requiera muchos recursos (no necesita efectos de composición como AWN o Cairo Dock).

Instalar adeskbar

Descarga el .deb e instalarlo,

Si queremos un área de notificaciones en nuestro panel, debemos instalar estos paquetes
sudo apt-get install python-alsaaudio    (si usamos alsa )
sudo apt-get install python-xlib
si no se puede desde una terminal, podemos buscarlos en el gestor de paquetes Synaptic (o el equivalente de nuestra distro).
Remover el panel de Gnome 


















haremos que aDeskBar cargue al iniciar sesion, nos dirigimos a preferencias -> aplicaciones de inicio. Añadimos un nuevo programa de inicio con lo que podemos ver en la imagen. Esto hará que aDeskBar cargue al iniciar sesión.

ahora abrimos herramientas del sistema -> editor de configuración o Alt+F2 e introducimos "gconf-editor".  y navegamos a desktop->gnome->session como muestra la imagen.

























Ahora en requiered_components_list eliminamos la opcion "panel". Esto evitara que aparezca el panel de Gnome. Reiniciamos el sistema y al iniciar sesión deberiamos de tener solo nuestro dock aDeskBar listo para utilizarse.




domingo, 21 de agosto de 2011

Otro editor de Texto avanzado [Java/JFlex/CUP]



Un editor de texto avanzado nos permite llevar un control de cierto lenguaje de programación, denotando palabras reservadas con colores, este programita reconoce sintaxis de html y php con la ayuda de jflex, es util para ver la utilización de estados en jflex.

jueves, 18 de agosto de 2011

Compilador Interprete


Compilador: Programa que traduce un lenguaje fuente a código objeto.
Interprete: Traduce a medida que va leyendo un código fuente, no produce código objeto.

Los requisitos de esta practica eran crear una compilador con opción a interprete, para un lenguaje que aceptara asignaciones de variables, declaraciones, arreglos, estructuras de control como Switch, IF, For, While.

Genera un árbol semántico y lo convierte en un objeto serializable (codigo objeto).


Como utilizarlo, ejecutamos el .jar desde una terminal (dado el caso de el ejecutable) o corremos el proyecto desde Eclipse.

para compilar:

compilar /ruta/al/archivo.src;

esto genera el archivo serializable, el .obj.

ejecutar:

ejecutar /ruta/al/archivo.obj;

Interpretar:

interpretar /ruta/al/archivo.src;

modo debug: (realmente buggy)

ejecutar -d /ruta/al/archivo.obj;

opciones debug:

set breakpoint numerodelinea;
con esto pone un breakpoint, al dar run se va a detener en esta linea.

del breakpoint numerodelinea;
quita el breakpoint que hayas puesto en la linea n.

run; recorre el arbol, y para si hay breakpoints.


DESCARGAR:

lunes, 1 de agosto de 2011

EXT2 C++


El sistema de ficheros tiene un tipo de tabla FAT de tamaño fijo, donde se almacenan los i-nodos. Los i-nodos son una versión muy mejorada de FAT, donde un puntero i-nodo almacena información del archivo (ruta o path, tamaño, ubicación física). En cuanto a la ubicación, es una referencia a un sector del disco donde están todas y cada una de las referencias a los bloques del archivo fragmentado. Estos bloques son de tamaño especificable cuando se crea el sistema de archivos, desde los 512 bytes hasta los 4 kB, lo cual asegura un buen aprovechamiento del espacio libre con archivos pequeños.
Los límites son un máximo de 2 terabytes de archivo, y de 4 para la partición.

En este proyecto crearemos un disco duro de 24mb (archivo binario) en el cual implementaremos un sistema EXT2, podremos crear carpetas, archivos, eliminar y modificar.

NOTA: La parte FAT32 no funciona y hara que se cierre el programa. EXT2 esta en estado experimental :trollface:. Pero puede serles útil y pueden mejorar este código.



sábado, 21 de mayo de 2011

Diagrama Entidad Relacion [Java]


Este es un pequeño proyecto que genera diagramas entidad relacion apartir de un archivo de entrada XML, lo scannea, parsea (con jFlex y Cup) y lo dibuja (jGraphX), permite exportar el archivo como una imagen .png y crear archivos .dbf de cada tabla del archivo de entrada.

Puede servirles de base para construir un parser y scanner.

sábado, 30 de abril de 2011

ORACLE PHP APACHE LINUX

En Manejo e Implementacion de Archivos se nos dejo trabajar un webservice en mysql y un cliente en oracle, todo iba bien hasta iniciar con oracle, pase 4 o 5 dias viendo que iba mal, pues los tutoriales oficiales no daban resultados, al fin logre armar uno con la documentacion de oracle y otras fuentes, aca lo comparto:

Utilizaremos Ubuntu 11.04, necesitamos como minimo 5GB de espacio libre en disco.

*las lineas en azul deben de introducirse en una terminal como super usuario (root).

Paso 1: agregar los repositorios de oracle para debian unstable
sudo gedit /etc/apt/sources.list
agregamos:
deb http://oss.oracle.com/debian unstable main non-free
a;adimos la llave GPG:
sudo wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
sudo apt-get update

sudo apt-get install libaio1
Paso 2: Instalar Oracle XE
sudo apt-get install oracle-xe
una vez instalado lo configuramos
sudo /etc/init.d/oracle-xe configure
podemos dejar los valores por default

puerto http:8080

puerto database listener:1521

password system y sys: nuestrapass


Paso 3: instalamos PHP5
sudo apt-get install apache2

sudo apt-get install php5-common php5 php5-dev libapache2-mod-php5 php5-cli
Paso 4: instantclient
Lo descargamos desde la pagina de Oracle: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html el instaclient Basic y el SDK

creamos una carpeta donde lo almacenaremos
sudo mkdir /opt/oracle

cd /opt/oracle
descomprimimos aca el contenido de client y el sdk, y renombramos la carpeta instantclient_11_2 a instaclient
sudo mv instantclient_11_2 instantclient

cd instantclient
Creamos Links Simbolicos:
ln -s libclntsh.so.11.1 libclntsh.so

ln -s libocci.so.11.1 libocci.so
Paso 4: Compilar OCI8
Antes con un paquete se podia descargar, pero fue movido de lugar y por lo tanto ya no sirve la instruccion, asi que nos dirigimos a: http://pecl.php.net/package/oci8

y bajamos la version "stable" mas reciente (en este tuto 1.4.5) y la descomprimimos en /usr/local/src

nos movemos a la carpeta en la terminal y ejecutamos:
cd /usr/local/src

cd oci8-1.4.5

phpize
Exportamos la linea
sudo echo export ORACLE_HOME=/opt/oracle/instantclient
luego:

./configure -with-oci8=shared,instantclient,/opt/oracle/instantclient
sudo make

sudo make install
por ultimo, agregamos la extension oci8 al php5.ini

sudo echo extension=oci8.so >> /etc/php5/apache2/php.ini
y reseteamos Apache:
sudo /etc/init.d/apache2 restart

Paso 5: Probar la conexion.

Si seguimos los pasos correctamente, todo esta listo para una prueba de conexion, en la carpeta /var/www , creamos un archivo php, al que llamaremos prueba.php con el siguiente contenido:

<?php

$conn = oci_connect('system','nuestrapass','127.0.0.1/XE');

if($conn){
echo 'it works!';
}

?>

ahora lo que queda es ir a http://localhost/prueba.php

si todo marcha bien deberiamos de ver el mensaje de exito.




Eso es todo, ahora ya podemos usar nuestras querys y demas cosas en Oracle, saludos!.

viernes, 29 de abril de 2011

Panchita: The Zombie Slayer [Java game]

Uno de mis grandes sue;os es programar videojuegos, es algo que desde peque;o me ha apasinado; ser capaz de crear mundos fantasticos, historias y personajes memorables con lineas de codigo.

La idea de "Panchita: The Zombie Slayer" es crear un juego similar a los que soliamos jugar en nuestras NES/SNES, siendo simple pero adictivo, controlamos a "panchita" quien tiene que escapar de una ciudad infestada por zombies.

Se preguntara porque java y no otro lenguaje mas habituado a los videojuegos, pues... creo que java es tan capaz de ser usado para crear juegos como lo es C u otro lenguaje, ademas tiene la bondad de ser multiplataforma y programo mejor en el haha.

El proyecto esta mas complejo de lo que inicialmente pense, y pelear contra el dragon legendario de compiladores no me deja mucho tiempo para trabajar en el, pero espero terminarlo en un futuro proximo. Ahora aca un peque;o video de lo que llevo.

lunes, 25 de abril de 2011

Notificaciones Ubuntu

Ubuntu tiene notificaciones de sistema, para cuando conectamos a una red inalambrica, cuando nuestro reproductor multimedia cambio de cancion, o cuando tenemos un mensaje nuevo en nuestra app de IM. Esto ultimo se me hace bastante molesto ya que la notificacion queda en pantalla un largo tiempo, quitando un poco de privacidad a mis conversaciones *caradetroll*.



esto lo arreglamos con:

sudo mv /usr/share/dbus-1/services/org.freedesktop.Notifications.service /usr/share/dbus-1/services/org.freedesktop.Notifications.service.disabled


y reseteamos.

Si lo queremos de vuelta solo cambiamos el "disabled" por "enabled".

lunes, 28 de marzo de 2011

Jeff Bridges volvió en forma de fichas!

Con todo el "hype" que hubo con el estreno de Tron:Legacy y los niños que juraban haber visto Tron (1982) antes de haber nacido, Me encontre este genial juego que recrea las secuencias de motos de luz. Armagetron Advanced "un clon de Tron en 3D" nos permitira conducir una moto de luz y acabar con nuestros enemigos con el "haz de luz" que dejamos mientras avanzamos, el juego cuenta con bots y modo en linea con muchos servidores activos. Es bastante entretenido y adictivo, si tienen tiempo no duden en chequearlo.

Multiplataforma y OpenSource!

Sitio Oficial



gedit en Mac OS



Así es, el editor de texto por definición en gnome tiene una version nativa para Mac OS X.

Para los usuarios del entorno gnome en sistemas GNU/Linux esta es una buena noticia, gedit nos es de mucha ayuda si queremos programar "en block de notas" ya que trae integrado un analizador de sintaxis para C, C++, Java, HTML, Python, Pearl. etc. Contiene soporte completo para el texto internacionalizado (UTF-8). Ademas se puede complementar con diferentes plugins descargables desde su pagina.

Sitio Oficial

gedit para Mac OS

jueves, 24 de febrero de 2011

RAID 1+0 en Debian 6

Mia Raid 10

Zip con contraseña Mac OS X

Alguna vez necesitaron descomprimir un archivo .zip con contraseña en Mac OS, pero "Archive Utility" marcaba error?.


No necesitamos descargar ninguna aplicación externa, solo utilizar la terminal.

el comando es:
unzip 'ruta del archivo'

ahora ingresamos el password y listo!.




martes, 25 de enero de 2011

Term frecuency, Inverse document frecuency TF-IDF

La teoría de la indexación fue elaborada por varios investigadores a mediados de los 50’s, uno de éstos, quien es considerado el padre de la teoría es: Gerard Salton. Salton introdujo varios conceptos como: term frequency (tf), inverse document frequency (idf), entre otros.

Term Frequency (frecuencia de los términos), una palabra en un documento, tiene importancia según la cantidad de veces que ésta se repita.

Inverse document frequency (frecuencia inversa del documento): el valor de un término es inversamente proporcional al número de documentos en que aparece.
Para indexar un registro es necesario definir su vector índice -index vector- como
el conjunto de pares (aij, wij) que definen el valor ai del atributo Ai y su respectivo peso wi
para un documento Di, de una colección.

Este proyecto emplea ambas técnicas para encontrar los documentos mas relevantes de una colección, sacando los vectores TF e IDF de cada documento, su producto punto,

a.b=||a|| ||b|| cos (theta)

y la similaridad por coseno,

similarity = cos(theta) = (a.b)/(||a|| ||b||)
el resultado, un valor de 0 a 1, donde el mas cercano a uno es mas relevante.

Ademas, contiene manejo de bases de datos, uso de javamail y captcha.