Archive for March, 2008

Corrientes de agua en Marte.

Acabo de leer en elmundo un artículo muy bueno sobre corrientes de agua en marte.

Como ya sabemos, el agua es un elemento necesario para la vida (si más no tal y como la conocemos nosotros). El principal problema es que NADIE ha documentado la presencia de agua en otros planetas que no sean la tierra, aunque se sospecha de su presencia hace miles de millones de años en algunos planetas.

Ahora, un grupo de investigadores de Estados Unidos y Holanda han demostrado que unas formaciones en forma de abanico que se encuentran en los extremos de algunas cuencas de la superficie de Marte podrían haber sido formadas por grandes y violentas corrientes de agua.

Según lo que cuentan en el artículo, el agua podría venir del interior de Marte. Se sustentan en unas fotografías tomadas y su gran similitud con los deltas de la tierra.

Os dejo aquí una imagen :


agua marte posible corriente de agua

Comments

La fibra se lanzará de forma limitada a partir del verano

Acabo de leer publicado en Cinco días que telefónica empezará a comercializar con su nueva red de fibra óptica.

Ahora seguramente las cosas empiecen a ir mejor y haya más competencia y anime a Jazztel y Ono a seguir extendiendo su red de Fibra Óptica.

Comercializará con su nueva red de forma limitada, pero por algo se empieza ¿no?.

Ahora el principal dimela de los abonados a telefónica (entre los que me incluyo) será qué sucederá con nuestra antigua instalación y si no habrá que hacer algún tipo de obras en casa :s.

Aunque claro, algún día tendremos que migrar y adaptarnos a la fibra óptica

Comments

Acabo de venir de votar.

Como ya dije, hoy tocaba ir a votar, y he ido a votar. ¿Con qué impresión me he quedado? pues bueno, pienso que ha habido MUCHÍSIMA abstención, algo que me parece bastante negativo para la sociedad en si y su poca capacidad de decisión.
Ahora esta noche ire viendo como va avanzando estas elecciones del 2008 y si gana el PSOE o PP (los otros no vale la pena que los mencione, está claro que no ganarán).

Pienso también que los que simpatizan con el PSOE iran a votar poco… pero bueno, todo lo que escriba ahora pura especulación.

Un saludo y felices elecciones!

Comments

La desdicha de las fresas

Y por qué no…

¿Y por qué no contar una historia sobre las fresas? estaba en el chat escribiendome con LISAI y pensé de repente que hoy comí fresas. Estaban riquísimas! (es de las frutas que más me gustan) y luego pienso, ¿por qué? , ¿por qué son tan buenas?. Por una vez quiero deshacerme de mis posibles explicaciones científicas y quiero ser un niño, quiero ser lo que soy y siempre seré, un niño.

Ahí va mi cuento:

Se hizo el cielo y la tierra por obra de los dioses y empezaron a crear criaturas de todo tipo, elefantes, cocodrilos, gatos, pájaros, ciervos y plantas, muchas plantas y de todo tipo (limoneros, pinos, cerezos…) y una vez acabado el trabajo los dioses se dijeron entre ellos: hemos hecho un buen trabajo, si señor, nos ha quedado fantástico el mundo, pero uno de los dioses dice: falta sabor.

Los demás dioses le miraron y dijeron: ¿cómo que falta sabor? y el dios respondió: falta algún animal o planta para que de gusto a la vida, hay animales increibles, que pueden volar, correr, saltar, nadar… arboles gigantes, plantas que invaden las más rocosas llanuras, pero falta un animal o planta que le de gusto a toda esta creación.
Tras pensar mucho, dijeron, ¡podemos crear una planta que dé gusto al mundo entero! pero a cambio, consensuaron que esta planta tendría enormes castigos por tener esta habilidad.
Los castigos eran los siguientes:

- Cuando haga mucho viento, tus frutos caerán al suelo.
- Cuando haga mucho sol, tus hojas se quemarán y morirás.
- Si hay poca humedad, morirás.
- Si hay mucha humedad, morirás.
- Los animales intentarán comer tus frutos.
- Tendrás un color rojo fuerte para atraer a los animales.
- Antes de traer tus frutos, harás una flor y muchos animales intentarán comer las flores que produzcas.

Moraleja: y es que tener gusto por la vida, es muy peligroso…

Cuento dedicado a LISAI.

Comments

La beta de Gnash

Bueno, por fín ya tocaba un post sobre Gnash, Gnash es un software que permite reproducir películas hechas con Flash (extensión .swf) en *NUX. Yo voy a ser un poco más crítico, para ser sincero es lento y renderiza mal por lo menos la versión 0.8.1 , aunque según dicen en esta beta se han mejorado esos aspectos y encima han mejorado la compatibilidad con SWF v7 y clases Action Script 2 y van mejorando SWF v8 y v9.

Pongo aquí las características de la beta (que podeis verlas dando un click aquí)

* Improved timeline redesign.
* Action execution order fixes.
* Keyboard handling improved [1].
* New classes implemented: System.capabilities (partial), SharedObject,
LocalConnection.
* New opcodes implemented: ActionImplements, Try/Throw.
* Movieclip.beginGradientFill completes drawing API support.
* MovieClip._lockroot support added.
* Implement GET/POST for MovieClip.loadVariables and MovieClip.loadMovie
* Textfield support improved.
* Security: configurable sandbox restricts filesystem access by movies.
* Better support for SWF8.
* Streaming OGG-contained multimedia (e.g. vorbis/theora or
vorbis/dirac), and other free formats.
* OGL and Cairo renderers much improved.
* Improvements of the Framebuffer GUI (hide text messages, support
Linux events system, built-in touchscreen calibration, simple
keyboard support, better architecture support).
* SOLdumper utility for reading SOL files (’flash cookies’).
* DumpShm utility finds and dumps Local Connection memory segments.
* Fullscreen display possible.
* Extensions for LIRC and DBus.
* High quality, cross-platform psuedo-randomness using boost random.
* NPAPI (Mozilla) plugin: keyboard events work, navigation and
javascript from within movies.
* Set and save preferences from the GUI (GTK).
* Improved stability and robustness with malformed SWFs.
* New User manual! Rewritten reference manual, brought up to date.
* Many other bugfixes.

Comments

Yo SI que voy a votar.

Y voy a votar en las elecciones generales de 2008. Este domingo día 9/03/2008 estamos convocados todos los ciudadanos para ir a votar. Os preguntareis a qué viene este post, pues bien, viene principalmente a que mientras iba navegando por internet y estaba en el Msn Messenger, me invitaron a una conversación unos amigos y al final se acabó escribiendo de política (que en si no me molesta que se escriba de política), lo que si me molestó es esta frase:

Ir a votar, ¿para qué? si ganarán los mismos.

Me dejó muerto, pero tío, céntrate un segundo, el hecho de votar es algo más que un derecho, es la expresión de nuestros pensamientos, a quién votes al fín y al cabo es cuestión personal, pero tío, VOTA, hay gente que ha dejado la vida para que tengamos este valioso derecho, el derecho a EXPRESARNOS.

Vota en blanco, vota al PP, vota al PSOE, vota a ERC, vota al PNV, vota a IU, a quien quieras, pero USA tu derecho, si no lo usas, luego NO TE QUEJES de que los OTROS decidan por TÍ. Si te abstienes de votar, significa que apoyarás al partido que gane.

Yo aun no sé a quién votaré, pero si puedo garantizar una cosa: VOTARÉ. Porque es mi derecho, porque quiero contribuir en la decisión de quién mandará, porque quiero EXPRESARME, porque luego quiero poder QUEJARME si a quienes he votado me han fallado, quiero votar porque hay gente que ha muerto para que pueda hacer todo esto.

Un saludo y felices elecciones.

Comments (1)

Hola mundo ocultos.

¿Nunca habeis soñado con Hola Mundo’s ocultos en vuestros programas? pues ahora ya podreis implementarlo de una forma fácil y sencilla. Acabo de ver unos Hola Mundo muy bien elaborados en la web de fitzrovian. Son casi como códigos ocultos xD.

Ahí va el primero:

int n[]={0×48,
0×65,0×6C,0×6C,
0×6F,0×2C,0×20,
0×77,0×6F,0×72,
0×6C,0×64,0×21,
0×0A,0×00},*m=n;
main(n){putchar
(*m)!=’\0′?main
(m++):exit(n++);}

Este me gusta más:

#define _________ }
#define ________ putchar
#define _______ main
#define _(a) ________(a);
#define ______ _______(){
#define __ ______ _(0×48)_(0×65)_(0×6C)_(0×6C)
#define ___ _(0×6F)_(0×2C)_(0×20)_(0×77)_(0×6F)
#define ____ _(0×72)_(0×6C)_(0×64)_(0×21)
#define _____ __ ___ ____ _________
#include
_____

Este es el amo!:
#include
main(){
int x=0,y[14],*z=&y;*(z++)=0×48;*(z++)=y[x++]+0×1D;
*(z++)=y[x++]+0×07;*(z++)=y[x++]+0×00;*(z++)=y[x++]+0×03;
*(z++)=y[x++]-0×43;*(z++)=y[x++]-0×0C;*(z++)=y[x++]+0×57;
*(z++)=y[x++]-0×08;*(z++)=y[x++]+0×03;*(z++)=y[x++]-0×06;
*(z++)=y[x++]-0×08;*(z++)=y[x++]-0×43;*(z++)=y[x]-0×21;
x=*(–z);while(y[x]!=NULL)putchar(y[x++]);
}

Con este solo se puede decir una cosa… ¿ein?
#include
#define __(a) goto a;
#define ___(a) putchar(a);
#define _(a,b) ___(a) __(b);
main()
{ _:__(t)a:_(’r',g)b:_(’$',p)
c:_(’l',f)d:_(’ ‘,s)e:_(’a',s)
f:_(’o',q)g:_(’l',h)h:_(’d',n)
i:_(’e',w)j:_(’e',x)k:_(’\n’,z)
l:_(’H',l)m:_(’X',i)n:_(’!',k)
o:_(’z',q)p:_(’q',b)q:_(’,',d)
r:_(’i',l)s:_(’w',v)t:_(’H',j)
u:_(’a',a)v:_(’o',a)w:_(’)',k)
x:_(’l',c)y:_(’\t’,g)z:___(0×0)}

Un saludo y espero que hayas pasado un buen rato.

Comments (1)

Codigo fuente de mi programa: Juego de la Vida

Bueno, como seguramente ya sabreis mi objetivo es ser un programador y estoy estudiando eso, informática y en mi blog espero ir compartiendo los programas que escriba.

Generalmente use C para escribir los programas aunque no descarto algunos otros lenguajes como PHP o Python (o quizás perl).

Aquí va el codigo fuente de un juego de la vida (cualquier duda podeis dejar un comentario y lo responderé lo más rápido posible):


Licencia:

Creative Commons License


Esta obra está bajo una
licencia de Creative Commons.

WordPress no me permite poner todo el código del programa así que adjunto el fichero .c que podeis descargarlo dándole click aquí:

joc de la vida.c
/*

Autor: Imydes
Descripció: Joc de la vida
Data: 21/02/2008
*/

#include

/*****************************
* Definicions *
****************************/
#define MAX_COOR 7

/*****************************
* Tipus *
*****************************/

typedef int Tterreny[MAX_COOR][MAX_COOR];

/*****************************
* Capcelera de les funcions *
******************************/

void preparar_terreny(Tterreny &original, Tterreny &temporal);
void inserir_habitants(Tterreny &original);
void mostrar_terreny(Tterreny &original);
int obtenir_generacions(void);
void resoldre_terreny(int generacions, Tterreny &original, Tterreny &temporal);
void copiar_terreny(Tterreny &original,Tterreny &temporal);

int main() {

int generacions;
Tterreny original, temporal;

printf(”Introduce los habitantes mediante coordenadas, la tabla es de 5×5\n”);

preparar_terreny(original, temporal);

inserir_habitants(original);

mostrar_terreny(original);

generacions = obtenir_generacions();

resoldre_terreny(generacions, original, temporal);

return 0;
}

/* Copiar Terreny */
void copiar_terreny(Tterreny &original,Tterreny &temporal) {
int fila, col;
for (fila = 1; fila < MAX_COOR-1;fila++)
for (col = 1; col < MAX_COOR-1; col++)
original[fila][col] = temporal[fila][col];
}

/* Gestió d'habitants del terreny */
void resoldre_terreny(int generacions, Tterreny &original, Tterreny &temporal) {
int g, fila, col;
int contador;
for(g=0;g printf("GENERACION %i\n",g+1);
for (fila=1;fila for (col=1;col contador = 0;
contador = original[fila-1][col-1]+original[fila-1][col]+original[fila-1][col+1];
contador = contador+original[fila][col-1]+original[fila][col+1];
contador = contador+original[fila+1][col-1]+original[fila+1][col]+original[fila+1][col+1];

/* Decidim si creem o eliminem un habitant */

if (original[fila][col] == 1) {
if (contador == 2 || contador == 2 ) {
temporal[fila][col] = 1;
}
else {
temporal[fila][col] = 0;
}
}
else {
if (contador == 3) temporal[fila][col] = 1;
else temporal[fila][col] = 0;
}
printf("%i",temporal[fila][col]);
}
printf("\n");
}
copiar_terreny(original,temporal);
}
}

/* Preparació del terreny */
void preparar_terreny(Tterreny &original, Tterreny &temporal) {
int fila, col;
for (fila=0;fila for (col=0;col original[fila][col] = 0;
temporal[fila][col] = 0;
}
}
/* Sistema d'insersió d'habitants */
void inserir_habitants(Tterreny &original) {
int fila, col;
do {
scanf("%i",&fila);
scanf("%i",&col);

if (fila > 0 && fila < MAX_COOR-1 && col > 0 && col < MAX_COOR-1)
if (original[fila][col] == 1)
printf("Ya tienes un habitante en la casilla %i:%i\n",fila,col);
else
original[fila][col] = 1;
else
if (fila != 0 || col != 0) printf("El terreno es de 1x5 x 1x5\n");
}while(fila != 0 || col != 0);
}

/* Obtenim el nombre de generacions */
int obtenir_generacions(void) {

int generacions;
printf("Dime el numero de generacions que quieres que haga (valor positivo)\n");

do {
scanf("%i",&generacions);
printf("\n");
}while(generacions < 1);
return generacions;
}

/* Mostrem el terreny amb els habitants */
void mostrar_terreny(Tterreny &original) {

int fila, col;

for (fila=1;fila for (col=1;col printf("%i",original[fila][col]);
printf("\n");
}
}

En teoria si tienes las librerias de ANSI C instaladas y un compilador de C (como gcc en *NUX y Visual C++ en Windows) debería funcionar perfectamente.

Un saludo y espero que os haya gustado!!

Comments (6)

Next entries »