<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Geosincrona &#187; Programacion</title>
	<atom:link href="http://www.geosincrona.com/category/tecnica/programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.geosincrona.com</link>
	<description>UltimaOrbita</description>
	<lastBuildDate>Mon, 22 Mar 2010 09:33:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>edorka@gmail.com ()</managingEditor>
		<webMaster>edorka@gmail.com()</webMaster>
		<category></category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>UltimaOrbita</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>edorka@gmail.com</itunes:email>
		</itunes:owner>
		<itunes:block>Yes</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.geosincrona.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.geosincrona.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Geosincrona</title>
			<link>http://www.geosincrona.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Módulos en C para Python II: Objetos</title>
		<link>http://www.geosincrona.com/2008/10/09/modulos-en-c-para-python-ii-objetos</link>
		<comments>http://www.geosincrona.com/2008/10/09/modulos-en-c-para-python-ii-objetos#comments</comments>
		<pubDate>Thu, 09 Oct 2008 10:24:36 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=146</guid>
		<description><![CDATA[En algunas ocasiones implementando extensiones para Python se hace necesario proveer de objetos con sus respectivos atributos en vez de funciones accesibles directamente a través del módulo. Para este ejemplo se emplearán figuras geométricas. Lo primero es crear las estructuras de datos involucradas. #include staticforward PyTypeObject figures_TriangleType; typedef struct { PyObject_HEAD float a,b,c; char *name; [...]]]></description>
			<content:encoded><![CDATA[<p>En algunas ocasiones implementando extensiones para Python se hace necesario proveer de objetos con sus respectivos atributos en vez de funciones accesibles directamente a través del módulo. Para <a href="http://www.geosincrona.com/wp-content/uploads/2008/10/figures.c">este ejemplo</a> se emplearán figuras geométricas. Lo primero es crear las estructuras de datos involucradas.</p>
<pre lang="c">
#include
<python.h>

staticforward PyTypeObject figures_TriangleType;

typedef struct {
    PyObject_HEAD
    float a,b,c;
    char *name;
} figures_TriangleObject;</pre>
<p>La sentencia staticforward permitirá acceder a la estructura del tipo Python de Triangle aunque no se haya declarado, aunque no sea muy ortodoxo es necesario ya que no se dispondrá de las funciones y datos para componerlas hasta las últimas lineas del módulo. </p>
<p>No se debe confundir TriangleType con TriangleObject, la primera será la estructura que utilizará Python para saber que métodos y atributos pertenecen al objeto y en definitiva hacer que este se comporte como tal, en cambio es en la estructura TriangleObject donde se encuentran los datos que se instanciarán con el propio objeto durante la ejecución.</p>
<p>A continuación se define la función de construcción del objeto, reservando memoria para la estructura de datos que le corresponde, la función encargada de ello es <strong>tp_alloc()</strong> que está incluida en la estructura del TypeObject. Una vez creado el objeto se devuelve.</p>
<pre lang="c">
static PyObject*
figures_triangle_new(PyTypeObject *type, PyObject *args){
	figures_TriangleObject *self;

	self = (figures_TriangleObject*)type->tp_alloc(type,0);
	return (PyObject *) self;
}</pre>
<p>Es en la función de inicialización cuando se procede al análisis de los parámetros (arg) facilitados. En este caso se espera que se faciliten una cadena seguida de tres decimales, el <a href="http://www.python.org/doc/1.5.2p2/ext/parseTuple.html">formato</a> que utiliza esta función es muy parecido al que emplean otras como printf().</p>
<pre lang="c">
static int
figures_triangle_init(PyObject *self, PyObject *args) {
	char *name;
	float a,b,c;
	figures_TriangleObject* triangle;

	if (!PyArg_ParseTuple(args, "sfff", &#038;name, &#038;a,&#038;b,&#038;c))
        {
		PyErr_SetString( PyExc_TypeError,
			"Parameters: name string, a, b and c lenght"
		);
		return -1;
	}
	if (self != NULL) {
		triangle = (figures_TriangleObject*) self;
	} else {
		triangle = PyObject_New(figures_TriangleObject, &#038;figures_TriangleType);
	}
	triangle->a = a ;
	triangle->b = b ;
	triangle->c = c ;
	triangle->name = name;
	return 0 ;
}</pre>
<p>Debe tenerse en cuenta de que si el patrón esperado para los parámetros no coincide con los que se facilitan se emitirá un mensaje de error informando del suceso. Esta función devolverá 0 si el proceso de la inicialización ha funcionado correctamente, en caso contrario un entero negativo.</p>
<p>También es posible que el puntero a <strong>self</strong> sea nulo, en tal caso esta función será la encargada de invocar a la rutina que reserve memoria, en cualquier caso se proseguirá asignando los valores recibidos en los parámetros a las variables del objeto.</p>
<p>La función anterior es invocada desde una función de creación, que controla que esta se ha realizado correctamente y en caso contrario devolver un objeto nulo (None).</p>
<pre lang="c">
static PyObject*
figures_triangle_create(PyObject *self, PyObject *args){
	figures_TriangleObject *new; 

	figures_TriangleType.tp_new = PyType_GenericNew;
	PyType_Ready(&#038;figures_TriangleType);
	new = PyObject_New(figures_TriangleObject, &#038;figures_TriangleType);
	if (figures_triangle_init( (PyObject *)new , args) == 0)
		return (PyObject *)new;
	else
		return Py_None;
}</pre>
<p>Para crear el objeto debe implementarse la función correspondiente, será esta la que se llamará cuando se haga referencia en Python a <strong>figures.Triangle()</strong>.</p>
<p>La complejidad del destructor de datos dependerá de la estructura propia del objeto, para el caso del triangulo es muy simple.</p>
<pre lang="c">
static void
figures_triangle_dealloc(figures_TriangleObject* self)
{
	self->ob_type->tp_free((PyObject*)self);
}</pre>
<p>La estructura <strong>TriangleObject</strong> incorpora como todo <strong>PyObject</strong> punteros a funciones para gestionarlos como objetos, una de estas es precisamente la rutina para dejar de reservar la memoria ocupada por la estructura del <strong>PyObject</strong>.</p>
<p>El primer método de este objeto servirá para calcular el área, debe tenerse en cuenta que Python debe obtener al final de la función un objeto válido, para eso se emplea la función <strong>Py_BuildValue()</strong>.</p>
<pre lang="c">
static PyObject*
figures_triangle_area(figures_TriangleObject *self, PyObject *value, void *closure){
	float area;

	area  = self->a * self->b / 2;
	return (Py_BuildValue("f",area));
}</pre>
<p><strong>Py_BuildValue()</strong> utiliza las mismas normas de formato que <strong>PyArg_ParseTuple()</strong>.</p>
<p>Para acceder a los atributos del objeto deben programarse las respectivas funciones get() y set(), a se implementa  método get() para recuperar la longitud del lado A del triángulo.</p>
<pre lang="c">
static PyObject*
figures_triangle_get_a(figures_TriangleObject *self, void* p )
{
    return Py_BuildValue("f", self->a);
}</pre>
<p>El método set() es algo mas complicado ya que tenemos que debe confirmase que facilita un parámetro y que además este es del tipo float.</p>
<pre lang="c">
static int
figures_triangle_set_a(figures_TriangleObject *self, PyObject *value, void *closure)
{
	float a;

	if (value == NULL) {
		PyErr_SetString(PyExc_TypeError,
			"Cannot delete the first attribute");
		return -1;
	}
	if (PyArg_Parse(value,"f", &#038;a )) self->a = a ;
	else {
	 	PyErr_SetString(PyExc_TypeError,
			"The first attribute value must be float");
		return -1;
	}
	Py_INCREF(value);
	return 0;
}</pre>
<p>Las descripciones de getter y setter son necesarias para que python sepa que atributos puede manejar y a que métodos corresponde. Cada registro debe incluir:</p>
<ul>
<li>El nombre del atributo en una cadena.
<li>Un puntero a la función para el método <strong>get</strong> a al que debe preceder un cast <strong>(getter)</strong>.
<li>Un puntero a la función para el método <strong>set</strong> a al que debe preceder un cast <strong>(setter)</strong>.
<li>Una cadena con una breve descripción del atributo.
<li>Un puntero a datos opcionales que se hará llegar a las anteriores funciones a través del parámetro <strong>closure</strong>, en la mayoría de los casos será nulo.
</ul>
<p>El último registro de esta estructura contendrá un único valor NULL.</p>
<p>Para más detalles sobre las estructuras que emplean las extensiones Python en C existe <a href="http://docs.python.org/c-api/objimpl.html">documentación completa</a>.</p>
<pre lang="c">
static PyGetSetDef figures_triangle_getset[] = {
	{ "a", (getter)figures_triangle_get_a,
		(setter)figures_triangle_set_a,
		"a lenght", NULL },
	{ NULL }
};</pre>
<p>También deben declararse los métodos en una estructura <strong>PyMethodDef</strong> que al igual que la responsable de los atributos se incluirá en la estructura del tipo Python para Triangle. Cada método debe tener un registro compuesto por:</p>
<ul>
<li>El nombre del atributo en una cadena.
<li>Un puntero a la función haciendo un cast como <strong>(PyCFunction)</strong>.
<li>Un flag que indicará si deben proporcionarse parámetros al método, la alternativa es <strong>METH_VARARGS</strong>.
<li>Por último una breve descripción del método.
</ul>
<pre lang="c">
static PyMethodDef figures_triangle_methods[] = {
	{ "area", (PyCFunction)figures_triangle_area,
		METH_NOARGS , "calculates area"},
	{NULL, NULL, 0, NULL}
};</pre>
<p>De la misma manera se declaran los métodos para el propio módulo, en este ejemplo se proporcionará la función constructora de Triangle.</p>
<pre lang="c">
static PyMethodDef figures_methods[] = {
	{"Triangle", (PyCFunction)figures_triangle_create, METH_VARARGS,
		"Create a new Triangle object."},
	{NULL, NULL, 0, NULL}
};</pre>
<p>Para rellenar la <a href="http://docs.python.org/c-api/typeobj.html">estructura</a> <strong>PyTypeObject</strong> deben utilizarse, al igual que en las estructuras anteriores, casts para las funciones con el propósito de evitar warnings.</p>
<pre lang="c">
static PyTypeObject figures_TriangleType = {
    PyObject_HEAD_INIT(NULL)
    0,
    "figures.Triangle",
    sizeof(figures_TriangleObject),
    0,
    (destructor)figures_triangle_dealloc, /*tp_dealloc*/
    0,          /*tp_print*/
    0,          /*tp_getattr*/
    0,          /*tp_setattr*/
    0,          /*tp_compare*/
    0,          /*tp_repr*/
    0,          /*tp_as_number*/
    0,          /*tp_as_sequence*/
    0,          /*tp_as_mapping*/
    0,          /*tp_hash */
    0,0,0,
    0,0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
    "Triangle objects",
    0,0,0,0,0,0,
    figures_triangle_methods,
    0,
    figures_triangle_getset,
    0,0,0,0,0,
    (initproc)figures_triangle_init,
    0,
    (newfunc)figures_triangle_new,
};

DL_EXPORT(void)</pre>
<p>Por último el inicializador del módulo indicará que estructura contiene los métodos de este.</p>
<pre lang="c">
initfigures(void){
    PyObject* m;
    figures_TriangleType.ob_type = &#038;PyType_Type;
    m = Py_InitModule("figures", figures_methods);
}</pre>
<p>Para compilar el módulo debe ejecutarse el siguiente <a href="http://www.geosincrona.com/wp-content/uploads/2008/10/setup-figures.py">script Python</a>:</p>
<pre lang="python">
from distutils.core import setup, Extension
setup(name = "figures", version = "1.0",
    ext_modules = [Extension("figures", ["figures.c"],
    library_dirs = [ './' ] ,
    )]
)
</pre>
<p>Cabe recordar que si se necesita incluir librerias opcionales puede añadirse a los parámetros de <strong>Extension()</strong> la tupla:</p>
<pre lang="python">
extra_objects = ["libreria.a"]
</pre>
<p>Para utilizar la libreria tendreis que copiar el fichero figures.so desde el directorio que distutils ha creado dentro de <strong>build</strong> al directorio actual.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2008/10/09/modulos-en-c-para-python-ii-objetos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Módulos en C para Python</title>
		<link>http://www.geosincrona.com/2008/10/06/127</link>
		<comments>http://www.geosincrona.com/2008/10/06/127#comments</comments>
		<pubDate>Mon, 06 Oct 2008 19:00:22 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=127</guid>
		<description><![CDATA[Traducción de Anatomy of a Python C Module Escribir módulos C en Python es relativamente fácil. La razón principal para hacer esto es incrementar el rendimiento de un código en Python. A continuación se demostrará como implementar la siguiente función de Python en C. Esta función puede encontrarse aquí: def fib2(n): # return Fibonacci series [...]]]></description>
			<content:encoded><![CDATA[<p class="light">Traducción de <a href="http://superjared.com/entry/anatomy-python-c-module/">Anatomy of a Python C Module</a></p>
<p class="light">Escribir módulos C en Python es relativamente fácil. La razón principal para hacer esto es incrementar el rendimiento de un código en Python. A continuación se demostrará como implementar la siguiente función de Python en C. Esta función puede encontrarse <a href="http://docs.python.org/tut/node6.html#SECTION006600000000000000000">aquí</a>:</p>
<p class="light">
<pre name="code" class="python:nocontrols:firstline[10]">
    def fib2(n): # return Fibonacci series up to n
    """Return a list containing the Fibonacci series up to n."""
    result = []
    a, b = 0, 1
    while b &lt; n:
        result.append(b)    # see below
        a, b = b, a+b
    return result</pre>
<p>Cabe destacar que esta no es una función particularmente lenta -en realidad es bastante rápida- Simplemente tiene una serie de aspectos interesantes para implementar un modulo C en Python, como la creación de una lista de Python en C. El <a href="http://docs.python.org/ext/simpleExample.html">ejemplo</a> de la creación de un modulo C para Python no es tan amplio como podría llegar a serlo, si todo va bien la <a href="http://www.geosincrona.com/wp-content/uploads/2008/10/fib.c">implementación de la secuencia Fibonacci en C</a> resultará un poco más explicativa.</p>
<p>Para empezar siempre se incluye <code>Python.h</code>:</p>
<pre name="code"  class="c:firstline[1]">#include Python.h;</pre>
<p>Lo siguiente será crear la función fib. Primero definimos la función como un Python Object, al que se le pasaran argumentos:</p>
<pre name="code" class="c:firstline[2]">static PyObject *
fib(PyObject *self, PyObject *args)
{</pre>
<p>Después una vez en el cuerpo de la función inicializamos algunas variables:</p>
<pre name="code" class="c:firstline[5]">   int a = 0, b = 1, c, n;</pre>
<p>Entonces será cuando se realice el analisis de los parámetros proporcionados a la función. Para esto se utilizar  PyArg_ParseTuple. Puede encontrar mas documentación en <a href="http://docs.python.org/api/arg-parsing.html">Parsing arguments and building values</a>, que dará una visión general sobre como analizar diferentes tipos de parámetros. De todos modos en este ejemplo solo se acepta un único valor entero. Si esto no funciona se devolverá NULL.</p>
<pre name="code" class="c:firstline[6]">if (!PyArg_ParseTuple(args, "i", &amp;n))
    return NULL;</pre>
<p>Después se instanciará una nueva lista Python, utilizando PyList_New, que aceptará un número entero como longitud de la lista. Ya que se desconoce fual será la longitud se empezará con cero.</p>
<pre name="code" class="c:firstline[8]">PyObject *list = PyList_New(0);</pre>
<p>A continuación están las entrañas del verdadero cálculo. Se debe prestar atención a la sentencia <code>PyList_Append(list, PyInt_FromLong(b));, ya que es donde añadimos un nuevo item a la lista. PyList_Append es analogo al metodo de Python list.append(). Se utiliza PyInt_FromLong para crear un objeto Python con un entero dentro del bucle.</code></p>
<pre name="code" class="c:firstline[9]">while(b &lt; n){
    PyList_Append(list, PyInt_FromLong(b));
    c = a+b;
    a = b;
    b = c;
}</pre>
<p>Y entonces se devuelve la lista:</p>
<pre name="code" class="c:firstline[15]">    return list;
}</pre>
<p>Esto conforma las entrañas de la funcion, pero como integrar esto en Python como un módulo? Primero debe crearse un objeto PythonMethodDef con las funciones que quieren incorporarse al modulo. Ya que solo tenemos una función solo tenemos que añadir una definición, como esta:</p>
<pre name="code" class="c:firstline[17]">PyMethodDef methods[] = {
    {"fib", fib, METH_VARARGS, "Returns a fibonacci sequence as a list"},
    {NULL, NULL, 0, NULL}
};</pre>
<p>El último paso es inicializar el módulo. Para entender que ocurre en esta parte debe leerse <a href="http://docs.python.org/ext/methodTable.html">esta página</a> que contiene una explicación completa del proceso.</p>
<pre name="code" class="c:firstline[17]">PyMODINIT_FUNC
initfib()
{
    (void) Py_InitModule("fib", methods);
}</pre>
<p>Ahora que el modulo en C para Python esta completo, tiene que compilarse. La forma más fácil de hacerlo es utilizar el módulo <a href="http://docs.python.org/lib/module-distutils.html">distutils</a>. Creamos <code>setup.py</code> como sigue:</p>
<pre name="code" class="c:firstline[1]">from distutils.core import setup, Extension

setup(name = "Fib",
      version = "1.0",
      ext_modules = [Extension("fib", ["fib.c"])])</pre>
<p>Con eso se informa a <code>distutils</code> que nuestro modulo esta ubicado en <code>fib.c</code>. Ahora se ejecuta:</p>
<pre><code>$ python setup.py build
$ python setup.py install</code></pre>
<p>Y ya está instalado, para utilizarlo debemos importar el módulo y utilizar la función:</p>
<pre lang="python">import fib
fib.fib(123)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]</pre>
<p>Una secuencia fibonacci es fácil de calcular, y hacerlo en C es un ejercicio para mostrar como se pueden implementar funciones y módulos en C. Aun así, y aunque sea facil de calcular, la versión en C es cuatro veces más rápida que su equivalente en Python. Este simple ejemplo debería mostrar como de fácil -y útil- es implementar extensiones en C</p>
<p>Hay mucho mas sobre este procedimiento en <a href="http://docs.python.org/ext/ext.html">Extending and Embedding the Python Interpreter</a> que recomiendo leer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2008/10/06/127/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Defensa del proyecto de fin de carrera</title>
		<link>http://www.geosincrona.com/2008/09/17/defensa-del-proyecto-de-fin-de-carrera</link>
		<comments>http://www.geosincrona.com/2008/09/17/defensa-del-proyecto-de-fin-de-carrera#comments</comments>
		<pubDate>Wed, 17 Sep 2008 21:13:15 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Arte]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[PFC]]></category>
		<category><![CDATA[servicios red]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=123</guid>
		<description><![CDATA[El Viernes 18 de Septiembre a las 13:00h defiendo en la sala 103 del Departamental II de la Universidad Rey Juan Carlos (Campus de Móstoles) mi proyecto de fin de carrera. A grandes rasgos BLAS es una plataforma en python que pretende estructurar y agilizar la elaboración de servicios a nivel de aplicación, tanto sobre [...]]]></description>
			<content:encoded><![CDATA[<p>El Viernes 18 de Septiembre a las 13:00h defiendo en la sala 103 del Departamental II de la Universidad Rey Juan Carlos (Campus de Móstoles) mi proyecto de fin de carrera.</p>
<p>A grandes rasgos BLAS es una plataforma en python que pretende estructurar y agilizar la elaboración de servicios a nivel de aplicación, tanto sobre TCP como UDP.</p>
<p>El proyecto está publicado bajo la GPLv3 en <a title="el repositorio de google code para BLAS" href="http://code.google.com/p/blas/">http://code.google.com/p/blas/</a></p>
<p>A esto debería añadir que tengo un gripazo muy serio y que mi aspecto será bastante lamentable ese día.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2008/09/17/defensa-del-proyecto-de-fin-de-carrera/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>illegal user</title>
		<link>http://www.geosincrona.com/2005/09/27/illegal-user</link>
		<comments>http://www.geosincrona.com/2005/09/27/illegal-user#comments</comments>
		<pubDate>Tue, 27 Sep 2005 20:59:10 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[ShellScript]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=52</guid>
		<description><![CDATA[Estoy hasta las narices de leer este mensaje unas 400 veces cada hora en los logs de mi servidor, asi que me he puesto y he hecho un script en bash para poner fin a los incordiosos ataques por fuerza bruta -de ahi el nombre, asias por la inspiracion javi- Alguno direis que hay un [...]]]></description>
			<content:encoded><![CDATA[<p>Estoy hasta las narices de leer este mensaje unas 400 veces cada hora en los logs de mi servidor, asi que me he puesto y he hecho un script en bash para poner fin a los incordiosos ataques por fuerza bruta -de ahi el nombre, asias por la inspiracion javi-<br />
Alguno direis que hay un webo de ellos ya hechos pero no me gustan por lo varios motivos:<br />
- los hechos en perl exigen tener el interprete cargado, es algo de ram que me gustaria ahorrar ya que el server no esta sobrado.<br />
- se ejecutan por cron, lo que no da una respuesta inmediata, lo que busco es algo colgado del auth.log y que de leña a los 3 cambios en el username.<br />
Bueno aqui esta el codigo para <a href="http://www.ultimaorbita.com/edorka/wp-content/brutekiller.sh">descargar</a> y aqui para <a href="http://www.ultimaorbita.com/edorka/wp-content/brutekiller.sh.html">verlo</a> en vuestro navegador.<br />
Sugerencias y criticas como siempre en lso comentarios, espero que sea util.</p>
<p>UPDATE: Habia un fallo en el script, mil perdones. Ya esta corregido</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2005/09/27/illegal-user/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CLIPS</title>
		<link>http://www.geosincrona.com/2005/09/26/clips</link>
		<comments>http://www.geosincrona.com/2005/09/26/clips#comments</comments>
		<pubDate>Mon, 26 Sep 2005 06:16:00 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=51</guid>
		<description><![CDATA[Una vez que ha salido mi nota de IA (5.0) me atrevo a publicar el trabajo que presente para la asignatura, es un tutorial de CLIPS disponible en el wiki de ultimaorbita. Para quien no lo conozca clips es uno de los sistemas mas extendidos para la programacion de sistemas expertos. Tengo pendiente acabar el [...]]]></description>
			<content:encoded><![CDATA[<p>Una vez que ha salido mi nota de IA (5.0) me atrevo a publicar el trabajo que presente para la asignatura, es un <a href="http://www.ultimaorbita.com/wiki/index.php/CLIPS">tutorial de CLIPS</a> disponible en el <a href="http://www.ultimaorbita.com/wiki/index.php/Portada">wiki de ultimaorbita</a>.<br />
Para quien no lo conozca clips es uno de los sistemas mas extendidos para la programacion de sistemas expertos.<br />
Tengo pendiente acabar el programa que me encargo el profesor, el Sudoku, sin embargo sigo topandome con algunos defectillos.<br />
Espero que a alguno os sea util</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2005/09/26/clips/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>forwarding.sh</title>
		<link>http://www.geosincrona.com/2005/02/11/forwardingsh</link>
		<comments>http://www.geosincrona.com/2005/02/11/forwardingsh#comments</comments>
		<pubDate>Fri, 11 Feb 2005 12:42:28 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[ShellScript]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=28</guid>
		<description><![CDATA[Otra chapucilla de las mias en bash. se trata de un script que configura las iptables para hacer nat facilmente lo teneis coloreado y para descarga. He intentado hacerlo lo mas facil de configurar y puede que algun dia lo añada a blindaje.sh para pena y/o terror de muchos. Basicamente la sintaxis es: ( &#8220;ip_origen:puerto_origen&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Otra chapucilla de las mias en bash.<br />
se trata de un script que configura las iptables para hacer nat facilmente<br />
lo teneis <a href="http://www.ultimaorbita.com/edorka/forwarding.sh.html">coloreado</a> y para <a href="http://www.ultimaorbita.com/edorka/forwarding.sh">descarga</a>.</p>
<p>He intentado hacerlo lo mas facil de configurar y puede que algun dia lo añada a blindaje.sh para pena y/o terror de muchos. Basicamente la sintaxis es:</p>
<p>(  &#8220;ip_origen:puerto_origen&#8221; &#8220;ip_destino:puerto_destino&#8221; )<br />
o<br />
( &#8220;ip_origen:(puerto1,puerto2,&#8230;)&#8221; &#8220;ip_destino&#8221; )</p>
<p>Si alguien no entiende como tira añadire la explicacion al post para aclarar la sintaxis, de todos modos no es mas que un apaño para cosas  puntuales.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2005/02/11/forwardingsh/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Practica de java corregida</title>
		<link>http://www.geosincrona.com/2005/02/03/practica-de-java-corregida</link>
		<comments>http://www.geosincrona.com/2005/02/03/practica-de-java-corregida#comments</comments>
		<pubDate>Thu, 03 Feb 2005 10:14:29 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=25</guid>
		<description><![CDATA[Y con soporte para ficheros, este es el enlace al tarball. Muchas gracias a aquellos que me han echado un cable, especialmente a FX -no tiene blog- que me ha tutelado con mis discrepancias con la filosofia de java.]]></description>
			<content:encoded><![CDATA[<p>Y con soporte para ficheros, <a href="http://www.ultimaorbita.com/edorka/banco.tar.gz">este</a> es el enlace al tarball.</p>
<p>Muchas gracias a aquellos que me han echado un cable, especialmente a FX -no tiene blog- que me ha tutelado con mis discrepancias con la filosofia de java.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2005/02/03/practica-de-java-corregida/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programilla en Java con Swing</title>
		<link>http://www.geosincrona.com/2005/01/20/programilla-con-en-java-con-swing</link>
		<comments>http://www.geosincrona.com/2005/01/20/programilla-con-en-java-con-swing#comments</comments>
		<pubDate>Thu, 20 Jan 2005 07:42:36 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=15</guid>
		<description><![CDATA[Por fin acabé la práctica para metodología avanzada. aqui esta el tarball. Cuando tenga un rato subire htmls con el codigo coloreado para quien quiera hacer consultas puntuales. ACTUALIZACION: No hace bien los ingresos y retiradas de efectivo, cuando la operacion finaliza pierde la coherencia.]]></description>
			<content:encoded><![CDATA[<p>Por fin acabé la práctica para metodología avanzada. <a href="http://www.ultimaorbita.com/edorka/banco.tar.gz">aqui</a> esta el tarball.<br />
Cuando tenga un rato subire htmls con el codigo coloreado para quien quiera hacer consultas puntuales.</p>
<p>ACTUALIZACION: No hace bien los ingresos y retiradas de efectivo, cuando la operacion finaliza pierde la coherencia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2005/01/20/programilla-con-en-java-con-swing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script para configurar netfilter, blindaje.sh</title>
		<link>http://www.geosincrona.com/2004/11/25/script-para-configurar-netfilter-blindajesh</link>
		<comments>http://www.geosincrona.com/2004/11/25/script-para-configurar-netfilter-blindajesh#comments</comments>
		<pubDate>Wed, 24 Nov 2004 23:11:22 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[ShellScript]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=13</guid>
		<description><![CDATA[Aqui va un pequeño script que me curre, sirve para configurar en un periquete un cortafuegos con posiblidad de forwarding. Lo podeis ver coloreado aqui o podeis descargarlo directamente de aqui Cosas que le faltan por hacer: - Creación y configuración facil de bridges. - NAT udp y tcp. - Una herramienta de configuracion grafica, [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui va un pequeño script que me curre, sirve para configurar en un periquete un cortafuegos con posiblidad de forwarding.</p>
<p>Lo podeis ver coloreado <a href=http://www.ultimaorbita.com/edorka/blindaje.sh.html>aqui</a> o podeis descargarlo directamente de <a href=http://www.ultimaorbita.com/edorka/blindaje.sh>aqui</a></p>
<p>Cosas que le faltan por hacer:</p>
<p>- Creación y configuración facil de bridges.</p>
<p>- NAT udp y tcp.</p>
<p>- Una herramienta de configuracion grafica, con python+glade por ej.</p>
<p>- Añadir la posibilidad de usar log o ulog para registrar actividad.</p>
<p>- iptables &#8220;manejadas&#8221;, para controlar la salida de errores.</p>
<p>Se aceptan comentarios <img src='http://www.geosincrona.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2004/11/25/script-para-configurar-netfilter-blindajesh/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial Ensamblador en Linux</title>
		<link>http://www.geosincrona.com/2004/11/21/tutorial-ensamblador-en-linux</link>
		<comments>http://www.geosincrona.com/2004/11/21/tutorial-ensamblador-en-linux#comments</comments>
		<pubDate>Sun, 21 Nov 2004 00:05:40 +0000</pubDate>
		<dc:creator>Edorka</dc:creator>
				<category><![CDATA[Ensamblador]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.geosincrona.com/?p=12</guid>
		<description><![CDATA[Este es el material que habia en la antigua web. Mi pequeño tutorial para introducirse al ensamblador en entornos linux tutorial_asm_en_linux ,tambien un principio de macros.mac como el de borland para linux macros.mac y un ejemplillo que utiliza el macros.mac ejemplo]]></description>
			<content:encoded><![CDATA[<p>Este es el material que habia en la antigua web.</p>
<p>Mi pequeño tutorial para introducirse al ensamblador en entornos linux<br />
<a href="http://www.ultimaorbita.com/edorka/tut_asm_en_linux/tut_asm_en_linux_v0.1.html ">tutorial_asm_en_linux</a></p>
<p>,tambien un principio de macros.mac como el de borland para linux<br />
<a href="http://www.ultimaorbita.com/edorka/tut_asm_en_linux/macros.mac">macros.mac</a></p>
<p>y un ejemplillo que utiliza el macros.mac<br />
<a href="http://www.ultimaorbita.com/edorka/tut_asm_en_linux/prueba4.s">ejemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geosincrona.com/2004/11/21/tutorial-ensamblador-en-linux/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
