Niveles de calidad

Recientemente ojeando JavaHispano, he visto que han publicado un documento hablando de niveles de calidad de software y su inclusión, o más bien no inclusión en las metodologías de desarrollo actuales ya sean ágiles o tradicionales.

El documento ha sido escrito por Francisco Morero Peyrona y Abraham Otero (si no me equivoco con el apellido), y aunque es un texto corto (16 páginas), su lectura es interesante.

Quizás la primera parte habla de cosas que un desarrollador ya conoce y ha pensado en más de una ocasión, pero las directrices o reglas que ofreces en el apartado que ellos han nombrado como “Reglas del pulgar” son bastante interesantes. Como siempre decir que son casos generales y que luego cada uno tiene que tomar sus propias decisiones y, adaptar las cosas a su caso concreto. Con esto, me ha parecido una lectura interesante ya que le dan forma (de documento)  a unas ideas que casi todos llevamos en la cabeza.

En general yo diría que mi idea sobre que nivel de calidad a aplicar es más o menos la siguiente

Si el tiempo y el presupuesto lo permite (lo decide el cliente normalmente)
    Aplicar calidad de mayor a menor a
        Proyectos que van a usar otros desarrolladores
        Proyecto que solo van a usar los usuarios
        Chapuzillas (vease aquí script, aplicaciones para automatizar cosillas puntuales,...)
Sino
    Se hace lo que se puede

Está ha sido muy resumida mi regla siempre.

La verdad es que si en algo tienen razón, es en que es algo que nunca se nombra ni se hace referencia en las metodologías de software, todas ellas parecen enfocadas a alcanzar siempre la “perfección”, pero ¿de verdad merece la pena hacer siempre el esfuerzo? Esta es una muy buena reflexión.

También es cierto que debe ser difícil como mínimo tratar con un cliente y tener que especificar el nivel de calidad que se va a utilizar en un proyecto y presupuestarlo en este. Imagino que siempre es más fácil no decir nada y centrarse únicamente en la funcionalidad y la calidad, ya se verá sobre la marcha. Sobre todo porque depende de muchos factores, tiempo, imprevistos, preparación de nuestro equipo de desarrolladores, cambios de requisitos, … cosas que por lo general, no pueden ser medidas específicamente.

Y vosotros, ¿tenéis alguna regla sobre esto? ¿Aplicáis el 100% de la calidad siempre? ¿Nunca?

Os dejo el enlace al post en JavaHispano para que podáis leer el artículo:

Niveles de calidad: el agujero en las metodologías de software

Nos vemos.

Niveles de calidad

PGP

PGP es un programa cuya funcionalidad es la de proteger la información mediante el uso de una criptografía de clave pública (Ya entraremos más en detalle en esto exactamente). Además de proteger dicha información, también sirve para la autenticación de documentos la cual se realiza a través de firmas digitales y certificados.
El acrónimo proviene de la frase “Pretty Good Privacy”, lo cual se traduce por algo como “privacidad bastante buena” o una frase similar. Quizás el nombre no inspire mucha confianza ya que algo “bastante bueno” no tiene por qué ser bueno, pero en este caso, no es así ya que el programa como podemos ver lleva mucho tiempo en funcionamiento y sigue siendo usado a día de hoy por mucha gente y empresas. Ya sé que alguno pensará que esto tampoco significa nada, pero al final, se traduce en un montón de profesionales haciendo uso de una herramienta que durante años ha estado ahí. Además, mencionar que la Internet Engineering Task Force (entidad que regula/crea los estándares de Internet) se basó en el diseño de PGP para crear el estándar OpenPGP que es una especificación estándar de cifrado de emails, firmas y certificados digitales a través de claves públicas.

Decir que está disponible para casi todas, si no todas las plataformas y que además tiene pluggins para su integración con muchas plataformas de correo utilizadas habitualmente tanto a nivel personal como profesional.
Entrando en materia, deberemos decir que, estrictamente hablando PGP es un sistema de cifrado híbrido. Ya conocéis los tres tipos: público, privado e híbrido.

Básicamente y resumido en una sola frase, PGP es un sistema híbrido donde la clave pública cifra una clave privada que a su vez cifra un mensaje. Esto nos permite el cifrado o firmado de un documento y el descifrado o verificación de dicho documento.

PGP utiliza dos formas diferentes de clave pública. Por un lado RSA con una función hash MD5 y una longitud de clave de 2048, y Diffie- Hellman con un hash SHA-1 y una longitud de clave 4096. A día de hoy creo que la RSA se considera deprecated. En cuanto a los algoritmos de clave simétrica tenemos CAST, IDEA y TripleDES.

Otra de las funcionalidades que nos ofrece PGP es la de borrado seguro de datos, que consiste en la eliminación y sobreescritura de un archivo para que, de esta forma sea imposible de recuperar mediante software especializado. (Opinión personal: ¿Alguien dijo imposible? Yo no, esa palabra no existe en el ámbito de la seguridad y la computación).

Pero, ¿cómo funciona todo esto? Pues a la hora de la verdad, es bastante simple. El proceso de cifrado es el siguiente:

  1. El usuario escribe un texto plano.
  2. PGP realiza una compresión del fichero: Reduce espacio del fichero y robustece el cifrado ya que la compresión vuelve el archivo más complejo y dificulta su criptoanálisis.
  3. PGP crea una clave de sesión que será una clave de uso único y que consistirá en una cifra aleatoria generada en base a los movimientos del ratón y de las teclas pulsadas durante unos pocos segundos.
  4. El fichero comprimido se cifrará con esta clave simétrica.
  5. Tras esto el fichero resultado del primer cifrado y dicha clave de sesión se cifrarán mediante el sistema de clave pública
  6. Tras esto podremos enviar el archivo.

El proceso de descifrado, consistirá en seguir los pasos de forma inversa.

Además, de textos o emails, PGP también puede cifrar ficheros en nuestro disco duro si queremos guardar información sensible y que no peligre en caso de pérdida o robo de los dispositivos

Y ya como últimos comentarios, PGP nos permite por un lado tener varias claves y por otro enviar estas a un servidor de claves, de forma que sean fácilmente localizables por otros usuarios a la hora de escribirnos.

Como últimos apuntes decir que existe una alternativa libre llamada GnuPG, que si no recuerdo mal viene en muchas distribuciones como paquete.

Si tenéis alguna duda o creéis que algún punto debe ser mejor explicado comentadlo. Nos vemos.

PGP

Presentaciones online

Hoy, dejando un lado los temas más técnicos, os traigo algo interesante para todos. La verdad es que ya lo había visto anteriormente, pero es últimamente cuando estoy usándolo más para ver algunas presentaciones del “Asegúr@IT V“, y la verdad es que me he dado cuenta de la gran utilidad que tiene.

Para el que no lo sepa, “Asegúr@IT V” son unas conferencias sobre Windows, seguridad informática, redes virtuales, etc… que se celebraron en Zaragoza.

A lo que íbamos, la herramienta es slideshare que es una página que nos permite subir nuestras presentaciones a Internet y posteriormente poder linkarlas. Además, tienen un formato de visualización muy agradable y la posibilidad de ponerlas a pantalla completa, enviárselas por correo a nuestros amigos y otras funciones interesantes.

Además, todas las presentaciones están agrupadas por categorías, incluyendo unas etiquetadas como “Technology“, “Gadgets & Reviews” y “How-to & DIY” que tiene cosillas muy interesantes.

Bueno, espero que os sirva el servicio, a mi me ha gustado bastante, quien sabe, algún día, en vez de escribir un post haremos una presentación. Nos vemos.

Presentaciones online

Gestión de paquetes – Debian y derivados

Hoy os traigo una pequeña guía que he visto en MundoGeek sobre el manejo de dpkg que es el nivel más básico de gestión de paquetes en debian y las distribuciones derivadas de ella, como son Ubuntu por ejemplo. Tanto apt-get como aptitude, el cual usamos en el blog bastante son implementaciones que utilizan dpkg.

Espero que os sirva, no solo como curiosidad sino que os sea útil, yo en muchas ocasiones he tenido que echar mano de ello.

Nos vemos.

Gestión de paquetes – Debian y derivados

Limpando nuestro PC – CCleaner

Hoy, para variar un poco y no hablar siempre de Linux, os voy a recomendar una herramienta para Windows. Esta herramienta está pensada para limpiar nuestro sistema de ficheros temporales y basura varia, ya sea tanto en archivos perdidos en nuestro disco duro, como entradas perdidas en nuestro registro.

La herramienta es el CCleaner. Personalmente le llevo utilizando varios años ya y, nunca he tenido ningún problema con ella, al contrario, a mi me ha funcionado estupendamente.

Para empezar decir que es una herramienta Freeware que saca versiones nuevas y evoluciona cada poco tiempo. Con ella podremos borrar con un click archivos temporales, archivos sin uso y archivos perdidos en nuestro disco duro. Yo alguna vez he llegado a liberar más de 600mb de archivos prescindibles en un momento. Tiene múltiples opciones que podemos marcar o desmarcar con lo que haremos una selección del tipo de ficheros que queremos eliminar y tiene para establecer directorios en los que nunca queremos limpiar. Además, también borra las “cookies” de nuestro sistema, con la ventaja de que podemos marcarle aquellas que no queremos que se eliminen. Sé que alguno pensará que esto también lo hacen los navegadores, pero estos los borran todos sin tener opción de conservar algunos de ellos.

También, tiene un potente limpiador de registro que busca y elimina todas aquellas entradas viejas o que ya no corresponden a nada, y al igual que con los ficheros, tenemos varias opciones sobre que entradas del registro queremos o no borrar.

Finalmente, aunque yo no les doy uso, tiene una opción para instalar y desinstalar programas, y otra para gestionar el inicio del ordenador, lo cual facilita estas tareas a aquellas personas menos experimentadas.

Bueno, espero que os sea de utilidad esta herramienta, y como siempre ya sabéis, si tenéis alguna duda o queréis comentar algo animaros. Nos vemos.

Limpando nuestro PC – CCleaner

Controlar Ubuntu desde iPhone/iPod touch

Como alguno sabe tengo un iPod Touch en casa, de vez en cuando, suelo pasear por la sección gratuita del “App Store” y hoy he encontrado una aplicación llamada “Mocha VCN Lite“, así que como lo de controlar el portátil para ver series desde la cama es una idea que atrae mucho he decidido probar a ver que conseguimos. Y en efecto, he conseguido controlar mi portátil con Ubuntu instalado desde mi iPod Touch. Así que ahora os voy a relatar los pocos y fáciles pasos que hacen falta para esta tarea.

¿Qué necesitamos?

Un iPod Touch (supongo que con un iPhone también valdrá)

Un ordenado

Una red donde conectar el iPod y el ordenador.

¿Como hacerlo?

En primer lugar necesitamos tener VNC instalado en nuestro portátil. En el caso de Ubuntu 8.10 ya está instalado por defecto, si no os viene, aquí tenéis una guía para instalarlo muy fácilmente.

En segundo lugar, accederemos con nuestro iPod Touch al “App store” y buscaremos la aplicación “Mocha VNC Lite” y la instalaremos. Esta es gratuita. Existe una versión de pago que te da la opción de tener botón derecho y alguna cosa más, pero la gratuito funciona francamente bien.

El tercer paso es activar en nuestro portátil con Ubuntu el escritorio remoto para poder tener acceso a él. Esto lo haremos yendo a “Sistema -> Preferencias -> Escritorio remoto“. Aquí nos aparecerá una ventana donde marcaremos la casilla de “Permitir a otros usuarios ver mi escritorio”. Con esto ya estará todo activado. Le podéis poner también una contraseña, pero esta opción no la he probado, yo lo he hecho sin contraseña.

El cuarto y último paso es ir a nuestro iPod Touch, acceder al programa de “Mocha VNC Lite” e introducir los datos de la conexión. aquí rellenaremos la “VNC Server IP Adress” con la dirección IP del ordenador al que queramos conectar, el campo “VNC Server Port” si no lo hemos cambiado dejaremos el puerto 5900 que es el puerto por defecto. Y rellenaremos el campo “VNC Password” si hemos puesto una contraseña, si no hemos puesto contraseña es importante poner el valor “#” porque si no nos dirá que no hemos rellenado el campo. La almohadilla es equivalente a no poner nada. Una vez hecho todo esto, le daremos a conectar y ya tendremos el control de nuestro ordenador.

Como podéis ver ha sido muy simple. Espero que os sea útil. Nos vemos.

Controlar Ubuntu desde iPhone/iPod touch

Chuleta para Unix

Revisando hoy los marcadores de mi navegador he encontrado una de esas cosas que la primera vez que la ves te parece una tontería, pero cuando la necesitas te parece la mejor idea del mundo. Me estoy refiriendo a una chuleta sobre comandos para sistemas Unix o basados en él, ya sea Linux o *BSD. Como todos sabemos, este tipo de sistemas poseen una gran variedad de comandos, y la gran mayoría de los que utilizamos diariamente suelen ser los habituales, yo diría que no llegan a superar los diez o quince. El resto sabemos que están, los hemos usado alguna vez, conocemos que hay uno que hace tal cosa o tal otra, pero no son más que un pequeño recuerdo en algún lugar de nuestra mente.

Pues bien, aquí podéis encontrar un buena referencia de forma fácil, rápida y ordenada de esta gran mayoría de comandos, porque nunca está de más echarle una manita a nuestra memoria.  Están ordenados por categoría para su fácil manejo y, además tiene un pequeño índice en el lado derecho.

Espero que os sea de utilidad. Nos vemos.

Chuleta para Unix

Montar imagenes

Hoy os traigo otra chuleta para la colección. En este caso una para tener a mano como montar diferentes imágenes de CD o DVD en linux cosa bastante útil para ahorrar CD’s o DVD’s si nos dedicamos a bajar mucho este tipo de formato de archivo, así podremos probar las cosas antes de grabarlas. La mayoría de la información que hay a continuación esta sacada de la Guía Ubuntu y de los Foros de Ubuntu, así que esto solo es una pequeña recopilación de todo ello.

Por supuesto, todo lo vamos a aprender a hacer desde la consola, aunque para aquellos que no seáis muy amigos de esta o simplemente os resulte más cómodo el entorno gráfico, al final, comentaré un programa para hacerlo con unos pocos click’s del ratón.

Montar imagen ISO:

sudo mount -t iso9660 -o loop fichero.iso /media/iso/

A partir de aquí, para montar el resto de tipos de imágenes el método será pasarlas a ISO y montarlas como se ha comentado ya.

Montar imagen .BIN y .CUE:

Si no tenemos instalado el conversor:

sudo aptitude install bchunk

Si lo tenemos instalada o lo acabamos de instalar:

bchunk fichero.bin fichero.cue fichero.iso

Montar imagen .NRG (Nero Burning Rom):

Si no tenemos instalado el conversor:

sudo aptitude install nrg2iso

Si lo tenemos instalado o lo acabamos de instalar:

rng2iso fichero.nrg fichero.iso

Montar imagen .IMG:

Si no tenemos instalado el conversor:

sudo aptitude install ccd2iso

Si lo tenemos instalado o lo acabamos de instalar:

ccd2iso fichero.img fichero.iso

Montar imagen .MDF y .MDS:

Si no tenemos instalado el conversor:

sudo aptitude install mdf2iso

Si lo tenemos instalado o lo acabamos de instalar:

mdf2iso fichero.mdf fichero.iso

Existe otro tipo de formato de imagen que es el DAA que es especifico del programa Poweriso. Personalmente, nunca lo he utilizado ni conozco a nadie que lo haga, así que no voy a entrar en detalles sobre como montar una imagen de este tipo. De todas formas, si lo necesitáis aquí tenéis el enlace al apartado adecuado de la Guía Ubuntu.

Finalmente, para todos aquellos que preferís el entorno gráfico, comentaros que existe el programa “gmountiso“, que además, en Ubuntu esta en lo repositorios y podéis instalarlo fácilmente, que os permitirá hacer todo lo comentado anteriormente sin tener que pasar por la consola. Para instalarlo, simplemente ejecutad:

sudo aptitude install gmountiso

Bueno, hasta aquí la chuleta de hoy. Si alguien quiere añadir algún formato o algo, ya sabéis que yo os animo a comentar, y si es un nuevo formato, lo añadiré al post, por supuesto citando a quien lo diga. Nos vemos.

Montar imagenes

Buscando procesos

Algo que sucede a veces, es que cuando ejecutamos aplicaciones, sobretodo en el entorno gráfico, alguna se puede quedar colgada sin que podamos cerrarla o moverla o simplemente quitarla de en medio. Esto le paso el otro día a un compañero en clase y me sorprendió que no supiera como solucionarlo, estaba a punto de reiniciar el sistema cuando me pregunto. Así que, dedicado a él, y para todo aquel que no sepa tampoco como buscar un proceso y pararlo, es el siguiente post.

Como la mayoría de usuarios de Linux sabe, los programas que ejecutamos o ejecuta el sistema, se reflejan como procesos y se les asigna un PID (Program IDentifier). Toda esta información, además de otra como el consumo de CPU y memoria, podemos consultarla mediante el comando ps aux. Ahora bien, al ejecutar la orden, salen todos los procesos existentes en la máquina tanto los de nuestro usuario como los de todos los demás, con lo cual la búsqueda puede ser muy tediosa.

Para evitar esto, vamos a utilizar la combinación de varias instrucciones, la comentada anteriormente (“ps aux“) y el comando “grep“. Por supuesto, todo esto vamos a hacerlo desde la consola.

El comando grep es una utilidad que coge una expresión regular o cadena literal, texto, y busca coincidencias en un texto que le pasemos. De este modo, el texto a buscar en este caso, será el nombre del proceso que buscamos, o si no sabemos el nombre completo del proceso, al menos una parte de este nombre.

Para poder realizar esto, también utilizaremos la tubería de la consola “|” que hará que la salida del primer comando sea utilizada por el segundo. Así, finalmente, para buscar un proceso especifico utilizaremos la siguiente orden:

ps aux | grep <proceso>

De este modo, la herramienta “grep” buscará nuestro proceso en la lista mostrada por “ps aux“. Un ejemplo de ejecución sería el siguiente, en el que yo voy a buscar el proceso “gedit” que es el editor de texto de Gnome que estoy utilizando en estos momentos para escribir este post:

ps aux | grep gedit
svoboda  12734  1.3  1.8  28888 18792 ?        S    10:39   0:14 gedit
svoboda  13696  0.0  0.0   3252   816 pts/0    S+   10:57   0:00 grep gedit

Como podéis ver aparecen dos procesos, el primero es el que estamos buscando y el segundo es el comando que hemos utilizado para realizar la búsqueda.

Ahora simplemente tendríamos que eliminar este proceso con la orden “kill” y el PID del proceso (segunda columna).

Espero que os sirva. Nos vemos.

Buscando procesos

Cables y casualidades

Hace unos días me llamo un amigo preocupado porque llevaba todo el día sin poder navegar por Internet, como vive aquí cerca, le debía una visita y no tenía demasiadas cosas que hacer o más bien pocas ganas de hacerlas, me acerque a su casa a ver que le pasaba. Tras llegar allí, confirmé que realmente no tenía acceso a Internet ni a través de cable ni de Wifi. Yo soy de los que practican la regla de que “primero lo más fácil” cuando se trata de reparar algo, así que a pesar del cachondeo de mi amigo, me puse a apretar los cables del router y tarjetas de red. Y, ¡aleluya!, se hizo Internet. Aquí, el que me reí, fui yo.

¿A que viene todo esto? Pues como alguno sabe, yo tengo un iPod Touch, el cual te deja conectarte a Internet con bastante facilidad. En él tengo configurada la red de mi casa y la de mi universidad. Estando esta mañana en la universidad, he intentado conectarme a la red y no he podido, como, aunque es raro a veces pasa, no me he preocupado demasiado y horas después me he vuelto a casa con resignación.

Ya en casa, he vuelto a encender el iPod para intentar consultar un par de cosillas, y cual ha sido mi sorpresa al ver que tampoco podía conectarme. Al fallar en dos redes diferentes, directamente he pensado que algo habría mal en el iPod y me he saltado la regla de oro, “primero lo mas fácil”. Tras media hora de entrar en router’s, configurar repetidas veces la conexión en el iPod y volverme loco, además de pensar que algo se había roto, sin saber que hacer me he puesto a apretar los cables del router Wifi, sin pensarlo, no se porque. Y sorpresa, de repente, todo volvía a funcionar como debía.

Así que ya sabéis, si la red falla, comprobad primero los cables y luego ya os podéis estrujar la cabeza con otras cosas, aunque creáis que no pueden ser los cables, el mundo esta llenos de casualidades. Y la de hoy era que, efectivamente, en la universidad no iba la red esta mañana, y en mi casa el cable se había aflojado.

Nos vemos.

Cables y casualidades