Archivo
Loxa Bloggers 2007
Iniciativa interesante que nos podamos reunir para compartir todos los que blogeamos en Loxa para el mundo
La agenda de dicho evento Aqui, asi que todos estamos invitados y si no pues nos colamos pero ahi estarémos
Instalando y configurando Project Server 2007
Quiero compartir la instalación y configuración de Project Server 2007, ya que me he gastado unos cuantos días por no tener conocimiento o intuición de algunos cosas triviales.
- Tener instalado windows server 2003
- Descargar e Instalar los services pack 2
- Tener instalado IIS
- Instalar el Framework 3.0 o 3.5
- Conocer el servidor de base de datos SQL Server a utilizar, en caso de ser el mismo servidor instalar SQL Server 2005.
- Proceder con la instalación de Project Server 2007
- Terminada la instalación, ejecutar el asistente de configuración de tecnologías SharePoint, la información que se solicita en este proceso es sencilla de configurar(servidor de base de datos, usuario que realiza la conexión, elegir un puerto desde se realizará la administración de share point,etc).
- Ingresar al link de administación http://servidor:puerto/ , luego ingresar en el area donde esta el nombre del servidor

- Luego hacer click para levantar Project Application Service y Windows Sharepoint Service Search

- Configurar la información solicitada para levantar el servicio y no olvidar colocar el dominio del usuario, en caso de no hacerlo al aceptar los cambios lanza un error inesperado que les podra hacer quebrar la cabeza.

- Realizado esto ir a la pestaña Application Management y seleccionar la opción crear un conjunto de servidores(Create or configure this farm’s shared services), luego elegimos New SSP

- Elegimos crear una nueva aplicación web si aun no la hemos creado

- En el application pool de la configuración del nuevo sitio web que estamos creando tener cuidado de que no sea un servicio de red, ya que al serlo no permitirá que se utilice para creación del conjunto de servidores. Parametrizamos la información necesaria y estamos casi a 1 paso.

- Creado el conjunto de servidores, elegimos el conjunto de servidores creado, en la parte izquierda.
- Elegimos crear Project Web Access Site, y uff!! al fin hemos terminado.
Buen Provecho.
Patrones de Diseño
Desarrollar software aparentemente es escribir unas líneas de código y hacer que funcione, realmente el proceso de desarrollo es complicado y los patrones de diseño nos ayudan a poder realizar dicha tarea de mejor forma.
Un patron de diseño segun Christopher Alexander
«describe un problema que ocurre una y otra vez en nuestro entorno, asi como la solución a ese problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos veces»
Un patron contiene 4 elementos fundamentales:
- Nombre del patron
- Problema
- Solución
- Consecuencias
Los objetivos de los patrones son:
- Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
- Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
- Formalizar un vocabulario común entre diseñadores.
- Estandarizar el modo en que se realiza el diseño.
- Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
Estructura o plantilla de los patrones:
- Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).
- Clasificación del patrón: creacional, estructural o de comportamiento.
- Intención: ¿Qué problema resuelve el patrón?
- También conocido como: Otros nombres de uso común para el patrón.
- Motivación: Escenario de ejemplo para la aplicación del patrón.
- Aplicabilidad: Criterios de aplicabilidad del patrón.
- Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.
- Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.
- Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.
- Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.
- Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.
- Código de ejemplo: Código fuente ejemplo de implementación del patrón.
- Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
- Patrones relacionados: Referencias cruzadas con otros patrones.
Estaré documentando mas sobre el tema.
Compactación de Tablas
Compactar la tabla de simbolos o tabla de transiciones, significa que llegaremos a la construcción de 2 tablas adicionales que no contiene desperdicios de memoria producto de todas las casillas que catalogadas como error en el análisis léxico.
Basado en la tabla de símbolos que hemos utilzado en el post Análisis Léxico, procederé a la construcción de las tablas compactas.
Para reconocer una cadena con estas tablas lo que se hace es lo siguiente:
Asumamos que se quiere reconocer el if(
- 1. Pasamos a número de columna cada caracter de acuerdo a la tabla de transiciones de lo que nos quedaria 125 que es equivalente a if(
- La c2 de la tabla 1 nos indica a que fila vamos en la tabla 2, en este caso nos envia a la tabla 2 en la fila 1 con 6 posibilidades de comparación
- Comparamos es caracter de entrada que es el 1 con el c3 de la tabla 2, en este caso son iguales
- La c2 de la tabla 2 nos indica a que fila vamos en la tabla 1, en este caso nos envia a la fila 1.
- Continuando c2 =7 y nos vamos a la fila 7 de la tabla 2……
Cuando encontramos un número negativo(token) es por que la cadena que estamos trabajando ha sido reconocida sin problemas.
Estas tablas se utilizan para la programación del analizador sintáctico.
Android
Asi se ve el emulador Android del nuevo sistema de google, he instalado el sdk, el cual permite el desarrollo de aplicaciones para esta plataforma y me parece muy interesante, les invito a instalarlo y a que podamos participar en el concurso de desarrollo, los premios se ven muy jugosos.
Les dejo el link para instalación de android como un plugin de Eclipse http://code.google.com/android/intro/installing.ht…
Codigo de una actividad
package goo.andro;
import android.app.Activity;
import android.os.Bundle;
public class Incio extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
}
Nada del otro mundo, a leer la documentación de API y listo.
Buen provecho!!
Análisis Léxico
El analizador léxico, también conocido como scanner, lee los caracteres uno a uno desde la entrada y va formando grupos de caracteres con alguna relación entre sí (tokens), que constituirán la entrada para la siguiente etapa del compilador. Cada token representa una secuencia de caracteres que son tratados como una única entidad.
Un Analizador Léxico (o analizador lineal) transforma la secuencia de símbolos de entrada en una secuencia de componentes (símbolos) léxicos sobre la cual es mas fácil hacer luego el análisis sintáctico. El A.L. lee caracteres de entrada y los agrupa en secuencias que tienen significado dentro de la estructura sintáctico del lenguaje fuente.
Un analizador léxico es un traductor que actúa en la primera fase de un proceso de compilación.
Para iniciar en la construcción de un analizador léxico o primero que realizamos es:
1. Definición de todas las palabras reservadas o también lo llamamos lenguaje, a esto le agregamos todos los caracteres separadores, es decir el caracter inmediato que puede existir luego de esta palabra por ejemplo si tengo el lenguaje:
L= { if, (, ), for }, estas palabras reservadas de C++.
if, sus separadores serán: espacio, (, tabulador, enter
(, sus separadores son muchos: identificadores, numeros, (, espacio, tabulador, etc..
esto se debe hacer con cada una de las palabras reservadas.
2. Construcción del autómata en base a las palabras reservadas:

El número negativo colocado a final, es el token, es decir lo que me va a dar como resultado el léxico al reconocer una palabra, esto puede ser un conjunto de caracteres o número negativos.
3. Construcción de la tabla de transiciones

Esta tabla representa el movimiento del autómata, y ya se puede hacer implementación para reconocer las palabras. Si embargo es necesario realizar un proceso de compactación de tablas.
Espero sus comentarios
Logos y sonidos de windows
Interesante encontrar este video que hace referencia a todos los logos y sonidos de windows, incluyendo las versiones iniciales hasta la actualidad. Muchos recuerdos cuando el lindo windows cada vez nos pedia nuevos requerimientos de hardware.
El libro del dragon
Les hago referencia a un post que me parece curioso e interesante, y bueno me enteré que existe una nueva versión del famoso libro de compiladores, al que «TENEMOS MIEDO»
http://javieraroche.com/2007/02/20/el-libro-del-dr…
Y bueno un complemento obtenido del mismo blog, y que todos los que han usado este libro lo entenderán.
Java – Llega, encuentra al dragón, desarrolla un framework para aniquilación de tragones en múltiples capas, escribe varios artículos sobre el framework… pero no mata al dragón.
.NET – Llega, ve la idea del desarrollador de Java y la copia, intenta matar al dragón, pero el bicho se lo come
C – Llega, mira al dragón con mirada de desprecio, tira de espada, degolla al dragón, encuentra a la princesa… y la ignora para ver los últimos checkins del cvs del kernel de linux
C++ – Crea un pincho básico y va juntando funcionalidades hasta tener una espada compleja que apenas consigue entender… mata al dragón pero se atasca en medio del puente por culpa de pérdidas de memoria (memory leaks)
COBOL – Llega, ve al dragón y piensa que es demasiado viejo para conseguir matar un bicho de ese tamaño y quedarse con la princesa, y entonces se va.
Pascal – Se prepara durante 10 años para crear un sistema de aniquilación de dragones… cuando llega el momento descubre que el programa sólo acepta lagartijas como entrada
VB – Monta un arma de destrucción de dragones a partir de varios componentes, salta encima del lomo del dragón, y en la hora H descubre que la espada sólo funciona durante las noches de lluvia…
PL/SQL – Recoge datos de otros matadores de dragones, crea tablas con n relaciones de complejidad ternaria, datos en tres dimensiones, OLAP, tarda quince años para procesar la información… y para entonces la princesa se volvió lesbiana.
Ruby – Llega con muchísima fama, diciendo que es el mejor en hacer cualquier cosa y cuando va a enfrentarse al dragón muestra una peliculita en la que él mismo aparece matando a un dragón… el dragón se lo come de puro aburrimiento
Smalltalk – Llega, analiza al dragón y a la princesa, se da la vuelta y se pira: ellos son muy inferiores
shell – Crea un arma poderosa para matar dragones, pero en la hora H no recuerda como usarla
shell(2)– El tío se acerca al dragón con un script de dos líneas que mata, corta, destripa, empala, pica en pedacitos y empaca al bicho, pero a la hora de ejecutarlo el script aumenta, engorda, enfurece y pone alcohol en el fuego del dragón.
Ensamblador – Cree que está haciendo lo más correcto y eficiente… pero pone un A en lugar de un D y mata a la princesa para terminar follándose al dragón
Fortran – Llega y desarrolla una solución con 45 mil líneas de código, mata al dragón, va al encuentro de la princesa… pero ella le llama tirillas y se va corriendo detrás del programador de java que era elegante y además es rico
FOX PRO – Desarrolla un sistema para matar al dragón. Por fuera es precioso y funciona, pero por dentro está todo parcheado y cuando va a ejecutar el aniquilador de dragones recuerda que olvidó indexar los DBF.
ANALISTA DE PROCESOS – Se acerca al dragón con dos toneladas de documentación desarrollada sobre el proceso de matar un dragón genérico, desarrolla un DFD para liberar a la princesa y casarse con ella, convence al dragón de que es lo mejor para el y que no va a doler. Al ejecutar el proceso estima el esfuerzo y el tamaño del daño que causará con la firma del papa, de Buda y de Joan Manuel Serrat para el plano, y entonces compra dos bombas nucleares, 45 cañones, un portaaviones y contrata a 300 hombres armados hasta los dientes… cuando en realidad tan sólo necesitaría la espada que tenía en la mano desde el principio
CLIPPER: Monta una rutina que carga un array de codeblocks para insultar al dragón, cantarle a la princesa, cargar la espada a memoria, moler al dragón, limpiar la suciedad, preparar un vaso de leche condensada con moras para la princesa, follar a la princesa, darse un baño, encender el coche, ponerle gasolina y volver para casa. A la hora de ejecutar recibe un “Bound Error: Array Access” y el dragón se lo come con patatas.
Twitter, para windows
Documentandome sobre el API de twitter, he construido un cliente en .net para twitter, el cual he utilizado una libreria TwitterooCore.dll de twittero para autenticar al servidor, y lectura de se los servios para realizar obtener la información de los post , asi como para la actualización. http://twitter.com/statuses/friends_timeline.xml, para la lectura de los post de los amigos http://twitter.com/statuses/public_timeline.xml, para los públicoshttp://twitter.com/statuses/update.xml para la actualización del estado Les comparto el instalador, luego publicaré el código fuente cuando complete la autenticación sin la libreria utilizada
Navegación Celular
Realmente estoy experimentando con un BlackBerry navegando y leyendo correo. Creo que cuando tenemos la costumbre de navegar no se va a poder poner en restricción. La red nos acompaña en todos los lugares y no se puede evitar.
Realmente asombroso tener: Gmail, Maps,Talk como aplicaciones de escritorio en el dispositivo, hace increible como la tecnología nos llega.
Lo que no les va a parecer muy agradable a las telefónicas es tener voz sobre IP en los dispositivos, es decir herramientas tipo Skype que permitan realizar llamadas, les llevaria a que los usuarios contraten Internet y se olviden de los minutos celulares.
Los sitios WAP, existen muchos pero realmente no todos cubren las espectativas para estar en proceso de auge considero muy aceptable todo lo que he logrado observar en tan solo dos días de tener el servicio.






Comentarios Recientes