<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-19240340</atom:id><lastBuildDate>Thu, 31 May 2012 21:37:44 +0000</lastBuildDate><title>Can Tonet</title><description>Cantonet és un raconet de Can Tonet on trobar-hi... principalment coses relacionades amb Informàtica/Internet</description><link>http://cantonet.adimena.net/</link><managingEditor>noreply@blogger.com (arosa)</managingEditor><generator>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-7628070749615633238</guid><pubDate>Thu, 26 Jan 2012 15:11:00 +0000</pubDate><atom:updated>2012-01-26T16:14:29.248+01:00</atom:updated><title>Subversion: Com ignorar tots els arxius excepte els que ens interessa.</title><description>&lt;div&gt;Per ignorar-ho tot excepte els php,  la comanda seria la següent:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#  svn propset svn:ignore "*[!p][!h][!p]&lt;/div&gt;&lt;div&gt;# *.php?*" .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;És a dir, cadascuna de les lletres de l'extensió entre [] i negada (amb !) i a la segona lína tal qual entre *. i ?*.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vist a: &lt;a href="http://www.thoughtspark.org/node/38"&gt;http://www.thoughtspark.org/node/38&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-7628070749615633238?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2012/01/subversion-com-ignorar-tots-els-arxius.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-2086340562439134492</guid><pubDate>Mon, 05 Dec 2011 09:25:00 +0000</pubDate><atom:updated>2011-12-05T11:20:57.605+01:00</atom:updated><title>Opera per fi suportarà peticions CORS</title><description>Amb un retràs important respecte la resta de navegadors, finalment Opera suportarà peticions CORS (Cross-Origin Resource Sharing)&lt;a href="http://my.opera.com/core/blog/2011/10/28/cors-goes-mainline"&gt;&lt;br /&gt;http://my.opera.com/core/blog/2011/10/28/cors-goes-mainline&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-2086340562439134492?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2011/12/opera-per-fi-suportara-peticions-cors.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-203357056819305533</guid><pubDate>Mon, 01 Aug 2011 12:29:00 +0000</pubDate><atom:updated>2011-08-01T14:43:27.928+02:00</atom:updated><title>Freqüència i Temperatura de la CPU, i apagat del sistema des de la línia de comandes</title><description>Ara que és estiu, amb la calor els portàtils sovint pateixen problemes de temperatura. A continuació algunes de les comandes que es poden executar per crear scripts a mida per gestionar alarmes i accions "proactives" per evitar sobrecalentaments.. funcionen en el meu Ubuntu 11.04, i la gràcia és que no cal tenir privilegis de "root" per executar-les:&lt;br /&gt;&lt;br /&gt;Comandes per obtenir la temperatura dels cores de la CPU:&lt;br /&gt; # sensors | grep 'Core 0' | cut -c15-16&lt;br /&gt; # sensors | grep 'Core 2' | cut -c15-16&lt;br /&gt;&lt;br /&gt;Comanda per canviar la política de l'escalat de la freqüencia de la CPU (previ un # sudo apt-get install hal)&lt;br /&gt; # dbus-send --print-reply --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.CPUFreq.SetCPUFreqGovernor string:powersave&lt;br /&gt;&lt;br /&gt;Comanda per suspendre l'ordinador a RAM&lt;br /&gt; # dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-203357056819305533?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2011/08/frequencia-i-temperatura-de-la-cpu-i.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-1944157980563863308</guid><pubDate>Mon, 18 Jul 2011 09:13:00 +0000</pubDate><atom:updated>2011-07-18T11:26:04.838+02:00</atom:updated><title>Establir el monitor primari en Gnome</title><description>Actualment, i amb la ubiqüitat del portàtils, les configuracions multi-monitor han esdevingut la norma i no l'excepció. Per això em sorprenen bugs (per omissió) com el del  selector de configuració dels monitors de Gnome "gnome-display-properties":&lt;br /&gt;&lt;br /&gt;https://bugs.launchpad.net/ubuntu/+source/x11-xserver-utils/+bug/206528&lt;br /&gt;&lt;br /&gt;No hi ha una manera visual directe d'establir quin ha de ser el monitor principal... Per sort la solució és senzilla:&lt;br /&gt;&lt;blockquote&gt;xrandr --output VGA1 --primary&lt;/blockquote&gt;on VGA1 és el nom del monitor que ha de ser el primari.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Per llistar els monitor detectats es pot executar xrand sense cap paràmetre. Addicionalment, l'arxiu monitors.xml (situat a &lt;span class="st"&gt;en els Ubuntus recents "~/.conf"&lt;/span&gt;)&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;No hi ha manera de seleccionar quin monitor ha de ser el primari:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-1944157980563863308?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2011/07/establir-el-monitor-primari-en-gnome.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-4269507940420849826</guid><pubDate>Mon, 02 May 2011 17:36:00 +0000</pubDate><atom:updated>2011-05-02T19:40:54.060+02:00</atom:updated><title>Configuració d'ESMP, un senzill MTA re-enviador de correu sortint.</title><description>&lt;p style="margin-bottom: 0cm"&gt;Moltes vegades es vol poder enviar tot el correu sortint d'una màquina de manera senzilla a través d'un altre servidor, el que es coneix com a relay host. Una possibilitat, en comptes de tenir instal·lat un MTA complet (sendmail, postfix, qmail,...  per anomenar-ne alguns) es pot usar esmtp. Aquest paquet ens proporciona aquesta funcionalitat de manera ràpida i efectiva. A tall d'exemple per posar-lo en marxa en un sistema Debian només calen 3 passos:&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;Pas 1: Instal·lar-lo (en Debian aquesta instrucció també  desintal·la exim4, l'MTA per defecte), executar:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;# sudo apt-get install esmtp esmtp-run libesmtp5&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Pas 2: Editar la configuració tot informant les dades del host a través del que es volen enviar els issatges:&lt;br /&gt;&lt;blockquote&gt;# sudo nano /etc/esmtprc&lt;/blockquote&gt;&lt;br /&gt;Concretament cal informar aquestes 3 dades:&lt;br /&gt;&lt;blockquote&gt;hostname = XXXXXXXXXXX:25&lt;br /&gt;username = YYYYYYYY&lt;br /&gt;password = ZZZZZZZZ&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Pas 3: Fer una prova de que efectivament funciona:&lt;br /&gt;&lt;blockquote&gt;# echo "Prova" | sendmail adreça@de_correu.vàlida&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-4269507940420849826?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2011/05/configuracio-desmp-un-senzill-mta-re.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-696811438395818050</guid><pubDate>Wed, 22 Dec 2010 12:11:00 +0000</pubDate><atom:updated>2011-01-10T16:59:11.030+01:00</atom:updated><title>Permetre crides AJAX des d'un domini diferent (Peticions "Cross-site")</title><description>El servidor específica en la resposta HTTP a quins dominis permet efectuar consultes (si és que n'hi ha algun més que el propi d'on es troba allotjat) mitjançant la capçalera "Access-Control-Allow-Origin"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Així doncs si la crida AJAX va cap a un recurs PHP que es trobi en un domini diferent es pot fer si modifiquem l'script PHP perquè retorni una capçalera "Access-Control-Allow-Origin" adequada:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;  header(&lt;span class="string" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: blue; background-color: inherit; "&gt;'Access-Control-Allow-Origin: http://domini_desdonhiha_el_javascript_amb_ajax.com'&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "&gt;);  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;o fins i tot per permetre qualsevol origen:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;  header(&lt;span class="string" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: blue; background-color: inherit; "&gt;'Access-Control-Allow-Origin: "*"'&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "&gt;);  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "&gt;&lt;span class="Apple-style-span"&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;D'altre banda si no es tracta d'un PHP o no ho podem modificar  les capçaleres HTTP &lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;per la raó que sigui, l'Apache es pot configurar mitjançant directiva o mitjançant un arxius .httacces per afegir-la, en aquest darrer cas la directiva podria ser: &lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;header add &lt;span class="string" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: blue; background-color: inherit; "&gt;Access-Control-Allow-Origin *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; line-height: 14px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: 16px; line-height: normal; "&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;Cal tenir el mòdul "mod_headers" d'apache carregat perquè funcionin aquestes directives. En Debian/Ubuntu seria assegurant-nos que a "/etc/apache2/mods-enabled" existeix el headers.load ( i si no és així enllaçant-li des dels mods-available amb un "&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: monospace; font-size: 13px; line-height: 19px; "&gt;ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load&lt;/span&gt;")&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;Un exemple d'afegir la capçaera mitjançant la directiva a l'arxiu de configuració seria afegir&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;b&gt;Header set Access-Control-Allow-Origin "*" &lt;/b&gt;a l'arxiu de configuració del lloc web, per exemple dins de la secció  &lt;directory&gt; que ens interessi. En aquest cas, per què Apache agafi els canvis de configuració caldria reiniciar-lo&lt;/directory&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: monospace; font-size: 13px; line-height: 19px; "&gt;sudo /etc/init.d/apache2 reload&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-696811438395818050?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2010/12/permetre-crides-ajax-des-dun-domini.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-3436907727036986106</guid><pubDate>Sat, 04 Dec 2010 12:14:00 +0000</pubDate><atom:updated>2010-12-04T13:40:20.865+01:00</atom:updated><title>Ús del Subversion, pas a pas</title><description>Malgrat està una mica "passat de moda" i els projectes mínimament grans sembla s'han passat tots a git o mercurial, Subversion encara és útil en molts casos... A continuació un pas a pas realitzat en un Ubunu 10.04 (LTS) Server, esquemàtic, de com posar en marxa un repositori i la seva utilització bàsica com a "client" del repositori des de la línia de comandes.&lt;div&gt;De tota manera per als clients, des de la meva experiència, és recomanable usar alguna eina gràfica, i les més recomanables són el &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoisSVN&lt;/a&gt; pels clients Windows i el &lt;a href="http://www.rabbitvcs.org/"&gt;Rabbitvcs &lt;/a&gt;per GNU/Linux, apart, és clar, del plug-in &lt;a href="http://subclipse.tigris.org/"&gt;Subclipse &lt;/a&gt;si es desenvolupa des d'Eclipse.&lt;br /&gt;&lt;h2 class="western"&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 class="western"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;INSTAL·LACIÓ:&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;h3 class="western"&gt;Instal·lar els paquets&lt;/h3&gt; &lt;p style="margin-bottom: 0cm"&gt;# sudo apt-get install subversion libapache2-svn&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Configurar un repositori: crear-lo&lt;/h3&gt; &lt;p&gt;# mkdir &lt;span&gt;/home/usuari/repositori&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;# svnadmin create &lt;/b&gt;&lt;span&gt;/home/usuari/repositori/&lt;/span&gt;&lt;span&gt;&lt;b&gt;projecteX&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Configurar un repositori: servir-lo via apache&lt;/h3&gt; &lt;p&gt;# sudo chown -R www-data:www-data &lt;span&gt;/home/usuari/repositori/&lt;/span&gt;&lt;/p&gt; &lt;p&gt;# sudo nano /etc/apache2/sites-available/default&lt;/p&gt; &lt;p&gt;&lt;i&gt; I afegir-hi :&lt;/i&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span&gt;&lt;span&gt;&lt;location&gt;&lt;/location&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;DAV svn&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;SVNParentPath  &lt;span&gt;/home/usuari/repositori&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;SVNListParentPath On&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;AuthType Basic&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;AuthName "Repositori de Control de Versions"&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;AuthUserFile /etc/subversion/passwd&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;  &lt;span&gt;&lt;span&gt;Require valid-user&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt; &lt;/blockquote&gt; &lt;p&gt;# sudo htpasswd -c /etc/subversion/passwd usuari_http&lt;/p&gt; &lt;p&gt;# sudo apache2ctl restart&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Configurar una acció automàtica al servidor després de cada “commit”&lt;/h3&gt; &lt;p&gt;&lt;span&gt;# vi /home/usuari/repositori&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: normal"&gt;/projecteX&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;/hooks/post-commit&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt; &lt;/i&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;I afegir-hi les accions que volguem, per exemple, actualitzar una carpeta amb els contiguts:&lt;/i&gt;&lt;/p&gt; &lt;blockquote style="margin-left: 0cm"&gt;&lt;span&gt;&lt;span&gt; /usr/bin/svn update /var/www/test &gt;&gt; /var/log/svn/deploy.log 2&gt;&amp;amp;1&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt; En aquest exemple, caldrà que “/var/log/svn” existeixi i tingui permisos per l'usuari “www- data”&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 class="western"&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 class="western"&gt;ÚS:&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;h3 class="western"&gt;Importar els continguts el primer cop al repositori&lt;/h3&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;# svn import &lt;/b&gt;&lt;span&gt;&lt;span style="font-weight: normal"&gt;/home/usuari/prjX_backup&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal"&gt; &lt;/span&gt;file:///&lt;span&gt;home/usuari/repositori/&lt;/span&gt;&lt;span&gt;&lt;b&gt;projecteX&lt;/b&gt;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Descarregar els continguts del repositori a una carpeta "&lt;span class="Apple-style-span" style="font-size: 16px; font-weight: normal; "&gt;publica_projecte&lt;/span&gt;", el primer cop&lt;/h3&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;# svn co&lt;/b&gt; file:///&lt;span&gt;home/usuari/repositori/&lt;/span&gt;&lt;span&gt;&lt;b&gt;projecteX&lt;/b&gt;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;  &lt;span&gt;/var/www/publica_projecte&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Actualitzar la carpeta amb els canvis que hi hagi al repositori&lt;/h3&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;b&gt;# svn update&lt;/b&gt; &lt;span&gt;/var/www/publica_projecte/&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Afegir nous continguts a la carpeta i “pujar-los” al repositori&lt;/h3&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;# mkdir &lt;span&gt;/var/www/publica_projecte/&lt;/span&gt;&lt;span&gt;&lt;b&gt;nova_carpeta&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal"&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;i&gt;hi copiem o hi creem els continguts que calgui amb “cp” o com ens sembli...&lt;/i&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal"&gt;&lt;span&gt;cd &lt;span&gt;/var/www/publica_projecte&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; background: transparent"&gt;&lt;span&gt;&lt;b&gt;# svn add &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;nova_carpeta&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; background: transparent"&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;# svn&lt;/span&gt;&lt;span&gt; commit&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; background: transparent"&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 class="western"&gt;&lt;/h3&gt; &lt;h3 class="western"&gt;Enviar els canvis fets al repositori&lt;/h3&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span&gt;&lt;i&gt;En general qualsevol canvi o modificaió als continguts que es vulguin “pujar” al servidor.&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal"&gt;&lt;span&gt;# cd &lt;span&gt;/var/www/publica_projecte&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; background: transparent"&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;# svn&lt;/span&gt; commit&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 class="western"&gt;&lt;/h3&gt; &lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Fonts: &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  https://help.ubuntu.com/10.04/serverguide/C/subversion.html   http://elliotth.blogspot.com/2005/02/better-subversion-post-commit-hook.html&lt;/span&gt;&lt;/span&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;a href="http://elliotth.blogspot.com/2005/02/better-subversion-post-commit-hook.html"&gt;&lt;/a&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-3436907727036986106?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2010/12/us-del-subversion-pas-pas.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-7409993070504378687</guid><pubDate>Tue, 23 Nov 2010 17:11:00 +0000</pubDate><atom:updated>2010-11-23T19:35:36.012+01:00</atom:updated><title>SSH invers.</title><description>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;/p&gt;&lt;span&gt;&lt;span&gt;Ho he fet 30 vegades però cada cop he hagut de buscar els passos exactes.. per futura referència i per si pot ajudar a algú.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;blockquote&gt;Escenari: Volem connectar-nos a un equip a&lt;/blockquote&gt;&lt;blockquote&gt;mb connexió a internet però que no té cap port “accessible” i que només port sortir pels ports 53, 80 i 443 Disposem d'un servidor a Internet amb IP pública i que controlem (anomenem-la &lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;IP_PÚB_NOSTRE_SERVER&lt;/span&gt;)&lt;/blockquote&gt;&lt;blockquote&gt;&lt;img src="http://1.bp.blogspot.com/_7tVuVfFaIAM/TOwJMmcku-I/AAAAAAAAFBo/goF74ezQONc/s320/sshinvers.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 284px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5542815353469713378" /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;1. Al servidor que controlem hi creem un usuari per fer la connexió SSH inversa. Per exemple amb l'script “adduser” dels Debian/Ubuntu.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt;# &lt;b&gt;sudo adduser tmp &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;2. Per seguretat, i si ens interessa que aquest compte "tmp" que hem creat, i que serà usat al client no pugui obtenir una un cónsola de comandes al servidor,  editem l'arxiu /etc/passwd &lt;/span&gt;&lt;/span&gt;al servidor ihi canviem el "/bin/bash" del final de la linea de l'usuari "tmp" per /usr/sbin/nologin (o la localització d'aquest nologin... si tenim dubtes, ens assegurem que existeix amb un “locate nologin“)&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt; tmp:x:1001:1001:Temporal,,,:/home/tmp:/usr/sbin/nologin &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;3. Al servidor editem l'arxiu de configuració del servei ssh a “/etc/ssh/sshd_config” i hi afegim que escolti per algun dels ports que el client pot usar per sortir.. per exemple el 53 (nota: ha de ser un port que estigui “lliure”, és a dir que si tenim per exemple l'apache escoltant pel port 80, no el podrem usar). Cal afegir a sota del Port 22 que hi ha per defecte: &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt;Port 53 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;4. Reiniciem el servei sshd i anem al client. (p.e. /etc/init.d/ssh restart) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;5. Al client fem la comanda del ssh invers pròpiament dit:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt; # &lt;b&gt;sudo ssh -R 4430:localhost:22 tmp@IP_PÚB_NOSTRE_SERVER -p 53 -N &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;El primer cop ens demanarà...&lt;br /&gt;&lt;span class="Apple-style-span"&gt;The authenticity of host ' IP_PÚB_NOSTRE_SERVER (IP_PÚB_NOSTRE_SERVER)' can't be established.  RSA key fingerprint is xx:xx:xx:a1:5f:1a:89:78:90:7b:2e:22:9a:xx:xx:xx.  Are you sure you want to continue connecting (yes/no)? &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;escrivim que sí, i ens demanarà el password de l'usuari “tmp” que hem creat més amunt al server amb l'”adduser” i s'hauria de quedar a l'espera...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;6. Només falta que, ara ja &lt;/span&gt;&lt;/span&gt;des del server, ens connectem al port 4430 del localhost host que realment  està redirigit cap al ssh del client: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"&gt;# &lt;b&gt;ssh USUARI_CLIENT@localhost -p 4430 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En aquest exemple, USUARI_CLIENT és un usuari vàlid per fer una connexió ssh al client, i  IP_PÚB_NOSTRE_SERVER és la IP pública del nostre servidor, i el port és el 4430 però podria ser qualsevol no tallat.&lt;/span&gt;&lt;/span&gt;&lt;p style="margin-bottom: 0cm"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;&lt;span style="font-weight: normal"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-7409993070504378687?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2010/11/ssh-invers.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7tVuVfFaIAM/TOwJMmcku-I/AAAAAAAAFBo/goF74ezQONc/s72-c/sshinvers.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-1727507732520404760</guid><pubDate>Thu, 03 Jun 2010 08:00:00 +0000</pubDate><atom:updated>2010-06-03T10:10:41.952+02:00</atom:updated><title>A Google ho tenen clar, la culpa és de Microsoft.</title><description>Per aquells sorpresos que Google hagi &lt;a href="http://www.ft.com/cms/s/2/d2f3f04e-6ccf-11df-91c8-00144feab49a.html"&gt;decidit deixar d'usar Windows internament&lt;/a&gt; tot dient que les &lt;a href="http://www.osnews.com/story/22727/Google_To_Cease_Censorship_in_China_Might_Close_Google_cn"&gt;falles de seguretat&lt;/a&gt; són culpa d'aquest, ho haurien pogut pre-veure llegint el missatge d'error que Google Chrome mostra quan falla inesperadament en un sistema Windows: "&lt;span style="font-style: italic;"&gt;Google Chrome no és responsable d'aquests actes&lt;/span&gt;", tot referint-se al pet que ha fet l'aplicació fa uns instants&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7tVuVfFaIAM/TAdhZ9lUDLI/AAAAAAAAEso/3busUUIz8ls/s1600/responable.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 111px;" src="http://1.bp.blogspot.com/_7tVuVfFaIAM/TAdhZ9lUDLI/AAAAAAAAEso/3busUUIz8ls/s320/responable.jpg" alt="" id="BLOGGER_PHOTO_ID_5478454570375187634" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-1727507732520404760?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2010/06/google-ho-tenen-clar-la-culpa-es-de.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7tVuVfFaIAM/TAdhZ9lUDLI/AAAAAAAAEso/3busUUIz8ls/s72-c/responable.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-2752898936006032076</guid><pubDate>Tue, 02 Mar 2010 19:42:00 +0000</pubDate><atom:updated>2010-11-03T14:12:43.108+01:00</atom:updated><title>Checking for corrupt, not cleanly closed and upgrade needing tables..</title><description>Després d'actualitzar el mysql 5.0 al 5.1 en un Debian Lenny, al reiniciar el servei em donava el següent missatge (un error o warning, pensava jo):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;debian:~# /etc/init.d/mysql restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Stopping MySQL database server: mysqld.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Starting MySQL database server: mysqld.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;"&gt;Checking for corrupt, not cleanly closed and upgrade needing tables..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En un primer moment em vaig pensar que potser calia executar a mà l'actualitzador de les dades entre versions de mysql. Però no, la seva execució deia que les dades ja estaven actualitzades:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;debian:~# mysql_upgrade -p&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Enter password:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Looking for 'mysql' as: mysql&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Looking for 'mysqlcheck' as: mysqlcheck&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;"&gt;This installation of MySQL is already upgraded to 5.1.44, use --force if you still need to run mysql_upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Total, que després d'una cerca a internet vaig trobar el resultat... El missatge està mal triat amb ganes. A continuació us mostro entre [ ] la part del missatge que es dóna per sobre-entesa...&lt;br /&gt;&lt;br /&gt;"[I am now] Checking for corrupt [tables]"&lt;br /&gt;"[I am now checking for ], not cleanly closed [tables] and "&lt;br /&gt;"[I am now checking for ] upgrade needing tables"&lt;br /&gt;&lt;br /&gt;És a dir, que &lt;span style="font-weight: bold;"&gt;mysql simplement va dient què és el que està fent&lt;/span&gt;: 1. Comprovar si hi ha taules corruptes, 2. [Comprovar si] hi ha taules tancades inesperadament i, finalment, [Comprovar si alguna taula] necessita ser actualitzada...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-2752898936006032076?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2010/03/checking-for-corrupt-not-cleanly-closed.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-8705318465284780425</guid><pubDate>Fri, 13 Nov 2009 14:09:00 +0000</pubDate><atom:updated>2010-02-28T17:20:53.030+01:00</atom:updated><title>Missatges d'error poc amigables</title><description>Tot i que no està a l'alçada d'&lt;a href="http://www.365questions.org/2007/05/16/windows-errors-best-of/comment-page-2/"&gt;alguns missatge d'error&lt;/a&gt; que es poden trobar en el S.O. privatiu més utilitzat al món, de tant en tant el GNU/Linux (concretament GNOME 2.26 a Fedora 11) també te'n pot deixar anar alguna de bona...&lt;br /&gt;Aquest missatge me'l donava després d'intentar tancar el procés d'actualització de la distribució... jo m'he quedat pensant "Millor que no triï &lt;span style="font-style: italic;"&gt;Quit&lt;/span&gt;, però... si tanco, no estaré també cancel·lant? Aleshores millor cancel·lo, però.... no m'està dient que no puc cancel.lar? per tant.... mmmm....." :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7tVuVfFaIAM/Sv1sIfwlivI/AAAAAAAAECM/NK8xNmfit7g/s1600-h/Screenshot-Untitled+Window.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 145px;" src="http://2.bp.blogspot.com/_7tVuVfFaIAM/Sv1sIfwlivI/AAAAAAAAECM/NK8xNmfit7g/s320/Screenshot-Untitled+Window.png" alt="" id="BLOGGER_PHOTO_ID_5403594021134502642" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-8705318465284780425?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2009/11/missatges-derror-poc-amigables.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7tVuVfFaIAM/Sv1sIfwlivI/AAAAAAAAECM/NK8xNmfit7g/s72-c/Screenshot-Untitled+Window.png' height='72' width='72'/><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-1679470333466585223</guid><pubDate>Fri, 02 Oct 2009 12:25:00 +0000</pubDate><atom:updated>2009-10-02T14:56:11.460+02:00</atom:updated><title>WAP54G en mode client</title><description>&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;Per connectar la meva xarxa amb cable a una xarxa wifi de manera permanent m'han deixat un Linksys WAP54G (versió 2). L'aparell té 2 interfícies, la wifi i un port ethernet. Com que el Firmware per defecte no permet posar el punt d'accés a mode client, i altres invents no són posibles (p.e. WDS) hi he instal·lat una versió del firmware modificada p&lt;/span&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span style="text-decoration: none;"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="text-decoration: none;"&gt;r &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.sveasoft.com/modules/phpBB2/viewforum.php?f=10"&gt;&lt;span&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;SveaSoft, el&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Freya v2.06 (trobat a &lt;a href="http://www5.musatcha.com/musatcha/computers/kismet_on_the_linksys_wap54g.htm"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;http://www5.musatcha.com/musatcha/computers/kismet_on_the_linksys_wap54g.htm&lt;/span&gt;&lt;/a&gt;) i que es pot carregar al dispositiu mitjançant l'opció “upgrade” disponible a la mateixa interfície d'administració que ve de fàbrica amb el dispositiu.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;Amb el nou firmware instal·lat i des de l'interfície web &lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;d'administració del router es pot acitvar el telnet, de manera que s'hi pugAixò permet fer la configuració del dispositiu sense haver de passar per la limitada interfície w&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;eb.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="firstHeading"&gt;&lt;/a&gt;&lt;/span&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;El problema és que no me n'he ensortit amb el Freya i he hagut d'instal·lar una versió modificada del OpenWRT, el &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;Freifunk. L'aventura, resumida ha anat així...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;El passos fins on l'he aconseguit fer anar amb el Freya, són:&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;1.- wp ap 0&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Canviem el mode de l'acces point per fer de client.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;2.- wl scan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Que faci una llista de les xarxes que “veu”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;3.- wl scanresults&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Per que ens mostri el resultat de l'scan anterior&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;4.- wl join XarxaWifiOnVolemConectarnos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Que es connecti a la xarxa “XarxaWifiOnVolemConectarnos”. Sense cap més paràmetre ja que és tracta d'una xarxa sense seguretat WEP ni WPA ni res.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;5.- wl status&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Mostra l'estat de la wifi, per assegurar-nos que efectivament s'ha associat amb la xarxa que volem&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Fins aquí bé. El problema l'he tingut al moment de fer funcionar l'enrutament ip...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;D'una banda les targetes venen en un “bridge” o pont (el br0) entre elles que resultava amb la impossibilitat de configurar l'eth1 (la wifi) independentment.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;6.- brctl delif br0 eth1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Treiem l'eth1 del pont de tarjetes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;7.- ifconfig eth1 X.X.X.X netmask Y.Y.Y.Y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Configurem l'adaptador inalàmbric amb l'IP i màscara que toqui.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Arribat aquest punt, em semblava que la cosa estava feta ja&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; que amb un ping es veien hosts de la xarxa wifi.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;El problema és que no he trobat cap manera de fer NAT de sortida pels meus hosts... la solu&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;ció amb iptables ( algo com iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth1 -j MASQUERADE) &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;per emmascarar els hosts de la meva xarxa no es pot usar ja que no hi ha iptables.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;Després de busca&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;r debades per Internet, he decidit canviar d'estratègia... buscar un firmware diferent.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;La versió 2 del WAP54G és un dispositiu força limitat i per això finalment m'he decantat per una versió específica pel &lt;a href="http://download.berlin.freifunk.net/ipkg/_trx/openwrt-freifunk-1.6.36-ca.trx"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;WAP54G del Freifunk (en Català!)&lt;/span&gt;&lt;/a&gt;, que és una versió especial reduïda del OpenWrt: &lt;a href="http://wiki.freifunk.net/Freifunk_Firmware_%28English%29#WAP54G"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;http://wiki.freifunk.net/Freifunk_Firmware_(English)#WAP54G&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;Per instal·lar-lo des d'on ho havia deixat amb el Fr&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;eya, m'han calgut 2 coses:&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;8.- &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;b&gt;nvram&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; set boot_wait=on;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;b&gt;nvram&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Times New Roman,serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; commit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;Per activar que el dispositiu esperi uns segons després de cada reiniciada, temps durant el qual es pot transferir mitjançant el protocol “tftp” un nou firmware.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;I, finalment, transferir-lo tal i com expliquen al web de &lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;Freifunk.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Times New Roman,serif;font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;La configuració amb el nou firmware l'he feta mitjançant la interfície web i el manual del lloc web i m'ha funcionat a la primera :-)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7tVuVfFaIAM/SsXyi6v3wjI/AAAAAAAAD-c/LX4auR4j9Ms/s1600-h/Captura-wifi54+-+Hola%21+-+Chromium.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 274px;" src="http://2.bp.blogspot.com/_7tVuVfFaIAM/SsXyi6v3wjI/AAAAAAAAD-c/LX4auR4j9Ms/s320/Captura-wifi54+-+Hola%21+-+Chromium.png" alt="" id="BLOGGER_PHOTO_ID_5387979210918183474" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'Times New Roman',serif;font-size:100%;"  &gt;Finalment, tot i que no té gaire relació amb l'entrada (una mica sí), deixo un enllaç a molta documentació super completa sobre la tecnologies de les xarxes inalàmbriques que he trobat mentre resolia el que explico en aquest post: &lt;a href="http://www.wilac.net/index_pdf.html"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;http://www.wilac.net/index_pdf.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-1679470333466585223?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2009/10/per-connectar-la-meva-xarxa-amb-cable.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7tVuVfFaIAM/SsXyi6v3wjI/AAAAAAAAD-c/LX4auR4j9Ms/s72-c/Captura-wifi54+-+Hola%21+-+Chromium.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-7280053874703417825</guid><pubDate>Wed, 08 Jul 2009 15:36:00 +0000</pubDate><atom:updated>2009-07-08T18:29:38.268+02:00</atom:updated><title>Wifi de l'Eeepc 900 a l'Ubuntu 9.04</title><description>&lt;div&gt;Acabo d'instal·lar ubuntu 9.04 al meu eeepc 900,  i estranyament ( ja que a &lt;a href="http://www.google.co.uk/search?hl=en&amp;amp;cd=1&amp;amp;q=ubuntu+9.04+eeepc+900"&gt;tot arreu&lt;/a&gt; havia llegit que havia de funcionar directament)  he hagut d'afegir a mà el mòdul de la wifi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;primer l'he carregat a mà per axsegurar-me que el problema era aquest:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo modprobe ath5k&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i quan he vist que sí, he afegit a /etc/modules "ath5k" de manera que el carregui cada cop que es reinicia el sistema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;D'altre banda he descobert (vist a &lt;a href="http://pario.no/2009/05/24/ufw-and-ip-masquerading/"&gt;Pario TechnoBlob&lt;/a&gt; així com a la &lt;a href="https://help.ubuntu.com/9.04/serverguide/C/firewall.html"&gt;Ubuntu documentation&lt;/a&gt;) que amb l'ufw (Uncomplicated Firewall) per compartir la connexió a Internet és (quasi) més sencill que amb iptables mateix:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a /etc/default/ufw cal canviar el DEFAULT_FORWARD_POLICY a ACCEPT, quedaria així:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DEFAULT_FORWARD_POLICY="ACCEPT"&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a /etc/ufw/sysctl.conf cal canviar el net.ipv4.ip_forward a 1, quedaria així:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;net.ipv4.ip_forward=1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i a /etc/ufw/before.rules cal afegir el següent:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# nat Table rules&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;*nat&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:POSTROUTING ACCEPT [0:0]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# Forward traffic from eth1 through eth0.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# don't delete the 'COMMIT' line or these nat table rules won't be processed&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;COMMIT&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;aquest últim pas cal tenir en compte que se suposa que la connexió a internet està connectada a la targeta de xarxa eth0 i que els clients amb els que volem compartir internet tenen la màquina que s'està configurant com a "gateaway" i que ho fan des d'un rang d'ips 192.168.2.0/24.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-7280053874703417825?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2009/07/wifi-de-leeepc-900-lubuntu-904.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-7332068715812754770</guid><pubDate>Wed, 14 Jan 2009 20:02:00 +0000</pubDate><atom:updated>2009-01-15T00:15:45.228+01:00</atom:updated><title>Gambas</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7tVuVfFaIAM/SW5MwtZE-AI/AAAAAAAAC0M/wpucsnQnnJI/s1600-h/gambas3.png"&gt;&lt;img style="cursor: pointer; width: 128px; height: 128px;" src="http://3.bp.blogspot.com/_7tVuVfFaIAM/SW5MwtZE-AI/AAAAAAAAC0M/wpucsnQnnJI/s200/gambas3.png" alt="" id="BLOGGER_PHOTO_ID_5291251011909122050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Gambas  és un modern entorn gràfic de desenvolupament integrat (editor, compilador, debugador, empaquetador, etc...) per entorns GNU/Linux o BSD. Usa una variant pròpia de BASIC amb característiques d'Orientació a Objecte, i tot i que no pretén ser un clon del Microsoft Visual Basic hi guarda moltes similituds; l'autor principal del projecte reconeix que part dels objectius originals era assemblar-s'hi en alguns aspectes. La pàgina web oficial del projecte és &lt;a href="http://gambas.sourceforge.net/"&gt;http://gambas.sourceforge.net/&lt;/a&gt;.&lt;br /&gt;És interessant notar que les característiques de Gambas (facilitat d'ús, característiques d'Oo, components d'accés a BBDD independents d'aquesta, entre d'altres), juntament amb l'expansió que el sistema operatiu GNU/Linux té actualment, el converteixen en un candidat ideal per omplir un important buit: Un entorn accessible a tots els públics (és a dir fàcil d'usar i de programar-hi) per desenvolupar aplicacions, prou potent perquè les indústries que abans empraven el Visual Basic per la creació d'aplicacions d'ús intern per solucionar petites necessitats sense grans pretensions ni pressupost (el que alguns anomenen aplicacions “in-house”), ara passin a usar GNU/Linux i Gambas per desenvolupar-les.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Història del projecte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El projecte va ser concebut l'any 1999, i la primera versió pública va aparèixer el 2001. Des d'aleshores, el projecte el dirigeix l'autor original, Benoît Minisini.&lt;br /&gt;Cronològicament, veiem que a principis del 2000 l'ús de GNU/Linux s'havia començat a popularitzar de manera destacable. El fet que no existís aleshores cap entorn de desenvolupament ràpid (RAD) suficientment accessible al públic de perfil poc tècnic per aquest entorn (per exemple, tant senzill com el Visual Basic en els sistemes operatius de Microsoft), va fer que hi haguessin diverses temptatives no molt reeixides d'aconseguir desenvolupar-ne un que cridés l'atenció d'aquest tipus d'usuaris (per exemple Borland va treure una versió per GNU/Linux del seu, aleshores, popular entorn de desenvolupament Delphi anomenada Kylix).&lt;br /&gt;&lt;br /&gt;Benoît Minisini, programador francès amb experiència en compiladors, va ser un dels qui va decidir intentar posar remei a la situació de la seva pròpia mà, i va començar en solitari el desenvolupament Gambas. Programat per executar-se en GNU/Linux i implementant la seva pròpia versió de BASIC, amb un ull posat als “punts forts” de VB, però conscient de les limitacions i pegues d'aquest, l'autor també va prendre algunes idees de Java. Cal notar, en aquest sentit, que des del principi, el disseny de Gambas anava orientat a no ser compatible amb el BASIC de VB allà on l'autor creia que hi havia marge de millora. En les primeres versions, els components gràfics estaven basats en la llibreria QT però a partir de la versió 1 ja es va començar una capa que independitza els components del toolkit real. Des d'un bon principi i fins a l'actualitat, la manera de gestionar el projecte que l'autor ha portat a terme, es podria definir com la d'un ”dictador benvolent”: El que dins el món del programari lliure a vegades s'ha anomenat ”dictador benvolent” correspon a un sistema on una única persona centralitza tot o bona part del poder sobre el projecte; i decideix i té l'última paraula pel que fa al rumb, el què val la pena integrar-hi o no, i qui pot treballar en què (a l'estil del cas més conegut, Linus Torvald i Linux :).&lt;br /&gt;&lt;br /&gt;La primera versió pública, la 0.20, va ser publicada el febrer del 2002 i des d'aleshores el projecte ha anat rebent actualitzacions constants fins a l'actualitat. Finalment, com a curiositat, direm que el nom del projecte és un acrònim recursiu inventat per l'autor, que vol dir “Gambas Almost Means BASic”, és a dir en català (traducció pròpia lliure) “Gambas quasi vol dir Basic”.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;El projecte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El projecte ofereix accés obert de lectura a tothom a un repositori subversion on s'hi poden trobar les dues branques actualment en desenvolupament del codi del projecte a les adreces &lt;a href="https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/branches/2.0"&gt;https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/branches/2.0&lt;/a&gt; per la versió estable i &lt;a href="https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/trunk/"&gt;https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/trunk/&lt;/a&gt; per la 3, en desenvolupament.&lt;br /&gt;&lt;br /&gt;Quasi des del bon principi, el projecte ha estat registrat al Sourceforge, i és allà on hi ha allotjada la pàgina web, des d'on es poden descarregar les últimes versions oficials, on hi ha allotjats els repositoris de codi font, i les llistes de distribució.&lt;br /&gt;En el projecte, aquestes llistes de distribució són, ara per ara i per decisió expressa del màxim responsable del projecte, l'únic sistema de “bug tracking” o de petició de millores.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/gambas-user"&gt;https://lists.sourceforge.net/lists/listinfo/gambas-user&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/gambas-devel"&gt;https://lists.sourceforge.net/lists/listinfo/gambas-devel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/gambas-devel-svn"&gt;https://lists.sourceforge.net/lists/listinfo/gambas-devel-svn&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/gambas-user-es"&gt;https://lists.sourceforge.net/lists/listinfo/gambas-user-es&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lists.sourceforge.net/lists/listinfo/gambas-user-fr"&gt;https://lists.sourceforge.net/lists/listinfo/gambas-user-fr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;L'accés a aquestes llistes és públic, i l'historial de missatges és lliurement consultable.&lt;br /&gt;&lt;br /&gt;Una altre part important del projecte la trobem, també, a la pàgina de documentació del llenguatge, &lt;a href="http://gambasdoc.org/"&gt;http://gambasdoc.org/&lt;/a&gt;. La pàgina estructurada en format Wiki, està traduïda total o parcialment a 19 idiomes diferents. El fet que estigui traduïda a tants idiomes i que sigui força exhaustiva, la converteix en una eina molt útil per als usuaris de Gambas; S'hi pot trobar des dels passos específics d'instal·lació de Gambas en múltiples distribucions de GNU/Linux, fins a un inventari complet de totes les comandes, sintaxi i instruccions específiques del llenguatge amb exemples de codi.&lt;br /&gt;                        &lt;br /&gt;Val a dir que actualment també trobem un parell de projectes amb característiques semblants (Un entorn integrat + Dialecte BASIC propi) a Gambas:&lt;br /&gt; Hbasic (http://hbasic.sourceforge.net/)&lt;br /&gt; Kbasic (http://www.kbasic.com)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Radiografia del projecte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gambas es distribueix sota la llicència Gnu GPL i té un nombre relativament reduït de col·laboradors. Moltes de les aportacions de codi són de l'autor original. La versió estable actual és la 2.9 del 30 d'octubre de 2008 i el codi font es pot trobar a la zona de descàrregues del lloc web &lt;a href="http://sourceforge.net/project/gambas"&gt;http://sourceforge.net/project/gambas&lt;/a&gt; i també al repositori subversion del mateix lloc, &lt;a href="https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/branches/2.0"&gt;https://gambas.svn.sourceforge.net/svnroot/gambas/gambas/branches/2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Les dades les he sobre les característiques del projecte calculat amb l'última versió de la branca estable disponible al repositori subversion revisió 1744 del 19/12/2008 . L'eina emprada pel recompte és sloccount:&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7tVuVfFaIAM/SW5Ih0q6zlI/AAAAAAAAC0E/-nFGxiy6nD8/s1600-h/t1.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 143px;" src="http://2.bp.blogspot.com/_7tVuVfFaIAM/SW5Ih0q6zlI/AAAAAAAAC0E/-nFGxiy6nD8/s320/t1.jpg" alt="" id="BLOGGER_PHOTO_ID_5291246358118452818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Línies totals de codi (SLOC) = &lt;span style="font-weight: bold;"&gt;179.836&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Estimació del costos de desenvolupament segons el model Bàsic COCOMO :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estimació de l'esforç de desenvolupament&lt;br /&gt;&lt;span style="font-style: italic;"&gt;persona/anys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;46.63 anys&lt;/span&gt; (559.54 mesos)&lt;br /&gt;&lt;br /&gt;Estimació del temps d'execució           &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.31 anys&lt;/span&gt; (27.68 mesos)&lt;br /&gt;&lt;br /&gt;Estimació de nombre mitjà de desenvolupadors               &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;20.22&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cost total de desenvolupament&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(amb un sou mitja de $56,300/any)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ 6.298.862 &lt;/span&gt;  &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;On obtenir-ne més informació:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pàgina principal del projecte: &lt;a href="http://gambas.sourceforge.net/"&gt;http://gambas.sourceforge.net/&lt;/a&gt;&lt;br /&gt;Documentació oficial de Gambas: &lt;a href="http://gambasdoc.org/"&gt;http://gambasdoc.org&lt;/a&gt;&lt;br /&gt;Un llibre lliure de documentació sobre Gambas: &lt;a href="http://en.wikibooks.org/wiki/Gambas"&gt;http://en.wikibooks.org/wiki/Gambas&lt;/a&gt;&lt;br /&gt;Pàgina amb recursos de Gambas: &lt;a href="http://gambasrad.org/"&gt;http://gambasrad.org/&lt;/a&gt;&lt;br /&gt;Pàgina del projecte LinEx dedicada a Gambas: &lt;a href="http://gambas.gnulinex.org/web/index.html"&gt;http://gambas.gnulinex.org/web/index.html&lt;/a&gt;&lt;br /&gt;Entrada a la Wikipedia de Gambas: &lt;a href="http://en.wikipedia.org/wiki/Gambas"&gt;http://en.wikipedia.org/wiki/Gambas&lt;/a&gt;&lt;br /&gt;Entrada a la Wikipedia de dialectes Basic: &lt;a href="http://en.wikipedia.org/wiki/List_of_BASIC_dialects_by_platform"&gt;http://en.wikipedia.org/wiki/List_of_BASIC_dialects_by_platform&lt;/a&gt;&lt;br /&gt;Incubadora de projectes desenvolupats en Gambas: &lt;a href="http://www.gambasforge.net/"&gt;http://www.gambasforge.net&lt;/a&gt; (actualment en obres)&lt;br /&gt;Projectes al Freshmeat que usen Gambas: &lt;a href="http://freshmeat.net/browse/1123/"&gt;http://freshmeat.net/browse/1123/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-7332068715812754770?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2009/01/gambas.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7tVuVfFaIAM/SW5MwtZE-AI/AAAAAAAAC0M/wpucsnQnnJI/s72-c/gambas3.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-2355631356892317668</guid><pubDate>Wed, 07 Jan 2009 11:38:00 +0000</pubDate><atom:updated>2009-01-07T13:20:56.646+01:00</atom:updated><title>Modificar informació EXIF d'una imatge</title><description>M'ha passat més d'una vegada que la data de la càmera es "reseteja" (a 01 del 01 de 2004) quan la bateria s'esgota del tot i les fotos resultants tenen la informació EXIF del jpeg incorrecte, apart de la data del propi arxiu.&lt;br /&gt;Els organitzadors de fotos com Picassa poden usar aquesta informació per ordenar les fotos i és molt molest veure que les fotos de pocs dies abans queden "enterrades" com si haguessin estat fetes fa anys.&lt;br /&gt;&lt;br /&gt;Per solucionar-ho he trobat la següent manera:&lt;br /&gt;&lt;blockquote&gt;Suposant estem situats a la carpeta de les fotos, i que volem establir la nova data a 31 de desembre de 2008...&lt;br /&gt;Per la data de l'arxiu:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# touch -t 200812312330 *.JPG&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;i per l'EXIF del jpeg:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# jhead -ds2008:12:31 *&lt;/span&gt;&lt;/blockquote&gt;Si volgués establir l'hora amb el &lt;a href="http://www.sentex.net/%7Emwandel/jhead/"&gt;&lt;span style="font-style: italic;"&gt;jhead&lt;/span&gt;&lt;/a&gt; en comptes de &lt;span style="font-style: italic;"&gt;-ds&lt;/span&gt; hauria usat &lt;span style="font-style: italic;"&gt;-ts&lt;/span&gt; amb el format &lt;span style="font-style: italic;"&gt;yyyy:mm:dd-hh:mm:ss&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-2355631356892317668?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2009/01/modificar-informaci-exif-duna-imatge.html</link><author>noreply@blogger.com (arosa)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-266469865103854740</guid><pubDate>Wed, 03 Dec 2008 14:02:00 +0000</pubDate><atom:updated>2008-12-03T15:18:48.952+01:00</atom:updated><title>AgendaXML a LaFarga.Cat i un nou projecte: "Pongui"</title><description>He trobat que a &lt;a href="http://www.lafarga.cat/"&gt;LaFarga.Cat&lt;/a&gt;, un portal de la Generalitat de Catalunya per promocionar entre altres coses el Programari Lliure ofereixein un espai de "&lt;span style="font-style: italic;"&gt;col·laboració i allotjament gratuït a projectes de desenvolupament, documentació i promoció relacionats amb el programari lliure&lt;/span&gt;”, a l'estil del més conegut i exitós SourceForge.&lt;br /&gt;Despŕes de mirar-me'l una estona he decidit d'aportar-hi l' "Agenda XML" (&lt;a href="https://projectes.lafarga.cat/projects/agendaprojectes/"&gt;https://projectes.lafarga.cat/projects/agendaprojectes/&lt;/a&gt;) .&lt;br /&gt;De fet crec que un espai com aquest hauria d'estar més publicitat...&lt;br /&gt;&lt;br /&gt;Apart, he penjat un altre projecte al SourceForge: pongui (&lt;a href="http://pongui.sourceforge.net/"&gt;http://pongui.sourceforge.net/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;És un típic "pong".. no té res d'especial, però pq no penjar-lo? El codi font no és un exemple de programació estructurada (ejem, ejem) però com a exemple, i per haver estat fet amb molt poca estona, és prou correcte!&lt;br /&gt;Està desenvolupat amb Gambas 2 i les llibreries gràfiques SDL. Aquesta llibreria deixa fer Molt amb molt poc codi!... i el resultat (comparat amb l'esforç dedicat) és impressionant!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7tVuVfFaIAM/STaT_zyNrUI/AAAAAAAACAs/ZgPEpGfx4GI/s1600-h/screenshot2.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 249px;" src="http://1.bp.blogspot.com/_7tVuVfFaIAM/STaT_zyNrUI/AAAAAAAACAs/ZgPEpGfx4GI/s320/screenshot2.jpg" alt="" id="BLOGGER_PHOTO_ID_5275566737952976194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-266469865103854740?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/12/agendaxml-lafargacat-i-un-projecte.html</link><author>noreply@blogger.com (arosa)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7tVuVfFaIAM/STaT_zyNrUI/AAAAAAAACAs/ZgPEpGfx4GI/s72-c/screenshot2.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-8472416375564820824</guid><pubDate>Sun, 16 Nov 2008 16:22:00 +0000</pubDate><atom:updated>2008-11-16T17:42:46.221+01:00</atom:updated><title>Projecte AgendaXML</title><description>He creat un projecte, Agenda XML, per gestionar el temps que paso treballant en cada projecte.&lt;br /&gt;Es pot trobar a  &lt;a href="http://agendaxml.sourceforge.net/"&gt;http://agendaxml.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Funciona en Gnome i KDE i es queda a la Barra de tasques de manera que es pot triar facilment a què s'està dedicant el temps.&lt;br /&gt;&lt;br /&gt;Està desenvolupat en Gambas. Ara em cal investigar com distribuir el "gambas runtime" dins del matex .deb, necessari pq funcioni el projecte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-8472416375564820824?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/11/projecte-agendaxml.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-8813131842146073826</guid><pubDate>Tue, 21 Oct 2008 23:41:00 +0000</pubDate><atom:updated>2008-11-16T03:39:39.244+01:00</atom:updated><title>Crear una Xarxa ADHOC</title><description>&lt;p&gt;Amb un router d'Internet que no té connexió inalàmbrica i amb 2 portàtils, volia connectar-los  entre ells mitjançant una  xarxa Adhoc per compartir l'Internet.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Després de jugar una estona amb el NetworkManager, no he trobat la manera de crear-hi una xarxa Adhoc o sigui que ho he hagut de fer des de la consola, i el resultat és aquest:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;em&gt;sudo ifconfig eth2 down&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;p&gt;&lt;br /&gt;sudo iwconfig eth2 mode ad-hoc&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo iwconfig eth2 channel 10&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo iwconfig eth2 essid xarxaAdhoc&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo iwconfig eth2 key s:0000000000&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo ifconfig eth2 up&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo ifconfig eth2 192.168.2.1&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE&lt;/p&gt;&lt;p&gt;&lt;br /&gt;sudo sh -c "sudo echo 1 &gt; /proc/sys/net/ipv4/ip_forward"&lt;/p&gt;&lt;/em&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;tenint en compte que la tarja wifi és la eth2 , i la de cable la eth1, la ip de la Xarxa adhoc 192.168.2.X, i el nom de la xraxa creada "&lt;em&gt;xarxaAdhoc&lt;/em&gt;"&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-8813131842146073826?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/10/crear-una-xarxa-adhoc-amb-un-router.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-1469293337281546446</guid><pubDate>Thu, 28 Aug 2008 15:34:00 +0000</pubDate><atom:updated>2008-08-28T17:54:02.584+02:00</atom:updated><title>Com fer que la conexio SSH que normalment fem amb usuari i contrasenya usi una clau pública i no demani contrasenya</title><description>1. Generem el parell de Claus (publica i privada):&lt;br /&gt;(En el servidor o client)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Client&lt;/span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; ssh-keygen -t dsa&lt;/span&gt;&lt;br /&gt;genera un arxiu "id_dsa" i un "id_dsa.pub" amb les claus privades i pública respectrivament&lt;br /&gt;(si ho fem al server, caldrà passar els arxius 2 al client)&lt;br /&gt;&lt;br /&gt;2. Al servidor autoritzem la clau:&lt;br /&gt;(si el pas anterior l'hem fet al client, caldrà hi passem la clau pública)&lt;br /&gt;Des del $HOME al servidor de l'usuari que accedix amb contrasenya&lt;br /&gt;&lt;span style="font-style: italic;"&gt; UsuariHabital@Server /home/UsuariHabital&lt;/span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; cat id_dsa.pub &gt;&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.ssh/authorized_keys&lt;/span&gt;&lt;br /&gt;(en aquest punt, al servidor ja es pot esborrar el "id_dsa")&lt;br /&gt;&lt;br /&gt;3. En el Client:&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Client&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;# &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;cat id_dsa.pub &gt;&gt; .ssh/authorized_keys&lt;/span&gt;&lt;br /&gt;(opcional)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Client&lt;/span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; chmod 600 .ssh/authorized_keys &lt;/span&gt;&lt;br /&gt;(opcional)&lt;br /&gt;Client&lt;span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; chmod 600 .ssh/id_dsa&lt;/span&gt;&lt;br /&gt;Ja es pot establir una conexió on NO demanarà Password! (ideal per scripts, per exemple)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Client&lt;/span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; ssh -l UsuariHabital Servidor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:georgia;"&gt;En el cas de que volguéssim obrir només una tunnelizació cap servidor podriem fer com en aquest  &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;exemple on el client comparteix amb la seva LAN el port 139 (la compartició d'arxius de Windows) de la màquina 192.168.0.10 de la xarxa del servidor...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Client&lt;/span&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:georgia;" &gt;ssh -g -N -L 139:192.168.0.10:139 -l UsuariHabital Servidor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;-N (indica que només volem una connexió per tunnels, no la consola)&lt;br /&gt;-g (permet que altre màquines apart del Client (el localhost) accediexin als ports Redirigits)&lt;br /&gt;-L (que especifica la redirecció en sí) faràn el fet.&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-1469293337281546446?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/08/com-fer-que-la-conexio-ssh-que.html</link><author>noreply@blogger.com (arosa)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-730447619412384476</guid><pubDate>Sat, 23 Aug 2008 14:22:00 +0000</pubDate><atom:updated>2008-08-28T17:48:34.682+02:00</atom:updated><title>Ubuntu 64 bits: Com instal.lar paquets de la versio de 32 bits la versió de 64bits:</title><description>1er: instal.lar l'última versió de getlibs (descarregant-lo de http://ubuntuforums.org/showthread.php?t=474790)&lt;br /&gt;2on: instal.lar el paquet ".deb" especificant  "--force-architecture"&lt;br /&gt;p.ex: $ sudo dpkg -i --force-architecture zattoo-3.2.4.15876-i386.deb&lt;br /&gt;3er: fer que detecti les possibles llibreries de 32 bits que no tenim instal.lades i autmàticament se les baixi!&lt;br /&gt;&lt;br /&gt;...i ja està tot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-730447619412384476?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/08/ubuntu-64-com-installar-paquets-de-la.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-1046396675806813268</guid><pubDate>Wed, 23 Jul 2008 15:41:00 +0000</pubDate><atom:updated>2008-07-23T17:42:27.634+02:00</atom:updated><title>Fer que un client wrt54g de linksys amb l'alchemy a mode client connecti només amb qui volem</title><description>Ara que encara me’n recordo... , i per futura referència pròpia:&lt;br /&gt;&lt;br /&gt;Per  assegurar-nos de que només intenta connectar-se contra el AP que ens interessa cal fer:&lt;br /&gt;&lt;br /&gt;1er. Només els de la Llista&lt;br /&gt;# wl macmode = 2 &lt;br /&gt;&lt;br /&gt;2on. Edita la llista mac&lt;br /&gt;@ wl mac xx:xx:xx:xx:xx:xx &lt;br /&gt;&lt;br /&gt;( per buidar la llista de mac seria # wl mac none)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-1046396675806813268?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/07/fer-que-un-client-wrt54g-de-linksys-amb.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-360953305331347594</guid><pubDate>Wed, 23 Jul 2008 15:38:00 +0000</pubDate><atom:updated>2008-07-23T17:41:32.231+02:00</atom:updated><title>"MASTER OF OPERATIONS" d'un servidor a un altre</title><description>Per futura referència pròpia, els passos per transferir el "MASTER OF OPERATIONS" d'un dels controladors de Domini Windows Active Direcotry (normalment el 1er que es va instal•lar) a un altre serien:&lt;br /&gt;&lt;br /&gt;1er. Triar el nou “Master of Operations” amb Botó dret sobre "Usuaris i Equips d'AD"&lt;br /&gt;2on. Definir un nou Catàleg Global al Nous Servidor des de "Llocs i Serveis d'AD"&lt;br /&gt;3er. Registrar SCHMMGMT.DLL, executant "REGSVRE32 SCHMMGMT.DLL"&lt;br /&gt;4art. Obrir una MMC i:&lt;br /&gt; a. Afegir el Complement "Esquema d' AD"&lt;br /&gt; b. Botó de la dreta i triar el nou servidor&lt;br /&gt; c. Botó de la dreta  triar el nou "MASTER OF OPERATIONS"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-360953305331347594?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/07/master-of-operations-dun-servidor-un.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-4836589913198150024</guid><pubDate>Sat, 26 Apr 2008 00:00:00 +0000</pubDate><atom:updated>2008-04-26T02:29:58.758+02:00</atom:updated><title>El "C99 mode"</title><description>Fent un programet en C (des d'UBUNTU 7.10) i compilant-lo amb el GCC,  m'he trobat amb la situació de que es queixava de la declaració "int x" posada dins del bucle, així:&lt;span style="font-style: italic;"&gt;  &lt;br /&gt;   for (&lt;span style="color: rgb(255, 102, 102);"&gt;int x=0&lt;/span&gt;;x&amp;lt;MidaTaulaPrimers;x++)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Per sort el missatge d'error era clar (encara que no català):&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Programa.c:63: error: ‘for’ loop initial declaration used outside&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; C99 mode&lt;/span&gt;&lt;br /&gt;És a dir... que la "versió" de c  que permet fer aquest tipus de declaracions és la C99.&lt;br /&gt;Mirant el "man" del gcc he trobat la manera de dir-li que l'usi; Cal passar-li el paràmetre "-std=c99". &lt;span style="font-size:85%;"&gt; (o simplement per el int x fora, però el POST és precissament per explicar que el volia fer a dins :) )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sembla ser que les versions actuals de GCC  (aquesta en concret és la 4.1.3) encara no l'usen per defecte, sinó que usen l'anterior C89, tal i com he trobat explicat a la documentació online de gcc &lt;a href="http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Standards.html#Standards"&gt;http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Standards.html#Standards&lt;/a&gt; :"The default, if no C language dialect options are given, is &lt;samp&gt;&lt;span class="option"&gt;-std=gnu89&lt;/span&gt;&lt;/samp&gt;; this will change to &lt;samp&gt;&lt;span class="option"&gt;-std=gnu99&lt;/span&gt;&lt;/samp&gt; in some future release when the C99 support is complete"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-4836589913198150024?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2008/04/el-c99-mode.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-5095655426737502163</guid><pubDate>Wed, 16 May 2007 14:12:00 +0000</pubDate><atom:updated>2007-05-16T16:37:39.545+02:00</atom:updated><title>Usos de cURL</title><description>No sé quins usos li dona la gent al &lt;a href="http://curl.netmirror.org/download.html"&gt;cURL&lt;/a&gt;, però un d'interessant és resetejar els Routers ADSL (n'hi ha que tenen tendència penjar-se de forma regular) usant cURL per accedir a la pàgina web d'administració del Router on se li diu de fer el Reset.&lt;br /&gt;&lt;br /&gt;En el cas d'un Zyxel 650, la comanda seria tant senciilla com:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#curl -u &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;USUARI&lt;/span&gt;&lt;span style="font-style: italic;"&gt;:&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;PASSWORD&lt;/span&gt;&lt;span style="font-style: italic;"&gt; -s 'http://&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;IPROUTER&lt;/span&gt;&lt;span style="font-style: italic;"&gt;/Forms/DiagGeneral_1'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;(Els "arxi-famosos"  usuari i password de telefònica per defecte són admin:1234)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Això es pot possar at l'at o al cron de manera que s'executi cada dia a les 2h de la matinada, i ja tenim un RESET automàtic!&lt;br /&gt;&lt;br /&gt;Una altre manera de fer-ho sposo que seria amb wget o qualsevol eina per l'estil...&lt;br /&gt;( en aquest cas seria algo com &lt;span style="font-style: italic;"&gt;# wget --http-user=&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;USUARI&lt;/span&gt;&lt;span style="font-style: italic;"&gt; --http-password=&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;PASSWORD  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;-q http://&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;IPROUTER&lt;/span&gt;&lt;span style="font-style: italic;"&gt;/Forms/DiagGeneral_1&lt;/span&gt; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-5095655426737502163?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2007/05/usuos-de-curl.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19240340.post-6392312485789430577</guid><pubDate>Fri, 30 Mar 2007 10:41:00 +0000</pubDate><atom:updated>2007-03-30T14:22:44.901+02:00</atom:updated><title>Com possar un Peu als missatges enviats a través d'un Exchange</title><description>Per possar un peu  (el típic “&lt;a href="http://en.wikipedia.org/wiki/Disclaimer"&gt;disclaimer&lt;/a&gt;”) als missatges d'un domini que s'envia a travé d'un Exchange (provat en la versió 2003, però en la 2000 també hauria de funcionar), per exemple “DOMINI_SMTP.cat, cal fer certs passos:&lt;br /&gt;&lt;br /&gt;1.- Cal aconsguir el &lt;span style="font-weight: bold;"&gt;smtpreg.vbs&lt;/span&gt;, jo l'he tret d'&lt;a href="http://support.microsoft.com/kb/324021/en-us"&gt;aquí&lt;/a&gt; . El deixem, per exemple, a “C:\utils”&lt;br /&gt;&lt;br /&gt;2.- Després cal crear un Script que contindrà el text del peu “en si”. Creem un arxiu anomenat, per exemple, “Signatura_als_correus_sortints_de_DOMINI_SMTP.vbs” dins de “C:\utils” que contingui això:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;SCRIPT LANGUAGE="VBScript"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Const cdoRunNextSink = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   TextDisclaimer = vbCrLf &amp; "--------------------------"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   TextDisclaimer = TextDisclaimer &amp;amp; vbCrLf &amp; "Peu/Signatura Correus Enviats"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   TextDisclaimer = TextDisclaimer &amp;amp; vbCrLf &amp; "&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;--------------------------&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   HTMLDisclaimer = "&amp;lt;p&gt;&amp;lt;/p&gt;&amp;lt;hr&gt;&amp;lt;p&gt;&amp;lt;i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Peu/Signatura Correus Enviats&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   HTMLDisclaimer =  HTMLDisclaimer &amp; "&amp;lt;/i&gt;&amp;lt;/p&gt;&amp;lt;hr&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   If Msg.HTMLBody        &amp;lt;&gt; "" Then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      'Search for the "       &amp;lt;/body&gt;" tag and insert our disclaimer before that tag.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      pos = InStr(1, Msg.HTMLBody, "       &amp;lt;/body&gt;", vbTextCompare)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      szPartI = Left(Msg.HTMLBody, pos - 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      szPartII = Right(Msg.HTMLBody, Len(Msg.HTMLBody) - (pos - 1))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Msg.HTMLBody = szPartI + HTMLDisclaimer + szPartII&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   End If&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   If Msg.TextBody        &amp;lt;&gt; "" Then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Msg.TextBody = Msg.TextBody &amp; vbCrLf &amp;amp; TextDisclaimer &amp; vbCrLf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   End If&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   'Commit the content changes to the transport ADO Stream object.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   Msg.DataSource.Save ' Commit the changes into the transport Stream&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   EventStatus = cdoRunNextSink&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;       &amp;lt;/SCRIPT &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;caldria, doncs, substiutuir “Text de Signatura pels Correus Sortints!! “ pel text que ens plagui&lt;br /&gt;&lt;br /&gt;3.- Per activar-ho, cal executar la següent comanda (suposant que el cscript està a la variable PATH, i sinó, només caldria posar la ruta fins al cscript.exe):&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;        c:\&gt;cscript C:\utils\smtpreg.vbs /add 1 onarrival SMTPScriptingHost CDO.SS_SMTPOnArrivalSink "mail from=*@DOMINI_SMTP.cat"&lt;br /&gt;&lt;br /&gt; c:\&gt; cscript C:\utils\smtpreg.vbs /setprop 1 onarrival SMTPScriptingHost Sink ScriptName "C:\utils\Signatura_als_correus_sortints_de_DOMINI_SMTP.vbs" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4.- Ja està fet!, un cop reiniciat el servei SMTP, els missatges enviats des d'adreçes “DOMINI_SMTP.cat” ja tindiràn el peu (el "disclaimer") desitjat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;L'escript &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;smtpreg&lt;/span&gt; també té altre comandes que seràn útils, per exemple aquestes dos:&lt;br /&gt;&lt;br /&gt;// Treure'l: el Peu:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;    cscript C:\utils\smtpreg.vbs /remove 1 OnArrival SMTPScriptingHost &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;//&lt;a href="http://support.microsoft.com/kb/258224/en-us"&gt;Llistar els events&lt;/a&gt; que tenim registrats:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;    cscript C:\utils\smtpreg.vbs /enum&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enllaços pertinents:&lt;br /&gt;&lt;br /&gt;Això mateix explicat per Microsoft: &lt;a href="http://support.microsoft.com/kb/317680/es"&gt;http://support.microsoft.com/kb/317680/es&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19240340-6392312485789430577?l=cantonet.adimena.net' alt='' /&gt;&lt;/div&gt;</description><link>http://cantonet.adimena.net/2007/03/com-possar-un-peu-als-missatges-enviats.html</link><author>noreply@blogger.com (arosa)</author><thr:total>0</thr:total></item></channel></rss>
