Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
domingo, 7 de diciembre de 2014
Hay una forma sencilla de manejar cadenas y comentarios en Irony sin necesidad de utilizar expresiones regulares, a continuacion se muestra un ejemplo de como se podria realizar.
Comentarios
En este caso los comentarios son del tipo:
>> comentario de una linea
<- comentario que
incluye varias lineas ->
se utiliza CommentTerminal para reconocer comentarios en Irony y luego solamente se debe de indicar que se ignoren los comentarios y no se tomen como parte de la gramatica.
y con esto ya se pueden incluir comentarios en nuestra gramatica, solamente es de sustituir los caracteres con los que se quiera reconocer los comentarios por ejemplo en vez de ">>" utilizar "//".
Cadenas
Nuevamente utilizando las propiedades de la clase de Irony se utiliza "StringLiteral" para el manejo de cadenas en una gramatica.
y ya podemos llamar al terminal cadena en nuestra gramatica.
viernes, 5 de diciembre de 2014
El siguiente ejemplo contiene lo que son acciones asociadas a una gramatica.
Es una calculadora sencilla que opera enteros y decimales.
La gramatica utilizada es la gramatica clasica que se usa desde lenguajes y se sigue usando en compiladores 2 para operar numeros.
S->E
E->E+T | E-T | T
T->T*F | T/F | F
F->num | (E).
Lo que cabe resaltar del ejemplo y que tiene que ver con Irony es que se utilizan las Clases "Accion" y "Analizador" de las cuales el codigo no se cambia ya que solamente se llaman sus metodos posteriormente para el parseo.
La clase AccionesGramatica contiene las reglas asociadas a la gramatica (Clase Gramatica) en donde efectivamente como se menciono en la parte 1 se recorre el arbol sintactico generado por irony con un Switch y se asocian las acciones a las reglas.
Por ultimo en el Formulario se compila el texto:
La base para este ejemplo se tomo de un ejemplo (valga la redundancia) enviado por el auxiliar del curso en su momento y que fue de mucha ayuda para entender como trabaja Irony por lo que parte del credito va para el auxiliar y el ejemplo original.
En el siguiente enlace esta el ejemplo completo y comentado para descargar.
Ejemplo
Es una calculadora sencilla que opera enteros y decimales.
La gramatica utilizada es la gramatica clasica que se usa desde lenguajes y se sigue usando en compiladores 2 para operar numeros.
S->E
E->E+T | E-T | T
T->T*F | T/F | F
F->num | (E).
Lo que cabe resaltar del ejemplo y que tiene que ver con Irony es que se utilizan las Clases "Accion" y "Analizador" de las cuales el codigo no se cambia ya que solamente se llaman sus metodos posteriormente para el parseo.
La clase AccionesGramatica contiene las reglas asociadas a la gramatica (Clase Gramatica) en donde efectivamente como se menciono en la parte 1 se recorre el arbol sintactico generado por irony con un Switch y se asocian las acciones a las reglas.
Por ultimo en el Formulario se compila el texto:
La base para este ejemplo se tomo de un ejemplo (valga la redundancia) enviado por el auxiliar del curso en su momento y que fue de mucha ayuda para entender como trabaja Irony por lo que parte del credito va para el auxiliar y el ejemplo original.
En el siguiente enlace esta el ejemplo completo y comentado para descargar.
Ejemplo
¿Que es?
Es un generador de parsers orientada a las herramientas de .net.
Se integra de manera sencilla con C#.
La ventaja que tiene con respecto a herramientas como CUP o Bison es que en Irony se programa directamente en codigo de C#, es decir que no necesitamos escribir la gramatica en texto plano como las herramientas anteriores para luego generar el parser o crear un skeleton (como en gold parser) para poder trabajar sobre nuestra gramatica sino que la gramatica y sus acciones son archivos con codigo de C#.
Una desventaja es que no se encuentra mucha documentacion, sino que hay que buscar bastante cuando se tiene algun problema con la herramienta o en la parte de colocar las acciones a la gramatica, no hay ejemplos en donde se pueda ver como hacerlo por lo que esta es la parte compleja de utilizar la herramienta, la falta de informacion.
¿Como funciona?
Practicamente para trabajar con Irony lo que se hace para aplicar acciones a la gramtica es recorrer el arbol sintactico que nos genera. Suena muy vaga la descripcion pero es lo que se debe hacer, ya que practimente al parsear un texto con nuestra gramatica en Irony lo que hace es que genera un arbol sintactico al cual le vamos a asociar las acciones que necesitemos, lo del recorrido no es mas que ir agregando acciones a las producciones y llamando al metodo de forma recursiva (en la parte 2 se mostrara un ejemplo).
En conclusion Irony es una herramienta muy buena que permite realizar parsers de forma rapida, quizas al principio se siente que es dificil pero esto es debido a que es un pardigma distinto al que se acostumbra a trabajar en la universidad (USAC) en donde solo se trabaja con CUP o con Bison y en ocaciones gold parser.
A continuacion el link con la documentacion sobre irony.
Irony WikiBook
Ejemplo
Ahora a lo que interesa que es el ejemplo, este pequeño ejemplo es una aplicacion de consola que lo que hace es imprimir el arbol generado por Irony en orden, preorden y postorden.
Lo que realiza la aplicacion no es lo mas importante en este casi sino la forma en que trabaja Irony y como se construye una gramatica.
El ejemplo consta de 3 clases, la gramtica, la clase para compilar la gramatica y la clase principal para ejectutar el programa.
Clase Gramatica
En esta clase se declara la gramtica que vamos a utilizar, se puede observar que se declaran los terminales, los no terminales y luego las reglas de produccion. Esto es Similar a CUP lo unico que cambia es la sintaxis y la forma de declaracion ya que en una misma clase declaramos los no terminales y los no terminales sin necesidad de utilizar alguna otra herramienta para el analisis lexico.
Como se puede ver al final de las producciones se debe indicar this.root = <no terminal inicial> , es decir que se debe de indicar el No terminal que da inicio a nuestra gramatica.
Clase Compilar
Solamente se muestran los dos metodos que tienen que ver especificamente con el funcionamiento de Irony.
El primer metodo solamente verifica que el texto a parsear sea valido y el 2do obtiene la raiz del arbol generado una vez parseado el texto.
Por ultimo en la clase principal se llaman los dos metodos de la clase anterior, primero se verfica que la cadena sea valida y si esto se cumple se llama al metodo getRoot.
A continuacion dejo el link con la aplicacion con el codigo completo.
Aplicacion
Requisitos para ejecutar:
Al descargar Irony veran que es un proyecto el cual se debe compilar y esto genera un .DLL el cual debe agregarse como referencia en el proyecto de C#.
En la aplicacion ya va generado el dll el cual se compilo con la version de Vstudio 2013 Express, por lo que en alguna version anterior de Vstudio puede dar error.
VStudio 2013 (El dll de irony utilizado se compilo en esta version.)
.Net Framework 4.5 o posterior.
En la parte 2 se publicara un ejemplo en donde se mostrara como asociar acciones sencillas a una gramtica y en la parte 3 un ejemplo sobre como añadir acciones a una gramatica compleja utilizando una estructura de arbol recursivo.
Es un generador de parsers orientada a las herramientas de .net.
Se integra de manera sencilla con C#.
La ventaja que tiene con respecto a herramientas como CUP o Bison es que en Irony se programa directamente en codigo de C#, es decir que no necesitamos escribir la gramatica en texto plano como las herramientas anteriores para luego generar el parser o crear un skeleton (como en gold parser) para poder trabajar sobre nuestra gramatica sino que la gramatica y sus acciones son archivos con codigo de C#.
Una desventaja es que no se encuentra mucha documentacion, sino que hay que buscar bastante cuando se tiene algun problema con la herramienta o en la parte de colocar las acciones a la gramatica, no hay ejemplos en donde se pueda ver como hacerlo por lo que esta es la parte compleja de utilizar la herramienta, la falta de informacion.
¿Como funciona?
Practicamente para trabajar con Irony lo que se hace para aplicar acciones a la gramtica es recorrer el arbol sintactico que nos genera. Suena muy vaga la descripcion pero es lo que se debe hacer, ya que practimente al parsear un texto con nuestra gramatica en Irony lo que hace es que genera un arbol sintactico al cual le vamos a asociar las acciones que necesitemos, lo del recorrido no es mas que ir agregando acciones a las producciones y llamando al metodo de forma recursiva (en la parte 2 se mostrara un ejemplo).
En conclusion Irony es una herramienta muy buena que permite realizar parsers de forma rapida, quizas al principio se siente que es dificil pero esto es debido a que es un pardigma distinto al que se acostumbra a trabajar en la universidad (USAC) en donde solo se trabaja con CUP o con Bison y en ocaciones gold parser.
A continuacion el link con la documentacion sobre irony.
Irony WikiBook
Ejemplo
Ahora a lo que interesa que es el ejemplo, este pequeño ejemplo es una aplicacion de consola que lo que hace es imprimir el arbol generado por Irony en orden, preorden y postorden.
Lo que realiza la aplicacion no es lo mas importante en este casi sino la forma en que trabaja Irony y como se construye una gramatica.
El ejemplo consta de 3 clases, la gramtica, la clase para compilar la gramatica y la clase principal para ejectutar el programa.
Clase Gramatica
En esta clase se declara la gramtica que vamos a utilizar, se puede observar que se declaran los terminales, los no terminales y luego las reglas de produccion. Esto es Similar a CUP lo unico que cambia es la sintaxis y la forma de declaracion ya que en una misma clase declaramos los no terminales y los no terminales sin necesidad de utilizar alguna otra herramienta para el analisis lexico.
Como se puede ver al final de las producciones se debe indicar this.root = <no terminal inicial> , es decir que se debe de indicar el No terminal que da inicio a nuestra gramatica.
Clase Compilar
Solamente se muestran los dos metodos que tienen que ver especificamente con el funcionamiento de Irony.
El primer metodo solamente verifica que el texto a parsear sea valido y el 2do obtiene la raiz del arbol generado una vez parseado el texto.
Por ultimo en la clase principal se llaman los dos metodos de la clase anterior, primero se verfica que la cadena sea valida y si esto se cumple se llama al metodo getRoot.
A continuacion dejo el link con la aplicacion con el codigo completo.
Aplicacion
Requisitos para ejecutar:
Al descargar Irony veran que es un proyecto el cual se debe compilar y esto genera un .DLL el cual debe agregarse como referencia en el proyecto de C#.
En la aplicacion ya va generado el dll el cual se compilo con la version de Vstudio 2013 Express, por lo que en alguna version anterior de Vstudio puede dar error.
VStudio 2013 (El dll de irony utilizado se compilo en esta version.)
.Net Framework 4.5 o posterior.
En la parte 2 se publicara un ejemplo en donde se mostrara como asociar acciones sencillas a una gramtica y en la parte 3 un ejemplo sobre como añadir acciones a una gramatica compleja utilizando una estructura de arbol recursivo.
martes, 23 de julio de 2013
Introducción a los conceptos principales de lo que es la programación orientada a objetos y una breve descripción de los cuatro principales elementos que la componen.
Descarga:
http://www.mediafire.com/?xbyffr69ayet12d
Descarga:
http://www.mediafire.com/?xbyffr69ayet12d
lunes, 15 de julio de 2013
Me voy a dedicar crear este tipo de entradas que me van a servir como recordatorio y para tener presentes los conceptos principales de los cursos que he visto en la carrera así como ejemplos prácticos que por tanto contenido no me acuerdo muy bien o el peor de los casos (el mas común) se me olvida, y pues puede servir como guía para alguien que quiera sintetizar el contenido de una forma mas simple (eso espero xD).
El primer documento es sobre conceptos básicos de programación, la principal teoría así de forma general y que ayuda
a comprender mejor el tema.
Descarga en:
http://www.mediafire.com/?qxupepuo52cllrg
Descarga en:
http://www.mediafire.com/?qxupepuo52cllrg
lunes, 3 de junio de 2013
La siguiente mini aplicación muestra como conectarse a una base de datos ingresando de forma manual los parámetros de conexión (bd, puerto, etc) y luego visualizar los datos de cualquiera de las tablas de la BD seleccionada, lo diferente que tiene a la mayoría de ejemplos mostrados en Internet es que se cargan las columnas de forma dinámica es decir que se cargan todas las columnas de la tabla y no solo un numero estático de columnas definidas en el programa, lo cual puede servir en muchos casos, con esto se tiene la conexión y la lectura de datos, si se quiere hacer cualquier otro uso como insertar , eliminar etc, se puede seguir el mismo patrón partiendo de este ejemplo.
En el .zip va incluido el driver (ultima version) para conectar java con postgres, se realizo en netbeans 7.3 con jdk 7u21.
La aplicación se ve así:
y en el cuadro de dialogo ingresan los valores correspondientes y en el combobox de la ventana principal pueden ver las tablas disponibles y ver los datos de cada una.
Pueden descargarla en: Java - Postgres
Nota: El código no es el mas optimo que digamos porque no tenia tiempo para mejorarlo, la prioridad era que funcionara XD y lo pueden notar en los métodos de la clase conexión pero puede ser mejorado y/o modificada de acuerdo a las necesidades.
Créditos a: http://gnucesar.wordpress.com/2008/07/22/conexion-a-postgres-desde-java/ ya que a partir de esta clase me base para hacer la conexión.
En el .zip va incluido el driver (ultima version) para conectar java con postgres, se realizo en netbeans 7.3 con jdk 7u21.
La aplicación se ve así:
y en el cuadro de dialogo ingresan los valores correspondientes y en el combobox de la ventana principal pueden ver las tablas disponibles y ver los datos de cada una.
Pueden descargarla en: Java - Postgres
Nota: El código no es el mas optimo que digamos porque no tenia tiempo para mejorarlo, la prioridad era que funcionara XD y lo pueden notar en los métodos de la clase conexión pero puede ser mejorado y/o modificada de acuerdo a las necesidades.
Créditos a: http://gnucesar.wordpress.com/2008/07/22/conexion-a-postgres-desde-java/ ya que a partir de esta clase me base para hacer la conexión.
viernes, 1 de febrero de 2013
No
hay mucha informacion sobre como hacer este tipo de conexion de forma rapida y
que funcione, si bien para java es muy sencillo y funciona a la primera para
poder realizar la conexion con el emulador y la aplicacion de android lleva
algunas variantes.
1. Lo primero es obtener el ojdbc14.jar ya sea el que se encuentra en la carpeta donde se encuentra instalado oracle en la ubicacion $ORACLE_HOME/jdbc/lib/ojdbc14.jar donde
oracle_home se encuentra generalmente
en /usr/lib/oracle..........
Dependiendo de la version asi sera el ojdbc que se necesite, este la version 5, la 6 dependiendo de la base de datos que tengan instalada por lo que lo primero es probar con estas librerias, sino funciona se pueden descargar desde la pagina de oracle:
Por
ejemplo yo use la version 10g xe de la base de datos y el ojdbc14 pero no me
funciono ninguno de los de la pagina ni los que tenia en la carpeta de oracle,
si llegan a tener el mismo problema pues la unica solucion que encontre es
utilizar el ojdbc que trae la version oracle mobile server, luego de
descargarla, la instale y busque el driver ojdbc14.jar y ese fue el que utilice
y me funciono.
2.
Una vez obtenido el bendito ojdbc.jar lo agregamos al proyecto como libreria
(agregarlo a la carpeta lib del proyecto android y luego agregar el jar al
proyecto).
Antes
de empezar con la parte de programar debemos agregar esta linea al manifest del
proyecto justo despues de el cierre del tag application
<uses-permission
android:name="android.permission.INTERNET" />
Porque
el no dar este permiso causa error al querer conectarse con una base de datos y
es de los errores mas comunes que se dan pero que son dificiles de identificar.
3. Ahora lo que necesitamos es una clase para conectarnos a la
base de datos, encontre una clase generica en Clase
Generica la cual me sirvio de base para la conexion y que es la que se
puede instancear desde cualquier activity de android, El codigo de la clase es:
4. Ya que tenemos la clase para conectarnos necesitamos un activity con el cual llamaremos a la clase generica y ya nos comunicaremos con la base de datos.
NOTA: Uno de los errores mas comunes es
colocar en el parametro ip, la ip de la maquina o 'localhost'
en este caso se usa la ip 10.0.2.2 que
funciona con el emulador.
Para mas informacion ir a: http://developer.android.com/tools/devices/emulator.html#networkaddresses
Con este activity al dar clic en el
boton nos mostrara que se ha conectado con exito a la base de datos.
y luego solo se llama desde el activity desde algun componente o al cargar el mismo activity, dependiendo de como lo necesiten o quieran pasandole los parametros asignados desde algun edittext u otro componente:
Espero sea de ayuda este pequeno post
sobre la conexion de android con oracle y sirva como base para realizar algun
proyecto a partir de tener la conexion lista.
En el siguiente link pueden descargar
el ejemplo realizado en android adt bundle version para linux.
APP
jueves, 26 de mayo de 2011
Mini editor de texto con funciones basicas que puede servir de guia para crear un editor mas complejo y completo.
Especificaciones:
Lee y guarda documentos en formato .txt por lo que al aplicar negrita, cursiva o subrayado y guardar,
estos cambios no los aplicara puesto que se trabaja con textos planos.
Estas funciones son solo para mostrar como funciona el programa.
El fuente con su ejecutable se pueden descargar en la siguiente direccion:
http://cid-0b58f57fbb34cc23.office.live.com/self.aspx/P%C3%BAblico/Editor.rar
(excelente el comentario de la descarga)
Especificaciones:
Lee y guarda documentos en formato .txt por lo que al aplicar negrita, cursiva o subrayado y guardar,
estos cambios no los aplicara puesto que se trabaja con textos planos.
Estas funciones son solo para mostrar como funciona el programa.
El fuente con su ejecutable se pueden descargar en la siguiente direccion:
http://cid-0b58f57fbb34cc23.office.live.com/self.aspx/P%C3%BAblico/Editor.rar
(excelente el comentario de la descarga)
lunes, 28 de febrero de 2011
1. Exportar las librerías necesarias, en la cual incluimos una para manipular archivos, la cual se explicara su uso en su devido momento.
//sql
using System.Data.Sql;
using System.Data.SqlClient;
//archivos
using System.IO;
2.Crear funciones para que ejecuten las consultas o comandos.
public String comando(String comando) {
}
public DataSet consulta(String comando) {
}
En el cual comando es un query en string para realizar la operacion o consulta en sql.
3.Hacer la conexcion a la base de datos
En cualquier momento deberemos migrar nuestra apliacion hacia cualquier otra pc (o servidor), para lo cual deberemos cambiar la linea en string que hace la conexion en cada archivo de nuestro proyecto que haga una conexcion a la base de datos. Para solucionar esto, agregamos el siguiente codigo a las funciones anteriores:
Cargar_mi_Servidor();
la funcion quedara:
public bool Cargar_mi_Servidor()
{
StreamReader strd = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "Cargar_mi_Servidor.txt");
mi_servidor = strd.ReadLine();
return true;
}
Esto cargara y leera la primera linea en el archivo que colocaremos en el root de nuestro servidor.
Un ejemplo a colocar en el archivo txt seria:
ejemplo 1:
ejemplo 2:
4.Una vez cargamos el string de la conexcion, procedemos a desarrollar las funciones, para realizar comandos, utilizamos el siguiente codigo:
try
{
SqlConnection thisConnection = new SqlConnection(mi_servidor);
thisConnection.Open();
SqlCommand cmd = new SqlCommand(comando, thisConnection);
cmd.ExecuteNonQuery();
thisConnection.Close();
return "Exito!";
}
catch (Exception s)
{
return s.Message.ToString();
}
5.Para realizar consultas
DataSet mi_dataset = new DataSet();
try
{
SqlConnection thisConnection = new SqlConnection(mi_servidor);
thisConnection.Open();
SqlDataAdapter adp = new SqlDataAdapter(comando, thisConnection);
adp.Fill(mi_dataset);
thisConnection.Close();
return mi_dataset;
}
catch (Exception s)
{
//de esto no estoy seguro, hay que crear una nueva tabla
mi_dataset.Tables[0].Rows[0].ItemArray[2] = s.Message.ToString();
return mi_dataset;
}
6.Hemos realizado las operaciones respectivas, es logico que si hicimos una consulta devemos recivir un dataset, el cual tendra el numero de rows que esperamos (numero de campos), asi como tambien si ejecutamos un comando (INSERT o UPDATE) esperaremos unicamente un string.
Como es de esperar, esta es una introduccion a la programacion en el ya mencionado entorno de programacion, al momento de publicar una aplicacion que desarrollamos para una empresa, hay que tomar las respectivas medidas de seguridad, como ocultar nuestro nombre de servidor y contraseña, no mostrarlas en un simple documento txt.
7. Finalmente adjunto un videotutorial donde muestro como utilizar el codigo previamente explicado, dividido en 2 partes.
Suscribirse a:
Entradas (Atom)
Search
Categories
android
(2)
Animacion 3D
(3)
aspx
(4)
bases de datos
(7)
Blender
(3)
C
(1)
C#
(4)
cisco
(1)
Compiladores
(11)
conceptos
(1)
cup
(2)
DB2
(2)
gns3
(5)
Irony
(3)
Java
(3)
kvm
(1)
linux
(5)
manual express latex
(1)
MongoDB
(1)
ocio
(3)
oracle
(3)
poo
(1)
Postgresql
(4)
programacion
(9)
Redes
(7)
resumen
(1)
soluciones
(1)
SQL
(16)
sqlserver
(1)
teoría
(5)
Ubuntu
(9)
Uwintu
(1)
VB
(1)
windows
(2)
Statistics
Con la tecnología de Blogger.




