Jul 11 2008

Una observación a Ruby y Ruby on Rails (RoR)

iceman

Que tal comunidad, en verdad bastante tiempo sin postear, pero bueno he aquí algo que me es interesante y he decidido compartir…

En algunos post de mis compañeros de ihtoa ya se ha hablado de este gran lenguaje de programación, un poco de su historia y sus excelentes características como lenguaje de programación, resumiendo rápidamente, ruby tiene una sintaxis muy fácil de entender y aprender, así como muy parecida a la de python. Este lenguaje ha venido ganando popularidad gracias al uso que a tenido sobre todo en la web, por medio del framework RoR y nadamas (creo yo).

Para los que nos lean y no sepan la diferencia de Ruby y RoR, ahí va rápido:

Ruby: Lenguaje de programación tal como Java o PHP, el cual es interpretado.

Ruby on Rails: Framework para desarrollar aplicaciones web siguiendo el patrón MVC(Modelo Vista Control) construido tomando como base a Ruby, tal como Struts(de java) o Symfony(de PHP).

Mucho se ha comentado acerca de Ruby y Ruby on Rails para el desarrollo de aplicaciones web orientadas a la web 2.0, en donde se habla de todas las bondades de que ruby tiene como lenguaje… haciendo a un lado a lenguajes potentes como PHP o aun mas J2EE :O . Un par de veces he oído “RoR supera fácilmente a PHP o Java”,...para comenzar la comparación es totalmente errónea, no podemos comparar un framework como RoR contra el lenguaje PHP… en todo caso sería

Ruby Vs PHP

Ruby Vs Java

…ó

Ruby on Rails Vs PHP On Zend Framework

Ruby on Rails Vs PHP On Symfony

Ruby on Rails Vs Struts On Java

Así si se puede ;)

Bien, durante una investigación que realice para cierta materia en mi escuela, me di a la tarea de profundizar en el lenguaje Ruby para averiguar que tanta verdad había. Ustedes y yo sabemos que en estos caminos de la informática no hay algo 100% bueno o como dicen 100% seguro, así que me di a la tarea de encontrarle algunos detalles al tal ruby… lo primero que hice fue aprenderlo hasta cierto punto para poder hacer pruebas y empezar a jugar cada vez mas serio con este…me di cuenta que es un lenguaje en verdad bastante poderoso, fácil de aprender y que implementa la POO de una forma excelente. Después de ello, empece a manejar un poco de RoR para probar que tal iban las cosas sobre web. Y me di cuenta que en verdad el desarrollar una aplicación web con el framework es bastante rápido y sencillo, y de verdad simplificaría las cosas en un proyecto a gran escala. Por otra parte no tuve la necesidad de estudiar mucho de PHP ya que amplia mente lo he usado en algunos trabajos incluyendo los frameworks para MVC de PHP.

Después investigue artículos indexados, noticias, etc. Sobre RoR y otros lenguajes y he aquí mis puntos de vista personales comenzando desde lo que yo creo que es pura publicidad hasta lo que yo creo que es verdad…

La publicidad :D

37signals (de RoR) hace una campaña en donde si bien no ataca agresivamente a PHP si lo hace con J2EE, tal ves no vea a PHP tan fuerte o quizás no quiere darle importancia.

Por otra parte PHP con Andi Gutmans tampoco ve a RoR peligrosamente o al menos tampoco lo demuestra pero dice algo así de: “Sentimos que PHP con Zend Framework es superior a RoR, y mientras otras personas lo vean de otra forma en cuanto a sus funcionalidades, definitivamente significa que Ruby estuvo siendo mejor publicitado.

El diseño ingenioso del sitio de RoR y el marketing viral usado por 37signals le dio a RoR un mejor boca a boca que a PHP. Afortunadamente, esto ayuda a elevar la imagen de Zend y a incitar aun mas el uso de su Framework.”

Si Ruby on Rails es lo mejor para web 2.0 debería ya haber muchas demostraciones y sitios web con este framework, pero no es así los ejemplos son contados y no digo ya el famoso “construya un blog en 15 minutos”, si no algo mas en serio, algo mas profesional. RoR ya tiene algo de tiempo y sus sitios son pocos sin mencionar que muchos de ellos son de la misma 37signals :S. (Se que el proyecto tal ves esta en sus fases iniciales y requiera cierto tiempo para crecer, pero mi objetivo es enfatizar lo que es hoy en día lo mas directo posible).

Potencia ;)

Muchos “developers” como ya dije, erróneamente dicen RoR es más organizado y rígido a la vez que PHP es mas flexible a la vez de desordenado.

Pero Ruby y PHP son lenguajes Scripting con propósitos parecidos, con algo de diferencia en los enfoques, estando ruby mas enfocado a POO y php con un sentido un poco mas estructurado. Pero la organización que Rails le brinda a ruby bien y fácilmente se la puede otorgar otro framework a php ;) .

Por otro lado una debilidad de ruby aveces poco conocida o no muy publicitada xD es su bajo rendimiento en cuanto a la velocidad de ejecución :O, pruebas se han hecho demostrando esto, y aveces es notable en una aplicación grande, ciertas pruebas que ralizé no reflejan mucho esta debilidad a menos que sugiera parámetros considerables.

Benchmarks en diversos equipos y varias rutinas señalan a Ruby como un lenguaje lento, en comparación con PHP4, y más lento aun en comparación a PHP5. Pero, posee una excelente gestión de memoria, superior a las 2 versiones de PHP en el mercado actual.

En mi opinión personal seria genial hacer uso de ambos lenguajes, por un lado tener a Ruby on Rails para cierta parte de la aplicación, aprovechando su gran simplicidad de desarrollo, pero contar con php para partes mas delicadas las cuales requieran respuestas mas veloces y optimas. Como siempre pienso, hay que usar y saber de todo…

Saludos,

Adrián Pastor López Monroy


Jul 11 2008

Agilizar Windows Vista

LuGt

Dado que a hora la mayoria de las computadoras que salen a la venta vienen con windows vista, y ya que este hace uso de mechos recursos, aqui hay unos consejos para agilizarlo y para que puedas tener mayores recursos para otras tareas, pero el mejor consejo es que cambies de sistema operativo, una de las que te recomiendo una de las distribuciones de Linux, y con esta te evitas de todas estas cosas.

widowsVista

  • Desactivar la Sidebar: Dependiendo de la cantidad de gadgets que tengamos, la Sidebar de Vista puede ocupar desde 15 y hasta 80 MB de RAM (e incluso más), además de un porcentaje de procesador que variará de acuerdo a la clase de artilugios que tengamos instalados
  • Desactivar las vistas en miniatura: Así como Windows XP nos muestra miniaturas de nuestras imágenes para que tengamos una idea del contenido de ellas sin abrirlas, Windows Vista hace lo mismo pero con casi todos archivos de uso frecuente (PDF, documentos de Word, vídeos, música, etc.), lo cual resulta muy práctico en la mayoría de los casos, pero que en PCs con procesadores antiguos ralentiza notablemente la velocidad de carga en el Explorador de Windows. Para desactivar esta función vamos al Panel de Control, hacemos clic en Apariencia y Personalización, vamos a las Opciones de Carpeta, y en la pestaña Ver activamos la casilla “Mostrar siempe íconos, nunca vistas en miniatura”.
  • Elegir un antivirus que ocupe pocos recursos: El antivirus que vamos a usar es más bien una elección personal, pero trata de no irte por aquellos que casi caen en la categoría de whaleware (como Norton o Panda). Es preferible usar antivirus livianos como NOD 32 y Kaspersky!. Tampoco se recomienda instalar “suites de protección total” (aquellas que integran antispyware, firewall, etc.) ya que Windows Vista ya incluye excelentes herramientas de seguridad, solo le falta que le instalemos un antivirus (e incluso si tenemos el Vista de 64-bits podemos dejar el PC sin antivirus, segun los desarrolladores de Microsoft).
  • Activar el modo de rendimiento avanzado: Vista incluye un “modo de rendimiento avanzado” que podemos activar en los discos duros SATA para hacer que la escritura de datos sea más rápida, esto gracias a que se pasan los datos a la caché de la memoria RAM antes de escribirlos en el disco rígido. Para activarlo debemos ir al Administrador de dispositivos (escribe “dispositivos” en la caja de búsqueda del Menú Inicio), seleccionamos el Disco Duro en el que deseamos activar la opción, hacemos clic en Propiedades y vamos a la pestaña Directivas. Ahí activamos la casilla que dice “Habilitar rendimiento avanzado”. Ten en cuenta que al hacer eso se aumenta el riesgo de perder información frente un corte de energía, asi que si no cuentas con un sistema de respaldo es conveniente dejarla desactivada.
  • Desactiva el User Access Control (UAC) Control de cuentas de usuarioUna de las características que más molestan al empezar a utilizar Windows Vista es el UAC (User Control Access). Es el causante de mensajes molestos como “Un programa no identificado desea tener acceso a este equipo” o “Necesita confirmar esta operación”.

- Haz click en Inicio y luego en Panel de Control
- Ahí ve a Cuentas de usuario y protección infantil
- Después a Cuentas de usuario
- Entra a Activar o desactivar el Control de cuentas de usuario, y desmarca la casilla “Usar el Control de cuentas de usuario (UAC) para ayudar a proteger el equipo”.

  • Desactiva servicios innecesarios que se ejecutan al inicio de Windows VistaLos pasos y los servicios que podemos desactivar son los siguientes (si alguno de ellos lo necesitas no lo desactives):

- Entra al Panel de Control
- Selecciona Herramientas Administrativas
- Elige Configuración del sistema
- Haz click en la pestaña de servicios
- Puedes desactivar sin ningún problema los siguientes servicios:

-Servicio y soporte técnico
-Temas
-Informes de errores
-Centro de Seguridad
-Registro y alertas de rendimiento
-Registro Remoto
-Office source engine
-Escritorio remoto
-Registros de sucesos
-Servicio de cifrado

  • Desactiva características innecesarios de Windows VistaHay algunas caracteristicas que trae Windows Vista que algunas personas no necesitan, y de pueden desactivar para mejorar el rendimiento del sistema, los pasos y las características son las siguientes:

Ve a Panel de Control luego a Programas y características:
- Selecciona características:
- Luego en habilitar o deshabilitar características de Windows:
- Puedes desactivar los siguientes:
-Servicio de indexado
-Compresión difrencial remota
-Componentes opcionales para TabletPC
-Servicio de replicación Windows DFS
-Fax de Windows
-Windows Meeting Space

  • Agrega una memoria flash USB de 2 GB o más para aprovechar las ventajas de Windows Ready Boost (Memoria caché adicional)ReadyBoost deja a usuarios utilizar un dispositivo de memoria Flash como memoria RAM Virtual para mejorar el sistema sin tener que abrir la PC, Windows ReadyBoost puede mejorar el funcionamiento del sistema porque puede recuperar los datos guardados en la memoria Flash más rápido que recuperar de el disco duro, disminuyendo el tiempo de espera para que tu PC responda. Pasos para activar ReadyBoost.

- Inserta una memoria flash USB
- Haz click en inicio y luego en equipo
- Haz click derecho sobre la memoria
- Selecciona la pestaña ReadyBoost
- Elije utiliar este dispositivo
- Selecciona el espacio que le quieras asignar


Jul 11 2008

GPG II

Nick

Manejo de archivos

Cifrado

Supongamos que tenemos un archivo llamado repub13.txt en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt, lo seleccionamos, y le damos click con el botón secundario del mouse.
    Cifrado
  3. Damos click en la opcion Encrypt…
    Selección Llave
  4. Seleccionamos la llave que deseamos usar para cifrar el archivo y damos click en OK. Listo, tenemos nuestro archivo cifrado.
    Cifrado completo

Hay que notar que lo ciframos usando nuestra llave publica, es decir, solo podrá ser descifrado con nuestra llave privada, solo lo podremos descifrar nosotros. Si por el contrario lo hubiéramos cifrado con la llave publica de Nicolas Sarmiento, solo él, podría descifrarlo.

Descifrado

Supongamos que tenemos un archivo llamado repub13.txt.pgp en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt.pgp, lo seleccionamos, y le damos click con el botón secundario del mouse.Decrypt File
  3. Damos click en la opción Open with “Decrypt File”.Password
  4. Proporcionamos la contraseña de la llave privada y damos click en OK. Listo, tenemos nuestro archivo descifrado.File Decrypted

Hay que notar que siempre que se cifra un documento se usa la llave publica, no la privada.

Firmado

Supongamos que tenemos un archivo llamado repub13.txt en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt, lo seleccionamos, y le damos click con el botón secundario del mouse.
    Sign
  3. Damos click en la opcion Sign.Choose Key
  4. Seleccionamos la llave que deseamos usar para firmar el archivo y damos click en OK.
    Password
  5. Proporcionamos la contraseña de la llave privada y damos click en OK.
    File signed
  6. Listo, tenemos nuestro archivo firmado.

Para firmar un documento siempre se usa una llave privada.

Verificar firma

Supongamos que tenemos un archivo llamado repub13.txt.sig en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt.sig, lo seleccionamos, y le damos click con el botón secundario del mouse.Verify Signature
  3. Damos click en la opción Open with “Verify Signature”.
  4. El aviso de firma válida se muestra en la esquina inferior derecha de la pantalla.
    Signature Verified

Para comprobar la validez de la firma se usa la llave publica.

Una vez que tenemos nuestro archivo cifrado este puede ser enviado a otras personas, claro estas personas solo lo podrán descifrar si el archivo fue cifrado con su llave publica. Si tenemos un archivo firmado que deseamos enviar a otra personas, tendremos que enviar tanto el archivo original, el que se firmo, como el archivo con extensión .sig resultante de la firma.

Manejo de cadenas

Cifrado

  1. Abrimos una instancia del editor de texto de GNOME, Gedit.
    Applications -> Accessories -> Text Editor.
  2. Supongamos que tenemos un texto ya escrito.
    Texto original
  3. Damos click en la opción Edit -> Encrypt…
    Encrypt
  4. Seleccionamos la llave publica con la que deseamos encriptar el texto, y damos click en OK.
    Private Key
  5. Listo, ya tenemos el texto cifrado.
    [code]
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.6 (GNU/Linux)

    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
    =dwT4
    -----END PGP MESSAGE-----
    [/code]

Descifrado

Partiendo del texto cifrado en la sección anterior.

  1. Damos click en la opción Edit -> Decrypt/Verify.
    Encrypted Text
  2. Proporcionamos la contraseña para la llave privada y damos click en OK.
    Password
  3. Listo, ya tenemos el texto descifrado.
    Texto original

Hay que tener en mente que no debemos modificar nada dentro de las ‘etiquetas’


-----BEGIN PGP MESSAGE-----
-----END PGP MESSAGE-----


Fuera de ellas se puede agregar lo que sea. Posteriormente si deseamos descifrar el mensaje no habra problema alguno.

De la misma manera si solo se desea cifrar una parte de todo el texto que hay en el archivo, se selecciona la parte del texto deseado y se procede de la misma forma que se explico anteriormente.

Para decifrarlo no hace falta seleccionarlo y se procede de la forma que se explico anteriormente.

Firmado

  1. Abrimos una instancia del editor de texto de GNOME, Gedit.
    Applications -> Accessories -> Text Editor.
  2. Supongamos que tenemos un texto ya escrito.
    Texto original
  3. Damos click en la opción Edit -> Sign…
    Sign
  4. Seleccionamos la llave privada con la que deseamos firmar el texto, y damos click en OK.
    Choose Private Key
  5. Proporcionamos la contraseña para la llave privada y damos click en OK.
    Password
  6. Listo, ya tenemos el texto firmado.
    [code]
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Gravitation cannot be held responsible for people falling in love. How on earth can you explain in terms of chemistry and physics so important a biological phenomenon as first love? Put your hand on a stove for a minute and it seems like an hour. Sit with that special girl for an hour and it seems like a minute. That's relativity.
    Albert Einstein
    US (German-born) physicist (1879 - 1955)

    We can learn even from our enemies.
    Ovid, Metamorphoses
    Roman poet (43 BC - 17 AD)

    What is done out of love always takes place beyond good and evil.
    Friedrich Nietzsche, Beyond Good and Evil, Aphorism 153
    German philosopher (1844 - 1900)
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.6 (GNU/Linux)

    iD8DBQFIdUEtdyFlPZxVi/cRAtUGAKCnJslgk87F3tWfD+r8zKFNlLK7FwCgjJmV
    a6LagYC43fgK0Urse9iz/t8=
    =Di6S
    -----END PGP SIGNATURE-----

    [/code]

Verificar firma

Partiendo del texto firmado en la sección anterior.

  1. Damos click la opción Edit -> Decrypt/Verify.
    Verify Sign
  2. El aviso de firma válida se muestra en la esquina inferior derecha de la pantalla.
    Valid Signature

Hay que tener en mente que no debemos modificar nada dentro de las ‘etiquetas’


-----BEGIN PGP SIGNED MESSAGE-----
-----END PGP SIGNATURE-----

Fuera de ellas se puede agregar lo que sea. Posteriormente si deseamos verificar la firma del mensaje no habra problema alguno.

De la misma manera si solo se desea firmar una parte de todo el texto que hay en el archivo, se selecciona la parte del texto deseado y se procede de la misma forma que se explico anteriormente.

Para verificar la firma no hace falta seleccionarlo y se procede de la forma que se explico anteriormente.

Nota: Si no se muestran las opciones de cifrado/firma en el editor de texto, es necesario activar el plugin correspondiente.
Edit -> Preferences
En la pestaña Plugins, habilitar la opción Text Encryption.