Bienvenidos a Nuestro Mundo - A Proyectos Beta!

En nuestra vida, desde que nacemos todo lo probamos, ensayamos y testeamos; así también erramos, caemos pero por sobre todo aprendemos. Es decir, todo lo que hacemos forma parte de una nueva experiencia, de un PROYECTO. El que siempre exista la posibilidad de mejorarlo es lo que lo convierte en BETA. En este blog queremos compartir contenidos de tipo informático con artículos de programación, software libre y propietario, redes, base de datos, noticias, experiencias, etc... y también de humor. Es un sitio de todos y para todos. Participá! Sos importante ...

Resumen del Primer Capitulo del Libro Construccion de compiladores - Louden

Ahora estoy de exámenes finales, y necesito leer todo el Libro de Construcción de Compiladores de Kenneth Louden.
Después de leer varias veces el primer capitulo y las cosas que no me quedaron tan claras, tuve la necesidad de buscar en internet, y en varios manuales para tenerlos mucho mas claros.
Realice un resumen del capitulo 1, incluyendo algunas cosas de otros lados donde el capitulo menciona, pero para mi no estaba muy claro..
Espero que les sirva cuando estén estudiando Compiladores en su Facultad..O de forma particular..Un saludo..
Donde pueden descargar es: Resumen Primer Capitulo
Leer más...

Flex - Herramienta muy interesante

Flex es una herramienta para generar escáneres: programas que reconocen patrones léxicos en un texto. Flex lee los ficheros de entrada dados, o la entrada estándar. La descripción se encuentra en forma de parejas de expresiones regulares y código C, denominadas reglas. Flex genera como salida un fichero fuente en C, 'lex.yy.c', que define una rutina 'yylex()'. Este fichero se
compila y se enlaza con la librería '-lfl' para producir un ejecutable. Cuando se arranca el fichero ejecutable, este analiza su entrada en busca de casos de las expresiones regulares. Siempre que encuentra uno, ejecuta el código C correspondiente.
Esta herramienta es multiplataforma y es de software libre.
Por ahora se muy poco porque acabo de probarlo.Pero dejo un ejemplo para que lo puedan probar.
El ejemplo que les mostrare es para un lenguaje artificial.

El archivo de cabecera es: tokens_asple.c

#ifndef _TOKENS_EJ2_H
#define _TOKENS_EJ2_H

/* Palabras Reservadas del Lenguaje ASPLE */
#define TOKEN_BEGIN 1
#define TOKEN_BOOL 2
#define TOKEN_DO 3
#define TOKEN_ELSE 4
#define TOKEN_END 5
#define TOKEN_FI 6
#define TOKEN_FALSE 7
#define TOKEN_FUNCTION 8
#define TOKEN_IF 9
#define TOKEN_INPUT 10
#define TOKEN_INT 11
#define TOKEN_OUTPUT 12
#define TOKEN_REF 13
#define TOKEN_RETURN 14
#define TOKEN_THEN 15
#define TOKEN_TRUE 16
#define TOKEN_WHILE 17

/* Simbolos Simples */
#define TOKEN_SUMA 18
#define TOKEN_RESTA 19
#define TOKEN_MULTIPLICACION 20
#define TOKEN_ABRIR_PARENTESIS 21
#define TOKEN_CERRAR_PARENTESIS 22
#define TOKEN_PUNTO_Y_COMA 23
#define TOKEN_COMA 24
#define TOKEN_IGUAL 25
#define TOKEN_MAYOR 26

/* Simbolos Compuestos */
#define TOKEN_MENOR_IGUAL 27
#define TOKEN_ASIGNAR 28

/* Indetificadores y Constantes*/
#define TOKEN_ID 29
#define TOKEN_CONSTANTES_NUMERICAS 30

#endif

El archivo se denomina: asple.l

%{
#include
#include "tokens_asple.h"
%}

%option noyywrap

%%
begin { return TOKEN_BEGIN; }
bool { return TOKEN_BOOL; }
do { return TOKEN_DO; }
else { return TOKEN_ELSE; }
end { return TOKEN_END; }
fi { return TOKEN_FI; }
false { return TOKEN_FALSE; }
function { return TOKEN_FUNCTION; }
if { return TOKEN_IF; }
input { return TOKEN_INPUT; }
int { return TOKEN_INT; }
output { return TOKEN_OUTPUT; }
ref { return TOKEN_REF; }
return { return TOKEN_RETURN; }
then { return TOKEN_THEN; }
true { return TOKEN_TRUE; }
while { return TOKEN_WHILE; }
"+" { return TOKEN_SUMA; }
"-" { return TOKEN_RESTA; }
"*" { return TOKEN_MULTIPLICACION; }
"(" { return TOKEN_ABRIR_PARENTESIS; }
")" { return TOKEN_CERRAR_PARENTESIS; }
";" { return TOKEN_PUNTO_Y_COMA; }
"," { return TOKEN_COMA; }
"=" { return TOKEN_IGUAL; }
">" { return TOKEN_MAYOR; }
"<=" { return TOKEN_MENOR_IGUAL; }
":=" { return TOKEN_ASIGNAR; }
[a-zA-A][0-9a-zA-Z]+ { return TOKEN_ID; }
[0-9]+ { return TOKEN_CONSTANTES_NUMERICAS;}


%%

int main()
{
// Variables
int token;
int numeroToken;

while(1)
{
token = yylex();
numeroToken = token;
if(token == TOKEN_ID)
printf("ID y su Numero de Token es: %d.\n", TOKEN_ID);
if(token == TOKEN_CONSTANTES_NUMERICAS)
printf("NUM y su Numero de Token es: %d.\n", TOKEN_CONSTANTES_NUMERICAS);
if(token >= TOKEN_BEGIN && token <= TOKEN_ASIGNAR)
printf("KEYWORD y su Numero de Token es: %d.\n", numeroToken);
if(token == 0)
break;
}
return 0;
}

Espero que se den cuenta como yo, que es una herramienta bastante sencilla, cómoda y sobre todo ahorra bastante tiempo..
Leer más...

Manipular Archivos PDF

Existen situaciones en que tenemos un archivo PDF de muchas paginas, y solo nos interesa tener de una pagina especifica. Otras veces, tenes la situación, que tenemos varios PDF separados y queremos juntarlos. En Linux (Ubuntu) existe una aplicación para este fin. Es en modo consola, pero es demasiado sencillo.
La aplicación se llama: pdftk y podes descargarlo en la terminal de la siguiente forma: sudo aptitude install pdftk
Ahí te pedirá para descargar el programa y sus respectivas librerías. Una ves acabado la instalación, es el momento de poder utilizarlo.
Los pasos que estaré detallando siempre se ejecutan en modo consola o terminal:
Para separar archivos de un pdf especifico:
$ pdftk Ubuntu_magazine.pdf cat 2-6 output Ubuntu_revista.pdf
Extrae las páginas 2 a 6 del fichero Ubuntu_magazine.pdf y crea con ellas un nuevo fichero llamado Ubuntu_revista.pdf.

Unir varios ficheros:
$ pdftk Ubuntu1.pdf Ubuntu2.pdf Ubuntu3.pdf output Ubuntu_Total.pdf
Une los ficheros Ubuntu1.pdf, Ubuntu2.pdf y Ubuntu3.pdf en un nuevo fichero llamado Ubuntu_Total.pdf

Un fichero por cada página:
$ pdf origen.pdf burst
Crea un fichero por cada una de las páginas del fichero origen.pdf. A los ficheros resultantes le asigna nombres del tipo pg_xxx.pdf


Algunas Recomendaciones:
Eliminar una página de un fichero:
Si de un fichero de 20 páginas queremos eliminar la página 13, creamos un fichero con las 12 primeras y otro con las páginas 14-20. Finalmente unimos ambos.

Insertar páginas en un fichero:
pdftk dispone de órdenes complicadas para insertar páginas de un fichero en otro. Sin embargo sería más fácil:
- Crear un fichero (B) con las páginas a insertar.
- Dividir el fichero original por donde queremos insertar en dos trozos (A y C).
- Unir los tres trozos A, B y C.
Leer más...

Montar Particiones en modo gráfico al iniciar Ubuntu

Muchas veces, tenemos varias particiones o varios discos duros en nuestro Sistema Operativo Linux (Ubuntu), y al iniciar nuestro Sistema queremos que se monte esa partición que tanto usamos. Se puede hacer en el terminal editando el archivo fstab que se ubica en /etc/fstab. Pero muchas veces existen personas (me incluyo) que queremos un forma más sencilla en hacerlo sin correr riegos. Entonces buscando en google, encontré una aplicación de modo gráfico que te deja cambiar las distintas opciones del fstab. Esta aplicación se llama Disk Manager.
Podes descargar esta aplicación en Sitio Oficial. Están compilados para Gusty (Ubuntu 7.10), pero si usan Hadry Heron 8.04 les va a andar también. Lo digo porque lo he confirmado. Yo tengo instalado en mi PC de escritorio Ubuntu Hadry Heron 8.04 y me anda de maravillas. También si quieres puedes compilar que esta el código fuente.
Una vez instalado, la aplicación aparece en "Sistema" > "Administración" > "Administrador de Disco". Si ahí haces doble clic, no me entra al programa. Porque pasa esto, ni la pálida idea, pero si entras a la terminal y ejecutas con permisos de root. Ejemplo: sudo disk-manager :-> te pedirá la contraseña del root y después te entrara al programa.

En esta parte, indica si desea remover los dispositivos que están en el fstab y el Sistema no los reconoce en esos momentos.
En esta seccion, se indica que particiones están en uso (o particiones montadas), la cantidad de las particiones, espacio disponible, etc.

En esta parte, indica las particiones que no están montadas en este momento y se puede configurar para que al iniciar el sistema aparezca.

Son todas las particiones que están conectadas al Sistema y muestra sus respectivos datos.

Leer más...

Recibir Artículos Por Correo

Categorías

acertijos (1) adsense (1) adwords (1) AJAX (1) algoritmos (8) android (32) apple (5) autocad (1) base de datos (16) bash (1) becas (1) benchmark (1) blogger (2) blogs (27) bsd (1) buscadores (22) c# (1) CAD (1) camaras digitales (1) casting (1) CentOS (9) certificados (1) ciencia (1) CLEI (5) cloud computing (3) codigo fuente (9) Compiladores (4) Concursos (14) conferencias (24) congresos (6) consolas (7) criptografia (1) css (6) curso online (10) cursos (14) debian (50) Diseño (11) edicion video (7) emuladores (3) encuestas (2) entrevistas (9) ERTIC (1) etico (1) eventos (87) extjs (2) facebook (18) flash (2) flicker (1) FLISOL (13) geek (6) geoserver (2) GIMP (8) gis (29) Google (48) hacking (1) Hardware (30) haskell (3) HTML 5 (20) humor (261) imagenes (238) Ingenieria (14) internet (1) iphone (3) Java (42) Javascript (14) JQuery (3) juegos (36) libros (5) Linux (248) MAC (1) manga (2) Manuales (10) mapquest (1) MapServer (5) matematica (2) Microsoft (26) Microsoft Windows (27) Moviles (16) musicas (7) mysql (3) navegadores (41) newsletters (1) nokia (2) Noticias cientificas (7) Noticias Informaticas (39) Noticias varias (14) nube (1) openlayers (13) openstreetmap (10) opiniones (1) oracle (9) Paraguay (102) photoshop (1) Php (12) podcast (1) postgres (7) Programacion (135) prolog (1) proyectos (10) python (3) radio (6) Recursos (112) redes (10) Redes Sociales (62) resumenes (1) Revistas (57) ruby (2) seguridad (23) seminarios (6) sencha (2) SEO (3) Series (1) Silverlight (1) Sistema Operativo (27) smartphone (1) Software Libre (198) sun (2) tablet (19) tecnologia (24) tecnoPyensis (6) Testing (5) Trabajo (6) trucos (22) Twitter (29) Ubuntu (152) varios (113) videos (173) virtualizacion (14) visual basic net (2) web (86) wikipedia (1) Windows 7 (23) windows 8 (1) Windows XP (2) wordpress (5) xml (1)

Entradas Aleatorias

Seguidores

Últimos Comentarios