<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Security Dojo &#187; &#187; programación extrema</title>
	<atom:link href="http://security-dojo.com/tags/programacion-extrema/feed/" rel="self" type="application/rss+xml" />
	<link>http://security-dojo.com</link>
	<description>Mandando tus logs a /dev/null desde 1976</description>
	<lastBuildDate>Wed, 04 Aug 2010 04:29:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Programacion &#8220;Extrema&#8221;</title>
		<link>http://security-dojo.com/programming-bits/prog-extrem/</link>
		<comments>http://security-dojo.com/programming-bits/prog-extrem/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 18:29:29 +0000</pubDate>
		<dc:creator>nahual</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[programación extrema]]></category>

		<guid isPermaLink="false">http://security-dojo.com/uncategorized/eaea-intento-1/</guid>
		<description><![CDATA[Programacion Extrema NO es una programacion que sube montanas, anda en motocross y se avienta escaladas libres, es una programacion que busca optimizar el numero de lineas, complejidad y velocidad de las cosas, un ejemplo es lo que llamo un arreglo de funciones, o tambien funciones flexibles, un programa normal que busca comandos dentro de [...]]]></description>
			<content:encoded><![CDATA[<p>Programacion Extrema NO es una programacion que sube montanas, anda en motocross y se avienta escaladas libres, es una programacion que busca optimizar el numero de lineas, complejidad y velocidad de las cosas, un ejemplo es lo que llamo un arreglo de funciones, o tambien funciones flexibles, un programa normal que busca comandos dentro de un archivo podria verse asi:</p>
<p><code></p>
<pre name="code" class="c">

#include < stdio.h >
#include < unistd.h >
int funcion1(char *linea) {
printf("orale entro a funcion1\n");
return 0;
}
int funcion2(char *linea) {
printf("entramos a funcion2 %s\n", linea);
return 0;
}
int main(int argc, char **argv) {
if(argc < 2) {
printf("Uso: %s < palabra >\n", argv[0]);
return -1;
}
printf("ahora mandamos ejecutar funcion1\n");
funcion1(argv[1]);
printf("ahora ejecutando funcion2\n");
funcion2(argv[1]);
printf("terminamos\n");
return 0;
}
</pre>
<p></code></p>
<p>la salida del archivo es la siguiente:</p>
<pre>
root@firebolt f00 # gcc -o normal normal.c
root@firebolt f00 # ./normal www.soldemorelia.com.mx

Ahora mandamos ejecutar funcion1
se mando www.soldemorelia.com.mx a funcion1
ahora ejecutando funcion2
se mando www.soldemorelia.com.mx a funcion2
terminamos
root@firebolt f00 #
</pre>
<p>Un programa que es flexible es el siguiente:</p>
<pre name="code" class="c">
#include < stdio.h >
#include < unistd.h >
struct ejemplo {
int id;
char *nombre;
int (*execute)(char *linea);
};
int funcion1(char *linea) {
printf("se mando %s a funcion1\n", linea);
return 0;
}
int funcion2(char *linea) {
printf("se mando %s a funcion2\n", linea);
return 0;
}
struct ejemplo f[] = {{1, "funcion numero 1", funcion1},{2, "function numero 2", funcion2}, {0, NULL, NULL}};
int main(int argc, char **argv) {
int i = 0;
if(argc < 2) {
printf("Uso: %s < palabra >\n", argv[0]);
return -1;
}
printf("ahora mandamos ejecutar funcion1\n");
f[0].execute(argv[1]);
printf("ahora ejecutando funcion2\n");
f[1].execute(argv[1]);
printf("terminamos\n");
return 0;
}
</pre>
<p>El codigo es un poco mas largo pero si se quisiera agregar una funcion extra solo se tendria que agregar la funcion y una linea a a estructura, esto da la posibilidad de hacer funciones o cambiar funciones al vuelo y decir “si la palabra es asi has esto si no has lo otro” sin utilizar tanas lineas de codigo y mucho mas facil de leer y mantener.</p>
<p>Regresamos al codigo puro! La proxima semana veremos un programa que nos deja checar servidores y que utiliza ¡funciones flexibles!</p>
]]></content:encoded>
			<wfw:commentRss>http://security-dojo.com/programming-bits/prog-extrem/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
