domingo, 28 de abril de 2013

"Instalar" Java: update-alternatives

Para Open SuSE,funciona el RPM que está en el sitio de Oracle (Dicho sea de paso, la navegabilidad del sitio siempre me ha parecido disfuncional)
Se instala con un simple rpm -ivh siendo administrador.

Acá viene lo bueno: Recuerdo que alguna vez usando el RPM, al final de la instalación empezaba un script que automatizaba la tarea. O no recuerdo si fue en Fedora, pero el caso que esta última vez lo único que hizo el instalador es copiar los paquetes a una dirección concreta: /usr/java/jdk1.7.0_21/ (La cual de hecho me parece "un poco incorrecta")

La cuestión es que en esta ubicación solo podemos ejecutar los archivos con su ruta absoluta, porque no se encuentran en el PATH del sistema. Lo único que ya esta en un PATH válido es jcontrol, una utilidad para configurar monitorear la máquina virtual de java.
Si bien podriamos agregar esa ruta, desinstalar el jdk que trae por defecto y así, creo que la forma más elegante es cambiarlo con update-alternatives

Update-alternativas permite tener instalado en el sistema varios programas iguales en características (Como en este caso, dos máquinas virtuales de java), pudiendo escoger uno para tal o cual ocasión, de una manera limpia, mediante un sistema de enlaces simbólicos.
Dicho esto, lo único que necesitamos es ejecutar:
update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_21/bin/java 200 \
--slave /usr/bin/jar jar /usr/java/jdk1.7.0_21/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/java/jdk1.7.0_21/bin/jarsigner \
--slave /usr/bin/javadoc javadoc /usr/java/jdk1.7.0_21/bin/javadoc \
--slave /usr/bin/javah javah /usr/java/jdk1.7.0_21/bin/javah \
--slave /usr/bin/javap javap /usr/java/jdk1.7.0_21/bin/javap

Una vez hecho esto, update-alternatives --config java bastará para escoger cuál es la versión de java que usaremos: Si la que traía por defecto o la que acabamos de instalar.
La utilidad de usar la opción --slave es que creará una especie de grupo alternativa, con solo escoger java, todas las demás opciones será escogidas con él

En Open SuSE me dió error incluir javac dentro del grupo, por lo que basta con eliminarlo e incluirlo aparte

update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_21/bin/javac 10.

Como no había ninguna otra alternativa instalada, automáticamente lo escogió a él.

Basado parcialmente en How to setup up a new JDK with update-alternatives?

miércoles, 28 de marzo de 2012

Primeros pasos con Git

Git es básicamente un sistema de control de versiones. Es decir, ayuda a centralizar y administrar los cambios en el código de un proyecto. Lo usan pesos pesados como el mismo kermel de linux... E incluso Microsoft le da soporte en codeplex. Histeria y controversia aparte...

Para esta guía, sería bueno que vieras mi post sobre DNS, que aún no esta escrito.
En tanto porque puede ser más cómodo trabajar con nombres DNS que con direcciones IP

Instalación

Necesitamos git obviamente, y activar su soporte para ssh.
aptitude install apache2 git-core gitweb openssh-server
Sin embargo, puede que el ssh ya lo estés usando desde hace rato. Y el servidor Apache suelo instalarlo desde el principio. Esto puede bastar.
aptitude install git-core  gitweb

Configuración inicial.

Por razones de seguridad, es necesario que crees un usuario con contraseña en el sistema.
useradd git -c "Usuario Git" -m  passwd git
Nota: Por ahora no he podido hacer que este usuario funcione del todo. Mi vergüenza es infinita.
Use el usuario sin privilegio que cree al instalar Debian.

Configurando Apache

Intenté hacerlo más interesante usando Virtual Host para Apache. En resumen, apache en Debian usa dos directorios para guardar la configuración de los Virtual Host: sites-available y  sites-enabled, ambos dentro de /etc/apache/
Mi fichero se llama gitweb y se encuentra en ambos directorios. Puede servir de ejemplo para la configuración de otro VirtualHost
su root
cd /etc/apache2/
cp sites-available/{default,gitweb}

cat >gitweb <<EOF
<VirtualHost *:80>
ServerName git.xibalba.com
ServerAdmin webmaster@mail
DocumentRoot /usr/share/gitweb
<Directory /usr/share/gitweb>
Allow from all
AllowOverride none
Order allow,deny
<Files gitweb.cgi>
Options FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
</Files>
</Directory>
#DirectoryIndex /usr/share/gitweb/gitweb.cgi
SetEnv GITWEB_CONFIG /etc/gitweb.conf
ErrorLog ${APACHE_LOG_DIR}/error.log 
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF

cp sites-available/gitweb sites-enabled/
service apache2 reload
Esto es lo que ves cuando apuntas a la dirección especificada en la configuración
Tengo otro post que aún no he escrito donde explico un poco más como funciona Virtual host. Existen otras combinaciones, para el caso esta sirve.
Debes hacer una entrada en el DNS que apunte hacia este host. Sí, la puedes ver en el post que aún no he escrito pero te adelanto que es sobre usar Webmin un poco.

Configuración de Git en el servidor.

De ahora en adelante usaremos el usuario que hemos creado por seguridad.
su- git
Encendemos el servicio
git daemon --base-path=/var/cache/git --detach --syslog --export-all
Nos movemos un poco
cd /var/cache/git

Creamos el directorio del repo. El nombre vienen dado por *.git. En este caso se llama
mkdir proyectophp.git
Entremos.
cd proyectophp/git
Iniciamos el repositorio en toda regla
git init
Le damos un poco de personalidad con una pequeña y corta descripción
echo "Este es el nuevo repositorio"> .git/description
Configuramos el usuario que va a mostrarse en todos los log y en la interfaz web.
git config --global user.name "Alexander Ortíz"
git config --global user.mail "vtacius@mail.com"

Este es nuestro proyecto. Vacío por ahora
Lo que sigue es la forma más básica de trabajar con los ficheros. 
Creamos el primer archivo. Usualmente un README es necesario en cualquier proyecto. Excusa al menos.
vim README
Agregamos el fichero.
git add README
Haces el envío de este a la copia del repositorio que tenemos en nuestro repo (En este caso el servidor)
git commit -a -m "Este es el primer envío de Administrador"
Acá se encuentra ya nuestro primer envío

Configuración de Git en el cliente. 

La siguiente es una de las tantas formas de exportar un repo. Hay bastante documentación al respecto, a veces quisiera tener la paciencia de leerla toda. Básicamente esto es la configuración de los clientes.

git clone \
 vtacius@git.xibalba.com:/var/cache/git/proyectophp.git proyectophp
cd proyectophp
Te darás cuenta que el archivo README esta en el directorio. Esa es la magia de Git

Configuras algunos aspectos, útiles para saber quién es realmente quién envía cada cambio y cosa
 
git config --global user.name "Anibal Barca"
git config --global user.mail "aníbal@mail.com"

Digamos que tu quieres hacer un aporte serio al proyecto.

 
vim index.php
git add index.php
git commit -a -m "Este es el prímer envío de Aníbal Barca"
git push
Pero no funciona. Te tira un mensaje en Inglés de la siguiente forma:
  remote: error: refusing to update checked out branch: refs/heads/master
  remote: error: By default, updating the current branch in a non-bare repository
  remote: error: is denied, because it will make the index and work tree inconsistent
  remote: error: with what you pushed, and will require 'git reset --hard' to match
  remote: error: the work tree to HEAD.
  remote: error: 
  remote: error: You can set 'receive.denyCurrentBranch' configuration variable t
  remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
  remote: error: its current branch; however, this is not recommended unless you
  remote: error: arranged to update its work tree to match what you pushed in some
  remote: error: other way.
  remote: error: 
  remote: error: To squelch this message and still keep the default behaviour, set
  remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
  To vtacius@git.xibalba.com:/var/cache/git/persona.git
  ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'vtacius@git.xibalba.com:/var/cache/git/persona.git'

Yo y mi deficiente inglés llegamos a la conclusión que esto es lo que quería:
Ejecutas en el servidor.

git config receive.denyCurrentBranch warn
De ahora en adelante, cada vez que algunos de los clientes envíe algo, debe ejecutarse lo siguiente en el servidor
git reset --hard
Esta es la prueba que todo valió la pena
Por ahora creo que me reservo otra entrada para que sigamos aprendiendo sobre esta onda. Al menos me ha para
Agradezco a Casidiablo.net y Pixhero, porque mi posts es casi una copia descarada de ambos post 

martes, 13 de marzo de 2012

El último que quedaba: Google Groups se entra a la onda moderna

Será que a muchos ya les habrá llegado la notificación hace tiempo, pero recién me entero que Google Groups ya entra en el mundo de los cambios que de diseño.

¿Soy el único al tantas superficies lisas y colores neutros es demasiado iCool?

Esto lo voy a extrañar. Cutre pero me encantaba
Ahora todo va más en la onda de las listas, como queriendo adaptar todo a interfaces más reducidas. Bien por los que lo usan desde dispositivos móviles
Recuerdo haber tenido otros grupos. Recuerdo el spam también
Pero bien, el trauma de apenas acostumbrarte a algo nuevo. Al menos ha dado un salto hacia la simplicidad.
Obvio, la compañía necesita unificar su imagen.
Se que este pasará por el post más SOSO que he hecho.

martes, 21 de febrero de 2012

Ripeando cd de música desde consola. Algunos apuntes de Multimedia

Esta es prácticamente una entrada obligatoria en cualquier blog linuxero, y como se supone que ese es el motivo de este blog, ahí les va:

En el casi improbable caso que tengan un CD de música que les ande por allí y que quieran ripear en archivos mp3 -u ogg, que no esta nada mal-, y en vista que quizá ya estén tan acostumbrados a la consola que posiblemente estén leyendo esto desde links, lo que hay que hacer se resume en dos sencillos pasos.

Primero, hay que ripear propiamente todo el CD. Usamos cdparanoia desde Se hace así:
cdparanoia -vsZB
Donde v es el típico verbose de la mayoría de comandos. El s es para escanear donde hay un CD, y no es necesario si no tienes más que un lector.
B es la opción. Básicamente, es el único necesario para ripear. Pero le agregamos Z para que vaya más rápido evitando la verificación de datos y características de corrección de errores.
Ahora hay que convertir a mp3 propiamente dicho, pues lo que tenemos ahora son un montón de archivos wav que si bien es cierto son teóricamente la mejor calidad posible, son demasiado grandes.
Para convertirlo es necesario usar lame.
lame -hb 192 track01.cdda.wav track01.mp3
h es la opción de la esperanza. Trata de hacer un ripeo de calidad con valores predeterminados, y b es el famoso bitraje que le hemos seteado en 192. Si se setea a 160 por ejemplo, el peso del archivo disminuye un 16%, pero no he comprobado nada de la calidad con que queda.

Podemos darle más opciones para que salga algo más acabado. Veamos las etiquetas ID3 tag más interesantes.

--tt Titulo de la canción (30 caracteres máximo)
--ta Nombre del artista (30 caracteres máximo. Creo)
--tl Album     
--tn Número de track.
--tg Género

Por ejemplo, una canción podría ir de esta forma.
lame -h -b 192 --tt "Morningstar" --ta "Gehena" --tl \
"First Spell" --tn 5 track01.cdda.wav Gehena\ -\ Morningstar.mp3

Y bien, eso es todo por ahora. Lo puedes hacer en forma de script para varias canciones, vamos, esa es de las partes divertidas. Por ejemplo
for i in $(ls *.wav ); 
do 
  lame -h -b 192 --tt $(basename $i cdda.wav) --ta "Oradores" \ 
--tl "Vocabulario en Inglés" $i $(basename $i cdda.wav)mp3; done

Que logra su cometido. Alguien más avispado podrá resolver lo del nombre para cada uno... Algo con dialog, quizá...

Tomando en cuanta que se puede usar Rhytmbox, Banshee o EasyTAG para cambiar las etiquetas, creo que es bastante ayuda.

La fuente es esta. Incluso el script final, -que solo modifique un poco-.

miércoles, 12 de octubre de 2011

Ritchie: La muerte de un grande y el silencio de los pequeños

Ni siquiera se como empezar. Creo que Ritchie ahora entra a mi panteón de culto, y eso que no fue un guerrero de estepa o literato loco. 

Eso fue para romper el hielo.

Ritchie nacio el 9 de septiembre de 1941. Valga decir, en la primera mitad del siglo pasado, que es mejor referencia. Entra a trabajar para Bell en el 1967, es decir, con ya 26 años, en los cuales ya ostentaba dos grados en  Harvard:  física y matemática aplicada. Para que se entienda, hay que decir que las grandes mentes que contribuyeron al desarrollo de la informática en aquellas época aún tan embrionaria pertenecen a carreras de este tipo.

El contexto. Bell
Bell fue una de las más impresionantes compañías en la historia de E.U. Pensar que fue una empresa de comunicaciones en pleno nacimiento de la sociedad de la información nos dice algo. 
No se recuerdan por su ética precisamente, pero en su afán de mejorar día con día el sistema de comunicaciones con que prestaban sus servicios, fueron precursoras en muchas tecnologías. 
Lástima que no encuentro el PDF con el que podría ahondar al respecto, pero basta decir que en su mejor que varios premios nobel salieron de sus canteras.

Entonces, inicio
Unix tuvo que ser alguna especie de proyecto a espaldas de los jefes. Ken Thompson (Compañero de Ritchie) salió con la brillante idea de crear un sistema operativo a la medida de necesidades un poco menos demandantes que la de los muchos servidores que tenían a sus disposición.

Ritchie, entonces, tuvo la grandiosa idea de que un sistema operativo de ese tipo no tenía porque ser complicado, bueno, al menos en cuanto a la metodología con que debía ser hecho... Toma ideas del lenguaje B, y crea un lenguaje que combina características de propias de lenguaje de bajo nivel como ensamblador y lo combina con características propias de lenguajes de alto nivel. Es decir, toda a una herramienta versátil de una gran capacidad para trabajar.

Unix es un éxito, y con ello, C, demuestra que hacer un éxito podía ser cada vez más productivo para los desarrolladores de software. 

Contemplaciones para el público en general
Ritchie elaboró un lenguaje de programación llamado C. A la vez, participó activamente en la creación de Unix, un sistema operativo bastante revolucionario en su época.
Por un lado, sistemas operativos como GNU/Linux y los propietarios que traen las Mac se basan a grandes líneas en Unix. Por otro lado, casi todos los sistemas operativos actualmente están escritos en C.

Nadie va a divinizar a Ritchie. Los informáticos en general somos muy maduros como para eso.
Al final, incluso, podemos decir que el era un simple empleado que cumplía su trabajo...

La labor de Ritchie va en el sentido que siendo una mente brillante (Elaborar una lenguaje de programación no es cualquier cosa) no pensó en lucrarse directamente de sus conocimientos. 

Era más de la línea de los científicos del siglo de las luces que otra cosa, alguien que pretendía ayudar a otros con sus descubrimientos, y vivir para seguir descubriendo 
Bien pudo fundar una empresa, sacar su trabajo en Bell como propia (Todo el derecho tenía), patentar todo y forrarse en dinero. La historia de la informática hubiera sido brutalmente diferente.

PD. En breve le pongo imágenes y link. Si alguien comenta hasta edito...

sábado, 9 de abril de 2011

¿Solo eso era?

Desde que alguien publico una post en Taringa al respecto,hace poco más de dos semanas, he estado con las más grandes ganas posibles de usar Cage(¿?) .

Todavía tengo mis dudas con respecto al nombre, porque en los encabezados del correo dicen Cage por un lado, y CageApp por otro. Diremos que se basaron en el actor ese y la cosa poco importa...

¿Y que era?:
Como diseñador, artista o agencia, JAULA -¡Google traductor esta de humor!- ayuda a agilizar el proceso de presentación y organización de su trabajo creativo para la retroalimentación y revisión. 
Usted tiene la flexibilidad necesaria para proteger con contraseña los proyectos y colaborar directamente en sus diseños. La gente compartirá proyectos, y los demás tendrán acceso a ellos sin necesidad de ninguna cuenta de usuario y de inicio de sesión, con solamente el link público.
Por un momento pensé que estaba ante el Github de los diseñdores, o alguna especie de descabellada idea tipo prezi.com, esas que pretenden llevar el cloud computing a las grandes masas (Lo que inevitablemente sucederá).

Básicamente, la web te permite subir imágenes, y hacer una especie de slideshow con ellas... Vamos, no muy diferente a Flickr por ejemplo, pero creo que el enfoque es lo importante de su propuesta....

Con ustedes, algunas snap que tomé de mi haciendo...  Nada:
Pantalla inicial después de loguearse
La web diciéndote verdades reveladoras
Creando el proyecto
Añadiendo el preciado y prestigioso artwork
Como dato, les cuento que aunque la dirección al archivo parece ser una típica del sistema de archivos de Winbug, estoy en Open SuSE...
Opciones del proyecto
Comprobando la URL pública
 Pues habrá que ver que el proyecto pinta bien, sobre todo porque esto es solo la Beta. Repito, la idea es un refrito con buena intención de argumento, esperemos que tan bien de desarrollan los diálogos y que los efectos especiales no lo arruinen de nuevo...

Pregunta obligada ¿Como consigo cuenta?
Primero, los sigues en Twitter... Después, ellos te harán un reply diciéndote que no basta, que también tienes que enviarles un e-mail... Después, te armas de paciencia, mi correo respuesta -con la palabra clave que tenes que meter en la página de registro- tardo 24 horas, ¡24 horas! Señor, son lentos los chicos.

Y así nada más.

Pregunta falsa ¿Que tanto me quieren?
Segun el e-mail que me enviaron:
Queríamos invitarte personalmente a nuestra última aplicación Web que está en versión beta privada, CAGE.
Estamos construyendo CAGE para resolver lo que creemos que son un simple conjunto de problemas.
Los correos electrónicos se pierden, las reuniones a largo plazo, y sus clientes no quieren entrar en el software de gestión de proyectos cada vez para revisar el trabajo (y seamos honestos, el envío de un correo electrónico con maquetas adjunta no es el mejor método de presentación si usted está tratando de para impresionar a su público).

viernes, 18 de marzo de 2011

Suceso: Open SuSE con una semana de nacido

Tanto descuido con las tareas que no fue sino hasta el día siguiente de su lanzamiento oficial que me dí cuenta del natalicio. Es decir, empecé a bajar ese viernes como loco.
Claro, nada como la emoción de una descarga... Como cuando un niño nace, supongo... ¿La primera semana es dificil?. Veamos:
El artwork de esta vez me gusta más que el de 11.3
Open SuSE es una distribución bastante dedicada para el usuario común, no tanto como Ubuntu, pero es de las más amigables entre los de tipo rpm.
La instalación, por ejemplo, es una de las más amigables que me he topado. En general, tengo mejor sensación que con Anaconda, aunque debo decir que me encanta la simplicidad de este último...

El instalador es bastante amigable, hasta para los zuluhablantes
Por mi esta bien: Se instalo en diez minutos (Descontando la parte de la configuración) Detecto todo mi hardware a la primera, tanto que al primer inicio ya tenía mi compiz totalmente funcional (Para darles una idea: Siempre termino desactivandolo porque me marea).
Instalando todos todos los paquetes disponibles del framework GStreamer, pudo reproducir archivos mp3 a la primera (¿Futuros problemas de licencias por mi simple comentario?)
Me encanta, pero suele cansarme de vista

¿Algo más? La primera distribución de peso en traer instalado LibreOffice: Se mandaron de alguna forma en incluir la versión beta de firefox 4: funciona bien al fin de cuentas. Los repositorios están llenos de cosas buenas como siempre: Al fin encontré los paquetes necesarios para que Dropbox anduviera justo.
Hay aplicaciones de diseño avanzada como Blender y aplicaciones para monitoreo de redes como Wireshark en el mismo DVD. En fin, justo lo que esperaba e incluso más.

¿Problemas?
Para el uso que le doy (Es mi único sistema operativo, aparte de alguna distro linux en prueba), todo me ha funcionado de maravilla: Excepto que el gedit no puede usar el plugin de Terminal Empotrado. La otra es que cuando uso zypper me sale un error del tipo:


Lo que me alegra es que ahora que veo las actualizaciones de Yast, me resulta con que ya hay una actualización de Ndesk-dbus-glibl, que al parecer podrías relacionarse con el error en cuestión...

La otra es un error que no he podido documentar: Al parecer, hay un error si se pretende configurar el firewall dentro del proceso de instalación. Como sea, he tenido problemas con el equipo a fisico (Tarjeta de red por cierto),y lo que quize hacer no es de todo los días. Acepto que andaba jugando, así que no siquiera me place molestar a los desarroladores con un problema de azar
Como sea, los errores son cosa común, sobre todo porque ahora que ya soy usuario completo soy gustoso.

Como siempre, mi pequeño aporte acaba antes de empezar. Algunos enlaces de mayor relevancia técnica, pueden ser este de Gustavo Pimentel's GNU/Linux Blog, que lo tradujo de acá

Otros apuntes interesantes

Otros apuntes interesantes