tag:blogger.com,1999:blog-86818535517669385642024-03-05T05:19:20.688+01:00Papel TankPiedra papel tijeras lagarto spockAnonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-8681853551766938564.post-64865180824731778622012-03-30T08:37:00.000+02:002012-03-30T08:41:14.703+02:00Añadiendo usuario al grupo de sudoCon esta orden permitiéremos ejecutar ordenes con sudo al usuario <username> ya creado<br />
<br />
<pre>sudo usermod -a -G sudo <username></pre><br />
Evitando:<br />
<br />
<pre>is not in the sudoers file. This incident will be reported.</pre>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-81110383439463544902012-03-26T20:00:00.000+02:002012-03-26T21:34:42.805+02:00Instalando node.js + npm Ubuntu 11.10Instalación node.js + npm sin calentarnos la cabeza y de forma local en tu carpeta de usuario.<br />
<div>
<br /></div>
<div>
Requerimientos:</div>
<div>
<br /></div>
<div>
<pre>$ sudo apt-get install build-essential g++</pre>
</div>
<div>
<br /></div>
<div>
Instalación:</div>
<div>
<script src="https://gist.github.com/579814.js?file=node-and-npm-in-30-seconds.sh">
</script></div>
<div>
<span style="font-size: x-small;">Referencia:</span><br />
<span style="font-size: x-small;"><a href="https://gist.github.com/579814#file_node_and_npm_in_30_seconds.sh">https://gist.github.com/579814#file_node_and_npm_in_30_seconds.sh</a></span></div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-31620123264730787242012-03-19T20:00:00.000+01:002012-03-20T16:24:52.381+01:00PHP library for OpenERP - openerplib<span style="font-size: large;"><b>openerplib</b></span> (<a href="https://github.com/b3ni/openerplib">https://github.com/b3ni/openerplib</a>),<br />
<br />
<h1 style="-webkit-font-smoothing: antialiased; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
es una librería que escrito en PHP para facilitar operaciones xmlrpc con <a href="http://www.openerp.com/">OpenERP</a>. Está inspirada en el ORM de <a href="https://www.djangoproject.com/">Django</a> y montada encima de la librería <a href="http://phpxmlrpc.sourceforge.net/">xmlrpc.inc</a></h1>
<div>
<br /></div>
<div>
Métodos disponibles:</div>
<div>
<ul>
<li>CRUD sobre modelos</li>
<li>Navegabilidad many2one / one2many</li>
<li>Ejecutar métodos de modelos</li>
<li>Añadir adjuntos</li>
<li>...</li>
</ul>
<br />
<div>
Un ejemplo de navegabilidad:</div>
<br />
<pre>$open = new OpenERP();
$p = $open->res_partner('country')->get(1);
print $p->id;
print $p->country->id; //many2one => res.country
print $p->country('name')->name;
</pre>
<br />
<div>
Ejemplo de búsquedas:</div>
<br />
<pre>$fields = array('street', 'email');
$results = $open->res_partner_address($fields)->search('email', '=', 'foo@bar.com');
foreach ($results as $id => $address) {
print "<h1>" . $id . "</h1>";
print "<pre>" . $address->info() . "</pre>";
print "<hr>";
}
</pre>
<br />
<div>
Mas info: <a href="https://github.com/b3ni/openerplib">https://github.com/b3ni/openerplib</a></div>
</div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com2tag:blogger.com,1999:blog-8681853551766938564.post-61448427549240935042012-03-07T19:44:00.000+01:002012-03-07T19:44:33.668+01:00Mis Plugins para EclipseMi lista de plugins actuales para Eclipse y desarrollo web.<br />
<br />
<span style="font-size: large;">Eclipse</span><br />
<br />
Me baso en: Eclipse IDE for JavaScript Web Developers. Este plugin trae:<br />
<div>
<ul>
<li>Coloreado de syntasis, html, javascript, css,...</li>
<li>Autocompletado de css. Muy util para no ir buscando las propiedades que quieres aplicar.</li>
<li>Formateo de xml. Pretty print para ficheros xml, a veces es necesario</li>
<li>...</li>
</ul>
<div>
Donwload: <a href="http://www.eclipse.org/downloads/packages/eclipse-ide-javascript-web-developers/indigosr2">http://www.eclipse.org/downloads/packages/eclipse-ide-javascript-web-developers/indigosr2</a><br />
<br />
<span style="font-size: large;">Gestión de versiones</span><br />
<b><br /></b><br />
<b>Subclipse</b><br />
Para gestionar repositorios <a href="http://subversion.tigris.org/">Subversion</a>, el sucesor de CVS.<br />
<br />
URL: <a href="http://marketplace.eclipse.org/node/979">http://marketplace.eclipse.org/node/979</a><br />
Download: Desde Eclipse MarketPlace<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIfTVGF_O3q3WkTc5Q1BgrOUCRPTagDUMay-xPN-GvQfhmMolPcTP7F_acIHpL9e-hMkn4klO1BigymbW1ZslFBXEL0NBWBNlGpEiI29UBEmsq8vqzSYPxptHa1JXnDo5CGraauRYV8jI/s1600/%C3%81rea+de+trabajo+1_070.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIfTVGF_O3q3WkTc5Q1BgrOUCRPTagDUMay-xPN-GvQfhmMolPcTP7F_acIHpL9e-hMkn4klO1BigymbW1ZslFBXEL0NBWBNlGpEiI29UBEmsq8vqzSYPxptHa1JXnDo5CGraauRYV8jI/s400/%C3%81rea+de+trabajo+1_070.png" width="400" /></a></div>
<br />
<br />
<b>Git</b><br />
Muy de moda últimamente por sitios como <a href="https://github.com/">Github</a> y <a href="https://github.com/">Bitbucket</a>. En otro <a href="http://papeltank.blogspot.com/2011/11/git-repository-bitbucketorg-ubuntu-1110.html">post</a> ya indique como configurar Git en Eclipse.<br />
<br />
URL: <a href="http://www.eclipse.org/egit/">http://www.eclipse.org/egit/</a><br />
Download: Desde Eclipse MarketPlace<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjbsUFlXN_1qi9yBHFmjIa1GRAVOiKbu7ivD5iN7GlfvR03Vz1F2cr8CBHdpGGK9-RItcVNcIvVqLsBf83atXxwvF6Ps33DpEAv7vjovKTZH2y6_AUWE7mjYQgAQQNs6BZyQ49CfG32Y/s1600/%C3%81rea+de+trabajo+1_071.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="381" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjbsUFlXN_1qi9yBHFmjIa1GRAVOiKbu7ivD5iN7GlfvR03Vz1F2cr8CBHdpGGK9-RItcVNcIvVqLsBf83atXxwvF6Ps33DpEAv7vjovKTZH2y6_AUWE7mjYQgAQQNs6BZyQ49CfG32Y/s400/%C3%81rea+de+trabajo+1_071.png" width="400" /></a></div>
<br />
<br />
<span style="font-size: large;">Python + Django</span><br />
<br />
<b>Pydev</b><br />
Editor por excelencia en Eclipse. Muchas posibilidades como: sintaxis, autocompletado, debugger, formateo de código,...<br />
<br />
Una utilidad que he descubierto hace poco, es integralo con <a href="http://pypi.python.org/pypi/pep8">pep8.py</a>, para chequear tu código con las convenciones de estilos definidas en <a href="http://www.python.org/dev/peps/pep-0008/">Style Guide for Python Code</a>.<br />
<br />
Ahora tu código python será aún más bonito.<br />
<br />
URL: <a href="http://pydev.org/">http://pydev.org/</a><br />
Download: Desde Eclipse MarketPlace<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTxBBt0QyrvLP5hTUOHHMf-wk-VhgLEEv3LT4dqiGb9FVvxOgVOiLMmeZ-_TulzmbpfXpXebMI0FIIJhl72vPOoJDBY7QVzysqzeybne_zQ8ASDJ2NfMaqUFd-GXGxK3HnwWs7JyXfsXI/s1600/Selecci%C3%B3n_072.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTxBBt0QyrvLP5hTUOHHMf-wk-VhgLEEv3LT4dqiGb9FVvxOgVOiLMmeZ-_TulzmbpfXpXebMI0FIIJhl72vPOoJDBY7QVzysqzeybne_zQ8ASDJ2NfMaqUFd-GXGxK3HnwWs7JyXfsXI/s400/Selecci%C3%B3n_072.png" width="400" /></a></div>
<br />
<br />
<b>Django Editor</b><br />
Plugin para editor de plantillas de <a href="https://www.djangoproject.com/">Django</a>. Simple pero efectivo.<br />
<br />
URL: <a href="http://eclipse.kacprzak.org/">http://eclipse.kacprzak.org/</a><br />
Download: Añadiendo una fuente en Install New Software.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9sLkJef55E5BjEqeLg1Rp6xblQoBm3ocIKHaA3IxHXPl-dOMTR0x0qoc6jUkdyjY362FjayUsfSFxcDasw_Qr940EqFVneudXNPnfb7UbXCRfCGrBI5tl1ZrICnwbEw1bI95FgYcwoA0/s1600/%C3%81rea+de+trabajo+1_065.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9sLkJef55E5BjEqeLg1Rp6xblQoBm3ocIKHaA3IxHXPl-dOMTR0x0qoc6jUkdyjY362FjayUsfSFxcDasw_Qr940EqFVneudXNPnfb7UbXCRfCGrBI5tl1ZrICnwbEw1bI95FgYcwoA0/s200/%C3%81rea+de+trabajo+1_065.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSzgXi2xo70R86PlOl3NM-lEH3ULhANf0PpK3afx3wtPqeFlrKDLzzDshA_xheMJc_b_ocnJdq-QCZbga9zGpWNhWyKLw6fgYpYwbcqMQ-0DPR4QANS4mx1sxJEnyfOgqUtz_jVV11FaQ/s1600/Selecci%C3%B3n_069.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSzgXi2xo70R86PlOl3NM-lEH3ULhANf0PpK3afx3wtPqeFlrKDLzzDshA_xheMJc_b_ocnJdq-QCZbga9zGpWNhWyKLw6fgYpYwbcqMQ-0DPR4QANS4mx1sxJEnyfOgqUtz_jVV11FaQ/s640/Selecci%C3%B3n_069.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<span style="font-size: large;">Otros</span><br />
<br />
<b>Markdown Editor</b><br />
<br />
Plugin para editar cómodamente fichero .md con posibilidad de vista prévia.<br />
<div>
<br /></div>
<br />
URL: <a href="http://www.winterwell.com/software/markdown-editor.php">http://www.winterwell.com/software/markdown-editor.php</a><br />
Download: Añadiendo una fuente en Install New Software.<br />
<br />
Nota: para poder instalarlo en Eclipse 3.5, en la ventana de añadir nuevo software, hay que desactivar la opción: "Group items by category"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyoyPndVOItrFMzgjXWcGtZq3OzGRDYV6MtpM6l-aspa_QHplpjsXkbqRHGdCxwm5tHiuvnS-u3kre-TnT54YgS_HsDPWrFQqSvs-2Md_NxtO2U8Y_-tCve-HE2T1sfpJHEEY-wJ0LSMg/s1600/Install+_066.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyoyPndVOItrFMzgjXWcGtZq3OzGRDYV6MtpM6l-aspa_QHplpjsXkbqRHGdCxwm5tHiuvnS-u3kre-TnT54YgS_HsDPWrFQqSvs-2Md_NxtO2U8Y_-tCve-HE2T1sfpJHEEY-wJ0LSMg/s200/Install+_066.png" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLoiEhcktJiCFjtdHScm93aV1AIEklDXfnM0KiIR8cBFrZBrHTw04tBVupMVAD4kPQnSt0b_lCViNIOGQ6Rgo-ye14MCoFRV5by-Ppxgtbi6FRcohpmcc9MMsi7JJjVNj7H84VYpxZ3fU/s1600/Selecci%C3%B3n_068.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLoiEhcktJiCFjtdHScm93aV1AIEklDXfnM0KiIR8cBFrZBrHTw04tBVupMVAD4kPQnSt0b_lCViNIOGQ6Rgo-ye14MCoFRV5by-Ppxgtbi6FRcohpmcc9MMsi7JJjVNj7H84VYpxZ3fU/s640/Selecci%C3%B3n_068.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
¿que plugin es para ti esencial?</div>
</div>
</div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com2tag:blogger.com,1999:blog-8681853551766938564.post-15162264606286076592011-12-20T19:30:00.000+01:002011-12-23T08:43:54.074+01:00Django + Socket.ioSi queremos <a href="http://es.wikipedia.org/wiki/WebSocket">Websocket</a> en nuestra aplicación <a href="https://www.djangoproject.com/">Django</a>, hay que calentarse un poco la cabeza.<br />
<br />
La versión actual de mod_wsgi no es posible tener websocket. <a href="http://groups.google.com/group/paste-users/browse_thread/thread/2f3a5ba33b857c6c?pli=1">Aquí</a> se discute como extender el módulo de Apache para permitir estas conexiones. Lo dejamos en espera.<br />
<br />
Podemos utilizar el webserver <a href="http://www.tornadoweb.org/">Tornado</a>, un server no bloqueante desarrollado por <a href="http://friendfeed.com/">FriendFeed</a> (Facebook). O utilizar soluciones con <a href="http://www.gevent.org/">gevent</a>. Esta librería de python nos permite realizar peticiones asíncronas tirando de <a href="http://libevent.org/">libevent</a>.<br />
<br />
Para no complicarnos, podemos utilizar la aplicación <a href="https://github.com/stephenmcd/django-socketio">django_socketio</a>.<br />
<br />
Con esta app tenemos un websocket y el cliente para javascript de <a href="http://socket.io/">socket.io</a> con todas las dependencias que necesitamos.<br />
<br />
Al turrón...<br />
<br />
<b>Instalamos django-socketio.</b><br />
<br />
<pre class="brush:bash">$ sudo apt-get install python-dev build-essential libevent-1.4-2 libevent-dev
$ sudo pip install django_socketio
[...]
Successfully installed django-socketio gevent-socketio sphinx-me gevent-websocket gevent greenlet</pre><br />
<b>Añadimos la aplicación al settings.py</b><br />
<br />
<pre class="brush:python">INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
# socket
'django_socketio',
)</pre><br />
<b>Añadimos a urls.py</b><br />
<br />
<pre class="brush:python">urlpatterns += patterns('',
("", include("django_socketio.urls")),
[otras urls]
)</pre><br />
Ahora creamos las vistas que serán el punto de entrada para los eventos del websocket.<br />
<br />
<pre class="brush:python">@events.on_subscribe(channel="^canal-")
def menssaje(request, socket, context, channel):
if not request.user.is_authenticated():
socket.send_and_broadcast_channel({'action': 'connect', 'text': 'Bienvenido Invitado'}, channel=channel)
else:
socket.send_and_broadcast_channel({'action': 'connect', 'text': 'Bienvenido %s' % str(request.user.username)}, channel=channel)</pre><br />
Hay diferentes decoradores para recibir los eventos que se envíen al socket. (Consultar sección <i>Broadcast and Send Methods</i> en el proyecto)<br />
<br />
En este ejemplo, los usuarios se subscribirán a canales con nombre "canal-ID". Cuando lo hagan se enviarán mensajes, tanto al usuario que se ha suscrito, como al resto de clientes conectados al mismo canal.<br />
<br />
Otra vista podría ser del tipo:<br />
<br />
<pre class="brush:python">@events.on_message(channel="^canal-")
def message(request, socket, context, message):
message = message[0]
action = message["action"]
text = message["text"]
if action == 'talk':
print text
socket.broadcast_channel({'action': 'talk', 'text': text}, channel)</pre><br />
Un usuario envía al socket un mensaje que será enviado al resto de clientes.<br />
<br />
Como se ve, se ha definido un protocolo de comunicación entre el cliente y el servidor. Con el parámetro <i>action</i>, se controla las diferentes acciones que se pueden hacer en nuestra aplicación.<br />
<br />
Ahora la parte del cliente que se comunica con el server. (simplifico al máximo)<br />
<br />
<b>template.html</b><br />
<br />
<pre class="brush:javascript"><script type="text/javascript">
// path para socket.io
WEB_SOCKET_SWF_LOCATION = "{{ STATIC_URL }}WebSocketMain.swf";
WEB_SOCKET_DEBUG = true;
// creamos la coneción con el socket
var socket = new io.Socket();
socket.connect();
socket.on('connect', function() {
socket.subscribe('canal-' + '69');
});
// manejador de eventos
socket.on('message', function(data) {
switch(data.action) {
case 'connect':
alert("NEW: " + data.text);
break;
case 'text':
alert("SAY SOMEBODY: " + data.text);
break;
}
});
// enviamos nosotros un mensajito sexy
socket.send({"action": "text", "text": "So cool"});
</script></pre><br />
<b>Para arrancar la aplicación</b><br />
<br />
<pre class="brush:bash">$ ./manage.py runserver_socketio</pre><br />
Ya veremos en próximas entregas como pasarlo a un entorno de producción.<br />
<br />
<span style="font-size: x-small;">Referencias:</span><br />
<a href="https://github.com/stephenmcd/django-socketio"><span style="font-size: x-small;">https://github.com/stephenmcd/django-socketio</span></a><br />
<a href="http://socket.io/"><span style="font-size: x-small;">http://socket.io/</span></a><br />
<br />Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com3tag:blogger.com,1999:blog-8681853551766938564.post-73696450065279568812011-12-09T18:30:00.000+01:002011-12-09T18:30:00.549+01:00Add days to date in PHPLa siguiente función sumará un número determinado de días a un fecha dada.<br />
<br />
<script src="https://gist.github.com/1450902.js?file=add_days.php"></script><br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<a href="http://www.vision.to/how-to-add-days-weeks-months-to-any-date-.php"><span class="Apple-style-span" style="font-size: x-small;">http://www.vision.to/how-to-add-days-weeks-months-to-any-date-.php</span></a><br />
<a href="http://php.net/manual/en/function.date.php"><span class="Apple-style-span" style="font-size: x-small;">http://php.net/manual/en/function.date.php</span></a><br />
<a href="http://php.net/manual/en/function.strtotime.php"><span class="Apple-style-span" style="font-size: x-small;">http://php.net/manual/en/function.strtotime.php</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-27524843905325239752011-11-29T18:04:00.001+01:002011-12-02T18:33:14.517+01:00Hello World Node.js + Express.jsCreando un hola mundo con express.js + node.js.<br />
<br />
Instalamos node.js + npm (ya lo vimos <a href="http://papeltank.blogspot.com/2011/11/hola-mundo-en-nodejs-ubuntu-1110.html">aquí</a>)<br />
<br />
Instalamos express.js<br />
<br />
<pre class="brush:bash">$ npm install -g express
/home/b3ni/local/bin/express -> /home/b3ni/local/lib/node_modules/express/bin/express
qs@0.4.0 /home/b3ni/local/lib/node_modules/express/node_modules/qs
mkdirp@0.0.7 /home/b3ni/local/lib/node_modules/express/node_modules/mkdirp
mime@1.2.4 /home/b3ni/local/lib/node_modules/express/node_modules/mime
formidable@1.0.8 /home/b3ni/local/lib/node_modules/express/node_modules/connect/node_modules/formidable
connect@1.8.1 /home/b3ni/local/lib/node_modules/express/node_modules/connect
express@2.5.1 /home/b3ni/local/lib/node_modules/express
</pre>
<br />
Creamos carpeta para el proyecto, en mi caso, mi proyecto git + bitbucket (ya lo vimos <a href="http://papeltank.blogspot.com/2011/11/git-repository-bitbucketorg-ubuntu-1110.html">aquí</a>)
<br />
<br />
<pre class="brush:bash">$ cd ~/git/proyecto
$ express
destination is not empty, continue? yes
create : .
create : ./package.json
create : ./app.js
create : ./public
create : ./routes
create : ./routes/index.js
create : ./views
create : ./views/layout.jade
create : ./views/index.jade
create : ./public/javascripts
create : ./public/images
create : ./public/stylesheets
create : ./public/stylesheets/style.css
dont forget to install dependencies:
$ cd . && npm install
</pre>
<br />
Instalamos dependencia si son necesarias.<br />
<br />
<pre class="brush:bash">$ npm install -g express
/home/b3ni/local/bin/express -> /home/b3ni/local/lib/node_modules/express/bin/express
qs@0.4.0 /home/b3ni/local/lib/node_modules/express/node_modules/qs
mkdirp@0.0.7 /home/b3ni/local/lib/node_modules/express/node_modules/mkdirp
mime@1.2.4 /home/b3ni/local/lib/node_modules/express/node_modules/mime
formidable@1.0.8 /home/b3ni/local/lib/node_modules/express/node_modules/connect/node_modules/formidable
connect@1.8.1 /home/b3ni/local/lib/node_modules/express/node_modules/connect
express@2.5.1 /home/b3ni/local/lib/node_modules/express
</pre>
<br />
Ya podemos arrancar el server con<br />
<br />
<pre class="brush:bash">$ node app.js
Express server listening on port 3000 in development mode
</pre>
<br />
Vamos a escribir el mensaje Hello World. Para ello miramos la vista que se está renderizando.
<br />
<br />
<pre class="brush:js">// Routes
app.get('/', routes.index);
En la configuración tenemos:
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
</pre>
<br />
Podemos ver que los ficheros éstaticos se sirven con node.js y están ela carperta /public. Las vistas estás en /views. Editamos el template /views/index.jade y lo cambiamos a nuestro gusto
<br />
<br />
<pre class="brush:text">h1= title
p Hello World
</pre>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjK1rF3pOKR379uBTFclCHwmMcQhBVnOtj6vxUJGpIQO6cY07gQwhDwLTvQkqb9i6JIQdNWAJih7PtLPVfP-1eCZ1FmC5GuIiE7H-50S_pS_SvQOL3oX9caUpkyfOwafG54Wvm10sNTs/s1600/Selecci%25C3%25B3n_062.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjK1rF3pOKR379uBTFclCHwmMcQhBVnOtj6vxUJGpIQO6cY07gQwhDwLTvQkqb9i6JIQdNWAJih7PtLPVfP-1eCZ1FmC5GuIiE7H-50S_pS_SvQOL3oX9caUpkyfOwafG54Wvm10sNTs/s1600/Selecci%25C3%25B3n_062.png" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<a href="http://expressjs.com/guide.html"><span class="Apple-style-span" style="font-size: x-small;">http://expressjs.com/guide.html</span></a><br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-68046693619484409202011-11-15T21:00:00.000+01:002011-11-16T20:10:00.469+01:00MySQL Full Text y longitud de palabrasSi utilizamos índices Full Text en nuestras consultas de Mysql, quizás interese establecer la longitud mínima de palabra al valor que nos interese.<br />
<br />
Por defecto este valor se establece a 4. De esta forma, si realizamos búsquedas del tipo:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">SELECT * </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">FROM products </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">WHERE MATCH (title) AGAINST ('+Pad' IN BOOLEAN MODE);</span><br />
<br />
No dará resultados para productos con nombre: "Papyre Pad"<br />
<br />
Para establecer el valor de la variable, se debe hacer en el fichero de configuración de Msyql.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ sudo vi /etc/mysql/conf.d/variables.cnf</span><br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">[mysqld]</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">set-variable = ft_min_word_len=3</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ sudo /etc/init.d/mysql restart</span><br />
<br />
Reparamos las tablas con indices Full Text.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mysql> REPAIR TABLE products QUICK;</span><br />
<br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<a href="http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html"><span class="Apple-style-span" style="font-size: x-small;">http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html</span></a><br />
<span class="Apple-style-span" style="font-size: x-small;"><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len">http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_min_word_len</a></span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-75343237447447229522011-11-12T13:17:00.001+01:002011-11-29T09:47:39.088+01:00Hola Mundo en Node.js / Ubuntu 11.10HOWTO para instalar Node.js en Ubuntu 11.10<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Instalando node.js</span><br />
<br />
Se instalará <a href="http://nodejs.org/">node.js</a> en tu carpeta de usuario: ~/local/bin<br />
La versión a instalar será la 0.4.7, para luego poder deployarlo en <a href="http://www.heroku.com/">Heroku</a><br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ sudo apt-get install libssl-dev build-essential g++ curl git</span><br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ mkdir ~/local</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ source ~/.bashrc</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ export NODE_VERSION='0.4.7'</span><br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ wget http://nodejs.org/dist/node-v$NODE_VERSION.tar.gz</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ tar xvfz node-v$NODE_VERSION.tar.gz</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ cd node-v$NODE_VERSION</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ ./configure --prefix=~/local --without-ssl</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ make install</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ cd ~</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;">Instalando npm</span><br />
<br />
<a href="http://npmjs.org/">Npm</a> es el gestor de paquetes de node.js.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ curl http://npmjs.org/install.sh | sh</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;">Probando</span><br />
<br />
Creamos el fichero test.js con el contenido.<br />
<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">var http = require('http');</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">http.createServer(function (req, res) {</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"> res.writeHead(200, {'Content-Type': 'text/plain'});</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"> res.end('Hello World\n');</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">}).listen(1337, "127.0.0.1");</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">console.log('Server running at http://127.0.0.1:1337/');</span><br />
<br />
Ejecutamos...<br />
<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ node test.js </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Server running at http://127.0.0.1:1337/</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyIX9QUyA3YjmxkqrilfnezMTe_bPyVArZW7XGxvMnhSq9zfbrJjz_CcIJCuejeWnxxaFwEExNLMx2v1M496CAi81XoxhqRPqtEmExW4a5yCytE-xwHlrwtzuPzgpNxKuLLci1jCs0Mlc/s1600/0016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyIX9QUyA3YjmxkqrilfnezMTe_bPyVArZW7XGxvMnhSq9zfbrJjz_CcIJCuejeWnxxaFwEExNLMx2v1M496CAi81XoxhqRPqtEmExW4a5yCytE-xwHlrwtzuPzgpNxKuLLci1jCs0Mlc/s1600/0016.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.cambus.net/setting-up-a-node-js-development-environment-with-npm-and-cloud9-ide-installed-locally/"><span class="Apple-style-span" style="font-size: x-small;">http://www.cambus.net/setting-up-a-node-js-development-environment-with-npm-and-cloud9-ide-installed-locally/</span></a></div>
<br />
<u>Update</u><br />
<br />
Para instalar la última versión actual de node (v0.6.3), sustituimos:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ export NODE_VERSION='0.4.7'</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">por </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ export NODE_VERSION='0.6.3'</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">y</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ wget http://nodejs.org/dist/node-v$NODE_VERSION.tar.gz</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">por</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ wget http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.gz</span><br />
<br />Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-17932258373643705302011-11-12T11:14:00.001+01:002011-11-12T12:38:49.615+01:00Git Repository bitbucket.org Ubuntu 11.10 / Eclipse<span class="Apple-style-span" style="font-size: large;">Preparando el sistema y configuraciones varias</span><br />
<br />
Vamos a clonar un proyecto Git de <a href="https://bitbucket.org/">https://bitbucket.org</a>.<br />
<br />
Necesitamos subir nuestra clave pública a bitbucket. En la siguiente <a href="http://confluence.atlassian.com/display/BITBUCKET/Using+SSH+to+Access+your+Bitbucket+Repository;jsessionid=1E034788D79813359452B0CA03C0ED9B">dirección</a> indican como crearla y subirla.<br />
<br />
Si no tenemos clave pública en <i>/home/b3ni/.ssh/id_rsa.pub</i> la crearemos de forma normal con (email de tu cuenta bitbucket):<br />
<b><br /></b><br />
<b>ssh-keygen -t rsa -C "your_email@youremail.com"</b><br />
<b><br /></b><br />
Subimos el fichero <i>id_rsa.pub</i> generado en el perfil de usuario de bitbucket.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdB_eEbnili58jDRQo6GvdK7UKR9Gp5EGy9v-mBXuC5iXB-BpfPe8z5LTBjcPvZFv3598dgqojnTG9fpgmmwevHxfqwz3KcyphlZRQSb9AxT_vIavAPrkMstVY0AjNVQCT4fZjQl6_V5k/s1600/0004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdB_eEbnili58jDRQo6GvdK7UKR9Gp5EGy9v-mBXuC5iXB-BpfPe8z5LTBjcPvZFv3598dgqojnTG9fpgmmwevHxfqwz3KcyphlZRQSb9AxT_vIavAPrkMstVY0AjNVQCT4fZjQl6_V5k/s320/0004.png" width="320" /></a></div>
<br />
<br />
En la opción SSH Keys<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgapwPje_KIQ2hc0pGUmWXFN2SxhA7IKopmIijSi_ktbiIyKNd-G3hvqfQRAOJlpqHtDkOwM80i9jU4fzAlky72soq-FyFWVtUCj315akDjoGx0oAumSd6AvZvZNyy46PhyphenhyphenGG6xWBFmSt8/s1600/0005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgapwPje_KIQ2hc0pGUmWXFN2SxhA7IKopmIijSi_ktbiIyKNd-G3hvqfQRAOJlpqHtDkOwM80i9jU4fzAlky72soq-FyFWVtUCj315akDjoGx0oAumSd6AvZvZNyy46PhyphenhyphenGG6xWBFmSt8/s320/0005.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Clonamos el repositorio en nuestra máquina.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ git clone git@bitbucket.org:b3ni/REPO.git</span><br />
<br />
Si nos da un error de autenticación del estilo.<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Permission denied (publickey).</span><br />
<br />
Añadimos nuestra key al sistema (por si no lo estaba antes), con la orden:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">$ ssh-add</span><br />
<br />
<span class="Apple-style-span" style="font-size: large;">Clonando en Eclipse</span><br />
<br />
De forma similar a como instalamos el plugin para <a href="http://papeltank.blogspot.com/2011/10/clone-mercurial-repository-in-eclipse.html">Mercurial</a>. Nos vamos al Eclipse MarketPlace he instalamos <b>EGit - Git Team Provider</b> (<a href="http://marketplace.eclipse.org/content/egit-git-team-provider">http://marketplace.eclipse.org/content/egit-git-team-provider</a>)<br />
<br />
Añadimos la perspectiva de Git.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdPeZp-nJcXEUSKHxEd2h_kLhKJnP8_zSGtqfDtekASeNDccyKwqKK0Wd0LvBB-NMhOd1b6SnPm4PMNouaoqavloT5fVpWvwbAU5ZGVogOKqSYBe05_WCgacSiWE4gCU5jsV6DNVbcDjQ/s1600/0006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdPeZp-nJcXEUSKHxEd2h_kLhKJnP8_zSGtqfDtekASeNDccyKwqKK0Wd0LvBB-NMhOd1b6SnPm4PMNouaoqavloT5fVpWvwbAU5ZGVogOKqSYBe05_WCgacSiWE4gCU5jsV6DNVbcDjQ/s320/0006.png" width="250" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Una forma cómoda de clonarlo, es copiando la url anterior (<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">git@bitbucket.org:b3ni/REPO.git</span>) al portapapeles y pegarla en la ventana de repositorios.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIaC2ZjR3Dn4ryV8Apyk-EypWfJEV1Fu96-a_dTqP-yslRI8OgFbrbVpq-TdZngi0UT-cXg08I3dnoq7dgSilQLe4jOQO5P8V_NFCfOlpFzZzoyQ4qdp9jewlVQ64-3fNuWgn0b4AbU9g/s1600/0007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIaC2ZjR3Dn4ryV8Apyk-EypWfJEV1Fu96-a_dTqP-yslRI8OgFbrbVpq-TdZngi0UT-cXg08I3dnoq7dgSilQLe4jOQO5P8V_NFCfOlpFzZzoyQ4qdp9jewlVQ64-3fNuWgn0b4AbU9g/s400/0007.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Indicamos el protocolo, ssh y siguiente. Más adelante seleccionamos en que directorio se va a clonar, en mi caso dentro de mi workspace.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXI-k0iveYUF4P9w3sVFAdJR0LECUm42GSyuAEOK-ae8bmtTaRKB-7GpDpXbQ5WzWKlSdfgPz0aN06LNfYp8aP3_eaeMzsbwn_6HM1BmJ15X_WNDZYhqJRmG7wDlhA6C3PWUhNxfXj3GU/s1600/0008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXI-k0iveYUF4P9w3sVFAdJR0LECUm42GSyuAEOK-ae8bmtTaRKB-7GpDpXbQ5WzWKlSdfgPz0aN06LNfYp8aP3_eaeMzsbwn_6HM1BmJ15X_WNDZYhqJRmG7wDlhA6C3PWUhNxfXj3GU/s400/0008.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ahora creamos un proyecto para trabajar en Eclipse. Hacemos click derecho sobre la copia de trabajo importada y le damos a Import Project...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr-o9vFsy7tl8Uc5cNaxf5hEXpShY31zeQu8BXXO-bmAsSprAOHBaohxbdKT621o6URr2Go3kaDSPrkRlqbBGUzrC_Q-tATs0_G_ySau4jvvV-bGzlePaX6IsvrA3FAa3yrPGA2vkpxYY/s1600/0015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr-o9vFsy7tl8Uc5cNaxf5hEXpShY31zeQu8BXXO-bmAsSprAOHBaohxbdKT621o6URr2Go3kaDSPrkRlqbBGUzrC_Q-tATs0_G_ySau4jvvV-bGzlePaX6IsvrA3FAa3yrPGA2vkpxYY/s400/0015.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOBP1ioWuTQbDcNRABCY4H-V16sQV0dnUOcQP8kzioN7IjqvC46we8QY9rYeILaXVMe7kJ4T7v7_g-RTuF59qrhhPdjzWB2VG2oSLOd6gtQPs0tvqcz3qgxp5ZawshR0fNg4DCKD30eG0/s1600/0010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="343" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOBP1ioWuTQbDcNRABCY4H-V16sQV0dnUOcQP8kzioN7IjqvC46we8QY9rYeILaXVMe7kJ4T7v7_g-RTuF59qrhhPdjzWB2VG2oSLOd6gtQPs0tvqcz3qgxp5ZawshR0fNg4DCKD30eG0/s400/0010.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En la vista de proyectos de Eclipse creamos un fichero y hacemos Team > Commit para añadirlo al repositorio local.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgVFR9WrPB-IKMBDB950aIPi4NCPX5wTrAZOxbNFAXYUnVh37T-Q6HXmHLeg6ex4V6KClEz3r60x4rnl9KfQVETtEPixaWlFkfZPEYurWbNY1jB39kebS9MVciwAlAG4_jiktV2lhXtYQ/s1600/0012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgVFR9WrPB-IKMBDB950aIPi4NCPX5wTrAZOxbNFAXYUnVh37T-Q6HXmHLeg6ex4V6KClEz3r60x4rnl9KfQVETtEPixaWlFkfZPEYurWbNY1jB39kebS9MVciwAlAG4_jiktV2lhXtYQ/s400/0012.png" width="391" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Si nos pide identificación, poner tu mail de tu ssh / bitbucket.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRhZo_9V7aplsUOcp6Ij8_cffoN0KDm3o8xoenPIWhLQU-DjmwJHSBT62BxprDGccZvHfqpxKQlrVfbKY8tWiDQOj-VonP9aAqFE2WECnQCQLDAP_Zc454lIo6aHmXxURmxcqTZdkY_e8/s1600/0011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRhZo_9V7aplsUOcp6Ij8_cffoN0KDm3o8xoenPIWhLQU-DjmwJHSBT62BxprDGccZvHfqpxKQlrVfbKY8tWiDQOj-VonP9aAqFE2WECnQCQLDAP_Zc454lIo6aHmXxURmxcqTZdkY_e8/s400/0011.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
A continuación enviamos los cambios al master. Con Team > Push To Upstream. Si nos vamos a la vista web de bitbucket, ya tenemos nuestro fichero subido.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAojmOfND2cUGwAMMU5Z68C0niDajQLKiRcuvx7-a8Bcmyb8kpRweACSHyUJa4FT1xAc_D39DqDlgxVWf2yhGUajVMYg6OBmaGiKrCNS1zIyDDI0h1lpdmdxHfLXWqgxk58Xz2lmflpEo/s1600/0014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAojmOfND2cUGwAMMU5Z68C0niDajQLKiRcuvx7-a8Bcmyb8kpRweACSHyUJa4FT1xAc_D39DqDlgxVWf2yhGUajVMYg6OBmaGiKrCNS1zIyDDI0h1lpdmdxHfLXWqgxk58Xz2lmflpEo/s640/0014.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Fin.</div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-1288286910235730272011-10-27T19:33:00.002+02:002011-10-27T19:33:21.319+02:00Clone Mercurial Repository in EclipseVeremos como importar un proyecto <a href="http://mercurial.selenic.com/">Mercurial</a> en <a href="http://www.eclipse.org/">Eclipse</a>.<br />
<br />
Instalamos Mercurial<br />
<br />
<pre>$ sudo apt-get install mercurial</pre>
<br />
<span class="Apple-style-span" style="font-size: x-small;">(Windows: <a href="http://mercurial.selenic.com/downloads/">http://mercurial.selenic.com/downloads/</a>)</span><br />
<br />
Instalamos el plugin para Eclipse. Simplemente ir al <b>Eclipse Marketplace</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDlVLAtTZAlhZJNIYVu-t11FaDDKJUzGXED_L9AyEUIS4ktET0q7V5Cfd60zGCeMHYSwFMYQaHWtPXUp5KyQkqRBp1uSKAtxg-wJNqON9jcG2ew6hlCfd5tlBXAd4cFtwvxe8ToT9b-sE/s1600/%25C3%2581rea+de+trabajo+2_057.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDlVLAtTZAlhZJNIYVu-t11FaDDKJUzGXED_L9AyEUIS4ktET0q7V5Cfd60zGCeMHYSwFMYQaHWtPXUp5KyQkqRBp1uSKAtxg-wJNqON9jcG2ew6hlCfd5tlBXAd4cFtwvxe8ToT9b-sE/s320/%25C3%2581rea+de+trabajo+2_057.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Buscamos el plugin <i>Mercurial</i><i>Eclipse</i>, instalar, reiniciar y listo.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqneh7uRr32sgf4AqL9xTW3ZyC7pXx_fTXv0YIltZp8K-SI7uQMvQXvkBrUX36XPvXIwrpqHq4AboL7OyCX44fRJfaYX64VpAzLz9_o5eN-Nh-8AlwqEfdOW9EKefBAR2ZOS_XbZc282s/s1600/Selecci%25C3%25B3n_058.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqneh7uRr32sgf4AqL9xTW3ZyC7pXx_fTXv0YIltZp8K-SI7uQMvQXvkBrUX36XPvXIwrpqHq4AboL7OyCX44fRJfaYX64VpAzLz9_o5eN-Nh-8AlwqEfdOW9EKefBAR2ZOS_XbZc282s/s400/Selecci%25C3%25B3n_058.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Ahora ya podemos importar los proyectos desde nuestros repositorios. Por ejemplo, mi repositorio en: <a href="https://bitbucket.org/b3ni">https://bitbucket.org/b3ni</a><br />
<br />
New Project > Mercurial > Clone Existing Mercurial Repository<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXl4H1ycKiU4x6Iqsp0SfCM0xt9dYs0UNW0gFq0JlZlxhzaZnSfgV5AAEr4d5f9GZi0cHjicRYejIak1_FDgnhBNnTTw38MvlhGJStx3zTIpmda0JUZNdb1_5UP08KEBbM4Iz1dKLue18/s1600/New+Project+_059.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXl4H1ycKiU4x6Iqsp0SfCM0xt9dYs0UNW0gFq0JlZlxhzaZnSfgV5AAEr4d5f9GZi0cHjicRYejIak1_FDgnhBNnTTw38MvlhGJStx3zTIpmda0JUZNdb1_5UP08KEBbM4Iz1dKLue18/s320/New+Project+_059.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ya podemos trabajar de forma habitual.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvGe_ISoh-N98q28nGuEVMeVCAeQwAzxb5OzmacwPQlePCdqj5lDDWUjvSX5CHhMihOQ8eGQ8NdhcKY7yd5SvvKQCsgBvJXC_JrHfCGKnmGrx_1UutKi_bMq95ezyHZ6urhp5ikn_cw5U/s1600/%25C3%2581rea+de+trabajo+2_060.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvGe_ISoh-N98q28nGuEVMeVCAeQwAzxb5OzmacwPQlePCdqj5lDDWUjvSX5CHhMihOQ8eGQ8NdhcKY7yd5SvvKQCsgBvJXC_JrHfCGKnmGrx_1UutKi_bMq95ezyHZ6urhp5ikn_cw5U/s400/%25C3%2581rea+de+trabajo+2_060.png" width="343" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.javaforge.com/project/HGE"><span class="Apple-style-span" style="font-size: xx-small;">http://www.javaforge.com/project/HGE</span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-78206504361874546052011-07-27T20:40:00.001+02:002011-07-27T20:41:40.464+02:00Change COOKIE_KEY / Restart Passwords... in Prestashop<span class="Apple-style-span" style="font-size: large;"><b>Para cambiar la key de la cookie de Prestashop</b></span><br />
<br />
1. Crear fichero php: /generate_cookie.php<br />
<pre><?php
require_once './classes/Tools.php';
$newkey = ToolsCore::passwdGen(56);
$newpass = md5($newkey."PASSWORD");
print "NEW COOKIE KEY: $newkey<br>";
print "UPDATE ps_employee SET passwd = '$newpass' WHERE id_employee = 1;<br>";
</pre>Este script generá una cookie nueva y su password para el administrador.<br />
<br />
2. Configurar PASSWORD adecuadamente.<br />
<br />
3. Ejecutar el fichero en el navegador. Para obtener nueva key-cookie.<br />
<pre>NEW COOKIE KEY: <span class="Apple-style-span" style="color: red;">WjgztSZ7NoQwbP2X6aFuynOzahFLLhUfte8rV9EhavBMze1jCQJJv6ON</span>
UPDATE ps_employee SET passwd = '<span class="Apple-style-span" style="color: red;">288570e272dc5da49e48abbcb296a068</span>' WHERE id_employee = 1;</pre>4. Actualizar el fichero config/settings.inc.php con la nueva cookie:<br />
<pre>define('_COOKIE_KEY_', '<span class="Apple-style-span" style="color: red;">WjgztSZ7NoQwbP2X6aFuynOzahFLLhUfte8rV9EhavBMze1jCQJJv6ON</span>');</pre>5. Actualizar la contraseña del administrador en BD ejecutando el DDL.<br />
<pre>UPDATE ps_employee SET passwd = '<span class="Apple-style-span" style="color: red;">288570e272dc5da49e48abbcb296a068</span>' WHERE id_employee = 1;
</pre><br />
<span class="Apple-style-span" style="font-size: large;"><b>Restablecer la contraseña de un usuario de Prestashop</b></span><br />
<br />
1. Crear el fichero php: /restart_password.php<br />
<pre>$key = '<span class="Apple-style-span" style="color: red;">WjgztSZ7NoQwbP2X6aFuynOzahFLLhUfte8rV9EhavBMze1jCQJJv6ON</span>';
$idEmployee = 1;
$newpass = md5($key."PASSWORD");
print "UPDATE ps_employee SET passwd = '$newpass' WHERE id_employee = $idEmployee;<br>";</pre>2. Configurar $key (está en el fichero: config/settings.inc.php), $idEmployee y PASSWORD adecuadamente.<br />
<br />
3. Ejecutar el script.<br />
<br />
4. Actualizar la contraseña del usuario ($idEmployee) en BD ejecutando el DDL.<br />
<br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<a href="http://www.prestashop.com/forums/topic/22045-solved-changed-server-cant-login/"><span class="Apple-style-span" style="font-size: x-small;">http://www.prestashop.com/forums/topic/22045-solved-changed-server-cant-login/</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-71095839376440100822011-07-22T08:35:00.001+02:002011-07-22T08:38:25.321+02:00HTTP Authentication with SOAPCiertos web-service en SOAP tienen autenticación HTTP. Por lo que debemos suministrar el usuario y el password en las cabeceras de la petición.<br />
<br />
Ahora veremos como configurar el SoapUI para hacer este tipo de peticiones y posteriormente como realizarlas en una aplicación PHP.<br />
<br />
<b>SoapUI</b><br />
<br />
Primero asegurarnos que la opción A<i>uthenticate Preemptively</i> está marcada, de esta forma enviamos user / password en los requests. La encontramos en: File > Preferences > HTTP Settings<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmccI5RcEWYS9YN4RwdI1qNtiXGP-vLwJOeNvoMtckZ1qS8FybGhKQZW_puMrsCG_T277NQz79MDPamY4GEKA5Ccadb9Ci9j9wn21y5UjfIumcwx-LuQdiZHe1ptjhV7wFYuQDJkD3JeQ/s1600/Selecci%25C3%25B3n_038.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmccI5RcEWYS9YN4RwdI1qNtiXGP-vLwJOeNvoMtckZ1qS8FybGhKQZW_puMrsCG_T277NQz79MDPamY4GEKA5Ccadb9Ci9j9wn21y5UjfIumcwx-LuQdiZHe1ptjhV7wFYuQDJkD3JeQ/s400/Selecci%25C3%25B3n_038.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-size: small;"> File > Preferences > HTTP Settings > Authenticate Preemptively</span></td></tr>
</tbody></table>Ahora, desplegamos la pestaña <b>Aut</b> en la ventana de petición y rellenamos usuario y password.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKx0JnzjYQobumLhONk9quwtQx1yfPQCOB373cTeLzWXY0kJQ9M-RpxuFWaL0UaHWJkPlE2dfUyZ1emcDO_11xh1kGgtYXIqpijsh7xnG-kqaN_YKIXEm2nmw-p4m00FOnGWWurRIuUGc/s1600/Selecci%25C3%25B3n_039.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKx0JnzjYQobumLhONk9quwtQx1yfPQCOB373cTeLzWXY0kJQ9M-RpxuFWaL0UaHWJkPlE2dfUyZ1emcDO_11xh1kGgtYXIqpijsh7xnG-kqaN_YKIXEm2nmw-p4m00FOnGWWurRIuUGc/s400/Selecci%25C3%25B3n_039.png" width="367" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Indicando Usuario y Password en la petición Soap</td></tr>
</tbody></table><br />
<div><b>PHP</b><br />
<br />
En las peticiones SOAP implementadas en PHP, añadimos las siguientes opciones en la creación del cliente Soap.<br />
<br />
<pre>$client = new SoapClient('http://tuweb/wsdl', array(
'login' => 'USER',
'password' => 'PASSWORD')
);
$result = $client->METODO();
</pre><br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: x-small;"><a href="http://www.soapui.org/">http://www.soapui.org/</a></span><br />
<a href="http://www.php.net/manual/es/soapclient.soapcall.php"><span class="Apple-style-span" style="font-size: x-small;">http://www.php.net/manual/es/soapclient.soapcall.php</span></a><br />
<br />
</div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-80344415585071145432011-06-22T17:16:00.001+02:002011-06-27T22:00:34.973+02:00Get items with dinamic key-array in SmartyAcceso a item de un array asociativo en smarty, mediante una clave dinámica.<br />
<br />
Imaginemos que tenemos un array asociativo de la forma:<br />
<br />
<pre>$text = array(
'lang_es' => 'foo',
'lang_en' => 'var',
);
</pre><br />
Si queremos acceder en la plantilla a un item concreto:<br />
<br />
<pre>{assign var='codeCountry' value='en'}
My name is: {$text.{"lang_"|cat:$codeCountry}}</pre><br />
<span style="font-size: xx-small;">Referencias:</span><br />
<span style="font-size: xx-small;"><a href="http://www.smarty.net/">http://www.smarty.net/</a></span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-60298998395460828592011-04-20T22:00:00.001+02:002011-04-20T22:00:00.964+02:00Eclipse / Pydev + Django + DoesNotExistPara el evitar el molesto error de sintaxis <b>DoesNotExist</b> como el models.<b>objects</b> que <a href="http://pydev.org/">PyDev</a> con los proyectos <a href="http://www.djangoproject.com/">Django</a>.<br />
<br />
Un ejemplo:<br />
<br />
<pre>try:
c = Casilla.objects.get(fila=fila, col=col)
except Casilla.DoesNotExist:
return None
</pre><br />
El editor nos muestra los errores en objects y DoesNotExist:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FQ3b1Nh19LNdfrKDW5MfaHXRrMqwmFpN1RE5KRJxSD8jRySg7HJwPKjPupUqP18rXD1oI1XIoMVRmzOr2GoOZto6RXDk2UZzQE6SaET7VIPiU57pxs1FaVE5UxQh2lHipXgKgk7m714/s1600/Selecci%25C3%25B3n_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FQ3b1Nh19LNdfrKDW5MfaHXRrMqwmFpN1RE5KRJxSD8jRySg7HJwPKjPupUqP18rXD1oI1XIoMVRmzOr2GoOZto6RXDk2UZzQE6SaET7VIPiU57pxs1FaVE5UxQh2lHipXgKgk7m714/s320/Selecci%25C3%25B3n_013.png" width="320" /></a></div><br />
Para evitar esto, simplemente añadimos que PyDev ignore estás palabras y las considere globales. Dentro del Eclipse, nos vamos a:<br />
<br />
Window > Preferences > Pydev > Editor > Code Analysis > Undefined<br />
<br />
Ya añadimos esas palabras, separadas con comas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqFmhsB008Ucqk-zOO92WYJXA8V0XLN8b45bVPLVtFJ_olUHPpZFefb5NHunbRWIMRfKdfk9itin8IdMbvK5CvYkkCeW-mhYgXplgRAtSUE1NrnvQlU-dfuY7QACN48H5qsgTLOd2jyig/s1600/Selecci%25C3%25B3n_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqFmhsB008Ucqk-zOO92WYJXA8V0XLN8b45bVPLVtFJ_olUHPpZFefb5NHunbRWIMRfKdfk9itin8IdMbvK5CvYkkCeW-mhYgXplgRAtSUE1NrnvQlU-dfuY7QACN48H5qsgTLOd2jyig/s640/Selecci%25C3%25B3n_014.png" width="640" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"></div><br />
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://stackoverflow.com/questions/851628/django-user-doesnotexist-does-not-exist/1391255#1391255">http://stackoverflow.com/questions/851628/django-user-doesnotexist-does-not-exist/1391255#1391255</a></span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-51440382771798313402011-03-18T10:24:00.001+01:002011-03-18T10:24:00.035+01:00Repositorio externo dentro de copia de trabajoSupongamos que tenemos un repositorio para alojar nuestro proyecto, y queremos usar un repositorio externo dentro del mismo.<br />
<br />
<br />
Por ejemplo tenemos la siguiente estructura en nuestro repositorio.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiygcAROd5inGGxCh0FOVy2wQ-uahMffyzvWxHDBoYfbZMR5CmkhyVutmZZC4qm02nquXLwjfJJriKDUYq56DzaaNjgP4Nb0Xzr8W-qHd8tuT3bTmyS2nsQ7Tv4MaBJc8_vIli7lzIk3RQ/s1600/Selecci%25C3%25B3n_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiygcAROd5inGGxCh0FOVy2wQ-uahMffyzvWxHDBoYfbZMR5CmkhyVutmZZC4qm02nquXLwjfJJriKDUYq56DzaaNjgP4Nb0Xzr8W-qHd8tuT3bTmyS2nsQ7Tv4MaBJc8_vIli7lzIk3RQ/s200/Selecci%25C3%25B3n_013.png" width="200" /></a></div><br />
Queremos que el directorio dojo sea un "enlace" al svn de dojo, por ejemplo la versión 1.6.0rc1<br />
<br />
Basta hacer:<br />
<br />
<pre>cd test-svn-externo/js
rmdir dojo
svn propset svn:externals 'http://svn.dojotoolkit.org/src/tags/release-1.6.0rc1/ dojo' .
svn update
</pre><br />
Ya estamos sincronizados con el repositorio externo, si lo abrimos con el Eclipse, nos lo marcará.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisvIxNpx0Z8_JxfyhMgx70GjbCIjvTKyivm6r8bNVE1LOoBAEJc73ezxB0FkMhBHft8rakfXeLBy2h32k52dnwx4QV5BPnbeJvEyC7TeXRjRVUm7_OFxe1hN1rkg4basCIrVFZE-0DKP8/s1600/Selecci%25C3%25B3n_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisvIxNpx0Z8_JxfyhMgx70GjbCIjvTKyivm6r8bNVE1LOoBAEJc73ezxB0FkMhBHft8rakfXeLBy2h32k52dnwx4QV5BPnbeJvEyC7TeXRjRVUm7_OFxe1hN1rkg4basCIrVFZE-0DKP8/s1600/Selecci%25C3%25B3n_014.png" /></a></div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-48651912326787879282011-03-13T10:00:00.001+01:002011-03-13T10:00:02.782+01:00Ficheros Ocultos EclipsePara mostrar los ficheros ocultos dentro del Eclipse. (Por ejemplo: .httpacces)<br />
<br />
En la vista del Explorar de Ficheros, pulsar sobre el icono del triángulo y Filters...<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3eol6qL4IaMQ9I5OryH5NG9V2Yc5HvY885AiconlJhyphenhyphenLURoPDfWlyacDL4FrlYX7wUTOnOAhPG00bxzuWQ4MJnp3vZ45eoRVhVjl_MT9Gt8ax8zBaX3vVndhSvFdG7aXF7oWn6arOCko/s1600/Selecci%25C3%25B3n_008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3eol6qL4IaMQ9I5OryH5NG9V2Yc5HvY885AiconlJhyphenhyphenLURoPDfWlyacDL4FrlYX7wUTOnOAhPG00bxzuWQ4MJnp3vZ45eoRVhVjl_MT9Gt8ax8zBaX3vVndhSvFdG7aXF7oWn6arOCko/s400/Selecci%25C3%25B3n_008.png" width="340" /></a></div><br />
Desmarcar la opción: <i>.* resources</i><br />
<i><br />
</i><br />
Después de eso, ya aparecerá el filtro en el menú contextual del triángulo, para su facil acceso.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1gFEtOHnP55ukqytrhLoCw_HgDwEML5IoifokskAjEb3yG8oP6_4lgOxLjl-J4FoXYyawQRRApkkr8F3CLY7gwv3gOGB8B0iv5hA6NJEDL28JC1yZUb_GHC9Y-OqJtnt69S6bGXbuHNs/s1600/%25C3%2581rea+de+trabajo+1_009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1gFEtOHnP55ukqytrhLoCw_HgDwEML5IoifokskAjEb3yG8oP6_4lgOxLjl-J4FoXYyawQRRApkkr8F3CLY7gwv3gOGB8B0iv5hA6NJEDL28JC1yZUb_GHC9Y-OqJtnt69S6bGXbuHNs/s1600/%25C3%2581rea+de+trabajo+1_009.png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="font-size: x-small;">Referencias:</span></div><div class="separator" style="clear: both; text-align: left;"><a href="http://es.w3support.net/index.php?db=so&id=98610"><span class="Apple-style-span" style="font-size: x-small;">http://es.w3support.net/index.php?db=so&id=98610</span></a></div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com1tag:blogger.com,1999:blog-8681853551766938564.post-75617709785358531012011-03-11T15:00:00.001+01:002011-03-11T20:16:12.111+01:00Script init.d subversion UbuntuDescribiré la forma de crear un script de arranque para Subversion.<br />
<br />
<b>Estado del sistema</b><br />
<br />
<u>Subversión instalado</u><br />
<span class="Apple-style-span" style="font-family: monospace; white-space: pre;">sudo apt-get install subversion</span><br />
<br />
<u>Repositorio creado</u><br />
<pre>sudo mkdir /usr/local/svn/repos
sudo svnadmin create /usr/local/svn/repos</pre><br />
<b>Scritp de arranque en init.d</b><br />
<br />
<pre>cd /etc/init.d
sudo touch subversion
sudo vi subversion
</pre><br />
Escribimos el contenido. Si nuestro repositorio está en otro sitio, cambiar la variable REPOS<br />
<br />
<pre>#!/bin/bash
NAME=svnserve
DESC="Subversion server"
DAEMON=/usr/bin/$NAME
REPOS=/usr/local/svn/repos/
PARAMS="-d -r $REPOS"
DAEMONUSER=root
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
start_it_up()
{
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --chuid $DAEMONUSER:$DAEMONUSER --exec $DAEMON -- $PARAMS
log_end_msg $?
}
shut_it_down()
{
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --retry 60 --quiet --oknodo --exec $DAEMON
log_end_msg $?
}
case "$1" in
start)
start_it_up
;;
stop)
shut_it_down
;;
restart)
shut_it_down
start_it_up
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
</pre><br />
Editamos los permisos del scritp:<br />
<br />
<pre>sudo chmod +x /etc/init.d/subversion</pre><br />
Lo añadimos al arranque:<br />
<br />
<pre>sudo update-rc.d subversion defaults</pre><br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<a href="http://pintucoperu.wordpress.com/2008/06/24/creando-un-servidor-svn-en-ubuntu/"><span class="Apple-style-span" style="font-size: x-small;">http://pintucoperu.wordpress.com/2008/06/24/creando-un-servidor-svn-en-ubuntu/</span></a><br />
<a href="http://benrobb.com/2007/01/15/howto-start-subversion-at-boot-on-ubuntu/"><span class="Apple-style-span" style="font-size: x-small;">http://benrobb.com/2007/01/15/howto-start-subversion-at-boot-on-ubuntu/</span></a><br />
<a href="http://manpages.ubuntu.com/manpages/dapper/es/man8/start-stop-daemon.8.html"><span class="Apple-style-span" style="font-size: x-small;">http://manpages.ubuntu.com/manpages/dapper/es/man8/start-stop-daemon.8.html</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-51802802000355220922011-03-09T22:33:00.000+01:002011-03-09T22:33:00.803+01:00SO y Arquitectura LinuxSaber el sistema operativo y la aquitectura de la máquina.<br />
<br />
<pre>$ cat /etc/issue && uname -m
Ubuntu 10.10 \n \l
x86_64</pre><br />
<span class="Apple-style-span" style="font-size: x-small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: x-small;">http://www.versionet.com/gnu-linux/como-saber-que-distribucion-y-version-de-linux-esta-instalada</span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-67799388428123517042010-12-26T08:00:00.005+01:002011-03-08T09:28:27.380+01:00Cambiar contraseña usuario PostgresqlPara cambiar la constraseña de un usuario Postgresql, hacer:<br />
<br />
<pre>$ sudo su - postgres
$ psql</pre><pre>postgres=# alter user USUARIO with encrypted password 'NEW-PASS';
ALTER ROLE
postgres=# \q
</pre><br />
Asegurarse que el fichero de permisos de Postgresql está correcto.<br />
<br />
<pre>$ sudo vi /etc/postgresql/8.4/main/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all md5
$ sudo /etc/init.d/postgresql restart</pre><br />
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://markmail.org/message/y2lh4vnbojl5r4rc">http://markmail.org/message/y2lh4vnbojl5r4rc</a></span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-74296957269180963792010-12-22T22:00:00.001+01:002010-12-22T22:00:02.658+01:00Setup OpenERP Ubuntu 10.10Continuamos con la configuración del servidor OpenERP. En campitulos anteriores teníamos las siguientes configuración:<br />
<br />
<ul><li>PostgresSQL, con usuario para OpenERP, <span class="Apple-style-span" style="color: #222222; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 15px; line-height: 21px;"><b>openerp</b></span></li>
<li><span class="Apple-style-span" style="color: #222222; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif;"><span class="Apple-style-span" style="font-size: 15px; line-height: 21px;">OpenERP instalado.</span></span></li>
</ul><br />
Indicamos la conexión de ERP a la BD. Editamos <i>openerp-server.conf</i><br />
<br />
<pre>$ sudo vi /etc/openerp-server.conf
# Specify the database user name (default None).
db_user = openerp
# Specify the database password for db_user (default None).
db_password = password
</pre><br />
Arrancamos el server. Podemos ver los logs en <b>/var/log/openerp.log</b><br />
<br />
<pre>$ sudo /etc/init.d/openerp-server restart</pre><br />
Opcional: Crear base de datos de demo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5O4f4pwfDXPAWsvx1dmzd54PrIt6wXECNLlUYmAxDiaSkJqy20RhPr90eTQD6x3bWGm4Guk8SOygFzQ1ueOG924OIv_g-tLmG73ITkmMOUS_NjEgSzp9OusM_XZrfZfrLywaXJjfrSmc/s1600/Crear+una+nueva+base+de+datos_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5O4f4pwfDXPAWsvx1dmzd54PrIt6wXECNLlUYmAxDiaSkJqy20RhPr90eTQD6x3bWGm4Guk8SOygFzQ1ueOG924OIv_g-tLmG73ITkmMOUS_NjEgSzp9OusM_XZrfZfrLywaXJjfrSmc/s400/Crear+una+nueva+base+de+datos_006.png" width="400" /></a></div><br />
El password por defecto (como se indica) para el usuario admin de OpenERP, es <i><b>admin</b></i>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVahCC2ecENIBwuXjE7MT7xv7N7OnZ7tcbmHtrQewOnB59sUuTSMWwJddMjseRpUDgwTFhIZvTtvHq_-8_mupuVyP_Rx4DYxmxgV21u1cqpqXXiP40e5vp1Fu1G0Bs5jgr4vK7TvzBurw/s1600/Creaci%25C3%25B3n+Base+de+Datos_008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVahCC2ecENIBwuXjE7MT7xv7N7OnZ7tcbmHtrQewOnB59sUuTSMWwJddMjseRpUDgwTFhIZvTtvHq_-8_mupuVyP_Rx4DYxmxgV21u1cqpqXXiP40e5vp1Fu1G0Bs5jgr4vK7TvzBurw/s400/Creaci%25C3%25B3n+Base+de+Datos_008.png" width="400" /></a></div><br />
<br />
Después seleccionamos un perfil (escogemos el mínimo) y rellenamos los datos de nuestra compañía.<br />
<br />
Continuará...<br />
<br />
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span><br />
<a href="http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_install.html#installation-on-linux-ubuntu"><span class="Apple-style-span" style="font-size: xx-small;">http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_install.html#installation-on-linux-ubuntu</span></a><br />
<a href="http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_db_create.html"><span class="Apple-style-span" style="font-size: xx-small;">http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_db_create.html</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com1tag:blogger.com,1999:blog-8681853551766938564.post-38530523296464035462010-12-19T08:00:00.002+01:002010-12-21T10:12:22.825+01:00Install OpenERP Ubuntu 10.10 (for dummies)Otra instalación más fácil (que la comentada en <a href="http://papeltank.blogspot.com/2010/11/install-openerp-ubuntu-1010.html">otros capitulos</a>) es instalar los paquetes directamente desde el repositorio de Ubuntu.<br />
<br />
Suponemos que ya está montada la base de datos PostgresSQL con un usuario para OpenERP.<br />
<br />
Hacemos:<br />
<br />
<pre>$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install openerp-server openerp-client
</pre><br />
Esto instalará el cliente, el server y sus dependencia. Pone el server como demonio y lo arranca.<br />
<br />
<pre>Configurando openerp-server (5.0.14-0ubuntu1) ...
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Open ERP uses a PostgreSQL database to store its data. With the first *
* generation of packages, you have to setup this database manually. *
* Please read /usr/share/doc/openerp-server/README.Debian how to do it. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Starting openerp-server: openerp-server.
</pre><br />
Continuará...<br />
<br />
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span><br />
<a href="http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_install.html#installation-on-linux-ubuntu"><span class="Apple-style-span" style="font-size: xx-small;">http://doc.openerp.com/book/1/1_1_Inst_Config/1_1_Inst_Config_install.html#installation-on-linux-ubuntu</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-86480711489268464482010-12-17T22:00:00.000+01:002010-12-17T22:00:00.791+01:00Eclipse bloqueado: Loading Workbench...Cuando tu amigo Eclipse le da por quedarse colgado/congelado (hangs) en la pantalla de inicio. Más concretamente cuando está...<br />
<br />
<div style="text-align: center;"><i><b>Loading Workbench...</b></i></div><div style="text-align: center;"><i><b><br />
</b></i></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL21ts8-V5kY6Auyyf1J2VMDU9aQ7uXO5tb2fwGnU9sMguBOfdblv1qlAUkJLZi28Gx28PU0rb50Q1Y6t09K13mwBEwGrwTADw6KKC5E3PdR1N7_DDFeqyjSI2PI5Zo1vx1eiiErhf5tU/s1600/Escritorio+1_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL21ts8-V5kY6Auyyf1J2VMDU9aQ7uXO5tb2fwGnU9sMguBOfdblv1qlAUkJLZi28Gx28PU0rb50Q1Y6t09K13mwBEwGrwTADw6KKC5E3PdR1N7_DDFeqyjSI2PI5Zo1vx1eiiErhf5tU/s320/Escritorio+1_002.png" width="320" /></a></div><div style="text-align: center;"><b><i><br />
</i></b></div><div style="text-align: left;">Una solución un poco <i>bestia</i> (¿quien dijo lo de matar moscas a cañonazos? ¿Raid?) es eliminar la configuración del workspace.</div><div style="text-align: left;"></div><ul><li>Paramos eclipse</li>
<li><span class="Apple-style-span" style="font-family: inherit;"><pre>$ rm ~/workspace/.metadada -rf</pre></span></li>
<li>Arrancamos eclipse</li>
<li>Configuramos entorno eclipse (tedioso!!!!)</li>
<li>Importamos los proyectos: File > Import... > Existing Projects into Workspace</li>
</ul><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgInA0kQCacyesze5C8Ln9vGNpmS7fK2hutdYZD_PXEnv9rak7H2ARtcEIpjMfY7pFv1o3CpT0NX7nFpNeUssTClLsB3VJmMgv6blbZi_CrZEcF2GRDZ9p1a75VVhFTr8zuwzzXSfzqE20/s1600/Import+_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgInA0kQCacyesze5C8Ln9vGNpmS7fK2hutdYZD_PXEnv9rak7H2ARtcEIpjMfY7pFv1o3CpT0NX7nFpNeUssTClLsB3VJmMgv6blbZi_CrZEcF2GRDZ9p1a75VVhFTr8zuwzzXSfzqE20/s320/Import+_003.png" width="320" /></a></div><div style="text-align: left;"><br />
</div><div style="text-align: left;">Hasta definir cual es exactamente lo que produce el bloque dentro de .metadata, habrá que hacer esto. Sobre todo cuando hay prisa.</div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><span class="Apple-style-span" style="font-size: x-small;">Referencias:</span></div><div style="text-align: left;"><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=209801"><span class="Apple-style-span" style="font-size: x-small;">https://bugs.eclipse.org/bugs/show_bug.cgi?id=209801</span></a></div><div style="text-align: left;"><br />
</div>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0tag:blogger.com,1999:blog-8681853551766938564.post-48608968066017165022010-12-14T18:43:00.005+01:002011-01-10T08:09:49.666+01:00Uninstall software PythonComo sabréis el setup.py no tiene comando uninstall o remove. Para eliminar un software python utilizaremos la opción --record del comando install.<br />
<br />
<pre>--record: filename in which to record list of installed files</pre><br />
Por lo que tendremos que re-instalar.<br />
<br />
<pre>sudo python setup.py install --record files.txt</pre><br />
Ahora solo nos queda borrar todos los ficheros y directorios, ayudándonos del comando <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs">xargs</a>, el cual ejecuta ordenes para cada linea del fichero.<br />
<br />
<pre>cat files.txt | xargs rm -rf</pre><br />
Si tienes alguna reserva al ejecutar el <i>rm -rf,</i> visualiza el fichero:<br />
<br />
<pre>cat files.txt <s>| sudo xargs echo</s></pre><br />
<span class="Apple-style-span" style="font-size: large;">Resumiendo:</span><br />
<br />
<pre>sudo python setup.py install --record files.txt
cat files.txt | sudo xargs echo
</pre><br />
<span class="Apple-style-span" style="font-size: xx-small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://kmandla.wordpress.com/2009/01/08/there-is-no-setuppy-uninstall/">http://kmandla.wordpress.com/2009/01/08/there-is-no-setuppy-uninstall/</a></span>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com2tag:blogger.com,1999:blog-8681853551766938564.post-14809920210801477712010-12-13T08:00:00.016+01:002010-12-21T10:13:57.887+01:00Install OpenERP Ubuntu 10.10Bienvenido al maravilloso mundo de <a href="http://es.wikipedia.org/wiki/OpenERP">OpenERP</a> (anteriormente conocido como TinyERP).<br />
<br />
A igual que mi colega <a href="http://m1cm3.blogspot.com/">m1cm3</a>, haré una serie de entradas destinadas a instalar/configurar/aprender OpenERP, eso sí, en Ubuntu 10.10.<br />
<br />
Comenzamos con la instalación. Describo los pasos a seguir para tener una instalación básica con los datos de ejemplo.<br />
<br />
Versiones:<br />
<br />
<ul><li>Ubuntu 10.10</li>
<li>PostgresSQL 8.4</li>
<li>OpenERP 5.0.15</li>
<li>Python 2.6.6</li>
</ul><br />
<span class="Apple-style-span" style="font-size: x-large;">PostgreSQL</span><br />
<br />
Instalamos es servidor desde el repositorio<br />
<br />
<pre>$ sudo apt-get install postgresql</pre><br />
Cambiamos permisos del usuario admin: <b>postgres</b><br />
<br />
<pre>$ sudo su - postgres
$ psql postgres
postgres=# \password postgres
Ingrese la nueva contraseña: <i>password</i>
Ingrésela nuevamente: <i>password</i>
postgres-# \quit
$ exit
</pre><br />
Habilitamos el login de forma local al servidor de postgresql. Y cambiamos el modo de acceso de los usuarios de cualquier tipo y a cualquier base de datos a md5 (por derfecto está a ident). Si no, nos encontraremos un mensaje similar cuando intentemos hacer un login local.<br />
<br />
<pre>$ psql -d postgres -U postgres -W
psql: FATAL: la autentificación Ident falló para el usuario <<postgres>>
</pre><br />
Editamos y modificamos el fichero <b>pg_hba.conf</b>:<br />
<br />
<pre>$ vi /etc/postgresql/8.4/main/<b>pg_hba.conf</b>
<b>
</b>
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all <b>md5</b>
</pre><br />
Reiniciamos el servidor postgresql.<br />
<br />
<pre>$ sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 8.4 database server
</pre><br />
Creamos un usuario para OpenERP, <b>openerp</b>, indicando que será un superusurio.<br />
<br />
<pre>$ sudo su - postgres
$ createuser --createdb --username postgres --no-createrole --pwprompt <b>openerp</b>
Ingrese la contraseña para el nuevo rol: <i>password</i>
Ingrésela nuevamente: <i>password</i>
¿Será el nuevo rol un superusuario? (s/n) <b>S</b>
</pre><br />
Comprobamos si todo ha ido correcto.<br />
<br />
<pre>$ psql
postgres=# SELECT * FROM pg_user ;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+----------+----------+-----------
openerp | 16384 | t | t | t | ******** | |
postgres | 10 | t | t | t | ******** | |
(2 filas)
\quit
</pre><br />
Probamos el login del usuario <i>openerp</i> a la base de datos por defecto <i>postgres</i>.<br />
<br />
<pre>$ psql -d postgres -U openerp -W
Contraseña para usuario openuser:
psql (8.4.5)
Digite «help» para obtener ayuda.
postgres=# \quit
</pre><br />
Todo ok.<br />
<br />
<b>EDIT: una mejor y más rápida instalación, seguir <a href="http://papeltank.blogspot.com/2010/12/install-openerp-ubuntu-1010-for-dummies.html">aqui</a></b><br />
<br />
<span class="Apple-style-span" style="font-size: x-large;">OpenERP</span><br />
<br />
Instalaremos la última versión estable del server y demás clientes. Nos la descargamos desde su web: <a href="http://www.openerp.com/downloads">http://www.openerp.com/downloads</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoBw3Yqpbf6vW8xzR3syJyt9EcXfJ_zuopNJRP4QogUSH0xPwx1jVRGtfJ6JRLmYaH-OgEseRUWz7z-HaoNSQfhZ-NxUmUiYYP5TxogjcorTcThEqeTB5UIT99C7asRwTX0_KVB1hUH0c/s1600/Selecci%25C3%25B3n_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoBw3Yqpbf6vW8xzR3syJyt9EcXfJ_zuopNJRP4QogUSH0xPwx1jVRGtfJ6JRLmYaH-OgEseRUWz7z-HaoNSQfhZ-NxUmUiYYP5TxogjcorTcThEqeTB5UIT99C7asRwTX0_KVB1hUH0c/s320/Selecci%25C3%25B3n_001.png" width="320" /></a></div><br />
<span class="Apple-style-span" style="font-size: large;">Instalando el openerp-server</span><br />
<br />
Instalamos las librerías necesarias para el servidor:<br />
<br />
<pre>$ sudo apt-get install python python-psycopg2 python-reportlab python-egenix-mxdatetime python-tz python-pychart python-pydot python-lxml python-vobject python-yaml
</pre><br />
Descomprimimos el server y lo testeamos (sin instalación), de esta forma podremos saber si están todas las dependencias satisfechas o por el contrario nos falta alguna librería.<br />
<br />
<pre>$ tar xvfz openerp-server-6.0.0-rc1.tar.gz
$ cd openerp-server-6.0.0-rc1/bin
$ python openerp-server.py
</pre><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2RvsGug90o5VYq9jCUu31hMNfk9opBHP91gqD4hIGfIVE7MFR3IvSyB7Ezpd9VLXaE9sDNf3BBhg09lrByMrSWORWfrNjra4B0Es_eXLZr7A8vCYpvrMJcsgWxInceqWaBe_NU0pGLRM/s1600/Selecci%25C3%25B3n_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2RvsGug90o5VYq9jCUu31hMNfk9opBHP91gqD4hIGfIVE7MFR3IvSyB7Ezpd9VLXaE9sDNf3BBhg09lrByMrSWORWfrNjra4B0Es_eXLZr7A8vCYpvrMJcsgWxInceqWaBe_NU0pGLRM/s400/Selecci%25C3%25B3n_002.png" width="400" /></a></div><br />
Con <i>python openerp-server.py -h</i> obtendremos todos los comandos del server.<br />
<br />
Realizamos la instalación.<br />
<br />
<pre>$ pwd
/home/b3ni/bin/openerp-server-6.0.0-rc1
$ sudo python setup.py install
</pre><br />
Al finalizar ya está instalado, si no ha ocurrido ningún problema. Podemos hacer un whereis para ver donde está el bin.<br />
<br />
<pre>$ whereis openerp-server
openerp-server: /usr/local/bin/openerp-server
</pre><br />
<span class="Apple-style-span" style="font-size: large;">Instalando el cliente gráfico</span><br />
<br />
Librerías:<br />
<br />
<pre>$ sudo apt-get install python python-gtk2 python-glade2 python-matplotlib python-egenix-mxdatetime python-hippocanvas
</pre><br />
Descomprimimos y testeamos:<br />
<br />
<pre>$ tar xvfz openerp-client-5.0.15.tar.gz
$ cd openerp-client-5.0.15/bin/
$ python openerp-client.py
</pre><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFOHjoepqHYC2NHNkMXoAQZUoS-5hNTqt_7_m-myrIM8cX-k7ozJMr4gAGuLLqZm1YjmZOA7aVsv518W3FlsSNdwMlyuCNFN50fA2sYTzmwfRVhxV0QGW4PbBcdaQ-PDxGAzz6Yf29_F4/s1600/OpenERP_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFOHjoepqHYC2NHNkMXoAQZUoS-5hNTqt_7_m-myrIM8cX-k7ozJMr4gAGuLLqZm1YjmZOA7aVsv518W3FlsSNdwMlyuCNFN50fA2sYTzmwfRVhxV0QGW4PbBcdaQ-PDxGAzz6Yf29_F4/s400/OpenERP_003.png" width="400" /></a></div><br />
<br />
Lo instalamos:<br />
<br />
<pre>$ cd openerp-client-5.0.15/
$ sudo python setup.py install
</pre><br />
Lo probamos y obtenemos el siguiente error, indicando que no puede encontrar <i>openerp-icon.png</i> y proponiendonos revisar el fichero de configuración <b>.openerpc</b><br />
<br />
<pre>$ openerp-client
CRITICAL:init:No se ha podido abrir el archivo «openerp-icon.png»: No existe el fichero o el directorio
CRITICAL:init:Ensure that the file /home/b3ni/.openerprc is correct
</pre><br />
Editamos el fichero .openerpc e indicamos la ruta correcta al cliente (/usr/local/share):<br />
<br />
<pre>[path]
pixmaps = /usr/local/share/pixmaps/openerp-client
share = /usr/local/share/openerp-client
</pre><br />
<span class="Apple-style-span" style="font-size: large;">Instalando el cliente web</span><br />
<br />
Librerías:<br />
<br />
<pre>$ sudo apt-get install python-cherrypy3 python-pybabel python-mako python-simplejson python-formencode python-pyparsing python-tz python-xlwt
</pre><br />
Descomprimimos y configuramos:<br />
<br />
<pre>$ tar xvfz openerp-web-5.0.15.tar.gz
$ vi openerp-web-5.0.15/config/openerp-web.cfg
</pre><br />
En este fichero podemos configurar el servidor web. Por ejemplo el tipo de logging o el puerto donde escuchará el servidor web. Por defecto escuchará en el puerto 8080.<br />
<br />
Arrancamos el server web:<br />
<br />
<pre>$ pwd
/home/b3ni/bin/openerp-web-5.0.15
$ ./openerp-web.py
[12/Dec/2010:11:29:44] ENGINE Bus STARTING
[12/Dec/2010:11:29:44] ENGINE Started monitor thread '_TimeoutMonitor'.
[12/Dec/2010:11:29:44] ENGINE Started monitor thread 'Autoreloader'.
[12/Dec/2010:11:29:44] ENGINE Serving on 0.0.0.0:8080
[12/Dec/2010:11:29:44] ENGINE Bus STARTED
</pre><br />
Ya podemos acceder desde nuestro navegador en la dirección <b>localhost:8080</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVGDYaQF1vZUmI7UO45TKL1RZqg1k6LPtLaTTfndYt1nGROzLWFXeKuRtfZq53pdYtTYIozbfWCIurEiD02htzG3W8-o7hyphenhyphenFLxN7uSLFoE8RcWFVwkqdiFeQI0frhbSuPQhIUl4kEPAQ/s1600/Selecci%25C3%25B3n_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVGDYaQF1vZUmI7UO45TKL1RZqg1k6LPtLaTTfndYt1nGROzLWFXeKuRtfZq53pdYtTYIozbfWCIurEiD02htzG3W8-o7hyphenhyphenFLxN7uSLFoE8RcWFVwkqdiFeQI0frhbSuPQhIUl4kEPAQ/s400/Selecci%25C3%25B3n_004.png" width="400" /></a></div><br />
Continuará...<br />
<br />
<span class="Apple-style-span" style="font-size: small;">Referencias:</span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://doc.openerp.com/install/linux/index.html">http://doc.openerp.com/install/linux/index.html</a></span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://brunogirin.blogspot.com/2010/05/installing-openerp-on-ubuntu-1004-lts.html">http://brunogirin.blogspot.com/2010/05/installing-openerp-on-ubuntu-1004-lts.html</a></span><br />
<span class="Apple-style-span" style="font-size: xx-small;"><a href="http://doc.openerp.com/install/linux/server/index.html">http://doc.openerp.com/install/linux/server/index.html</a></span><br />
<a href="http://doc.openerp.com/install/linux/client/index.html"><span class="Apple-style-span" style="font-size: xx-small;">http://doc.openerp.com/install/linux/client/index.html</span></a>Anonymoushttp://www.blogger.com/profile/15134367341018058412noreply@blogger.com0