viernes, 29 de enero de 2016

Poner el botón compartir en Facebook, en tu página web cuya dirección URL se genera dinámicamente


Uno de los objetivos de tener un sitio web es que la gente lo vea. Quieres que tu trabajo se vea y pueda ser disfrutado por los demás , más si tienes algo importante que compartir.

Hay varias fuentes de tráfico en la red. Una de las principales, es el buscador de Google, el principal portal de acceso a la información en la Web. En cuanto a eso, no tienes mucho control. Google revisa periódicamente las páginas web, por medio de un  programita llamado GoogleBot , que en robot o programa de rastreo, cuya misión es indexar el contenido de las millones de páginas web que existen. Este amigo le dice a Google que hay en tu página, y mediante su poderoso algoritmo Google decide que tan relevante es tu página.

Todo esto se hace en automático, no tienes mucho control sobre ello. Es cierto existen trucos  y sugerencias que te dicen cómo construir tu sitio para que sea atractivo para Google y atraer tráfico.

 Pero vayamos a otra importante fuente de tráfico. Cada vez más, la red es social. Y Facebook está a la cabeza en cuanto a redes sociales se refiere.  Una vez que atrajiste a usuario a tu página, es importante que ellos puedan compartir tus contenidos en las redes sociales.

Una de las mejores herramientas para lograr esto, es el botón "Compartir" de Facebook. Facebook ha hecho muy fácil su integración a las páginas web, después de todo le interesa que utilizes su plataforma social y compartas tus contenidos.

De hecho tiene una página web que te guía en la creación  de tu botón.


Como puedes ver es bastante sencillo, solo tienes que darle tu url, y seleccionar entre los diversos tipos de botón disponibles.

Las opciones disponibles son:
  • 'box count': aparecerá el botón de compartir, el icono de facebook y texto 'compartir', y sobre este una cajita que mostrará el número de veces que se ha compartido.



  • 'button count': es similar, pero el número de veces que ha sido compartido aparece a la derecha.



  • 'button': solo aparece el botón sin el contador de veces compartido.



  • 'icon link': muestra un botón con únicamente el icono de Facebook, y fuera de ese botón un enlace con el texto 'Compartir'


  • 'icon': solo muestra el botón con el icono de Facebook


  • 'link': aquí no muestra ningún icono, lo que muestra es un enlace con el texto 'compartir en Facebook'


La parte importante aquí es el botón GetCode. Este te permite tener el código fuente que insertaras en tu página. En esta página, te enseñan también como hacer este proceso.

Veamos nuestro código. En realidad Facebook te genera 2 piezas de código. La primera es un script de JavaScript que se encargara del funcionamiento de tu boton:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/es_LA/sdk.js#xfbml=1&version=v2.5";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

La siguiente pieza de código, es el código HTML para crear tu botón. En este caso, yo elegí el button count, pero el código es similar para cada caso.

Aquí es donde entra el punto de nuestro direccionamiento dinámico. La mayoría de las páginas webs modernas, son de tipo dinámico, es decir cambian su presentación de acuerdo a ciertos parámetros que ingresa el usuario.

Para construir este tipo de páginas, generalmente usaremos algun lenguaje de programación como PHP. Además se le enviaran por lo general parámetros de entrada ya sea mediante GET o POST.

Por lo tanto la URL de nuestra página no es estática, es dinámica. Cada vez que entro a mi página, la URL es diferente, ya que en la URL suelen ir contenidos los parámetros que esta recibiendo mi página.  

¿Cómo me ayuda esto? Bueno por ejemplo, yo he construido un sitio de una tienda en línea. Uso una página genérica llamada art, para mostrar la información del articulo. Pero es un página que se genera dinámicamente, cada que entras recibe como parámetro el número de artículo, el nombre, el color. De esa manera efectua una consulta a la base de datos y trae la información del artículo, y las imágenes correspondientes. Así con una página genérica, puedo presentar mi universo de artículos.

Mi URL quedaría más o menos así con un ejemplo:

https://www.jrwestern.com.mx/art/1466/SOMBRERO_VAQUERO_WRANGLER_LAB88-10_TEJANA?c=SILVER_BELLY

Y por supuesto, la URL sería completamente diferente con otro artículo. ¿Ya notaste el problema con Facebook?

Pues si, tu le pasaste una dirección URL absoluta en el formulario, pero tu página es dinámica. Y Facebook en el código que te entrega , te da tu URL absoluta. La solución es muy sencilla. Simplemente, borra la URL que te entrego Facebook. Y en lugar de pegar el código HTML que te dieron directamente, crealo con PHP.

Recuerda que este es el código para crear tu botón, así que posicionalo en donde quieres que aparezca. Y recuerda, PHP y HTML se ejecutan en orden. Es decir, todo el código PHP va generando tu HTML en el lugar donde lo pones.

Así que una vez ubicado el lugar donde debe ir tu código pon estas líneas:


<?php 
    $url_actual = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
   echo '<div class="fb-share-button" style="float:right;margin: 0 auto 0 auto;margin-left:auto;margin-right:auto;" data-href="'.$url_actual.'" data-layout="button_count"></div>'; ?>

Lo único que estás haciendo, es obtener tu URL dinámicamente con PHP. en la variable $url_actual guardas la dirección que obtuviste de las variables "SERVER_NAME"  Y "REQUEST_URI".

Para una mejor explicación del uso de la variable $SERVER, lee estos enlaces:
Enlace 1
Enlace 2
Enlace 3

Una vez hecho esto, creas tu HTML dinámicamente, y le pegas la URL actual que está en la variable, en lugar de poner la estática que Facebook te dio. Una vez hecho esto, el botón compartir, también se actualiza dinámicamente cada que cargas la página. Cada que compartas, estas compartiendo una versión específica de la página, con las variables de entrada consiguientes.

¿Sencillo no? !A programar!





jueves, 28 de enero de 2016

Incluir archivos JavaScript y CSS ( Cascading Style Sheets) en mi sitio web

HTML es la base de la web. Prácticamente para desarrollar un sitio web básico, solo necesitas HTML.

Pero si quieres hacer un sitio más robusto y dinámico, será bueno que vayas incluyendo otros elementos. Un buen primer paso es incluir código PHP. Además sería bueno también incluir código JavaScript si quieres que sea más interactivo.

Y finalmente para el diseño, es bueno incluir también archivos CSS. Por supuesto, casi todas las funciones de CSS las puedes ejecutar desde el mismo HTML.

Pero imagina que tienes tu página. Empiezas con lo básico, HTML. Y decides mezclarlo con algo de PHP. Después decides que es bueno también ejecutar algunos scripts mientras tu página esta cargada en el navegador para que el usuario interactúe. Le metes JavaScript. Y entonces piensas en el diseño, quieres que tu página sea bonita y llamativa. Le metes diseño en el HMTL modificando los elementos que tienes.

HTML de por sí, no es el lenguaje más legible y limpio del mundo. Y ahora piensa en todo lo que has hecho, has mezclado 3 lenguajes diferentes y varios elementos de diseño en tu página. Imagina ahora que un programador quiere modificar tu página, o tu mismo después de varios meses. ¿Se va volviendo una pesadilla, no?

Queremos siempre usar buenas prácticas, y que el código sea lo más legible posible. Una buena estrategia, es separar las partes que no son esenciales, y que pueden tenerse fuera del archivo que forma nuestra página web. Es por eso que en un sitio normal, existen diversas clases de archivos, como explique en otro post.

Entonces la estrategia básica debe ser esta: poner PHP y HTML en el archivo que construirá nuestra página web, poner los elementos de diseño en un archivo CSS, y poner el código JavaScript en un archivo JS.

No tiene caso separar PHP y HTML, porque como ya he explicado en otras entradas, si al navegador le entregas PHP no lo entiende. Así que no puedo entregarle PHP. Será mejor dejarlo en el archivo principal, para que mi servidor lo utilice al momento que genera la página en HTML.

Por supuesto, a veces tengo pequeños archivos solo con código PHP que se ejecutan en el servidor, para usarlos como funciones, en especial si uso AJAX.

Una ventaja de separar JavaScript en archivos JS y el diseño en archivos CSS, es que puedo tener un solo archivo JS para todo mi sitio web, y un solo archivo CSS. Generalmente un sitio se compone de varias páginas contenidas en archivos .html o .php; pero casi siempre tengo solo un archivo JS y CSS, para darle mayor legibilidad.

Todas mis páginas acudirán al mismo archivo JS o CSS en caso de necesitarlo.

¿Cómo incluyo o cómo llamo estos archivos desde mi HTML?

Simple, con estas 2 líneas:

<link rel='stylesheet' id='style-css' href='includes/css/ejemplo.css' type='text/css' media='all'

<script type='text/javascript' src='includes/js/ejemplo.js'></script>

¿Sencillo, no?

En la primera línea, incluyo mi CSS. Es importante, indicar en la propiedad href, el path dentro mi directorio del sitio, donde esta mi archivo.

En la segunda línea incluyo mi archivo JS. En la propiedad src, indico así mismo el path donde se encuentra.

Es muy útil siempre tener todo bien organizado, y así construir un sitio web mas limpio.

Para mas ventajas e información acerca de incluir archivos JS y CSS, estos 2 enlaces:
Incluir archivos JavaScript
Incluir archivos JavaScript y CSS



miércoles, 27 de enero de 2016

Los 3 tipos de archivos principales que componen un sitio web

Vamos a lo básico. Digamos que estás empezando a desarrollar páginas web. Como he mostrado en una entrada anterior, la programación web es algo complejo. Si quieres que tu página sea robusta y dinámica, por lo general usarás varios lenguajes de programación.

Pero no solo eso. Una página web, tranquilamente puede ser la mezcla de varios lenguajes. Empiezas con PHP, sigues con JavaScript, metes HTML, e insertas otro poco de PHP. El problema con todo eso, es que en efecto el código es difícil de leer y es difícil seguir su ejecución.

A veces, no puedes evitarlo, es necesario que uses este enfoque . ¿Pero no sería mejor tener todo separado y en orden? Bueno eso ayudaría un poco a la legibilidad....aunque en realidad no te ayudara a entender el orden de ejecución. Eso es un esquema mental que debes siempre tener bien definido en tu cabeza.

Es por eso que los sitios web, suelen estar construidos en base a varios archivos. Con el fin de tener todo ordenado y lo más limpio posible.

Por supuesto, podrías tenerlo todo simplemente en HTML, pero tu página no hará mucho entonces, y queremos un sitio interactivo y poderoso.

El día de hoy mencionaré los 3 tipos principales de archivos que se utilizan para construir un sitio web.

1.- Archivos PHP


Cierto, ya mencione que HTML es la base de la web. Pero yo en lo personal, no uso casi archivos HTML. ¿Por qué? Porque un archivo PHP puede hacer lo mismo que un archivo HTML , y más. Casi todo el código HTML, lo escribo dentro de mis archivos php, donde además escribo código PHP. Por supuesto, el navegador solo va a ver HTML. Ocasionalmente añado un poco de Javascript. Prácticamente todo un sitio puede estar construido únicamente con archivos PHP.

Muchas páginas están en este formato, es muy común en tu barra de direcciones, que te encuentres con archivos .php en lugar del .html que esperas (si no lo has visto observa más seguido tu barra de direcciones). Sobre todo si el sitio es complejo e interactivo.

Pero quizá quieres algo más. Muchos sitios tienen otro tipo de archivos.


2.- Archivos JS


Un archivo JS es un archivo que contiene código JavaScript. Cierto ya dijimos que el código JavaScript tranquilamente puede ir en un archivo PHP o HTML. ¿Por qué separarlo entonces?

Bueno para ordenar mejor nuestro sitio. Además nos permite separar la estructura de la página como tal de los scripts que corre en tiempo de ejecución. Imagina además que quieres un script que esté disponible para varias páginas, ya que contiene rutinas que se utilizan de manera habitual. Una solución elegante es crear varios archivos HTML o PHP que llamen a un archivo JS que contiene el código JavaScript.


3.- Archivos CSS


Ya hablamos de los lenguajes de programación. Pero un sitio web no es solo eso. Mucho de la esencia de las páginas web es la presentación y el diseño. Desde HTML se ha podido siempre dar formato a nuestra página: definir tamaños, estilos de letra, colores de fondo, alineación de los elementos, etc.

En un principio las páginas eran muy sencillas. Letras, imágenes, elementos de control como botones o checkbox, y poco más. Pero la web se fue haciendo más robusta. Sonidos, videos, animaciones, etc.

Y se esperaba poder ajustar cada vez más el formato y diseño de los elementos en pantalla. Pronto, todo ese formato provocó que los tag HTML fueran cada vez más grandes. 

Desde hace mucho tiempo se venía pensando en separar la estructura de la página web de su presentación. HTML debería definir qué elementos contiene la página, pero la presentación y formato de los mismos, debería poder escribirse aparte. Así en diciembre de 1996, la W3C recomienda la primera versión de CSS.

CSS (cascading style sheets)  no es más que un lenguaje que sirve para diseñar y definir el estilo de los diferentes elementos que componen una página web. Posición, tamaño, color, animaciones, en fin todo lo que puedas imaginar que tiene que ver con el diseño.

De esta manera en el archivo HTML escribes solo que elementos tiene tu página, y en el archivo CSS defines el formato de dichos elementos. Un archivo CSS no es más que un archivo de diseño. Todo lo que define tiene que ver con la presentación de los elementos, no contiene código que sea ejecutable. 

Bueno en principio, toma CSS como la definición de cómo son los objetos en tu página web. Por supuesto tus objetos responden a eventos, y CSS permite incluso definir como cambian tus objetos al ejecutarles cierta acción. Por ejemplo, digamos que quieres que una imagen cambie de tamaño al pasarle el cursor por encima. O que un texto cambie de color al dejar de hacer foco en el. Por supuesto todas las acciones que ejecuta CSS tienen que ver con el diseño de los elementos de tu página. Puedes entonces usar CSS incluso para hacer pequeñas animaciones.

Y por eso CSS es importante. Así que los mas habitual es que un buen sitio web tenga también sus archivos CSS.

Así que lo más normal, cuando exploras el directorio en que está guardado tu sitio web, es que encuentres este tipo de archivos.

Una nota adicional. Al acceder al directorio donde esta tu sitio web, veras muchos archivos. Generalmente, cada página web se guarda en un archivo ya sea HTML o PHP. Además están los archivos JS y CSS.  Pero recuerda: el archivo index es el primero en ejecutarse, generalmente. Desde ese archivo, puedes ir llamando tus CSS y JS y las demás páginas. 

No pierdas de vista eso, y seguro se te hará mas comprensible el funcionamiento del sitio.




martes, 26 de enero de 2016

Mi experiencia en MotoMaker (México)


Moto Maker es una revolucionaria experiencia por parte de Motorola (ahora adquirida por Lenovo), que permite al usuario "diseñar" su propio teléfono a su gusto.

El servicio fue lanzado en Estados Unidos inicialmente. y posteriormente en Julio de 2014 hace su llegada a México.

Cuenta con el catálogo de los siguientes productos de Motorola: Moto X Play, Moto X Style, Moto X Force. Moto G, Moto Maxx, Moto E y el smartwatch Moto 360.

Decidí probarlo, ya que el diseño en general de Motorola me parece muy bueno y los precios son relativamente accesibles incluso en los terminales de gama alta.

En mi caso elegí el Moto X Style, el gama alta de Motorola con un excelente precio.

Moto Maker tiene una página de diseño, donde se encuentran los diversos elementos que puedes personalizar de tu teléfono: frente y marco, atras, detalles, firma y encendido. Todo esto enfocado a el aspecto que tendrá tu teléfono.



En la primera opción, Frente y Marco, contamos con 3 opciones:Blanco y plata, Blanco y champaña, y Negro y Gris.

Algo muy importante, es que cada que vas cambiando la opción tu teléfono se va diseñando, y la imagen que tienes del lado izquierdo va cambiando de acuerdo a tu selección.


Ahora pasamos a la opción Atrás. Es aquí donde entra mayor variedad, ya que existen las opciones de los materiales premium. El marco de nuestro Moto Xtyle es totalmente metálico, pero la parte trasera la podemos elegir.

Tenemos el clásico material de goma, con un acabado con textura para darle un aspecto premium, llamado "Agarre Suave", el cual viene en una amplia variedad de colores. Además cuenta con la opción de Cuero, en 4 colores diferentes. Y la opción "Natural", que no es otra que una tapa hecha de madera de bambú (resistente por supuesto), en 4 acabados diferentes.

Es aquí donde entra tu estilo, para que lo vayas diseñando a tu gusto. Por supuesto, por los materiales premium el costo del terminal se eleva.



La última sección de diseño del aspecto del terminal propiamente dicha, es la sección de Detalles.

Aquí entre el acabado de la parte metálica de tu teléfono, que incluye la que rodea al lente de la cámara y el logo de Motorola.

Como ves, las combinaciones son bastantes, el diseño puede salir tan llamativo, estrafalario o elegante según tu lo desees.


Pero aún no hemos terminado. Los Moto, son los terminales más personalizables que existen. Recuerda ahora ya eres un diseñador exclusivo. Este terminal es único el el mundo, para personas que les gusta ser diferentes. !Ponle tu sello!

Para eso está la opción Firma. Si, este diseño, único en el mundo, llevará tu firma. Hazlo tuyo.


Ahora si que puedes decir que tienes un terminal único. Tu firma de diseñador va impresa en el.

Pero tu Moto X Style no es solo tuyo por fuera. También puedes personalizarlo por dentro. Primero que nada, el mensaje de bienvenida.


Y por supuesto, vamos a lo técnico. Es cierto, no puedes modificar su CPU (tiene un chip Qualcomm Snapdragon 808 de 1,8 GHz con CPU hexa-core), su GPU (600Mhz Adreno 418) o su memoria RAM de 3GB. Pero si puedes elegir la memoria interna que tendrá tu Moto X Style, Y con lo enormes que son las apps hoy en día, darás gracias de contar con mucho espacio interno. Aunque claro, el Moto X Style cuenta con ranura para tarjetas SD (un acierto de Motorola), pero siempre más memoria es mejor.

Por supuesto todo en esta vida tiene un costo, y si quieres mas memoria el costo subirá. En este momento se manejan 32 GB o 64 GB de memoria interna.




Aquí termina el proceso de personalización de tu celular Moto. El siguiente paso , es llenar tus datos, y por supuesto pagar. Para hacer todo esto, primero tendrás que estar logueado en la página de Moto Maker. Por suerte Motorola se entiende con Google, así que puedes usar tu cuenta de GMAIL/Android, que muy probablemente ya tienes, para loguearte.

Los métodos de pago, son como en cualquier página de e-commerce. A mi me funciono muy bien el pago con tarjeta de débito, en mi caso de BANCOMER.

Motorola de inmediato te envía un correo de confirmación de que tu pago esta hecho.



 Asimismo otro mail indicando que se ha empezado el proceso de fabricación de tu teléfono


Por su puesto, en tu historial de pedidos, puedes checar en todo momento tu pedido.


Y si quieres checar mas a detalle el status. puedes dar click en el botón Estado del Pedido, el cual te mostrará de forma gráfica, cómo ha sido la evolución del estado de tu pedido. Los status son: Pedido realizado, Pedido aprobado, Dispositivo en fabricación, Pedido completado, En tránsito y Entregado.

De esa manera tienes la confianza de que en Motorola le están dando seguimiento.



En caso , me sorprendió que solo tomó un día la fabricación de mi dispositivo. Al día siguiente, tenían el dispositivo listo para su envío.

Una vez que han entregado el pedido al sistema de paqueteria, en este caso FedEx., te proporcionan el número de seguimiento y el enlace para rastrearlo directamente en la página de Fed Ex.


Lo primero que me alarmó, es que los envíos se hacen desde Shenzhen, China. En efecto, Motorola a cerrado otras fábricas y ha concentrado la producción en China. Lo que no significa nada en especial, pues todos los productos de alta calidad ya se fabrican en China.

El único inconveniente , pensé: el tiempo que tardará, y quizá los problemas para entrar a México (aduanas).

Pero, Fed Ex es legendaria en cuanto a eficiencia y tiempos de entrega y lo sigue demostrando. El pago del envio por cierto, viene incluido en el precio del Moto X Style, lo que es genial.

El tiempo que hizo mi paquete desde Hong Kong, pasando por Memphis Tenesse, hasta llegar a Toluca, fue menos de 2 días.

El único pequeño inconveniente, es que en la aduana en México lo retrasaron un poco, pero FedEx se hace cargo de todo. No hay que preocuparse si aparece que el paquete está detenido en la aduana, solo tienes que esperar un poco. Así que con todo y esos aprox 2 dias de retraso, el paquete me llego en solo una semana.

Lo primero que llama la atención es la caja del Moto Xstyle, grande y bien diseñada, respetando el estilo de Motorola.

Al abrirla esta tu Moto X Style, incluye cargador e incluso un pequeño protector para el marco que viene incluido gratis.



El diseño es justo como lo pides. Se nota la calidad de los acabados metálicos, y el teléfono se ve increíble con tu firma personal.

La experiencia Android es justo como debe ser: un terminal limpio y rápido. Ayudan mucho sus 3 GB de RAM. La interfaz minimalista se ve genial con la pantalla  de 5.7 pulgadas en Quad HD DE 520 ppi. Las imágenes son nítidas, claras y brillantes.

Si has tenido Android, el terminal en automático se conecta al backup de los servidores de Google: baja tus contactos , configuraciones, y te da a elegir cuales de tus apps anteriores quieres instalar en tu nuevo teléfono en automático. Así en minutos, tenía mi Moto X Style totalmente listo y funcional, con todas mis preferencias.

Otro plus es su magnifica camara de 21 Mpx. que graba Vídeo HD 1080p (30fps)  o Vídeo 4K (30fps) . Y su cámara delantera de 5 Mpx.

Puedo decir que en lo general mi experiencia con Moto Maker y con el Moto X Style ha sido 10/10. Cien por ciento de satisfacción.

Si lo tuyo es ser diferente, quieres sacar al diseñador que llevas dentro....o simplemente quieres un magnifico teléfono a precio justo, Moto Maker te espera.
















viernes, 22 de enero de 2016

Ejecutar cualquier archivo php, y cualquier función personalizada dentro del archivo con PHP con un script de control

Generalmente un sitio se compone de varias páginas web, que en su momento serán llamadas para su consiguiente ejecución.

Imagina que quieres crear un script de control al que solo le pasarás como parámetro el nombre del archivo que quieres ejecutar y que se encargue de llamar a las distintas páginas. Quizá no parece muy útil, acaso sería más fácil  indicar directamente qué página queremos llamar.

Pongamoslo un poco más difícil. Digamos que en cada script de PHP , tienes diferentes funciones, para ejecutar diversas acciones. Por ejemplo una función VerPagina(), que se encarga de cargar los elementos de la página web. Digamos que deseas pasar a tu script de control también la función a ejecutar como otro parámetro, así ejecutarás una función en específico dentro de tu script PHP al que llames. Ahora ya va tomando forma por qué usar un solo script para controlar todas las llamadas a las páginas, pues te vas ahorrando un poco de código.

Pero compliquemoslo un poco más. Digamos que en tu script de PHP tienes funciones que no reciben ningún parámetro, y otras que sí reciben. Tu quieres llamar a tu script de control genérico, pasarle o no parámetros para la función a ejecutar, y que él decida si debe o no enviarlos. ¿Ya está bien , no? Bueno en realidad podríamos complicarlo un poco más, eligiendo también pasar un número variable de parámetros, pero no lo llevare a ese nivel de complejidad. Lo que hice para solucionar esto, fue pasarle a todas mis funciones un solo parámetro: un string con todos los parámetros, usando como separador de parámetros un carácter definido, en este caso "|". Si ya recordaste, en el mundo de la programación web y cuando nos comunicamos entre páginas, básicamente le enviamos strings, nada de integer, boolean, o float; así que mandarle un solo string con todos los parámetros es una buena solución. Ya en mi script receptor me encargo de partir el string y asignarlo a diferentes variables como corresponde. Esta es una solución muy usual.

Teniendo ya definidos los requerimientos de mi script de control, quedaría así:

$script = 'jspSrc/'.$_REQUEST['src'].'.php';
$funcion = $_REQUEST['fnc'];
$param = isset($_REQUEST['arg']) ? $_REQUEST['arg'] : ''; //los parámetros que mandare a la función
        
require ($script);
        
if ($param != "")
         call_user_func($funcion, $param);  //funcion con parametros
else
call_user_func($funcion);  //función simple

Cuando llamo a este script, si quiero que funcione correctamente, debo al menos mandarle los parámetros 'src' y 'fnc', siendo el parámetro 'arg' opcional. Un ejemplo de cómo podría llamarlo;

src='InvArticulos';
fnc='VerArticulos';
query"WHERE 1=1";

$.get("AppGetSrc.php", {src: src, fnc: fnc, arg:query}

Esta llamada la ejecute desde Javascript, mediante el método GET, le envíe los 3 parámetros al script AppGetSrc.php, que es mi script de control.

En mi script de PHP la variable $script contendrá la ruta de mi archivo PHP a llamar, esta puede ser modificable de acuerdo a donde este guardado el archivo, y solo uso el parámetro 'src' recibido vía GET para indicar el nombre del archivo.

En la variable $funcion guardo el nombre de la función a llamar dentro del archivo.

Finalmente como el parámetro 'arg' es opcional, al momento de asignarlo a la variable $param, lo hago de manera condicional, verifico con isset si me llego dicho parámetro vía GET, si existe lo seteo en la variable, si no simplemente dejo la variable en blanco.

Al hacer require ($script) estoy diciendo que llame al archivo que tengo indicado en la variable $script.

Después de manera condicional, si tengo seteado algo en la variable $param, llamo a la función definida por el usuario con call_user_func dándole como argumento el nombre de la función y el parámetro a enviarle; si no tengo nada en $param solo llamo la función sin mandarle un argumento.

Call_user_func es una función de PHP que me permite ejecutar cualquier función simplemente indicandole el nombre de la misma. De esa forma de manera dinámica en tiempo de ejecución, puedo decidir qué función ejecutar. Para más información sobre el usa de call_user_func, leer aquí.

En mi ejemplo ejecute el archivo InvArticulos.php, llamando la función VerArticulos, enviandole el string "WHERE 1=1" como argumento.

Quedo listo nuestro script de control. ¿Quieres mejorarlo? Adelante, !A programar!


jueves, 21 de enero de 2016

3 componentes que Android debería traer de fábrica

Android ya tiene casi 8 años en el mercado. En ese tiempo ha experimentado una vertiginosa evolución. No solo en cuota de mercado, dominando el escenario global, también ne funcionalidades. La última gran revolución, Material Design, transformó a Android en el sistema operativo mas bello a nivel visual.

En Google se han convertido en expertos en desarrollo de software, dejando muy por debajo a empresas como Microsoft que dominaban en ese rubro.

De hecho cuando Android salio, sin duda tomó prestados conceptos de windows, como iconos, escritorios, etc.

Pero al día de hoy, todavía me sorprende que haya componentes que Android no incluya de fábrica. Es cierto, puedes instalarlos y en Google Play hay muchas opciones.

Entiendo que partiendo de la filosofía de Linux, todo es un componente y todo es modificable....¿pero por que no incluir de fábrica en Android, componentes que se antojan esenciales?


1.- Sistema Multi-Ventana


Quienes hemos tenido un celular de la gama Galaxy S, o Galaxy Note, sabemos que Samsung ha dotado a sus móviles de un innovador sistema multiventana que nos permite tener 2 aplicaciones abiertas a la vez.

Desde el principio, Android ha sido un sistema multitarea, que gestiona el uso de multiples tareas simultaneamente mucho mejor que la competencia, como es el caso de IOS.

Con las pantallas cada vez mas grandes, tiene mucho sentido utilizar un sistema multiventana ¿Por que Android no lo incorpora de manera nativa al sistema?

Por supuesto, siempre puede haber alguna app para hacer el truco, pero me gustaría ver este tipo de cosas integradas en el sistema.


2.- Administrador de Archivos


Una de mis primeras sorpresas con Android, fue encontrarme con que no traía un navegador de archivos de manera nativa.

Viniendo de Windows, estás acostumbrado a que el explorador de archivos sea parte integral del sistema. Después de todo ¿como va el usuario a explorar y ver que hay en su PC?

Por supuesto, la mayoría de los tablets y smartphones, traen un navegador de archivos que ha sido instalado/desarrollado por el mismo fabricante. En unos cuantos casos, no traen nada y no tienes idea de como ver tu sistema de archivos. Claro , abres Google Play y te encuentras con que hay cientos de opciones, algunas muy buenas.

¿Pero sería tan difícil que Google desarrollara un buen explorador de archivos? Me parece que podría tener el diseño minimalista, sencillo, limpio, útil y eficaz que caracteriza a los productos de Google. Sería algo que haría muy atractivo el sistema, sobre todo teniendo en cuenta que es una utilidad básica.



3.- Papelera de Reciclaje


¿Cuantas veces no nos ha salvado la papelera de reciclaje de windows? De hecho siempre es bueno tener ese respaldo, para que cuando tu hermanito, o tu mama, o alguien borre por error algo, tengas posibilidad de recuperarlo fácilmente.

La siempre presente papelera, te da una gran seguridad en tu trabajo día a día. ¿Por que Android no incluye de fábrica esta utilidad? Es cierto, en la Google Play Store hay cientos de opciones, como esta.

Pero creo que es una utilidad que bien podría venir integrada en el sistema.






miércoles, 20 de enero de 2016

Por qué Android triunfó, donde Linux no

En una entrada anterior, comentaba algunas de las ventajas del sistema Linux, que permitieron triunfar a Android.

Pero como también mencione, hasta el momento Linux no ha podido triunfar en el escritorio. Mucha gente común, no tuvo ningún encuentro con él hasta que tuvo un Android.

Google sabía bien que Linux nunca ha tenido un buen momento en el mercado de la PC. Sin embargo atajó las "desventajas" que no han permitido a Linux afianzarse en el gusto de la gente ¿Que tiene Android, que Linux en general no tiene?

1.- El respaldo de una gran empresa


Aunque no sea del todo lógico, la gente no se siente a gusto con un producto desarrollado por amateurs, le gusta pensar que alguien profesional respalda el producto que adquiere.

Es cierto, la comunidad Linux es enorme, pero la gente prefiere el respaldo de una gran empresa. Es cierto, algunas versiones de Linux vienen respaldadas por empresas como Canonical y Red Hat, pero no son tan conocidas y su enfoque es más al mercado de servidores.

A la gente le tranquiliza saber que Google está detrás de Android. Google es una empresa que con sus productos se ha ganado la confianza del usuario. Le da un toque profesional y de confianza a Android.

Y quizá todo esta en la mente del usuario, pues quizás Google no te de soporte directo con tu Android, pero esta forma de pensar existe.


2.- Viene preinstalado


¿Cuanta gente no usa Windows solo porque viene con su PC? Y es que muchos de los que compran PC no son expertos informáticos, como para estar cambiando de SO.

Mientras Windows viene listo para funcionar, Linux por lo general tienes que instalarlo desde un LiveCD. Y para eso primero tienes que descargarlo. Por supuesto el proceso de instalación no es complicado, en realidad es bastante parecido al de la instalación de Windows. Pero ese es en realidad el problema, si eres informático ¿cuantos conocidos no te piden que les cambies la versión del Windows? Hasta para cambiar de Windows 7 a 10 o viceversa, generalmente las personas acuden con alguien con conocimientos técnicos. Por supuesto, sea que instales Linux o Windows, tienes que saber algo sobre el BIOS, booteo, particiones, formatear la unidad de disco, etc, etc. ¿Ya no es tan sencillo verdad?

Entonces si tu caja tiene Windows, generalmente la dejas así como está. Además de que ya conoces Windows, ya sabes como usarlo, y te da miedo o pereza aprender un nuevo sistema.

Es cierto que ya hay algunas PC que viene con Linux de fábrica, pero suele ser una minoría.

En cambio Android viene preinstalado y listo para usar. Samsung, HTC, Sony, Motorola. LG, Meizu, Huawei, Xiaomi, Alcatel, ZTE, Asus, Acer......todos proporcionan Android de fábrica en sus dispositivos. Muchos pertenecen a la Open Handset Alliance, que creó Google para asegurarse de que Android estuviera presente en una gran cantidad de dispositivos.

Es cierto, como Android es más libre que Windows, es modificable y a veces los fabricantes le ponen su propio "sabor". Sin embargo Google se ha asegurado de que tengas Android listo para usar y lo veas como un sistema fácil e intuitivo.

Es como en el mercado de la PC, varios fabricantes con un solo sistema, ocurre igual en el mundo del smartphone. Solo que aquí Android manda.

Esto lleva una ventaja adicional. Todavía al día de hoy, Linux tiene problemas de compatibilidades de hardware. Los fabricantes de hardware simplemente no hacen drivers para este sistema, solo para Windows. En Android, como los propios fabricantes impulsan el sistema, no habrá problemas.


3.- Muchas aplicaciones compatibles fáciles de instalar


Volvamos al mundo Linux. Linux tiene un gran problema con las aplicaciones, bueno en realidad son 3.

Primero, al usuario común le resulta difícil instalar aplicaciones en Linux. No es que sea realmente tan difícil, pero generalmente implica usar la consola. El usuario común le tiene terror a la consola y a los comandos. Le implican pensar en un nivel de abstracción al que no está acostumbrado. Es mucho más fácil para él dar doble click y siguiente, siguiente, etc. Por supuesto, ya hay distribuciones que permiten instalar en modo gráfico. Sin embargo no es un modo estándar y universal, varía con la distribución. Incluso en línea de comandos, se utilizan diversos comandos para instalar, dependiendo de la distribución.

Eso al usuario común le da pánico. Más si en internet se encuentra con que tiene que hacer cosas como:

$ sudo apt-get install «paquete» (para instalar)
$ sudo apt-get remove «paquete» (para desinstalar)

sudo aptitude clean
sudo aptitude install -d nombre_paquete

# rpm -ivh algunpaquete.arc.rpm
# rpm -e nombredelpaquetarpm
# rpm -e horde (e.g.)

La consola no es amigable para la gente común. Microsoft lo sabe, por eso mató a MS-DOS, que era exclusivamente usado en modo consola. 

El segundo problema tiene que ver con la fragmentación. No del sistema de archivos, si no de las versiones del sistema operativo. Linux es un sistema muy abierto. Tanto que existen hasta cientos de versiones y distribuciones. ¿Cual es el problema? Que cuando haces una aplicación, no es compatible con todas las versiones. Necesitas crear distintas versiones de la misma aplicación, para todos los Linux. En este articulo, se hace un análisis, donde ven como por ejemplo la aplicación de MEGA, requiere una versión para Windows y una para MAC, pero si, ¿adivinaste? !10 para Linux! A pesar de que el usuario puede verlo como algo transparente si instala con herramientas que usan repositorios, si busca por su cuenta la aplicación tendrá problemas. Y vaya que el programador, tendrá problemas al crear la aplicación.

Y esto nos lleva al tercer problema: hay aplicaciones que no existen en Linux. Nunca ha sido un gran mercado, y aunque cada vez hay más opciones, seguro has oído que si Office (las alternativas no tienen todas las funciones), que si PhotoShop, que si algun juego, no está disponible en Linux. El catálogo de juegos y software en Linux crece día a día, pero aún no es igual al de Windows. ¿Razones? Quizá es difícil desarrollar tantas versiones de la misma aplicación, pero sobre todo el mercado de Linux es muy pequeño para que se antoje redituable para los desarrolladores.

Como analize en una entrada anterior el concepto de "aplicación asesina" está muy ligado al éxito de los sistemas operativos. Necesitas que tu sistema tenga aplicaciones únicas, que no se encuentran en ningún otro sistema y que sean verdaderamente útiles. Entre más tengas mejor.

Google ha hecho un gran esfuerzo para resolver estos problemas de Linux con las aplicaciones. Primero, las aplicaciones en Android son fáciles de instalar. Google Play te hace muy sencilla la búsqueda y descarga de aplicaciones. También si instalas mediante un archivo .apk, el proceso es bastante sencillo y gráfico, como si usaras un instalador en Windows. ¿Consola en Android? No, a menos que quieras instalarla.

El problema de la fragmentación, es más difícil de controlar. Sobre todo si tienes a los fabricantes creando diferentes "sabores" de Android. En cuanto a los programadores, lo siento, no hay solución. En cuanto al usuario, el mejor enfoque es Google Play. Cuando tu dispositivo se conecta a la tienda de Google, es reconocido. Google controla y conoce qué apps son compatibles con que versiones de su sistema. Así que lo que tú verás en Google Play, será lo que puedas instalar. No te pondrá una app que no funcione con tu sistema. Si alguna no funciona aparecerá un mensaje "esta aplicación no es compatible con su sistema" y no te dejará instalarla. De esa forma no tienes que preocuparte si la app funciona o no, Google se encarga de eso. De esa forma distintos dispositivos Android se conectan a la misma tienda, pero cada uno ve información diferente, adaptada al dispositivo.

Sin duda en Android es fácil instalar aplicaciones, y hasta cierto punto no debes preocuparte por la compatibilidad. Lo que nos lleva a un resultado extraordinario: Android es la mayor plataforma de aplicaciones. Google Play, la mayor tienda de aplicaciones. cuenta con 1.43 millones de aplicaciones. Supera incluso a la AppStore, que mucho tiempo tuvo el primer lugar. Por supuesto si quieres el sistema móvil con más aplicaciones, Android es la respuesta.


4.- Interfaz gráfica vistosa y fácil de usar

En Linux el núcleo, está separado de la interfaz gráfica. Eso significa que Linux puede correr sin interfaz gráfica, solo con consola de comandos. Recordemos que también MS-DOS, es un sistema por el que solo se puede interactuar por consola de comandos. Pero Microsoft sabe que el usuario ama las cosas sencillas y vistosas, así que creo su primera interfaz gráfica: Windows 3.0, que se lanzaba sobre MS-DOS.Al principio Windows funcionaba igual, desde el Windows 3.0 a Windows 2000, solo era un sistema de ventanas montado sobre MS-DOS. Desde Windows XP, es nativamente gráfico, la interfaz gráfica es un componente esencial del sistema. Después de todo la gente ama la interfaz gráfica y por eso Microsoft puso mucho énfasis en integrarla en sus sistemas y matar a la vieja consola. Windows es un sistema sencillo y fácil de usar, amigable con el usuario con una interfaz gráfica vistosa.

El que el sistema gráfico no forme parte integral del sistema operativo, se puede ver como una ventaja/desventaja. Ventaja en cuanto a si falla el sistema gráfico, el sistema operativo sigue funcionando. Una de las desventajas, es que tu sistema gráfico no está integrado, y puedes usar cualquiera. El resultado en Linux ha sido variado, desde interfaces bellas, parecidas a Windows, hasta las interfaces más obsoletas y horribles. Y ese es el problema, no se ofrece al usuario una "experiencia consistente".

Por no decir que el manejo de diferentes gestores de escritorio en Linux ya sea GNOME, KDE, Unity,  etc, le hace confusa la vida al usuario. A veces existen diferencias muy marcadas en la forma de hacer las cosas, el manejo de eventos, botones, etc. Para un usuario es como si fueran sistemas operativos diferentes. 

Imagina un usuario que toda su vida uso Windows y le rompes su paradigma de uso. Llega a Linux y ve que debe hacer las cosas diferente. Pero el trauma es mayor cuando prueba otro entorno de escritorio en el mismo Linux y se encuentra con que es diferente la forma de hacer las cosas. Puede salir huyendo. No solo pasa esto en la migración Linux-Windows. Windows 8 fue un paradigma de uso completamente diferente y eso contribuyó a su fracaso. Y por eso Windows 10, retomó la senda para parecerse mas a Windows 7.

Google ha tomado nota de las carencias de Linux en ese aspecto. En primer lugar, aunque hay muchas variedades de Android, se ha asegurado que la experiencia sea más o menos consistente, y la interfaz gráfica sea sencilla , limpia y sencilla. Android es intuitivo y fácil de usar. Por eso personas sin mucha instrucción o comunes como simples amas de casa, pueden usarlo.

Además la interfaz gráfica arranca con Android. El usuario en su vida tendrá que ver una consola, funciones que en muchas distribuciones de Linux son necesarias de efectuar en la consola, en Android se hacen todas por la interfaz gráfica. El usuario no se dará cuenta que está usando un Linux.



La interfaz gráfica, se ha ido puliendo hasta ser la más vistosa y hermosa de cualquier sistema operativo móvil. Mucha culpa de esto la tiene Matías Duarte, un verdadero genio del diseño.  Su mayor creación es Material Design, un diseño único, vistoso y limpio, que hizo su aparición con Android Lollillop en Junio de 2014.

Antes de eso se decía que IOS tenía el mejor diseño. Lo cierto que el diseño de IOS siempre me ha parecido soso y aburrido. Pero Material Design fue una revolución tan enorme, que muchos debieron reconocer que Google está liderando el diseño de interfaces.

Material Design ha revolucionado el diseño de las interfaces gráficas de una manera tan profunda, que ya está empezando a llevar su filosofía de diseño a la creación de páginas web

Y así es que Android de Google es hoy en día el sistema más intuitivo, amigable y sobre todo con la interfaz mas hermosa en el mundo móvil.

Y por eso Linux, al no ser considerado tan amigable con el usuario no ha triunfado en el usuario común. Y Android, con las mejoras que le hizo Google, es considerado amigable y sencillo. Android tiene lo mejor de dos mundos.Gracias a Android Linux es el sistema operativo mas usado en el mundo.  Así es, Android hizo realidad el sueño de Linux, relativamente.









martes, 19 de enero de 2016

Ventajas de que Android sea Linux

En una entrada anterior, veía como Android es al día de hoy el sistema operativo más usado del mundo.

En su tiempo esa posición la tuvo Windows de Microsoft. Sin embargo existen varias diferencias entre ambos sistemas.

Todo tiene que ver con el núcleo de Android. Android no fue un desarrollo desde 0, hecho por Google Inc. o Android Inc. Más bien se basaron en algo que ya existía.

Tenemos que pensar que lo smartphones son un sistema crítico, muy diferente al de la PC. A nadie le gustaría que su smartphone tardará 10 minutos en iniciar, que se colgará constantemente, o que estuviera invadido de virus. Pensando en eso, cuando se creó Android se buscó un sistema que cumpliera con estándares muy altos.

El sistema elegido, es uno que tiene el respaldo de los expertos y una probada solidez en entornos de alto rendimiento. Quizá sabes que Linux, reina en el mundo de los servidores.  Es un sistema probado, que tiene muchas bondades. Android está construido en base al nucleo de Linux. ¿Como ayuda eso a que Android tenga características superiores a Windows?

Veamos 4 características importantes que heredó Linux a Android:

1.-Estabilidad


Si has trabajado con Linux, sabes que es bastante difícil lograr que se pasme o congele, algo que sucede con cierta frecuencia en sistemas Windows. Que sea necesario reiniciar el sistema, también es algo inusual en Linux. Los servidores pueden durar incluso años trabajando sin que sea necesario reiniciarlos. En Windows, cuando se congela el sistema, la salida será usar crtl+alt+supr y reiniciarlo.

Por supuesto como los servidores son estaciones de alta confiabilidad, no esperas que se congele o se reinicie constantemente, pues son sistemas críticos.

¿Por que Linux es más estable? Razones hay varias, pero me centraré en una importante:Linux esta hecho de forma modular, donde para que el sistema funcione lo único que necesitas es el núcleo del mismo. El diseño modular de Linux permite eliminar un componente cualquiera del sistema en caso de ser necesario. En Linux, se podría decir que todo es un programa. Hay un programita que gestiona las ventanas, otro que gestiona los logins, otro que se encarga del sonido, otro del video, otro de mostrar un panel de escritorio, otro que funciona como dock, etc. Finalmente, como las piezas de un lego, todas ellas forman el sistema de escritorio que conocemos y utilizamos diariamente. Si un componente falla, lo apagas y listo, sin perjudicar la estabilidad del sistema. Windows, en cambio, es un enorme bloque de cemento. Es un bodoque que es muy difícil de desarmar. Todo, incluyendo el explorador de archivos, el escritorio, el gestor de ventanas, está relacionado con el sistema.

¿Cuántas veces no te ha pasado que se cicla el explorador de Windows y te obliga a reiniciar el sistema? Y es que como en Windows todo es componente integral del sistema, si falla algo se cuelga todo.En Linux, es mas dificil que pase eso. Si has tenido un Android, sabes que si aun si falla algun proceso de sistema, simplemente lo matas y sigues con tu vida. Sin necesidad de reiniciar. Por eso, los cuelgues son más escasos, aunque no por eso dejan de ocurrir.

Así que no te preocupes, en Android jamás verás la famosa pantalla azul de la muerte.



2.-Velocidad


Google ama la rapidez. Linux también. Después de todo, los servidores en base Linux, procesan miles de transacciones diarias y se espera que lo hagan sin que el sistema se alente o deje de responder.

 ¿Alguna vez te has preguntado por que tu PC con INTEL CORE I7, a 8 núcleos y 6 GB de RAM con Windows 10, tarda más en arrancar que tu Android a 4 núcleos con 1 GB de RAM? Yo si, todos los días.

Algunas razones tienen que ver con la arquitectura del sistema mismo, otras con que Linux sea modular.

Otras con que Linux no tiene una base de datos enorme llamada registro de windows. Linux solo tiene pequeños archivos de configuración que son leídos cuando es necesario.

Otra razón. es el mal manejo de configuraciones que hace Windows, como son las que se guardan en los archivos DLL. Mientras que en Linux el manejo de controladores y librerías es centralizado, evitando repeticiones, en Windows puedes tener múltiples versiones de la misma librería. Si, el infierno de las DLL.

Una razón más es el sistema de archivos. Mientras en Windows el sistema de archivos tiende a fragmentarse con el tiempo, Linux usa otro sistema de archivos que trata de manera mas eficiente la fragmentación.  Por supuesto Android se beneficia de usar este sistema, el ext4.

Y una última razón es que al cargar Android/Linux por lo general cargas lo que tienes instalado, y con Windows puedes traer un hermoso paquete de virus, pero eso lo veremos a continuación. Si gustas puedes ver más razones de porque Linux es tan rápido aquí.


3.- Seguridad


Windows siempre ha tenido problemas con los virus. Es el sistema más infectado de las historia.

Por supuesto, también existen virus para Linux/Android. Pero las infecciones son mucho más escasas. ¿Por qué?

El sistema Linux está construido de forma inherente para ser seguro. Después de todo ninguna empresa quiere que se infecten de virus sus servidores, más aún cuando pueden ser puerta de entrada a gente que quiere robar su valiosa información.

¿Cómo logra Linux ser tan seguro? Bueno un punto a favor es el que no cuente con una base de datos centralizada como lo es el registro de Windows , lo que dificulta a los virus esconderse. Pero en general lo que más ayuda es el sistema de permisos, que es mucho más avanzado y mejor usado que el de Windows. Recordemos que los permisos en UNIX/Linux son bastante estrictos, y el único usuario con permisos absolutos es ROOT. Pero casi ningun Android/Linux, te deja iniciar sesión como root. Los Android generalmente inician otros usuarios, y en Linux el administrador no te dará el acceso a root. Por lo tanto si tu Android llega a tener virus, el daño que hará será mínimo, pues no tendrá acceso a secciones críticas del sistema. Por supuesto, Windows también tiene un sistema de permisos.Pero cada PC vendida, te da el acceso completo al usuario administrador, que es el que tiene todos los privilegios. Si llega un virus, puede hacer lo que quiera con tu sistema.

Más información de porque Linux es tan seguro, aquí.

Y por eso jamás he usado antivirus en Android, varios tablet y smartphones después, mi contador de virus sigue en  0. De Windows, no hablare.


4.-Personalización


Linux es la esencia de la personalización. Puedes tener tu propio explorador de archivos, sistema de escritorio, gestor de ventanas, básicamente todo en Linux es cambiable y configurable. 

En Windows es imposible, pues son componentes ligados al sistema.

Y Android, es el SO más personalizable en el mundo móvil. Launchers, wall papers animados, navegador de archivos. Prácticamente puedes tocar todo y cambiar todo. Incluso las empresas han sacado múltiples versiones de Android.

Todo esto también porque Linux es software libre. A diferencia de Windows, cuyo código fuente es un oscuro misterio, el código de Linux está disponible: puedes leerlo, usarlo, modificarlo e incluso crear tu propia versión. Es una arma de doble filo, pero es la esencia de la libertad. Aunque toda esa libertad es buena, puede crear problemas como la fragmentación, en una entrada posterior analizare como Google intenta minimizar ese problema.

5.- Costo


Bueno, esto no tiene que ver 100 % con que Android sea Linux. Mas bien por la política de Google, de ofrecer buenos productos de calidad, y gratis.

Pero sin duda el que Linux sea software libre y abierto, permitió que Google tomará el código base de Linux y lo modificará para crear Android.

Y básicamente, Google ofrece a Android de la misma manera: se lo entrega a los fabricantes sin costo y ellos pueden modificarlo. Anteriormente, analice cómo ese modelo ha arruinado el negocio de Microsoft, que se centraba en la venta de licencias de software.

Y si Google no gana ni un centavo directamente por vender Android, es un software totalmente gratuito , como Linux. Y aun así es la empresa más valiosa del mundo.

Esas son algunas de las bondades de Linux, heredadas a Android.

Ahora bien todos sabemos, que pese a estas ventajas, Linux jamás caló hondo en el usuario común antes de Android. Windows fue el sistema que introdujo la tecnologia a varias generaciones. ¿Porque, es acaso Linux un producto inferior? No, pero como todo sistema tiene sus ventajas/desventajas. En un próximo post, me centraré en las desventajas de Linux que Google supo eliminar, para convertir a Android en el Linux que logró lo imposible: derrotar a Windows y convertirse en el sistema más usado del mundo.







lunes, 18 de enero de 2016

¿Por que usar Javascript y PHP para crear un sistema web?


En mi trabajo utilizo un sistema que puede ejecutarse desde el navegador vía web, creado usando los lenguajes JavaScript y PHP.

Como bien sabemos para la programación web pueden usarse diversos lenguajes, PHP, JavaScript, HTML, y diversas alternativas. Cada uno cumple un propósito, y un buen programador sabe combinarlos e integrarlos para crear un robusto sistema web.

Pero ¿por qué en especial son necesarios PHP y JavaScript? Bueno como explique anteriormente, un punto a tener en cuenta es que queremos que nuestro sitio sea interactivo. Usando solo PHP no podría lograr esto, pues tendría que estar cambiando constantemente de página, y no estaría respondiendo a eventos del usuario. Usando solo JavaScript, no tendría acceso a la Base de Datos.

Nuestro sistema funciona de la siguiente manera: todos los datos, la comunicación a la base de datos, e incluso el diseño de los objetos son manejados en PHP. En JavaScript, se hace el dibujo de los elementos gráficos y el manejo de los eventos del usuario.

Todo empieza en PHP, obteniendo diversos datos desde la Base de Datos. Tenemos además archivos de diseño en formato JSON, que indican los datos que contiene cada elemento, así como la guía de diseño del objeto, que indica los elementos: checkbox, botones, grids, campos de texto, etc; y sus propiedades. De esa forma podemos crear las diversas ventanas/pantallas. Una ventaja es que son fácilmente modificables y actualizables: para modificar una pantalla, no necesitamos meter mano en el código duro de JavaScript, solo se modifica la guía de diseño del archivo JSON.

PHP envía los archivos JSON a JavaScript, de esta forma JavaScript los interpreta y dibuja los elementos en pantalla. La comunicación se realiza primordialmente mediante AJAX. De esa forma, en AJAX se intercambian archivos de texto en formato JSON.

¿Cual es la ventaja de este esquema de diseño? Una de ellas es el rendimiento.

Javascript realiza una gran cantidad de procesos del lado del cliente: creación de ventanas, manejo de eventos, manejo y dibujo de la interfaz gráfica, manejo de objetos. Al final solo manda pequeños strings de texto a PHP, con variables necesarias para consultas a la BD.

PHP realiza una gran cantidad de procesos en el lado del servidor: consulta a la base de datos mySQL, lectura y escritura de archivos JSON, al final manda solamente un string JSON a Javascript con la guía de diseño de los objetos y el contenido de los mismos.

De ese modo la carga de dibujar la interfaz gráfica con los procesos queda del lado del cliente y la carga de consultar a la BD y leer/escribir en disco del lado del servidor, intercambiándose solo los paquetes de datos necesarios, en forma se strings de texto.

De hecho PHP y JavaScript están hechos de esa manera, para distribuir la carga y hacer la ejecución mas rápida. JavaScript dibuja interfaz gráfica del lado del cliente, PHP hace los querys a la BD y escritura/lectura de disco del lado del servidor.




viernes, 15 de enero de 2016

Camino hacia el Futuro. Como Google, hizo realidad el sueño de Bill Gates.

Hoy me saldré un poco del tema de la programación.

Corría el año de 1995. En ese tiempo, Microsoft era el rey de reyes. Y si eras un naciente geek, tu idolo era Bill Gates. El hombre que había llevado "una computadora a cada hogar" o eso se decía. En ese tiempo yo acababa de nacer XD, bueno era muy joven.

Bill Gates era todo un visionario, uno de los más grandes que ha existido. En su mente, podía ver cosas que iban a suceder, y cómo sería el curso de la historia de la tecnología. Sabía que tecnologías triunfarían y como lo harían. Más allá de su habilidad como programador, esa era su genialidad. Pocos visionarios ha habido asi, quiza solo Steve Jobs se puede comparar. Pero la visión de Bill siempre me ha parecido más clara, y por supuesto era un tipo más práctico. Y también pensaba un poco más en el usuario. Esa visión lo llevó a convertirse en el hombre más rico del mundo.

En 1995, Microsoft era el rey. Por mucho años, fue la empresa mas rica y poderosa del mundo. No fue hasta alrededor del 2007, que Apple y Google comenzaron a cuestionar su supremacía.

En ese año, Bill Gates publicó su libro : "Camino hacia el futuro". Microsoft entonces dominaba el mundo de la tecnología por medio del software, en cada hogar con una PC había productos y tecnologías de Microsoft. Se puede decir que iba liderando la innovación. Bueno , es cierto, la verdad es que Microsoft copió bastante de otros y robo muchas ideas de otros, pero Bill sabía que idea triunfaría, y sabia en que dirección iba el futuro. Por eso publicó el libro, como una especie de manual para visionarios, predecía que tecnologías triunfarían y como sería la vida en algunos años. Por supuesto, Bill había ideado que Microsoft sería líder de vanguardia, y estaría al frente de las innovaciones.

"Camino hacia el futuro" es una lectura obligada para todo geek. A mi me tocó leerlo en la universidad, varios años después de que Bill lo escribió. Por supuesto nada había cambiado, Microsoft seguía siendo el epicentro de la tecnología.

Pero solo unos meses después de publicarse el libro, empezó a gestarse un cambio.  Fue en enero de 1996. Un par de estudiantes de Stanford empezaron un proyecto: crear un buscador Web.  Larry Page y Sergei Bin, empezaron a gestar lo que sería una de las empresas más disruptivas, innovadoras y revolucionarias de la historia: Google.

Son curiosas las similitudes con Microsoft. En 1975, Bill Gates estudiante de Harvard y Paul Allen, decidieron fundar Microsoft. Todo empezó con la salida al mundo de computadora Altair 8800 con el procesador INTEL 8080, la primera PC. Donde algunos vieron solo un cacharro sin mucho uso, Gates y Allen vieron un maravilloso futuro. Así que programaron el software de aquella rudimentaria PC, el Altair BASIC.



Así que tenemos dos empresas fundadas por un par de estudiantes, literalmente "fundadas en un garage". Ambas tenían que competir y convivir con empresas gigantes, en su caso Microsoft con IBM, Google con Microsoft.

Sin embargo, Microsoft llegó a superar a IBM y por mucho. Una de las empresas mas grandes de la historia de la tecnologia, fue superada por la empresa fundada por un par de muchachos. Por qué Bill y Paul sabían lo que quería el usuario, se movían en esa dirección e innovaban con rapidez. A sus ojos, IBM era como un "gigante lento y obsoleto".

IBM veía el negocio en el hardware. Cuando las primeras PC empezaron a tener éxito, decidió sacar la PC definitiva: la IBM PC. El éxito de su computadora personal fue arrolllador. Pero como explicaré mas adelante, Microsoft fue quién hizo (o compró y vendió) el software: el sistema operativo de la PC. Más adelante vió su acierto, el software se convirtió en el negocio mas lucrativo, dejando por detrás al negocio del hardware.

Quizá por eso proféticamente en su libro, Gates temía que Microsoft se volviera "lento y obsoleto". Y temía a "una empresa fundada por un par de estudiantes en un garage". Se lo repetía como un mantra, como para buscar cambiar la historia, que no se repitiera.

Es difícil saber si Larry Page y Sergei Bin habían leído "Camino hacia el futuro". Quizá no, pero lo mas seguro es que en algún momento acabaron leyéndolo.

La historia de Microsoft y Google, es como ver 2 gotas de agua. De acuerdo, no han sido idénticas, pero el parecido es asombroso. Cuando Gates publicó "Camino hacia el futuro", sin duda su mayor temor era que apareciera una empresa como Google.

Aun si en un principio no leyeron "Camino hacia el futuro" sin duda Larry y Sergei se beneficiaron mucho del libro. En el se presenta una visión clara del rumbo de la tecnología en los próximos años, ideada por la mente visionaria de Bill Gates. Bill esperaba que la posición dominante de Microsoft le permitiera impulsar las nuevas tecnologías y acaparar el monopolio de ellas, como lo había hecho en la PC con su software. Pero....Microsoft se había convertido en "el gigante lento y obsoleto". Y Larry y Sergei, lo sabían.

¿Como venció Google a Microsoft en su propio juego? Analizemos las 2 tecnologías mas importantes predichas en "Camino hacia el futuro" y como Google superó a Microsoft en cada una de ellas.


1.-La Supercarretera de la Información.


Por supuesto, en 1995 ya estaba naciendo el Internet. Con una computadora con Windows te podías conectar. Claro en un lentísimo modem de 56 kbps. Pero Bill Gates vio más allá: vio una red de banda ancha conectada, una carretera de información donde podías comprar, ver vídeo bajo demanda, conocer lugares y literalmente, disponer de información de todo el mundo en segundos.

El día de hoy el Internet se parece cada vez más a la supercarretera que soñó Gates, podemos disfrutar de música, vídeo, imágenes, aplicaciones, todo desde una conexión a Internet. Compramos, viajamos, y hacemos todo con ayuda de la red. 

¿Cómo venció Google a Microsoft en la supercarretera de la información?

-GOOGLE: 

¿Cual es la puerta al Internet? Sin duda para muchos, el buscador de Google. Aun cuando vas a entrar a una página específica, muchas veces no recuerdas su nomenclatura y terminas tecleando el nombre en Google. O si no estas buscando sobre un tema y google es la llave del conocimiento. ¿Cual es el dominio de Google? Algunos estudios, le dan un 89% de cuota mundial en búsquedas.

Ya existían buscadores cuando Google apareció, estaba altavista, yahoo, lycos, eicus entre otros. ¿Que tenía de diferente google? Bueno que era sobre todo sencillo y limpio. Una interfaz simple, no muy sobrecargada de elementos. Además la rapidez. Con 56 kbps de velocidad el tiempo era todo. Si un buscador tardaba demasiado en cargar, no servía. Si introducías la búsqueda y tardaba mucho en responder, olvidalo. Google desde el principio era rápido, mucho más rápido que la competencia, en parte gracias a su interfaz minimalista.Además Google siempre ha tenido éxito en mostrar resultados relevantes. No por nada, su algoritmo de búsqueda es el mejor, sabe posicionar los resultados en orden de relevancia.

De la pobre respuesta de Microsoft y su casi nula cuota de mercado, no hablaremos. Sergei y Larry sabían que su buscador sería la puerta a la red. Decidieron que debían controlar la entrada al internet y acaparar la mayor cantidad de usuarios. De ahí partió su dominio del Internet.

-CHROME.

Pero debían controlar aún más el acceso al Internet. En un intento de ganar el control de la supercarretera de la información, Microsoft ofrecía su explorador Internet Explorer gratis, junto con Windows. La competencia, como era Netscape Navigator , no pudo soportarlo. Paso de tener 90 % de cuota de mercado, a ser casi nula gracias a las prácticas monopólicas de Microsoft . En el año 2000, Microsoft tenía 95 % de cuota de mercado. En la llamada "guerra de los navegadores" Microsoft había triunfado.

Esto era una posición peligrosa para Google. Había alternativas como Firefox, pero que tu principal competidor controle el navegador por el que acceden a tu página web es peligroso. La página de búsqueda predeterminada, obviamente nunca será Google.

En el 2008 Google se decidió a crear Chrome. El nuevo navegador, junto con Firefox, había abierto un nuevo frente, estamos ahora en la "segunda guerra de los navegadores". Si, se oye tan tremendo como la segunda guerra mundial, y casi lo es.

¿Que ventajas tenia Chrome sobre los demás navegadores? La primera, la velocidad. "Velocidad" es casi el lema de Google. Internet Explorer era abrumadoramente lento. Entonces llegó Google Chrome, con su interfaz minimalista y su carga ultra rápida. Además el uso de pestañas. Cierto, esto lo tomó prestado de Firefox. Y también Chrome cuenta con lo que es una de sus virtudes/defectos : cada pestaña en Chrome es un proceso. Si una página se cuelga, matas el proceso y sigues navegando. Esto además acelera la carga de las páginas ya que se le destinan mayores recursos al ser un proceso independiente. La desventaja es que si abres muchas páginas y tu pc no tiene un hardware de altura, lo notaras, el sistema se alentara.

¿Cual a sido el resultado de la segunda guerra de los navegadores? Chrome triunfó. Algunos estudios le dan el 62 % de cuota de mercado. Un resultado indirecto: la muerte de Internet Explorer. Por supuesto Microsoft ya preparó un sustituto. Es una lastima que todo lo que hace Microsoft huela a "lento y obsoleto".

Y ahora Google controla la puerta de entrada a Internet de millones de usuarios. Chrome es mas que eso, es un navegador que te permite instalar y usar aplicaciones, prácticamente es una plataforma de aplicaciones que cuenta con su propia tienda web.



-GMAIL

Una parte muy importante del Internet, es el correo electrónico. Microsoft lo entendió y compró Hotmail en 1997. Este fue el servicio de correo líder en muchos años ¿quién no recuerda a hotmail y el messenger? Llegó a tener 324 millones de usuarios.

En el año 2004, Google crea GMAIL. Por entonces, tenía un duro camino por delante. Por supuesto, fiel a la filosofía de Google, ofrecía minimalismo, rapidez y sencillez. Además de una cuota de uso mayor, con diferencia de varios GigaBytes disponibles para el usuario para almacenar correos.Para 2012 llegó a superar a Outlook, el sucesor de Hotmail, contando con 425 millones de usuarios.

A partir de ahí, es mejor dejar de contar. La gran irrupción de la tecnologia del siglo XXI, Android, impulso masivamente el uso de GMAIL. En 2014 se contaban mas de 1000 millones de cuentas, y es mejor no seguir contando.

-YOUTUBE

Bill Gates imaginaba una supercarretera de la información, donde uno podía ver video en tiempo real en el momento que quisiese, el programa que quisiese. Por supuesto con 56 kbps, eso era una quimera.

Pero el video en Internet bajo demanda, se fue afianzando con las nuevas tecnologías y el aumento del ancho de banda.

En 2005, es creado Youtube. El portal de video en internet, adquiere un éxito inmediato. Google huele el éxito, y aunque no siempre inventa, al igual que Microsoft sabe comprar. En 2006 compró Youtube.

El día de hoy es el portal número en reproducción de videos en Internet. Ya en 2008 tenía una couta de 75.43 % de reproducciones de video en línea.

El principal atractivo es que es gratuito. Como la mayoría de los servicios de Google, obtiene ganancias de la publicidad.

-GOOGLE MAPS

Bill Gates imagino una supercarretera de la información con un servicio de mapas a todo color interactivos,  que tendrían "las condiciones de carretera y del tiempo, los sitios para acampar, incluso los establecimientos de comida rápida. Puede preguntarle "¿dónde está el restaurante chino mas cercano que se encuentre abierto?".

Esos mapas que conocen tu ubicación y te guían de manera interactiva, incluso con una amable voz que traza tu ruta y te dirige, son realidad gracias a Google Maps.

Google Maps fue creado en el año 2005. Algo que siempre ha caracterizado este servicio de Google es su exactitud. Es increíble que hasta pequeños pueblos  o lugares remotos aparecen trazados con exactitud. No solo eso, Google sabe trazar la ruta mas corta entre dos puntos, e incluso te traza múltiples rutas. Puede darte información de tráfico y ubicación de diversos lugares. incluso una amigable voz, puede decirte a detalle qué ruta seguir.  Sin duda este servicio de Google, nos ha salvado en mas de una ocasión.

Y ha sido todo un éxito.

Bastan estos 5 ejemplo para comprobar que Google domina la Internet. La supercarretera de la información , es territorio de Google. Veamos ahora el segundo gran avance tecnológico que profetizó Bill Gates


2.- La POCKET PC


En 1975, Bill Gates tuvo una visión. Vio la humilde Altair 8800 convertida en una máquina de propósito general: la PC (Personal Computer). Imaginó una PC con procesador INTEL en cada hogar, haciendo las funciones de una computadora.

Cuando Bill Gates imagino eso, las computadoras eran enormes y costosas. Bill programó en una PDP-8 que costaba 18 000 dólares, y ocupaba un gabinete de unos 2 metros de altura  que pesaba unos 113 kg. Pero una vez creado el procesador INTEL 8080, el primer microprocesador de propósito general, Bill imagino que algún día las PC basadas en ese microprocesador tendrían la misma o más potencia que las "mini computadoras" de su época. Y costarían mucho menos.



Todo esto fue posible gracias a la ley de Moore, acerca de la miniaturización de componentes electrónicos.

Bill dejó que otras compañías se ocuparan del hardware, había muchas entre ellas el gigante IBM. Pero él se ocuparía del software. En 1981, tras comprar un sistema llamado QDOS, que era un clon de CP/M,y presentarlo como MS-DOS o PC-DOC, Microsoft se introdujo en la IBM-PC. Pronto, todos los fabricantes comenzaron a adoptar el sistema de Microsoft. La IBM PC fue un éxito, pero también lo fueron sus clones. Y cada clon llevaba una copia de MS-DOS, que se convirtió en el sistema operativo de facto de las PC.

Para 1995, el sucesor de MS-DOS, Windows, prácticamente estaba solo en el mercado de los sistemas operativos para PC. Microsoft dominaba con mano férrea en el mundo del software. Se convirtió en la empresa mas valiosa del mundo. Por cada máquina nueva con una copia de Windows, Microsoft se embolsaba el dinero de la licencia. Y millones de máquinas, hacen millones de dólares.



Bill imagino la Pocket PC como un dispositivo que cabía en la palma de la mano y tenía las mismas funciones que una PC de su época. La miniaturización llegaría a tal grado, que los procesadores de esas máquinas tendrían la misma potencia de una computadora de escritorio. Sería un dispositivo que llevaríamos a todos lados, que nos permitiría navegar en internet, ver video, comprar, ver documentos, editarlos, etc.

Por supuesto, imagino que la clave sería el software de Microsoft. Microsoft sin duda apuntó en esa dirección. Windows CE fue el primer sistema operativo de Microsoft enfocado en esa dirección. De hecho Microsoft hasta fabricó sus propias Pocket PC. Corría el año de 1998.

Pero Microsoft ya era la empresa "lenta, obsoleta". No hubo mucha innovación, ni mucha gente que comprara sus productos.

En 2005, Google compra Android Inc. La empresa estaba desarrollando un sistema operativo para móviles. Tuvieron que pasar 3 años, para que en 2008, se lanzara la primera versión de Android, y el primer smartphone Android, el HTC Dream. Hacía un año que había salido el primer Iphone, el cual fue un referente en cuanto a la tecnología de los smartphones.

Las bases del diseño estaban hechas: pantalla táctil, sistema operativo de propósito general, modernos procesadores y hardware de punta, así como una tienda de aplicaciones.



Android tuvo entre sus principales ventajas, el que se ofrecía de forma gratuita. Cualquier fabricante podía usar Android para sus dispositivos, sin tener que pagar una licencia. Eso fue todo una revolución en el mundo del software. Microsoft siempre había tenido las licencias de software como su principal fuente de ganancias.

Pero era una empresa obsoleta. Google en cambio una empresa ágil y dinámica. Desde que empezó con el buscador, su principal fuente de ingresos ha sido la publicidad. Ofrece servicios y productos de calidad sin cobrar ni un centavo al usuario. Microsoft no podía competir con eso.

Pronto hubo multitud de fabricantes haciendo dispositivos Android. Samsung con Galaxy, Motorola con su Moto X, Sony con sus Xperia, HCT con sus ONE, y también Meizu, Huawei, Xiaomi, etc.


Otra clave del sistema operativo, ya la había especificado muy bien Bill Gates en su libro "Camino hacia el futuro". Cuando narra como Microsoft gana la guerra de los sistemas operativos, se centra en un concepto importante: el de "aplicación asesina" . ¿Que es una "aplicación asesina"?. Según el mismo Bill, es un uso de la tecnología tan llamativo o necesario que la hace indispensable. Puede determinar el triunfo de un sistema o plataforma sobre otro. En el caso del PC, fueron las hojas de calculo como lotus 123, los procesadores de texto, en fin , todas las aplicaciones que se ejecutaban exclusivamente en MS-DOS. ¿Cómo afrontó Google este reto? Basta dar una mirada a su tienda de aplicaciones, Google Play, la cual es la más grande que existe, para ver que es la plataforma con mejor repertorio de aplicaciones únicas. En otro post hablaré de esto a detalle. Por otro lado la tienda de aplicaciones de Windows phone es de las que menos aplicaciones tiene, y parece que cada vez tiene menos.

De repente Microsoft se vio superado en su propio juego: el software. Intentos de salir adelante ha hecho muchos, desde la compra de Nokia, la creación de Windows 8, y la creación de Windows 10. Los resultados: la quiebra y desaparición de Nokia como fabricante de móviles, el fracaso de Windows 8, y los fallos en Windows 10. De hecho Windows 8 dejo tan mal sabor de boca, que muchos usuarios de Windows 7 se resisten a cambiar a Windows 10 (no los culpo, a mi me ha dado bastantes problemas). Esto es relevante porque mientras Windows 7 es un sistema exclusivamente para PC, Windows 8 y Windows 10 son un intento de Microsoft para unificar la PC y los smartphones y tablets, y no han tenido éxito.

Mientras tanto el éxito de Android ha sido avasallador. Al 2015, tiene una cuota de mercado de 88.8 % a nivel mundial. De hecho ha sido el producto tecnológico de mayor y mas rápida adopción en la historia. En 2015 ya contaba con 1400 millones de usuarios. De hecho es el sistema operativo mas usado del mundo, muy por encima de Windows.

El impacto de Android ha sido total. Amas de casa, estudiantes, personas de bajos recursos, muchísima gente tiene Android. Mucha gente no tiene una PC, pero si tiene un Android.

Y Google como empresa, se ha convertido en la empresa más valiosa del mundo.

Bill no se imaginó que Microsoft pudiera ser superado de una manera tan apabullante. O tal vez si...por eso temía a "un par de chicos en un garage".

No se si Larry y Sergei leyeron el manual de Bill Gates. El hecho es que siguiendolo al pie de la letra, Google es hoy una empresa más valiosa que Microsoft. Y cada día crece más.

Y así es cómo Google ha hecho realidad el sueño de Bill Gates: un mundo donde vivimos conectados a una supercarretera de la información, y accedemos desde potentes dispositivos que caben en la palma de nuestra mano.