lunes, 27 de septiembre de 2010

openindiana la alternativa verdaderamente open source de OpenSolaris

Como es sabido por la comunidad open source, OpenSolaris ya no recibirá atención por parte de Oracle (quien adquirió Sun Microsystems e hizo que se descontinuará el desarrollo de este sistema operativo), con lo cual muchos usuarios se han vistos afectados por esta situación.

Luego, la comunidad, precisamente el grupo OpenIndiana, por medio del aporte de muchos usuarios, ha proyectado el desarrollo de un sistema operativo basado en OpenSolaris.

viernes, 24 de septiembre de 2010

Frase: "Each pattern describes a problem which occurs over and over again in our environment..."

"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice"

A Timeless Way of Building - Christopher Alexander

Fuente: Design pattern - Wikipedia


Noticia: Transición Java

En Java México han publicado un corto artículo que habla sobre los problemas que evitan que Java sea usado como plataforma de desarrollo en empresas. Al iniciar, se menciona sobre lo que se considera Java hoy en día, quiénes son las personas que más lo están usando, etc.

martes, 21 de septiembre de 2010

Algunos conceptos sobre patrones e Ingeniería de Software

Este artículo expone algunas definiciones importantes acerca de patrones e ingeniería de software.

“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces” [Alexander - A Pattern Language Towns/Building/Construction]

Concepto de patrón de diseño:

"Una arquitectura orientada a objetos bien estructurada está llena de patrones. La calidad de un sistema orientado a objetos se mide por la atención que los diseñadores han prestado a las colaboraciones entre sus objetos. Los patrones conducen a arquitecturas más pequeñas, más simples y más comprensibles". [Grady Booch]

Los patrones de diseño son descripciones de clases cuyas instancias colaboran entre sí. Cada patrón es adecuado para ser adaptado a un cierto tipo de problema. Para describir un caso debemos especificar:
  • Nombre
  • Propósito o finalidad
  • Sinónimos (otros nombres por los que puede ser conocido)
  • Problema al que es aplicable
  • Estructura (diagrama de clases)
  • Participantes (responsabilidad de cada clase)
  • Colaboraciones (diagrama de interacciones)
  • Implementación (consejos, notas y ejemplos)
  • Otros patrones con los que está relacionado

[Extraído desde: Design Patterns - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides]

domingo, 19 de septiembre de 2010

Hacia la Web...

Desarrollo Web
Fuente: Faticon

Test de Personalidad del Programador

En el siguiente enlace: Programmer Personality Test me he encontrado con un interesante test que mide la personalidad de un programador.


Entre las preguntas que se hayan en el test son:
  • ¿En qué invierte la mayor parte de su tiempo?
  • ¿Quién es el mejor programador?
  • ¿Cuál es la mejor manera de programar?
  • El lenguaje 'perfecto' será:
  • ¿Cuál es la mejor implementación?
Este test, puede ser útil para comprender cómo nos comportamos durante el desarrollo de una aplicación o sistema, cuáles son nuestras habilidades más sobresalientes, y cómo y en qué estamos fallando.

sábado, 18 de septiembre de 2010

Código spaghetti

Hablemos un poco del famoso código spaghetti:


El código spaghetti se distingue por ser un código que tiende a utilizar instrucciones u órdenes que llevan a confundir durante su lectura, y que en un programa extenso hace que sea ilegible y de difícil comprensión.
Características específicas del código spaghetti: sinnúmero de instrucciones GOTO, excepciones, hilos, y construcciones de decisión sin una estructura bien definida.

Miremos el primer ejemplo [Wikipedia2010]:

Para un programador principiante, este un código de difícil interpretación.

Ahora el mismo programa, pero en un lenguaje de programación estructurado [Wikipedia2010]:

Como podemos observar, los lenguajes de programación actuales han cambiado ese enfoque antiquísimo de forma radical, lo que permite que haya más personas que puedan escribir programas sin conocimientos profesionales.

Más información: aquí

Copiar & pegar código fuente en-línea



Pastebin de Ubuntu es una gran utilidad alojada en la nube, que nos permite pegar cualquier texto (plano) o código fuente de cualquier lenguaje de programación (la lista es bastante extensa), por ejemplo: ActionScript, C++, C#, CSS, Erlang, HTML, Java, JavaScript, MySQL, Perl, SQL, XML, entre otros más.


Aquí dejo un ejemplo:



Desde este enlace puede consultar el código y descargarlo. Esto quiere decir que por cada texto que peguemos en Ubuntu Pastebin, nos proporcionar un enlace para poder compartirlo con otros e inclusive descargarlo: http://paste.ubuntu.com/485447/.



[ACTUALIZACIÓN: 2017/04/13]

A pesar de que esta herramienta provee la funcionalidad requerida para compartir snippets, este blog usa Pastebin.com; una herramienta que provee una funcionalidad más extendida y un soporte mayor. Se puede conseguir en dos versiones: la de acceso gratuita y la de pago (opción aplicada en este blog debido a la cantidad de snippets que se suelen compartir por día y la vigencia).

Aplicaciones Web vs Aplicaciones de Escritorio

Aplicaciones Web vs Aplicaciones de Escritorio
Fuente: http://upload.wikimedia.org/wikipedia/commons/4/47/Wilos-web-desktop.png

Podemos fácilmente distinguir entre una aplicación Web y una aplicación de Escritorio: esta última se caracteriza por llevar a cabo casi la totalidad de operaciones de negocios, la seguridad impera en este modo, debido a que el equipo donde se encuentra instalada puede contar con diferentes mecanismos de defense frente a virus, troyanos, software espía, &c; el rendimiento y velocidad de procesamiento son también un punto a favor, dado que de forma local aprovecha (si es que el desarrollador de la aplicación lo ha considerado) los recursos de máquina de forma eficiente y eficaz.

Ahora, con respecto a las aplicaciones Web, éstas tienen muchos puntos a favor, como por ejemplo la administración centralizada, el despliegue se puede realizar en un 1/4 del tiempo que toma una aplicación de Escritorio en instalarla en equipos cliente. Por otro lado, sigue el paradigma de multiplataforma, ya que a través de un único navegador es capaz de acceder a la aplicación como tal y llevar operaciones como si se tratará de una aplicación más instalada en el equipo local. Sus usuarios pueden acceder (siempre que se haya concedido este permiso) desde cualquier otra máquina que no se la propia suya.

Para quienes estén interesados en leer más acerca de este este interesante tema, a continuación dejo un enlace donde: