<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>A-Qute blog (grep)</title><link>http://blog.aquinzi.com/</link><description></description><atom:link href="http://blog.aquinzi.com/es/tags/grep.xml" type="application/rss+xml" rel="self"></atom:link><language>es</language><lastBuildDate>Tue, 09 Feb 2016 11:17:28 GMT</lastBuildDate><generator>nikola</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>proDO: super simple bug/issue tracker</title><link>http://blog.aquinzi.com/./es/prodo/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.aquinzi.com/./es/prodo/#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.aquinzi.com/./es/prodo/#script"&gt;Say hi to proDO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="admonition attention"&gt;
&lt;p class="admonition-title"&gt;Atención&lt;/p&gt;
&lt;p&gt;Si no te interesa la historia del por qué se escribió el script y/o no queres saber sobre programitas, adelantate hasta &lt;a href="http://blog.aquinzi.com/./es/prodo/#script"&gt;acá&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Cuando desarrollas o escribis código (o palabras, por qué no) necesitas algún tipo de bug/issue tracker. Eso es normal para proyectos grandes o con varias personas, pero al ser un solo individuo o el proyecto es chico, todas las opciones son como mucho.&lt;/p&gt;
&lt;p&gt;A algunos no les importa e instalan grandes bug trackers, otros usan algo mas simple. Otros vamos por la old school y escribimos en papel. Otras escribimos en un .txt, que puede ser un simple archivo o con esos ToDo.txt/&lt;a href="http://taskwarrior.org/"&gt;taskwarrior&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Si el proyecto es medianamente grande (más grande que un mero script), escribo en papel. Si es algo simple/un script, anoto las cosas dentro del archivo, como varias personas.&lt;/p&gt;
&lt;p&gt;El problema que tengo es que me gusta listar todas las cositas esas con el numero de linea y/o click que me lleve a tal. No todos los editores lo hacen por default (creo que las grandes IDEs), seguro hay un plugin que ni ganas de configurar. Se puede hacer una búsqueda, que es lo mas cercano a lo que quiero.&lt;/p&gt;
&lt;p&gt;Uso dos editores de texto dependiendo del trabajo que tengo que hacer: &lt;a href="http://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt; para trabajos "grandes" (por alguna razón) y &lt;a href="http://www.notepad-plus-plus.org/"&gt;Notepad++&lt;/a&gt;. En ambos se puede hacer búsquedas por proyecto/archivos abiertos, la diferencia es que en Sublime Text te abre una pestañita de miercoles con los resultados (not fun), y Notepad++ te los muestra en una ventanita dockeable (good):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de búsqueda en Notepad++" src="http://blog.aquinzi.com/images/2013/search_notepadpp.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Qué no me gusta de esto? La forma en que te lo muestra&lt;sup id="fnref:2"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:2" rel="footnote"&gt;2&lt;/a&gt;&lt;/sup&gt; y el hecho que Notepad++ tiene otro tipo de regex que, según expertos, es mas pobre.&lt;/p&gt;
&lt;p&gt;Lo más lógico es usar grep. Si usas Linux, ya viene por defecto, sino con algo como &lt;a href="http://cygwin.com/"&gt;Cygwin&lt;/a&gt; en Windows (u otras variantes). Hasta le podes poner colorcitos pero solo a una cosa (el string encontrado). No está mal tampoco pero no es muy limpio&lt;sup id="fnref:6"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:6" rel="footnote"&gt;3&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de búsqueda con grep" src="http://blog.aquinzi.com/images/2013/search_grep.png"&gt;&lt;/p&gt;
&lt;p&gt;Si no te gustan las terminales/lineas de comandos pero queres usar grep, hay varios programitas que te dejan (hacer una especie de) grep&lt;sup id="fnref:3"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:3" rel="footnote"&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Tenes &lt;a href="http://www.mythicsoft.com/agentransack/"&gt;Agent Ransack&lt;/a&gt;, donde quedaría asi:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de busqueda con Agent Ransack" src="http://blog.aquinzi.com/images/2013/search_agent.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Para este tipo de trabajos no me gusta por que tengo que clickear archivo por archivo (not fun).&lt;/p&gt;
&lt;p&gt;Y &lt;a href="http://stefanstools.sourceforge.net/grepWin.html"&gt;grepWin&lt;/a&gt;, donde hay que tener cuidado de clickear solo en "Search" y seleccionar la opción de "Content"&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de búsqueda de grepWin" src="http://blog.aquinzi.com/images/2013/search_grepWin.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Este no estaba tan mal, pero eso de abrir programa &amp;gt; rellenar datos no me convencia mucho. Por lineas de comando solo podes poner el path y qué buscar (que no esta mal) pero quiero que, por lo menos, esté seleccionado el "Content".&lt;/p&gt;
&lt;h2 id="script"&gt;Say hi to proDO&lt;/h2&gt;
&lt;p&gt;Como estoy aprendiendo Python y mas que nada lo estoy usando para hacer varios scripts&lt;sup id="fnref:4"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:4" rel="footnote"&gt;5&lt;/a&gt;&lt;/sup&gt; y reemplazar/dejar de dar vueltas con los batch, me decidí a hacer el mío.&lt;/p&gt;
&lt;p&gt;Con los ejemplos anteriores, queda asi:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de búsqueda con proDO" src="http://blog.aquinzi.com/images/2013/search_nocolor.png"&gt;&lt;/p&gt;
&lt;p&gt;Pero si tenes &lt;a href="https://pypi.python.org/pypi/colorama"&gt;colorama&lt;/a&gt; instalado queda asi (con mas onda):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resultados de búsqueda con proDO con color" src="http://blog.aquinzi.com/images/2013/search_color.png"&gt;&lt;/p&gt;
&lt;p&gt;Datos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo busca las palabras TODO y FIXME (es case insensitive: también podes poner ToDo, todo, tODO, etc)&lt;/li&gt;
&lt;li&gt;Por default, al correr el programa te lista los archivos desde donde corre el script &lt;sup id="fnref:5"&gt;&lt;a class="footnote-ref" href="http://blog.aquinzi.com/./es/prodo/#fn:5" rel="footnote"&gt;6&lt;/a&gt;&lt;/sup&gt;, ignorando los &lt;code&gt;.bak&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Se puede especificar la ruta a buscar, corriendo &lt;code&gt;proDO.py -s/-source [rutita linda]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Se puede eliminar las lineas con: &lt;code&gt;proDO.py del/d [archivo] [linea]&lt;/code&gt; (automaticamente hace un backup (&lt;code&gt;.bak&lt;/code&gt;) del archivo por si se pone loca)&lt;/li&gt;
&lt;li&gt;Si necesitas ejemplos de lo de arriba o queres mirar qué linda hice la ayuda: &lt;code&gt;proDO.py -h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si no queres escribir &lt;code&gt;proDO.py&lt;/code&gt; (la extensión es importante en Windows), podes crear un "wrapper batch": en (ejemplo) proDO.bat poner: &lt;code&gt;proDO.py %*&lt;/code&gt;. Guardás y listo, ya lo podes llamar como &lt;code&gt;proDO&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Decarga y más información en la &lt;a href="http://aquinzi.com/es/projects/prodo.php"&gt;página de proDO&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Que esta lindo, es para linux o con Windows + &lt;a href="http://cygwin.com/"&gt;Cygwin&lt;/a&gt;, pero es mucho trabajo para configurarlo para esto. &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Mentira, me acordé después de hacer el script. Lo testeé y no anda mal. Sólo que no se puede buscar por proyectos, asi que hay que escribir el path en la búsqueda o abrir todos los archivos. &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;Se puede limpiar/formatear con awk, pero tuve problemas con Cygwin que no traía el ejecutable para la herramienta (!) &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:6" rev="footnote" title="Jump back to footnote 3 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;No sé exactamente la diferencia entre grep y buscar dentro de los archivos (con regex), yo lo uso intercambiablemente. &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:3" rev="footnote" title="Jump back to footnote 4 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;por que se me complicó con eso de buscar una IDE para la parte gráfica. &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:4" rev="footnote" title="Jump back to footnote 5 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;en Linux es más fácil (por lo menos en xfce): &lt;kbd&gt;botón derecho &amp;gt; terminal&lt;/kbd&gt;. En Windows tenes que apretar &lt;kbd&gt;shift + botón derecho&lt;/kbd&gt;. &lt;a class="footnote-backref" href="http://blog.aquinzi.com/./es/prodo/#fnref:5" rev="footnote" title="Jump back to footnote 6 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>code</category><category>python</category><category>grep</category><guid>http://blog.aquinzi.com/./es/prodo/</guid><pubDate>Fri, 26 Jul 2013 00:00:00 GMT</pubDate></item></channel></rss>