jueves, 25 de junio de 2015

¿Cómo tu código fuente podría salvar el mundo?

El camino por convertirse en un buen desarrollador nunca termina, recuerdo cuando apenas veía introducción a la programación, no importaba realmente cómo codificaba, el objetivo era un solo: ¡Que compilara! (...) Y sí, teníamos unos pequeños engendros en archivos de texto que con dificultad luego podríamos reconocer como propios.

Luego nos preocupamos por que el código hiciera lo que tenía que hacer, resultó ser el mismo engendro pero compilando y funcionando correctamente... Seguramente quienes no tomaron el camino del desarrollo hasta aquí llegaron. Sin embargo, quienes optamos por procesar el café para convertirlo en código seguimos avanzando, prontamente aprendimos mejores prácticas de programación, cómo nombrar adecuadamente nuestras variables, algunos frameworks que facilitaron nuestra vida y de repente nuestro trabajo drásticamente artístico pasó a hacer toda una pieza de ingeniería de software, cuyo diseño y funcionamiento impecable quizá contrastaban contra la poca documentación... ¡Pero es que ese código habla por sí mismo! No necesita más documentación.

 
Finalmente nos enseñaron algo de eficiencia, no lo explicaron en términos de "Complejidad algorítmica" y lo entendimos como "Si está lento, necesitas un mejor PC". Y así fue como toda una teoría de la computación pasó a segundo plano. Hoy no es raro encontrarnos con código productivo cuyos algoritmos están hechos, digamos, "A lo maldita sea", quizá por el empeño de dar una solución rápida a los proyectos, falta de experticia o quizá por nuestra falta de imaginación y no pensar un poco más allá.

Pero ¿Por qué es importante la eficiencia? Quizá debí empezar por aquí, pues un software diseñado con buenas prácticas y los mejores algoritmos no necesariamente sea el más rápido para procesar una acción, sino el que mejor administra los recursos que tiene para hacerlo... ¿Y qué es administrar mejor los recursos? ¿Es usar toda la RAM? ¡Para eso está! ¿Usar toda la CPU? ¡Para eso Intel/AMD lo construyó así! ¿Será acaso usar todo el disco duro? Pues para eso compramos discos ya en terminos de terabytes.

La respuesta es depende porque cada sistema y el negocio que está soportando tiene sus particularidades... Pero vayamos a un software que per se está poco o nulo optimizado ¿Qué pasaría si lo mejoramos en pro de la eficiencia? Mi respuesta es una teoría tan inquietante como sorprendente: ¡Podría salvar el mundo!. Tener código estructurado eficientemente necesariamente tendría un impacto positivo en el uso de los recursos, como comenté antes, esto no quiere decir que el usuario vea que ahora funciona más rápido aunque puede que sí, sino que reduciríamos, por ejemplo, la carga de uso media de CPU, quizá también liberemos algo memoria y por lo pronto también, quizá nos ahorremos un par de llamadas extras a los discos duros.

"Source Code" es una película por allá de 2011, no tiene nada que ver con el post pero me pareció graciosa la imagen para ambientar mi teoría.

¿Y cómo eso podría salvar el mundo? Bueno, alguna vez notaste que al exigir tu PC o portátil ¿Este se calienta más? Esto sucede porque de la misma forma, requiere más energía para responder a tus exigencias... Así las cosas, el primer paradigma a quitarnos de la mente es que sí se puede ahorrar energía eléctrica aún cuando el servidor esté encendido toda la noche. En Internet hay varias herramientas que puedes usar para calcular el uso de energía de un equipo de cómputo en ciertas circustancias. Para soportar mi teoría, encontré un interesante estudio de la Universidad de Pensilvania en el que tenemos el consumo en watts de varios equipos de cómputo sometidos a prueba:


Make & Model Basic Specifications Off (plugged in) Boot (peak) Moderate Use (range) Quiescent (5 minutes of no activity) Sleep
Apple iMac/Intel
21.5-inch
(purchased late 2012)
Core i5, 8.0 GB RAM,
1.0 TB hard drive,
OS X 10.8.2 (clean)
1 60 52-56 44
(18 w/ LCD in sleep)
1
Apple iMac/Intel
21.5-inch
(purchased late 2011)
Core i5, 4.0 GB RAM,
500 GB hard drive,
OS X 10.7.4 (clean)
1 105
92-96 88
(38 w/ LCD in sleep)
1
Apple iMac/Intel
27-inch
(purchased late 2009)
Core i5, 4.0 GB RAM,
1.0 TB hard drive,
OS X 10.7.4 (clean)
1 177 141-147 130
(73 w/ LCD in sleep)
1
Apple iMac/Intel
24-inch
(purchased early 2009)
Core 2 Duo, 4.0 GB RAM,
640 GB hard drive,
OS X 10.6.2 (clean)
1 141 146-154 88
(42 w/ LCD in sleep)
1
Dell Optiplex 9010 All-in-One
23-inch
(purchased late 2012)
Core i7, 8.0 GB RAM,
500 GB hard drive,
Windows 8 Pro (clean)
1 61 43-45 43-44 1
Dell Optiplex 9010
w/ Dell LCD
(purchased mid 2012)
Core i7, 8.0 GB RAM,
Windows 7 Ultimate (clean)
1 48 66 20-22 1
Dell Optiplex 990
w/ Dell LCD
(purchased mid 2011)
Core i7, 8.0 GB RAM,
Windows 7 Professional (clean)
1 86 33-37 28 1
Dell Optiplex 980
w/ Dell LCD
(purchased mid 2010)
Core i7, 4.0 GB RAM,
Windows 7 Professional (clean)
1 66 64-71 46-61 1
Dell Optiplex 780
w/ Dell LCD
(purchased late 2009)
Core 2 Duo, 4.0 GB RAM,
Windows 7 Professional (clean)
2 108 not tested not tested 1
Dell Optiplex 760
w/ 19-inch Dell LCD
(purchased late 2008)
Core 2 Duo, 2.0 GB RAM,
160 GB/7200 RPM hard drive,
UltraSharp 1907FPV display,
Windows 7 Ultimate (clean)
1 116 95-111 81-83
(50-52 w/ LCD off)
1
Lenovo ThinkCentre M91
w/ Lenovo LCD
(purchased early 2012)
Core i7, 8.0 GB RAM,
Windows 7 Professional (clean)
1 88 50-68 40 1

Computer Power Usage
https://secure.www.upenn.edu/computing/resources/category/hardware/article/computer-power-usage

Como podemos notar, un computador exigido al máximo está consumiendo hasta 40% más energía (Dependiendo del modelo) que el mismo equipo en un uso calificado como moderado. Claro, si hablamos de optimizar un algoritmo que se lleva el 100% de la CPU para que solo lo haga 60% no es una tarea fácil (Empezando porque en lo primero que pensaríamos es en comprar un nuevo servidor de acuerdo a nuestros fundamentos en optimización de algoritmos que mencioné antes), aunque he de decir también, que he visto casos en los que en verdad, hay soluciones supremamente sencillas para evitar esos picos de uso de hardware sin sacrificar considerablemente el estado del algoritmo.

Pero eso es un mundo ideal de unicornios y hadas madrinas, seamos incrédulos, supongamos que solo optimizamos con dificultad nada más que un 10% (...) Vienen entonces las siguientes preguntas a mi teoría ¿No se ahorrarán unos pocos watts al año? ¿Y si nuestro sistema corre sobre varios servidores?, ¿Por varios años?... Pues mi percepción es que en el estado en que tenemos a nuestro planeta, cada watt ahorrado, por ínfimo que parezca cuenta. La diferencia es la que haríamos todos si codificamos con la eficiencia en mente.

¿Cómo optimizar nuestro código para salvar al mundo? 


Mi recomendación básica, es ser muy aplicado con las buenas prácticas de programación, esto incluye:

  1. Usar los tipos de datos adecuados para nuestra aplicación. Ej. no usar integer si voy a guardar solo 1 y 0, en ese caso usar boolean ahorraría algo de memoria. 
  2. Analizar detenidamente las consultas a fuentes de datos de tal forma que solo se cargue la información necesaria y haciendo uso de las facultades del motor (Caché, llaves primarias, por ejemplo). 
  3. Arquitecta tu aplicación, diseños modulares y funciones centralizadas permitirán enfocarte mejor en la solución y eventuales inconvenientes de rendimiento. 
  4. Utiliza herramientas de análisis estático de código. Por ejemplo, en Java utilizo Sonar, que da muy buenos tips acerca de la codificación del software.
  5. Reduce al mínimo el nivel de verbosidad de logs de la aplicación y auditoría.
  6. Mientras tu software está en producción ¡Mide su rendimiento! 
  7. Y más importante, nunca dejes de pensar en cómo podrías hacer tu software mejor.
Puede que mi teoria resulte aún un poco fantasiosa y distante para nuestra realidad allá frente al código, pero sigo pensando que en nuestro que hacer diario, siempre podemos hacer algo para que nuestro mundo sea un mejor lugar, por ser más amigables con el medio ambiente... Si pensar desde el código fuente definitivamente no es una opción, seguro estarás pensando de qué otra pequeña forma, podemos salvar el mundo.

martes, 23 de junio de 2015

Compras en línea ¿Realmente confiables?

Antes hablábamos de un futuro, luego de una tendencia y ahora son una realidad al alcance de todos: Las transacciones bancarias a través de Internet están aquí para quedarse, ya no representan toda una novedad pero sí cada día son más evidentes sus ventajas al ahorrarnos tiempo, dinero e incluso siendo más amigables con el medio ambiente evitando el uso de papel.

Otra realidad distinta quizá ocurre en Colombia, partiendo de los pobres niveles de bancarización del país que suponen el mayor obstáculo a vencer por el comercio electrónico. En la práctica es muy poca la gente que tiene acceso a servicios bancarios, ¿Razones? Muchas pero podríamos mencionar aquí brevemente costos, inconveniencia, políticas o ignorancia, lo cierto es que el efectivo sigue siendo el rey.

Imagen cortesía de Marketing Land (http://marketingland.com/survey-82-percent-mobile-users-consult-circulars-store-shopping-103942)

Pero ¿Estamos preparados para las transacciones por Internet? Bueno probablemente la respuesta sea un despreocupado y contundente sí, pero no debemos descuidar entonces la seguridad. A continuación me voy a centrar en el pago "punto a punto". El objetivo es hacer un análisis de las plataformas de cómo funcionan los pagos en sí mismas (El primer punto o extremo) y también desde donde se ejecutan estos pagos, que seguramente será nuestro PC (El segundo punto u otro extremo). Si bien es un problema inherente al comercio electrónico, no voy a profundizar sobre la reputación y diligencia o no de sitios Web de comercio electrónico entendiendo que nuestro primer requisito es asegurarnos que con quien vayamos a hacer una operación bancaria es una entidad o persona reconocida en el mercado.

Básicamente tenemos varias formas de pagar un algo a través de Internet, estos pueden ser:

Nuestro banco

La mayoría de los bancos ofrecen realizar ciertos pagos a terceros a través de su propia página Web. En su forma más simple de entenderlo, ofrece la posibilidad de realizar pagos (Entendido como transferencias) de dinero entre las cuentas de los clientes naturales y empresariales del mismo banco, por lo que de alguna forma el pago es "Directo". Aquí partimos de una premisa importante: Todos los bancos se "Blindan" de puertas para adentro, es decir, tecnológicamente su plataforma generalmente cuenta con estándares muy elevados de seguridad en los que básicamente si algo desafortunado ocurre, es por responsabilidad del cliente. Por lo que enumeramos:

Ventajas
  1. Tecnológicamente avanzado, generalmente los más altos estándares de seguridad. 
  2. En cualquier caso, tienes un doliente directo a quien realizar un reclamo, bien sea por el cumplimiento de la transacción o por alguna inconsistencia. 
  3. Dado que es un "Plus" que ofrecen los bancos, los cargos o comisiones tienden a ser muy bajos o gratuitos. 
  4. Si nunca has realizado pagos por Internet, esta podría ser la primera opción más confiable.
Desventajas
  1. No es muy amplio el abanico de servicios o pagos o terceros que podemos realizar. 
  2. Si la transacción resulta fraudulenta, resulta muy complicado hallar responsabilidad en el banco, son procesos muy largos y generalmente terminan por culpar al cliente alegando poca dligencia del usuario respecto a su equipo de cómputo o descuido de sus credenciales y/o contraseñas. 

Sitios de comercio electrónico

También podemos realizar compras en muchos sitios de Internet en Colombia y el mundo. Generalmente las transacciones se realizan a través de lo que llamamos una "Pasarela de pago" que no es más que un intermediario entre nosotros y el comerciante para procesar el pago. En Colombia podríamos mencionar a Payu Latam y Avisor como dos ejemplos de las pasarelas de pago más populares, pero si hacemos transacciones en sitios internacionales probablemente sea Paypal el primer referente que se nos venga a la cabeza.

Las pasarelas de pago, exponen servicios a través de Internet que los comercios deben implementar en su sitio Web para enviar un pago, estos servicios en sí mismos son incluso más confiables que los que podría ofrecer nuestro mismo banco, pero quizá podría haber un vacío en el cómo el comercio realiza la implementación de dicho servicio, por ejemplo, almacenando de manera inadecuada la información, dejando posibles puertas abiertas a potenciales atacantes.

El caso típico es aquel en el que comercio dice que no recibió el pago, uno verifica en su cuenta y sí se hizo, se llama a la pasarela y dice que procesó el pago correctamente, pero el comercio insiste que todavía no registra el pago, por lo que encontrar una solución en una compra puede ser una tarea dispendiosa. Eso sí, el consumidor ya no está solo, las pasarelas de pago usualmente ofrecen garantías a los usuarios y además cada vez exigen mayores estándares para que su integración con los vendedores sea más coordinada y confiable.

Ventajas

  1. Tecnológicamente muy avanzado, cumplen con estándares de seguridad. 
  2. Puedes comprar virtualmente cualquier cosa. 
  3. Dado que ocurre directamente con un comercio, podrías obtener interesantes descuentos en compras por fidelidad. 
Desventajas
  1. Depende de la fiabilidad del comercio, la implementación segura del sitio Web y la reputación del vendedor.
  2. Dependiendo del vendedor y la pasarela, puedes pagar un cargo adicional por la transacción en Internet y/o el recargo del transporte.
  3. Si la transacción resulta fraudulenta, hay otro más a quien involucrar en la investigación (La pasarela), es posible que también terminen por culpar al cliente alegando poca diligencia del usuario respecto a su equipo de cómputo o descuido de sus credenciales y/o contraseñas. 

El fraude por Internet, una amenaza creciente

Es claro que, también como los comercios ven una oportunidad en vender más y mejores productos a sus clientes, dándoles la posibilidad de comprar personalizadamente y desde la comodidad de su casa, también los amigos de la ajeno ven la oportunidad de sacar provecho a la excesiva confianza de los usuarios.

Puedo afirmar incluso con mi experiencia personal que el procesamiento de pagos por Internet se encuentra tecnológicamente hablando en un nivel de seguridad excepcional... pero entonces ¿Porqué el fraude por Internet es un delito creciente? Bueno, el problema más persistente en efecto radica en el usuario y por ello me refiero a la no cultura que tenemos para resguardar la información. Por ello preparé un pequeño listado de los aspectos más importantes para mejorar nuestra seguridad en la red.

Consejos para comprar por Internet 

  1. Es claro que deberemos comprar solo en sitios Web confiables y con reputación. Sitios Web de almacenes de cadena y marcas reconocidas de tecnología y accesorios hacen parte ya de este catálogo.
  2. Realiza únicamente transacciones en línea desde un equipo confiable. Esto incluye tu sistema operativo debidamente actualizado, con software antivirus vigente y ojalá una buena herramienta anti-malware instalada. 
  3. Nunca utilices redes públicas como el Internet de un restaurante o cafetería para realizar transacciones en línea. Por más que lleves tu PC de confianza, usar redes abiertas expone tu información y tu seguridad. 
  4. Todo sitio que ofrezca transacciones en línea debe tener un certificado SSL. Esto significa que, la dirección URL debe comenzar con https:// y el navegador en ningún momento debe advertirnos de problemas de confianza con el sitio Web.
  5. Yo recomiendo contar con una tarjeta de crédito (No débito) específica para las compras en línea. Las tarjetas de crédito usualmente incluyen seguros de compra antifraude así como otros servicios adicionales que pueden complementar la experiencia de compra.
  6. Evita los sitios que almacenan indefinidamente tu información bancaria, por ejemplo, realizando un solo pago en lugar de realizar varios pagos recurrentes. 
  7. Protege celosamente tu información. Eso incluye guardar en un lugar seguro tus tarjetas, fuera del alcance de desconocidos. 
  8. Desconfía de todo. Suena obvio pero evita suministrar cualquier tipo de información personal o financiera a través de Internet. Por regla general, ningún banco o entidad seria te solicita información a través de Internet o el celular, desconfíe de todo correo electrónico, mensaje de texto, publicación en redes sociales o incluso llamada telefónica que invite a cambiar, modificar o actualizar por ejemplo, tus contraseñas bancarias. En caso de persistir la duda, comunícate con tu entidad a través de sus canales oficiales (Por ej. vía telefónica) para certificar la credibilidad de una comunicación. 
  9. Activa todas las opciones de seguridad que te ofrezca tu banco, segunda clave, doble autenticación a través del celular, mensajes de texto de alerta de transacciones, todo suma a la hora de prevenir o minimizar un fraude. 
 ¿Qué tal ha sido tu experiencia realizando compras a través de Internet? Los comentarios están abiertos.

martes, 2 de junio de 2015

Lo nuevo en Fedora 22 y primeras impresiones


fedora22

El pasado 26 de mayo llegó a nuestros escritorios la versión más reciente de Fedora con importantes novedades... Entre ellas, salta a la vista que es la primera versión que llega realmente la fecha pactada en el cronograma... ¡Todo un hito para un proyecto de software!

Pero bueno, ya hablando un poco más en serio, evidentemente hay componentes destacables en esta versión que tienen más relevancia o menos de acuerdo al sabor de la distribución escojamos:

Workstation


Nuestra versión de escritorio estrena un nuevo componente de notificaciones que le sienta bastante bien, en mi concepto, es una especie de híbrido entre las notificaciones que esperaríamos en un PC y la forma en que las visualizaríamos en un teléfono Android. Esto está apoyado en un nuevo tema (Apariencia) de Gnome que se destaca nuevamente porque reafirma el compromiso de Fedora en traernos una distribución más atractiva y pulida visualmente... Bastante lejos del empaquetamiento "Vanilla" por defecto.

new-notifications-notification.png

También encontramos una mejora en la aplicación "Software App" haciendo más fácil encontrar nuevo software y mantener al día nuestro sistema, pero este cambio tiene, bajo el capó, otra mejora más significativa: Le decimos adiós a YUM, sí señores, el comando yum es parte ya del pasado dando lugar a DNF (dnf). Para los comandos básicos, dnf usa la misma sintaxis de yum (dnf update, dnf install, dnf remove, dnf upgrade) pero para los más avanzados y hay una buena cantidad de comandos adicionales.

¿Por qué se cambió Yum? Bueno, la verdad es que DNF originalmente nació como un fork de Yum pero se modernizó... Es decir, Yum ya tenía sus años pesándole sobre su espalda y era necesario una herramienta actualizada, con API, documentación y bases tecnologícas (Python 2 y 3) más sólidas. Vale la pena aclarar que este cambio aplica también a los sabores Server y Cloud de Fedora 22. La teoría nos dice que dnf debe ser más rápida que Yum en tareas como, por ejemplo, resolver las dependencias pero mi sensación es que es poco perceptible este tipo de beneficios... Incluso por momentos lo he notado (Irónicamente) más lento que lo que podría hacer Yum, algo atribuible a que es "Su primera vez" oficialmente en Fedora.

The Software Application in Fedora 22 Workstation

También tenemos buenos retoques en la aplicación "Files" (El explorador de archivos) dando una mejor vista de archivos y carpetas, así como un rediseño al visualizador de imágenes que da, entre otras cosas, más espacio en pantalla a su razón de ser: Imágenes.

En el caso del escritorio KDE, Fedora 22 incluye ya KDE Plasma 5 como espacio de trabajo por defecto en la distribución, con todas las mejoras a nivel de apariencia y funcionamiento que ello conlleva.

Server 


Por el lado de la edición de los servidores se destaca particularmente que esta edición usará el sistema de archivos XFS por defecto excepto para la partición /boot (Que siempre nos da problemas por el cargador de archivos). Mención aparte merece Cockpit que se ha actualizado para administrar desde el navegador de Internet tus servidores GNU/Linux. Los administradores lo agradecerán.

Cloud


No menos importante, la edición diseñada para la nube estrena nuevas "Vagrant Boxes", que son básicamente, ambientes de desarrollo portables, fáciles de configurar y reproducir.

Paquetería actualizada


Como es usual, Fedora trae a nuestro PC las últimas versiones de los componentes más relevantes del mundo libre, destacamos:

  • Kernel Linux 4.0 
  • GNOME 3.16 
  • KDE 5 
  • XFCE 4.12 
  • LXQt 0.9.0
  • BIND 9.10 
  • Unicode 7.0 
  • Perl 5.20 
  • Ruby 2.2 
  • Python 2.4 Incluye wxPython 3 
  • Gradle 2.2 
  • Git 2.4.1 
  • GCC 5 
  • GHC Haskell compiler 7.8 
  • Django 1.8 

Primeras impresiones


Tal y como comenté al inicio, me sorprendió la puntualidad con que fue publicada esta versión, lo primero que me saltó a la cabeza es que quizá no sería muy estable pero me llevé una grata sorpresa. Si actualizas con FedUp es una de las actualizaciones más "Transparentes" si cabe el término, que he de realizar, cero inconvenientes de dependencias, un reinicio y todo funcionando clara y fluidamente.

Con una distribución sólida pero a su vez moderna, se va quitando ése paradigma que Fedora es el "Beta" de Red-Hat y nos encontramos con un producto y un equipo de trabajo comprometido con el usuario, con un nivel de madurez distinta, estable, bien por la comunidad Fedora.

¿Vale la pena actualizar?


Es una pregunta complicada de hacer y mi percepción personal es que si estás cómodo con Fedora 21 quizá deberías esperar. Fedora 22 trae, sí, mejoras importantes que presentan una clara evolución pero no algo así como un "Debes tenerlo hoy mismo instalado". Ah, pero si estás aún en Fedora 20 (O incluso antes) ahí si te garantizo una experiencia completamente distinta en donde el salto funcional, de apariencia y actualidad de los paquetes harán que valga la pena.

viernes, 23 de enero de 2015

Fedora 21 ¿Varios sabores del sistema operativo?

Ya ha pasado un poco más de un mes del lanzamiento de la última edición de Fedora, la 21, que más allá de las novedades usuales de cada edición actualizando los escritorios e incluyendo las últimas versiones del software abierto disponible, se constituyó en la primera versión basada en el nuevo modelo llamado "FedoraNext" [1]. Este nuevo modelo (De gobierno) propone la creación de ediciones específicas de la distribución, estando ya en Fedora 21 disponibles una versión Workstation, destinada a equipos de escritorio, Server orientado a ambientes servidores y equipos de misión crítica y Cloud, orientada a ambientes de servicios en la nube.


 FedoraNext me recordó parte de los inicios de Fedora, en donde la base de todo el sistema operativo era denominado "Core" y todos los demás elementos eran considerados como "Extras", lo conocimos así hasta su sexta edición como el famoso Fedora Core. ¡Tiempos aquellos! Justo después se consideró que era mejor unificar en un único esfuerzo todo el sistema operativo, modelo bajo el cual se trabajó hasta Fedora 20.

¿Por la vía correcta?


FedoraNext va mucho más allá de todo lo que recuerdo bajo el nombre de "Fedora Core". Por supuesto, supone la creación de un equipo denominado "Base" que viene a ser análogo al "Core" de los viejos tiempos, lo nuevo, es que tengamos equipos de trabajo diferentes con objetivos distintos por cada versión del sistema operativo, por lo que en principio, los esfuerzos para hacer una distribución verdaderamente "Multipropósito" son mejor enfocados.

Y quizá ese sea el mayor objetivo, con el número de personas y equipos de distintos lugares del mundo (Y todo lo que conlleva), empresas y patrocinadores, no es fácil adoptar un plan general en el que todos apunten en la misma dirección, por lo que un modelo de gobierno (Y lo pongo en esas palabras) que por lo menos menos identifique el propósito básico de una buena mayoría podría garantizar mejores resultados.

Claramente FedoraNext en su sentido más básico no es ni nuevo ni revolucionario, siempre ha existido en Windows (Siempre es un decir) una edición empresarial, Ubuntu y Suse han tenido también desde hace buen tiempo sus ediciones "Server o Enterprise" claramente definidas, por lo que el proyecto FedoraNext tiene una buena probabilidad de ser exitoso.

¿Y cómo beneficia al usuario final?


Dado que Fedora es de por sí una distribución orientada a usuarios avanzados, podría no ser tan claro cómo impactaría FedoraNext en la comunidad. Sin duda, el valor agregado más importante que podría aportarle este nuevo modelo de gobierno será la solidez de la distribución, disminuyendo el número de incidencias sin sacrificar (Tanto) el carácter vanguardista típico de la distribución.

Sin embargo, ya en Fedora 21 podemos ver algunos "Trazos" que beneficiarían al usuario final, por ejemplo, en mi concepto la apariencia de Fedora Workstation está mucho más cuidada que en versiones anteriores, con fuentes suavizadas y un tema que destaca, no tanto como aquel "DNA Fedora", pero vuelve a ser el "Art Work" un punto destacable de la versión. Integración limpia y detalles simples como el cambio de colores de la terminal por defecto, hacen que el efecto FedoraNext se sienta con agrado, una distro Linux pulido, detallado y no una simple y mera integración "Vanilla" de todo el software disponible.

--
[1] FedoraNext
http://fedoraproject.org/wiki/Fedora.next

jueves, 22 de enero de 2015

¿Buscas una oportunidad laboral en el mundo del software libre? Aquí tienes una oportunidad

A través de su blog en Gnome, Christian Schaller anunció la disponibilidad de varias vacantes en Red-Hat para participar en los proyectos Fedora, Red Hat Linux y Red Hat en general. Las vacantes están abiertas a cualquier país en el que Red-Hat tenga presencia, no obstante, algunas posiciones tendrán preferencia geográfica en las oficinas de Brno, República Checa o Westford, Massachussets, en Estados Unidos.


Imagen Tomada de Linux Foundation 
http://www.linuxfoundation.org/news-media/infographics/tech-job-news

Entre las habilidades requeridas, Chirstian no nos pone una lista de obligatorios, pero sí una buena cantidad de aptitudes a tener en cuenta de acuerdo al cargo:
  • Habilidad para programar en C 
  • Habilidad para programar en Ruby 
  • Habilidad para programar en Javascript 
  • Habilidad para programar en Assembly 
  • Habilidad para programar en Python 
  • Experiencia con Linux Kernel development 
  • Experiencia con GTK+ 
  • Experiencia con Wayland 
  • Experiencia con x.org 
  • Experiencia en desarrollo para arquitectura PPC
  • Experiencia con oprimizaciones de compilador
  • Experiencia con llvm-pipe 
  • Experiencia con SPICE 
  • Experiencia con desarrollo de software como Virtualbox, VNC, RDP o similares
  • Experiencia construyendo WebServices
  • Experiencia con desarrollo en OpenGL
  • Experiencia con Project Atomic 
  • Experiencia con adaptación de drivers de pantalla
  • Experiencia con adaptación de otro hardware de PC
  • Experiencia con herramientas como Satellite or ManageIQ 
  • Experiencia con empaquetamiento RPM 
  • Experiencia con Fedora 
  • Experiencia con Red Hat Enterprise Linux 
  • Experiencia con GNOME 
A esto añadiremos en nuestro caso, un buen manejo del Inglés por supuesto. Aplicar a estas vacantes es sencillo, basta con enviar tu currículo y algunas palabras acerca de tí (En Inglés) al correo cschalle(at)redhat(dot)com.

En todo caso y para mayor información te sugiero leer la fuente original:

WANT TO JOIN OUR INNOVATIVE DEVELOPMENT TEAM DOING COOL OPEN SOURCE SOFTWARE?

http://blogs.gnome.org/uraeus/2015/01/21/want-to-join-our-innovative-development-team-doing-cool-open-source-software/

martes, 9 de septiembre de 2014

Cómo instalar Wordpress en Fedora

Nota: Este artículo está actualizado a Fedora 20 y Wordpress 4.0

Wordpress es uno de los gestores de contenido (CMS) más populares por su versatibilidad. Instalarlo es cuestión de seguir unas breves instrucciones que terminarán en nuestro propio blog o portal especializados en minutos.


Wordpress requiere toda la infraestructura LAMP (Linux, Apache, MySQL / MariaDB y PHP) para funcionar, si no lo has configurado por revisar este post: Cómo instalar un servidor LAMP en Fedora.

Creación de la base de datos para Wordpress

Lo primero que necesitamos es crear una base de datos para nuestro Wordpress, para ello ejecutamos en una terminal:

Ingresamo a nuestra base de datos (Usa tus credenciales de administrador de MariaDB)

$ mysql -u root -p password

Creamos un usuario para Wordpress (Reemplaza password por una contraseña segura):

MariaDB> 
CREATE USER wordpress@localhost IDENTIFIED BY "password";

Creamos la base de datos:

MariaDB> CREATE DATABASE wordpress;

Asignamos permisos al usuario creado:

MariaDB> GRANT ALL ON wordpress.* TO wordpress@localhost;
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit 

Con esto tendremos lista la base de datos.

Instalación de Wordpress

A continuación necesitamos descargar Wordpress y descomprimirlo, para ello (Si no tienes wget instálalo con $ su -c 'yum install wget'):

$ cd /tmp
$ wget http://wordpress.org/latest.tar.gz
$ tar -xvzf latest.tar.gz

Realizamos de una vez la configuración de la base de datos:

$ cd wordpress
$ cp wp-config-sample.php wp-config.php

Editamos el archivo:

$ nano wp-config.php

En este archivo solo modificamos los siguientes parámetros (En rojo) de acuerdo a la configuración de nuestra base de datos:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpress');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Guardamos (Ctrl+O) y salimos (Ctrl+X).

Configuración de Apache

Finalmente debemos hacer que nuestra instalación de Wordpress sea expuesta a Internet a través de nuestro Apache, para ello crearemos un virtual host de la siguiente manera:

Movemos nuestra carpeta Wordpress a Apache y cambiamos el usuario y grupos dueños:

$ cd /tmp
$ su -c 'mv wordpress /var/www/html'
$ cd /var/www/html 
$ su -c 'chown -R apache:apache wordpress' 

Si SELinux está funcionando, es importante establecer a Wordpress dentro del contexto (Ejecutar como root):

# chcon -R -u system_u -t httpd_sys_content_t -r object_r /var/www/html

Ahora crearemos un virtual host:

$ su -c 'nano /etc/httpd/conf/httpd.conf'

Allí agregamos las siguientes líneas al final del archivo (Reemplaza las líneas resaltadas en rojo de acuerdo a tu configuración):

<VirtualHost *:80>
  ServerAdmin admin@midireccion.com
  DocumentRoot /var/www/html/wordpress
  ServerName wordpress
  ErrorLog /var/log/httpd/wordpress-error-log
  CustomLog /var/log/httpd/wordpress-acces-log common
</VirtualHost>

Guarda el archivo (Ctrl+O) y salimos (Ctrl+X). Solo nos queda reiniciar Apache:

$ su -c 'service httpd restart'

La famosa instalación de cinco minutos de Wordpress:

Ya estamos listos, lo único que nos queda es configurar la instalación de Wordpress, para ello abrimos nuestra navegador y vamos a la dirección http://localhost. Aquí solo deberemos ingresar la información solicitada y a disfrutar!


lunes, 8 de septiembre de 2014

Cómo instalar un servidor LAMP en Fedora

Nota: Este post está actualizado a Fedora 20.

LAMP es el acrónimo por el que conocemos a una de las infraestructuras más populares en el mundo de los servidores y no es para menos, Linux, Apache, MySQL / Maria-DB, y PHP combinados han demostrado ser una solución muy efectiva para crear portales y aplicaciones de gran popularidad en Internet, versatibilidad y confiabilidad de la mano del OpenSource.

Instalación de Apache

Apache es el servidor Web abierto más popular. Para instalarlo sólo debemos ejecutar en una terminal:

$ su -c 'yum install httpd'

Luego nos aseguramos que el servicio inicie con nuestro sistema:

$ su -c 'chkconfig --level 345 httpd on'

Y subimos nuestro servicio:

$ su -c 'service httpd start'

Para verificar que nuestro servicio esté correcto, abrimos un navegador, digitamos la dirección http://127.0.0.1 y debemos ver algo como:


Instalación de MySQL (MariaDB)

Nota: Luego de la compra por parte de Oracle de MySQL, el fork libre y abierto es ahora MariaDB. Para esta instalación, lo preferimos.

Para instalar Maria-DB solo hace falta digitar en una consola (Requiere la contraseña de super-administrador root):

$ su -c 'yum install mariadb-server'

Una vez instalado, iniciamos el servicio y nos aseguramos que siempre arranque al iniciar nuestro sistema:

$ su -c 'service mariadb start'
$ su -c 'chkconfig --level 345 mariadb on'

Luego, aseguramos nuestra instalación:

$ su -c 'mysql_secure_installation'

Para verificar que esté correcto ejecutamos (Reemplaza password por la contraseña de tu usuario administrador configurado en el paso anterior):

$ mysql -u root -p password

Si todo anda bien, deberías ver el prompt de MySQL, así:


Instalación de PHP

Para instalar PHP solo hacer falta ejecutar en una terminal:

$ su -c 'yum install php php-mysql' 

Una vez hecho esto, vamos a probar que realmente funciona, creamos un archivo:

$ su -c 'nano /var/www/html/info.php'

Nota: Si no tienes nano instálalo con $ su -c 'yum install nano'

En el archivo escribimos lo siguiente:

<?php
phpinfo();
?>

Guardamos en nano (Ctrl+O) y salimos (Ctrl+X). Una vez hecho esto, reiniciamos nuestro servicio de Apache:

$ su -c 'service httpd restart'

A continuación vamos a la siguiente dirección en nuestro navegador http://12.0.0.1/info.php y si todo salió bien deberíamos ver algo como:



No olvides borrar luego el archivo de prueba que creamos (info.php) esta información no debe ser pública y solo la debemos usar para nuestros propósitos de prueba... Por ahora a disfrutar!