La verdad de los sistemas operativos, Linux para usuarios

Hay mucho fanático de Windows, Linux o MacOSX, yo he pasado años usando todos ellos y cada uno ha hecho sus cosas buenas y sus cosas malas. Para los que no los han probado pero tienen curiosidad, aquí van algunas opiniones. En este post hablaremos de Linux, filosofías aparte, para su uso como usuario.

Cuando hablamos de Linux, es muy difícil hablar de algo concreto. Este es uno de los problemas del Software Libre y del planteamiendo del GNU Linux, la costumbre de que cualquier grupo que quiere hacer su propia versión, personaliza y monta una distribución da libertad, si, pero para un usuario de a pie le confunde, cuando el usuario no es un friki o un fanático de la informática, no tiene porqué saber que no es lo mismo usar Ubuntu, que Lubuntu, que Kubuntu, que Fedora, Gentoo y tantos otros, pero lo cierto es que hay múltiples y grandes diferencias de una distribución a otra, tanto en aspecto como en uso, facilidad, manejo, y hasta aplicaciones completamente diferentes.

El mayor problema de Linux es que no ha sabido unificar.Y esto no es solo válido para la distribución, tenemos todo este amalgama de opciones en cualquier cosa, el sistema de sonido, el gestor de ventanas, de Escritorio, de practicamente cualquier cosa, por lo que tendremos que instalar un sinfín de versiones, software de todo tipo y configuraciones para que funcione tal o cual programa.

Para el usuario de a pie lo mejor es que escoja una de las distribuciones con más comunidad pero sobre todo con más soporte comercial, Ubuntu a cada versión mejora, aunque cometa errores y algún que otro acierto, es sin duda una de las distribuciones de referencia y que mejor acompañan a un usuario en su día a día. Además su apuesta por un SO que se adapte a Móvil, Tablet y PC está haciendo trabajar en el rendimiento de la distribución y en un mejor comportamiento para diferentes pantallas.

enter image description here

La leyenda urbana alrededor de Linux dice que es perfecto para equipos antiguos con pocos recursos y que se notará muy rápido ya que el 90% de los servidores funcionan con Linux.

Es un mito eso de que Linux ocupa pocos recursos, es cierto que hay distribuciones que se pueden instalar en ordenadores de decenas de años, pero es lo mismo que decir que Windows no se puede instalar en ordenadores antiguos (siempre nos quedará Windows XP, o incluso Windows 95 si aún tiene más años). Las distribuciones actuales requieren una buena gráfica, memoria ram, disco, etc para que tengan un comportamiento fluido e impecable, y siempre que tengamos los mejores drivers para Linux nuestra esperiencia de usuario será muy buena.

Linux para desarrollo web, cómodo de usar y mejores resultados.

Si eres programador web, seguramente este sea tu sistema operativo, ya que su cercanía a los servidores web nos permitirá trabajar directamente sobre un servidor como en un entorno de producción. Además existen editores multiplataforma como Sublime Text así como la mayoría de navegadores conocidos tienen versión para este Sistema Operativo, o bien podemos lanzarlo con un emulador.

Si no eres programador, pero te gusta cambiar el aspecto de tu sistema, iconos, fondos, colores y formas de las ventanas, una completa personalización, también te gustará usar una distribución Linux, aplicaciones como Gnome Tweak lo ponen fáciles para activar temas GTK, para cambiar todo el aspecto, o cambiar los paquetes de iconos.

El apoyo de los grandes como Google, Canonical, IBM, Valve, etc... ha hecho que mejore en rendimiento para entornos de usuario (algo que no se discute en entornos de servidor, pero que sí podemos discutir en entornos de escritorio).

Sin duda un sistema operativo que nos puede durar mucho tiempo.

Por supuesto el handicap aquí es que no tendremos software reconocido en la industria de la imagen y el vídeo, como Photoshop, o Premiere, o Microsoft Office, salvo que nos pongamos a emularlo, y logrando un rendimiento mucho menor, contaremos con alternativas menos conocidas pero igual de válidas que tendremos que aprender a fondo para sacarle el máximo partido, la ventaja, es que no tenemos que piratear ni paga nada por este software alternativo pues suele ser gratuito o de muy poco coste.

Android ha sido el triufo de Linux para el usuario, ha conseguido lo que ningún otro Linux ha podido, ser usado masivamente por cualquier usuario, con un amplio catálogo de aplicaciones propietarias de pago o gratuitas.

Android también funciona sobre Linux, pero no sigue la filosofía de la mayoría de distribuciones, ya que una capa por encima del Kernel gestiona la interfaz de usuario basada en un motor de compilación Java.

La verdad de los sistemas operativos, MacOSX

Después de unos cuantos años como usuario de MacOSX y desengañado en el último año tengo una opinión bastante forjada de las bondades y quebraderos de cabeza que pueda dar un MacOSX.

Los sistemas operativos de Apple siempre se han caracterizado por un buen rendimiento y optimizados para tareas gráficas y vídeo. Uno de los grandes avances y una apuesta de futuro fue la de apostar por un núcleo UNIX pero manteniendo una estupenda capa gráfica y una interfaz de usuario fácil de utilizar, así nació la serie MacOSX.

No os puedo mentir, el uso diario de un MacOSX como usuario o como programador supone toda una experiencia. El sistema operativo está concebido para una extrema facilidad de uso que podemos ver en cuanto intentamos instalar un programa, simplemente arrastrando y soltando a la carpeta de Aplicaciones, viene con una buena cantidad de aplicaciones útiles (un cliente de correo soberbio, visor de mapas, notas, visor de imágenes, etc...) y elementos que crees que nunca vas a poder separarte de ellos como Spotlight, la Vista Rápida (ver cualquier documento con la tecla espaciadora) o el Dock o barra de aplicaciones, mucho más vistosa pero a la vez extraordinariamente ligera y fácil de usar.

Desgraciadamente (no se si tendrá algo que ver) desde la muerte de Steve Jobs, mientras Microsoft hacía cada vez más ligero y rápido su Windows, MacOSX se ha vuelto más lento y con más retardos en tareas tan simples como ver el correo, abrir aplicaciones o el manejo día a día, requiriendo equipos más potentes. Y no porque tuviésemos equipos poco potentes.

He estado trabajando con MacOSX, programando y emulando Windows con aplicaciones sin ningún problema, pero de una versión a otra (de un día para otro) parecía que mi portátil hubiese envejecido varios años y su rendimiento cada vez peor. Mavericks, Yosemite, han añadido pocas mejoras, solo unas pequeñas aplicaciones y algunas ideas de iPhone pero además mayores requerimientos que de forma extraña nunca resultan suficientes...

Cuando empezaron las actualizaciones a Mavericks se encontraban por la red quejas de usuarios con equipos de Apple con 32GB de RAM y potentes procesadores que funcionaban apreciablemente lento una vez actualizados.

Parece que todo haya funcionado bien hasta las versiones 10.8.x, y a partir de aquí cometiendo los errores que en el pasado se atribuían a Microsoft.

Aún así, MacOSX tiene muchos puntos a favor, el corazón UNIX permite qe podamos programar web como si fuese Linux, existen muchas aplicaciones equivalentes y las rutas de los ficheros son similares aunque la parte UNIX suele estar oculta para el usuario, mostrando únicamente las carpetas que le interesa. Las aplicaciones de MacOSX suelen acompañar en intefaz gráfica y facilidad de manejo, los programadores de aplicaciones para MacOSX suelen hacer muy buenas aplicaciones y de las que los usuarios de Windows y Linux suelen ver con envidia.

El precio del software libre para un programador

A menudo mantenemos la relación (incluso en el mundillo de la informática) de Software Libre igual a GRATIS, oigo multitud de clientes que me comentan "Usa software libre que es gratis y así abaratamos".

Por lo general la forma de discutir esto siempre comienza por Libre es distinto de GRATIS, y que viene de una mala traducción de la palabra FREE en Free Software, la denominación en inglés. Pero aún así, cuando pensamos en Software Libre, pensamos en gratis.

Ahora bien, este planteamiento, no es del todo inválido, pues efectivamente, el Software Libre por lo general no implica un deselvolso de dinero inicial o pago por uso (digo por lo general, lo que no es en todos los casos). Pero esto no quita que, primero, no haya costado tiempo y esfuerzo de alguien el producirlo (y por lo tanto dinero), y segundo, que si en algún momento detectamos un problema y como programadores decidimos resolverlo pues lo usamos en algún proyecto propio, es responsabilidad nuestra también comunicar estos cambios a los creadores originales para que puedan añadir nuestras mejoras.

A menudo en DIGIO hemos mejorado multitud de herramientas de Software Libre y en muchas ocasiones por falta de tiempo, no caemos en la cuenta que comunicar y pasar las mejoras al proyecto original es una responsabilidad, sino que además repercute en mejoras futuras que pueden hacer otros sobre nuestros cambios que de otra manera, no obtendríamos, por lo que es una apuesta por ahorrarnos esfuerzo y trabajo en el futuro.

El coste de comunicar estos cambios a los proyectos de Software Libre suele ser siempre mucho menor que el coste de las mejoras futuras que obtendremos. Y en caso contrario aunque solo sea porque nuestro esfuerzo y dedicación no desaparezca con nuestro proyecto, sino que otros puedan aprovechar nuestro trabajo para mejorarlo y continuarlo.

Todo el que me conoce sabe que no soy un completo fanático del Software Libre, lo uso y he colaborado y aportado muchos cambios en muchos proyectos, pero eso no quita que no pueda ver puntos flacos en el planteamiento como excesiva fragmentación en proyectos derivados, mayor carga de correos (no os podéis imaginar la cantidad de correos que pueden llegar de Github, en cuanto uno hace grandes colaboraciones en proyectos de Software Libre, pero creo que es importante que el trabajo que hacemos tenga más vida fuera de lo poco que podamos desarrollar de forma interna y es el precio que debemos de pagar por desarrollar con Software Libre.

Servicios web JSONP y AJAX – iframe fácil en CodeIgniter

Aunque hace bastante tiempo de esto, aún tiene mucha utilidad. Se ha convertido en una costumbre que las aplicaciones webs estén pobladas de consultas o peticiones AJAX, cargando inicialmente una plantilla, y actualizando los contenidos mediante consultas o peticiones asíncronas.

Cuando queremos subir ficheros en segundo plano sin realizar la carga, en cambio no podemos usar AJAX, teniendo que remitirnos al File API de HTML5 o bien buscar una técnica alternativa que permita enviar un formulario con un formulario en multipart en segundo plano. Esto se puede conseguir mediante iframes, la técnica se basa en crear un iframe no visible (que no oculto, si está display:hidden no funcionará), de un tamaño de 0 pixeles y sin bordes conseguiremos un iframe funcional pero que no es visible por el usuario. Si indicamos como target de un formulario multipart este iframe, podremos subir un fichero sin recargar la página.

El problema será entonces conocer el momento en que el archivo se ha terminado de subir, para esto la respuesta cargada en el iframe debe ejecutar una llamada JavaScript definida en la ventana padre, que como si fuese una función de Callback se ejecutará cuando tengamos subido el fichero.

Poder obtener datos en JavaScript entre diferentes dominios permitirá crear fácilmente servicios web en formato JSON, a esta técnica se le denomina JSONP, consiste en devolver no un objeto JavaScript sino la llamada a una función con el nombre que escojamos (función callback) pasando como parámetro este objeto. Cuando cargamos una url con la llamada al servicio lanzaremos la ejecución de la función de callback con los datos que esperamos de respuesta. Esto ya lo hace jQuery por detrás cuando ejecutamos el método $.getScript generando una función con un nombre aleatorio.

Para todo esto tenemos una librería que nos ayudará para generar respuestas en formato JSON, JSONP, XML y respuestas a través de iframes, si usamos CodeIgniter 2 o superior, mediante Spark/ajax disponemos de una serie de funciones helpers y métodos útiles para generar respuestas válidas en JSONP, envío de respuestas dentro de un iframe o respuestas en XML.

Con un método $this->ajax->response() podremos generar respuestas para enviar como JSON, JSONP, extender un objeto JS con jQuery, asignar datos generados a una variable, o generar respuestas en XML a partir de un objeto PHP.

Por ejemplo queremos cargar las cadenas de traducción de un array PHP a una variable JavaScript, podríamos añadir una carga de script en HTML

<code>< script type="text/javascript" src="http://url/controller/method">
</code>

y que este método PHP devuelva los datos en una variable:

<code>$this->ajax->response($array_traduccion, null, TRUE, "varjs");
</code>

Esto cargará los datos en varjs para poder usarlo en JavaScript. Esto funcionaría también en cualquier dominio, por lo que sería cross-domain.

Buenos propósitos

Comienza el año y vamos con web nueva, simple, simplísima, solo un blog y poco más, por ahora… El problema de un programador web es que nunca es suficiente para su página web, lo que, unido a mi falta de tiempo, se convertía en un contínuo “y si le pongo esto y esto otro…”, “necesito sacar más tiempo para montar una página web que se vea fantástica…” y finalmente nunca la terminaba porque nunca era suficiente.

Así que nos tiramos de cabeza al minimalismo y empezamos un nuevo sitio, borrón y cuenta nueva.

Intentaré ser regular y escribiré cada poco tiempo pues tengo comprobado que blog que no se actualiza, se queda en el olvido, y con este sería ya el 4 blog que comienzo más no sé que versión de página web.