domingo, 10 de agosto de 2014

Obtener la hora actual en Excel

Supongamos que necesitamos la hora actual para realizar algún tipo de cálculo en Excel, como por ejemplo calcular el tiempo transcurrido entre una hora inicial y el momento actual. Para obtener la hora actual solo basta con recurrir a la función AHORA() que nos retorna la fecha y hora actuales:

Función AHORA() en Excel
Función AHORA() en Excel

Y luego aplicarle a esa celda un formato de hora, como por ejemplo:

Aplicando formato a horas en Excel
Aplicando formato a horas en Excel

Así ya podemos realizar operaciones de suma, resta, comparación, concatenación, entre otras con esa hora siempre y cuando respetemos los formatos. Es importante tener en cuenta que cada vez que realicemos algún cambio o intento de cambio en una celda de la hoja ésta hora se actualizará automáticamente, si necesitamos actualizarla en determinado momento solo basta con presionar F9.

Si por algún motivo lo anterior no nos funciona, podemos obtener la hora jugando un poco con las demás funciones que nos provee Excel, por ejemplo extrayendo las horas y minutos que nos da la función AHORA() y concatenándolos:

=CONCATENAR(HORA(AHORA());":";MINUTO(AHORA()))

Es probable que existan más manera de hacerlo combinando diferentes fórmulas, sin embargo estas dos son las que frecuentemente uso y me funcionan.

miércoles, 30 de julio de 2014

Como realizar búsquedas más avanzadas en Google

Aunque existen diversos buscadores en internet como Yahoo, Bing, u otros más interesantes como DuckDuckGo por ejemplo; Google es sin duda el líder en su especie gracias a su simplicidad, rapidez y capacidades.

El uso de Google es fácil e intuitivo, pero tal vez muchos ignoran que se pueden ampliar sus capacidades para obtener resultados más precisos en la búsqueda ya sea utilizando su página de búsquedas avanzadas o ya sea con el uso de operadores y comandos que veremos a continuación.

  • "": al incluir los términos de búsqueda entre comillas simples Google buscará las páginas que contengan literalmente dicha frase, por ejemplo al buscar "el arte de la guerra" me arrojará en los resultados únicamente las páginas que literalmente tiene dicha frase.
  • +: el símbolo más nos permite indicarle a Google que incluya términos que por ser muy comunes no son incluidos en las búsquedas. Por ejemplo si deseo buscar el arte de la guerra (sin comillas), el artículo "el" se excluye por ser un término común, por lo cual para indicarle a Google que deseo hacer una búsqueda más precisa incluyéndolo hago la búsqueda +el arte de la guerra.
  • -: el símbolo menos produce el resultado contrario al símbolo más ya que excluye un termino de las búsquedas. Por ejemplo si quisiera buscar vuelos a Medellín baratos pero no quiero ver los resultados de la aerolínea aeroxyz ingreso como términos de búsqueda: vuelos a medellin baratos -aeroxyz.
  • ~: al precder un término con la virgulilla se le indica a Google que busque los sinónimos del mismo, por ejemplo si busco ~compañía x la búsqueda también incluirá resultados de la organización x por ser sinónimos.
  • OR: es el equivalente a una disyunción lógica, es decir, si ingreso dos criterios de búsqueda me arroja resultados si se cumple uno o ambos criterios. Por ejemplo "Vuelos baratos a Medellín" or "Vuelos baratos a Cartagena".
  • AND: es el equivalente a un conjunción lógica, es decir, si ingreso dos criterios de búsqueda me arroja resultados si se cumplen ambos.
  • site: le indica a Google que solo arroje resultados de un sitio o dominio web determinado. Por ejemplo la búsqueda manuales linux site: juanchorua.blogspot.com solo nos mostrarán resultados que contengan las plabras clave manuales linux en el sitio juanchorua.blogspot.com
  • link: le indica a Google buscar las páginas que tengan links al dominio especificado. Por ejemplo link: juanchorua.blogspot.com arrojará como resultados las páginas que tengan links apuntando al dominio juanchorua.blogspot.com.
  • related: le indica a Google que busque sitios que tengan contenido similar a una página indicada. Por ejemplo related: juanchorua.blogspot.com arrojará como resultado páginas con contenido similar a este blog.
  • info: arroja información de una página como por ejemplo como la versión de la página almacenada en caché, páginas similares y páginas que dirijan al sitio. 
  • filetype: le indica a google que busque la informacipon solicitada solo en el tipo de archivos que especifiquemos. Por ejemplo "Hoja de vida Pepito Pérez" filetype: pdf buscará la hoja de vida de Pepito Pérez solo en archivos PDF.

En general estos son los comandos más conocidos y utilizados, sin embargo existen más y mucho más expeficos como por ejemplo para búsquedas de imágenes, noticias, grupos de Google, entre otras opciones que podemos consultar aqui y aqui.

Conclusiones

Google es una inmensa fuente de información que puede ser utilizada con fines buenos o malos, por eso es importante que seamos cocientes del contenido que publicamos en internet porque queriéndolo o sin querer estamos atentando contra nuestra propia privacidad.

Si somos webmasters podemos limitar a los buscadores el acceso a cierta información haciendo uso del archivo robots.txt, que con las reglas adecuadas nos permite mejorar notablemente la seguridad de la información que se alojamos en los sitios web que construimos y administramos.

lunes, 28 de julio de 2014

Validando horas y fechas mediante formulas en Excel

Supongamos que tenemos una base de datos con varios registros y una de sus columnas contiene un campo compuesto por fecha y hora, como por ejemplo: 27/07/2014  09:39:01 a.m. Ahora supongamos que necesitamos validar si en esa columna se cumplen ciertas condiciones como por ejemplo una determinada fecha y hora, o un determinado mes y día, etc. Lo primero que se podría hacer es aplicar filtros a la columna y con esto obtendríamos los resultados que necesitamos.

¿Pero qué pasa si la base de datos contiene muchos registros? El uso de filtros que de por si es una tarea muy manual podría ser un poco tedioso, ya que si se tienen registros de diferentes fechas la cantidad de opciones a seleccionar y descartar son muchas, y si por algún motivo hay registros con la fecha en otros formatos el uso del filtro se descontrola más. El siguiente ejemplo ilustra una base de datos con tres columnas que contienen el ID del registro, la fecha de registro y el sexo; la base de datos contiene más de 50.000 registros y algunos registros tienen el formato incorrecto:

Ejemplo de Base de datos en Excel
Ejemplo de Base de datos en Excel

Supongamos que necesitamos obtener los registros del día 17 de abril del 2014 sin importar la hora, si lo hacemos de forma manual con filtros la cantidad de clics que se tendría que hacer es un poco extensa. Una solución viable es aplicar una formular que valide el contenido de las celdas de la columna FECHA_REGISTRO y nos diga si cumple o no cumple con la condición (que el registro sea del 17 de abril del 2014).

Pensando de forma algorítmica una solución lo primero que se debe validar es que en el registro el año sea igual a 2014, luego que el mes sea igual a abril y finalmente que el día sea 17; si se cumplen las tres condiciones se debe marcar el registro como CUMPLE, en caso contrario como que NO CUMPLE.

Para lograrlo primero hacemos una conjunción de las tres condiciones usando la función Y() que funcionancomo el operador and de la mayoría de los lenguajes de programación; es decir, retorna verdadero si todas las condiciones que se le pasen como parámetros se cumplen. Para evaluar el día, mes y año utilizamos las funciones que nos provee Excel y que tienen su mismo nombre:

=Y(AÑO(B2)=2014;MES(B2)=4;DIA(B2)=17)

Y finalmente valido si la condición se cumple con la función SI(), que valida si una expresión es verdadera o falsa (para nuestro caso las tres condiciones propuestas) y realiza una acción si se cumple y otra si no; para ello anido las formulas así:

=SI(Y(AÑO(B2)=2014;MES(B2)=4;DIA(B2)=17);"CUMPLE";"NO CUMPLE")

La anterior fórmula la ponemos en una nueva columna y ya solo nos resta hacer un filtro y seleccionar los registros que cumplen o no con la condición que estamos evaluando:


Aplicando filtros en Excel
Aplicando filtros en Excel

Como vemos es posible sacarle mucho provecho a Excel aplicando lógica de programación y haciendo uso de sus formulas, sin necesidad de programar macros que tienen un nivel de complejidad un poco más alto para los no expertos en la materia.

domingo, 27 de julio de 2014

Algunas funciones del intérprete de PHP que tal vez no conocemos

Como es sabido PHP es un lenguaje interpretado; es decir, la ejecución de los scripts se hace a través de un intérprete, un programa que va ejecutando línea por línea el código contenido en el archivo .php y devuelve los resultados de cada sentencia o los errores según aplique.

Lo que tal vez muchos no conocen es que además de ejecutar scripts, revisar la sintaxis y semántica de los del código fuente, y en general ejecutar los programas que escribimos; el intérprete de PHP también tiene otras capacidades que son últiles para el programador y que veremos a continuación.

Revisión de la sintaxis del código

Suena un poco obvio pues como se mencionó al comienzo es deber del intérprete revisar las sintaxis y semántica del código fuente, y generar las alertas necesarias al programador cuando se encuentran errores. cuando se ejecuta un script el intérprete antes de ejecutar el código realiza estas validaciones, ¿Pero y si sólo queremos saber si un script no contiene errores se sintaxis sin necesidad de ejecutarlo? Sólo basta con ejecutarlo con el siguiente parámetro:

php -l mi_script.php

Reemplazando mi_script.php por el nombre del archivo que queremos revisar, con el parámetro -l le estamos diciendo al intérprete de PHP que revise la sintaxis del código pero que no lo ejecute. Si todo esta bien nos devolverá un mensaje como éste:

No syntax errors detected in mi_script.php

Pero si hay errores nos lo dirá, por ejemplo:

Parse error: syntax error, unexpected ''l jS \of F Y h:i:s A);
' (T_ENCAPSED_AND_WHITESPACE) in mi_script.php on line 4
Errors parsing mi_script.php

Es importante tener en cuenta que con esta opción PHP solo nos dirá si tenemos errores de sintaxis, no nos dirá si tenemos errores de semántica o de lógica.

Ejecutar un servidor web


Lo habitual al momento de desarrollar una aplicación web es implementar un entorno de desarrollo adecuado en el cual se tengan instalados todos los programas, servicios, entornos de desarrollo, editores, librerías, y demás elementos necesarios para escribir y probar el código creado; como por ejemplo XAMPP.

Sino tenemos el tiempo para implementar un entorno de desarrollo, o si no contamos con los medios o privilegios para hacerlo podemos acudir al propio interprete de php para tener un servidor web ligero pero funcional. Para lograrlo solo basta con ejecutarlo así:

php -S direccion_servidor:puerto -t ruta_aplicacion

El argumento -S debe ir en mayúscula y le indica a PHP que actúe como servidor web, el argumento -t sirve para indicarle a PHP dónde se encuentra el directorio con las aplicaciones.

Por ejemplo en el siguiente ejemplo el servidor será la máquina local y las conexiones se recibirán por el puerto 8080. La ruta de la aplicación es la ubicación donde está alojado el código fuente de la aplicación que para este caso es D:\Scripts\Php. En esa carpeta está el archivo index.php que contiene el siguiente código:
echo "Bienvenido visitante, hoy es ".date('l jS \of F Y h:i:s A');

Para levantar el servidor se debe ejecutar:

php -S 127.0.0.1:8080 -t D:\Scripts\Php

Al acceder por un navegador se visualizará algo así:

Servidor web ligero con PHP
Servidor web ligero con PHP

Y en el servidor se verá la información de los accesos así:

Servidor web ligero con PHP
Servidor web ligero con PHP

Para detener el servidor sólo basta con presionar Control + C.

Conclusiones

Son pocos los desarrolladores que interactúan directamente con el intérprete de PHP ya que la integración con otras tecnologías como Apache o MySQL por ejemplo y el uso de plataformas LAMPP, WAMPP , XAMPP y similares, brindan cierta abstracción que desliga un poco al programador de tener que manipular al intérprete gracias a que proveen interfaces gráficas muy amigables o programas que hacen las veces de asistentes para obtener lo que necesitamos.

PHP y su intérprete propiamente ofrecen una serie de opciones que nos permiten manipular de una forma más detallada como se ejecuta nuestro código y las cuales podemos consultar aquí. Como se ilustra en esta entrada es posible desarrollar aplicaciones en PHP teniendo a la mano el intérprete solamente, sin la necesidad de un editor de código fuente o complejos IDE adicionales.

jueves, 24 de julio de 2014

CM Browser, un buen navegador para Android

Si bien mi experiencia con Mozilla Firefox y con Google Chrome en dispositivos Android ha sido positiva (de hecho Chrome es mi navegador predeterminado en la tablet), en los últimos días he venido utilizando CM Browser como navegador principal en mi celular.

CM Browser fue creado y es mantenido por Cheetah Mobile Inc, los mismos desarrolladores de aplicaciones como Clean Master, Battery Doctor, y CM Security, que gozan de buena reputación en la Google Play Store y entre los usuarios de Andoroid.


CM Browser en Android
CM Browser en Android
Una de las características más atractivas es su ligero tamaño pues en apenas 1.7MB se cuenta con un navegador totalmente funcional con manejo de pestañas, navegación privada, protección de privacidad, integración con motores de búsqueda, autocompletado, compatibilidad con webs para entornos de escritorio, entre otras.

De igual forma su velocidad es quizás su punto fuerte ya que logra que la experiencia de navegación con respecto a otras soluciones sea considerable mejor, ya que como explican sus desarrolladores el navegador cuenta con un mecanismo de pre-carga que permite agilizar la navegación.

Otro punto fuerte es la seguridad pues nos advierte de webs maliciosas, analiza las descargas en busca de archivos maliciosos, permite la navegación en modo incógnito y en general está orientado a proteger la privacidad de sus usuarios.

Aunque las características son atractivas y positivas solo hay un aspecto que pienso deberían considerar sus desarrolladores y es que pueda funcionar sobre otros dispositivos diferentes a teléfonos celulares como tablets por ejemplo; de resto la aplicación es una buena alternativa y cada que puedo recomiendo su uso ya que parar ser una aplicación gratuita sobresale entre los de su especie.

Para descargar la aplicación solo basta con acceder a  la Google Play Store y descargarla, más información en el sitio web oficial de CM Browser.