viernes, 18 de diciembre de 2009
Analogias de SCM
Bóveda = Repositorio
- Repo es comun de activos digitales
- Almacena Artefactos
- Asegura Artefactos
Album Fotos = CodeLine
- Almacena historia de cambios Quien? Que? Cuando? Pq?
- Almacena cambios eficientemente (en el espacio)
- Reproduce cualquier versión (gracias a los negativos) de cualquiera
Construyendo Casa = Construyendo Sw
- Cambios requieren coordinación (maestro obra)
- Secuencia actividades en la construcción (workflow)
Viaje en el Tiempo = CodeLine
- Visitar código fuente de:
* Anoche
* Otra plataforma
* Un release de hace 5 años
- Configuración: grupo relacionado de artefactos.
Pq usar configuración?
* Administrar versiones de archivos y dirs
* Administrar areas de Trabajo (worckspace)
* Repdroducir configuraciones completas de sistema de sw
- Administración del area de Trabajo
Libro Varios Autores = Desarrollo Paralelo
Características similares:
- Crear nuevos archivos y directorios
- Modificar versiones existentes
- Acceder al mismo código
- Integrar sus trabajo
Administración Procesos
- Un proy de sw es un proyecto de construcción
- Administrar y coordinar las actividades de miembros
Administración de Builds
- Build: compilar, ejecutar pruebas de unidad y linkear
- Software Build, version completa de un sistema que ya es utilizable
- Builds que no funcionan solo bloquean el proceso
- Ejecutar builds optimizan procesos,
Exitos
lunes, 10 de agosto de 2009
Arquitectura de la Ontología
A continuacion una imagen sobre la arquitectura de una Ontologia que se basa en la arquitectura de la Web Semántica en donde podemos encontrar los elementos básicos de una ontología como lo es XML & XML Schema, DFR & RDFSchema, Vocabularios, etc.
Exitos!!
viernes, 3 de julio de 2009
Ser Ingeniero es un Don !!!
Exitos para los que estamos estudiando Ingenieria!!!! definitivamente es un Don :P
martes, 30 de junio de 2009
Mi primer ABC en JPA
Es un ABC ya que seran tres metodos que haran Altas (inserciones) Bajas (eliminaciones) Cambios (modificaciones) en la Base de datos, en este caso usaremos MySQL y NetBeans.
Altas:
Pues emezaremos con las inserciones a la base de datos, el codigo seria el siguiente:
public void addJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
em.persist(jugador);
entr.commit();
} finally {
em.close();
}
}
Esto es solo si creamos con anterioridad un objeto tipo Jugador para darle persist, ahora en el caso de que tengamos que obtener los datos de algun formulario, podria ser el siguiente codigo:
public void addJugador() {
EntityManager em=emf.createEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador newJugador=new Jugador();
jugador.setColor("Azul");
// o jugador.setColor(jTextField.getText());
jugador.setDescripcion("Este es un ejemplo.");
//o jugador.setDescripcion(jTextField2.getText());
em.persist(jugador);
entr.commit();
System.out.println("Ingreso exitoso ala base de datos.");
}
catch(Exception e){
System.out.println(e.getMessage());
}
finally{
em.close();
}
}
Bajas:
Para poder eliminar un objeto o bien una tupla de la base de datos.
public void removeJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador deleteJugador = em.find(Jugador.class, jugador.getJugador());
em.remove(deleteJugador);
entr.commit();
} finally {
em.close();
}
}
Igual que en el anterior el objeto Jugador que se pasa por parametro puede tomarse de otro lado, un jTable, una Lista, etc.
Cambios:
Ahora para modifcar informacion podemos hacer lo siguiente:
public void updateJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador changeJugador = em.find(Jugador.class, jugador.getJugador());
changeJugador.setColor("Verde");
changeJugador.setDescripcion("Una modificacion a la BD.");
entr.commit();
} finally {
em.close();
}
}
Por si lo necesitan, pueden descargar el archivo rar del siguiente link, seria grandioso ya que ahi podran encontrar lo siguiente:
- El script de la tabla de la base de datos que estaremos manipulando.
- El mapeo de la tabla al objeto Jugador.java
- El archivo que tiene los metodos del ABC.
Estoy pensando hacer mini videos tutoriales para poder mostrar un poco mas a detalle esto de JPA, ojala los pueda subir pronto ;)
Exitos!!!!!
domingo, 14 de junio de 2009
Procesadores de Lenguaje
Definicion:
Los procesadores de lenguaje son todos los programas que a través de una entrada escrita en un lenguaje de programación pueden manipular herramientas de software y hardware de un computador. Estos procesadores de lenguaje se dividen en traductores e intérpretes.
Traductor:
Un traductor es un programa que recibe un código fuente y lo traduce a otro código, generalmente a un código objeto, sin perder su funcionamiento.
Interpretes:
Un intérprete es un programa diseñado para ejecutar instrucciones de un código determinado, no genera ningún tipo de código adicional, y es ejecutable.
Exitos!!!!
jueves, 28 de mayo de 2009
Robot NXT
Exitos!!!
sábado, 16 de mayo de 2009
Que es GEANT?
Definicion
Red Avanzada de comunicación, esta nueva red cambia la forma de hacer investigaciones en Europa, es por ello que la llaman el futuro de las investigaciones, si nos imaginamos comparar resultados de dichas investigaciones realizadas en un solo cuarto versus comparar toda la información de las investigaciones en toda Europa, es un cambio total a la hora de "hacer ciencia", la red es tan amplia que se mencionan algunas investigaciones o tópicos que ya están a disposición de GEANT o GEANT esta a disposición de ellas, entre las que podemos mencionar:
- Radioastronomy (VLBI)
- Estructuras de Edificios
- Taxonomia (Natural History Museum)
- Meteorología
Pq se debería de desarrollar una red tipo GEANT en Guatemala?
No se si "desarrollar" seria la expresión correcta, o si mejor la cambiaríamos a "Implementar" ya que como se menciono tenemos el recurso pero a veces no lo aprovechamos por no saber los beneficios que esta nos trae, creo que el tener una red avanzada no solo seria un lugar donde publicar sino también buscar y comparar resultados u opiniones y siendo un poco mas ambiciosos podríamos comunicarnos con el resto del mundo y dar a conocer a Guate en otra faceta, la de Científica e Investigativa.
Exitos!!!
viernes, 24 de abril de 2009
Algoritmo para pasar un AFD hacer Analizador Lexico
Hoy escribire de como se puede mapear un AFD (Automata Finito Deterministico) hacia un analizador Lexico, les dare el algoritmo basico para esto:
Primer Paso:
Segundo Paso:
Reglas:
- Cada estado se convierte en un Case
- Cada transición se convierte en un If el cual debe estar dentro de un case.
- En cada estado de aceptación, se agrega un else if para aceptar el lexema.
Tercer Paso:
Variables
Estado: el cual nos indicara en que estado nos encontramos. Es el valor que se utiliza en el switch de comparación.
Índice: nos dice la posición en la cual nos estamos moviendo dentro de nuestro archivo de entrada.
Lexema: será la variable donde estaremos concatenando la información leída del archivo de entrada.
Archivo Entrada: el cual contendrá lo que leamos del archivo de entrada.
Cuarto Paso:
Algoritmo Básico
Inicializar Variables {
Mientras No sea EOF{
Incrementamos índice
Leemos carácter del Archivo de Entrada en la posición índice
Switch ( estado ) {
En caso que sea 1
Si (carácter es igual a transicion1)
Cambiar estado
Lexema se le agrega el nuevo carácter
Sino Si (carácter es igual a transicion2)
Cambiar estado
Lexema se le agrega el nuevo carácter
….
Sino Si (carácter es igual a transiciónN)
Cambiar estado
Lexema se le agrega el nuevo carácter
Sino es ninguna de las anteriores
Es error lexico
En caso que sea 2
Si (carácter es igual a transicion1)
Sino Si (carácter es igual a transicion2)
….
Sino Si (carácter es igual a transiciónN)
En caso que sea 3 y este sea un estado aceptación
Aceptar Lexema asociado a Token
Reiniciar estado
Limpiar el Lexema
Retroceder el indice.
}//Fin Switch
}//Fin Mientras
}//Fin de Metodo
Espero les sirva este algoritmo, muy pronto estare subiendo ejemplos de como llegar al AFD y de como implementar el analizador lexico en java.
Exitos!!!!
viernes, 17 de abril de 2009
Metodología de Mejora de Proceso
Regreso con un tema nuevo, ahora estoy viendo un poco sobre procesos, así que hoy daré las principales fases para modelar un proceso de negocio:
1. Fase de Inicialización
1.1 Definir Propietario del Proceso: en este punto buscamos a la persona que este mas familiarizada con el mismo, esta persona debe de tener conocimiento sobre todo lo relacionado al proceso.
1.2 Definir Limites y Alcance: en este segundo paso nos toca definir los limites, pero ahora se ven un poco mas que solo los procesos ya que se definen los limites y el alcance de los procesos dentro del negocio, así como definir los del negocio.
2. Fase de Definición
2.1 Definir Procesos: ahora nos toca establecer pasos tareas y actividades para establecer prioridades entre procesos y subprocesos, y ver las relaciones entre ellos, para esta fase nos auxiliamos de diagramas de alto nivel, un ejemplo de estos son diagramas de flujo.
3. Fase de Control
3.1 Definir Métricas: esto nos ayuda a clasificar al proceso ya que sin medidas no podremos saber si el proceso llego a su objetivo, si es bueno o si es malo. Algunos ejemplos de medidas son: Desecho, Repetición, Conformidad.
3.2 Puntos de Control: esto es para saber si el proceso llego a cumplir metas, algunos ejemplos de puntos de control son: Costo, Tiempo de Respuesta, Variabilidad
3.3 Retroalimentación: aquí lo que hacemos es compartir información, esto con el fin de mejorar aspectos del proceso.
Exitos
domingo, 12 de abril de 2009
SCM Versionamiento y Operaciones
Hoy otra vez con SCM dando algunos conceptos que se utlizan mucho en este tema como lo es el versionamiento, ademas las operaciones comunes a realizar cuando se utiliza SCM:
Identificación de Versiones:
Se necesita saber la intención del cambio para realizar de manera optima el merge al repositorio.
- Numérico: es el mas común y se rige de acuerdo a : Mayor.Menor[.Revision[.Build]]
- Fecha: uso del esquema año, mes, dia para identificar 20040505
- Año Release: únicamente identifica el año, Office 2007
- Código Alfanumérico: Códigos que representen algo, Flash MX
Operaciones Comunes
A continuacion las operaciones que se pueden realizar comunmente:
- Import: agregar archivos al repo
- Check out: copia del repo al workspace
- Add: agregar un archive al repo
- Modificar: modificar un archive localmente
- Update: sincronizar la copia local con el repo
- Check in Comitt: incorporar una nueva revisión de un archive modificado localmente.
miércoles, 1 de abril de 2009
Impacto de eCommerce en Guate
• Business to Consumer (B2C)
Es el modelo de comercio entre las Empresas y los consumidores finales. Se trata de la venta directa a través de Internet.
Ejemplos:
* MacDonals
* HiperPaiz
* Bi
• Costumer to Costumer (C2C)
Es el modelo de comercio entre consumidores individuales. En un sitio web se provee de una plataforma de intercambio desde donde los consumidores finales hacen sus transacciones económicas con otros.
Ejemplos:
* GpAutos
* Gubiz
* RapiCompra
• Peer to Peer (P2P)
Es el sistema de red en el que los archivos se reparten en diferentes computadoras, los usuarios accedan a éste de uno a otro en vez de por un servidor central. Se da por medio de e-mail o Internet. Su principal caracteristica es q no hay una transaccion monetaria.
Actualmente en guatemala no existen sitios de este tipo, para ejemplificar y enteder bien el concepto de P2P, podria mencionar los siguientes Ejemplos:
* Napster: servidores q se comunican y hacen intercambio de música.
* Ares Galaxy
* eMule
• mComerce (P2P)
Este modelo de comercio nace para los entornos de Internet móvil (teléfonos, PDA, Ipod , Iphone …), utiliza el teléfono y otros dispositivos móviles para conectar al usuario con la web, fomentando las ventas de muchos productos, sobre todo tonos, juegos, imágenes, música, videos, etc.
Ejemplos:
* Interacel Guatemala
* Claro (Nueva tecnologia 3G)
* Tigo
En Conclusion:
Existen muchos modelos más, pero he detallado los más importantes y conocidos, aunque todos tienen una forma de incorporarse e impactar el desarrollo de eComerce siento que gracias al aumento de los dipositivos moviles las ventas por este modelo seran el futuro.
Creo que es dificil poner a cierta empresa en un solo modelo, ya que presta varios servicios que limitarla a un modelo, seria limitar a dicha empresa, un ejemplo puede ser el Banco Industrial que no solo da sus servicios bancarios en linea, sino que provee de mensajeria a moviles para informar las transacciones realizadas a una cuenta. Otra seria Claro que aunque manda mensajes de promociones a los moviles, tambien deja hacer pagos de facturas en linia. Estos solo son ejemplos de como un modelo no puede encapsular a una empresa.
sábado, 28 de marzo de 2009
Wireless Broadcom 802.11b/g en Ubuntu 8.10
Para solucionar este problema se ha creado un driver generico, este hace funcionar tu tarjeta sin ningun problema.
Pasos a seguir:
1. Sistema
2. Administracion
3. Gestor de Paquetes Synaptic
4. Buscamos el paquete b43-fwcutter
5. Aplicamos Cambios
6. Reiniciamos
Listo, mi wireless inicio a funcionar :P
Exitos!!!
viernes, 27 de marzo de 2009
Manejo de Archivos en Java
Hoy quiero compartir algunos conceptos basicos para el manejo de archivos en java :
Los fundamentos de flujos
Si se desea procesar los datos en un archivo existente, se debe:
1. Abrir el archivo
2. Leer o introducir los datos en las variables, un elemento a la vez
3. Cerrar el archivo cuando terminemos de trabajar con el.
Si se desea transferir algunos datos de ciertas variables a un archivo, se debe:
1. Abrir el archivo
2. Extraer o escribir nuestros elementos en la secuencia requerida.
3. Cerrar el archivo cuando terminemos de trabajar con el.
Entonces un archivo es una serie de líneas de texto, y cada una compuesta por un número de caracteres. Cada línea termina con un carácter de fin de línea (\n)
Las clases de E/S en Java
Las clases de flujos están organizadas en forma jerárquica. A continuación las clases mas útiles.
1. Reader
1.1 BurreredReader
1.2InputStreamReader
1.2.1 FileReader
2. Writer
2.1 PrintWriter
2.1.1 FileWriter
Las clases BufferReader y PrintWriter
Para leer y escribir líneas de texto, se utilizan:
* El método readLine de BufferedReader.
* Los métodos print y println de PrintWriter.
Agloritmo a seguir para la Salida de Archivos
ArchivoDemo1.java
Abre el archivo “textoSalida.txt”
Obtiene una cadena del area de texto
Escribe la cadena en el archivo
Cierra el archivo
ArchivoDemo2.java
Introduce un nombre de archivo proveniente del campo de texto.
Abre un archivo con ese nombre
Introduce las lineas del archivo y las anexa al área de texto siempre y cuando no se llegue al fin del archivo.
Cierra el Archivo.
Hice tres clases en java para el manejo de archivos, ArchivoDemo1.java; ArchivoDemo2.java; FileDialogDemo.java ; Por aqui les dejo el link de descarga: Manejo Archivos Java
Exitos!!
miércoles, 18 de marzo de 2009
Compilador Vs Intérprete
• Un programa compilado puede funcionar por si solo mientras que un código traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.
domingo, 15 de marzo de 2009
What Drives Design?
Hoy dare un resumen de una presentacion que encontre en InfoQ la cual se titula What Drives Design? la expositora fue Rebecca Wirfs-Brock, y da un enfoque sobre que deberia dirigir el diseño de software, se enfoca principalmente en RDD, aunque se mencionan otros.... a continuacion una sintesis del video:
What Drives Design
Definicion de Driven: motivado para tener o necesitar una compulsiva calidad
RDD Responsability Driven Design
Para esta forma de manejar el diseño, existen métodos abstractos para construir en base a bloques:
1) Add: un Objeto
2) Remove: Un objeto
3) Do: un Bloque
Principios de RDD
- Maximizar Abstracción: distinción entre la data y el comportamiento
- Comportamiento Distribuido: control delegado en arquitectura
- Flexibilidad: objetos que pueden ser cambiantes
Receta para diseñar sw complejo:
- Identificar funcionalidad e info relacionada: Definir num objetos y componentes
- Decidir que funcionalidad e información pertenece a cada elemento
- Decidir que elementos se comunicarán con msj
- Diseñar clases que cumplan con lo anterios
Nota: Contexto es importante para diseñar con responsabilidad RDD
En RDD Diseño de Construcciones, se pueden clasificar algunos elementos como lo son:
- Role: set de responsabilidades
- Responsabilidad: obligación por cumplir una tarea
- Colaboración: interacción entre elementos de diseño (Objetos / Roles)
- Contrato: acuerdo de los términos de colaboración
El Modelo de Responsabilidad, Es una demostración de cómo un grupo de componentes u objetos trabajando juntos por una tarea especifica.
Estereotipos de Roles
(cada uno tiene una responsabilidad)
Information Holders : conocen y dan a conocer info
Structurer: mantiene relación entre info y objetos
Interfacer: Traduce información y peticiones
Service Provider: Realiza trabajo en demanda
Coordinator: realiza eventos mecánicos (semáforo)
Controller: toma decisiones q afectan otras acciones u eventos (policía)
Nota: Tanto el controller como el coordinator, son controles de diseño
XX- Driven Design
Algunas caracteriticas de elementos que pueden guiar el diseño son:
FDD Feature Driven Design (Feature by Feature )
Walktrhough -> Desing -> Design Inspection -> Code -> Code Inspection
Diseña la primera semana, se codifica en la segunda
TDD Test Driven Design (Stroy by Story)
Text -> Code -> Run Test -> Code pass the test
Diseño va evulucionando mediante historias
BDD Behaivor Driven Design
Dar un contexto (Give a context)
Cuando ocurre un evento (When a event ocurre)
Luego asegura resultados (Then ensure some outcomes)
DDD Domain Driven Design
Objeto Entidad
Valor del Objeto
CDD Contract Driven Design
Aceptar valores
Retornar valores
Errores de excepcion
Pre y Post condiciones
RDD Resposability Driven Design
Contactos como interface del diseño
miércoles, 11 de marzo de 2009
Elementos de SCM
Algunos elementos del SCM son:
Repositorio: es un almacenamiento centralizado de datos, en forma de árbol filesystem, con jerarquía de directorios. Acciones son: Conectar, crear, escribir, entre otras.
Area Trabajo: Workspace, lugar privado de trabajo para el desarrollador local el cual se sincroniza con el repositorio.
Codeline: es una progresión del conjunto de artefactos o fuentes del sw que cambian en el tiempo.
Revisión: cada cambio en un archivo o artefacto se genera una revisión.
Snapshot: son varias revisiones de cada componente en el codeline.
Configuración: es una colección de revisiones de cada componente.
Label: identifica o marca versiones (configuraciones) como especiales.
Politica: definen el propósito del codeline y reglas de cuando y como se pueden hacer cambios.
Release: Conjunto de revisiones de diferentes archivos que conforman en conjunto un producto de sw q se libera.
Exitos!!!
viernes, 6 de marzo de 2009
MySQL Error
Los cambos eran estos:
ALTER TABLE `final_ag`.`horario` ADD CONSTRAINT `FK_horario_2` FOREIGN KEY `FK_horario_2` (`dia`)
REFERENCES `dias` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
Pero salio el error MySQL Error 1005, y me puse a ver cual podria ser el error y encontre que mi tabla dias era MyISAM, y mi tabla horario era InnoDB, por lo cual tube que cambiar mi tabla dias para que siguiera la misma estructura de las demas tablas:
ALTER TABLE `final_ag`.`dias` ENGINE = InnoDB;
Esto me dio la solucion y logre hacer mi FK sin ningun inconveniente.
Exitos!!
miércoles, 4 de marzo de 2009
Conceptos Basicos de Sistemas Operativos
Prevención Consiste en condicionar el sistema con una serie de reglas estáticas, para evitar al menos una de las condiciones de interbloqueo, por lo que este nunca sucederá
Predicción Consiste en condicionar el sistema para revisar el estado del mismo cuando cualquier proceso realice una petición de recursos, de modo que nunca se interbloquee
Fallo de Pagina Es el evento que consiste en acceder una pagina que no se encuentra en memoria y se tiene que buscar en el espacio de disco duro
Hiperpaginacion Es el evento que consiste en acceder en forma excesiva paginas que no se encuentran en memoria y se tiene que buscar en el disco duro.
Reemplazo Optimo Es la estrategia de reposición de pagina que consiste en reemplazar la pagina que no se va a utilizar durante el tiempo mas largo
Menos frecuente usado Es la estrategia de reposición de paginas que consiste en reemplazar la pagina cuyo contador de accesos a la misma tiene el menor valor
Localidad Espacial Es el principio que consiste en considerar alta la probabilidad de que un evento sucederá en un espacio cercano, dado que sucedió cerca.
Localidad Temporal Es el principio que consiste en considerar alta la probabilidad de que un evento sucederá en un tiempo cercano, dado que sucedió hace poco tiempo.
Kernel monolítico Es el tipo de kernel que tiene todos sus componentes en el mismo espacio de memoria y para agregar una nueva funcionalidad, se de recompilar por completo.
Kernel modular Es el tipo de kernel que, aunque tiene todos sus componentes en el mismo espacio de memoria, se le puede agregar funcionalidades dinámicamente.
Microkernel Es el tipo de kernel que tiene sus componentes en distintos espacios de memoria, los cuales se comunican entre si por medio de colas de mensajes.
Interrupciones Es el mecanismo de comunicación con dispositivos donde el adaptador interrumpe al procesador para que transfiera los datos del dispositivo a memoria
Proyección en puertos Es el mecanismo de comunicación con dispositivos donde el adaptador interactúa con el procesador a través de puertos donde se lee y escribe
DMA Es el mecanismo de comunicación con dispositivos que consiste en que el adaptador interactúa directamente con la memoria para leer y escribir del dispositivo.
Independencia de los dispositivos Es el principio que especifica que el API del sistema operativo debe permitir manejar todos los dispositivos con el mismo conjunto de instrucciones
Anomalía Belady Es el fenómeno en el que, con la misma secuencia de accesos de pagina no hayan fallos de pagina, si se aumenta el numero de marco de pagina
Paginación por Demanda Es la estrategia de búsqueda que consiste en subir a memoria, las paginas de proceso conforme los accesos del mismo producen las fallas
Paginación Anticipada Es la estrategia de búsqueda de pagina que consiste en subir a memoria, cuando el proceso se despierta, su conjunto de paginas que el proceso usara en el futuro.
Conjunto de trabajo Es el conjunto de paginas que un proceso acceso en determinado periodo de tiempo
FIFO / PEPS Es la política de reemplazo de paginas que adolece del problema de la anomalia Belady
Menos recientemente Usado Es la política de reemplazo de paginas que resuelve el problema de la anomalia Belady
domingo, 1 de marzo de 2009
Lenguajes Formales de Programacion (Intro)
Lenguaje Natural
Definición:
Establece comunicación entre los seres humanos, este tipo de lenguajes se dan por enriquecimiento progresivo y continuo (evolución del lenguaje), ya que tiene ambigüedad acepta polisemantica. Una característica es que no puede darse una formalización completa.
En general un lenguaje natural es el que ha evolucionado con el paso del tiempo para fines de la comunicación humana, y continúan su evolución sin tomar en cuenta reglas gramaticales formales, cualquier regla se desarrolla después de que sucede el hecho, en un intento de explicar y no determinar la estructura del lenguaje.
Ejemplo:
Español
Ingles
Alemán
Etc.
Lenguaje Formal
Definición:
Se utiliza para expresar situaciones dentro del área científica. Algunas características que podemos mencionar es que esta perfectamente definido y no puede tener ambigüedades, se desarrolla con teorías preestablecidas y puede llegar a una completa formalización lo que nos permite poderlo construir computacionalmente.
Este lenguaje esta definido por reglas preestablecidas, es decir que primero se determina al lenguaje y no se intenta explicarlo. Gracias al uso de reglas es posible construir traductores computarizados eficientes para los lenguajes de programación a la vez que la falta de estas reglas dificulta la construcción del traductor como lo es el caso del lenguaje natural.
Ejemplo:
Lenguajes de Programación
Lenguajes Matemáticos (Algebra)
Lenguaje de Programación
Definición:
Un lenguaje de programación es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un lenguaje informático.
Un programa escrito en un lenguaje de programación necesita pasar por un proceso de compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que pueda ser ejecutado por el ordenador. También existen lenguajes de scripting que son ejecutados a través de un intérprete y no necesitan compilación.
Exitos!!!
viernes, 27 de febrero de 2009
SCM Software Configuration Managment
Las practicas SCM definen como una empresa construye y libera sw, asi como los cambios dentro del ciclo de desarrollo.
Algunos elementos son:
Identificación Configuración: identifica componentes, reflejando la estructura
Control de Configuración: controla cambios, liberaciones del producto mediante codeline
Reportes estado Actual: registro y reportes tanto cambios como solicitudes d cambios
Auditoria y Revisión: validación de producto y consistencia componentes.
Problemas comunes que resulve SCM:
• Pobre integridad release
• Falta comunicación
• Dificultad para determinar el estado del proy
• Tareas redundantes están propensas a error si no están automatizadas
Actividades Típicas en SCM
• Almacena asegura artefactos de sw
• Registrar historia de cambios Que? Quien? Cuando? Porque?
• Provee flujo de Trabajo (Seguimientos)
• Administración de configuraciones (Build, release e Integración)
• Aislar a los desarrolladores
• Control de procesos
Exitos!!!
lunes, 23 de febrero de 2009
eCommerce
Antes de dar el listado de dichos productos, quiero dar la definicion de lo que es eComerce, que significa Comercio Electronico, la cual es: Cualquier negocio realizado por medios electronicos (ej. internet) donde se involucra una transaccion economica.
Como mencionamos puede ser cualquier tipo de negocio es por ello que los podemos clasificar como servicios o productos, en este post daremos los productos que son mas vendidos por eCommerce.
Tiendas en Linea mas populares:
Antes que todo me gustaria mencionar el top 5 de las tiendas en linea, esto es segun un estudio de marketing realizados a finales del año pasado, los resultados son los siguientes:
-eBay
-Amazon
-Target
-Wall Mart
-Best Buy
Ahora si vemos las tendencias de eCommerce geograficamente podriamos mencionar que en los primeros lugares esta Europa y Norte America, luego le sigue Asia y por ultimo Latinoamerica, esto nos puede dar una vision de el tipo o el perfil del cliente o usuario de eCommerce.
¿Cuales son los productos mas vendidos?
Continuando con el tema de productos, tambien dare el top 5 de lo que podriamso llamar lo mas vendido por en eCommerce, y las tendencias o caracteristicas de lo que se vende, gracias a un estudio de Nielsen Company y su estudio realizado en diciembre del 2007:
- Libros
- Ropa y Accesorios
- DVD y Juegos
- Tiket de vuelo
- Equipo electronico
A continuacion la grafica de las estadisticas, dando cada item y su porcentaje de venta:
En Conclusion:
El comercio electronico esta teniendo un gran auge y aceptacion ya que este nuevo medio de comercio permite romper fronteras, porque no se necesitan varios locales para distribuir un producto. Por otra parte gracias al comercio electrónico hay mas disponibilidad en cuanto a horario, ya que se pueden ofrecer dichos productos durante las 24 horas del día y los 365 días del año.
domingo, 22 de febrero de 2009
How to install SVN (Subversion) in Ubuntu 8.10
Subversion packages
Como administradores o root debemos de ingresar los siguientes comandos, para instalar los paquetes necesarios para la configucacion de SubVersion:
# apt-get update
# apt-get install subversion
# apt-get install libapache2-svn
El paquete libapache2-svn instalará el módulo de Apache WebDAV subversión.
Crear Repositorios
A continuacion mostraremos como trabajar los repositorios, primero ejecutamos los siguientes comandos:
# mkdir /var/svn-repos/
# svnadmin create --fs-type fsfs /var/svn-repos/practica1
El repositorio que creamos anteriormente necesita los permisos adecuados para apache ademas de un usuario para manipularlo. Voy a hacer un grupo y añadir un usuario al mismo para hacer nuestras pruebas:
# groupadd subversion
# addgroup ale subversion
# chown -R www-data:subversion /var/svn-repos/*
# chmod -R 770 /var/svn-repos/*
Aunque no es estrictamente necesario, vamos a crear los directorio trunk, tags y branches que servirán para almacenar el código de nuestro proyecto actual, los tag y las posibles ramas que pueda tener nuestro proyecto:
$ sudo svn mkdir --message="Inicializando los directorios..." \
file:///var/svn-repos/trunk \
file:///var/svn-repos/tags \
file:///var/svn-repos/branches
Configurando Subversion WebDAV
Normalmente, apache estará activado por defecto, para asegurarse de que este es el caso tecleamos los siguientes comandos:
# a2enmod dav
# a2enmod dav_svn
Ahora actualizamos los usuarios para el archivo de accesos de nuestro repositorio
# htpasswd -c /etc/apache2/dav_svn.passwd ale
Ahora hay q modificar el archivo /etc/apache2/mods-available/dav_svn.conf con la sigiente informacion:
"< Location /practica1 >
DAV svn
SVNPath /var/svn-repos/practica1
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
< /Location >"
Lo Ultimo
Por ultimo reseteamos apache para verlos resultados:
# /etc/init.d/apache2 restart
Y Listo!!!! tenemos nuestro primer repositorio configurado en SVN, para poder acceder a el unicamente en nuestro navegador deberiamos teclear:
http://localhost/practica1/
y veremos nuestro repo!!!!!!
Exitos!!! :P
lunes, 16 de febrero de 2009
Clasificación de Lenguajes de Programación
Lenguaje máquina
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.
Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.En general se utiliza este tipo de lenguaje para programar controladores (drivers).
La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas: 1. Mayor adaptación al equipo. 2. Posibilidad de obtener la máxima velocidad con mínimo uso de memoria. Pero también tiene importantes inconvenientes: 1. Imposibilidad de escribir código independiente de la máquina. 2. Mayor dificultad en la programación y en la comprensión de los programas. Sus características son: 1. Se trabaja a nivel de Microinstrucciones, es decir, su programación es al más fino detalle. 2. Está orientado a la máquina.
Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan al lenguaje natural. Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:
- Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador.
- Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla.
- Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.
domingo, 15 de febrero de 2009
Los Protocolos en el Modelo TCP/IP
La imagen anterior nos ilustra la relacion entre cada capa y sus protocolos, asi que a continuacion dare una breve descripccion de cada uno de estos protocolos:
• HTTP (Aplicacion)
Este es un protocolo de transferencia de hipertexto por sus siglas en ingles HyperText Transfer Protocol.
• FTP (Aplicacion)
Es un protocolo de transferencia de archivos entre sistemas conectados a una red, su arquitectura es Cliente/Servidor.
• TCP (Transporte)
Este es un protocolo orientado a la conexión, que proporciona un flujo de bytes (datos), que asegura que los datos llegan completos, sin daños y en orden.
• UDP (Transporte)
Es un protocolo de datagramas sin conexión. Es un protocolo no fiable porque a diferencia del anterior no verifica que los paquetes lleguen a su destino, y no da garantías de que lleguen en orden.
• IP (Internet)
Este realiza tareas básicas para conseguir transportar datos desde un origen a un destino. IP puede pasar los datos a una serie de protocolos superiores.
• TOKEN RING (Enlace)
Este protocolo se apoya en el estándar IEEE 802.5. Quedo en desuso por la popularización de Ethernet.
• PPP (Enlace)
Este protocolo es más complejo y originalmente fue diseñado como un protocolo separado que funcionaba sobre otro nivel de enlace
• MEDIOS FISICOS (Fisico)
Aunque no son especificamente protocolos, la capa Fisica a la que pertenece debe tomar en cuante todo lo relativo a los detalles como los conectores, código de canales y modulación, potencias de señal, etc.
En Conclusion:
El modelo TCP/IP representa todas las reglas de comunicación para Internet y se basa en las direcciones IP; como sabemos este modelo se divide en capas, el término capa en este contexto se utiliza para mostrar que los datos que viajan por la red atraviesan distintos niveles de protocolos.
jueves, 12 de febrero de 2009
Token vs Lexema
Token: también llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación.
Lexema: cadena de caracteres que concuerda con un patron que describe un componente lexico.
Entonces cual es la diferencia ¿¿??
El componente lexico, en nuestro caso token es el patron que deben de seguir los caracteres, luego una vez que la secuencia de caracteres es aceptada a ella la llamamos lexema
Cabe mencionar que un token puede tener tener uno o infinitos lexemas, esto es si el token es palabra reservada o no, si el token es palabra reservada, entonces solo tendra un lexema (ej if, do), pero si no es palabra reservada, tendra muchos lexemas (ej identificador, numero)que puedan cumplir con la secuencia.
Espero ejemplificarles mejor esto con esta tabla:
Exitos!!!
miércoles, 11 de febrero de 2009
Bienvenidos...
Así que bienvenidos a mi nuevo espacio.... donde el konocimiento es de todos!!!