lunes, 4 de octubre de 2010

Instalación de Zend Server CE en Ubuntu 10.04

Zend Server CE en Ubuntu
Zend Server.
Como había escrito en un post anterior, estoy haciendo énfasis en el aprendizaje, desarrollo e implementación de tecnologías en la nube. entonces a partir de ahora se inicia la entrega de diferentes guías, tutoriales, descargas, &c.

Y es así, que para esta ocasión me he tomado un poco de tiempo para explicar el proceso de instalación automático de Zend Server Community Edition (CE) para Linux:
  1. Descargar el script de instalación (disponible en RPM/DEB) desde Download the Latest PHP Products from Zend.
  2. Descomprimir el archivo recién descargado.
  3. Ingresar al contenido del directorio descomprimido. Y ejecutar uno de los siguientes comandos:
    • Para PHP 5.2: sudo install_zs.sh 5.2 ce
    • Para PHP 5.3: sudo install_zs.sh 5.3 ce
  4. Una vez finalice la instalación podemos ingresar al administrador Web de Zend Server, así:
    • Modo seguro: https://localhost:10082/ZendServer
    • Modo normal: http://localhost:10081/ZendServer/
Bueno, eso corresponde a la instalación de Zend Server. Espero que esto les sea de gran ayuda.


Adicional: dejo el link oficial de la comunidad de Zend.

domingo, 3 de octubre de 2010

Conceptos básicos de Programación y Diseño

Programación: La base de la programación es la lógica binaria; hay una forma correcta e incorrecta para implementar un algoritmo dado.

Diseño: La base del diseño es cómo su cerebro interpreta lo que él ve; y dado que no todos interpretan las cosas de la misma manera, es imposible decir que si algo es correcto o incorrecto.

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:

miércoles, 7 de julio de 2010

jueves, 24 de junio de 2010

Enlace: Leadership and Software Teams: Some Thoughts


Artículo (en inglés) que describe las etapas de maduración de un equipo de trabajo en ingeniería de software, además de las estrategias de liderazgo.

viernes, 18 de junio de 2010

jueves, 20 de mayo de 2010

Noticia: Larry Ellison critica fuertemente a Jonathan Schwartz

Larry Ellison critica fuertemente a Jonathan Schwartz

Artículo de noticia en FayerWayer en donde se cuenta la percepción de Larry Ellison (CEO de Oracle) frente a la mala gestión de Jonathan Schwartz (CEO de Sun Microsystems).

Enlace: Aplicación con Acceso a Bases de Datos Java MySQL y Patrones de Diseño Parte 4


En este el lector podrá encontrar un ejemplo de la implementación un patrón de diseño para el acceso a una base de datos MySQL.

Anti-patrón

Anti Pattern es un artículo que describe cómo surgen las malas soluciones cuando se aplican fórmulas de construcción de software no óptimas ni adecuadas para un problema concreto.

lunes, 8 de marzo de 2010

Ch03-01: Ejercicio del ejemplo de GUI y gráficos

3.1 (Extra) Modifique el programa de suma en la figura 2.7 para usar la entrada y salida basadas en cuadro de diálogo con los métodos de la clase JOptionPane. Como el método showInputDialog devuelve un objeto String, debe convertir el objeto String que introduce el usuario a un int para usarlo en los cálculos. El método
Integer.parseInt(String s) toma un argumento String que representa a 
un entero (por ejemplo, el resultado de JOptionPane.showInputDialog) y 
devuelve el valor como un int.

El método parseInt es un método static de la clase Integer (del paquete java.lang). Observe que si el objeto String no contiene un entero válido, el programa terminará con un error.

Solución:

Archivo Java DialogoSuma.java [enlace alternativo]:

Conclusiones:

El uso de componentes visuales para interfaz gráfica de usuario facilita la interacción y facilidad de uso de una aplicación.

Ch03-15: Clase Fecha

3.15 Cree un clase llamada Fecha, que incluya tres piezas de información como variables de instancia -un mes (tipo int), un día (tipo int) y un año (tipo int). Su clase debe tener un constructor que inicialice las tres variables de instancia, y debe asumir que los valores que se proporcionan son correctos.

Proporcione un método establecer y un método obtener para cada variable de instancia. Proporcione un método mostrarFecha, que muestre el mes, día y año, separados por barras diagonales (/). Escriba una aplicación de prueba llamada PruebaFecha, que demuestre las capacidades de cada Fecha.

Solución:

Archivo Java Fecha.java [enlace alternativo]:

Clase que prueba las capacidades de la clase Fecha:

Archivo Java PruebaFecha.java [enlace alternativo]:


Conclusiones:


El manejo de fechas en un programa de Java es importante, pues permite el control de ciertos elementos sobre el programa.

Se pueden crear métodos ayudantes para mostrar mensajes al usuario de la aplicación y evitar la fatiga.

domingo, 7 de marzo de 2010

Ch03-14 - Clase Empleado

3.14 Cree un clase llamada Empleado, que incluya tres piezas de información como variables de instancia: un primer nombre (tipo String), un apellido paterno (tipo String) y un salario mensual (tipo double). Su clase debe tener un constructor que inicialice las tres variables de instancia.

Proporcione un método establecer y un método obtener para cada variable de instancia. Si el salario mensual no es positivo, asignar 0.0.

Escriba una aplicación de prueba llamada PruebaEmpleado, que demuestre las capacidades de cada objeto Empleado. Cree dos objetos Empleado y muestre el salario anual de cada objeto. Después, proporcione a cada Empleado un aumento del 10% y muestre el salario anual de cada Empleado otra vez.

Solución:

Archivo Java Empleado.cs [enlace alternativo]:
Clase que prueba las capacidades de la clase Factura:

Archivo Java PruebaEmpleado.java [enlace alternativo]:

Conclusiones:


Cada Empleado conserva los valores correspondientes a sus variables de instancia (atributos). El cambio de estado de un objeto, en esta problema, no afecta la estabilidad del otro, por lo tanto se está haciendo uso correcto del paradigma orientado a objetos.

A medida que van surgiendo cambios, es decir, cada vez que se realiza una acción sobre los objetos estos se van moldeando a los mensajes recibidos por otros objetos de esta misma clase u otra.