viernes, 5 de junio de 2015

Lógica de Programación (23) - Introducción a los subalgoritmos


Dice el dicho: Divide y vencerás, y en el caso de los algoritmos ese dicho es completamente cierto. Como ya hemos aprendido a lo largo de las 22 lecciones anteriores, un programa está compuesto de muchas estructuras que trabajan en conjunto para resolver un problema o completar una tarea. Por supuesto, mientras más complejo el problema, más extenso será el código que tendremos que escribir para solucionarlo. Esto puede ocasionar que nuestros programas se vuelvan complicados de leer, comprender y mantener.


Para evitar esta situación, lo mejor que podemos hacer es dividir un problema complejo en subproblemas más sencillos , y a continuación dividir esos subproblemas en otros más simples, hasta que los problemas más pequeños sean fáciles de resolver. Este método de diseñar la solución de un problema principal obteniendo las soluciones de sus subproblemas se conoce como diseño descendente (top-down design). Se denomina descendente, ya que se comienza por la parte superior considerando el problema general y luego descendiendo hacia los subproblemas particulares que forman al problema principal. Cuando nos aproximamos de este modo a la solución de un problema, cada una de las partes en las que lo dividimos se puede desarrollar de un modo independiente entre sí, lo cual facilita el trabajo en equipo de varios desarrolladores.

Como ejemplo, pensemos en el problema de codificar un sitio web que permita capturar una serie de calificaciones, almacenarlas en una base de datos, calcular promedios y regresar al usuario un archivo PDF con los datos capturados y los resultados capturados. Este problema podría dividirse en varios subproblemas para trabajar en ellos de manera independiente y llegar más rápido a una solución funcional. Podemos tener a un desarrollador que se encargue de codificar la página en la que se van a capturar los datos, otro trabajando en el código necesario para recibir esos datos y almacenarlos en una base de datos, otro trabajando en leer las calificaciones de la base de datos y calculando los promedios y otro desarrollador encargándose de generar los reportes en PDF que se le entregarán al usuario de nuestra aplicación. Cada uno de estos desarrolladores, a su vez, se encargará de analizar su problema particular y dividirlo en más subproblemas para completar su labor paso a paso.


Un subprograma puede realizar las mismas acciones que un programa: recibe datos de entrada, los procesa y devuelve resultados. Sin embargo, un subprograma está inmerso dentro de un programa principal y está encargado de una tarea específica. El subprograma recibe datos desde el programa principal y le devuelve resultados. Se dice que el programa principal llama o invoca al subprograma. El subprograma ejecuta la tarea encomendada y entonces devuelve el control al programa principal. Un subprograma puede también llamar a otro subprograma para encomendarle una tarea determinada.

Esquemáticamente, el flujo de un programa con subprogramas se representaría así:



Existen dos tipos importantes de subprogramas: las funciones y los procedimientos (también llamados subrutinas), de los cuales nos vamos a encargar en las próximas lecciones. ¡Hasta la próxima!



Enlace: Índice del curso



Ya viene Skype web


A penas hace unos días la gente de Microsoft sorprendió al anunciar que Skype ya se estaba integrando en Outlook.com para todos los usuarios, de modo que pudiéramos estar revisando correos y estableciendo conversaciones al mismo tiempo.

Hoy nos vuelven a sorprender dando a conocer que Skype Web ya está disponible para todos los usuarios de EU y Reino Unido que entren al sitio de Skype.com. Desde hoy, los usuarios de aquellas naciones ya pueden ingresar al sitio con su usuario y contraseña del servicio y chatear como si estuvieran en la misma aplicación.



De este modo, Microsoft da un paso más para tratar de conquistar el mercado de la mensajería instantánea multiplataforma. Y dado que Skype ha heredado a todos los usuarios de MSN Messenger (¿se acuerdan?), pinta para posicionarse como líder definitivo si hacen las cosas bien.



Skype Web funcionará sin problemas en Windows, Mac e incluso en una Chromebook (lo cual me hace bastante feliz :) ) y estará disponible en todo el mundo en las próximas semanas.


Fuente: Blog de Skype


jueves, 4 de junio de 2015

Modela bases de datos en línea y gratis con Sea Quail


Sea Quail es una herramienta gratuita que podemos utilizar en nuestro navegador para modelar de manera visual nuestras bases de datos incluyendo sus distintas tablas, campos y relaciones.



La herramienta nos permite, además, guardar nuestros diagramas (siempre y cuando tengamos una cuenta de usuario) e imprimirlos.



Una de las mejores características de Sea Quail es su capacidad para generar los scripts para crear nuestras bases de datos en MySQL o SQL Server. Basta con un par de clics para que podamos acceder al script para ejecutarlo en nuestro DBMS favorito.



Si quieren conocer más detalles sobre las funcionalidades de Sea Quail, dense una vuelta por su sitio oficial; o si lo suyo es de plano ya entrarle de lleno a probar la herramienta, instalen la extensión para Chrome y empiecen a usarla desde ya.

Sin duda una herramienta digna de tenerse en favoritos para agregar a nuestro arsenal como desarrolladores.


Enlaces:




miércoles, 3 de junio de 2015

Skype se ha empezado a integrar en Outlook.com



En las últimas horas, la gente de Microsoft ha comenzado a desplegar una actualización al sitio de Outlook.com para mostrar a sus usuarios una barra de integración de Skype a través de la cual se podrán establecer conversaciones como si se estuviera en el programa mismo.

Esta integración es parte de las estrategia de Microsoft para hacer frente a la competencia en los servicios de mensajería, lidereada por Whatsapp (de Facebook) y Hangouts (de Google).



Desde ahora, para iniciar una conversación de Skype dentro del buzón de Outlook.com, basta con hacer clic en el icono de Skype que aparecerá en la esquina superior derecha para hacer aparecer la columna de Skype, en la que se incluirá nuestra lista de contactos para iniciar una conversación. También veremos un botón para agregar contactos y tendremos la posibilidad de establecer llamadas con audio y video con sólo instalar un plugin para Windows.



Estos cambios se irán desplegando poco a poco a todos los usuarios de cuentas de correo electrónico de Outlook (como pueden ser Hotmail, Live o el mismo Outlook) en los próximos días.

Con este paso, Microsoft se posiciona (y llega tarde, según algunos) con un lugar en la carrera por los usuarios de mensajería instantánea. Veremos qué tal le funciona.


Fuente: Blog de Skype


martes, 2 de junio de 2015

Las mujeres más poderosas de la tecnología

Marissa Mayer, CEO de Yahoo

A la revista Forbes le encantan los conteos. Este año nos entrega la lista de las 18 mujeres más poderosas de la tecnología: mujeres que han logrado ascender a importantes posiciones de autoridad en empresas de tecnología tan importantes como Google, Apple, Facebook, HP, IBM o Yahoo. 

En un medio que tradicionalmente ha sido dominado por hombres, estas admirables mujeres demuestran que lo importante es la inteligencia y la capacidad, antes que lo que se traiga cargando entre las piernas. 

Esta es la lista completa compilada por Forbes:


  1. Sheryl Sandberg, COO de Facebook
  2. Susan Wojcicki, CEO de YouTube
  3. Virginia “Ginni” Rometty, CEO de IBM
  4. Meg Whitman, CEO de HP
  5. Marissa Mayer, CEO de Yahoo!
  6. Safra Catz, co-CEO de Oracle
  7. Angela Ahrendts, Senior VP de Apple
  8. Ursula Burns, CEO de Xerox
  9. Ruth Porat, CFO de Google
  10. Lucy Peng, CEP de Small & Micro Financial Services Group de Alibaba
  11. Amy Hood, CFO Microsoft
  12. Renee James, Presidente de Intel
  13. Mary Meeker, socia en Kleiner Perkins Caufield & Byers
  14. Solina Chau Hoi Shuen, directora de la Li ka Shing Foundation
  15. Padmasree Warrior, CTO de Cisco System
  16. Gwen Shotwell, COO de SpaceX
  17. Weili Dai, Cofundadora y presidente de Marvell Technology Group
  18. Jenny Lee, socio en GGV Capital

lunes, 1 de junio de 2015

Tecnologías usadas en los sitios web


Todos los días navegamos por internet para hacer diversas tareas: desde revisar nuestro correo electrónico hasta comunicarnos y entretenernos en las redes sociales; sin embargo pocas veces reparamos en lo que se requiere para darle forma a esos sitios que nos son tan familiares.

Para crear un sitio web se requiere de la interacción de diversas tecnologías que, en conjunto, logran las funcionalidades que le brindan a sus usuarios. En este artículo vamos a conocer las más sobresalientes de ellas.

Lenguajes del lado del cliente

Se les llama así a las tecnologías que se descargan y ejecutan directamente en el navegador web del usuario (como Internet Explorer, Chrome o Firefox). Entre estos lenguajes se encuentran:

HTML y XHTML*. La inmensa mayoría de los sitios web que visitamos a diario están creados con estos lenguajes. Las páginas creadas con ellos contienen una serie de etiquetas que tienen significados específicos que el navegador sabe interpretar, como textos, imágenes, enlaces, tablas, etc. Es un lenguaje muy sencillo de aprender y utilizar, dado que no requiere ninguna clase de conocimiento de programación.

CSS (Cascade Style Sheets). Es un lenguaje que se usa para definir la presentación de un documento escrito en HTML. La idea detrás de CSS es proveer un modo separado de manipular la forma en que se presentarán los diferentes elementos de la página web, como sus colores, tipos de letra, posición en la pantalla, efectos, etc.

Javascript. Este es un lenguaje de programación que añade una capa de funcionalidad e interactividad a nuestras páginas web. Con Javascript podemos mostrar mensajes de alerta a los usuarios, validar los datos capturados en un formulario e incluso crear animaciones sencillas. Su sintaxis y uso son muy sencillos, aunque requiere un conocimiento previo de lógica de programación.

AJAX. Aquí no hablamos precisamente de un lenguaje, sino de una técnica que combina Javascript y XML (del cual hablaremos en un momento) para solicitar información alojada en algún servidor y presentarla al usuario sin interferir con lo que está viendo en ese momento. Por ejemplo, cuando un usuario trata de registrarse a un sitio web, mediante AJAX se puede verificar en tiempo real que el nombre de usuario que está ingresando no exista ya en nuestra base de datos.

Almacenamiento de datos

Cuando se genera un sitio dinámico (que se presenta a un usuario según este lo solicite) necesitamos tener un lugar donde se almacene la información que vamos a presentar en el sitio, como la foto de perfil, el nombre de usuario, los mensajes enviados/recibidos, etc. Algunas de las alternativas para almacenar datos son:

XML (Extensible Markup Language). Este es un lenguaje de sintaxis muy parecida a HTML, pero no tiene etiquetas predefinidas con significados particulares, sino que éstas son establecidas por el usuario de acuerdo con la información que necesite almacenar.

JSON (Javascript Object Notation). Es una alternativa a XML que ha venido tomando bastante fuerza en los últimos años dada su simpleza y su capacidad de ser creado e interpretado por diferentes lenguajes de programación, lo que permite la comunicación entre distintas tecnologías.

Bases de datos. Una base de datos es un conjunto de datos que pertenecen a un mismo contexto (una escuela, un sitio web, una tienda, etc) y que se almacenan en alguna tecnología para usarlos cuantas veces los necesitemos. Las bases de datos más utilizadas para la web son SQL Server (de Microsoft) MongoDB y MySQL (Open Source).

Lenguajes del lado del servidor.

Se les llama así a los lenguajes que no se ejecutan en la computadora del usuario (llamada "cliente") sino en una computadora remota (llamada "servidor") para crear una página web cuando el usuario accede a un sitio. Es decir, buscan la información en una base de datos y generan archivos HTML que son enviados a y visualizados por el usuario. Estos son algunos de los más difundidos:

PHP. Es un lenguaje de programación usado para generar contenidos HTML mediante la inclusión de sencillas instrucciones que sirven para diversas tareas: desde mostrar un mensaje al usuario hasta consultar bases de datos y generar reportes completos (incluso en formatos como PDF). Es uno de los lenguajes más difundidos para el desarrollo web y es tan versátil y potente que sitios como Facebook hacen un fuerte uso de esta tecnología.

ASP. Este no es tanto un lenguaje, sino una tecnología que funciona del lado del servidor y que ejecuta las instrucciones de programación incluidas en un documento HTML para lograr diversas tareas. Estas instrucciones pueden estar escritas en distintos lenguajes de programación, como pueden ser Visual Basic, C# o inlcuso Perl. Esta tecnología es propiedad de Microsoft, y recientemente la ha puesto a disposición de todos los desarrolladores bajo una plataforma de código abierto, por lo que su uso seguramente se extenderá aún más en los años venideros.

Existen otros lenguajes de programación para la web que se han vuelto populares en los últimos años, como Java, Ruby o Python.

Como podemos ver, en la creación de un sitio web están involucradas muchas tecnologías diferentes, además de muchas horas de trabajo de diseñadores, programadores, administradores de bases de datos, testers y otros profesionales que trabajan para crear una experiencia de usuario enriquecedora y útil.



*La diferencia entre HTML y XHTML radica fundamentalmente en que el último requiere una sintaxis más estricta en comparación con el primero, en el que pueden omitirse ciertos elementos sin que esto provoque fallas.

Jordan Casey, programador autodidacta y empresario de sólo 15 años

Jordan Casey demuestra que los títulos universitarios no son necesarios para triunfar. Cuando se quiere, se puede.

Tiene sólo 15 años y ya es dueño de su propia compañía de videojuegos, la cual fundó hace 3 años. Sí, ya era empresario a los 12. Y aprendió a programar aún más joven, pues desde los 9 años ya estaba inmerso en el desarrollo de software, habilidad que aprendió a través de libros y videos de un modo totalmente autodidacta.

Su compañía, Casey Games, ha desarrollado varios juegos para plataformas iOS y Android. Una de ellas, de hecho, la desarrolló en alianza con el gobierno de Brasil para conmemorar el día del niño 2013. Además de desarrollar software, el buen Jordan inició una campaña llamada "Getting kids to code", con la cual busca animar a más niños a que se involucren en el desarrollo de software, actividad en la cual el joven ve una potencial solución a los problemas de desempleo.

En esta corta plática, Jordan nos comparte parte de su trayectoria asi como las que él considera que son las claves de su éxito a tan corta edad.



Jordan Casey, sin duda una joven promesa del mundo de desarrollo de software y un gran ejemplo a seguir. ¡Impulsemos a nuestros niños a aprender a programar!


Fuente: The Next Web



Copyright © Mi rincón del código Compartido por Gooyaabi Templates | Powered By Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com