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 ...

Buscar archivos en Windows muy rápidamente

Hola...
Buscar archivos en un Sistema Operativo, es siempre vital.
Por ejemplo: en Microsoft Windows, el programa que trae por defecto es muy ineficiente. Además tarda bastante en encontrar archivos en tu Sistema Operativo.
Otros programas que hacen esta tarea, son muy pesados.
En mi trabajo, hace un mes aproximadamente, un compañero holandés, me facilito un programa llamado BareGrep.
Solo pesa 245 Kb y es un ejecutable.
Además, lo que mas me sorprendió aparte de se tamaño, fue que busca palabras dentro del archivo. Sea ejecutable o no.
Me sirve demasiado para buscar funciones de algunos Lenguajes de Programación que alguna ves lo use. Y no sabia en que archivo estaba.
Entonces con esta herramienta, lo encontrás en un abrir y cerrar de ojos..
MUY RECOMENDADO.
El link donde podrán descargar Baregrep

Es un programa freeware. Lo único que te tendrás que aguantar es su propaganda..
Pero con esta clase de programa que facilita la vida del informático o cualquier persona que utiliza la PC. Pueden haber mas de mil avisos de propaganda..
Saludos...;)
Leer más...

Buscar musicas con Google

Hola.. Tanto tiempo..Hace rato que no entro al blog, y mucho menos escribo.. Es una prioridad del futuro, de dedicarme mas al blog. Mientras tanto escribiré en el poco tiempo que me queda.
Aclaro que este truco no es mio. No me acuerdo mas de donde lo encontré, pero es muy útil. Para no usar siempre programas P2P.
Bueno.. Vamos al grano...
Escribe este código para buscar directorios disponibles en Google:
Nota: con este vinculo buscaras a "Justin Timberlake" pero en Google puedes cambiar el nombre del
artista y también puedes reemplazarlo por un nombre de una canción y también funciona.
Google: ­inurl:(htm|html|php) intitle:"index of" +"last modified" +"parent di rectory" +description
+size +(wma|mp3) "Justin Timberlake"

Bueno..Eso era todo..espero que les sirva de algo..
Leer más...

Compartir archivos de Windows y Linux (y viceversa)

Hola!!!
Después de muchos días, sin entrar y preocuparme por el blog, por falta de tiempo, vuelvo a compartir dos herramientas bastante útiles, para cualquier Mortal...;)
Bueno. Empecemos, a preocuparnos por lo que realmente nos interesa, que es, compartir archivos entres distintos Sistemas Operativos, especialmente Windows y Linux.
Hoy en día, cada ves mas, en nuestras casas, lugares de trabajo, escuelas o facultades, necesitamos compartir archivos.
Muchas veces pensamos, como tenemos en nuestra red, varios Sistemas Operativos Windows y Linux, no podemos compartir entre ellos. O sino, pensamos que es una tarea bastante complicada, que solo los "Programadores", lo podemos hacer.
Yo soy Programador, bueno, mejor dicho, empezando a cumplir mi profesión. No me considero Programador, porque no se mucho, pero ahora no es el tema. ;)
Para compartir nuestros queridos archivos (músicas, manuales, vídeos, o lo que mas te interese), necesitamos una aplicación que se encargue de esta función.
En este caso hablamos de Samba. Para más información lo podemos encontrar aquí.
La idea no es explicar como se realiza la instalación o como configurarlo, ya que existen miles de lugares en internet donde podemos encontrarlos; si no, en hacer conocer que existen están herramientas, que muchas veces desconocemos.
Samba necesitamos instalar en una maquina que contenga un Sistema Operativo Linux. Podemos elegir cualquiera, pero yo lo probé con Ubuntu.
En Ubuntu es demasiado fácil instalarlo.
Y ahí, te descargara de internet lo que necesitas en tu Sistema Operativo para poderlo utilizarlo.
Una ves instalado, necesitamos configurar algunos parámetros, para que nuestro Servidor funcione.
Una ves configurado correctamente, las maquinas que contengan Windows, con solo entrar a "Mis redes" o como se llame, que no me acuerdo mas, se podrá acceder a los archivos de las distintas maquinas conectadas a la red.
Acordate que siempre tienen que pertenecer al mismo grupo.
Otra observación importante es que muchas veces nos preguntamos. ¿No se necesita ningún software en especial para entrar de Windows a Linux?. Y la respuesta es NO.
Mientras que de Linux a Windows, necesitamos del programa cliente de Samba.
Otra herramienta que me llamo mucho la atención es Swat. Es un programa que se accede por un navegador Web, y que te permite configurar Samba en forma mucho mas sencilla, que en la linea de comandos.
Para mas información contactarse e conmigo. Es una herramienta que hace dos horas empecé a utilizarlo.
Como me salvo y estoy tan contento, quería compartirlo con ustedes.
Desde ya, nos vemos.
Un saludo ;)
Leer más...

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...

Rezo del Software Libre

Kernel nuestro que estás en /usr/src/linux,
santificados sean tus .h
venga a nosotros tu make xconfig
hágase tu compilación así en el Pentium como en el AMD
perdona nuestros Windows así como nosotros perdonamos
a los que lo usan
y líbranos de Bill Gates,...
Leer más...

Direcciones IP y Subredes

Tenia que entregar un trabajo de redes sobre direcciones IP y Subredes. Eran ejercicios.
Aquí les dejo..Cualquier duda posteen nomas..

1. ¿Cual es el rango de host válido de cual es parte la dirección IP: 172.16.10.22 255.255.255.240?
172.16.10.17 – 172.16.10.30

2.¿Cual es la dirección de broadcast para un ID de red Clase B que utiliza la mascara de subred por defecto?
X.X.255.255

3.¿ Cual es la dirección de broadcast de la dirección de subred 10.254.255.19 255.255.255.248
10.254.255.23

4.¿ Cual es la dirección de broadcast de la dirección de subred 172.16.99.99 255.255.192.0
172.16.127.255

5.¿Cual es la dirección de broadcast de la dirección de subred de host 10.10.10.10 255.255.254.0
10.10.11.255

6. ¿Qué dirección de broadcast utilizara el host 192.168.210.5 255.255.255.252
192.168.210.7

7. Si necesita tener una dirección de red de Clase B dividida en exactamente 510 subredes. ¿Qué mascara de subred asignaría?
255.255.255.128

8.¿Cual es la mascara de subred de la siguiente dirección 192.168.69.0/28?
255.255.255.240

9. Tenemos la red 199.141.27.0 con una mascara de subred 255.255.255.240 identifique las direcciones de host válidas:
a. 199.141.27.33 Válido
b. 199.141.27.112 No válido
c. 199.141.27.119 Válido
d. 199.141.27.126 Válido
e. 199.141.27.175 No válido
f. 199.141.27.208 No válido

10. La red 172.12.0.0 necesita ser dividida en subredes cada una de las cuales debe tener una capacidad de 458 direcciones IP. ¿Cuál es la máscara de subred correcta para lograr esta división, manteniendo el número de subredes en su máximo?
255.255.254.0
Leer más...

Oferta de Trabajo

Si a uno de ustedes les interesa este empleo no estaría de mas que me lo comuniquen.

Somos una Empresa de más de 10 años en el mercado. Se busca programador con experiencia de 15 años en JAVA, para importante proyecto informático.
Deberá manejar a la perfección: C, C++, C#, SQL Server, Oracle, Informix, Access, SAP, ASP, Haskell, html, javascript, fireworks, XML, frameworks, paradox, Visual Basic, etc.
Se valorarán:
Conocimientos sobre el mito de la caverna de Platón.
Conocimientos de psicoanálisis.
Experiencia en la ley de los fluidos.
Experiencia en óxidos y nitratos.
Experiencia sobre tejidos celulares.
Conocimientos sobre la cría de berberechos en terrenos escarpados.
Conocimientos amplios sobre la Guerra del Peloponeso y la Guerra de Troya.
Desconocimiento de las leyes vigentes sobre los derechos de los trabajadores.
Desconocimiento de que las horas extras se pagan el doble que las normales.
Perfil idóneo: Estudiante o licenciado en Filosofía, Psicología, Química, Física, Biología, Magisterio, Amas de casa, con mucho tiempo libre que nosotros gustosamente nos ocuparemos de rellenar.
Nota: ABSTÉNGANSE TITULADOS Y ESTUDIANTES DE INFORMÁTICA.
Sueldo al mes: 150 EUROS

En resumen: Trabajarás como un negro por 150 EUROS al mes.
Espero que les guste..;)
Saludos
Leer más...

Imágenes Simpáticas del Software Libre

Navegando por varios sitios, encontré muchas imágenes muy simpáticas. Seleccioné las que más me gustaron por el gráfico o lo que significaban o decían. Espero que les guste. Espero comentarios. Saludos para la próxima....

Leer más...

FLISOL 2008 - Asuncion - Paraguay

Imagen de la FLISOL 2008

El sábado 26 de abril se celebró el gran festival de Software Libre en latinoamérica llamado FLISOL. En festival que se realiza una ves al año en diferentes ciudades del mundo.
Aquí en Paraguay, también lo pudimos celebrar. En 5 ciudades distintas. Por ejemplo estuvimos en Asunción realizando dicho evento. Por suerte estuvo muy lindo e interesante. Hubo mucha gente que recurrió al lugar. Dicho evento se realizó por primera ves en mi Facultad. En la Facultad Politécnica (Universidad Nacional de Asunción), con sede en San Lorenzo, a cercanías de Asunción. En este maravilloso día, en todos los sentidos, por el tiempo, por la actividad que nos unía a todos, lo realizamos con mucho esfuerzo. Es la primera ves que participaba en dicho evento, ademas de haber trabajado en realizarse. Hubo como 5 charlas sobre software libre, distribuciones, proyectos en Paraguay, etc. Lastimosamente no pude participar porque estaba realizando las copias de los CDs. Pero me encontré con varios amigos de varias Universidades que estuvieron visitando y que les pareció bastante bueno.
Imagen de la FLISOL 2008
También, me decían que en la sala donde se realizaban las charlas estaba muy llena, que no entraba más ningún alfiler. Pero con mis propios ojos, al llevar algunas sillas lo había visto. Lo que pude ver también que en colegio técnico estuvo visitando el evento. En el lugar aparte de las charlas, y la copia de CDs, hubo un lugar que se podían llevas las PCs para instalar Linux, con personas que le guiaban en la instalación. Lo que pude ver que muy pocos llevaron sus PCs, pero esperemos que en las otras ediciones se animen más en llevar.
 que puedo rescatar que el Software Libre en Paraguay esta viniendo de apoco. Que ya hay gente y empresas que están apostando las ventajas del software libre.
También es muy cierto, que en dicho evento falta mucho en hacerlo mejor las cosas. Pero con algo se empieza. Y esperemos que en los próximos años sigamos mejorando y hagamos un trabajo mucho mas lindo. Estoy muy convencido que en los próximos años haremos un festival mucho más grande como en otros países vecinos, y llevemos a mostrar de las verdaderas ventajas que nos ofrece el software libre, tanto a programadores como a usuarios normales, avanzados, o lugares de trabajo (oficinas, servidores, etc).
Por suerte me encontré con un amigo llamado Andreas Wich que saco algunas fotos, y también filmo algunas cosas del festival, que estaré subiendo cuando tenga tiempo, en editar.
Hasta la próxima.
Imagen de la FLISOL 2008

Imagen de la FLISOL 2008

Imagen de la FLISOL 2008

Imagen de la FLISOL 2008

Imagen de la FLISOL 2008

Imagen de la FLISOL 2008

Imagen de la FLISOL 2008
Leer más...

GCC compilador Libre

GCC es un compilador integrado del proyecto GNU para C, C++, Objective C y Fortran; es capaz de recibir un programa fuente en cualquiera de estos lenguajes y generar un programa ejecutable binario en el lenguaje de la máquina donde ha de correr.
La sigla GCC significa "GNU Compiler Collection". Originalmente significaba "GNU C Compiler"; todavía se usa GCC para designar una compilación en C. G++ refiere a una compilación en C++.

Sintaxis:
gcc [ opción | archivo ] ...
g++ [ opción | archivo ] ...

Las opciones van precedidas de un guión, como es habitual en UNIX, pero las opciones en sí pueden tener varias letras; no pueden agruparse varias opciones tras un mismo guión. Algunas opciones requieren después un nombre de archivo o directorio, otras no. Finalmente, pueden darse varios nombres de archivo a incluir en el proceso de compilación.
Ejemplos:
gcc hola.c
Compila el programa en C hola.c, genera un archivo ejecutable a.out.

gcc -o hola hola.c
Compila el programa en C hola.c, genera un archivo ejecutable hola.

g++ -o hola hola.cpp
Compila el programa en C++ hola.c, genera un archivo ejecutable hola.

gcc -c hola.c
No genera el ejecutable, sino el código objeto, en el archivo hola.o. Usa el nombre del archivo en C y le cambia la extensión por .o.

gcc -c -o objeto.o hola.c
Genera el código objeto indicando un nombre de archivo objeto sin crear archivo ejecutable.

g++ -c hola.cpp
Igual para un programa en C++.

g++ -o ~/bin/hola hola.cpp
Genera el ejecutable hola en el subdirectorio bin del directorio propio del usuario.

g++ -L/lib -L/usr/lib hola.cpp
Indica dos directorios donde han de buscarse bibliotecas. La opción -L debe repetirse para cada directorio de búsqueda de bibliotecas.

g++ -I/usr/include hola.cpp
Indica un directorio para buscar archivos de encabezado (de extensión .h).
Sufijos en nombres de archivo.
Son habituales las siguientes extensiones o sufijos de los nombres de archivo:

.c Fuente en C
.C .cc .cpp .c++ .cp .cxx Fuente en C++; se recomienda .cpp
.m Fuente en Objective-C
.i C Preprocesado
.ii C++ Preprocesdo
.s Fuente en lenguaje ensamblador
.o Código objeto
.h Archivo para preprocesador (encabezados), no suele figurar en la linea de comando de gcc

Opciones:
  • c: realiza preprocesamiento y compilación, obteniendo el archivo en código objeto; no realiza el enlazado.
  • E: realiza solamente el preprocesamiento, enviando el resultado a la salida estándar.
  • o "archivo": indica el nombre del archivo de salida, cualesquiera sean las etapas cumplidas.
  • I"ruta": especifica la ruta hacia el directorio donde se encuentran los archivos marcados para incluir en el programa fuente. No lleva espacio entre la I y la ruta, así: -I/usr/include
  • L"ruta": especifica la ruta hacia el directorio donde se encuentran los archivos de biblioteca con el código objeto de las funciones referenciadas en el programa fuente. No lleva espacio entre la L y la ruta, así: -L/usr/lib
  • Wall: muestra todos los mensajes de error y advertencia del compilador, incluso algunos cuestionables pero en definitiva fáciles de evitar escribiendo el código con cuidado.
  • g: incluye en el ejecutable generado la información necesaria para poder rastrear los errores usando un depurador, tal como GDB (GNU Debugger).
  • v: muestra los comandos ejecutados en cada etapa de compilación y la versión del compilador. Es un informe muy detallado.

Etapas de compilación:
El proceso de compilación involucra cuatro etapas sucesivas: preprocesamiento, compilación, ensamblado y enlazado.
Para pasar de un programa fuente escrito por un humano a un archivo ejecutable es necesario realizar estas cuatro etapas en forma sucesiva. Los comandos gcc y g++ son capaces de realizar todo el proceso de una sola vez.

1) Preprocesado:
En esta etapa se interpretan las directivas al preprocesador. Entre otras cosas, las variables inicializadas con #define son sustituidas en el código por su valor en todos los lugares donde aparece su nombre. Usaremos como ejemplo este sencillo programa de prueba, llamado circulo.c:

/* Circulo.c: calcula el área de un círculo.
Ejemplo para mostrar etapas de compilación.
*/

#define PI 3.1416
main()
{
// Variables
float area, radio;

radio = 10;
area = PI * (radio * radio);
printf("Circulo.\n");
printf("%s%f\n\n", "Area de circulo radio 10: ", area);
}

El preprocesado puede pedirse con cualquiera de los siguientes comandos; cpp alude específicamente al preprocesador.
$ gcc -E circulo.c > circulo.pp

$ cpp circulo.c > circulo.pp

Examinando circulo.pp
$ more circulo.pp

Puede verse que la variable PI ha sido sustituída por su valor, 3.1416, tal como había sido fijado en la sentencia #define.

2) Compilación:
La compilación transforma el código C en el lenguaje ensamblador propio del procesador de nuestra máquina.
$ gcc -S circulo.c

Realiza las dos primeras etapas creando el archivo circulo.s; examinándolo con
$ more circulo.s

Puede verse el programa en lenguaje ensamblador.

3) Ensamblado:
El ensamblado transforma el programa escrito en lenguaje ensamblador a código objeto, un archivo binario en lenguaje de máquina ejecutable por el procesador. El ensamblador se denomina as:
$ as -o circulo.o circulo.s

Crea el archivo en código objeto circulo.o a partir del archivo en lenguaje ensamblador circulo.s. No es frecuente realizar sólo el ensamblado; lo usual es realizar todas las etapas anteriores hasta obtener el código objeto así:
$ gcc -c circulo.c

Donde se crea el archivo circulo.o a partir de circulo.c. Puede verificarse el tipo de archivo usando el comando
$ file circulo.o
circulo.o: ELF 32-bit LSB relocatable, Intel 80386, version 1, not stripped

En los programas extensos, donde se escriben muchos archivos fuente en código C, es muy frecuente usar gcc o g++ con la opción -c para compilar cada archivo fuente por separado, y luego enlazar todos los módulos objeto creados. Estas operaciones se automatizan colocándolas en un archivo llamado makefile, interpretable por el comando make, quien se ocupa de realizar las actualizaciones mínimas necesarias toda vez que se modifica alguna porción de código en cualquiera de los archivos fuente.

4) Enlazado:
Las funciones de C/C++ incluídas en nuestro código, tal como printf() en el ejemplo, se encuentran ya compiladas y ensambladas en bibliotecas existentes en el sistema. Es preciso incorporar de algún modo el código binario de estas funciones a nuestro ejecutable.
En esto, consiste la etapa de enlace, donde se reúnen uno o más módulos en código objeto con el código existente en las bibliotecas. El enlazador se denomina ld. El comando para enlazar
$ ld -o circulo circulo.o -lc

ld: warning: cannot find entry symbol _start; defaulting to 08048184
Da este error por falta de referencias. Es necesario escribir algo como
$ ld -o circulo /usr/lib/gcc-lib/i386-linux/2.95.2/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o circulo /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-linux/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/i386-linux/2.95.2 circulo.o -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/2.95.2/crtend.o /usr/lib/crtn.o

Para obtener un ejecutable. El uso directo del enlazador ld es muy poco frecuente. En su lugar suele proveerse a gcc los códigos objeto directamente:
$ gcc -o circulo circulo.o


Crea el ejecutable circulo, que invocado por su nombre
$ ./circulo

Un programa con un único archivo fuente todo el proceso anterior puede hacerse en un solo paso:
$ gcc -o circulo circulo.c

No se crea el archivo circulo.o; el código objeto intermedio se crea y destruye sin verlo el operador, pero el programa ejecutable aparece allí y funciona. Es instructivo usar la opción -v de gcc para obtener un informe detallado de todos los pasos de compilación:
$ gcc -v -o circulo circulo.c


Enlace dinámico y estático:
Existen dos modos de realizar el enlace:
  • Estático: los binarios de las funciones se incorporan al código binario de nuestro ejecutable.
  • Dinámico: el código de las funciones permanece en la biblioteca; nuestro ejecutable cargará en memoria la biblioteca y ejecutará la parte de código correspondiente en el momento de correr el programa.
El enlazado dinámico permite crear un ejecutable más chico, pero requiere disponible el acceso a las bibliotecas en el momento de correr el programa. El enlazado estático crea un programa autónomo, pero al precio de agrandar el tamaño del ejecutable binario.
Ejemplo de enlazado estático:
$ gcc -static -o circulo circulo.c
$ ls -l circulo
-rwxr-xr-x 1 victor victor 237321 ago 4 11:24 circulo

Si no se especifica -static el enlazado es dinámico por defecto.

Ejemplo de enlazado dinámico:
$ gcc -o circulo circulo.c
$ ls -l circulo
-rwxr-xr-x 1 victor victor 4828 ago 4 11:26 circulo

Notar la diferencia en tamaño del ejecutable compilado estática o dinámicamente. Los valores pueden diferir en algo de los mostrados; dependen de la plataforma y la versión del compilador. El comando ldd muestra las dependencias de bibliotecas compartidas que tiene un ejecutable:
$ gcc -o circulo circulo.c
$ ldd circulo
libc.so.6 => /lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
$ gcc -static -o circulo circulo.c
$ ldd circulo
statically linked (ELF)

La compilación estática no muestra ninguna dependencia de biblioteca.

OBS:
Para enlazar los módulos objeto verde.o, azul.o, rojo.o, ya compilados separadamente, en el archivo ejecutable colores:
$ gcc -o colores verde.o azul.o rojo.o

Información adicional. Sobre GCC:
man gcc o info gcc


Leer más...

Geek más macho de los machos

Imagen de una imagen de GeeksBuenas noches a todos... Estaba navegando por la red. y encontré una pagina bastante interesante. Me reí tanto...Que quiero compartir con ustedes..Espero que les guste.... ;)
  1. Un verdadero macho geek programador es capaz de desarrollar un software aunque se muera de frió, programa calato en el polo norte sentado sobre un cubo de hielo tomando una cerveza bien fría y sin quejarse.
  2. Un kamikaze de la programación jamás hace backups de sus archivos porque eso es para los afeminados inseguros que no pueden controlar sus PC’s.
  3. Un auténtico semental de las computadoras jamás usa CTRL + ALT + DEL ni el botón “apagar sistema” para apagar un computador, simplemente desenchufa el equipo y lo vuelve a enchufar con la conchudez que solo a él le caracteriza.
  4. Un Tarzán de las tecnologías jamás se pone un nombre largo ni sentimental o cursi en su Messenger porque eso es recontra gay.
  5. Un guerrero del código auténtico le menta la madre en binario al computador cuando se pone cargoso.
  6. Un verdadero “Gengis Khan” de la programación jamás escribe comentarios en su programa, eso es de gays, un macho auténtico escribe 800 líneas de código y las compila sin revisarlas y si hay errores borra todo el programa y empieza de nuevo. La documentación es para los afeminados.
  7. Un “Chaka Zulu” de las tecnologías jamás necesita tener una página en Myspace, facebook o alguna de esas mariconadas para conseguir pareja, un auténtico Geek conquistador llama a una mujer y le hace cargar su laptop y ordenar sus gadtgets y si se porta bien, deja que lo toque, pero solo un momento, porque los tocamientos son antigeek.
  8. Un macho tecnológico de verdad jamás utiliza antivirus o antispyware en su computadora porque eso es para los maricas, un auténtico “Cyborg” se recorre por la linea de comandos todas las carpetas de su computadora y elimina cuanto maldito virus, spyware o alguna basura haya entrado en el Computador.
  9. Un auténtico “Code Warrior” no duerme, no come, no se distrae y casi no respira hasta que haya conseguido solucionar todos los problemas que le aquejan en su pc sean de software o de hardware.
  10. Un original descendiente de los INKAS, macho por naturaleza, camina con su laptop y demás aparatos tecnológicos por cualquier barrio peligroso que haya en la ciudad y si encuentra un ratero, lo viola por el solo hecho de mirar mal a sus preciados artículos.
  11. Un auténtico geek machazo tiene en su pc instalados el Windows Vista, el XP, Debian, Slakware, MAC OS y OS2… y si no puedes instalarlos todos eres una niñita marica reprimida.
  12. Un varón que se precie de serlo jamás va a la oficina con terno, eso es para los maricones, un auténtico Geek machazo va con short y sandalias para sentirse cómodo al escribir sus programas porque la maldita corbata no deja respirar.
  13. Un Varón de ley que se respete así mismo debuguea su código y goza mientras se relaja bajando porno e indexando sus videos para encontralos más rápido delante del jefe y si al jefe no le gusta, formatea la pc y el servidor de la empresa y se larga a teletrabajar en su casa.
  14. Un machazo programador de verdad es capaz de escribir código todo el sábado por la noche sin descansar y a la mañana siguiente se come un ceviche de conchas negras con su respectiva leche de pantera y para bajar, una botella de pisco puro y luego continua escribiendo su programa sin descansar.
  15. El e-mail es para los gays, el verdadero Geek macho original, programa los puertos de su PC y accede a otro computador dejando el mensaje como archivo en binario.
  16. Un auténtico Geek le pone nombres de mujer a todos sus artículos tecnologicos como laptop, iPod, iPhone, etc, y si no le pones un nombre, seguramente un marica cobarde que cree que los demás se van a burlar.
  17. Un macho geek original que tenga un blog siempre cita la fuente original de sus posts, porque es de recontra maricones poner un post y no citar la fuente original.
  18. Un verdadero Conan de la programación nunca escribe memes, porque prefiere invertir su valioso tiempo escribiendo código que escribir estupidez y media y repartirlo por media blogósfera para que otros maricones le sigan el juego.
Leer más...

Por que no estoy a favor de la politica de Microsoft

Microsoft
Hoy en día, existe un gran auge en el mundo de la informática; y por ende un gran negocio que es el Software y Hardware. Por lo que muchas empresas empiezan a jugar estratégicamente para competir en el mercado. Muchas como Microsoft monopolizan sus productos para que nosotros los usuarios, tengamos que "elegir". Por ejemplo estaba claro en las notebooks. Antes si querías comprar una notebook, tendrías que comprar con un Sistema Operativo (Windows) predeterminado sin podes elegir otro. Como mucha gente empezó a manifestarse y buscaban elegir sus productos empezaron a venderse notebooks con otros Sistemas Operativos (ejemplo Linux). Eso de elegir libremente se conoce como Software Libre.. La libertad de elegir tus cosas sin que nadie intervenga con licencias que te limitan todo. Poder elegir, vender, regalar copiar, analizar tu software siempre y cuando facilites el código fuente. Hoy en día, cada ves hay mas adeptos a este tema del Software Libre.. Pero este tema no vamos a abarcar por el momento. Sigamos con el tema de Microsoft..je..;)
Nadie puede discutir de los beneficios que saco Microsoft de la mano de Bill Gates. Gracias a el, ahora tenemos la posibilidad de estar con una PC en el hogar o en cualquier lado donde nos encontremos. Fue él, que nos hizo adentrarnos al tema de las PCs, hizo accesibles los precios, etc. Pero era antes, y por eso no justifica que sus productos tengan que estar monopolizados, y tampoco que sus productos tengan un elevado precio. Hoy en día, un Sistema Operativo con Windows cuesta alrededor de 200 dolares aproximadamente. Es una locura, además que no trae muchos programas útiles que necesariamente si se quiere poder usar funcionalmente tendrás que buscar otra soluciones. Ah ni te cuento que si quieres cambiar de versión de Windows. Ejemplo el Windows Vista. Aparte de comprar su licencia, tendrás que volver a adquirir un nuevo hardware para ponerlo en funcionamiento. Y poder "apreciar" de su cambio de diseño. Yo estoy todo el día enfrente a las PCs, por ser programador, y me doy cuenta que el Sistema Operativo Windows no usa bien los recursos Hardware que nosotros tenemos. De lo contrario como ocurre con Linux. Con el mismo hardware que se tiene en la PC, aprovecha mucho más. Para mi no es justo que al querer adquirir un nuevo Sistema Operativo tendrías que cambiar dicho Hardware para poder usarlo en forma.. Solo porque "estas empresas" tengan convenios con los fabricantes de Hardware. Ya estamos en otros tiempos, que existen muchas posibilidades, además que mejores soluciones en todos los sentidos. El costo, la seguridad, la estabilidad, y sobre todo el querer ayudar al prójimo en lo que sea. Transmitiendo los conocimientos, y hacer un mundo informático cada ves mejor...
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