Mostrando las entradas con la etiqueta java. Mostrar todas las entradas
Mostrando las entradas con la etiqueta java. Mostrar todas las entradas

sábado, 13 de agosto de 2011

Instalación fácil de SQL Developer en Debian y Ubuntu

En el Post anterior, escribí sobre Oracle11g.
Este por defecto viene con un editor/interprete de PL/SQL se se llama SQL*Plus. Es extremadamente simple, no tiene en verdad ningún atractivo, y puede ser un poco difícil escribir, ya que no maneja un "cursor" para desplazarse por el texto (eso significa, que si te percatas de un error al inicio de la instrucción, hay que borrar todo <_<).


Así que un amigo (gracias @andr3s22) me recomendó mejor instalar el SQL Developer, un IDE hecho por Oracle especializado justamente en PL/SQL, así que, para instalarlo se debe bajar la versión para la plataforma de preferencia:
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html


Muy bueno, como está escrito en Java es multiplataforma, pero como es normal con estos de Oracle, solo tienen el .rpm para Linux <_<
Afortunadamente en los repositorios de Debian (y por consiguiente en los de Ubuntu) hay un paquete que permite muy fácilmente, crear un paquete .deb con base en el .zip (el que dice "Oracle SQL Developer for other platforms"). Aunque podríamos usar el .zip directamente sin muchos inconvenientes, es mucho mejor usar el método que describiré, ya que así es más limpio a la hora de actualizar y de una vez deja todos los iconos en su lugar (y nos ahorra mucho de configuración).


Cómo hacerlo...
1) Descargar el paquete sqldeveloper-package, que es el que hará todo el trabajo "sucio" por nosotros ;D
sudo aptitude install sqldeveloper-package

2) Debemos ir (desde consola) a la carpeta donde tengamos el .zip del SQL Developer, y digitamos lo siguiente (recuerden que si quieren ver todos los parámetros posibles, pueden escribir -h ):
make-sqldeveloper-package sqldeveloper-3.0.04.34-no-jre.zip
Esto dejará un .deb listo para instalar en la misma carpeta. Obviamente, debemos instalarlo :)


3) Al abrir por primera vez el programa (que se encuentra en el menú Programación), nos va a salir un terminal pidiéndonos que le demos el path de Java ("Type the full pathname of a J2SE installation"). En Debian y Ubuntu, si tenemos instalado los paquetes java-6-sun, el path sería /usr/lib/jvm/java-6-sun, OJO, porque este path cambiaría si estamos usando OpenJDK.

Una vez lo escribamos y le demos enter, el SQL Developer cargará sin problemas.


Saludos! ^^


Edit: Luego de varios días me di cuenta que SQL Developer no lograba conectarse a la base de datos, aun cuando SQL*Plus si podía. Me salía un error que decía "The network adapter could not establish the connection", lo que me llevó a investigar un poco, y resultó que era problema con los listeners para conectar con la base de datos... la solución fue, ir a la carpeta /u01/app/oracle/product/11.2.0/xe/network/admin/ y ejecutar lo siguinete:
sudo mv listener.ora listener.ora.sav
Ya luego podemos reiniciar la base de datos (pararla y volverla a iniciar). Se puede hacer manualmente los listeners (no como root, ie, sin sudo) así:
/u01/app/oracle/product/11.2.0/xe/bin/lsnrctl start

sábado, 4 de junio de 2011

Como usar CLIPSJNI junto con Java


"Fin de semestre: tres palabras que te hacen feliz", y más aun cuando el resultado de las notas y las materias salen bien. Como vieron en el post anterior, estuve ocupado haciendo un sistema experto para el curso de inteligencia artificial, al final, hasta hice una guía de como hacerlo funcionar correctamente (con base en los ejemplos con los que viene el CLIPSJNI)... cabe anotar que me dieron una buena bonificación en la calificación final del curso por hacerlo ^_^ .
Como buen seguidor del Software Libre, dejo el link al repositorio del código del sistema experto, bajo licencia GPLv2. En la carpeta docs, está el PDF y el ODT de la guía que he hecho.
Espero que quien encuentre esto, le sea de mucha utilidad:

sábado, 23 de abril de 2011

Sistemas expertos con CLIPS y Java mediante CLIPSJNI


Estoy viendo en la universidad Inteligencia artificial. En mi universidad, es la materia básica que sienta las bases para los demás cursos sobre el tema. El tema principal de la materia, en mi caso, es sobre los sistemas expertos, que son eso, sistemas que pueden razonar como un experto en un tema especifico.
Para poder crear un sistema de razonamiento de este estilo, se hace necesario lo que se conoce como un “motor de inferencias”, el motor permite analizar los datos (hechos) y tomar decisiones sobre ellos (usando reglas). Su funcionamiento es sencillo realmente, ya que simplemente hacen algo como: “si este hecho, o estos hechos en conjunto, se dan, entonces hay que hacer esto otro...”.

La teoría es fácil, y ya existen herramientas para crearlos más abstractamente (es decir: fácilmente). Una de ellas es CLIPS, una biblioteca escrita en C que es un motor de inferencias creado para la Nasa. El problema es que para una aplicación real para usuarios reales CLIPS solo no puede usarse (amenos que queramos volverlos locos ;D ). Hay que combinarlo con otros lenguajes que permitan hacer cosas útiles con el motor, y que escondan lo suficiente las cosas aburridas a los usuarios finales. En mi caso, desdí usar java (#fail), ya que el profesor nos daría una bonificación en la nota por eso D:

Para eso hay dos posibilidades: usar JESS, una implementación del lenguaje de CLIPS pero hecho en java, o usar CLIPSJNI... por el titulo ya saben que opté por usar este ultimo, ya que el JESS me parece más “sucio”, ya que tocaría mezclar muchos conceptos de CLIPS y de java. En cambio con CLIPSJNI es más separado en ese aspecto y a mi criterio, más limpio.

Lamentablemente a la hora de bajarlo para usarlo, me di por enterado que solo daban los binarios para Winbug y para Mac... y para linux debía ser compilado.
La verdad es la cosa más sencilla del mundo, nada fuera de lo común, un simple make -f makefile.linux y ya... “ja ja”, la verdad es que no; salió un error que decía que tenía problemas y que debía re-compilar usando el parámetro -fPIC en el gcc... además de eso hay que especificar donde está java en el computador.

/usr/bin/ld: agenda.o: relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
agenda.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libCLIPSJNI.so] Error 1

En debian hice así:

En la linea 33 es donde está especificado los argumento que debe usar el gcc para la compilación general, solo se le anexa el -fPIC en cualquier lado(obviamente un lugar valido...).
Y en la linea 39, que es donde se arma el libCLIPSJNI.so también debe anexarse el -fPIC y debe especificarse el path de Java, en mi caso quedó así:

gcc -o libCLIPSJNI.so -fPIC -shared -Wall -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux -lm $(OBJS) CLIPSJNI_Environment.c
El error que sale está explicado en esta pagina del wiki de gentoo, y se da por la arquitectura de 64bits... Espero que les sirva esto por si tienen problemas ^_^

martes, 1 de marzo de 2011

Sobre los lenguajes de script

Quizás una de las cosas que más me gusta, y a la que más le encuentro satisfacción (además de comer...) es aprender lenguajes de programación.

Cuando ingresé a la universidad, no sabía en realidad lo que quería con ello... es decir, yo entré a estudiar informática no porque quisiera ser hacker o una cosa así, sinó porque sabía que siempre me había ido bien con los computadores, y que si no me dedicaba a esto, terminaría siendo historiador... jajaja!

Así fue como me inspiré y logré pasar a la universidad al tercer intento (universidades publicas ftw! ). El primer semestre aprendí C, el segundo semestre aprendí C++, el tercer semestre aprendí Java, el cuarto semestre aprendí Scheme y Maude (de la familia de Lisp), el quinto semestre aprendí C# y Vala, y estas ultimas vacaciones aprendí Python y un poco(muy poco) de Ruby y Haskell.

Viendo todos estos lenguajes, tengo claro cuales son los que más me gustan y porque: Python, Vala... y ya jajajaja, las razones: son multiplataforma, fáciles, y OpenSource. Sin embargo, estoy aquí para hablar de los lenguajes de scripts.
Los más populares son PHP, Python, Ruby, Lua, Perl y JavaScript. La idea de los lenguajes dinámicos no es nueva, y vino del lado de la familia Lisp.


Type(languaje)
La inmensa mayoría de lenguajes de programación vienen de dos vertientes: La familia FORTRAN (C, Java, Cobol, Delphy...), y los de la familia Lisp (O'Caml, Haskell, Scheme...). La familia Fortran es más cercana a la maquina, y muy orientada al los procedimientos específicos (por eso se les conoce como lenguajes procedimentales). Por el contrario, los lenguajes de la familia Lisp son más matemáticos, no se enfocan en un orden especifico, sinó en crear declaraciones [de propiedades matemáticas] que puedan ser llamadas en cualquier momento (por eso se les conoce como lenguajes declarativos).
La familia de los lenguajes procedimentales tuvo mejor acogida a nivel general (claramente, a pocos les apasiona las matemáticas), y los lenguajes declarativos solo fueron populares a nivel académico. Todo esto ha ido cambiando luego de la aparición de los lenguajes de script (dinámicos). Estos tomaron el dinamismo conceptual de los lenguajes declarativos, mezclandolo con la estructura de los lenguajes procedimentales (algunos, incluso embadurnándolos con orientación a objetos), creando así lenguajes de mucho más alto nivel.


Superioridad
Los lenguajes de scripts son superiores a cualquier otro en que no se hace necesario el tedioso sistema de "compilar-probar-arreglarfallos-compilar...", donde la compilación es lenta y molesta. Los lenguajes de script facilitan el desarrollo rápido de aplicaciones mucho más que un lenguaje como puede ser Java o C#, también tienen el plus de que gratificantemente, se han desarrollado muy cercanos a la web, lo que hace mucho más sencillo implementar cualesquier sistema con ellos (JavaScript, PHP, Python, Ruby... son muy populares en cuanto a desarrollo web).

Y, quizás el plus más importante, es que son menos aburridos. Aprender lenguajes de script es importante para cualquier programador. Seguramente muchas universidades solo se preocupan de enseñar lo suficiente para formar cientos de Mokey Programmers en Java y C#, pero estoy convencido que aprender un lenguaje de script capacita mucho mejor a un programador, que enredarlo toda su vida en un lenguaje que aburre luego de un tiempo.


Un escrito en pro de la productividad.

viernes, 13 de noviembre de 2009

Go, el antes y el despues en la programación

Escribo desde los computadores de la universidad.

Hace unos días, un acontecimiento sumamente importante pasó: bajo la financiación de Google, un grupo de los más prestigiosos programadores (varios de los creadores de Unix, uno de los desarrolladores de gcc, y otros tantos...), se han dado cuenta de una GRAN NECESIDAD, pero que nadie se había dado a la tardea de emprender una solución: Programar se ha hecho difícil.


En un principio, los computadores eran demasiado simples, y "estrechos", por lo que lenguajes como en C, y posterior mente el C++, dieron cabida a un auge en la programación. Pero, hoy en día, los PC son ya demasiado grandes, los sistemas demasiado complejos, y las necesidades de sistematicación más especificas, por lo que para hacer un programa que alivie una necesidad, su desarrollo se ha vuelto una tarea bastante compleja, y no solo eso, sinó también aburrida.

Aquí, es cuando explico por qué el titulo del post: estos señores, han desarrollado un lenguaje de programación pensando en lo siguiente: un lenguaje Orientado a objetos (en parte si, y en parte no), de compilación rápida, con recolección de basura, y en el que fuera fácil la programación concurrente. lo han hecho, y lo nombraron "Go".

Go es básicamente un descendiente de C en su sintaxis, y tiene parte de Pascal/Modula/Oberon, y de otros lenguajes como Newsqueak y Limbo. Esos, Y NO PYTHON, como muchos han dicho.

Además, el desarrollo de sus compiladores es bastante interesante, ya que (según entiendo, aun no he leído con calma los FAQs, puede que me esté equivocando con mi pésimo ingles xDD) es posible compilar para otra arquitectura, no como en C, que hay que compilar para cada arquitectura físicamente... ya averiguaré este punto con calma.

Es tiempo de hacer historia. Este lenguaje, que aun es experimental, promete ser el futuro, es decir, "bye bye, java", tanto así, que Google ha mostrado interés en cambiar el software de sus servidores en un futuro, por aplicaciones escritas en Go.

Desde mi punto de vista, la de un simple estudiante de tercer semestre, que apenas aprendí a escribir en java hace muy poco, y que le tenia tengo fe a Vala, quiero aprender lo más rápido posible sobre este lenguaje. Es mejor hacerlo ya que el proyecto lleva poco tiempo a la vista del publico, y no luego.

Sin más, los invito a que se unan al grupo de discusión en español sobre el lenguaje. En este momento somos pocos, y hay la intención de hacer la traducción (que ya se está haciendo) de toda la información relacionada con Go.

http://groups.google.com/group/golang-spanish?pli=1

Saludos!!, y en cuanto tenga más información, la iré publicando (o eso espero al menos ^^U )