<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2304908645814887524</id><updated>2012-01-11T13:32:37.201-03:00</updated><category term='linux'/><category term='pyafipws'/><category term='web2py'/><category term='postgresql'/><category term='ubuntu'/><category term='educación'/><category term='software libre'/><category term='pyrece'/><category term='python'/><category term='sistemas agiles'/><category term='factura electrónica'/><title type='text'>Mariano Reingart</title><subtitle type='html'>Temas, intereses y opiniones personales (lo que dé...)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-6972759304344991033</id><published>2012-01-04T03:28:00.001-03:00</published><updated>2012-01-04T04:12:57.187-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>pg8000 1.09 maintenance version (fork) released</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;pg8000 is a DB-API 2.0 compatible Pure-Python interface to the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;PostgreSQL database engine.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;It is one of many PostgreSQL interfaces for the Python programming language.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;pg8000 is somewhat distinctive in that it is written entirely in&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Python and does not rely on any external libraries (such as a compiled&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;python module, or PostgreSQL’s libpq library).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;This pure-python connector approach allows to run it where C compiled&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;libraries cannot be installed, it allows deeper access to PostgreSQL&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;protocol internals and it enables easier flexibility and extensibility&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;for Python developers (like support for parameterized prepared&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;statements using qmark, numeric, named, format or pyformat DBAPI&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;paramstyle).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;The highlights of this 1.09 maintenance release are: two-phase commit&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;support, autocommit feature, server_version property and bug fixes for&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;almost all reported issues since 1.08 (2010-06-08)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;For details of the changes in this release, please see the notes at:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://html.pg8000.googlecode.com/hg/changelog.html" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://html.pg8000.googlecode.&lt;wbr&gt;&lt;/wbr&gt;com/hg/changelog.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;pg8000 maintenance version may be downloaded from:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pg8000/downloads/list" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;pg8000/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;For more information see:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pg8000/" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;pg8000/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;For the original version see:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/mfenniak/pg8000" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;https://github.com/mfenniak/&lt;wbr&gt;&lt;/wbr&gt;pg8000&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Acknowledgements to Mathieu Fenniak for the original version and&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;thanks to the contributors that reported and/or sent patches applied&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;for this release.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;PS: I've been working with this library since the last year, it helped me where psycopg2 couldn't be installed (dependency compilation issues in older systems) or when I needed more flexibility (i.e. paramstyle). As it seems that the original author don't maintain it anymore, I've decided to make a fork in googlecode, with the hope it could be useful to other people too.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-6972759304344991033?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/6972759304344991033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2012/01/pg8000-109-maintenance-version-fork.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/6972759304344991033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/6972759304344991033'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2012/01/pg8000-109-maintenance-version-fork.html' title='pg8000 1.09 maintenance version (fork) released'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-2875222516684160601</id><published>2012-01-04T03:24:00.000-03:00</published><updated>2012-01-04T04:12:11.573-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>pg8000 1.09 versión de mantenimiento (fork) liberado (conector python para postgresql)</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;pg8000 es una interface DB-API 2.0 compatible puramente hecha en&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Python para el motor de base de datos &amp;nbsp;PostgreSQL.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Al no depender de bibliotecas externas (libpq) o modulos compilados,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;puede ser instalada practicamente en todos los entornos, y habilita un&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;acceso más profundo al protocolo de PostgreSQL, permite flexibilidad y&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;extensibilidad más simple y para los desarrolladores Python como ser&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;el soporte para sentencias preparadas parametrizadas usando qmark,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;numeric, named, format o pyformat según el paramstyle de la DBAPI).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Las características principales de esta versión 1.09 de mantenimiento&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;son: commit en dos fases, soporte para autocommit, propiedad&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;server_version property y corrección de errores para casi todas las&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;incidencias reportadas desde la versión 1.08 (2010-06-08)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Para los detalles de los cambios en esta liberación, ver las notas en:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://html.pg8000.googlecode.com/hg/changelog.html" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://html.pg8000.googlecode.&lt;wbr&gt;&lt;/wbr&gt;com/hg/changelog.html&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;La versión de mantenimiento de pg8000 puede ser descargada de:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pg8000/downloads/list" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;pg8000/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Para más información ver:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pg8000/" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;pg8000/&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Para la versión original ver:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://github.com/mfenniak/pg8000" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;https://github.com/mfenniak/&lt;wbr&gt;&lt;/wbr&gt;pg8000&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Mis agradecimientos a Mathieu Fenniak por la versión original y a los&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;contribuidores que han reportado y/o enviado sus correcciones que se&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;han aplicado en esta versión.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;PD: Vengo trabajando con esta bibilioteca hace más de un año, me ayudo donde psycopg2 no pudo ser instalado (por no poder compilarlo por cuestiones de dependencias viejas) y cuando necesité más flexibilidad (el tema de paramstyle). Como se ve que el autor original no la mantiene más, decidí hacer el fork en googlecode, con la esperanza de que les sea&amp;nbsp;útil&amp;nbsp;a otros.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-2875222516684160601?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/2875222516684160601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2012/01/pg8000-109-version-de-mantenimiento.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/2875222516684160601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/2875222516684160601'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2012/01/pg8000-109-version-de-mantenimiento.html' title='pg8000 1.09 versión de mantenimiento (fork) liberado (conector python para postgresql)'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-1541704499880952354</id><published>2011-11-26T12:16:00.001-03:00</published><updated>2011-11-26T16:26:52.362-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='factura electrónica'/><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sistemas agiles'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Trazabilidad de Medicamentos, Operaciones Cambiarias y Remito Electrónico</title><content type='html'>En el proyecto PyAfipWs se ha agregado soporte para varios webservices:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Trazabilidad de Medicamentos (ANMAT):&amp;nbsp;server: Jetty(6.1.16) con Oracle como b.d.:&amp;nbsp;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/TrazabilidadMedicamentos"&gt;http://www.sistemasagiles.com.ar/trac/wiki/TrazabilidadMedicamentos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;WSCOC - Operaciones Cambiarias (AFIP):&amp;nbsp;x-powered-by: Servlet/3.0; JBossAS-6&amp;nbsp;server: Apache/2.0.52 (Red Hat)&amp;nbsp;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/ConsultaOperacionesCambiarias"&gt;http://www.sistemasagiles.com.ar/trac/wiki/ConsultaOperacionesCambiarias&lt;/a&gt;&lt;/li&gt;&lt;li&gt;COT - Remito Electrónico (ARBA):&amp;nbsp;server: IBM_HTTP_Server&amp;nbsp;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/RemitoElectronicoCotArba"&gt;http://www.sistemasagiles.com.ar/trac/wiki/RemitoElectronicoCotArba&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Con estos servicios web el proyecto PyAfipWs se ha expandido más allá de los webservices de AFIP, incluyendo otras entidades y servicios, completando e integrando las funcionalidades más usadas por sistemas de gestión en Argentina, no solo para python sino que con la interfaz COM se pueden usar desde otros lenguajes en Windows (Visual Basic, Visual Fox Pro, Delphi, ABAP - SAP, etc.) e incluso con interfaces de texto o por linea de comando en otras plataformas (DOS, UNIX).&lt;br /&gt;Próximamente&amp;nbsp;se agregará soporte para archivos CSV, DBF (dBase, FoxPro, Clipper, etc.), extendiendo y facilitando aún más el acceso a estos servicios web desde lenguajes de programación legados.&lt;br /&gt;&lt;br /&gt;Respecto a la librería PySimpleSOAP, se realizaron las siguientes mejoras para soportar los nuevos webservices:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mejoras en analisis de WSDL (separando nombres de elementos y tipos complejos, reconocimiento de las diferentes partes de los mensajes, tag vacios)&lt;/li&gt;&lt;li&gt;Soporte de SOAP Header (encabezados para autenticación)&lt;/li&gt;&lt;li&gt;Soporte básico para WSSE (WebService-Security Extensions)&lt;/li&gt;&lt;li&gt;Ajustes por servidor, para formar el requerimiento según cada plataforma evitando incompatibilidades (por ej., no enviar tag vacio a JBoss-AS pero si )&lt;/li&gt;&lt;/ul&gt;Las modificaciones experimentales están en una rama propia del repositorio, ya que algunos cambios pueden introducir incompatibilidades hacia atrás o&amp;nbsp;todavía&amp;nbsp;no son del todo definitivos. Más información en:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pysimplesoap/"&gt;http://code.google.com/p/pysimplesoap/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gracias a tener un desarrollo propio para la comunicación SOAP se pudieron solucionar estos y otros inconvenientes, incluso cuando otras soluciones para webservices fallaban o no se ajustaban a los requerimientos (que por cierto, ningun servicio web ha sido igual a otro, cada nuevo webservice introduce ligeras incompatibilidades, interpretaciones diferentes del standard SOAP o nuevas características).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El servicio COT no es un webservice tradicional ya que no utiliza XML para el requerimiento ni SOAP para la respuesta, teniendo su propio esquema, por lo que solo se uso SimpleXMLElement de PySimpleSOAP (manejo de xml simple estilo objetos), y se adapto un&amp;nbsp;WebClient para codificar los métodos POST.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Gracias a&amp;nbsp;Matias Gieco por aportar los ejemplos iniciales que posibilitaron desarrollar el componente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Más información sobre el proyecto en:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/pyafipws/"&gt;http://code.google.com/p/pyafipws/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anuncios completos:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sites.google.com/site/pyafipws/anuncios/lanzamientotrazamed101atrazabilidadmedicamentosanmat"&gt;Trazabilidad de Medicamentos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pyafipws.com.ar/anuncios/lanzamientowscocv11-consultadeoperacionescambiarias-rg312011"&gt;WSCOC: Consulta de Operaciones Cambiarias&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pyafipws.com.ar/anuncios/lanzamientoremitoelectronicolibre-codigodeoperacionesdetransladocotarba"&gt;Remito Electrónico COT&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-1541704499880952354?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/1541704499880952354/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2011/11/trazabilidad-de-medicamentos-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/1541704499880952354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/1541704499880952354'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2011/11/trazabilidad-de-medicamentos-y.html' title='Trazabilidad de Medicamentos, Operaciones Cambiarias y Remito Electrónico'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-2933811419645468248</id><published>2011-06-11T16:31:00.001-03:00</published><updated>2011-06-11T16:40:03.329-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>Invitación al Público "PyDay 2011 Gonzalez Catan"</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Helvetica, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;&lt;a href="http://3.bp.blogspot.com/-6MED-A8P9W8/TfPEc4AL3tI/AAAAAAAAALM/NPopuAICpSY/s1600/pyday_catan2011_viral_web.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-6MED-A8P9W8/TfPEc4AL3tI/AAAAAAAAALM/NPopuAICpSY/s400/pyday_catan2011_viral_web.png" width="282" /&gt;&lt;/a&gt;&lt;b&gt;&lt;a href="http://www.python.org.ar/"&gt;PyAr&lt;/a&gt;&lt;/b&gt;, el grupo de usuarios de Python Argentina, está orgulloso de anunciar que se encuentra abierta la inscripción para el evento&amp;nbsp;&lt;b&gt;&lt;a href="http://www.pyday.com.ar/catan2011"&gt;PyDay Gonzalez Catán 2011:&amp;nbsp;&lt;i&gt;"Jornada de Programación en Python"&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&amp;nbsp;a realizarse el sábado&amp;nbsp;&lt;b&gt;16 de Julio de 2011&lt;/b&gt;&amp;nbsp;de 9 a 19hs en el&amp;nbsp;&lt;b&gt;&lt;a href="http://www.institutopascal.edu.ar/"&gt;Instituto Superior Tecnológico Blaise Pascal&lt;/a&gt;&lt;/b&gt;&amp;nbsp;que contará con Charlas Introductorias y Talleres Prácticos sobre este incipiente lenguaje de programación, reconocido en el ambiente del Software Libre y visto como una creciente alternativa a&amp;nbsp;&lt;b&gt;Java&lt;/b&gt;,&amp;nbsp;&lt;b&gt;.NET&lt;/b&gt;&amp;nbsp;y&amp;nbsp;&lt;b&gt;PHP&lt;/b&gt;&amp;nbsp;por su simplicidad, versatilidad y facilidad de uso, utilizado actualmente por miles de empresas, incluyendo a Google, NASA y YouTube.&lt;/div&gt;&lt;div style="margin-top: 0px;"&gt;&lt;div style="color: #787878; line-height: 23px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #787878;"&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;&lt;a href="http://www.pyday.com.ar/catan2011"&gt;http://www.pyday.com.ar/catan2011&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #787878; line-height: 23px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px;"&gt;El evento, de fácil acceso ubicado en el conurbano bonaerense (aprox. 1 hora de Capital), contará con la presencia de&amp;nbsp;&lt;b&gt;Docentes&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Profesionales&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Alumnos&lt;/b&gt;&amp;nbsp;y&amp;nbsp;&lt;b&gt;Entusiastas&lt;/b&gt;&amp;nbsp;de diferentes puntos del Gran Buenos Aires y de varias provincias del Interior del País, representantes de diversas comunidades de Software Libre (&lt;b&gt;Python&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Ubuntu&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Mozilla&lt;/b&gt;&amp;nbsp;y&lt;b&gt;PostgreSQL&lt;/b&gt;, entre otras).&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;El lema de la jornada es&amp;nbsp;&lt;b&gt;&lt;i&gt;"Python en el mundo real"&lt;/i&gt;&lt;/b&gt;&amp;nbsp;mostrando casos concretos de aplicación de este lenguaje con ejemplos simples al alcance de todos que demuestran su alta potencialidad e impacto actual.&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;Los temas principales de la jornada serán:&amp;nbsp;&lt;b&gt;Software Libre&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Educación&lt;/b&gt;&amp;nbsp;(nivel secundario y terciario),&amp;nbsp;&lt;b&gt;Desarrollo Web&lt;/b&gt;(django, web2py),&amp;nbsp;&lt;b&gt;Aplicaciones Visuales&lt;/b&gt;&amp;nbsp;(wx, gtk, qt),&amp;nbsp;&lt;b&gt;Presentación Proyectos&lt;/b&gt;&amp;nbsp;(factura electrónica, voto electrónico, trabajos finales y tesis de graduados),&amp;nbsp;&lt;b&gt;Videojuegos&lt;/b&gt;,&amp;nbsp;&lt;b&gt;Cooperativas&lt;/b&gt;, Economía Social y Oportunidades Laborales.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-top: 0px;"&gt;&lt;div style="color: #787878; line-height: 23px;"&gt;Las distintas actividades se detallán en el sitio:&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #787878;"&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;&lt;a href="http://www.pyday.com.ar/catan2011/conference/schedule"&gt;http://www.pyday.com.ar/catan2011/conference/schedule&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: #787878; display: block; line-height: 23px; list-style-position: inside; list-style-type: square; margin-top: 0px;"&gt;&lt;/ul&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;La jornada se enmarca en el&amp;nbsp;&lt;a href="http://docs.google.com/View?id=dd9bm82g_428g8zvfvdx"&gt;&lt;b&gt;&lt;i&gt;Proyecto Curricular Institucional&lt;/i&gt;&lt;/b&gt;&amp;nbsp;de la&amp;nbsp;&lt;b&gt;&lt;i&gt;Carrera "Analista de Sistemas"&lt;/i&gt;&lt;/b&gt;&amp;nbsp;orientado al&amp;nbsp;&lt;b&gt;&lt;i&gt;Software Libre&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&amp;nbsp;y se contempla reservar aulas para espacios abiertos, temas avanzados, posters, presentación de proyectos, stands de comunidades, reuniones, mini-sprints de desarrollo, charlas relámpagos espontáneas no programadas y consultas del público en general.&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;Son bienvenidos los colaboradores, empresas, entidades y comunidades interesadas en participar y auspiciar la jornada.&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;&lt;br /&gt;El evento es de entrada libre y gratuita previa inscripción web (cupos limitados):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pyday.com.ar/catan2011/user/register" style="color: #005b9c; text-decoration: none;"&gt;http://www.pyday.com.ar/catan2011/user/register&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;&lt;b&gt;Se entregarán Certificados de Asistencia emitidos por el Instituto&lt;/b&gt;&amp;nbsp;(sin costo)&lt;/div&gt;&lt;div style="color: #787878; line-height: 23px; margin-top: 0px;"&gt;&lt;a href="http://www.institutopascal.edu.ar/" style="color: #005b9c; text-decoration: none;"&gt;http://www.institutopascal.edu.ar/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-2933811419645468248?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/2933811419645468248/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2011/06/invitacion-al-publico-pyday-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/2933811419645468248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/2933811419645468248'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2011/06/invitacion-al-publico-pyday-2011.html' title='Invitación al Público &quot;PyDay 2011 Gonzalez Catan&quot;'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-6MED-A8P9W8/TfPEc4AL3tI/AAAAAAAAALM/NPopuAICpSY/s72-c/pyday_catan2011_viral_web.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-8639505344015594733</id><published>2011-06-10T02:46:00.002-03:00</published><updated>2011-06-10T02:52:00.921-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='factura electrónica'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='pyrece'/><title type='text'>Avances PyRece: WSFEv1, varias mejoras (XML/TXT/DBF/JSON) y rediseño</title><content type='html'>Continuando con el constante trabajo y avance del proyecto de factura electrónica y software libre, ya esta publicado la nueva versión del aplicativo libre y gratuito para gestionar facturas electrónicas utilizando los webservices de AFIP:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/pyafipws/anuncios/actualizacionpyrece123e"&gt;http://sites.google.com/site/pyafipws/anuncios/actualizacionpyrece123e&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta actualización contempla soporte para &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/ProyectoWSFEv1"&gt;WSFEv1&lt;/a&gt; (el servicio web "versión 1" de mercado interno que entra en vigencia el 1° de Julio y afecta&amp;nbsp;principalmente&amp;nbsp;a importadores, monotributistas, turismo, etc.)&lt;br /&gt;&lt;br /&gt;Además, se realizó un rediseño interno separandolo en módulos reutilizables en dos áreas: Formatos de archivos de intercambio y generación de PDF:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;formato_csv.py: para planillas de cálculo&amp;nbsp;&lt;/li&gt;&lt;li&gt;formato_txt.py: para archivos de texto de campos con ancho fijo&amp;nbsp;(por ej. Cobol)&amp;nbsp;similar a SIAP RECE&amp;nbsp;&lt;/li&gt;&lt;li&gt;formato_xml.py: para archivos similares al Facturador Plus (utilizando SimpleXmlElement para serialización automática)&lt;/li&gt;&lt;li&gt;formato_dbf.py: para tablas compatibles con dBase, Clipper y FoxPro&lt;/li&gt;&lt;li&gt;formato_json.py: que exporta/importa los diccionarios de Python con simplejson&lt;/li&gt;&lt;li&gt;pyfepdf.py: modulo ya existente para generar los PDF (reutilizado) aprovechando el &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#DiseñadorVisualPyFEPDF"&gt;diseñador visual&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Esto fue posible luego de unificar la representación interna de las facturas electrónicas, ajustando los campos para diferentes formatos a una estructura en común compartida por todos los módulos.&lt;br /&gt;&lt;br /&gt;A su vez, se resolvieron algunos bugs por el tema de la codificación de DBF que serán enviados al desarrollador de dicha librería a la brevedad.&lt;br /&gt;&lt;br /&gt;Todos estos cambios posibilitan en el futuro agregar soporte para otros formatos y webservices (WSFEX Exportación -RG2758-, WSMTX -RG2904, Bonos fiscales, etc.), que será el próximo paso a implementar.&lt;br /&gt;&lt;br /&gt;Si bien se mejoro un poco el aspecto de la interfaz, estamos trabajando para la modernización de la interfaz, implicando una separación en capas para la integración de las tres soluciones:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/HerramientaFacturaElectronica"&gt;Fe.py&lt;/a&gt;: aplicativo por consola c/ base de datos&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/PyRece"&gt;PyRece&lt;/a&gt;: aplicativo visual&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaLibre"&gt;FacturaLibre&lt;/a&gt;: aplicación web&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Por todos estos motivos, se buscan testers, empaquetadores y colaboradores interesados en estos temas, proximamente nos vamos a estar reuniendo en el PyDay de Catán para tratar el estado del proyecto y los pasos a seguir, los esperamos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pyday.com.ar/catan2011"&gt;http://www.pyday.com.ar/catan2011&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-8639505344015594733?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/8639505344015594733/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2011/06/avances-pyrece-wsfev1-varias-mejoras.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/8639505344015594733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/8639505344015594733'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2011/06/avances-pyrece-wsfev1-varias-mejoras.html' title='Avances PyRece: WSFEv1, varias mejoras (XML/TXT/DBF/JSON) y rediseño'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-7568618235105572100</id><published>2011-02-15T21:34:00.002-03:00</published><updated>2011-02-17T10:18:35.992-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Novedades PyAfipWs -Factura Electrónica- (instalador nsis, pythoncom, soap)</title><content type='html'>Recientemente liberé una nueva actualización de la biblioteca PyAfipWs, con varias mejoras:&lt;br /&gt;&lt;a href="http://www.pyafipws.com.ar/anuncios/nuevoinstalador106ayejemplosparawsfev1"&gt;http://www.pyafipws.com.ar/anuncios/nuevoinstalador106ayejemplosparawsfev1&lt;/a&gt;&lt;br /&gt;A continuación se detallan los temas técnicos:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Extension a py2exe para generar un instalador NSIS:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Inicialmente usaba un .BAT para generar el instalador (7-zip autoextraible), para simplificar y mejorar el proceso (detectar archivos en uso, desinstalar copia previa, mostrar licencia, elegir directorio, internacionalización), desarrollé nsis.py, una extensión para py2exe, que agregando dos lineas a un setup.py crea un paquete unico con todo incluido, usando&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;Nullsoft Scriptable Install System&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;from nsis import build_installer&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;setup( &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;cmdclass = {"py2exe": build_installer}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Más info en:&lt;/i&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pyafipws/source/browse/setup_wsfev1.py"&gt;http://code.google.com/p/pyafipws/source/browse/setup_wsfev1.py&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pyafipws/source/browse/nsis.py"&gt;http://code.google.com/p/pyafipws/source/browse/nsis.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El código está adaptado de una ejemplo de py2exe para Inno Setup.&lt;span class="Apple-style-span" style="font-family: Arial, 'Lucida Grande', sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;PythonCOM y la ruta de instalación&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para poder acceder a archivos locales en un ambiente empaquetado con py2exe, en general es trivial salvo que el script sea una DLL, ya que el interprete Python se "embebe" dentro del programa&amp;nbsp;anfitrión, y los métodos estándard para determinar donde está ubicado el script fallan.&lt;br /&gt;La solución mas simple fue usar:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;sys.executable&lt;/span&gt; para cuando el script es un .EXE&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;win32api.GetModuleFileName(sys.frozendllhandle)&lt;/span&gt; para cuando el script es un .DLL&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;__file__&lt;/span&gt; cuando se ejecuta directamente el .PY&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;Más info en:&lt;/i&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pyafipws/source/browse/wsfev1.py#129"&gt;http://code.google.com/p/pyafipws/source/browse/wsfev1.py#129&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Type Library y PythonCOM:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Algunos lenguajes de tipado estático (C#, versiones de Cobol) necesitan para las interfaces COM una librería de tipos (mejor conocidas como .TLB) para referenciar y determinar los métodos, parámetros y valores devueltos, ya que Python es un lenguaje dinámico que no ofrece dicha información.&lt;br /&gt;Para mi sorpresa, las implementaciones en lenguajes de tipado estático tampoco parecen ofrecerla, y es necesario en todos los casos usar un compilador de un lenguaje especial de MS  (IDL):&lt;br /&gt;&lt;a href="http://code.google.com/p/pyafipws/source/browse/pyafipws.idl"&gt;http://code.google.com/p/pyafipws/source/browse/pyafipws.idl&lt;/a&gt;&lt;br /&gt;Para que lo reconozca hay que agregar al objeto python los atributos &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_typelib_guid_, _typelib_version_, _com_interfaces_ &lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pyafipws/source/browse/pyafipws.py#57"&gt;http://code.google.com/p/pyafipws/source/browse/pyafipws.py#57&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Igualmente todo este tema esta deshabilitado ya que el tipado estático ocasiona más problemas que los que resuelve (sobre todo con el registro, DLL hell, falta de flexibilidad, etc.), y hay métodos alternativos más simples para acceder a PythonCOM desde C# y lenguajes similares.&lt;br /&gt;&lt;br /&gt;Mi agradecimiento a&amp;nbsp;Mark Hammond (el creador de python-win32) por señalar al ejemplo&amp;nbsp;"pippo" en el directorio win32com\test, como muestra de una&amp;nbsp;asociación entre un objeto Python COM y su TLB.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Mejorando la performance SOAP WSDL:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;El protocolo SOAP es complejo, y analizar el XML de la descripción de un webservice (WSDL) para poder comunicarse con el, es un proceso un poco costoso.&lt;br /&gt;Gracias a Python la solución se simplificó bastante, ya que permite guardar y recuperar las estructuras de datos ya procesadas, sin necesidad de artefactos o código generado como en otros lenguajes (.NET, Java, etc.):&lt;br /&gt;&lt;a href="http://code.google.com/p/pysimplesoap/source/browse/pysimplesoap/client.py#244"&gt;http://code.google.com/p/pysimplesoap/source/browse/pysimplesoap/client.py#244&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Con el módulo cPickle de la librería estándar (implementado en C) se mejoro el tiempo para cargar un WSDL de 0.4 segundos a aproximadamente a 0.001 segundos, ~ 400 veces más rápido. Con pickle nativo (implementado en python) la mejora era un poco menos significativa (~ 40 veces más rápido).&lt;br /&gt;Los test fueron realizados en una netbook para un webservice medianamente complejo, YMMV&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-7568618235105572100?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/7568618235105572100/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2011/02/novedades-pyafipws-factura-electronica.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7568618235105572100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7568618235105572100'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2011/02/novedades-pyafipws-factura-electronica.html' title='Novedades PyAfipWs -Factura Electrónica- (instalador nsis, pythoncom, soap)'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-3152918851737909326</id><published>2010-09-14T06:06:00.001-03:00</published><updated>2010-09-14T07:31:17.857-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>Dos casos de como extender módulos de Linux para temas particulares</title><content type='html'>&lt;h2&gt;Router linux: SyncLink + HDLC + Frame Relay?&lt;/h2&gt;&lt;br /&gt;Alla por el 2000, cuando internet por banda ancha no existia (en gran medida), en el lugar donde trabajaba decidimos contratar una linea dedicada de telefónica.&lt;br /&gt;&lt;br /&gt;Para no comprar un costoso router, la idea era conectarla directamente al servidor linux.&lt;br /&gt;Inicialmente desde la empresa de comunicaciones me habían confirmado que era una linea punto-a-punto común, con protocolo PPP, entonces compramos una placa SyncLink serie sincrónica de alta velocidad para conectar al "modem" de telefonica.&lt;br /&gt;&lt;br /&gt;Lamentablemente no funcionó, ya que en realidad el servicio se conectaba directamente a la red Frame Relay, por lo que la placa por si sola (un puerto serie), no era suficiente (por algún malentendido no nos habían enviado la información técnica correcta... menos mal que no compramos un router más caro).&lt;br /&gt;&lt;br /&gt;Si mal no recuerdo, en su momento, Linux soportaba levantar un canal DLCI de Frame Realy (con hardware especial), pero no había un módulo con la disciplina de linea HDLC para poder hacerlo desde un dispositivo serie.&lt;br /&gt;&lt;br /&gt;Afortunadamente, gracias a que todos los fuentes del sistema operativo estan disponibles, no fue dificil armar un controlador que permitiera establecer este tipo de comunicación (mediante una interfaz de red "especial").&lt;br /&gt;&lt;br /&gt;Subí este driver (es un par de archivos relativamente simples, incluyendo módulo, herramienta en modo usuario, scripts de configuración y compilación), por si alguien les puede ser de utilidad, pero creo que esto ya esta soportado en el kernel (de una manera más integrada):&lt;br /&gt;&lt;a href="https://docs.google.com/leaf?id=0B__UYqYT4LNaMzdiODk0YjUtZWEyYi00ZTliLTgwYTctZTQxNWE5OTMwN2Mx&amp;hl=en"&gt;&lt;br /&gt;hldc_fr_synclink.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mis disculpas por no haber sido más prolijo en su momento y haberlo documentado mejor, incluyendo los créditos completos para los autores originales de cada porción de código tomada como base.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Picotux: "microcomputador" Linux&lt;/h2&gt;&lt;br /&gt;Allá por 2005, para un proyecto de control de acceso, donde se debía controlar varios dispositivos físicos (barreras, molinetes, sensores) y lectoras de tarjetas, experimenté con &lt;a href="http://www.picotux.com/"&gt;Picotux&lt;/a&gt;, una minicomputadora con linux embebido para aplicaciones empotradas.&lt;br /&gt;&lt;br /&gt;Dicho aparato es bastante útil, sobre todo porque la conexión de red, memoria flash y capacidad de procesamiento superan por lejos a los microcontroladores convencionales, con la ventaja de que al tener GNU/Linux no solo se pueden administrar y programar remotamente, sino que también es posible usar muchos paquetes de software libre/código abierto (servidores web, protocolos de red, lenguajes de programación, etc.).&lt;br /&gt;&lt;br /&gt;En mi opinión, la característica más importante fue, nuevamente, poder modificar el kernel de linux (núcleo del sistema operativo), para agregar funcionalidad particular, en este caso, convertir dos puertos "TTL" (GPIO pins) en serie, para poder controlar más de una lectora.&lt;br /&gt;Gracias a tener disponibles las fuentes del sistema operativo y controladores (y varios ejemplos similares), con un poco de esfuerzo fue posible desarrollar un controlador para puertos serie (UART) por software (conocido como bit-banging) a muy bajo costo (comparado a tener que desarrollarlo por hardware).&lt;br /&gt;&lt;br /&gt;También, por si alguien les puede ser de utilidad, subí este driver (un archivo bastante sencillo):&lt;br /&gt;&lt;a href="https://docs.google.com/uc?id=0B__UYqYT4LNaNTc3YWNkMzQtMzM4MC00Zjg1LWI0MzEtMmRkYzQwOWI1M2Ni&amp;export=download&amp;hl=en"&gt;netarm_gpio_swuart.c&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Conclusión&lt;/h2&gt;&lt;br /&gt;Mi idea de comentarlo aquí es solo a modo ilustrativo, de como el linux puede hacer una diferencia cuando tenemos que solucionar cierto tipo de temas particulares.&lt;br /&gt;&lt;br /&gt;Además, creo que es un buen punto para educación, por ejemplo en materias como Sistemas Operativos y Redes, posibilitando profundizar y mejorar los contenidos teoricos y prácticos, de manera simple, con temas concretos usando software libre.&lt;br /&gt;&lt;br /&gt;Si bien con otros sistemas operativos (no abiertos) se puede desarrollar drivers/controladores, en general no se tiene un acceso completo al código fuente para ver como estan hechas soluciones similares o como se debe comportar en determinados casos (o directamente modificar el sistema operativo para cubrir una necesidad particular), lo que puede impactar en el presupuesto y viabilidad de una solución.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-3152918851737909326?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/3152918851737909326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/09/dos-casos-de-como-extender-modulos-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/3152918851737909326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/3152918851737909326'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/09/dos-casos-de-como-extender-modulos-de.html' title='Dos casos de como extender módulos de Linux para temas particulares'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-7685588306451008088</id><published>2010-09-03T00:25:00.000-03:00</published><updated>2010-09-03T12:04:54.865-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2py'/><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Se viene el PyDay 2010 Buenos Aires</title><content type='html'>Este sábado 4 de septiembre es la jornada sobre el lenguaje de programación Python "PyDay Buenos Aires 2010" organizado por &lt;a href="http://www.python.org.ar"&gt;PyAr&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pyday.com.ar/"&gt;http://www.pyday.com.ar/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre varias charlas agendadas estaré presentando &lt;a href="http://www.web2py.com.ar"&gt;web2py&lt;/a&gt; (una herramienta para desarrollo web  simple y poderosa) y seguramente en los espacios abiertos y/o charlas relámpago hablaremos sobre los proyectos &lt;a href="http://www.pyafipws.com.ar"&gt;PyAfipWs&lt;/a&gt; (factura electrónica libre), &lt;a href="http://pysimplesoap.googlecode.com/"&gt;PySimpleSOAP&lt;/a&gt; (webservices), &lt;a href="http://pyfpdf.googlecode.com/"&gt;PyFPDF&lt;/a&gt;, &lt;a href="http://code.google.com/p/gestionlibre/"&gt;Gestión Libre&lt;/a&gt;, y demás temas generados desde nuestro emprendimiento &lt;a href="http://www.sistemasagiles.com.ar"&gt;"Sistemas Ágiles"&lt;/a&gt;, sin olvidarnos de &lt;a href="http://www.arpug.com.ar"&gt;PostgreSQL&lt;/a&gt; y su nueva versión 9.0!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-7685588306451008088?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/7685588306451008088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/09/se-viene-el-pyday-2010-buenos-aires.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7685588306451008088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7685588306451008088'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/09/se-viene-el-pyday-2010-buenos-aires.html' title='Se viene el PyDay 2010 Buenos Aires'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-771854748109732272</id><published>2010-08-11T12:51:00.000-03:00</published><updated>2010-08-11T12:51:41.393-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Restaurando un GPS chino con software libre</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Hace un tiempo me llegó un GPS "chino"&amp;nbsp;(Viutech, hay otras marcas porque son genéricos, internamente vienen con WindowsCE).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Traen un software de navegación LogicGear o Igo8 (no Garmin) y una aplicación multimedia para reproducir musica, video y documentos.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Todo bien, lastima que es bastante frágil, y cada tanto&amp;nbsp;la memoria flash interna (1GB)&amp;nbsp;se corrompe (dañandose los archivos y no pudiendo entrar), por lo que el software de navegación deja de funcionar.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;A tal punto se daño que&amp;nbsp;aparecían&amp;nbsp;archivos y directorios&amp;nbsp;estraños, del tipo "ñ}çávèv" que ni siquiera se podían borrar con el explorador desde la PC, ocupando todo el disco sin dejar espacio disponible.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;La única solución que encontré fue formatear la memoria interna (ADVERTENCIA: esto puede incapacitar permanentemente el aparato, usar con mucho cuidado bajo su propia responsabilidad)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;La buena noticia es que hay herramientas avanzadas de software libre para poder manipular estos dispostivos de "bolsillo": synce y compañía (y en Ubuntu&amp;nbsp;están&amp;nbsp;muy bien soportados).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Para ello hay que agregar como orígen de Software&amp;nbsp;http://ppa.launchpad.net/synce/ubuntu y descargar&amp;nbsp;los siguientes paquetes:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;synce-hal&lt;/li&gt;&lt;li&gt;&amp;nbsp;synce-gvfs y gnome-vfs (para explorar los archivos)&lt;/li&gt;&lt;li&gt;&amp;nbsp;synce-trayicon (para poder montar facilmente el dispositivo)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Luego, por línea de comando, una vez conectado el aparato, ejecutar la herramienta para correr programas (en este caso, el explorador)&amp;nbsp;:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;synce-prun explorer&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Con esto se abrirá el explorador en el aparato, donde podemos ir al "Panel de Control", "Storage Mananger", y ahí desmontar y/o formatear la partición (PELIGRO: seguramente tiene varias particiones y dispositivos, un error en este punto&amp;nbsp;puede incapacitar permanentemente el aparato, usar con mucho cuidado bajo su propia responsabilidad)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Una vez formateada, al reiniciar el aparato se debería reestablecer la memoria interna sin datos, y en ese caso es posible volver a restaurar los archivos originales. &amp;nbsp;Para ello se puede usar synce-pcp o el navegador visual Nautilus (desde el SynCe Tray Icon, click derecho, WinCe, Explore with Filemanager)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-771854748109732272?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/771854748109732272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/08/restaurando-un-gps-chino-con-software.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/771854748109732272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/771854748109732272'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/08/restaurando-un-gps-chino-con-software.html' title='Restaurando un GPS chino con software libre'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-5104656483908593967</id><published>2010-08-06T17:17:00.000-03:00</published><updated>2010-08-06T17:17:42.151-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PySimpleSOAP e integración con web2py</title><content type='html'>&lt;a href="http://code.google.com/p/pysimplesoap"&gt;PySimpleSoap&lt;/a&gt; es una librería que desarrollamos inicialmente para comunicarse con los servicios web SOAP de Factura Electrónica de AFIP, a la que luego hice varias mejoras generales (desprendiéndola&amp;nbsp;del proyecto original&amp;nbsp;&lt;a href="http://www.pyafipws.com.ar/"&gt;PyAfipWs&lt;/a&gt;), incluyendo:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Un despachador para construir servidores (similar a xmlrpclib)&lt;/li&gt;&lt;li&gt;Soporte para WSDL: instrospección y generación dinámica&lt;/li&gt;&lt;li&gt;Serialización y desserialización automática, con una representación de datos simple basada en diccionarios Python&lt;/li&gt;&lt;li&gt;Interoperabilidad con .NET, Java Axis y JBoss WS, probado con SoapUi y .Net Web Services Studio, cumpliendo con los&amp;nbsp;estándares&amp;nbsp;WS-I&lt;/li&gt;&lt;li&gt;Capacidad de realizar pedidos y respuestas crudas -sin procesar- (útiles&amp;nbsp;para tipos de datos genéricos xsd:anyType u operaciones avanzadas)&lt;/li&gt;&lt;li&gt;Documentación WIKI, incluyendo ejemplos WSDL, pruebas básicas de compatibilidad y rendimiento&lt;/li&gt;&lt;li&gt;Limpieza y estabilización de la API (incluyendo mejoras a SimpleXMLElement, una forma fácil y rápida&amp;nbsp;orientada a objetos&amp;nbsp;de manipular XML)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;A diferencia de otras soluciones, nuestro acercamiento es simple e intuitivo, no requiere complicadas definiciones XML o código autogenerado, flexibilizando el desarrollo rápido de webservices con el dinamismo de Python.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Desde la reciente versión 1.82.1, la integramos con &lt;a href="http://www.web2py.com.ar/"&gt;web2py&lt;/a&gt;, lo que lo convierte en una plataforma con soporte completo para exponer y consumir servicios web, complementando la infraestructura previa de json y xml_rpc, con un enfoque simple similar.&lt;br /&gt;&lt;br /&gt;Esta disponible un servicio online para pruebas,&amp;nbsp;con una página que contiene la descripción y mensajes de ejemplo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.web2py.com.ar/webservices/sample/call/soap?WSDL"&gt;http://www.web2py.com.ar/webservices/sample/call/soap?WSDL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.web2py.com.ar/webservices/sample/call/soap"&gt;http://www.web2py.com.ar/webservices/sample/call/soap&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Los comentarios son bienvenidos, sobre todo reportes o casos de prueba, ejemplos, colaboración con otras librarías para mejorar la interoperabilidad, etc.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-5104656483908593967?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/5104656483908593967/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/08/pysimplesoap-e-integracion-con-web2py.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/5104656483908593967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/5104656483908593967'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/08/pysimplesoap-e-integracion-con-web2py.html' title='PySimpleSOAP e integración con web2py'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-5873883183323186698</id><published>2010-05-29T17:09:00.000-03:00</published><updated>2010-05-29T17:17:32.677-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='pyrece'/><title type='text'>Curso de Factura Electrónica y Software Libre</title><content type='html'>Esta abierta la inscripción para la nueva edición del curso sobre las últimas novedades de Factura Electrónica y Servicios web AFIP, relacionado con la interfaz PyAfipWs de Software Libre hecha en Python:&lt;br /&gt;&lt;br /&gt;Curso Facturación Electrónica y Software Libre&lt;br /&gt;Fecha: Viernes 25 de Junio de 2010&lt;br /&gt;Horario: 18 a 20 hs&lt;br /&gt;Lugar: AUBA - Club de Programadores Asociación Civil&lt;br /&gt;Dirección: Auditorio Congreso - Entre Ríos 166 - C.A.B.A.&lt;br /&gt;&lt;br /&gt;El temario incluye una introducción a factura electrónica nacional original (WSFE), y los nuevos web services de bienes de capital (WSBFE), seguros de caución (WSSEG), factura electrónica de exportación (WSFEX).&lt;br /&gt;También comentaremos sobre temas relacionados, como ser el Código de Trazabilidad de Granos -Carta de Porte- (WSCTG), depositario fiel (wDigDepFiel) y Remito Electrónico ARBA (COT).&lt;br /&gt;&lt;br /&gt;A su vez, presentaremos el aplicativo PyRece (simil RECE - SIAP) libre y gratuito para generar y autorizar facturas electrónicas,&lt;br /&gt;entre otros proyectos relacionados.&lt;br /&gt;&lt;br /&gt;La entrada es libre y gratuita, los interesados pueden consultar los detalles e inscribirse en:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=600"&gt;http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=600&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Más información:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pyafipws.com.ar/"&gt;http://www.pyafipws.com.ar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se agradece difusión,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-5873883183323186698?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/5873883183323186698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/05/esta-abierta-la-inscripcion-para-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/5873883183323186698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/5873883183323186698'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/05/esta-abierta-la-inscripcion-para-la.html' title='Curso de Factura Electrónica y Software Libre'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-49630834229584700</id><published>2010-05-02T15:58:00.000-03:00</published><updated>2010-05-02T22:15:08.766-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2py'/><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>PyDay 2010 Rafaela, web2py y más</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Está abierta la inscripción para participar de PyDay Rafaela 2010, la&amp;nbsp;primer jornada sobre el lenguaje de programación Python en Rafaela&amp;nbsp;(Santa Fé, Argentina), &amp;nbsp;a realizarse el día 8 de mayo en la sede de la&lt;br /&gt;Universidad Católica de Santiago del Estero, Departamento Académico&amp;nbsp;Rafaela, ubicada en Hipólito Irigoyen 1502, organizado por PyAr:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Más información en:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://www.pyday.com.ar/"&gt;www.pyday.com.ar&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Hay varias charlas agendadas, entre ellas daré una charla de&amp;nbsp;&lt;a href="http://www.web2py.com.ar/"&gt;web2py&lt;/a&gt; y seguramente&amp;nbsp;en las charlas relámpago&amp;nbsp;comentaré sobre los proyectos&amp;nbsp;&lt;a href="http://www.pyafipws.com.ar/"&gt;PyAfipWs&lt;/a&gt;&amp;nbsp;(factura electrónica libre),&amp;nbsp;&lt;a href="http://www.gestionlibre.com.ar/"&gt;Gestión Libre&lt;/a&gt;&amp;nbsp;y/o nuestro emprendimiento &lt;a href="http://www.sistemasagiles.com.ar/"&gt;Sistemas Ágiles&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-49630834229584700?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/49630834229584700/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/05/pyday-2010-rafaela-web2py-y-mas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/49630834229584700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/49630834229584700'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/05/pyday-2010-rafaela-web2py-y-mas.html' title='PyDay 2010 Rafaela, web2py y más'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-6469521905433954284</id><published>2010-04-09T01:45:00.000-03:00</published><updated>2010-04-09T01:45:53.161-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Abierta la inscripción a FLISOL 2010 en González Catán</title><content type='html'>FLISOL, el Festival de Instalación de Software Libre que reúne&amp;nbsp;a toda Latinoamérica, estará presente en&amp;nbsp;González Catán el sábado 24/04/2010&lt;br /&gt;Podés traer tu computadora y te ayudamos a&amp;nbsp;instalar programas libres, que podés copiar, estudiar, corregir,&amp;nbsp;modificar, compartir y seguir copiando.&lt;br /&gt;Además: charlas informativas y demos para que conozcas&amp;nbsp;más y disfrutes mejor las ventajas del Software Libre.&lt;br /&gt;La entrada es libre y gratuita, sólo necesitamos que te&amp;nbsp;inscribas previamente por nuestra web:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.institutopascal.edu.ar/flisol2010"&gt;http://www.institutopascal.edu.ar/flisol2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Participan integrantes de las siguientes comunidades locales, quienes estarán a cargo de las instalaciones, charlas y demostraciones:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sistemas Operativos: &lt;a href="http://www.ubuntu.org.ar/"&gt;Ubuntu&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.archlinux.org/"&gt;ArchLinux&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.aosug.com.ar/"&gt;OpenSolaris&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Base de datos &lt;a href="http://www.arpug.com.ar/"&gt;PostgreSQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Lenguaje de Programación &lt;a href="http://www.python.org.ar/"&gt;Python&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-6469521905433954284?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/6469521905433954284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/04/abierta-la-inscripcion-flisol-2010-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/6469521905433954284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/6469521905433954284'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/04/abierta-la-inscripcion-flisol-2010-en.html' title='Abierta la inscripción a FLISOL 2010 en González Catán'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-7858676078140972786</id><published>2010-03-19T01:11:00.000-03:00</published><updated>2010-03-19T01:11:08.801-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2py'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>Clase Abierta: Introducción a Python, PythonCard y Web2Py</title><content type='html'>Invitamos a los interesados en programación, desarrollo de aplicaciones y diseño web a presenciar una clase abierta de la carrera Analista de Sistemas de nuestro instituto, donde analizaremos las virtudes del lenguaje de programación Python, herramienta PythonCard para diseño simple de aplicaciones visuales (GUI)  y Web2Py para diseño ágil de sitios interactivos web 2.0.&lt;br /&gt;&lt;br /&gt;Fecha: Miércoles 31 de Marzo de 2010&lt;br /&gt;Horario: 18:15 a 22:30&lt;br /&gt;Lugar: Instituto Superior Tecnológico Blaise Pascal&lt;br /&gt;Dirección: Puerto Argentino 4238 - González Catán - Buenos Aires - Argentina&lt;br /&gt;Entrada libre y gratuita previa confirmación por email debido a cupos limitados.&lt;br /&gt;&lt;a href="http://www.institutopascal.edu.ar"&gt;http://www.institutopascal.edu.ar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Temario:&lt;br /&gt;&lt;br /&gt;1. Introducción a Python: ¿Que es python?; El Interprete; Estructura Básica; Tipos de datos simples; Tipos de datos compuestos; Control de Flujo; Funciones, Clases y Objetos; Excepciones; Módulos, paquetes y espacios de nombre&lt;br /&gt;2. Introducción a la Biblioteca Estándar: sistema operativo, fecha y hora, expresiones regulares, números decimales, aleatorios, matemática, acceso a sitios web, manejo de email, xml, compresión&lt;br /&gt;3. Interfaces gráficas "visuales" con PythonCard. Similitudes y diferencias con Visual Basic.&lt;br /&gt;4. Desarrollo web 2.0 con web2py. Similitudes y diferencias con PHP. Diseño web HTML/CSS. Interactividad con Ajax (javascript).&lt;br /&gt;&lt;br /&gt;Se agradece difusión.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-7858676078140972786?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/7858676078140972786/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/03/clase-abierta-introduccion-python.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7858676078140972786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7858676078140972786'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/03/clase-abierta-introduccion-python.html' title='Clase Abierta: Introducción a Python, PythonCard y Web2Py'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-1257108851914190110</id><published>2010-02-14T14:17:00.000-03:00</published><updated>2010-02-14T16:45:14.893-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><title type='text'>Factura Electrónica de Exportación y ejemplo soap simple</title><content type='html'>El Web Service de &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronicaExportacion"&gt;Factura Electrónica de Exportación&lt;/a&gt; (WSFEX) es un nuevo servicio web de la AFIP para autorizar facturas electrónicas de comercio exterior (obtener el CAE).&lt;br /&gt;&lt;br /&gt;Para poder usar estos webservices, como se comento en varias oportunidades, desarrollamos interfaces propias hechas en Python debido a la incompatibilidad y complejidad de otras soluciones (.NET, Java, PHP).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A&amp;nbsp;continuación&amp;nbsp;se presenta un ejemplo de cuatro simples pasos,&amp;nbsp;sobre como usar&amp;nbsp;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/SoapClient"&gt;&lt;b&gt;SoapClient&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp;y&amp;nbsp;&lt;/b&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/SimpleXmlElement"&gt;&lt;b&gt;SimpleXmlElement&lt;/b&gt;&lt;/a&gt;&amp;nbsp;para consultar fácilmente los servicios web de AFIP&lt;/b&gt;&lt;b&gt;:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Paso 1:&lt;/b&gt; Importar las clases que necesitamos utilizar de nuestras librerias de XML y SOAP:&lt;br /&gt;&lt;pre&gt;from simplexml import SimpleXMLElement&lt;br /&gt;from soap import SoapClient&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Paso 2:&lt;/b&gt; Revisar el &lt;a href="https://wswhomo.afip.gov.ar/wsfex/service.asmx?WSDL"&gt;wsdl&lt;/a&gt; que describe los servicios y extraer URL, acción y espacio de nombres (buscar atributos location, soapAction -sin la operación-, targetNamespace respectivamente):&lt;br /&gt;&lt;pre&gt;WSFEXURL = "https://wswhomo.afip.gov.ar/wsfex/service.asmx"&lt;br /&gt;SOAP_ACTION = 'http://ar.gov.afip.dif.fex/'&lt;br /&gt;SOAP_NS = "http://ar.gov.afip.dif.bfe/"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Paso 3:&lt;/b&gt;&amp;nbsp;Creamos nuesto cliente SOAP de servicio web:&lt;br /&gt;&lt;pre&gt;client = SoapClient(WSFEXURL,action=SOAP_ACTION, namespace=SOAP_NS, trace=True)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Paso 4:&lt;/b&gt;&amp;nbsp;Llamamos a la función remota, por Ej. &lt;a href="https://wswhomo.afip.gov.ar/wsfex/service.asmx?op=FEXDummy"&gt;FEXDummy&lt;/a&gt; que obtiene el estado de los servidores de la AFIP. Para ello debemos invocar el método "virtual" del objeto client de acuerdo como especifíca el &lt;a href="https://wswhomo.afip.gov.ar/wsfex/service.asmx?WSDL"&gt;wsdl&lt;/a&gt;&amp;nbsp;(se recomienda leer el &lt;a href="https://wswhomo.afip.gov.ar/fiscaldocs/WSFEX/WSFEX%20-%20Manual%20para%20el%20desarrollador.pdf"&gt;manual del desarrollador&lt;/a&gt; que proporciona AFIP ya que el wsdl no es muy intuitivo). Como respuesta nos devuelve un objeto XML al cual podemos acceder directamente por sus atributos:&lt;br /&gt;&lt;pre&gt;response = client.FEXDummy()&lt;br /&gt;result = response.FEXDummyResult&lt;br /&gt;print str(result.AppServer)&lt;br /&gt;print str(result.DbServer)&lt;br /&gt;print str(result.AuthServer)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esto es todo, si funcionan bien nos debería imprimir el estado de los servidores (OK si estan funcionando).&lt;br /&gt;&lt;br /&gt;Notar la simplicidad y dinamismo gracias a Python, sin perder flexibilidad, pudiendo invocar métodos arbitrarios y convertir los tipos de datos según nuestras necesidades.&lt;br /&gt;&lt;br /&gt;En este caso el método del servicio web no recibe parámetros, si los tuviera se pasarían como argumentos por nombre (usando valores simples, diccionarios u objetos) de Python, ej.:&amp;nbsp;&lt;br /&gt;&lt;pre&gt;response = client.FEXGetPARAM_MON(Auth={"Token": token, "Sign": sign, "Cuit":long(cuit)})&lt;br /&gt;&lt;/pre&gt;También puede tomarse como referencia los ejemplos de AFIP hechos en PHP, ya que desarrollamos estas herramientas para que sean similares.&lt;br /&gt;&lt;br /&gt;El código completo para utilizar el servicio web de factura electrónica de exportación puede ser descargado de &lt;a href="http://code.google.com/p/pyafipws/"&gt;google code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para más información y novedades sobre estos temas exite un &lt;a href="http://groups.google.com/group/pyafipws"&gt;grupo de noticia&lt;/a&gt;, el sitio&amp;nbsp;con &lt;a href="http://www.pyafipws.com.ar/"&gt;información general del proyecto&lt;/a&gt;&amp;nbsp;y la páginas&amp;nbsp;sobre &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronica"&gt;factura electrónica&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronicaPython"&gt;información técnica&lt;/a&gt; y la interfaz &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs"&gt;PyAfipWs&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-1257108851914190110?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/1257108851914190110/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/02/factura-electronica-de-exportacion-y.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/1257108851914190110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/1257108851914190110'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/02/factura-electronica-de-exportacion-y.html' title='Factura Electrónica de Exportación y ejemplo soap simple'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-27315664621689660</id><published>2010-02-07T12:53:00.000-03:00</published><updated>2010-02-07T12:53:16.239-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>web2py: el marco de trabajo web impresionante</title><content type='html'>Aprovechando el lanzamiento de la &lt;a href="http://groups.google.com/group/web2py-usuarios"&gt;lista de correo&lt;/a&gt; y &lt;a href="http://www.web2py.com.ar/"&gt;sitio web&lt;/a&gt; para la comunidad en español de &lt;a href="http://www.web2py.com/"&gt;web2py&lt;/a&gt;&amp;nbsp;("el framework web empresarial" que permite el desarrollo rápido de aplicaciones&amp;nbsp;web2.0&amp;nbsp;profesionales), publico esta traducción de una recomendación que hice en &lt;a href="https://www.ohloh.net/p/web2py"&gt;ohloh&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;Habiendo trabajado con jsp, php, turbogears y/o django, &amp;nbsp;cuando conozca web2py no va a querer mirar átras...&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;Web2Py hace al desarrollo web fácil y más eficiente, permite enfocarse en la lógica del negocio y no en temas técnicos triviales o esotéricos.&lt;br /&gt;&lt;br /&gt;Características principales imponentes (por lo menos para mí):&lt;/i&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Instalación muy simple, practicamente sin configuración (tanto de forma independiente y mod_wsgi)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;La capa de abstracción a la base de datos (DAL) permite consultas poderosas sin siquiera una única linea de SQL, y no se necesitan complejas clases del modelo (adiós ORMs...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Intuitivo y con curva de aprendizaje muy baja, ideal para ser enseñado en el aula para niveles principiantes&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Estructura sólida todo-incluido, incluyendo ajax, menús, formularios, caching, GAE, etc. Su diseño limpio y seguro previene los problemas más comunes del desarrollo web.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Verdaderamente pythónico: modelos, vistas y controladores dinámicos, simples y explícitos, con un lenguaje de plantillas programable con python y ayudantes HTML.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Sin complicaciones de línea de comandos, incluso incluye un entorno integrado de desarrollo y herramientas de administración totalmente en línea, con un editor de código y html web, sistema de tickets de error, subida de archivos, etc.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-27315664621689660?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/27315664621689660/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/02/web2py-el-marco-de-trabajo-web.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/27315664621689660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/27315664621689660'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/02/web2py-el-marco-de-trabajo-web.html' title='web2py: el marco de trabajo web impresionante'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-7040231620904214634</id><published>2010-02-05T02:05:00.000-03:00</published><updated>2010-02-05T03:22:03.859-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='educación'/><title type='text'>Orientar al Software Libre la carrera de Analista de Sistemas (proyecto)</title><content type='html'>&lt;div&gt;En el&amp;nbsp;&lt;a href="http://www.institutopascal.edu.ar/"&gt;Instituto Superior Tecnológico Blaise Pascal&lt;/a&gt; (terciario donde trabajo dictando dos materias de la "Tecnicatura Superior en Análisis de Sistemas"), venimos analizando algunas dificultades que se presentan en el desarrollo de la carrera, entre ellas: dispersión de contenidos, problemas para alcanzar los objetivos téoricos y prácticos adecuados, falta de&amp;nbsp;motivación, aislamiento, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Para superar estas dificultades, y teniendo en cuenta el tiempo como un factor limitante (tanto de docentes como de alumnos), una primer medida fue unificar los trabajos prácticos y apoyarlos transversalmente desde distintas materias. Si bien hubo una mejora, también hubo algunas complicaciones. Principalmente, la variedad de proyectos y herramientas fue contraproducente, no alcanzando las horas de clase destinadas a la práctica para abordar correctamente las dificultades planteadas por cada alumno.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Por ello, y para terminar de reforzar los contenidos y superar todas estas dificultades, es donde surge el software libre como solución. Por sus características abiertas y participativas, no solo se unificarían y profundizarían los temas teóricos, generando una continuidad más armoniosa entre las distintas asignaturas (eliminando temas solapados y mejorando el aprovechamiento de los tiempos disponibles), sino que además proveería proyectos concretos y reales para la práctica profesional.&lt;/div&gt;&lt;div&gt;De este modo nació el &lt;a href="http://docs.google.com/View?id=dd9bm82g_428g8zvfvdx"&gt;"Proyecto Curricular Institucional de la Carrera Analista de Sistemas orientado al software libre"&lt;/a&gt;, inicialmente como un conjunto de ideas planteadas en las distintas reuniones entre docentes, que luego organicé en un documento más formal, con su debida justificación, y esperamos terminar de discutir y aplicar para este ciclo lectivo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este proyecto cumple con el plan estudio propuesto por la provincia de Buenos Aires&amp;nbsp;utilizando integramente&amp;nbsp;software libre, y su estructura es similar a los planes que se dictan en universidades&amp;nbsp;nacionales y privadas&amp;nbsp;(en ocasiones también con herramientas libres),&amp;nbsp;aunque la carga horaria y objetivo son sensiblemente diferentes, por ello también la necesidad de optimizar los tiempos y ampliar los horizontes de salida laboral.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Si bien es un proyecto específico para este instituto (ya que tiene en cuenta la situación y contexto local), puede ser aplicable a otras instituciones, ya que se basa en&amp;nbsp;la resolución provincial que regula la tecnicatura, por lo que cada institución podría adaptarlo según sus necesidades específicas con la correspondiente capacitación docente (para ello se está trabajando desde el nuevo programa &lt;a href="http://groups.google.com.ar/group/programa-inti-sol-?pli=1"&gt;INTI-Sol&lt;/a&gt;, desde el taller de Educación y Capacitación)&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: 'Times New Roman'; font-size: medium;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como eje se plantea tres herramientas básicas principales: GNU/Linux como sistema operativo, Python como lenguaje de programación y PostgreSQL como la base de datos. La elección, que responde a varios criterios detallados en el documento, es&amp;nbsp;la que estimamos más adecuada&amp;nbsp;teniendo en cuenta&amp;nbsp;sus características&amp;nbsp;didácticas,&amp;nbsp;nuestros conocimientos como docentes y la posibilidad de capacitación y desarrollo de los contenidos y objetivos de las asignaturas (y de hecho ya se venía trabajando con dicho software satisfactoriamente).&lt;/div&gt;&lt;div&gt;Seguramente otros docentes pueden estimar que para su problemática se ajustan otras&amp;nbsp;herramientas, bienvenidas sean, en mi opinión la diversidad es una ventaja, no un&amp;nbsp;problema. Igualmente se planea usar o estudiar otras alternativas (Windows,&amp;nbsp;PHP, MySQL, OpenOffice Base/Basic simil Access/VB) para que el alumno pueda comparar y elegir libremente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cabe aclarar que además están disponibles herramientas libres para todas las necesidades de la carrera (desde el editor de textos hasta repositorio de código, diagramación, etc.), y de más esta decir que el software libre es maduro, comercialmente viable (usado por las principales empresas y organismos, estatales y privados) y no solo cumple con los contenidos teórico-prácticos sino que&amp;nbsp;también contempla&amp;nbsp;las implicancias éticas de la profesión en el contexto social de nuestro país, y permite al alumno proveer soluciones y servicios diferenciados y competitivos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La idea es que,&amp;nbsp;en la medida de lo posible,&amp;nbsp;todos los materiales (apuntes, trabajos prácticos, etc.) sean libres&amp;nbsp;(licencia GNU&amp;nbsp;Free Documentation License -GFDL- o similar),&amp;nbsp;garantizando para sus contenidos, exactamente los mismos derechos que tienen&amp;nbsp;los usuarios del software libre sobre las aplicaciones.&lt;/div&gt;&lt;div&gt;Además, creo que es fundamental que estos materiales sean generados dentro de la comunidad (ya sea para compartir recursos y unificar criterios entre los distintos docentes, como para favorecer la investigación y actitud autodidacta de los alumnos). En esto vengo trabajando en los sitios de los grupos de usuarios de&amp;nbsp;&lt;a href="http://www.python.org.ar/"&gt;Python&lt;/a&gt; y&amp;nbsp;&lt;a href="http://www.arpug.com.ar/"&gt;PostgreSQL&lt;/a&gt;&amp;nbsp;en Argentina,&amp;nbsp;tratando de retribuir generando materiales (apuntes, tutoriales, presentaciones, traducción de documentación, etc.), ya que creo que un punto&amp;nbsp;esencial&amp;nbsp;para elegir estas herramientas es que existan localmente comunidades fuertes y activas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Desde ya queda abierta la convocatoria para que podamos colaborar&amp;nbsp;entre todos y lograr una enseñanza sustancial y significativa.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Por último, los interesados que deseen revisar el documento de trabajo pueden hacerlo en GoogleDocs:&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?tab=edit&amp;amp;dr=true&amp;amp;id=dd9bm82g_428g8zvfvdx"&gt;http://docs.google.com/Doc?tab=edit&amp;amp;dr=true&amp;amp;id=dd9bm82g_428g8zvfvdx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Última Versión Publicada:&lt;/div&gt;&lt;div&gt;&lt;a href="http://docs.google.com/View?docID=dd9bm82g_428g8zvfvdx&amp;amp;revision=_latest"&gt;http://docs.google.com/View?docID=dd9bm82g_428g8zvfvdx&amp;amp;revision=_latest&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-7040231620904214634?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/7040231620904214634/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2010/02/proyecto-de-orientacion-al-software.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7040231620904214634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/7040231620904214634'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2010/02/proyecto-de-orientacion-al-software.html' title='Orientar al Software Libre la carrera de Analista de Sistemas (proyecto)'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2304908645814887524.post-3490498516819759622</id><published>2009-12-30T17:25:00.000-03:00</published><updated>2009-12-30T19:49:18.172-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyafipws'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sistemas agiles'/><category scheme='http://www.blogger.com/atom/ns#' term='software libre'/><category scheme='http://www.blogger.com/atom/ns#' term='pyrece'/><title type='text'>Actualizaciones Factura Electrónica y Software Libre</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Terminando de actualizar Proyecto PyAfipWs:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Debido a la liberación del aplicativo y otros temas menores estuve modificando el sitio, resumo los cambios:&lt;br /&gt;&lt;br /&gt;Páginas actualizadas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronica"&gt;Página principal&lt;/a&gt;: Preguntas y Respuestas mas frecuentes (incluyendo temas generales  no técnicos y normativa)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronicaPython"&gt;Factura electrónica en python&lt;/a&gt;: actualizado a las últimas versiones, incluyendo herramientas y aplicativos nuevos, subproyectos desarrollados (diseño de facturas por CSV, archivos de ancho fijo)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs"&gt;PyAfipWs&lt;/a&gt; y &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/PyRece"&gt;PyRece:&lt;/a&gt; reordenamiento y canal de soporte por issues de google code&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Nuevas páginas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/OcxFacturaElectronica"&gt;Comparativa OCX y otras soluciones&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Documentación de &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/SimpleXmlElement"&gt;SimpleXmlElement&lt;/a&gt; (menejo simple de xml simil objetos)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Documentación de &lt;a href="http://www.sistemasagiles.com.ar/trac/wiki/SoapClient"&gt;SoapClient&lt;/a&gt; (cliente simple y flexible de webservices)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Gracias a Trac por los menues y tabla de contenidos automáticos, y por su facilidad de uso.&lt;br /&gt;&lt;br /&gt;Se agradecerían comentarios, opiniones y cualquier colaboración en general es bienvenida (pruebas, difusión, mejoras, etc.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2304908645814887524-3490498516819759622?l=reingart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reingart.blogspot.com/feeds/3490498516819759622/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reingart.blogspot.com/2009/12/actualizaciones-factura-electronica.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/3490498516819759622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2304908645814887524/posts/default/3490498516819759622'/><link rel='alternate' type='text/html' href='http://reingart.blogspot.com/2009/12/actualizaciones-factura-electronica.html' title='Actualizaciones Factura Electrónica y Software Libre'/><author><name>Mariano Reingart</name><uri>http://www.blogger.com/profile/09760272574200046008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/__G-KfKiayBg/SzvXedBA42I/AAAAAAAAABk/SASU-YdjcBU/s1600-R/0527dc2.jpg'/></author><thr:total>3</thr:total></entry></feed>
