Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

PROGRAMANDO EN .NET

Que gran verdad!!

Septiembre 30th, 2009 - [Enlace local]

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.Alguna gente, cuando se enfrentan a un problema piensan: "Ya sé, usaré expresiones regulares." Ahora tienen 2 problemas.Jaime ZawinskiYo diría más, si encuentras expresiones regulares en el código, busca al que lo haya programado y dale una colleja (y otra de mi parte).

» Leer más, comentarios, etc...

Buayacorp

¿Me puedes hacer una página web?

Septiembre 29th, 2009 - [Enlace local]

Braulito, tú haces páginas web, ¿verdad? ¿me puedes hacer una?, pero por favor cóbrame baratito nomás.

Ésta es la frase común que escucho cuando alguien me pide un trabajo. Mucha gente tiene la idea equivocada de que una “página web”, como suelen llamarle, es algo simple de hacer y que se podría hacer de un día para otro.

Cusco es una ciudad turística y por ende hay muchas empresas relacionadas a éste sector que requieren sitios web para vender sus productos al extranjero. Sin embargo, la mayoría de la gente que está tras este negocio, tiene la rara creencia de que un sitio web se hace rápidamente y que hacerlo no cuesta casi nada. Esto se debe porque existen muchas personas que se dedican a hacer sitios web — generalmente no de muy buena calidad — que cobran muy bajo.

Si alguna vez alguien te dijo una frase parecida a la de arriba, talvez te interesen los siguientes consejos para darle mas valor a tu trabajo.

Yo cobro barato

Si es así, pues te habrás dado cuenta de que el dinero no te alcanza :D . Que para llegar a fin de mes, tienes que aceptar muchos trabajos o buscarlos para generar un buen ingreso y mantenerte. Que trabajas demasiado o a veces ni comes. Que por tratar de cumplir haces un trabajo de mala calidad, quedando mal no sólo con uno mismo sino con todos los clientes con los que te comprometiste. Quizás tu trabajo es excelente pero el cliente no lo valora. Si ese en algún modo es tu caso, déjame darte algunos consejos que la experiencia me ha enseñado:

  1. Ten tu propio sitio web. Un lugar donde puedas mostrar tus trabajos, tus metas, tus habilidades y donde los clientes puedan observar la calidad de tu trabajo.
  2. Crea un modelo de cotización general. Ponle tu marca personal y especifica lo que incluye un sitio web común .
  3. Enseña al cliente. Por ejemplo tengo que enseñar que una “Página Web” es parte de un “Sitio Web”, o dar a conocer algunos términos de este mundo para que el cliente entienda.
  4. El cliente no siempre tiene la razón. Es importante tener una entrevista con el cliente y explicar las cosas que le van a convenir ya que muchas veces ellos requieren cosas innecesarias. Por ejemplo el cliente puede decirte: “quiero que mi negocio de ventas tenga una introducción en flash como lo tiene la empresa de la competencia” cuando en realidad lo que él necesita es vender más y obviamente el intro en flash no le va a ayudar.
  5. Que te proporcionen el material necesario. Muchas veces me han dicho: “Esa página vende este producto y como yo también lo vendo, puedes copiarte lo que tiene él, además puedes bajarte las fotos de internet”. No aceptes eso. Si vas a empezar un trabajo, es necesario que el cliente te proporcione todo lo necesario para que puedas cumplir tu trabajo. Además te ayudará a evitar problemas de copyright.
  6. No tienes cuatro manos. Te recomiendo que puedas tener un plan de trabajo, darle el debido tiempo a las cosas difíciles y terminar con lo más fácil. Si es que haz aceptado más de un trabajo de la misma manera planifica los tiempos para que puedas cumplir y no aceptes más de lo que sabes no lograrás.
  7. Delega. Personalmente tengo conocimiento de programación y cosas relacionadas, pero mi conocimiento sobre diseño es limitado, lo mejor que se puede hacer es contratar a alguien que si domine de diseño y juntar fuerzas para lograr un mejor trabajo.
  8. Innova. Actualízate siempre, busca las nuevas tendencias y aprovéchalas en tu trabajo. Da a conocer esto a tus clientes y de la misma manera ponle costo a tu esfuerzo.
  9. Se honesto y cumple. Nunca falles al que te da trabajo, haz todo lo posible por cumplir con lo que te haz comprometido. Así lograrás reconocimiento y obviamente más clientes.

Recién estoy empezando ¿Qué puedo hacer?

Pues mi consejo es que seas competitivo, estudia (no siempre profesionalmente, personalmente aprendí a hacer esto por necesidad) y dedícate a lo que haz escogido, en este tiempo muchos se están dedicando a este negocio y si no lo haces bien, no vas a llegar lejos.

Yo gano bien y tengo buenos clientes ¿Cómo puedo ayudar?

Comparte lo que sabes con los que están empezando,  ya que tú también empezaste así :D. Es bueno generar competencia y capacitar a otros ya que genera esfuerzo e innovación de parte de ambos.

En conclusión he tratado de expresar mi punto de vista sobre esto y posiblemente tengas más que añadir. Si es así nos gustaría que lo compartas con nosotros.

Si te ha ayudado pues ahora ya sabes que hacer cuando te digan ¿me puedes hacer una página web?.

» Leer más, comentarios, etc...

Picando Código

Curso Intensivo de Ruby on Rails en Montevideo

Septiembre 29th, 2009 - [Enlace local]

Ruby on Rails

Ruby on Rails

Estamos organizando un curso intensivo de desarrollo de web ágil con Ruby on Rails en Montevideo del 19 al 30 de octubre. El instructor es Pedro Visintín quien tiene mucha experiencia dando cursos de Rails en Argentina, Chile, y Costa Rica.

¿Quiénes somos?

Cubox S.A. es una empresa de desarrollo basado en Ruby on Rails trabajando desde la oficina de CoworkingMVD, aquí en Montevideo. Somos socios de ENTP, la primer empresa de consultoría en Ruby on Rails y software libre en el mundo, según dice el sitio de http://railsrankings.com/

El curso es abierto para cualquier interesado o interesada en aprender sobre el desarrollo ágil con Ruby on Rails, pero también estamos buscando nuevos candidatos para nuestro equipo. Así que si tenés interés en trabajar con nosotros, este curso es una buena forma de entrar en contacto y conocernos.

El objetivo de este curso es capacitar en el uso del framework con las mejores prácticas y buenas costumbres, aplicando metodologías ágiles como extreme programming y BDD. Es ideal para quien ya desarrolla aplicaciones web en alguna otra plataforma y quiere empezar a desarrollar aplicaciones con Ruby on Rails. Se cubrirán los aspectos más importantes del framework donde normalmente quien es nuevo se enfrenta a difíciles decisiones, falta de documentación y termina resolviendo por prueba y error. Durante el curso se desarrollará una aplicación web de prueba utilizando Git como sistema de control de versiones.

La duración del curso será de 10 días de 3.5 horas cada día, con un break de 30 min. El curso es altamente intensivo, no hay tiempo ni para tomar mate ;-) Para que pueda asistir la gente que trabaja durante el día, el curso se dictará de 18 a 21:30 hs.

Costo: $1500 + IVA

Las interesadas o interesados deben escribir un email a cubox.curso@gmail.com por favor incluyan una descripción de su motivación para realizar el curso, sus conocimientos previos, etc. Se promete reserva.

Temario:

Día 1

Día 2

Día 3

Día 4

Día 5

Día 6

Día 7

Día 8

Día 9

Día 10

El curso estará a cargo de Pedro Visintín que cuenta con varios años de experiencia en el tema:

» Leer más, comentarios, etc...

HardBit

Nueva integrante de la familia!

Septiembre 29th, 2009 - [Enlace local]

He dejado de escribir por razones de tiempo y por que no he tenido internet desde que me cambie de ciudad, espero continuar con los post en cuanto me hagan la conexión de internet estos amigos de Telmex, bueno vayamos al punto importante, quiero anunciar la llegada de la nueva integrande de mi familia, mi hija Naomi, que nacio de 7 meses y 3 semanas, estoy muy contento, feliz y emocionado por mi hermosa hija, estos sucesos hacen que valga la pena vivir y sobrevivir en un mundo como este.

Naomi

Naomi

Y con esto empieza una nueva vida, la de mi hija esperemos que mi esposa y yo podamos darle lo suficiente para salir adelante, no hay palabras para describir lo hermoso que es esto y los sentimientos que genera, solo queria compartir con ustedes esto :) .

Les dejo unas fotitos de mi beba.
Fotos

» Leer más, comentarios, etc...

Cerebro en la Sombra » Técnico

Vsftpd con autentificación a través de servidor Radius y MySQL

Septiembre 29th, 2009 - [Enlace local]

Le he cogido gusto a lo del Radius y centralizar todos los temas de autentificación bajo su paraguas :P .

Por un lado hemos visto como crear vpn’s y puntos de acceso wireless con Radius y por otro cómo integrar vsftpd con MySQL utilizando usuarios de ftp virtuales. ¿Por qué no combinarlos? ¿Para qué vamos a querer mantener una nueva base de datos para ftp si ya tenemos nuestro Radius preparado para realizar autentificaciones? Está casi todo hecho, sólo nos falta tocar las teclas adecuadas.

Vamos a suponer que tu servidor Radius ya está funcionando y que ya has montado tu sistema vsftpd con usuarios virtuales, en los links anteriores se explica todo. Configuraremos ahora nuestro servidor ftp para que se autentique contra Radius en vez de contra MySQL directamente.

Como vsftpd utiliza PAM para autenticarse, deberemos solamente cambiar el módulo MySQL por el correspondiente a Radius. En aquél momento utilizábamos pam_mysql. ahora haremos lo mismo con pam_radius, así de sencillo.

En mi caso, como sabéis, utilizo CentOS5, y curiosamente no está disponible un rpm con este módulo, así que toca prepararlo a mano, la suerte es que en los fuentes viene el archivo .spec adecuado para crearlo directamente. Si para vuestro sistema tenéis el instalable adecuado podéis saltaros este paso.

Podríamos compilar e instalar directamente el tar, pero prefiero crear un rpm que permita actualizarlo y desinstalarlo a posteriori. Descargamos el código fuente desde aquí, lo desempaquetamos en una ruta temporal y copiamos el propio tar a la ruta adecuada para compilar el rpm:

  1. #cp pam_radius-1.3.17.tar.gz /usr/src/redhat/SOURCES/pam_radius_auth-1.3.17.tar.gz
  2. #tar xvfz pam_radius-1.3.17.tar.gz
  3. #cp pam_radius-1.3.17/pam_radius_auth.spec /usr/src/redhat/SPECS

Ahora debemos hacer un pequeño cambio en este archivo spec. Deberemos editarlo y modificar la línea 2

  1. %define version 1.3.15

actualizando el número de versión correspondiente:

  1. %define version 1.3.17

Y añadimos la línea

  1. BuildRequires: pam pam-devel

Después de la línea 15, de manera que queda

  1. %define name pam_radius_auth
  2. %define version 1.3.17
  3. %define release 0
  4.  
  5. Name: %{name}
  6. Summary: PAM Module for RADIUS Authentication
  7. Version: %{version}
  8. Release: %{release}
  9. Source: ftp://ftp.freeradius.org/pub/radius/pam_radius_auth-%{version}.tar
  10. URL: http://www.freeradius.org/pam_radius_auth/
  11. Group: System Environment/Libraries
  12. BuildRoot: %{_tmppath}/%{name}-buildroot
  13. License: BSD-like or GNU GPL
  14. Requires: pam
  15. BuildRequires: pam pam-devel

Ya tenemos todo preparado para compilar el módulo

  1. #rpmbuild -ba /usr/src/redhat/SPECS/pam_radius_auth.spec

Si todo va bien tendremos en /usr/src/redhat/RPMS/x86_64 el rpm del paquete preparado para instalar. En mi caso, como es un sistema de 64bits está en la carpeta x86_64, en tu caso puede estar en i386. Sólo nos queda instalarlo.

  1. rpm -ivh /usr/src/redhat/RPMS/pam_radius_auth-1.3.17-0.x86_64.rpm

Vamos ahora a configurar lo poco que hay que configurar :P . Indicamos la dirección del servidor Radius y la clave de acceso al mismo:

/etc/raddb/server

  1. 127.0.0.1       claveSecretaRadius             1

Cambiamos la configuración PAM de vsftpd para que en vez autenticarse con MySQL utilice Radius:

/etc/pam.d/vsftpd

  1. auth required /lib/security/pam_radius_auth.so debug
  2. account required /lib/security/pam_radius_auth.so debug

Eso es todo. Nuestro servidor FTP se autenticará contra el servidor Radius. Hemos añadido la opción de depuración (debug) para comprobar el funcionamiento, cuando estemos seguros de que todo funciona bien podemos eliminarla.

Si tienes algún problema, para verificar qué hace el módulo pam_radius debemos comprobar el log estándar de debug. Por defecto no viene activado en el demonio syslog, así que lo añadimos:

/etc/syslog.conf

  1. *.debug       /var/log/debug.log

Intentamos acceder al servidor FTP y comprobamos qué está haciendo el módulo de autentificación en este log:

cat /var/log/debug.log

  1. Sep 28 17:11:09 osiris vsftpd: pam_radius_auth: Got user name XXX
  2. Sep 28 17:11:09 osiris vsftpd: pam_radius_auth: Sending RADIUS request code 1
  3. Sep 28 17:11:09 osiris vsftpd: pam_radius_auth: DEBUG: getservbyname(radius, udp) returned 1214042784.
  4. Sep 28 17:11:09 osiris vsftpd: pam_radius_auth: Got RADIUS response code 2
  5. Sep 28 17:11:09 osiris vsftpd: pam_radius_auth: authentication succeeded

Si hubiese algún problema deberíamos verlo ahí, pero si ya tenías Radius y vsftpd funcionando, todo debería ir bien.

Hasta aquí hemos llegado, hemos integrado un nuevo servicio de nuestra red en el mismo sistema de autentificación. Cualquier demonio que utilice PAM para autenticarse se debería configurar del mismo modo. Ssh es el ejemplo más claro, se haría prácticamente igual.

» Leer más, comentarios, etc...

Joan Garnet :: Arquitectura y desarrollo RIA

PHP Conference 2009

Septiembre 29th, 2009 - [Enlace local]

php barcelona conference 2009Vuelve la PHP Barcelona Conference en su edición 2009 los días 30 y 31 de Octubre, este año con una apuesta mucho más fuerte e interesante. Para empezar el evento dura dos días durante los cuales habrá tres charlas/workshops paralelos continuamente.

Este año tengo el placer de participar como ponente dando la charla “Integrando PHP5 y ActionScript a través de AMF“, así que si vas a estar por ahí y te interesa ver cómo se integran PHP y Flash/Flex no puedes perderte esta charla!
La charla se centrará en el protocolo AMF, sus distintas implementaciones en PHP, casos de uso que cubran características interesantes, algunos benchmarks, etc…flex and PHP

Volviendo al evento, este año se volverá a celebrar en el Citilab de Cornellà de Llobregat, muy cerca de Barcelona ciudad.
El programa ya está cerrado y se puede ver en el apartado correspondiente de la web del evento.

Los ponentes: Derick Rethans, Pedro Cambra, Lorna Mitchel, Lorenzo Alberton, Joan Llenas (yo mismo), Rasmus Lerdorf, Kuassi Mensah, Chema Garrido, Erik Schultink, Lars Jankowfsky, Davide Ferrari, Stefan Koopmanschap, Lars Jankowfsky, Àlex Puig, Enrico Zimuel, Hans Zaunere, Damien Seguy, Davide Mendolia, Kuassi Mensah, Jordi Roura, Sebastian Bergmann, Kuassi Mensah, Victor Guardiola, Fabien Potencier, Fernando Palomo, Jordi Catà, David Zuelke… son un montón de ponentes!

Las charlas se darán en Inglés y Castellano dependiendo de la preferencia del ponente. En el apartado de charlas se puede diferenciar el idioma a través de un icono.

Si tienes que viajar y reservar estancia los organizadores proponen algunas opciones.
Y nada más solo queda que te registres!
Nos vemos

» Leer más, comentarios, etc...

Arragonán

Escuela de Groovy se presenta

Septiembre 29th, 2009 - [Enlace local]

Me parece muy interesante la iniciativa que se presentó el Viernes en Madrid On Rails: Escuela de Groovy, una joint venture entre ImaginaWorks y Salenda, dos de las empresas de referencia en el mundillo Groovy/Grails/Griffon/… hispano.

Pienso que es interesante que unan el esfuerzo que ya estaban haciendo por separado impartiendo charlas, talleres y seminarios para “evangelizar” acerca de las bondades que pueden aportar Groovy o Grails; y que se quieran enfocar conjuntamente en hacer llegar estas tecnologías a las empresas para tratar de ayudarles a ser más productivas(principalmente a empresas Java, obviamente).

Os dejo los videos que grabaron durante la presentación, si os interesa conocer algunas cosas del lenguaje Groovy o del framework Grails, no dejéis de verlos:


Álvaro Sánchez-Mariscal, haciendo una introducción a Groovy


Nacho Brito, acerca de los beneficios de usar Groovy

» Leer más, comentarios, etc...

carlosrovira.com

Migración y lavado de cara

Septiembre 28th, 2009 - [Enlace local]

Como parte de mi plan de volver a darle un poco de vida a este blog, he comenzado por migrarlo a un nuevo servidor, pasarlo a la última versión de WordPress y hacer algunos cambios iniciales en la presentación gráfica. Ahora que este dominio delega totalmente la característica de empresa que había adquirido a Codeoscopic, me gustaría volver a imprimirle un carácter más personal con mis propios temas, ya sean experimentos de programación, gustos personales o los eventos de mi vida que me gusta dejar aquí anotados para futuras referencias. Quiero agradecer antes de continuar el alojamiento de U-Company durante todos estos años. ¡Gracias chicos! :) .

Con respecto al lavado de cara realizado, el tema de wordpress elegido es Carrington, con algunas modificaciones. También le he añadido en el header un pequeño visor de fotos de un álbum que he colgado en Picasa. De esta forma conforme vaya añadiendo nuevas imágenes, el visor mostrará dichos cambios sin tener que tocar nada. Este pequeño experimento lo he desarrollado con las últimas betas de Flex 4 (que requiere Flash Player 10). Realmente no es necesario, pero ¡que demonios!, de eso se trata ¿no?. De colgar las cosas experimentales que en otros lugares como la web de Codeoscopic no podría poner ;) . De hecho mi plan es ir evolucionando este visor con algunas cosillas que nos ofrece el nuevo player conforme tenga tiempo para ir jugando.

En próximos post analizaremos este visor de Picasa. Espero que lo encontréis interesante :) .

» Leer más, comentarios, etc...

Buayacorp

WordCamp Spain

Septiembre 28th, 2009 - [Enlace local]

WordCamp Spain es “un evento dedicado a promover, compartir y difundir los conocimientos y el espíritu de comunidad entre los usuarios, desarrolladores y empresas que usan WordPress para sus proyectos“. Se realizará el próximo sábado 10 de octubre, en Espai Jove de Gràcia de Barcelona.

Aunque estoy relativamente cerca, lamentablemente me enteré muy tarde para poder hacer los planes y principalmente para ahorrar un poco en la compra de pasajes :D . Bueno, estaré al tanto de lo que escriban los que irán. :)

» Leer más, comentarios, etc...

Picando Código

Apocalipta: Viajador

Septiembre 28th, 2009 - [Enlace local]

Viajador

Viajador

El #4 del cómic Cisplatino (así como Visiones #3) traía un preview en la tapa de atrás con un link a Viajador en Apocalipta. Por ahora no hay mucho más que esta gráfica y la que pueden encontrar en la tapa trasera de Cisplatino. Pero parece que además de Cisplatino y Sidekick, Apocalipta estaría lanzando otra producción en breve. Habrá que esperar… Por ahora, se ve bastante bien.

¡Qué bueno que Apocalipta se vaya expandiendo y produciendo obras de más autores uruguayos!

» Leer más, comentarios, etc...

Joan Garnet :: Arquitectura y desarrollo RIA

Un año de Mac

Septiembre 26th, 2009 - [Enlace local]

prod8032Hoy hace un año que disfruto de mi Macbook de 13″. Con su carcasa de aluminio, su teclado retro-iluminado, su trackpad multi-touch, su bonito diseño… una delicia en todos los sentidos :)
Todo empezó cuando entré a codesarrollar un proyecto con Xavi Beumala en communi.tv (antes de que Adobe lo abdujera). Debo decir que toda la culpa fue suya… él fue la primera persona que me demostró que el desarrollo de software con mac era posible. Yo por aquel entonces era el típico MACcéptico cargado de prejuicios que pensaba que un mac estaba limitado en lo que a herramientas de desarrollo se refiere, y no podía estar más equivocado… tras compartir proyecto durante un tiempo con él pude ver de primera mano la agilidad con la que trabajaba y la cantidad de herramientas de las que disponía. Eso fue el detonante de un proceso que varios meses después culminó con la adquisición de la mejor compra tecnológica que he hecho hasta el momento, mi macbook. El mismo día que salió la nueva generación de macbooks (después de la keynote), por la noche logré hacer la compra desde el Apple Store.

Debo decir que la transición de Windows a Mac ha sido mucho menos traumática de lo que en un principio pensé. Básicamente la organización del sistema de archivos, sobretodo los shorcuts y luego algunas peculiaridades del sistema operativo, pero en general nada que no se solucionara buscando un poco por internet…
Una de las cosas que me propuse cuando compré el macbook fue que quería deshacerme del ratón, y así lo hice. Desde entonces utilizo únicamente el trackpad, que es una maravilla, y el teclado. Esto me ha ayudado a centrarme mucho más en aprender los shortcuts de todas las aplicaciones y sacar partido de las funcionalidades multi-touch del trackpad. Esto además me permite trabajar igual de cómodamente en mi escritorio de la oficina que en el sofà de casa ya que no hecho en falta el ratón. El dejar el ratón quizás fue lo más complicado debo decir… pero ahora estoy totalmente adaptado y la verdad es que sufro menos (sinceramente, ni me acuerdo de la última vez) de dolores en el antebrazo y de contracturas en la espalda por la carga que supone el mantener las micro tensiones a las que obliga el utilizar ratón.

En conclusión, desde que tengo Mac trabajo más, mejor, soy más guapo, mejor persona y gano más dinero XDDD ;)

» Leer más, comentarios, etc...

Buayacorp

Escribiendo TeX en Windows

Septiembre 25th, 2009 - [Enlace local]

Hasta antes de este año, sólo sabía para para qué se utilizaba TeX. Lo consideraba complicado. No había intentado siquiera aprender, puesto que los trabajos que solía presentar en la universidad lo hacía en algún editor de texto y lo exportaba en formato PDF. En esa época me parecía más cómodo hacer eso. Aunque he de reconocer que el tipo de trabajos eran sobre todo monografías. Lamentablemente, mi universidad no fomentaba la investigación. :(

TeX es un sistema de tipografía — escrito por Donald E. Knuth — que fue diseñado con dos objetivos principales: permitir la producción de libros de alta calidad que usan una cantidad razonable de esfuerzo, y proporcionar un sistema que de los mismos resultados en todos los ordenadores, ahora y en el futuro. 1

En lo que lleva del año he aprendido algo de TeX y me ha encantado la facilidad con la que se generan documentos que contienen formalismos matemáticos. Aunque muchos de los que conozco generalmente usan entornos Linux para escribir TeX, los que por uno u otro motivo quieran utilizar Windows para escribir TeX, posiblemente les interese los siguientes programas:

¿Alguien tiene otras utilidades a compartir?

Es una mala traducción de la versión en inglés.

» Leer más, comentarios, etc...

Cerebro en la Sombra » Técnico

Punto de acceso inalámbrico con autentificación a través de servidor Radius y MySQL

Septiembre 25th, 2009 - [Enlace local]

Si hace unos meses os mostraba cómo crear conexiones VPN entre máquinas Linux y Windows con autentificación a través de servidor Radius y MySQL hoy veremos cómo aprovechar la misma estructura para autentificar usuarios que se conecten a nuestra red wifi de manera que tengamos todo el entorno de acceso a nuestra red integrado. En capítulos posteriores puede que veamos cómo añadir más servicios.

Ante todo aviso que no soy ningún experto en la materia y puede que diga cosas que no son correctas :P , por favor, no dudéis en corregirme.

La parte más importante del sistema la tenemos ya preparada, si necesitas montar todo el servidor Radius puedes leer el artículo anterior donde se explica bien el procedimiento. En esta ocasión nos centraremos en hacer que el servidor Radius que ya teníamos autentifique a los usuarios que se conecten a nuestro punto de acceso inalámbrico.

En un escenario normal es el punto de acceso el que se encarga de autentificar al cliente que intenta conectarse a través de las conocidas contraseñas (técnicamente shared-keys) con el inconveniente de que todos los usuarios deben utilizar la misma y si hay que cambiarla hay que comunicar a todos ellos cual es la nueva.

Hay dos conceptos dentro de todo este sistema que van siempre juntos pero son distintos:

  1. La encriptación de la comunicación entre el cliente y el punto de acceso, las conocidas WEP, WAP y WAP2.
  2. La shared-key de acceso al router.

Estos dos elementos son completamente independientes. No me voy a meter técnicamente en los distintos tipos de encriptación ya que no son el objetivo del artículo y hay toda la documentación que quieras al respecto. Para nuestro ejemplo vamos utilizar WPA2 con cifrado AES. Recuerda que estos parámetros sólo importan al punto de acceso y al cliente que se conecta, se utiliza para asegurar el canal inalámbrico, el servidor Radius es completamente ajeno a estos mecanismos.

En nuestro escenario el procedimiento descrito anteriormente quedaría como muestra este gráfico.

Dibujo1

Es decir, para que un cliente se conecte a nuestro punto de acceso necesitará las credenciales adecuadas. Una vez el AP las recibe, consulta al servidor Radius si son correctas y debe dejarle pasar, en cuyo caso el cliente ya puede acceder a nuestra red. Cómo os habréis dado cuenta, entre el AP y Radius no he nombrado en ningún momento WAP2 o AES, éstos se utilizan sólamente en lo que en el gráfico superior es el rayo amarillo, el medio inalámbrico. En resumen, la diferencia entre la configuración habitual con shared-key estática y ésta es que permitimos que cada usuario tenga su login independiente, pudiendo cancelar su acceso en cualquier momento, algo que puede ser muy útil en ciertos ambientes, sobre todo corporativos.

Configurando el servidor Radius

Nuestro servidor Radius ya estaba configurado, sólo deberemos hacer un par de modificaciones. Primero añadimos permiso para que se conecte el punto de acceso y pueda autentificar a los clientes, para ello agregamos lo siguiente al archivo /etc/raddb/clients.conf:

  1. client 192.168.100.100 {
  2.     secret = clavesecreta
  3.     shortname = osusnet
  4. }

Donde la ip es la del APsecret es la contraseña que utilizará el AP para conectarse a Radius y shortname un identificador interno. A continuación editamos el archivo /etc/raddb/eap.conf dejando las siguientes secciones de este modo:

  1. default_eap_type = peap
  2.  
  3. tls {
  4.         private_key_password = whatever
  5.         private_key_file = ${raddbdir}/certs/cert-srv.pem
  6.         certificate_file = ${raddbdir}/certs/cert-srv.pem
  7.         CA_file = ${raddbdir}/certs/demoCA/cacert.pem
  8.         dh_file = ${raddbdir}/certs/dh
  9.         random_file = ${raddbdir}/certs/random
  10. }
  11.  
  12. peap {
  13.         default_eap_type = mschapv2
  14. }

Eap es el método de autenticación que se utilizará, en el caso que tratamos será PEAP (conocido también como EAP-MSCHAPv2) y necesita además TLS, por eso debemos añadir los dos en la configuración de Radius. En mi caso, la instalación de FreeRadius crea los certificados necesarios así que no entraré más en detalle sobre este tema, supondremos que existen y funcionan bien. Ya solo queda reiniciar el demonio Radius para que los cambios comiencen a estar visibles.

Configurando el punto de acceso

En este punto hemos terminado la configuración en nuestro servidor Linux. Configuraremos ahora el router, en mi caso un SMC. Tendremos que utilizar un cable ethernet para acceder al router ya que no podremos entrar por wifi hasta que lo tengamos bien configurado. La configuración en tu router será muy parecida a ésta. En las opciones “Wireless” le indicamos que la seguridad será WPA:

router4

En la configuración WPA especificamos los parámetros que hemos acordado, WPA2 y AES. Además le indicamos que no utilizaremos pre-shared key para autenticación sino que se hará a través del protocolo 802.1x. Los demás parámetros no nos importan.

router1Finalmente configuramos las opciones de autenticación 802.1x habilitándola e indicando la dirección IP de nuestro servidor Linux con Radius.

router2Ya está el router configurado. Sólo nos queda hacer lo propio con nuestro cliente inalámbrico. Como hemos escogido WAP2 supondremos que la tarjeta wireless del portátil la soporta, si no ¿por qué la has escogido? :P .

Configurando los clientes inalámbricos

Al buscar las redes inalámbricas disponibles en el portátil veremos la del router que hemos configurado. Por defecto no podremos acceder a ella, debemos indicarle cómo debe autenticarse, para ello vamos a “Configuración avanzada” y en la lista de redes seleccionamos la que nos ocupa y vamos a propiedades.

En la venta que se abre seleccionamos, en la pestaña “Asociación“,  los métodos de autenticación y cifrado que hemos definido:

wifi3En la pestaña “Autenticación” seleccionamos “PEAP” como tipo de EAP y vamos a “Propiedades“:

wifi1En la ventana que se abre eliminamos la selección de “Utilizar certificado cliente” y en el método de autenticación “EAP-MSCHATP v2” vamos a “Configurar”, eliminando en la ventana que se abre la opción que viene señalada por defecto.

wifi0Aceptamos todos los cambios hacia atrás y guardamos la configuración. A los pocos segundos veremos este aviso:

wifi4Parece que funciona :P . Pinchamos en el aviso y nos salta la venta que buscamos:

wifi5Introducimos nuestro usuario y clave de Radius y padentro!

Eso es todo, hemos conseguido el objetivo del artículo, utilizar la misma infraestructura de autentificación para el entorno inalámbrico que la que teníamos para el acceso remoto por VPN.

» Leer más, comentarios, etc...

Picando Código

El mundo de los emoticones – The Big Bang Theory

Septiembre 24th, 2009 - [Enlace local]

Sheldon Cooper :D

Sheldon Cooper :D

Sheldon Cooper :O

Sheldon Cooper :O

En el mundo de los emoticonos yo era dos puntos d mayúscula
Sheldon Cooper :D

Traducido de: In the world of emoticons I was colon capital d

Dos posts sobre Sheldon Cooper no son casualidad. Comenzó la tercera temporada de The Big Bang Theory.

Hoy miré el primer capítulo, y sigue siendo igual de bueno que las dos  temporadas anteriores

Por cierto, parece que Sheldon le está agarrando la mano al tema del sarcasmo, pero ahora está determinado a aprender a dominar el force choke de Darth Vader.

Totalmente recomendable.

Acaba de pasar a dos puntos o mayúscula
Rajesh Koothrappali

Traducido de: He just went colon capital o

» Leer más, comentarios, etc...

Ingenieria de Software / Software Engineering

Crystal Clear, Crystal Yellow, Crystal Orange

Septiembre 24th, 2009 - [Enlace local]

Ya había escuchado de Crystal y también sabía que era de la autoría de Alistair Cockburn, pero no sabía mas, leyendo mis feeds me encuentro con este interesante post

Crystal Methodologies y los equipos de desarrollo

Crystal son parte del grupo de Metodologías Ágiles como SCRUM y XP

» Leer más, comentarios, etc...

Picando Código

Cisplatino: Cómic uruguayo

Septiembre 23rd, 2009 - [Enlace local]

Cisplatino #01

Cisplatino #1

Hace mucho tiempo que no tengo el gusto de escribir sobre cómics uruguayos, desde Cómics uruguayos online hace más de un año. (Por cierto, la página de Cómics Adinet se encuentra actualizada con algunos números más desde aquel post..)

Hoy les cuento sobre Cisplatino, una novela gráfica uruguaya producida por editorial Apocalipta. Conocí Cisplatino por la televisión, en un programa nacional. Fue hace mucho tiempo, el año pasado o el anterior. En aquel momento hablaron seguramente Pablo Zignone y Diego Tapié, sus creadores.

Cuando vi las imágenes, y escuché cuál era la idea, fui bastante pesimista. Pensé: “Es demasiado ambicioso, va a quedar en la idea, es una utopía“. Por suerte, me equivoqué y me taparon la boca, y hoy en día Cisplatino es una realidad. Con un amigo nos encontramos el #3 de casualidad en un quiosco, la compramos, y ordenamos online el #1 y #2 a Apocalipta. Cisplatino ya lleva editado 4 números, y ayer me llevé la alegría de encontrar el último número en una revistería del centro de Maldonado.

Cisplatino #2

Cisplatino #2

El arte es excelente, inspirado en el trabajo de Alex Ross, un ilustrador y dibujante de historietas estadounidense aclamado por el hiperrealismo de su trabajo. Los personajes están representados por uruguayos comunes y corrientes que podemos encontrar en las calles de Montevideo. Ellos son fotografiados y disfrazados para posteriormente dibujar las viñetas a partir de las fotos. Tanto el arte como la presentación de la revista, gozan de una calidad impactante. Hacen que un aficionado del cómic disfrute de tan solo contemplarlas.

Además de la historia principal, cada edición de Cisplatino incluye Cisplatino Visiones. Es una revista en blanco y negro que complementa la novela gráfica, con historias paralelas, y arte por artistas invitados. Respecto a esto, hacen un llamado desde el #1 a todos los artistas nacionales para participar de esta versión del universo de Cisplatino. Todo estilo de expresión artística es bienvenido, así que si están interesados, escriban a mivision arroba apocalipta.com.

Cisplatino #3

Cisplatino #3

Al empezar a leer el primer número de Cisplatino, recordé el mundo que me gustaba imaginar del Montevideo Colonial del que nos enseñaban en la escuela. Tiene esa mística de viaje en el tiempo de un lugar real. Para que se vayan enganchando con la historia, este es el prólogo copiado de la página de Cisplatino en Apocalipta:

En 1822 los Últimos blandengues de la banda oriental en régimen secreto durante la cisplatina viajaron a los andes, su misión era esconder en el lugar más remoto  del planeta, un objeto de poder individual inexplicable.

Antes de llegar a su destino desaparecieron.

Hace dos meses un grupo de exploradores encontró el cadáver de un soldado de las fuerzas armadas antiguas. Hasta los más escépticos integrantes de la expedición juran haber sentido una extraña Sensación de paz que los envolvió al aproximársele…

Y así arranca el primer número, que trata más o menos de lo siguiente (SINOPSIS 1):

El cadáver intacto de un ex Blandengue de Artigas de hace 200 años, es traído de los Andes a Montevideo como pieza invaluable para la ciencia. Bajo la supervisión del Dr. Viacava, nadie tuvo acceso a ningún tipo de información hasta que llegara el día de la autopsia; evento que jamás sucedió ya que la noche antes el Dr. Viacava separalizó al ver el cuerpo de aquel blandengue retorcerse en un grito, al mismo momento que su corazón comenzaba a latir.

El Dr. Viacava actuó con el instinto que sólo los hombres de bien poseen, olvidó cualquier tipo de miedo que pudiera interferir en sus acciones; al ver la mirada de aquel sujeto el horror se convirtió en compasión e inmediatamente rasgó su túnica y le vendó los ojos.

Como pueden leer, la historia está invadida por la mitología de la historia uruguaya, siendo Cisplatino un ex Blandengue de la época de Artigas.

Cisplatino #4

Cisplatino #4

Les recomiendo visitar el sitio de Apocalipta, que se encuentra muy completo en cuanto a contenidos: información de las ediciones, noticias, preguntas frecuentes, artbooks oficiales, canciones, y más: www.apocalipta.com. Incluso pueden ver VideoBlogs sobre la creación del cómic: sesión de fotos, storyboards, creación del arte, y más. En la tienda online, pueden encargar los 4 números ya disponibles. Para residentes de Uruguay, pueden pedirlas con un giro por Abitab. Internacionales consulten, ya que deben tener contemplados los pedidos desde afuera del país.

Qué orgullo nos da cuando compatriotas realizan un trabajo de tan buena calidad como este. Espero estar escribiendo sobre próximos números de Cisplatino, y más ediciones de Apocalipta. Hasta ahora han hecho un trabajo excelente, y con suerte eso se estará reflejando en su crecimiento. Desde acá mis felicitaciones y agradecimiento a Pablo Zignone y Diego Tapié, por llevar adelante un proyecto tan ambicioso y exitoso desde mi punto de vista. ¡No se pierdan este cómic!

Les dejo uno de sus videoblogs, donde muestran el proceso de realización del arte, desde el lápiz hasta la pintura. Tomando mate dibujando tranquilos:

» Leer más, comentarios, etc...

Picando Código

¿Separados al nacer? Sheldon Cooper y Rodríguez Zapatero

Septiembre 23rd, 2009 - [Enlace local]

Una de las cosas que noté por allá cuando comencé a mirar The Big Bang Theory (por cierto, ¡comenzó la tercera temporada!), fue el parecido del personaje Sheldon Cooper (Jim Parsons) con José Luis Rodríguez Zapatero el actual presidente del Gobierno de España. Tienen el mismo peinado, las cejas tienen un ángulo similar, y algunas expresiones en la cara los hacen más parecidos. Hace poco recordé esto, y acá muestro las evidencias:

Prueba #1 – Sonrisa similar:

Sheldon Cooper

Sheldon Cooper

Rodríguez Zapatero

Rodríguez Zapatero

Prueba #2 – Misma reacción ante una perturbación en la fuerza:

Sheldon Cooper

Sheldon Cooper

Rodríguez Zapatero

Rodríguez Zapatero

¡Son bastante parecidos!

» Leer más, comentarios, etc...

Picando Código

Confirmado: GIMP 2.8 en una sola ventana

Septiembre 23rd, 2009 - [Enlace local]

GIMP Development

GIMP Development

La semana pasada comentaba sobre la posiblidad de que GIMP cambiara su interfaz de usuario a una con ventana única. En GimpUsers.com confirman la noticia, GIMP 2.8 tendrá la opción de usar una única ventana. Parece que 2.8 no va a ser una versión más de GIMP, sino una que realmente revolucionará la forma en que se usa (y vendrá muy bien para su adopción masiva).

Peter Sikking es el artista de interfaz e interacción de GIMP. Escribió un post en su blog respecto a las nuevas características de la interfaz de usuario de GIMP. Basado en el Brainstorming que se hizo para la IU de GIMP:

La alta cantidad de contribuciones en la categoría ventana-única confirma que esto es un tema mayor donde se necesita hacer algo al respecto. Las varias formas que toman las contribuciones nos demuestran que es necesaria una medida de flexibilidad y configurabilidad

Dos puntos importantes que destacan en Gimp Users:

  1. El modo de ventana única vendrá con 2.8. Será desarrollado principalmente por Martin Nordholts (desarrollador que sugirió implementar la ventana única en 2.8).
  2. Muy importante, el modo de ventana única no será obligatorio. Por lo tanto, quienes quieran seguir usando GIMP como hasta ahora, podrán seguir haciéndolo, y otros podrán optar por ventana única, según el caso.

Me parece muy acertado que lo hagan personalizable según el caso, ya que mantienen contentos tanto a los usuarios que se vienen quejando con este asunto desde hace años, como a aquellos que están conformes con el estado actual de la IU. En unos mock-ups en el blog de Peter Sikking, muestra otras mejoras generales en la usabilidad:

En modo ventana única, cada documento aparecerá en una pestaña

En modo ventana única, cada documento aparecerá en una pestaña

La barra de herramientas y el inspector pueden ser "desprendidos"

La barra de herramientas y el inspector pueden ser "desprendidos"

Acá la barra de herramientas queda pegada al costado, mientras que el inspector queda flotante:

Acá la barra de herramientas queda pegada al costado, mientras que el inspector queda flotante

Por último, los inspectors pueden ser multi columnas, permitiendo más menúes

Por último, los inspectors pueden ser multi columnas, permitiendo más menúes

Esto son solo prototipos, no es el resultado final. Sin embargo, demuestran el interés de los desarrolladores de hacer de la interfaz de GIMP, su punto flojo hasta ahora, algo totalmente personalizable por cada usuario. También comenta sobre un nuevo tipo de ventana estilo “Polaroid” para poder comparar imágenes, y un thumbnail de las imágenes en lugar de pestañas. Aparentemente el objetivo es lograr total flexibilidad. El resto del artículo en su blog: GIMP redux, single?window mode

No se sabe exactamente cuándo sería lanzada la versión 2.8 de GIMP, pero se espera que sea este año. Habrá que estar atentos y ver cómo evoluciona.

» Leer más, comentarios, etc...

Picando Código

Día del progamador 2009

Septiembre 22nd, 2009 - [Enlace local]

Este año me olvidé de postear el 13 de setiembre, fue ¡el día del programador!

Feliz día atrasado a todos los colegas programadores. Este año un poco tarde, por haber sido domingo pasé lejos de la PC. Es interesante ver cómo han cambiado las cosas estos últimos años:

Día del programador 2007
Celebré programando en el trabajo con .NET, y algoritmos en C en casa.

Día del programador 2008
Celebré con Java

Este año empecé programando poco y nada, ya que fui metiéndome en el rol más de gestión en el trabajo. Sin embargo, en los últimos meses volví a programar, y ahora estoy trabajando a diario con PHP (y peleando con jQuery, que no me he tomado el tiempo de aprender bien…). Reivindiqué mi condición de programador :P

¿Ustedes cómo vienen? Me gustaría ver en qué andan aquellos lectores que dejaron comentarios en la entrada de 2007 y 2008, así como todos los demás lectores de Picando Código.

¿En qué están programando?

¿Qué andan aprendiendo?

¿Alguno se ha “convertido en programador” recientemente?

» Leer más, comentarios, etc...

Buayacorp

Seguridad: software libre vs software privativo

Septiembre 22nd, 2009 - [Enlace local]

Si bien es cierto que llevo desfasado en temas de seguridad y que seguramente soy uno de los menos indicados para hablar de estos temas, me llama mucho la atención cuando alguien opina sin mucho conocimiento del tema en cuestión. Esta vez, en la lectura que suelo hacer diariamente, encontré un artículo que habla sobre la seguridad de software libre, aunque erróneamente el título parezca indicar que sólo se refiere a WordPress.

El problema es que el modelo de código abierto permite que hackers y casi cualquier otra persona se pueda dar el lujo de excavar hasta llegar al núcleo del código de todos los foros y blogs que funcionan a través de dicha plataforma, permitiéndoles descifrar múltiples maneras de irrumpir en la sagrada información de sus usuarios.

¿Qué hacer al respecto?

Hay tres cosas que puedes hacer si no puedes soportar las debilidades del sistema open source:

  1. Utilizarlo, pero pagarle a alguien más para que te lo mantenga.
  2. Utilizar un servicio de código cerrado y ser estricto para mantenerlo así.
  3. Constrúyalo usted mismo. Haga uso de su conocimiento para evitar que otras personas puedan tener algún tipo de influencia sobre la vulnerabilidad de su información.

Yo diría que muchos se ahogan en un vaso de agua, porque olvidamos que el código abierto es por naturaleza vulnerable a hacks, ataques de “gusanos informáticos” y cualquier otra variedad de amenaza que la web nos ofrece hoy en día. Mientras el código esté expuesto, el proyecto que se proponen muchos de romperlo y penetrarlo suena tanto divertido como perverso, pero es algo que todos nosotros ya debimos de haber entendido hace un buen rato, para evitar todo el barullo que se suele hacer en torno al tema de seguridad.

El autor del artículo usa la típica falacia de que si el código está disponible para todos, entonces es más inseguro. En el poco tiempo que me involucré en el tema de seguridad, me quedó bastante claro que si alguien está determinado a vulnerar tu aplicación o sistema, lo va hacer independientemente de si el código está disponible o no.

En mi opinión, creo que la mejor forma de hacer que las aplicaciones de software libre sean más estables, es que justamente seamos nosotros, los usuarios, los que participemos en este proceso identificando bugs, ayudando a otros a mantenerse actualizados o, si no se cuentan con el tiempo o conocimientos necesarios, colaborando económicamente.

» Leer más, comentarios, etc...

Cerebro en la Sombra » Técnico

Cómo realizar backups centralizados de sistemas Windows desde Linux

Septiembre 22nd, 2009 - [Enlace local]

Hoy voy a contar cómo tengo montado en mi casa el sistema de copias de seguridad para los equipos de escritorio basados en Windows, concretamente para mi portátil.

Lo primero, obviamente, es compartir las carpetas o unidades de las que vas a querer hacer copia, en mi caso la unidad d:\ completa y mi escritorio, tengo todos los documentos y archivos centralizados en esas dos rutas. Lógicamente no debes hacerlas públicas, sino cualquiera que tenga acceso por red a tu equipo podrá entrar a todo, hay que compartirlas y punto, el que quiera entrar que se autentifique como hará nuestro sistema.

Las copias están centralizadas desde el servidor Linux del que ya os he hablado otras veces, basado en CentOS5. En este equipo tengo un disco duro USB con dos particiones, una ext3 para copias del propio servidor y otra NTFS para las de los equipos Windows. Para evitar pérdidas por cortes, el disco se monta y desmonta automáticamente cuando se necesita a través del sistema autofs, de este modo cada vez que se acceda a la ruta predefinida se montará el disco y pasado un tiempo de inactividad se desmonta. Veamos primero cómo preparar este sistema.

Lo primero que necesitaremos son los drivers para acceder a partificiones NTFS desde Linux, yo utilizo ntfs-3g. En mi caso es tan sencillo como hacer:

  1. yum instal ntfs-3g

Mi equipo tiene varias rutas de automontaje, vamos a ver las que nos interesa que son las del disco usb. Primero configuramos los dos archivos necesarios:

/etc/auto.master

  1. /mnt/backup /etc/auto.backup

/etc/auto.backup

  1. backupusb       -fstype=auto    :/dev/sdb1
  2. backupntfs      -fstype=ntfs-3g,rw,fmask=666,dmask=777,gid=users,nls=iso8859-1,locale=es_ES     :/dev/sdb2

En el primero indicamos que nuestras unidades se van a montar en /mnt/backup y que lea la configuración del segundo archivo mientras que en éste especificamos qué montar y cómo hacerlo.

Como veis he definido dos puntos de montaje correspondientes a las dos particiones. El primer parámetro indica la “carpeta” dónde los montará dentro de la definida en master, en este caso /mnt/backup/backupusb y /mnt/backup/backupntfs. La importante en nuestro caso es la segunda donde indicamos el tipo de archivos y el lenguaje en el que están los nombres, imprescindible para que se lean bien los acentos y eñes del castellano.

Ya sólo debemos iniciar el demonio autofs y probar las rutas.

  1. service autofs status

Si ahora intentamos acceder a /mnt/backup/backupntfs deberíamos poder entrar a la unidad del disco correspondiente y ver su contenido. Ya tenemos la mitad del trabajo resuelto.

Vayamos ahora con el backup propiamente dicho. Creamos el punto de montaje de la unidad que vamos a copiar, en este caso /mnt/portatil. Ahí montaremos temporalmente la unidad remota para hacer las copias. Creamos además en la partición del disco USB el directorio donde meteremos el backup, en mi caso /portatil. Ya estamos preparados para copiar. Ah no, falta un detalle. ¿Cómo lo hacemos si no queremos copiar los tropecientos Gb cada vez que se haga la copia?. El socorrido rsync viene en nuestra ayuda. Rsync permite sincronizar datos entre dos rutas sin copiarlo todo, simplemente elimina lo que ya no existe  y copia lo nuevo y lo que ha cambiado sin tocar lo que no ha variado, con lo que en un ambiente normal será poco lo que hay que copiar.

Este sería mi script.

  1. #!/bin/sh
  2. PORTATIL=192.168.0.79
  3. fecha=`date +%Y-%m-%d`
  4.  
  5. #MONTAMOS EL USB
  6. if test -d "/mnt/backup/backupntfs"
  7.     then
  8.         echo "Dispositivo USB correcto"
  9.     else
  10.         echo "Error en dispositivo de backups NTFS $fecha" | mail -s "Error montando dispositivo USB backup NTFS" tu@correo.es
  11.         exit;
  12.     fi
  13. echo "MONTAMOS EL PORTATIL"
  14. mount -t cifs -o iocharset=utf8,username=usuario,password=clave  //$PORTATIL/D /mnt/portatil
  15. if [ $? -ne 0 ]
  16.     then
  17.         echo "ERROR MONTANDO EL PORTATIL/D"
  18.     else
  19.         #copiamos
  20.         echo "COPIAMOS"
  21.         /usr/bin/rsync -alv –modify-window=1 –delete –recursive –exclude "RECYCLER"exclude="\$RECYCLE.BIN" –exclude "System\ Volume\ Information"  /mnt/portatil /mnt/backup/backupntfs/portatil
  22. fi
  23. echo "DESMONTAMOS"
  24. umount //$PORTATIL/D

Lo primero que hago es comprobar que el disco USB está disponible, básico para poder hacer el backup :P . A continuación montamos la unidad remota en el directorio que creamos antes, /mnt/portatil. Esto lo hacemos con:

  1. mount -t cifs -o iocharset=utf8,username=usuario,password=clave  //$PORTATIL/D /mnt/portatil

Los parámetros importantes son los del medio, le indicamos que el juego de caracteres sea UTF-8 y los datos con los que autentificarse en el portátil.  En este punto podríamos hacer un ls -l /mnt/portatil y deberíamos ver los archivos de la unidad D:\ del portátil.

A continuación ejecutamos la sincronización. La primera vez que se lance tardará bastante ya que ahí sí que debe copiar todos los archivos de la unidad origen en el portátil a la del backup. Cuando termine de sincronizar el script desmontará la unidad del portátil y el autofs hará lo propio automáticamente con la del USB. En el rsync añadimos los parámetros adecuados para que excluya algunas carpetas predefinidas de Windows, como la papelera, y muy importante, el parámetro –modify-window=1 para salvar la diferencia que tiene Windows con la fecha de modificación de los archivos, Windows utiliza sólo valores pares, lo que generaría la copia de muchos más archivos de los que realmente han sido modificados.

Vayamos un poco más lejos. Quiero poder recuperar algún archivo borrado, no sea que me equivoque y me cargue algo. Con rsync todo es muy sencillo, le indicamos que los archivos que vaya a eliminar los mueva a otra ruta. Para ello añadimos el parámetro:

  1. –backup-dir=/mnt/backup/backupntfs/incremental/portatil/$fecha

Con esto conseguimos que en la carpeta /incremental/portatil de la partición NTFS del disco USB se mantenga un histórico por fecha de los archivos eliminados. El comando entero quedaría del siguiente modo:

  1. /usr/bin/rsync -alv –modify-window=1 –delete –recursive –backup-dir=/mnt/backup/backupntfs/incremental/portatil/$fecha –exclude "RECYCLER"exclude="\$RECYCLE.BIN" –exclude "System\ Volume\ Information"  /mnt/portatil /mnt/backup/backupntfs/portatil

De este modo tenemos en el disco todo, por un lado la instantánea de la unidad al momento de hacerla y en otro un histórico diario por día, pudiendo recuperar todo lo que queramos.

Sólo nos queda añadir el script al crontab para que se ejecute cuando creamos oportuna, una vez por semana por ejemplo. Yo crearía también un script que limpie las copias de los archivos eliminados cada cierto tiempo, cada mes o cada dos meses, para que no crezca en exceso el espacio ocupada por la “basura“.

Siguiendo este mismo ejemplo podemos ahora hacer copias de las copias para tener varias copias distribuidas no sea que se nos incendie el piso y lo perdamos absolutamente todo :P .

» Leer más, comentarios, etc...

Picando Código

Descarga gratuitamente el número de verano de Linux+: Seguridad y Ethical Hacking

Septiembre 22nd, 2009 - [Enlace local]

La revista Linux+ ofrece para descargar gratuitamente su número de verano completo:

Revista Linux+ DVD verano 2009

Revista Linux+ DVD verano 2009

Pueden hacerlo desde el sitio web de Linux+, donde se les pedirá únicamente su dirección de correo electrónico para registrarse. En caso de ya estar registrados, solo deben loguearse y descargarla directamente.

Un número dedicado a Hacking, segurirdad y criptografía.

» Leer más, comentarios, etc...

xailer.info (esp)

Formularios con estilo

Septiembre 22nd, 2009 - [Enlace local]

Algunas de las aplicaciones y utilidades más populares permiten modificar su apariencia usando skins o directamente rompen con el concepto clásico de ventana rectangular para cambiar su aspecto visual de manera que resulten más agradables a la vista y más fáciles de usar.

En este artículo vamos a ver una técnica que nos permitirá vestir los formularios de nuestras aplicaciones con bitmaps e incluso cambiar la vieja forma rectangular por otra que nos guste más, de modo que podemos definir bordes redondeados e incluso “agujeros” dentro de un formulario.

Empieza la función

La función SetFormShape() es la encargada de asignar la imagen en tiempo de ejecución y de calcular la transparencia y las dimensiones del formulario. Recibe los siguientes parámetros:

oForm: el formulario al que le queremos cambiar la apariencia.

oBitmap: un objeto TBitmap con la misma imagen que hemos asignado anteriormente a la propiedad oPicture del formulario.

nColor: el color que servirá para calcular la transparencia. En la primera captura de este artículo se puede observar que tiene un borde de color negro, por tanto, si establecemos el valor de nColor a clBlack, este color “desaparecerá” de la imagen en tiempo de ejecución.

Un proyecto de ejemplo

Lo primero será crear un nuevo proyecto y añadir un formulario al que le establecemos su propiedad nBorderStyle a bsNONE y le asignamos una imagen mediante su propiedad oPicture; de este modo será más sencillo distribuir los controles, puesto que la propia imagen nos servirá de guía para posicionarlos.

shape1.jpg

Luego de esto, añadimos los controles que necesitemos tal como hacemos normalmente en cualquier formulario de nuestras aplicaciones. En este ejemplo será un formulario típico de entrada a una aplicación.

shape2.jpg

Una vez completados los pasos anteriores, necesitamos informar al formulario de la apariencia que tendrá en tiempo de ejecución, así que tras terminar el diseño, seleccionamos su evento OnInitialize y escribimos el siguente código:

  1. METHOD FormInitialize( oSender ) CLASS TForm1
  2.  
  3.    LOCAL oBitmap := TBitmap():New( "Login.bmp" )
  4.  
  5.    SetFormShape( Self, oBitmap, clBlack )
  6.  
  7.    oBitmap:Destroy()
  8.  
  9. RETURN Nil

Personalizar el formulario

Una vez que hemos terminado el diseño del formulario debemos decidir qué posibilidades le daremos al usuario para interactuar con él, esto es, moverlo con el ratón, permitirle cerrarlo con ESC, etc.

Si queremos que el usuario pueda desplazar el formulario con el ratón, necesitamos definir su evento OnLButtonDown y añadir el siguiente código:

  1. METHOD FormLButtonDown( oSender, nKeyFlags, nPosX, nPosY ) CLASS TForm1
  2.  
  3.    PostMessage( ::Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0 )
  4.  
  5. RETURN Nil

Del mismo modo, si permitimos que pueda cerrarlo con la tecla ESC:

  1. METHOD FormKeyDown( oSender, nKey, nFlags ) CLASS TForm1
  2.  
  3.    IF nKey == VK_ESCAPE
  4.       ::Close()
  5.       RETURN 0
  6.    ENDIF
  7.  
  8. RETURN Nil

Una vez que hemos terminado todo el diseño, ya podemos probarlo, así que compilamos y:

shape3.JPG

Se puede observar cómo el área negra de la imagen inicial ha desaparecido y ha sido reemplazada por una transparencia.

Notas

En próximas revisiones añadiré soporte para otros formatos de imágenes así como la posibilidad de establecer la imagen directamente desde del IDE, sin tener que usar el evento OnInitialize del formulario.

El ZIP testshape.zip incluye un test ya compilado con varios formularios de ejemplo y la librería FormShape.lib para enlazar con las aplicaciones.

» Leer más, comentarios, etc...

Fetishcode...Thinking in objects

Despliegue de Aplicaciones en ADF 11g.

Septiembre 22nd, 2009 - [Enlace local]

A

» Leer más, comentarios, etc...

Fetishcode...Thinking in objects

Cambiar splash de Cargando en ADF 11g.

Septiembre 21st, 2009 - [Enlace local]

A

» Leer más, comentarios, etc...

Información legal y técnica