<?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:blogger='http://schemas.google.com/blogger/2008' 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-1437970354124720603</id><updated>2026-05-22T23:15:22.559-03:00</updated><category term="python"/><category term="ruby"/><category term="javascript"/><category term="linux"/><category term="ubuntu"/><category term="sandro"/><category term="lubuntu"/><category term="java"/><category term="humor"/><category term="ssh"/><category term="cómo"/><category term="tango"/><category term="rubygame"/><category term="eclipse"/><category term="go"/><category term="bash"/><category term="d3"/><category term="d3js"/><category term="seguridad"/><category term="rapidito"/><category term="aws"/><category term="baduk"/><category term="euler"/><category term="git"/><category term="política"/><category term="regexp"/><category term="video"/><category term="weiqi"/><category term="x11"/><category term="fix"/><category term="hack"/><category term="python3"/><category term="rhino"/><category term="slowbreak"/><category term="windows"/><category term="charla"/><category term="passwords"/><category term="ping"/><category term="pingmon"/><category term="rant"/><category term="vmware"/><category term="boto"/><category term="ec2"/><category term="facebook"/><category term="hacking"/><category term="latex"/><category term="ligamento"/><category term="música"/><category term="notación"/><category term="openssl"/><category term="paper"/><category term="php"/><category term="pydev"/><category term="requirejs"/><category term="speedy"/><category term="ssl"/><category term="svn"/><category term="visualización"/><category term="x"/><category term="blogger"/><category term="bouncer"/><category term="cerveza"/><category term="commonjs"/><category term="covid-19"/><category term="criptografía"/><category term="devop"/><category term="elb"/><category term="fibertel"/><category term="firefox"/><category term="google"/><category term="hellman tables"/><category term="html"/><category term="linux mint"/><category term="milonga"/><category term="monkeypatch"/><category term="nicolás"/><category term="oauth2"/><category term="openssh"/><category term="operación"/><category term="pir"/><category term="rainbow tables"/><category term="rake"/><category term="reflexión"/><category term="rsync"/><category term="servlet"/><category term="solidity"/><category term="tcp/ip"/><category term="telefónica"/><category term="tokenizer"/><category term="virtualbox"/><category term="vscode"/><category term="web"/><category term="web2py"/><category term="wifi"/><category term="windows 7"/><category term="windows7"/><category term="PKI"/><category term="advisory"/><category term="alphago"/><category term="android"/><category term="appengine"/><category term="arnet"/><category term="baile"/><category term="balancer"/><category term="c++"/><category term="centos"/><category term="checklist"/><category term="cloud"/><category term="cloud computing"/><category term="cmd"/><category term="dal"/><category term="debian"/><category term="derechos"/><category term="dns"/><category term="docker"/><category term="domino"/><category term="erlang"/><category term="github"/><category term="google client api"/><category term="gpu"/><category term="gup"/><category term="hg"/><category term="hij@s"/><category term="https"/><category term="ingenio"/><category term="jdbc"/><category term="json"/><category term="justicia"/><category term="kernel"/><category term="leela"/><category term="lenguajes"/><category term="logo"/><category term="lxde"/><category term="mercurial"/><category term="nat"/><category term="oo"/><category term="pandemia"/><category term="port_forwarding"/><category term="pseudociencia"/><category term="rds"/><category term="redhat"/><category term="retroplagio"/><category term="scl"/><category term="screen"/><category term="shell"/><category term="sinatra"/><category term="snap"/><category term="sql"/><category term="svg"/><category term="tda"/><category term="tenencia"/><category term="tito"/><category term="touchpad"/><category term="tutorial"/><category term="usb"/><category term="visio"/><category term="xorg"/><category term="xss"/><category term="10pines"/><category term="3g"/><category term="DOS"/><category term="Visual Studio"/><category term="abstracto"/><category term="acm"/><category term="actuación"/><category term="agradecimiento"/><category term="agua"/><category term="alfredo"/><category term="allowlist"/><category term="amd"/><category term="analytics"/><category term="angina"/><category term="animales"/><category term="aptana"/><category term="aptana_studio"/><category term="arte"/><category term="atlantic city"/><category term="auditoría"/><category term="aureliax"/><category term="autocomplete"/><category term="autossh"/><category term="basic authentication"/><category term="benedicto xvi"/><category term="berenjena"/><category term="biblia"/><category term="bibtex"/><category term="binance"/><category term="bindiff"/><category term="binding"/><category term="bitbucket"/><category term="bizarro"/><category term="blog"/><category term="blu life one x3"/><category term="bug"/><category term="c"/><category term="c22"/><category term="ca"/><category term="calefón"/><category term="canción"/><category term="canyengue"/><category term="cargo"/><category term="caricaturas"/><category term="carta natal"/><category term="catarsis"/><category term="celular"/><category term="cgoban"/><category term="chiste"/><category term="chromium"/><category term="ciencia"/><category term="clima"/><category term="cocina"/><category term="command_injection"/><category term="conducto"/><category term="conferencia"/><category term="consola"/><category term="consorcio"/><category term="constitución"/><category term="coreano"/><category term="corona"/><category term="corto"/><category term="cpython"/><category term="cs"/><category term="cscope"/><category term="csrf"/><category term="css"/><category term="csv"/><category term="ctypes"/><category term="cuarentena"/><category term="cumpleaños"/><category term="cursor"/><category term="cursor.com"/><category term="dengue"/><category term="dentista"/><category term="dhclient.conf"/><category term="dhcp"/><category term="dia"/><category term="diarrea"/><category term="dibujo"/><category term="disco rígido"/><category term="discriminación"/><category term="dmesg"/><category term="dom"/><category term="drivers"/><category term="dual mode"/><category term="dubai"/><category term="e4x"/><category term="easy"/><category term="efi"/><category term="efímero"/><category term="electrum"/><category term="epidemia"/><category term="error"/><category term="errores"/><category term="ethereum"/><category term="evm"/><category term="extensiones"/><category term="fabric"/><category term="fiebre"/><category term="filadelfia"/><category term="filesystem"/><category term="financiación"/><category term="find"/><category term="firewall"/><category term="flask"/><category term="foreignobject"/><category term="forwarding"/><category term="gh"/><category term="gimnasio"/><category term="gis"/><category term="gitignore"/><category term="glorieta"/><category term="gnome-terminal"/><category term="golang"/><category term="google code"/><category term="gpf"/><category term="gracioso"/><category term="graphdb"/><category term="gsm"/><category term="gtk"/><category term="guest-additions"/><category term="guión"/><category term="género"/><category term="hackaton"/><category term="hacklu"/><category term="hardhat"/><category term="haskell"/><category term="heic"/><category term="hgignore"/><category term="hijos"/><category term="history channel"/><category term="homeopatía"/><category term="horóscopo"/><category term="hosting"/><category term="http_proxy"/><category term="i386"/><category term="iam"/><category term="ideas"/><category term="ignore"/><category term="imei"/><category term="impacket"/><category term="inauguración"/><category term="indent"/><category term="iptables"/><category term="jetty"/><category term="jmtpfs"/><category term="jpeg"/><category term="jpg"/><category term="jquery"/><category term="juego"/><category term="keepass2"/><category term="keras"/><category term="kingston"/><category term="lan"/><category term="libertad"/><category term="licenciamiento"/><category term="linux x64"/><category term="lisp"/><category term="literatura"/><category term="lizzie"/><category term="locale"/><category term="locals"/><category term="lsusb"/><category term="lsyncd"/><category term="lua"/><category term="lxqt"/><category term="lyx"/><category term="mac"/><category term="mambru"/><category term="markaby"/><category term="marketing"/><category term="maschefacts"/><category term="mc"/><category term="memtest"/><category term="midi"/><category term="migracion"/><category term="minifilter"/><category term="modem 3g"/><category term="modules"/><category term="mongo"/><category term="mongodb"/><category term="mono"/><category term="monólogo"/><category term="mosh"/><category term="mousehole"/><category term="mtu"/><category term="musica"/><category term="mysql"/><category term="name_mangling"/><category term="natnetwork"/><category term="ncdu"/><category term="ndvi"/><category term="neo4j"/><category term="neurociencia"/><category term="new york"/><category term="nvidia"/><category term="ocd"/><category term="oo design"/><category term="oracle"/><category term="overflow"/><category term="paloma"/><category term="papa"/><category term="patreon"/><category term="paver"/><category term="pdflatex"/><category term="peano"/><category term="pentest"/><category term="perl"/><category term="pesas"/><category term="phishing"/><category term="pipe"/><category term="placebo"/><category term="portugués"/><category term="postgis"/><category term="privado"/><category term="proceedings"/><category term="protagónico"/><category term="proxy"/><category term="pty"/><category term="pugliese"/><category term="pulseaudio"/><category term="pypi"/><category term="pyspark"/><category term="pyzmq"/><category term="público"/><category term="rack-test"/><category term="rap"/><category term="raphaeljs"/><category term="ratzinger"/><category term="receta"/><category term="regalo"/><category term="reversing"/><category term="rust"/><category term="rustup"/><category term="s3"/><category term="sadosky"/><category term="sapir-whorf"/><category term="satellite"/><category term="scholar"/><category term="screenshot"/><category term="scrot"/><category term="semicolons"/><category term="server room"/><category term="servers"/><category term="sh"/><category term="sintonizador"/><category term="smart contracts"/><category term="smartphone"/><category term="smn"/><category term="sobrecarga progresiva"/><category term="socket.error"/><category term="soja"/><category term="spark"/><category term="sqlite3"/><category term="ssd"/><category term="ssh-agent"/><category term="ssl.SSLError"/><category term="standup"/><category term="streamming"/><category term="subclipse"/><category term="subversion"/><category term="sudo"/><category term="swt"/><category term="synaptic"/><category term="taleca"/><category term="tasksel"/><category term="tengo"/><category term="tensorflow"/><category term="text"/><category term="titan"/><category term="tofu"/><category term="tornado"/><category term="touchscreen"/><category term="tty"/><category term="tunnelling"/><category term="turbodiff"/><category term="twitter"/><category term="ubuntu-server"/><category term="udev"/><category term="ufw"/><category term="unix"/><category term="usb_modeswitch"/><category term="vals"/><category term="viaje"/><category term="vim"/><category term="virus"/><category term="vlc"/><category term="vmware tools"/><category term="war"/><category term="wave"/><category term="webex"/><category term="wipe"/><category term="wireless"/><category term="word wrap"/><category term="x.org"/><category term="youtube"/><category term="zip"/><category term="zmq"/><category term="zte"/><title type='text'>aurelianito</title><subtitle type='html'>Blog de Aureliano Calvo. &#xa;Aureliano Calvo&#39;s blog.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>378</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-3785944260828489721</id><published>2025-09-24T10:11:00.002-03:00</published><updated>2025-09-24T12:30:01.613-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="allowlist"/><category scheme="http://www.blogger.com/atom/ns#" term="cursor"/><category scheme="http://www.blogger.com/atom/ns#" term="cursor.com"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><title type='text'>Cuál es la allowlist?</title><content type='html'>&lt;p&gt;Desde hace unos meses estoy usando cursor, el IDE, para programar. Como parte de ese uso, cuando hablo con las IAs, las mismas intentan correr comandos. Como es peligroso, uno tiene que andar aprobando cada comando. Pero como es engorroso, es posible whitelistear comandos para que corran sin preguntar (en este momento estoy usando la versión 1.6.45 en mac). El problema es que no pude encontrar en la GUI de cursor como ver/editar dichos comandos. Así que estuve usando el chat de cursor para encontrar los comandos que whitelistié y después de un ratito los encontramos :D.&amp;nbsp;&lt;br /&gt;Para ver los comandos que tengo whitelisteados tengo que correr este comando:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;% sqlite3 -noheader -list &quot;$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb&quot; &quot;SELECT je.value FROM ItemTable AS it, json_each(it.value, &#39;$.composerState.yoloCommandAllowlist&#39;) AS je WHERE it.key=&#39;src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser&#39;;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;diff&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;jq&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;grep&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;head&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;cd&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;git log&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;git diff&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;git show&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;npm audit&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;sed&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;awk&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;cat&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;echo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Seguramente si estás en una mac el mismo comando te ande a vos&lt;/p&gt;&lt;p&gt;dDesde hace unos meses estoy usando cursor, el IDE, para programar. Como parte de ese uso, cuando hablo con las IAs, las mismas intentan correr comandos. Como es peligroso, uno tiene que andar aprobando cada comando.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Y haciendo esto me di cuenta que aprobé comandos complicados :/. &lt;span style=&quot;font-family: Consolas;&quot;&gt;sed&lt;/span&gt; y &lt;span style=&quot;font-family: Consolas;&quot;&gt;awk&lt;/span&gt; tienen la opción de editar archivos inline.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para sacarlos tuve que salir de cursor y correr este comando (que reescribe toda la lista del whitelist):&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;% sqlite3 &quot;$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb&quot; \&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;&quot;UPDATE ItemTable SET value = json_set(value, &#39;$.composerState.yoloCommandAllowlist&#39;, json(&#39;[\&quot;diff\&quot;,\&quot;jq\&quot;,\&quot;grep\&quot;,\&quot;head\&quot;,\&quot;cd\&quot;,\&quot;git log\&quot;,\&quot;git diff\&quot;,\&quot;git show\&quot;,\&quot;npm audit\&quot;,\&quot;cat\&quot;,\&quot;echo\&quot;]&#39;)) WHERE key=&#39;src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser&#39;;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Y después corrí esto para ver que quedó bien:&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;% sqlite3 -noheader -list &quot;$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb&quot; \&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;&quot;SELECT je.value FROM ItemTable AS it, json_each(it.value, &#39;$.composerState.yoloCommandAllowlist&#39;) AS je WHERE it.key=&#39;src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser&#39;;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Por último pedí en el chat que corra sed para ver que está todo bien :)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Esto me lleva a ver que cursor, el IDE, está super verde y pushean features que les faltan cosas. ¡Es un peligro!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;PD: Es peor! Si la allowlist está activada puede correr comandos usando redirección de shell (&lt;span style=&quot;font-family: Consolas;&quot;&gt;&amp;gt;&lt;/span&gt;) y escribir sin confirmación del usuario. Por lo tanto hay que desactivarla hasta que arreglen esto. Para hacer esto podés ir a &lt;span style=&quot;font-family: Consolas;&quot;&gt;cmd-shift-p -&amp;gt; Cursor Settings -&amp;gt; Chat -&amp;gt; Auto-Run -&amp;gt; Auto-Run Mode&lt;/span&gt; y setear en &lt;span style=&quot;font-family: Consolas;&quot;&gt;Ask Every Time&lt;/span&gt;.&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/3785944260828489721/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/3785944260828489721' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3785944260828489721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3785944260828489721'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2025/09/cual-es-la-allowlist.html' title='Cuál es la allowlist?'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-2269146103724223020</id><published>2025-07-01T07:47:00.002-03:00</published><updated>2025-07-01T07:47:36.138-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Tuneando firefox sobre ssh</title><content type='html'>Hace un tiempo hice que &lt;a href=&quot;https://aurelianito.blogspot.com/2021/07/desarrollar-con-rust-en-una-vm.html&quot;&gt;Firefox corra remoto sobre X&lt;/a&gt;. Para eso forwardeo el X por ssh (haciendo &lt;span style=&quot;font-family: courier;&quot;&gt;$ ssh -X blah&lt;/span&gt;) Y esto anda bien para correr sobre una VM. Pero cuando probé conectarme a mi linux desde mi mac no anduvo :(. Así que primero tuve que decirle como forwardear XAuthority corriendo&amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;XAUTHORITY=$HOME/.Xauthority firefox --no-remote&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;.&amp;nbsp;&lt;/span&gt;Pero cuando quiero conectarme a otra compu en mi red wifi anda muy lento. Así que hice algunas optimizaciones.&lt;div&gt;La primera es que cuando me conecto por ssh le paso &lt;span style=&quot;font-family: courier;&quot;&gt;-C&lt;/span&gt; para que comprima los datos, porque X manda bocha de cosas para forwardear la pantalla. Y el otro seteo que sirvió para algo fue ir a &lt;span style=&quot;font-family: courier;&quot;&gt;about:config&lt;/span&gt; en firefox y bajar el frame rate seteando &lt;span style=&quot;font-family: courier;&quot;&gt;layout.frame_rate&lt;/span&gt; en &lt;span style=&quot;font-family: courier;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Con eso puedo usar firefox más o menos. Una cosa medio molesta es que el audio sigue saliendo por los parlantes de mi linux y no encontré fácil como forwardearlo o mutearlo, pero aunque sea así es posible usar firefox forwardeado por X por mi wifi, así que ese arreglo quedará para el futuro.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/2269146103724223020/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/2269146103724223020' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2269146103724223020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2269146103724223020'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2025/07/tuneando-firefox-sobre-ssh.html' title='Tuneando firefox sobre ssh'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-1404045639561030264</id><published>2025-05-14T07:00:00.013-03:00</published><updated>2025-05-14T10:53:11.143-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ping"/><category scheme="http://www.blogger.com/atom/ns#" term="pingmon"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><title type='text'>pingmon update</title><content type='html'>&lt;p&gt;Hace un tiempo hice un &lt;a href=&quot;/search/label/pingmon&quot;&gt;script para monitorear mi conexión a internet usando ping&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Le hice algunos cambios menores, y ahora muestra datos aunque no haya llenado toda la ventana.&lt;/p&gt;&lt;p&gt;Esta es la última versión&lt;/p&gt;
&lt;pre&gt;
#!/usr/bin/env python3

import subprocess
import sys
import re

SEQ_NUMBER_RE = re.compile(r&quot;.*icmp_seq=(\d+) ttl.*&quot;)

def report(probes, count):
  if len(probes) &lt; count:
    count = len(probes)
  return str ( count - sum(probes[-count:]) ) 

def monitor(ip):
  probes = []
  ping = subprocess.Popen([&quot;ping&quot;, ip], stdout=subprocess.PIPE)
  stdout = ping.stdout

  stdout.readline() # Ignore first line
  line_count = 0
  last_seq_number = 0
  while True:
    line_count +=1
    line = stdout.readline().decode()
    try:
      seq_number = int( SEQ_NUMBER_RE.match(line).group(1))
    except Exception:
      print( &quot;!!! Failed while parsing line &quot; + line )
      seq_number = last_seq_number
    probes.extend([0] * (seq_number - last_seq_number - 1))
    probes.append(1)
    print( &quot;(%s) 10:%s 100:%s 1000:%s 10000:%s&quot; % (
      line_count, report(probes, 10), report(probes, 100), report(probes, 1000), report(probes, 10000)
    ) )

    probes = probes[-10000:] # Keep memory usage bounded
    last_seq_number = seq_number

def main(argv):
  monitor(argv[1])

if __name__ == &#39;__main__&#39;:
  main(sys.argv)
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/1404045639561030264/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/1404045639561030264' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1404045639561030264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1404045639561030264'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2025/05/pingmon-python3.html' title='pingmon update'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-4321226565342692904</id><published>2024-11-09T07:46:00.005-03:00</published><updated>2024-11-09T08:08:39.667-03:00</updated><title type='text'>Sobre vacas y pampas</title><content type='html'>&lt;p&gt;¡Qué fea que es la vegetación nativa de las pampas! Toda dura, con pinches, casi sin árboles. ¿Por qué es así? ¿Siempre fue así?&lt;/p&gt;&lt;p&gt;¿Será culpa de los españoles? Ellos soltaron vacas en las pampas. Las vacas se reprodujeron un montón porque no hay animales que las puedan comer en la pampas. ¿Sabemos cómo eran las pampas antes de las vacas? ¿Hay alguna historia transmitida oralmente por los pueblos originarios? ¿Hay algún estudio serio? ¿Dónde está el paper con referato que lo estudie?&lt;/p&gt;&lt;p&gt;Yo creo que lo que conocemos de la vegetación nativa de las pampas es lo que sobrevivió a las vacas, que se comieron todo a su paso mientras explotaron poblacionalmente en las pampas por varios siglos, hasta que la campaña de Roca terminó de conquistar la zona. Por eso es todo pinchudo y duro.&lt;/p&gt;&lt;p&gt;Restauremos las pampas. Plantemos árboles, plantemos pastos blanditos. La vegetación no tiene que lastimarnos.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8SKd7TvScD0huaUifTCsLMuvQIK5KlP43t7VzLZIHRbPkHxMiXw_mH79r8x0GpL0vXiBMji5ZTRzka7d3QGsga20PU-6Afq5e9bkwL0O7doA67L9mAR_8invGbtFH5iEyv3onz9ZpuXlXb6KMh4QQprPSOq0hskaCyexxbL2Hq31Sk8INn3zEy2FsKIYs/s2048/51649307138_5515dd7a04_k.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;785&quot; data-original-width=&quot;2048&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8SKd7TvScD0huaUifTCsLMuvQIK5KlP43t7VzLZIHRbPkHxMiXw_mH79r8x0GpL0vXiBMji5ZTRzka7d3QGsga20PU-6Afq5e9bkwL0O7doA67L9mAR_8invGbtFH5iEyv3onz9ZpuXlXb6KMh4QQprPSOq0hskaCyexxbL2Hq31Sk8INn3zEy2FsKIYs/w640-h246/51649307138_5515dd7a04_k.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/4321226565342692904/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/4321226565342692904' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/4321226565342692904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/4321226565342692904'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2024/11/sobre-vacas-y-pampas.html' title='Sobre vacas y pampas'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8SKd7TvScD0huaUifTCsLMuvQIK5KlP43t7VzLZIHRbPkHxMiXw_mH79r8x0GpL0vXiBMji5ZTRzka7d3QGsga20PU-6Afq5e9bkwL0O7doA67L9mAR_8invGbtFH5iEyv3onz9ZpuXlXb6KMh4QQprPSOq0hskaCyexxbL2Hq31Sk8INn3zEy2FsKIYs/s72-w640-h246-c/51649307138_5515dd7a04_k.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-3649445661857735060</id><published>2024-09-05T15:13:00.005-03:00</published><updated>2024-09-05T15:13:58.571-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="heic"/><category scheme="http://www.blogger.com/atom/ns#" term="jpeg"/><category scheme="http://www.blogger.com/atom/ns#" term="jpg"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>heic a jpg</title><content type='html'>&lt;p&gt;Estoy en ubuntu, me conecto al celu y las fotos están en formato .heic &lt;span&gt; ¯_(ツ)_/¯&lt;/span&gt;. Pero quiero un .jpg! Ah! Ya sé, googleo y &lt;a href=&quot;https://askubuntu.com/questions/958355/any-app-on-ubuntu-to-open-and-or-convert-heif-pictures-heic-high-efficiency-i&quot;&gt;encuentro esto&lt;/a&gt;. Para convertir un montón de archivos .heic a .jpg hay que instalar libheif-examples en la consola así:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ sudo apt-get install libheif-examples&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Y después se puede correr esto:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Para convertir todos los .heic de un directorio.&lt;/p&gt;&lt;p&gt;Ajustalo si querés hacer otra cosa.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/3649445661857735060/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/3649445661857735060' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3649445661857735060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3649445661857735060'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2024/09/heic-jpg.html' title='heic a jpg'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-2961169825140781471</id><published>2023-08-08T09:07:00.004-03:00</published><updated>2023-08-08T09:07:44.546-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="lxqt"/><category scheme="http://www.blogger.com/atom/ns#" term="tasksel"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Lubuntu sin GUI</title><content type='html'>&lt;p&gt;Ayer a la noche arranco mi notebook, que tiene instalado lubuntu 22.04, y en vez de abrir la GUI de siempre me abre la terminal en texto. Por suerte se sigue conectando al wifi. Así que podía instalar cosas en línea de comando. Cuando rebooteo veo que por un momento aparece el error &lt;span style=&quot;font-family: courier;&quot;&gt;ACPI BIOS Error (bug): Could not resolve symbol [\CTDP]&lt;/span&gt;.&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVSZQ1s7DA46awPLuRZJZQXA0tWYTKg-Ag1CIWncJ-HzWY0I15LCgVSk3cMQWw2zPavsAKAS1RuUsErr4kpAQ-wGIuTLt3qo0-o4-2cIvLHyBMJrdxDI3gHHHsFZynbC3t3iWLbXexEaqzxOb2hL4s54GIqv_7dPKyZ9SJIhLyjoKuHQZxXBVVOoTAfJFi/s1280/WhatsApp%20Image%202023-08-08%20at%2009.01.17.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;576&quot; data-original-width=&quot;1280&quot; height=&quot;144&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVSZQ1s7DA46awPLuRZJZQXA0tWYTKg-Ag1CIWncJ-HzWY0I15LCgVSk3cMQWw2zPavsAKAS1RuUsErr4kpAQ-wGIuTLt3qo0-o4-2cIvLHyBMJrdxDI3gHHHsFZynbC3t3iWLbXexEaqzxOb2hL4s54GIqv_7dPKyZ9SJIhLyjoKuHQZxXBVVOoTAfJFi/s320/WhatsApp%20Image%202023-08-08%20at%2009.01.17.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Después de tratar de tocar grub para que bootee distinto, infructuosamente, encontré &lt;a href=&quot;https://linuxconfig.org/ubuntu-22-04-gui-installation&quot;&gt;una guía para instalar guis en ubuntu&lt;/a&gt;. En ella dice que la forma más fácil para instalar una gui es usar la utilidad &lt;span style=&quot;font-family: courier;&quot;&gt;tasksel&lt;/span&gt;, y que puedo instalar la gui de lubuntu con eso, instalando la gui &lt;span style=&quot;font-family: courier;&quot;&gt;lxqt&lt;/span&gt;. Así que hice &lt;span style=&quot;font-family: courier;&quot;&gt;sudo apt install tasksel&lt;/span&gt;, &lt;span style=&quot;font-family: courier;&quot;&gt;sudo tasksel&lt;/span&gt;, elegí &lt;span style=&quot;font-family: courier;&quot;&gt;lxqt&lt;/span&gt;, esperé a que termine, rebootié, y ahora tengo gui de nuevo!&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/2961169825140781471/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/2961169825140781471' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2961169825140781471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2961169825140781471'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2023/08/lubuntu-sin-gui.html' title='Lubuntu sin GUI'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVSZQ1s7DA46awPLuRZJZQXA0tWYTKg-Ag1CIWncJ-HzWY0I15LCgVSk3cMQWw2zPavsAKAS1RuUsErr4kpAQ-wGIuTLt3qo0-o4-2cIvLHyBMJrdxDI3gHHHsFZynbC3t3iWLbXexEaqzxOb2hL4s54GIqv_7dPKyZ9SJIhLyjoKuHQZxXBVVOoTAfJFi/s72-c/WhatsApp%20Image%202023-08-08%20at%2009.01.17.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-3224498376531975394</id><published>2023-01-27T11:33:00.005-03:00</published><updated>2023-01-27T11:39:35.209-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="cmd"/><category scheme="http://www.blogger.com/atom/ns#" term="gh"/><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><title type='text'>Aceptar invites a repos de github desde línea de comando</title><content type='html'>&lt;p&gt;Si por algún motivo querés aceptar invites a repos desde línea de comando en github, se puede!&lt;/p&gt;&lt;p&gt;Para hacer eso, hay que usar el comando gh y tener estar autenticado via&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ gh auth login&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Una vez que estás autenticado, hay que usar el api de github directamente via &lt;span style=&quot;font-family: Consolas;&quot;&gt;gh api&lt;/span&gt;, que maneja la autenticación por nosotros y recibe parámetros de forma análoga a &lt;span style=&quot;font-family: Consolas;&quot;&gt;curl&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;El comando para obtener todos los invites pendientes es:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ gh api user/repository_invitations&lt;/span&gt;&lt;/p&gt;&lt;p&gt;y devuelve un array con todas las invitaciones pendientes del usuario (en json).&lt;/p&gt;&lt;p&gt;Lo importante de ese array es que cada entrada tiene un campo &lt;span style=&quot;font-family: Consolas;&quot;&gt;&quot;id&quot;&lt;/span&gt;. Es algo así:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;[&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&quot;id&quot;: 12345678,&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;repository&quot;: {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;full_name&quot;: &quot;usuario/repo&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;otras&quot;: &quot;cosas&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;otras&quot;: &quot;cosas&quot; &lt;br /&gt;&amp;nbsp; },&lt;br /&gt;&amp;nbsp; { &quot;id&quot;: &quot;23456789&quot;, &quot;otras&quot;: &quot;cosas&quot; }&lt;br /&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Con ese id, podés correr este otro comando para aceptar el invite así:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ gh api -X PATCH user/repository_invitations/12345678&lt;/span&gt;&lt;/p&gt;&lt;p&gt;y si salió todo bien ahora podés hacer clone de ese repo privado así:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ gh repo clone usuario/repo&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Espero que les sirva! &lt;/p&gt;&lt;p&gt;PD: Las llamadas a la API las deduje de &lt;a href=&quot;https://github.com/nem-c/github-invitation-accepter-cli/blob/master/github-accept-all-invitations-from-org.php&quot;&gt;acá&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/3224498376531975394/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/3224498376531975394' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3224498376531975394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3224498376531975394'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2023/01/aceptar-invites-repos-de-github-desde.html' title='Aceptar invites a repos de github desde línea de comando'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-8973725253668463938</id><published>2022-09-21T15:32:00.001-03:00</published><updated>2022-09-21T15:32:45.301-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pypi"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="solidity"/><title type='text'>estimate-sol</title><content type='html'>&lt;p&gt;Hoy publiqué una herramienta open-source que sirve para medir el tamaño de contratos de solidity. Está en &lt;a href=&quot;https://pypi.org/project/estimate-sol/&quot;&gt;pypi&lt;/a&gt;, y podés instalarla corriendo&lt;span style=&quot;font-family: Consolas;&quot;&gt; pip install estimate-sol&lt;/span&gt;. Este es el uso:&lt;/p&gt;&lt;pre style=&quot;-webkit-text-stroke-width: 0px; background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; display: block; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 13px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; line-height: 1.42857; margin: 0px 0px 1.5em; orphans: 2; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; widows: 2; word-break: break-all; word-spacing: 0px;&quot;&gt;$ estimate-sol -h
usage: estimate-sol [-h] [--punctuations] [--encoding ENCODING] [--dependencies-multiplier DEPENDENCIES_MULTIPLIER]
[--assembly-multiplier ASSEMBLY_MULTIPLIER] [--week-size WEEK_SIZE] [-a] [-V]
files [files ...]

Estimate solidity audit sizes.

positional arguments:
files Files to be audited.

optional arguments:
-h, --help show this help message and exit
--punctuations, -p Use punctuations for counting (default: lines)
--encoding ENCODING, -e ENCODING
File encoding (default=utf-8).
--dependencies-multiplier DEPENDENCIES_MULTIPLIER, -d DEPENDENCIES_MULTIPLIER
Multiplier to estimate non-audited dependencies (default=1.0).
--assembly-multiplier ASSEMBLY_MULTIPLIER
Multiplier to estimate assembly code (default=1.0).
--week-size WEEK_SIZE, -w WEEK_SIZE
Number of items to audit per week. Defaults: (lines:1.0, punct:1.0)
-a, --absolute_paths Show all paths as absolute (by default relative paths are shown if inside current directory).
-V, --version show program&#39;s version number and exit
&lt;/pre&gt;Y podés ver el anuncio original &lt;a href=&quot;https://blog.coinfabrik.com/tools/sizing-solidity-audits/&quot;&gt;acá&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/8973725253668463938/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/8973725253668463938' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8973725253668463938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8973725253668463938'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/09/estimate-sol.html' title='estimate-sol'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-6710032472511345596</id><published>2022-09-09T15:58:00.003-03:00</published><updated>2022-09-09T15:59:56.908-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chromium"/><category scheme="http://www.blogger.com/atom/ns#" term="snap"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="x"/><title type='text'>chromium en snap via ssh</title><content type='html'>&lt;p&gt;Me conecto a una VM por ssh, forwardeando X (&lt;span style=&quot;font-family: Consolas;&quot;&gt;ssh -X&lt;/span&gt;).&lt;/p&gt;&lt;p&gt;Instalo el snap de chromium (&lt;span style=&quot;font-family: Consolas;&quot;&gt;sudo snap install chromium&lt;/span&gt;).&lt;/p&gt;&lt;p&gt;Lo corro, y me da este error.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ chromium&lt;br /&gt;X11 connection rejected because of wrong authentication.&lt;br /&gt;[2050513:2050513:0909/155104.874445:ERROR:ozone_platform_x11.cc(240)] Missing X server or $DISPLAY&lt;br /&gt;[2050513:2050513:0909/155104.874518:ERROR:env.cc(255)] The platform failed to initialize.&amp;nbsp; Exiting.&lt;br /&gt;[1]+&amp;nbsp; Done&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAUTHORITY=$HOME/.Xauthority chromium&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para arreglar el problema hay que &lt;a href=&quot;https://forum.snapcraft.io/t/x11-forwarding-using-ssh/2381/6&quot;&gt;setearle la variable de entorno de XAUTHORITY&lt;/a&gt; (¿por qué?).&lt;/p&gt;&lt;p&gt;Lo corro así y problema solucionado.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Consolas;&quot;&gt;$ XAUTHORITY=$HOME/.Xauthority chromium&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/6710032472511345596/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/6710032472511345596' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6710032472511345596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6710032472511345596'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/09/chromium-en-snap-via-ssh.html' title='chromium en snap via ssh'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-5423328554258561138</id><published>2022-08-28T11:56:00.005-03:00</published><updated>2022-08-28T12:49:02.368-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh-agent"/><title type='text'>ssh-agent no anda en lubuntu 22.4</title><content type='html'>&lt;div style=&quot;text-align: left;&quot;&gt;Este fin de semana upgradié el sistema operativo de mi notebook. Lo pasé de lubuntu 20.4 a lubuntu 22.4.1. Cuando terminé todo anduvo razonablemente bien (booteó!) pero el agente de ssh dejó de arrancar solo. &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Estuve un rato googleando y no encontraba nada. Así que me puse a buscar como arranca el &lt;span style=&quot;font-family: Roboto Mono;&quot;&gt;ssh-agent&lt;/span&gt;. Para eso tiré un find con un grep en mi home.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto Mono;&quot;&gt;&lt;span&gt;&lt;span&gt;$ find . -type f -print0 | xargs -0 -n 1000 fgrep -n ssh-agent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Hice eso y encontré que en el archivo $HOME/.xsession-errors tenía este mensaje de error:&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto Mono;&quot;&gt;&lt;span&gt;&lt;span&gt;/etc/X11/Xsession.d/90x11-common_ssh-agent: line 9: has_option: command not found&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;¡Bingo!&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Googlié el error y encontré &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1922414&quot;&gt;este reporte de bug de ubuntu&lt;/a&gt;. Dentro de los comentarios encontré &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1922414/comments/7&quot;&gt;la solución&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;La misma consiste en poner en el directorio&lt;span style=&quot;font-family: Roboto Mono;&quot;&gt; /etc/X11/Xsession.d/&lt;/span&gt; &lt;a href=&quot;https://launchpadlibrarian.net/532430334/01x11-has_option&quot;&gt;un archivo más para definir has_option&lt;/a&gt;. El archivo yo lo &lt;span style=&quot;font-family: Roboto Mono;&quot;&gt;nombré 01x11-has_option-aure&lt;/span&gt; y tiene este contenido:&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;font-family: Roboto Mono;&quot;&gt;# This file is sourced by Xsession(5), not executed.&lt;br /&gt;#&lt;br /&gt;# workaround created by Settel&lt;br /&gt;# defines &quot;has_option&quot; unless it is already defined&lt;br /&gt;# see https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1922414&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if type -t has_option &amp;gt;/dev/null; then&lt;br /&gt;&amp;nbsp; return&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OPTIONS=&quot;$(&lt;br /&gt;&amp;nbsp; if [ -r &quot;$OPTIONFILE&quot; ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cat &quot;$OPTIONFILE&quot;&lt;br /&gt;&amp;nbsp; fi&lt;br /&gt;&amp;nbsp; if [ -d /etc/X11/Xsession.options.d ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run-parts --list --regex &#39;\.conf$&#39; /etc/X11/Xsession.options.d | xargs -d &#39;\n&#39; cat&lt;br /&gt;&amp;nbsp; fi&lt;br /&gt;)&quot;&lt;br /&gt;&lt;br /&gt;has_option() {&lt;br /&gt;&amp;nbsp; # Ensure that a later no-foo overrides an earlier foo&lt;br /&gt;&amp;nbsp; if [ &quot;$(echo &quot;$OPTIONS&quot; | grep -Eo &quot;^(no-)?$1\&amp;gt;&quot; | tail -n 1)&quot; = &quot;$1&quot; ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1&lt;br /&gt;&amp;nbsp; fi&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/5423328554258561138/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/5423328554258561138' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/5423328554258561138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/5423328554258561138'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/08/sshagent-no-anda-en-lubuntu-224.html' title='ssh-agent no anda en lubuntu 22.4'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-8206152874320115437</id><published>2022-08-27T23:41:00.008-03:00</published><updated>2022-08-28T00:10:50.088-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimnasio"/><category scheme="http://www.blogger.com/atom/ns#" term="pesas"/><category scheme="http://www.blogger.com/atom/ns#" term="sobrecarga progresiva"/><title type='text'>Cómo hago sobrecarga progresiva</title><content type='html'>&lt;p&gt;&amp;nbsp;Hace 5 meses empecé a hacer pesas en el gimnasio que está a una cuadra de casa. Y estoy ganando fuerza. Para ganar fuerza en el gimnasio hay que hacer una cosa que se llama &quot;sobrecarga progresiva&quot;. Eso quiere decir que a medida que vamos pudiendo, hay que ir haciendo los ejercicios cada vez más difíciles. En el caso de hacer pesas eso lo podés hacer subiendo el peso que usás en el ejercicio, subiendo la cantidad de repeticiones por serie y/o subiendo la cantidad de series. El problema es que subir el peso todo el tiempo no se puede porque las mancuernas suben de a 2.5kg, y los discos también (por lo que como hay que poner cantidades pares en la barra, el salto mínimo es de 5kg). Por lo tanto inventé este procedimiento, que está funcionando bárbaro.&lt;br /&gt;&lt;br /&gt;Para cada ejercicio:&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Siempre hago 3 series.&lt;/li&gt;&lt;li&gt;Y anoto cuanto peso y repeticiones hago en cada serie.&lt;/li&gt;&lt;li&gt;En la última serie de cada ejercicio, trato de hacer todas las repeticiones que pueda (en vez de lo que tenía anotado). Si me excedo por 3 o más de lo que tenía anotado, la próxima hago una repetición más. Sino hago lo mismo que la vez anterior&lt;/li&gt;&lt;li&gt;Si llego a 13 repeticiones (o sea, hago 15 repeticiones en la última serie cuando tenía anotadas 12), en vez de hacer 13 repeticiones la siguiente vez subo el peso lo menos que puedo (5kg en ejercicios con barra, 2.5kg en ejercicios con mancuerna) y hago 8 repeticiones (como tengo que levantar más peso, puedo hacer menos repeticiones).&lt;/li&gt;&lt;li&gt;Cuando el salto es muy grande (por ejemplo, pasar en un ejercicio con mancuernas de 5kg a 7.5kg), en vez de llegar a las 13 repeticiones, trato de llegar a un número más grande (por ejemplo, 20 repeticiones).&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br /&gt;No sé porqué no te cuenta nadie que ésta es la forma de ir subiendo de peso. Lo que vi en el gimnasio es que te suben los pesos independientemente de como progresás, y entonces o subís demasiado despacio o demasiado rápido y no podés hacer los ejercicios. Me pasó de decirle a un compañero de gimnasio que no tiene que levantar los pesos solo porque lo dice en su ficha. No hagas lo mismo. No te expongas al pedo. Seguí mi procedimiento (o algo parecido).&lt;br /&gt;&lt;br /&gt;Y contame como te fue, o si tenés algún truco extra, en los comentarios.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/8206152874320115437/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/8206152874320115437' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8206152874320115437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8206152874320115437'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/08/como-hago-sobrecarga-progresiva.html' title='Cómo hago sobrecarga progresiva'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-1376877613269928255</id><published>2022-06-27T09:50:00.003-03:00</published><updated>2022-06-27T09:50:32.108-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Montando directorios por ssh</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;br /&gt;Me gusta contectarme a mis VMs por ssh y es bastante cómodo. Pero a veces es un garrón copiar archivos desde/hacia mis VMs. Por eso prefiero montar el disco vía ssh. Saqué cómo hacerlo &lt;a href=&quot;https://askubuntu.com/questions/412477/mount-remote-directory-using-ssh&quot;&gt;de acá&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para hacer eso en ubuntu hay que instalar sshfs&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ sudo apt-get install sshfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hacer un directorio vacío para montar el filesystem nuevo.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ mkdir /home/johndoe/sshfs-path/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y montar el directorio vía ssh.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ sshfs&amp;nbsp; remoteuser@111.222.333.444:/remote/path /home/johndoe/sshfs-path/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por último, para desmontarlo hay que correr:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ fusermount -u /home/johndoe/sshfs-path/&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/1376877613269928255/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/1376877613269928255' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1376877613269928255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1376877613269928255'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/06/montando-directorios-por-ssh.html' title='Montando directorios por ssh'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-7191332297931512053</id><published>2022-04-28T15:37:00.003-03:00</published><updated>2022-04-28T15:38:33.508-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="gitignore"/><category scheme="http://www.blogger.com/atom/ns#" term="ignore"/><title type='text'>Ignorando .gitignore</title><content type='html'>&lt;p&gt;&amp;nbsp;A veces uno quiere ignorar archivos en git pero no quiere tocar .gitignore porque entonces aparece &lt;span style=&quot;font-family: courier;&quot;&gt;.gitignore&lt;/span&gt; como archivo modificado. Y eso es un garrón. Pensé que era inevitable, pero no. Si editan &lt;span style=&quot;font-family: courier;&quot;&gt;.git/info/exclude&lt;/span&gt;, poniendo reglas como las de &lt;span style=&quot;font-family: courier;&quot;&gt;.gitignore&lt;/span&gt;, va a ignorar siguiendo esas reglas en los comandos de git pero no van a ver &lt;span style=&quot;font-family: courier;&quot;&gt;.gitignore&lt;/span&gt; o &lt;span style=&quot;font-family: courier;&quot;&gt;.git/info/exclude&lt;/span&gt; como archivos modificados cuando corran &lt;span style=&quot;font-family: courier;&quot;&gt;git status&lt;/span&gt; (por ejemplo).&lt;/p&gt;&lt;p&gt;Fuente: &lt;a href=&quot;https://stackoverflow.com/questions/653454/how-do-you-make-git-ignore-files-without-using-gitignore&quot;&gt;https://stackoverflow.com/questions/653454/how-do-you-make-git-ignore-files-without-using-gitignore&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/7191332297931512053/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/7191332297931512053' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/7191332297931512053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/7191332297931512053'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/04/ignorando-gitignore.html' title='Ignorando .gitignore'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-2652024154354939471</id><published>2022-02-08T17:08:00.003-03:00</published><updated>2022-02-08T17:08:36.377-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="auditoría"/><category scheme="http://www.blogger.com/atom/ns#" term="ethereum"/><category scheme="http://www.blogger.com/atom/ns#" term="evm"/><category scheme="http://www.blogger.com/atom/ns#" term="regexp"/><category scheme="http://www.blogger.com/atom/ns#" term="smart contracts"/><category scheme="http://www.blogger.com/atom/ns#" term="solidity"/><category scheme="http://www.blogger.com/atom/ns#" term="vscode"/><title type='text'>Buscando multiplicaciones y divisiones</title><content type='html'>&lt;p&gt;Desde hace unos meses mi trabajo es hacer auditorías de smart contracts escritos en solidity. Como parte de este trabajo, tengo que buscar multiplicaciones y divisiones en código que no conozco, generalmente usando VSCode.&lt;/p&gt;&lt;p&gt;El tema es que las búsqueda de &quot;*&quot; y &quot;/&quot; dan bocha de falsos positivos porque estos caracteres se usan para marcar comentarios, aparte de las operaciones aritméticas. Por eso uso unas regex para buscarlos, que aunque no son perfectas, me sirven para acotar la cantidad de lugares que tengo que mirar. Quizás les sirvan a ustedes también, así que se las dejo acá abajo:&lt;/p&gt;&lt;p&gt;Multiplicación: &lt;span style=&quot;font-family: courier;&quot;&gt;[^\s].*[^/*]\*[^/*]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;División: &lt;span style=&quot;font-family: courier;&quot;&gt;[^/*]/[^/*]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Probablemente también puedan serles útiles en otros lenguajes como Python, Java o C++.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/2652024154354939471/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/2652024154354939471' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2652024154354939471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2652024154354939471'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2022/02/buscando-multiplicaciones-y-divisiones.html' title='Buscando multiplicaciones y divisiones'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-256201558218644006</id><published>2021-09-27T17:31:00.001-03:00</published><updated>2021-09-27T17:31:44.278-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="binance"/><category scheme="http://www.blogger.com/atom/ns#" term="hardhat"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="solidity"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Setupeando hardhat para binance network</title><content type='html'>&lt;p&gt;Estoy entrando a un laburo nuevo, y como primera tarea tengo que hacer unos POCs de contratos en solidity y testearlos en la red de test de Binance.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Para hacer esto tengo que hacerlos con &lt;a href=&quot;https://hardhat.org/&quot;&gt;hardhat&lt;/a&gt;. Por lo tanto empecé a seguir las &lt;a href=&quot;https://docs.binance.org/smart-chain/developer/deploy/hardhat.html&quot;&gt;instrucciones que dan en Binance para setupear hardhat&lt;/a&gt;, pero no están del todo bien. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Los problemas que me llevé puestos son:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Hay que usar una versión LTS de nodejs. Para eso instalé nvm como dice &lt;a href=&quot;https://github.com/nvm-sh/nvm&quot;&gt;acá&lt;/a&gt; e instalé el LTS usando nvm. La versión que trae ubuntu 20.04 haciendo &lt;span style=&quot;font-family: courier;&quot;&gt;apt install nodejs&lt;/span&gt; es muy vieja.&lt;/li&gt;&lt;li&gt;En el archivo &lt;span style=&quot;font-family: courier;&quot;&gt;hardhat.config.js&lt;/span&gt; que ponen ahí, hay que cambiar la versión de solidity a &lt;span style=&quot;font-family: courier;&quot;&gt;&quot;0.8.4&quot;&lt;/span&gt;. Sino el contrato de ejemplo que genera cuando corrés &lt;span style=&quot;font-family: courier;&quot;&gt;npx hardhat&lt;/span&gt; no compila.&lt;/li&gt;&lt;li&gt;Hay que crear un archivo &lt;span style=&quot;font-family: courier;&quot;&gt;secrets.json&lt;/span&gt; donde poner los mnemonicos que usa metamask. El contenido del archivo es algo así: &lt;span style=&quot;font-family: courier;&quot;&gt;{&quot;mnemonic&quot;: &quot;a ante bajo cabe con contra de desde hacia hasta para por&quot;}&lt;/span&gt;.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Si el contenido de &lt;span style=&quot;font-family: courier;&quot;&gt;secrets.json&lt;/span&gt; no tiene el formato correcto, o el archivo no existe da un error bastante críptico (&lt;span style=&quot;font-family: courier;&quot;&gt;Expected a value of type HttpNetworkConfig&lt;/span&gt;)&lt;/p&gt;&lt;p&gt;Pero cuando está todo bien configurado pasa esto:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ npx hardhat compile&lt;br /&gt;Compiling 2 files with 0.8.4&lt;br /&gt;Compilation finished successfully&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Espero que les sirva,&lt;/p&gt;&lt;p&gt;Aureliano.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/256201558218644006/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/256201558218644006' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/256201558218644006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/256201558218644006'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/09/setupeando-hardhat-para-binance-network.html' title='Setupeando hardhat para binance network'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-2128666575726473909</id><published>2021-08-25T10:31:00.005-03:00</published><updated>2021-08-25T10:42:40.090-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="retroplagio"/><title type='text'>Sistemas egoístas y bienes registrables</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Seguramente esto sea un &lt;a href=&quot;http://aurelianito.blogspot.com/2015/03/me-retroplagiaron-el-concepto-de.html&quot;&gt;retroplagio&lt;/a&gt;, pero estuve notando que muchos sistemas suelen andar con incentivos opuestos, que hacen que llegue a un equilibrio.&lt;br /&gt;&lt;br /&gt;Los mercados se basan en que haya compradores y vendedores, con intereses opuestos. El sistema judicial se basa en tener acusación y defensa. Yo creo que esa cualidad de que actores actuando de forma egoísta hacen que salga un resultado bueno es una propiedad deseable de los sistemas.&lt;br /&gt;&lt;br /&gt;En particular, hay una aplicación de esto que creo que sería buenísimo hacer y no veo que la hagan. Uno de los problemas que hay con el cobro de impuestos es valuar correctamente los activos sobre los que se aplican. Por ejemplo, el precio de mercado de una propiedad. En Argentina (y creo que en el resto del mundo también) esta valuación se hace con una declaración, por lo que aún cuando se haga bien originalmente, esta valuación se vuelve incorrecta al toque (sobre todo cuando hay mucha inflación o una burbuja inmobiliaria). &lt;br /&gt;&lt;br /&gt;Pero esto no tiene porqué ser así. Mi propuesta es usar un &quot;sistema egoísta&quot; para valuar bienes registrables, como por ejemplo terrenos o campos. En este sistema cada dueño declararía el precio de su propiedad, como hasta ahora, y se cobraría un impuesto como porcentaje del valor declarado, como hasta ahora. Lo nuevo es que puede venir cualquier otra persona o empresa y comprar dicha propiedad al doble del valor declarado. Si así lo hiciera, el dueño original se quedaría con el 150% del valor declarado y el 50% restante iría para el estado, en concepto de multa por no declarar correctamente el precio de la propiedad. Esto incentivaría a no sub-declarar el precio de las propiedades. &lt;br /&gt;&lt;br /&gt;Algunas cosas que harían andar el sistema, evitando posibles abusos son:&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;En caso de deber más del 20% del valor declarado de la propiedad en impuestos, la propiedad se subasta, se cobran los impuestos y lo que queda va al propietario.&lt;/li&gt;&lt;li&gt;Para hacer una transferencia hay que llevar a 0 la deuda impositiva de la propiedad.&lt;/li&gt;&lt;li&gt;Para cambiar la valuación de la propiedad hay que llevar a 0 la deuda impositiva de la propiedad.&lt;/li&gt;&lt;li&gt;Para propiedades, no se puede declarar un valor que sea 3 veces superior al valor por metro cuadrado de propiedades similares. Esto es para evitar que declaren un valor muy grande que haga que el 20% del valor declarado sea más que el precio de mercado de la propiedad, haciendo que sea más barato no pagar los impuestos y dejar que la subasten cuando la deuda llegue al límite de subasta. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hay que poner algún mecanismo sensato de indexación del precio declarado, para evitar que la inflación lo deje muy bajo y haya gente que se aproveche de eso. Quizás ajustar por CER o RIPTE o indice minorista del INDEC por defecto. Este ajuste no requiere llevar la deuda impositiva a 0, y la deuda debería ajustarse por el mismo índice (y quizás aparte algún punitorio para desincentivar tomar la deuda).&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br /&gt;Creo que si se usara esto para cobrar impuestos a los latifundios de la pampa húmeda, podrían darse las condiciones para que no haya más dólares paralelos ni retenciones a las exportaciones. Y si funciona bien, aplicarla después al resto de las propiedades también.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Espero que alguien tome esta idea y la lleve a cabo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/2128666575726473909/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/2128666575726473909' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2128666575726473909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2128666575726473909'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/08/sistemas-egoistas-y-bienes-registrables.html' title='Sistemas egoístas y bienes registrables'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-2217293910498496681</id><published>2021-07-23T13:09:00.004-03:00</published><updated>2021-07-23T13:09:49.242-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cargo"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="rust"/><category scheme="http://www.blogger.com/atom/ns#" term="rustup"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="vscode"/><title type='text'>Desarrollar con rust en una VM</title><content type='html'>&lt;p&gt;&amp;nbsp;En estos días empecé a jugar un poco con rust. Para esto, armé un entorno de desarrollo razonable para mi, en una VM. A mi me gusta armar entornos en VMs para desarrollar así no contamino mi compu con todas las cosas que voy instalando para probar cosas. En particular, prefiero armar VMs de lubuntu (ubuntu con lxde) y laburar conectandome via ssh como si fuera otra compu.&lt;/p&gt;&lt;p&gt;Para esto, armé la VM y le puse 2 placas de red virtuales (una NAT y otra host-only), le instalé lubuntu, le apliqué los últimos paquetes (&lt;span style=&quot;font-family: courier;&quot;&gt;apt update&lt;/span&gt; y &lt;span style=&quot;font-family: courier;&quot;&gt;apt upgrade&lt;/span&gt;) openssh-server (&lt;span style=&quot;font-family: courier;&quot;&gt;apt install openssh-server&lt;/span&gt;), git (&lt;span style=&quot;font-family: courier;&quot;&gt;apt install git&lt;/span&gt;), vscode (&lt;span style=&quot;font-family: courier;&quot;&gt;snap install --classic code&lt;/span&gt;), curl (&lt;span style=&quot;font-family: courier;&quot;&gt;apt install curl&lt;/span&gt;) y rust via rustup (&lt;span style=&quot;font-family: courier;&quot;&gt;curl --proto &#39;=https&#39; --tlsv1.2 https://sh.rustup.rs -sSf | sh&lt;/span&gt;) que incluye cargo.&lt;/p&gt;&lt;p&gt;Para laburar más cómodo le informé mi clave de ssh a la VM usando ssh-copy-id. Después de eso, puedo sshearme a la vm (&lt;span style=&quot;font-family: courier;&quot;&gt;ssh -X -A aure@192.168.56.101&lt;/span&gt;) y operar sin poner passwords y abrir ventanas remotas para usar el vscode (y firefox) de la VM en el escritorio del host.&lt;/p&gt;&lt;p&gt;Para usar firefox hay que correrlo como firefox -no-remote. Para que anden los comandos de cargo y rustup que abren el browser agregué export &lt;span style=&quot;font-family: courier;&quot;&gt;BROWSER=&quot;$HOME/bin/firefox-remote.sh&quot;&lt;/span&gt; en el final de mi .profile de la VM. y en &lt;span style=&quot;font-family: courier;&quot;&gt;$HOME/bin/firefox-remote.sh&lt;/span&gt; puse&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;#!/usr/bin/env bash&lt;br /&gt;&lt;br /&gt;firefox -no-remote &quot;$@&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;y lo puse como ejecutable con chmod. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;En vscode instalé 3 plugins:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;GitLens para tener mejor soporte para git&lt;/li&gt;&lt;li&gt;Rust para tener soporte de la sintaxis de rust&lt;/li&gt;&lt;li&gt;CodeLLDB para poder debuggear código de rust dentro de vscode&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Con esto creo que estoy listo para empezar a programar dentro de mi VM.&lt;/p&gt;¿Creen que me faltó algo?&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/2217293910498496681/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/2217293910498496681' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2217293910498496681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/2217293910498496681'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/07/desarrollar-con-rust-en-una-vm.html' title='Desarrollar con rust en una VM'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-4241244856027860702</id><published>2021-04-14T10:59:00.007-03:00</published><updated>2021-04-14T11:27:46.163-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kingston"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ssd"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Evitando freezes de la memoria de estado sólido</title><content type='html'>&lt;p&gt;Tengo una notebook nueva con una ssd kingston de 1 tera, modelo &lt;span style=&quot;font-family: courier;&quot;&gt;SA2000M81000G&lt;/span&gt; según &lt;span style=&quot;font-family: courier;&quot;&gt;smartctl&lt;/span&gt;. Cuando uso la notebook, en forma bastante aleatoria, se pega unos cuelgues de novela. Después de estar como un mes tratando de entender que &amp;amp;&amp;amp;*$#$#&amp;amp;$@#* pasa, creo que encontré la respuesta :D.&lt;/p&gt;&lt;p&gt;Parece que &lt;a href=&quot;https://unix.stackexchange.com/questions/612096/clarifying-nvme-apst-problems-for-linux&quot;&gt;algunas memorias kinsgton tienen un bug que se manifiesta cuando cambian de estado para ahorrar energía&lt;/a&gt;. El manejo de energía &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/nvme/host/core.c?h=v5.9-rc7#n2551&quot;&gt;está en el kernel&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;La forma de evitarlo es pasarle un parámetro a grub &lt;a href=&quot;https://tekbyte.net/2020/fixing-nvme-ssd-problems-on-linux/&quot;&gt;como explican acá&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;En mi ubuntu, edité el archivo &lt;span style=&quot;font-family: courier;&quot;&gt;/etc/default/grub&lt;/span&gt;. Cambié la línea &lt;span style=&quot;font-family: courier;&quot;&gt;GRUB_CMDLINE_LINUX=&quot;&quot;&lt;/span&gt; para que diga &lt;span style=&quot;font-family: courier;&quot;&gt;GRUB_CMDLINE_LINUX=&quot;nvme_core.default_ps_max_latency_us=0&quot;&lt;/span&gt;. Después de eso corrí &lt;span style=&quot;font-family: courier;&quot;&gt;sudo update-grub&lt;/span&gt; y reinicié la compu.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Después de eso, parece que anda todo bien 🤞.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;PD: Están trackeando este bug &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=195039&quot;&gt;acá&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/4241244856027860702/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/4241244856027860702' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/4241244856027860702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/4241244856027860702'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/04/evitando-freezes-de-la-memoria-de.html' title='Evitando freezes de la memoria de estado sólido'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-6059311656475761683</id><published>2021-03-05T20:40:00.001-03:00</published><updated>2021-03-05T20:40:35.823-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="efi"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="memtest"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Memtest Ubuntu booteando desde EFI</title><content type='html'>&lt;p&gt;Lamentablemente, la opción para correr memtest cuando booteamos no está disponible cuando booteamos de una compu que usa EFI en vez de BIOS.&lt;/p&gt;&lt;p&gt;Por suerte, hay workarround. Casi todos los pasos están documentados &lt;a href=&quot;https://www.yosoygames.com.ar/wp/2020/03/installing-memtest86-on-uefi-grub2-ubuntu/&quot;&gt;acá&lt;/a&gt;. La única diferencia para la compu en la que tuve que hacer esto es que, como bootea de memoria de estado sólido, en vez de bootear de &lt;span style=&quot;font-family: courier;&quot;&gt;/dev/sda4&lt;/span&gt; (o parecido) bootea de &lt;span style=&quot;font-family: courier;&quot;&gt;/dev/nvme0n1p1&lt;/span&gt;, por lo que las instrucciones sobre cómo armar el script para que grub tenga la entrada son un poquitín distintas.&lt;/p&gt;&lt;p&gt;En mi caso el archivo /etc/grub.d/40_memtest es así (en rojo lo que cambié)&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;#!/bin/sh&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;exec tail -n +3 $0&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;# This file provides an easy way to add custom menu entries.&amp;nbsp; Simply type the&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;# menu entries you want to add after this comment.&amp;nbsp; Be careful not to change&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;# the &#39;exec tail&#39; line above.&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;menuentry &#39;memtest86&#39; {&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;&lt;code class=&quot;plain spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;plain plain&quot;&gt;insmod part_gpt&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;&lt;code class=&quot;plain spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;plain plain&quot;&gt;insmod fat&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;&lt;code class=&quot;plain spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;plain plain&quot;&gt;set root=&#39;hd1,gpt&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&#39;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;&lt;code class=&quot;plain spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;plain plain&quot;&gt;chainloader /EFI/memtest86/BOOTX64.efi&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;&lt;code class=&quot;plain plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;No tengo muy claro porqué funciona (fue un SWAG).&lt;/p&gt;&lt;p&gt;Espero que les sirva,&lt;/p&gt;&lt;p&gt;Aureliano.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/6059311656475761683/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/6059311656475761683' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6059311656475761683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6059311656475761683'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/03/memtest-ubuntu-booteando-desde-efi.html' title='Memtest Ubuntu booteando desde EFI'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-7612430028366315378</id><published>2021-03-03T17:53:00.001-03:00</published><updated>2021-03-03T17:53:32.806-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ping"/><category scheme="http://www.blogger.com/atom/ns#" term="pingmon"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>pingmon en python3</title><content type='html'>&lt;p&gt;Hace un tiempo hice un s&lt;a href=&quot;https://aurelianito.blogspot.com/2017/12/mejor-pingmonpy.html&quot;&gt;criptcito en python para monitorear la conexión de red usando ping&lt;/a&gt;. Hoy quise usarlo de nuevo y descubrí que no anda en python3, así que lo adapté. Solo necesitaba 2 pequeños cambios:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;print es python3 es una función, así que tuve que agregar unos paréntesis.&lt;/li&gt;&lt;li&gt;sys.stdout.readline() en python 3 devuelve un montón de bytes (en vez de un string) así que agregué .encode() para transformarlo en string&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Dejo acá abajo la versión nueva:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;#!/usr/bin/env python3&lt;br /&gt;&lt;br /&gt;import subprocess&lt;br /&gt;import sys&lt;br /&gt;import re&lt;br /&gt;&lt;br /&gt;SEQ_NUMBER_RE = re.compile(&quot;.*icmp_seq=(\d+) ttl.*&quot;)&lt;br /&gt;&lt;br /&gt;def report(probes, count):&lt;br /&gt;&amp;nbsp; if len(probes) &amp;lt; count:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &quot;N/A&quot;&lt;br /&gt;&amp;nbsp; return str ( count - sum(probes[-count:]) )&lt;br /&gt;&lt;br /&gt;def monitor(ip):&lt;br /&gt;&amp;nbsp; probes = []&lt;br /&gt;&amp;nbsp; ping = subprocess.Popen([&quot;ping&quot;, ip], stdout=subprocess.PIPE)&lt;br /&gt;&amp;nbsp; stdout = ping.stdout&lt;br /&gt;&lt;br /&gt;&amp;nbsp; stdout.readline() # Ignore first line&lt;br /&gt;&amp;nbsp; line_count = 0&lt;br /&gt;&amp;nbsp; last_seq_number = 0&lt;br /&gt;&amp;nbsp; while True:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; line_count +=1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; seq_number = int( SEQ_NUMBER_RE.match(stdout.readline().decode()).group(1))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; probes.extend([0] * (seq_number - last_seq_number - 1))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; probes.append(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print( &quot;(%s) 10:%s 100:%s 1000:%s&quot; % (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; line_count, report(probes, 10), report(probes, 100), report(probes, 1000)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) )&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; probes = probes[-1000:] # Keep memory usage bounded&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last_seq_number = seq_number&lt;br /&gt;&lt;br /&gt;def main(argv):&lt;br /&gt;&amp;nbsp; monitor(argv[1])&lt;br /&gt;&lt;br /&gt;if __name__ == &#39;__main__&#39;:&lt;br /&gt;&amp;nbsp; main(sys.argv)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Happy hacking,&lt;br /&gt;Aureliano&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/7612430028366315378/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/7612430028366315378' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/7612430028366315378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/7612430028366315378'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/03/pingmon-en-python3.html' title='pingmon en python3'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-8465897666502414933</id><published>2021-03-02T12:02:00.003-03:00</published><updated>2021-03-02T12:02:23.883-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="touchpad"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Deshabilitando touchpad</title><content type='html'>&lt;p&gt;Mi &lt;a href=&quot;http://aurelianito.blogspot.com/2015/03/touch-prendido-y-apagado.html&quot;&gt;vieja técnica para deshabilitar el touchpad&lt;/a&gt; no anda en lubuntu 20.04. Así que tuve que googlear de nuevo cómo se hace.&lt;/p&gt;&lt;p&gt;Para ver todos los devices de entrada de X-Windows hay que correr&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;$ xinput list&lt;br /&gt;⎡ Virtual core pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=2&amp;nbsp;&amp;nbsp;&amp;nbsp; [master pointer&amp;nbsp; (3)]&lt;br /&gt;⎜&amp;nbsp;&amp;nbsp; ↳ Virtual core XTEST pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=4&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; pointer&amp;nbsp; (2)]&lt;br /&gt;⎜&amp;nbsp;&amp;nbsp; ↳ Telink 2.4G Mouse&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=11&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; pointer&amp;nbsp; (2)]&lt;br /&gt;⎜&amp;nbsp;&amp;nbsp; ↳ Telink 2.4G Mouse Consumer Control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=12&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; pointer&amp;nbsp; (2)]&lt;br /&gt;⎜&amp;nbsp;&amp;nbsp; ↳ SynPS/2 Synaptics TouchPad&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=16&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; pointer&amp;nbsp; (2)]&lt;br /&gt;⎣ Virtual core keyboard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=3&amp;nbsp;&amp;nbsp;&amp;nbsp; [master keyboard (2)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Virtual core XTEST keyboard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=5&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Power Button&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=6&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Video Bus&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=7&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Power Button&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=8&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Logitech Logitech G430 Gaming Headset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=9&amp;nbsp;&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Telink 2.4G Mouse System Control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=10&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ CHICONY HP Basic USB Keyboard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=13&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ HP TrueVision HD Camera: HP Tru&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=14&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ AT Translated Set 2 keyboard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=15&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ HP Wireless hotkeys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=17&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ HP WMI hotkeys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=18&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↳ Telink 2.4G Mouse Consumer Control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id=19&amp;nbsp;&amp;nbsp; [slave&amp;nbsp; keyboard (3)]&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;En mi compu el touchpad tiene el id 16, así que para apagarlo hay que correr &lt;span style=&quot;font-family: courier;&quot;&gt;xinput --disable &quot;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;SynPS/2 Synaptics TouchPad&quot;&lt;/span&gt; y para prenderlo &lt;span style=&quot;font-family: courier;&quot;&gt;xinput --enable &lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;SynPS/2 Synaptics TouchPad&quot;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/8465897666502414933/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/8465897666502414933' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8465897666502414933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/8465897666502414933'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/03/deshabilitando-touchpad.html' title='Deshabilitando touchpad'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-6409902508667894187</id><published>2021-02-16T17:43:00.002-03:00</published><updated>2021-02-16T17:43:15.004-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="golang"/><category scheme="http://www.blogger.com/atom/ns#" term="rant"/><title type='text'>Porqué no quiero programar en go</title><content type='html'>&lt;p&gt;Desde que me enteré de su existencia evito programar en go por su manejo de errores, porque te fuerza a implementar a mano el movimiento de los errores por el stack.&lt;/p&gt;&lt;p&gt;Hoy revisé la documentación. &lt;a href=&quot;https://blog.golang.org/errors-are-values&quot;&gt;Es peor&lt;/a&gt;. En el documento que linkié en la oración anterior proponen, para evitar poner ifs por todos lados, seguir ejecutando código después de que los errores suceden. Eso es terrible, lamentable,&amp;nbsp; parte de la documentación oficial del lenguaje y está incorporado en la biblioteca estándar.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Eviten go si pueden.&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/6409902508667894187/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/6409902508667894187' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6409902508667894187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/6409902508667894187'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2021/02/porque-no-quiero-programar-en-go.html' title='Porqué no quiero programar en go'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-1546789925809450213</id><published>2020-10-01T11:54:00.003-03:00</published><updated>2020-10-01T11:54:35.918-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guest-additions"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualbox"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Problema en VirtualBox después de upgradear host</title><content type='html'>&lt;p&gt;Estoy usando en mi notebook Lubuntu. Upgradié de 18.04 a 20.04.1 y después de hacer el upgrade y reinstalar en uno de mis guests (que también es LUbuntu 20.04) los guest additions, cuando intento loguearme en la GUI la VM se aborta. Para que esto no pase más, con la VM apagada fui a Settings -&amp;gt; Display -&amp;gt; Graphic Controller y elegí VMSVGA. Después de esto puedo loguearme y el autoresize anda bien :). La idea la saqué de &lt;a href=&quot;https://www.virtualbox.org/ticket/19679&quot;&gt;este reporte de bug&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Espero que les sirva!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/1546789925809450213/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/1546789925809450213' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1546789925809450213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1546789925809450213'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2020/10/problema-en-virtualbox-despues-de.html' title='Problema en VirtualBox después de upgradear host'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-3982042102443460780</id><published>2020-09-11T13:44:00.006-03:00</published><updated>2020-09-12T11:10:25.516-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="electrum"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="lubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="snap"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="vscode"/><category scheme="http://www.blogger.com/atom/ns#" term="x"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Bug en VSCode</title><content type='html'>&lt;p&gt;En el último año empecé a usar &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;VSCode&lt;/a&gt; para programar. Lo uso de una forma extraña, ya que me conecto por ssh a la máquina virtual donde está instalado, forwardeando X11. Aparte lo instalé usando el snap. Hoy lo quise arrancar y me dio una sorpresa fea. En vez de arrancar, solo apareció un rectángulo gris. Me di cuenta que había un problema así que &lt;a href=&quot;https://github.com/microsoft/vscode/issues/106496&quot; target=&quot;_blank&quot;&gt;reporté el bug&lt;/a&gt; y busqué un workarround. Al final me di cienta que era porque en VSCode upgradearon a Electron 9 y &lt;a href=&quot;https://github.com/electron/electron/issues/22775&quot; target=&quot;_blank&quot;&gt;tiene un problema cuando corre con forwardeo de X11 adentro de un container&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Por suerte también hay un workarround. Corrí &lt;pre&gt;export QT_X11_NO_MITSHM=1&lt;/pre&gt; en bash antes de arrancarlo y se solucionó el problema.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update: &lt;/b&gt;Si no quieren setear una variable de entorno pueden arrancar VSCode corriendo &lt;pre&gt;code --no-xshm&lt;/pre&gt; y también workarroundea el problema.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/3982042102443460780/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/3982042102443460780' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3982042102443460780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/3982042102443460780'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2020/09/bug-en-vscode.html' title='Bug en VSCode'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1437970354124720603.post-1231293007610090034</id><published>2020-07-22T10:17:00.002-03:00</published><updated>2020-07-22T10:17:29.909-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="screenshot"/><category scheme="http://www.blogger.com/atom/ns#" term="scrot"/><title type='text'>Trabajo nuevo, truco nuevo</title><content type='html'>Ayer me contaron un comando muy cómodo para hacer screenshots en linux. Si corro `scrot -bs` puedo hacer un screenshot de un cacho de la pantalla, que elijo con el mouse.</content><link rel='replies' type='application/atom+xml' href='http://aurelianito.blogspot.com/feeds/1231293007610090034/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1437970354124720603/1231293007610090034' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1231293007610090034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1437970354124720603/posts/default/1231293007610090034'/><link rel='alternate' type='text/html' href='http://aurelianito.blogspot.com/2020/07/trabajo-nuevo-truco-nuevo.html' title='Trabajo nuevo, truco nuevo'/><author><name>aurelianito</name><uri>http://www.blogger.com/profile/16123954643930749058</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>