jueves, 19 de noviembre de 2015

Diez cosas para hacer después de instalar Fedora 23

Como ya es costumbre, a continuación dejo a su disposición una pequeña guía para dejar a punto la última edición de Fedora en sencillos pasos:

1) Actualiza tu sistema

Siempre que ocurre un nuevo lanzamiento de un sistema operativo éste tiene una curva de estabilización, en el cual es usual encontrar uno que otro error que no fue detectado en las fases de prueba así como varias actualizaciones orientadas a mejorar la experiencia del usuario.

Además una distribución vanguardista como Fedora siempre tendrá bastante paquetería que actualizar, así que no te desanimes si descubres varios megas en actualizaciones luego de instalar tu flamante nuevo sistema operativo. Para actualizar basta con ejecutar en un terminal (En el menú Actividades digita "terminal" -Sin comillas-) (Requiere contraseña de root):

$ su -c 'dnf -y clean all'
$ su -c 'dnf -y update -vvv'

Con ésta instrucción tu sistema quedará al día.

2) Expandir las fuentes de software instalando repositorios adicionales

Los repositorios agregan nuevas fuentes de software a nuestro sistema, permitiéndonos instalar más programas o instalando aquellos que por motivos de patentes o licenciamiento no se incluyen en Fedora:

A continuación instalaremos los repositorios de Adobe y RPMFusion. Ejecuta en una terminal (En el menú Actividades digita "terminal" -Sin comillas-) (Requiere la contraseña de root):

Para ambos, 32 y 64 bits:



Si eres usuario del software de Google. No puede faltar este repositorio en tu PC, pues permitirá instalar en Fedora aplicaciones como Picasa y Google Desktop Search. Para instalarlo sólo ejecute en una terminal (como root):



Luego creamos el repositorio:

# nano /etc/dnf/dnf.conf

Si estás usando arquitectura i386 (32 bits) agregamos estas líneas:

[google]
name=Google-i386
baseurl=http://dl.google.com/linux/rpm/stable/i386
enabled=1
gpgcheck=1

Si estás usando arquitectura x86_64 (64 bits) agregamos estas líneas:

[google64]
name=Google - x86_64
baseurl=http://dl.google.com/linux/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

Nota: Nano es un sencillo editor de texto por consola. Para pegar el texto en nano presiona Ctrl+Shift+v; Luego presiona Ctrl+Shit+o para guardar y Ctrl+Shift+x para salir del editor. Siempre puedes usar tu editor de texto favorito. Por ejemplo, gedit en entornos Gnome.

3) Códecs de Reproducción multimedia y Plugin de Flash

  • Gnome
Si está usando Gnome, por favor ejecute la siguiente instrucción (requiere la contraseña de root, es una sola instrucción):



Con esto Fedora resolverá las dependencias e instalará el software requerido para nuestra reproducción multimedia.

  • KDE

Si está usando KDE, por favor ejecute la siguiente instrucción (requiere la contraseña de root, es una sola instrucción):



Con esto Fedora resolverá las dependencias e instalará el software requerido para nuestra reproducción multimedia.

4) Instalar LibreOffice

La instalación de Fedora desde el LiveCD ya incluye LibreOffice, la suite de oficina, sin embargo, podemos completar la instalación de la suite añadiendo el soporte a idiomas entre otros extras. Para ello ejecuta en una terminal (requiere contraseña de root).



Adicionalmente si tienes instalado KDE no olvides instalar este plugin para mejorar su integración:



Excelente!

5) Tus redes sociales en el escritorio

En ocasiones anteriores, recomendaba Gwibber como cliente de redes sociales. Sin embargo, dado que esta aplicación ya no ha tenido actividad desde poco más allá de 2011, ya no aparece en los repositorios oficiales. Aunque opciones no nos faltan, nos limitamos ahora a clientes de Twitter entre los que recomiendo:
  • Corebird (Gnome)
$ su -c 'dnf -y install corebird' 
  • Turpial (Gnome)
$ su -c 'dnf -y install turpial' 
  • KDE
 En el caso de KDE tenemos Choqok, un interesante cliente de Microblogging que no te decepcionar:

$ su -c 'dnf -y install choqok' 

6) Instalar el JRE de Java 

Debido a que el proceso es un poco extenso por favor consulta:
http://www.piensaenbinario.com/2015/11/instalar-java-8-jre-java-runtime.html


7) Instalar MPlayer el reproductor de video recomendado.

MPlayer es uno de los reproductores de video más poderosos del mundo del software libre, dado que puede reproducir gran cantidad de formatos multimedia (ejecutar en una terminal, requiere contraseña de root):

$ su -c 'dnf install mplayer smplayer'



8) Soporte a formatos de archivo comprimidos

Si trabajamos con archivos de formato comprimidos como los .rar necesitaremos ampliar el soporte de nuestro sistema (Ejecutar en una terminal, requiere contraseña de root):

$ su -c 'dnf install unrar unace unzip file-roller xarchiver'


9) Habilitar sudo en Fedora

Para habilitar sudo en Fedora, sólo ejecuta en una terminal (requiere contraseña de root):

$ su - 
# echo 'Usuario   ALL=(ALL)     ALL' >> /etc/sudoers
# exit

Reemplaza Usuario, por tu nombre de usuario, tal cual como inicias sesión (Es sensible a minúsculas y mayúsculas)

Luego prueba que todo haya quedado correctamente:

$ sudo dnf update

Ingresa tu contraseña (no la de root). Si todo quedó super debería comenzar a verificar si hay actualizaciones disponibles.

10) Instalar Gnome Tweak

Gnome Tweak es una interesante herramienta que nos permitirá realizar algunos ajustes en el comportamiendo del escritorio Gnome de forma fácil y rápida. Con ella podremos, por ejemplo, volver a mostrar archivos en el Escritorio (Como sucedía en Gnome 2) entre otras opciones útiles. En una terminal de comandos digita (Requiere contraseña de root):

$ su -c 'dnf install gnome-tweak-tool'


Una vez instalado, encontrarás las opciones en el menú Actividades, digitando tweak. (La aplicación en realidad se llama "Herramienta de retoques"


¡Y hay más! 

Instala tu navegador favorito


Fedora viene por omisión con la última versión de Firefox disponible, si te gusta otro navegador, he aquí las guías para instalarlos.

Google Chrome

Sólo ejecuta en una terminal (Requiere contraseña de root):

$ su -c 'dnf install google-chrome-stable'

Opera

Primero, descarga el RPM desde:
http://www.opera.com/download/guide/?os=linux

$ cd Descargas 
$ su
# dnf install opera-12.16-1860.x86_64.rpm --nogpgcheck
# exit

Recuerda ajustar el comando de acuerdo a la versión de Opera descargada.

Y a disfrutar!

jueves, 5 de noviembre de 2015

Instalar Java 8 - JRE (Java Runtime Environment) + Plugin para Firefox en Fedora

Nota: Artículo actualizado a Fedora 23
Fedora viene por defecto con OpenJDK, la versión abierta de Java que en general es suficiente para la mayoría de las tareas. Sin embargo, si encuentras dificultades en la ejecución de aplicaciones (como por ejemplo Applets) quizás te convenga instalar la versión oficial de Oracle.



Para empezar vamos a descargar el software de Java, por favor consulta:
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

Nota: Al día de éste post la última versión es la 8 update 66, recomiendo al lector visitar la página de Oracle para obtener la última versión. Modifica los comandos de acuerdo a la versión descargada.
Nota: Descargamos el instalador con extensión .tar.gz y NO el RPM.
Nota: En este tutorial trabajamos con la versión de 64 bits, verifica la arquitectura de tu sistema y de Java descargado.  
 Ahora procedemos a instalar Java. Asumiendo que el instalador quedó en la carpeta Descargas ejecutamos en consola (Requiere contraseña de root) (una instrucción por línea):
$ cd Descargas/
$ tar zxvf jre-8u66-linux-x64.tar.gz
$ su -
# mv /home/<USUARIO>/Descargas/jre1.8.0_66 /opt

Una vez hecho esto es momento de hacerla predeterminada en el sistema; Primero creamos el archivo java.sh (Puedes reemplazar nano por tu editor de texto favorito, como por ejemplo gedit o kwrite):

$ su -c 'dnf -y install nano'
$ su -c 'nano /etc/profile.d/java.sh'

Dicho archivo debe contener las siguientes líneas:

export JAVA_HOME=/opt/jre1.8.0_66
export PATH=$JAVA_HOME/bin:$PATH

Guarda y cierra el editor de texto (Ctrl+O y Ctrl+X en nano), a continuación digita en una terminal (como root):

# source /etc/profile.d/java.sh
# alternatives --config java

Verás algo en pantalla como:

There is 1 programs which provide 'java'.
Selection     Command
-----------------------------------------------
*+ 1         /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
     
Enter to keep the current selection[+], or type selection number:

Nos muestra la lista de programas que proveen la funcionalidad de Java. En este caso sólo hay uno así que agregaremos el número 2. Si el comando no muestra nada, no te preocupes, significa que no hay una instalación de Java y para eso estamos aquí. Con el siguiente comando agrega tu instalación:



Nota: Si no tienes ningún programa que provea Java reemplaza el número 2 por un 1. Si hubieran 2 programas ajusta el comando reemplazando el 2 del final por un 3 y así sucesivamente.
Con éste comando se debió haber agregado nuestra versión de Java, así que una vez más ejecuta:

# alternatives --config java

Ahora deberías ver algo como:

There are 2 programs which provide 'java'.
Selection     Command
-----------------------------------------------
*+ 1         /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
   2         /opt/jre1.8.0_66/bin/java
Enter to keep the current selection[+], or type selection number:

Ingrese el número de la opción que ingresamos (Por ejemplo 2). Si todo salió bien digita en consola:

$ java -version

Debes ver algo como:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) Client VM (build 25.66-b27, mixed mode)

Agregando el plugin de Java a Firefox

Finalmente agregamos el plugin a Firefox digitando en una terminal (Ejecuta como root):

Si utilizamos 32 bits:



Si utilizamos 64 bits:



Finalmente nos aseguramos que el plugin de Firefox esté activo por defecto:

# alternatives --config libjavaplugin.so

Una vez hecho ésto reinicia el navegador Firefox, en la barra de direcciones digita about:plugins y verifica que Java se encuentre activo. Otra opción es visitar el sitio de Oracle para verificar la instalación http://www.java.com/es/download/installed.jsp

Y listo, a disfrutar de las bondades de Java!

miércoles, 4 de noviembre de 2015

Actualiza de Fedora 22 a Fedora 23 en cinco sencillos pasos

Si ya tienes un sistema instalado con Fedora 22, actualizar a Fedora 23 resultará una tarea muy sencilla. A continuación, describimos los cinco pasos claves para una feliz actualización.


1. Realiza copia de seguridad de tu sistema


No es que el proceso sea poco seguro, es que hacer una copia de seguridad nunca sobra. Por eso, te recomiendo sacar una copia de todos los archivos importantes de tu sistema, bien sea copiándolos a otra unidad o USB manualmente o usando una herramienta de copias de seguridad como Deja Dup.

2. Actualiza tu sistema


Antes de actualizar a Fedora 23, es necesario que tu instalación de Fedora 22 se encuentre al día con las últimas actualizaciones, para ello, solo ejecuta en una terminal como root.

# dnf upgrade

3. Instalar el plugin de DNF


La actualización se hará a través de DNF, por ello es necesario instalar el siguiente plugin:

# dnf install dnf-plugin-system-upgrade

4. Actualiza tu sistema


Una vez tu sistema se encuentra respaldado, actualizado y con el plugin de DNF, podemos comenzar la actualización. Este comando descargará todos los archivos necesarios para la instalación de Fedora 23:

# dnf system-upgrade download --releasever=23 --best

5. Reinicia y completa la instalación.


Finalmente tenemos la actualización propiamente dicha. Durante este proceso tu sistema se reiniciará e instalará los nuevos paquetes. 

# dnf system-upgrade reboot
 
Con estas instrucciones no queda más sino disfrutar de la nueva versión de Fedora.

--
Este tutorial está basado en las instrucciones de Fedora Magazine
http://fedoramagazine.org/upgrading-from-fedora-22-to-fedora-23/

martes, 3 de noviembre de 2015

Fedora 23 ya está con nosotros

Con una semana de retraso que por cierto, le perdonamos al equipo de desarrollo, hoy fue lanzado oficialmente Fedora 23. Esta versión incluye interesantes cambios en la distribución que constituyen a nuestro juicio una evolución natural de la distribución.

¿Qué es lo nuevo en Fedora 23?


Fedora Workstation


En la edición de Fedora orientada hacia el usuario de escritorio, el cambio más relevante es sin duda, la introducción de Gnome 3.18.  Con GNOME 3.18, ahora es posible acceder a Google Drive directamente desde la aplicación de Archivos, así como desde un diálogo de selección de archivos. Para usar esta característica, simplemente añada su cuenta de Google mediante la configuración de las Cuentas en línea, y Google Drive aparecerá automáticamente en la barra lateral de todas las ubicaciones de archivos.



También se mejoró la aplicación de Archivos, pues se ha rediseñado la barra lateral de ubicaciones de archivos, que se muestra en Archivos y en los diálogos de abrir y guardar. Se ha añadido una nueva ubicación llamada Otras ubicaciones, que proporciona una vista global útil de las ubicaciones locales y de red. También se han mejorado las operaciones largas (tales como copiar o mover un gran número de archivos): un botón muestra la información del progreso en la barra de cabecera, que muestra información más detallada cuando se pulsa. Esto le permite ver fácilmente el progreso de un vistazo, y evita que las ventanas de progreso estén en el medio.


También destaca la inclusión de LibreOffice 5, que cuenta con una nueva barra lateral que permite visualizar las vistas previas de los estilos, una nueva herramienta de edición de imágenes, mejoras en la lectura y escritura de una buena variedad de formato de archivos y soporte mejorado para pantallas HiDPI entre otras características notables de la versión.


También se incluyó Linux Vendor Firmware Service. Esta nueva herramienta permitirá mantener actualizado una buena variedad de firmware como por ejemplo, actualizaciones de la BIOS a través de las actualizaciones del sistema.

Fedora Server


Fedora Server destaca por la inclusión RoleKit, una interfaz que permite realizar despliegues rápidamente, así como Cockpit, una interfaz Web para la administración remota de servidores Linux.

Otros Sabores de Fedora


Además de Fedora "Gnome" también tenemos los spins actualizados de KDE, con la última versión de Plasma concretamente 5.40. Sin embargo, la mayor novedad es la disponibilidad de un spin "De fabrica" con Cinnamon instalado, sin duda, que será muy apreciado por la comunidad.

Puedes descargar Fedora desde:

Y los spins de Fedora (KDE, LXDE, XFCE y Cinnamon entre otros)

viernes, 23 de octubre de 2015

¿Por qué DNF es tan lento? Si Yum era tan bueno...

Primero un pequeño recuento de DNF: Originalmente nació como un fork de Yum (Exactamente 3.4) pero se modernizó... Es decir, Yum ya tenía sus años pesándole sobre la espalda y era necesario una herramienta actualizada, con API, documentación y bases tecnologícas (Python 2 y 3) más recientes y sólidas.


Así nació el proyecto DNF, incluyéndose por primera vez en Fedora 18 siendo opcional su instalación y prueba por parte de los usuarios de estas versiones... Y las subsiguientes. Sin embargo, ya en Fedora 22, unos dos años después, se dio por estable y lista para reemplazar a nuestro querido Yum.

La teoría nos dice que DNF debe ser más rápida que Yum en tareas como, por ejemplo, resolver las dependencias pero la sensación es que es poco perceptible este tipo de beneficios... Incluso por momentos he notado (Irónicamente) más lento que lo que podría hacer Yum, algo atribuible a lo jóven del proyecto (Que son ya varios años) pero que a futuro debería mejorar conforme se lanzan nuevas versiones.

¿Por qué DNF es tan lento?


No sucede a todos, no sucede siempre y no hay una causa específica por lo que no hay una solución concreta para solucionar los inconvenientes que ha venido presentando DNF, pero a continuación comparto con ustedes las posibles soluciones que más se han compartido en redes sociales y foros:

1. Limpia el caché de DNF

La solución más simple y sencilla, forzará a tu sistema a descargar nuevamente toda la metadata y posiblemente resolver sus problemas.

$ su -c 'dnf clean all'

2. Activa el plugin de fastest mirror.

Otra posible solución es escoger un espejo cercano que dismiuya los tiempos de latencia de red, DNF ya incluye fastest mirror en la paequetería estándar, solo basta editar el archivo:

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

Y allí modificar la propiedad:

fastestmirror=1

3. Utiliza DNF en modo IPv4

DNF por omisión intenta utilizar el protocolo IPv6 ¿Qué le hacemos? ¡Es el futuro! Pero algunas configuraciones locales de red y/o ISP no admiten este protocolo y bloquean las peticiones.

Para esto solo basta añadir el parámetro -4 para forzar a DNF a usar solo IPv4. Por ejemplo:

$ su -c 'dnf -4 update'

4. Que DNF te dé explicaciones

Si el error no se resuelve, quizá por debajo está pasando algo que no estemos siendo notificados, por ello, es mejor habilitar el modo "Verboso" de DNF para que nos dé más información:

$ su -c 'dnf update -vvv'

El -vvv habilita la máxima información posible que arroja la herramienta, con suerte, identificaremos cuál es el problema y a través de nuevos foros o páginas de ayuda, logremos resolver el problema.

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.