Youtube sin sonido en Kubuntu 9.04

20 09 2009

Quizá el titulo no sea el más adecuado, pero puede que sea el más descriptivo y fácil de buscar para alguien que puede toparse con el mismo problema. Todo esto dado que, no son solo los videos de youtube, sino cualquier video que se encuentre en la web y que este basado en flash (como los de youtube) tiene ese problema.

Sucede que luego de la instalación de Kubuntu y posteriormente de Firefox, al reproducir un video, solo podemos observar el mismo pero no se escucha el sonido de este. A continuación les dejo la solución que yo encontré, pues aunque parece lógico, pero por algo tan simple yo pase como una semana (por cuestiones de hueva y principalmente de tiempo), sin poder escuchar los dichosos videos, pues también espere a que cargaran completamente (y literalmente hueviarmelos de la carpeta /tmp) y luego reproducirlos en VLC player, pero tampoco se escuchaba el sonido.

Lo que hay que hacer es dar un click sobre el ícono de la bocina (de KMix) que aparece en la parte inferior derecha de la pantalla (en el panel  de tareas). Seguidamente dar click sobre el botón mezclador. Eso abrirá una ventana pequeña donde lo único que tenemos que hacer es (con un click sostenido) subir el control que aparece en el medio de la ventana siguiente (PCM).

ventanaKMix

ventanaKMix

Y uuuala!, ya hay sonido para los videos…





Backup y Restore en mySQL (grafico y consola)

3 09 2009

Como bien lo describe el titulo aca dejo una pequeña ayuda para la realizacion de backup y restore en mySQL, esta practica fue hecha desde un cliente grafico y desde la consola de comandos.

Espero a alguien le sirva.

backUp y Restore en mysql (consola y GUI)





Sobre ironias

3 09 2009

Aca en Guatemala existen muy pocas radios que sean buenas o que uno pueda decir “tienen una programacion aceptable”, aunque la verdad tambien acepto que eso es algo subjetivo respecto a cada persona. Total en cuanto a gusto musical, me gustan varios generos y dentro de ellos no se encuentra el mierdaTon, grupero, texmex, rancheras o cosa que se les parezca, pero como ya dije cada persona tiene gustos distintos. Total en una de las radios de las cuales su programacion era rescatable, ultimamente se han puesto con muchas ironias que yo en un sentido mas directo les llamo estupidecez.

Hace algunos meses recuerdo que vino a Guatemala Mago de Oz y resulta que estaban regalando entradas, pero lo idiota del asunto es que si uno llamaba para pedir una rola de Mago, resulta que esas no las tienen en programacion, entonces dije WTF!!! o Que Putas!!! en buen Guatemalteco (primer Strike).

El otro dia tambien vino uno de esos mareros que cantan mierdaTon y en su programacion incluyen una aberracion cancion de las que toca ese cuate y tambien estaban dando entradas. Ahora resulta que viene ese otro marero, mierYanki, y en esa radio invitan a la mara a que vaya a ese concierto, pero si acaso algun ente humano llamara para pedir una idiotez cancion de ese marero, apuesto uno de mis testiculos a que no se la ponen (claro sin antes haber leido este post, sino lo van a hacer solo para que me trague mis palabras, jajaja ;) ) -segundo Strike-.

Al ver este tipo de cosas me pregunto QP!!!, la mara no tiene una linea de comportamiento definido, es algo asi como dice un cuate… “Sos o no sos” y es que tambien el mierdaTon ha influido mucho en la mente de mucha mara, sino hay que ver como hace algunos a~nios quitaron una muy buena radio (quiza la unica) de rock (aunque no me defino como rockero, me gusta ese genero) solo para poner estupidecez al aire, utilizando una frecuencia radial que se podria haber utilizado para algo mejor y no someter a tanto usuario (como yo) del transporte urbano (o a cualquier lugar que va uno) a escuchar ese nivel de tonterias y todavia escuchar a mara desesperada que envia su numero de telefono para poder tener amigos QP?.

Tampoco hay que hablar pajas (mentiras) esa radio tiene 3 programas que si son buenos, uno los martes y jueves donde hablan sobre cosas sobre naturales, extra~nias, de miedo; otro donde tratan temas sobre sexualidad, que es bastante interesante por cierto; y uno mas donde pasan musica electronica (a estas alturas algun lector quiza sabe a que radio me refiero).

En conclusion la verdad es que cada uno con sus gustos, pero da risa/pena la falta de definicion de la mara en su comportamiento o quiza aca tiene metidas sus manos la se~nora llamada interesComercial.





Pruebas de JUnit en netBeans 6.5

5 07 2009

La realización de las pruebas unitarias es una de las fases importantes en el desarrollo de software puesto que estas son la base para la correcta realización de las demás.
Y en Java se pueden realizar haciendo uso del framework JUnit. En esta ocasión haremos un pequeño tutorial en donde veremos como definir las pruebas a realizar en dos clases con cuatro métodos, cabe mencionar que acá el punto fuerte en conocimiento son los asserts, es decir, es en base a ellos que se generan estas pruebas y su conocimiento es crucial.

El código fuente y documentación se encuentran en este link.





JUnit y Asserts

4 07 2009

A continuación les presento una investigación sobre el framework de pruebas para codigo Java JUnit, este framework es uno de los mas utilizados para la realización de pruebas unitarias de código Java y sabiendolo implementar se suele utilizar en pruebas de integración. Su uso principalmente esta basado en la utilización de asserts, término que en la investigación no se deja de lado.

A continuación les dejo el link para que puedan descargar el material en formato pdf. JUnit_Asserts





Proyecto agencia_viajes

27 06 2009

Como parte de las actividades de Analisis 2, se pidio hacer esta practica, la cual se resume en el siguiente enunciado.

Se necesita desarrollar una pequeña aplicacion de agencias de viajes, para control de reservaciones y facturaciones de paquetes de viajes, la aplicación es totalmente generica y debe tener las siguientes caracteristicas:
1) Definicion de la empresa que adquirio el producto asi como los usuarios y sus niveles de acceso (consultas, reservaciones y
facturacion como minimo).
2) ABC de clientes.
3) Posibilidad de ver los paquetes que han reservado|contratado.

Los paquetes y su costo se deben preparar en base a la siguiente información.
4) Fichas de hoteles y centros turisticos.
5) Gestion de transportes aereos, terrestres y maritimos.
6)  Gestion de restaurantes, comedores y bares.

Y por ultimo debe permitir:
7) Generar facturacion a nivel de paquetes de viajes formados por combinacion de uno o varios de los servicios anteriores.
8) Aplicar descuentos por temporada o por cliente frecuente (5% de descuento por cada 20 paquetes contratados mayores a $5000).
9) Posibilidad de calcular creditos para los paquetes de viajes aplicando porcentajes de intereses (5% 3 cuotas, 10% 6 cuotas, 15% 12 cuotas).

Caracteristicas tecnicas:
-La aplicación debe ser totalmente web
-Al general los paquetes debe poder exportarse como minimo la tabla de servicios contratados y su costo a un archivo csv y pdf
-Frameworks a utilizar: icefaces, hibernate y spring
-Elaborar un css para la presentacion
-Ya que no se sabe cuanta sera la demanda el contenedor de servlets se debe de enlazar a un servidor web como Apache o Cherokee.





Alternativa a Spring

27 06 2009

Un framework es una extensión de un programa, pues le agrega algún tipo de funcionalidad, han sido construidos con el objetivo de que los desarrolladores inviertan menos tiempo durante la codificación, sin embargo esto ha generado conjeturas encontradas porque unos dicen que generan porciones de código inservible y algunos otros pues rapidamente descubren sus ventajas. Para cada lenguaje y/o entorno de desarrollo existen varios tipos de frameworks, los cuales hacen mas fácil la tarea de programación, para este caso en especial abarcaremos el estudio del framework Spring, que fue diseñado especialmente para Java y surgió como sustituto de las implementaciones nativas de Java conocidas como EJB. Sin embargo con el paso del tiempo han surgido otros frameworks que corren en Java y que tienen la intención de ser el próximo sustituto de Spring.

A continuación he preparado un documento en donde se detalla de una mejor manera el post.

alternativaSpring





Hudson y Trac

13 06 2009

Hudson

Hudson es una herramienta de software utilizada para la realización de integración continua en el desarrollo de proyectos de software. Esta escrita en Java, tiene soporte para herramientas de control de versiones tales como CVS y Subversion. Tiene capacidad de ejecutar proyectos basados en Apache Ant y Apache Maven. Así mismo cabe mencionar que se ejecuta en un contenedor de servlets, el cual puede ser Apache Tomcat o GlassFish. La construcción que realiza se puede realizar por varios medios, entre ellos incluido uno similar a Cron, mientras que otros se basan en la construcción que hay concluido.

Es una herramienta con licencia MIT y algunas partes con licencia de Creative Commons (Reconocimiento y Compatir igual), su principal promotor es Kohsuke Kawaguchi.

Hudson monitorea ejecuciones de trabajos repetidos, como una construcción de proyectos de software o trabajos que corren dirigidos por cron. Entre otras cosas, Hudson se centra principalmente en los dos siguientes trabajos.

  • Construcción y pruebas de proyectos de software continuamente. Hudson ofrece una forma fácil de utilización de un sistema de integración continua, lo que hace fácil a los desarrolladores, la integración de sus proyectos de software y que a su vez aumenta la productividad mendiante la integración continua automatizada.

  • Monitoreo de ejecuciones de trabajos que corren externamente. Como trabaja con Cron y procmail, se pueden revicibir mensajes de notificación de la ejecución de procesos externos y enterarse de cuando algo anda mal. Esto mediante el envio de la salida de los procesos.

Porque usar Hudson?

  • Es de fácil instalación, está al alcance de la ejecución del comando java -jar en una terminal de comandos.

  • Es de fácil configuración, tiene una fácil interfaz web que nos muestra el estado de los trabajos y revisiones de error.

  • Configuración XML, no es necesario configurar ningun archivo XML, sin embargo, si se desea se puede hacer manualmente.

  • Cambio de soporte, puede generar una lista de cambios realizados en la construcción de Subversion o CVS.

  • RSS/e-mail/IM, contiene un monitor para construir resultados mediante RSS o mail, para recibir información en tiempo real sobre los errores que pudieran surgir.

  • Reporte de pruebas, generación de reporte de pruebas de JUnit, esta información puede ser tabulada y resumidad para su presentación. El historial puede ser presentado en una gráfica.

  • Construcciones distribuidas, puede distribuir/construir pruebas de carga en varios equipos.

  • Archivo de huellas dactilares, puede realizar un seguimiento de la construcción hecha por los jars y que construcción esta utilizando con que version de los jars.

  • Soporte de pluggins, capacidad de ampliación mediante pluggins, los cuales puden ser desarrollados también por los usuarios.

Trac

Trac es un sistema web libre para la gestión de proyectos y seguimiento de errores, es multiplataforma, ligero y extensible. Esta basado en CVSTrack y originalmente era llamado SVNTrac por su fuerte dependencia de Subversion. Esta escrito en Pyton, es distribuido por Edgewall Software. Hasta su versión 0.8 estaba bajo una licencia GNU GPL, sin embargo de la 0.9 en adelante está bajo una licencia BSD modificada. Entre las funcionalidades que ofrece, estan:

  • Un wiki que se puede emplear para documentar cualquier aspecto del proyecto de modo colaborativo y sin necesidad de herramientas especiales (sólo necesitamos los permisos adecuados y un navegador web).

  • La sintaxis del wiki se puede emplear en casi todos los módulos del sistema (por ejemplo en los tickets), se permite la definición y empleo de macros (p. ej. para generar listas de cambios) y la inclusión de texto con sintáxis distintas a la del Wiki como html o rst.

Trac siendo una interfaz de lectura para el repositorio de subversion, nos permite definir y visulizar graficamente el estado de los hitos (que incluye descripción y fecha) de un proyecto, a la vez que nos permite tener un seguimiento de eventos en el sistema, también nos permite la búsqueda de paginas del wiki, mediante palabras.

Porque usar Track?

  • Es una interfaz dedicada para la lectura del repositorio de sistemas de control de versiones.

  • Nos proporciona de un wiki para la documentación colaborativa del proyecto.

  • Muestra información detallada sobre los cambios realizados en el wiki, sin necesidad de herramientas extras.

  • Permite el enlace hacia una base de datos de errores de software.

  • Permite la comparativa entre una y otra versión desde su interfaz.

  • Es un gestor de incidencias, con el cual podemos darle seguimiento a una determinada y ver su evolución.

Alternativas a Trac

CruiseControl

Es una herramienta de código abierto, la cual sirve para el control de compilaciones automaticas de proyectos Java, usando Maven o Ant.

Es muy utilizada para la realización de la integración continua. Periodicamente realiza la compilación de nuestros proyectos, para ver si el codigo y los cambios son correctos y asi detectar errores y cuando los hay rapidamente envia una notificación o alarma, al cual puede ser mediante RSS, e-mail, html o Jabber.

Cuando se detecta que una compilación no es exitosa, manda una notificación, lo cual permite que rápidamente se realicen acciones para contrarestar dichos errores. Permite la detección de los errores de manera rápida, asi como también quien o quienes fueron los autores. Esta es un herramienta muy util cuando muchas personas trabajan en el mismo proyecto. Permite tener muchas versiones ejecutables con pequeños cambios.

Es un sistema que esta en ejecución y cada cierto ciclo de compilacion (tiempo) o build loop, revisa nuestro repositorio de control de versiones en busca de cambios hechos en nuestros proyectos y si los hubieran realiza las acciones respectivas. Este build loop, es configurable y puede hacerse cuando se detecta un cambio en el repositorio o cada cierto tiempo que se considere correcto. Cada una de estas fases genera un reporte de compilación en donde se detallan los cambios y pruebas hechas, comparación entre la vesión anterior y la nueva, información respectiva a la compilación y los links hacia la misma.

  • El archivo xml de configuración puede llegar a ser demasiado grande.

  • Las modificaciones de vuelven tediosas, cuando se hacen para varios proyectos.

  • Tiene algun tipo de dependencia del tipo de navegador.

  • En ocasiones botón build funciona y en otras no.

Continuum

Es una herramienta para la integración continua de proyectos de software. Continuum, en un proyecto java, está pendiente de las modificaciones en los fuentes, para compilar automáticamente cada cierto tiempo y avisar por medio de e-mail a los programadores en caso de fallo.

Continuum es un servidor de integración continua con características tales como construcción automatizada, manejo de releases, seguridad basada en funciones, y la integración con las mas populares herramientas de construcción y sistemas de control de código fuente. Es útil cuando se tiene un equipo centralizado de desarrollo o cuando se quiere poner el control de las versiones en las manos de los desarrolladores. Continuum nos puede ayudar a mejorar la calidad y mantener un entorno de desarrollo consistente.

  • Continuum no permite colocar nombres distintos a los ejecutables que no sean el nombre del proyecto.

  • Requiere que en el archivo pom.xml, este la información para el sistema de control de versiones, donde deben estar todos los datos del desarrollador, hasta su password, lo cual se convierte en una deficiencia si el equipo esta integrado por varias personas, pues esto crea una vulnerabilidad al vernos obligados a crear un usuario anonimo con permisos de solo lectura para que todos tengan acceso.

Comandos de terminal para Subversion

Create: Con este comando se crea un repositorio nuevo.

sudo svnadmin create /dir/del/repositorio

Checkout: Con este comando se hace una copia del proyecto que se esta trabajando.

$ svn checkout file:///repositorio/trunk /dir/de/proyecto

Export: Este comando se usa para exportar el arbol de directorios.

sudo svn export http://localhost/proyecto1 /dir/del/proyecto

Import: Este comando importa de manera repetitiva los cambios hechos en un proyecto hacia el repositorio.

sudo svn import /dir/proyecto http://localhost/proyecto1





Configuración de subversion con apache junto con Hudson y Trac

13 06 2009

Nota: El ejemplo de este post se realizó en el sistema operativo GNU/Linux Ubuntu 9.10

Subversion: También conocido como SVN, Subversion es una herramienta de software para el control de versiones, surgio como una alternativa/sustitución al ya deprecaso sistema CVS. Subversion se una herramienta libre bajo licencia Apache/BSD y es desarrollado por collabnet. Una de las caracteristicas mas importantes que tiene subversion es que sus revisiones son atomicas, es decir, que todo el proyecto se guarda con un nuevo numero de revisión a diferencia de SVN que creaba una nueva revisión por cada archivo.

Como cualquier herramienta de Gestion de la Configuracion de Software (SCM), Subversion tiene capacidad de:

  • Controlar el estado de un producto
  • Construir el producto
  • Administraicón del tiempo de desarrollo
  • Hacer que el esfuerzo sea conjunto

Instalacion de Subversion: Para esto es necesario escribir en una terminal el siguiente comando.

sudo apt-get install subversion

Instalación de apache: Para esto es necesario tipear en una terminal el siguiente comando.

sudo apt-get install apache2 libapache-svn

Instalación de Trac: Para la instalacion de Trac, basta con entrar a una terminal y tipear.

sudo apt-get install trac

Instalacion de Hudson: Para poder instalar Hudson debemos de descargar el archivo hudson.war desde la página https://hudson.dev.java.net Cuando ya lo hayamos descargado, en una terminal tipeamos

java -jar hudson.war

Hecho lo anterior ya podemos abrir un reiniciamos apache y abrimos un explorador en la dirección http://localhost:8080 y veremos la página principal de Hudson. Cabe mencionar que la realización de esto tiene como requisito tener instalado el open-jdk (o sun-jdk), subversion y apache.

Configuración de apache con soporte webDAV y enlace con apache:

Para habilitar el soporte para webDAV de apache basta con ejecutar la siguiente linea en un terminal.

sudo a2enmod dav_svn dav

Ahora procedemos a crear el repositorio donde se guardarán todos nuestros proyectos. El parametro -p crea los directorios padres si acaso no existen.

sudo mkdir -p /srv/svn/repositorio

Así mismo también creamos una carpeta donde se alojarán los archivos de contraseñas.

sudo mkdir /srv/svn/user_accounts

A continuación creamos un grupo (subversion) y posteriormente creamos un usuario (uuno) dentro de ese grupo. Cabe mencionar que el usuario debe existir previamente.

sudo groupadd subversion

sudo addgroup uuno subversion

Ahora procedemos a modificar el archivo de configuración de acceso de apache para subversion.

sudo nano /etc/apache2/mods-available/dav_svn.conf

Y agregamos al final el texto que aparece a continuación:

Configuracion e apache

Configuración de apache

Ahora creamos el archivo de contraseñas asignando un usuario al mismo. El parámetro -c se utiliza para crear un nuevo archivo, si el archivo ya existira, no se coloca dicho parámetro al agregar un nuevo usuario.

sudo htpasswd -c /srv/svn/user_accounts/svn_passwdfile uuno

Ingresamos la contraseña para el usuario (uuno). Este archivo quedara con owner: root y grupo: root, por cuestiones de seguridad es mejor dejarlo así, para que solo administradores puedan agregar nuevos usuarios.

Ahora reiniciamos el servicio de apache.

sudo /etc/init.d/apache2 restart

Desde el explorador entramos http://localhost/proyecto1. Nos pedirá la contraseña y password, los ingresamos y veremos que ya nos aparece un link hacia el proyecto1. Si entramos veremos una pagina con título proyecto1 – Revision 0: /

Ahora agregamos un proyecto.

sudo svnadmin create /srv/svn/repositorio/proyecto1

Este paso lo hacemos cada vez que queramos crear un nuevo contenedor para nuestro proyecto

Ahora procedemos a cambiar los permisos sobre el contenedor de los proyectos.

sudo chown -R www-data:subversion /srv/svn/repositorio/*

sudo chmod -R 770 /srv/svn/repositorio/*

UUID_disco

UUID_disco