El hidrógeno es un gas ligero e inodoro que, con el tiempo suficiente, se convierte en gente. Anónimo

k éstas haciendo? desde consola

2010-03-09 04:51:00-06

Jaladioskis

Ya hace tiempo @vendaval habia mostrado una forma de actualizar nuestro perfil de twitter a traves de curl, pero nos habiamos quedado con la cosquilla de hacer lo mismo para el k éstas haciendo?, asi que me he tomado un rato para checarlo y esto es el resultado.

$ ./k_haciendo.sh contando ovejas  (agrega un estado)

 [chilicuil]chilicuil está:
contando ovejas
2 hours, 44 minutes ago

[chilicuil]chilicuil está:
contando ovejas
3 hours, 16 minutes ago

[Almsx]Almsx está:
Pero entonces ahora centauro seria basado en Ruby!
12 hours, 22 minutes ago

[Almsx]Almsx está:
sobre CakePHP para empezar a meterle mano a esto :D
12 hours, 22 minutes ago

[Almsx]Almsx está:
@aarkerio pues a trabajar se ha dicho, por aca unos amigos les dije y me
dijeron que tambien le entran, algo que estaria muy chido serian los howtos
como los que tu hiciste
12 hours, 23 minutes ago

[thot]thot está:
Claro que sí, la iba a poner por el diccionario de lenguas indígenas que
estoy haciendo, pero nada más que tenga un poquito de tiempo...
12 hours, 50 minutes ago


$ ./k_haciendo.sh update            (ve el status)

[chilicuil]chilicuil está:
contando ovejas
2 hours, 44 minutes ago

[chilicuil]chilicuil está:
contando ovejas
3 hours, 16 minutes ago

[Almsx]Almsx está:
Pero entonces ahora centauro seria basado en Ruby!
12 hours, 22 minutes ago

[Almsx]Almsx está:
sobre CakePHP para empezar a meterle mano a esto :D
12 hours, 22 minutes ago

[Almsx]Almsx está:
@aarkerio pues a trabajar se ha dicho, por aca unos amigos les dije y me
dijeron que tambien le entran, algo que estaria muy chido serian los howtos
como los que tu hiciste
12 hours, 23 minutes ago

[thot]thot está:
Claro que sí, la iba a poner por el diccionario de lenguas indígenas que
estoy haciendo, pero nada más que tenga un poquito de tiempo...
12 hours, 50 minutes ago

Nota: Si tienen problemas corriendo el script, ejecuten:

$ mv script.sh script.sh.backup; tr -d '\r' < script.sh.backup > script.sh

Permalink: http://mononeurona.org/entries/view/chilicuil/2126


Wikipedia en PDF

2010-02-21 04:57:12-06

Miscelania

[logo:wikipedia]

Hoy mientras navegaba me di cuenta  que se pueden exportar los articulos de la wikipedia en PDF ( ya luego vi que se puede desde el 2007 =.='), extrañamente solo vi la opción en la version española:

[wikipedia:espaniol]                  [wikipedia:ingles]

Asi que me puse a checar las urls hacia las que apuntaban y llegue a estas:

Para la version inglesa solo se tienen que sustituir algunos detalles, quedando la url de esta forma (para el articulo de VirtualBox):

http://en.wikipedia.org/w/index.php?title=Special:Book&bookcmd=render_article&arttitle=VirtualBox

[wikipedia:rendering_pdf]

Finalmente hice un pequeño script para pseudoautomatizar el proceso ya que no se como agregarlo al toolbox de la wikipedia -.-', me parece que en la version en inglesa hay que estar logeado...

http://chilicuil.pastebin.com/f15ac8a42

$ ./wiki.sh http://en.wikipedia.org/wiki/VirtualBox

http://en.wikipedia.org/w/index.php?title=Special:Book&bookcmd=render_article&arttitle=VirtualBox

Permalink: http://mononeurona.org/entries/view/chilicuil/2111


Ecomorph

2010-01-17 03:18:50-06

Linux

En vista del interes en ecomorph, por aquí dejo un pequenio tutorial para los que se les antoje probarlo, como mencionó @azimov, ecomorph es un hack de compiz y tambien solia serlo de e17 hasta que hace como 3-4 meses lo integraron en su rama principal.

En teoria es experimental, pero desde mi punto de vista es tan estable como cualquier otro gestor, bueno, un poco menos, pero E17 tiene el detalle de que cuando colapsa no mata ningun otro proceso, asi que solo se ve como se queda en negro, se recupera solo, y se redibujan todas las ventanas que se tenian abiertas. Otra cosa, es que aun no tiene todos y cada uno de los efectos de compiz y le falta a veces dibujar las esquinas de algunas ventanas, quedan advertidos. Respecto al rendimiento, tengo un pentium M, con 2Gb en ram y tarjeta Nvidia integrada y creo que es bastante rapido, mucho mas que Kde4 y Gnome, bueno, Gnome tampoco lo siento tan lento.

En fin, los pasos son:


0.- Hay que tener aceleración gráfica, http://chilicuil.pastebin.com/f7ab87d79, se descarga se le agregan permisos y se corre, todas las pruebas deben ser pasadas. (http://forlong.blogage.de/entries/pages/Compiz-Check)

      2 min aprox


1.- Se descarga, compila e instala e17, de preferencia desde el svn, http://mononeurona.org/entries/view/chilicuil/1771

     10 hrs aprox (dependiendo de la conexión)


2.- Se instalan más dependencias,

$ sudo apt-get install git-core automake intltool libtool xorg-dev libjpeg62-dev libpng12-dev librsvg2-dev libgl1-mesa-dev libglu1-mesa-dev libxml2-dev libxslt1 libxslt1-dev libdbus-1-dev nvidia-glx-180-dev

Es muy importante agregar las cabeceras del driver que usemos, en mi caso es nvidia-glx-180-dev 

Se agrega al ~/.bashrc:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/e17/bin:/opt/e17/bin:/opt/e17-ecomorph/bin:/usr/local/bin/bin/

      5 min. aprox


3.- Se descarga, compila e instala ecomp (hack de compiz), ecomorph (modulo de e17).

$ git clone git://github.com/jeffdameth/ecomorph.git

$ git clone git://github.com/jeffdameth/ecomp.git

$ PGK_CONFIG_PATH=/opt/e17/lib/pkgconfig ./autogen.sh

$ PATH=/opt/e17/bin/:$PATH LD_LIBRARY_PATH=/opt/e17/lib:/opt/e17/lib/eina:/opt/e17/lib/evas make

$ sudo make install

$ cd ../ecomp

$ ./autogen.sh && make && sudo make install

       3 hrs aprox


4.- Hay que logearse con e17 (OJO: en Ubuntu 9.10 me parece que no carga ~/.xsessions), ir a main menu -> settings -> modules -> ecomorph

Y luego ir a main menu -> settings -> ecomorph y seleccionar 'Enable Composite' y 'Ecomorph Mode', si funciona bien, ahora se puede usar desde 'ecomorph - e17 session' desde el gdm.

      3 min aprox


Elive Compiz (http://www.elivecd.org/Download/e17-compiz) es otra alternativa para verlo trabajando 'out of the box'

Permalink: http://mononeurona.org/entries/view/chilicuil/2039


My Current Desktop

2010-01-15 23:50:33-06

Budismo

 

Ubuntu 9.04 + E17 + Ecomorp

Casi no le he cambiado nada, me parece comodo tal como esta

Permalink: http://mononeurona.org/entries/view/chilicuil/2037


Unreal3.2.8 (irc)

2010-01-06 20:38:46-06

Miscelania

irc log

Hace tiempo tuve que montar un servidor irc, y ahora que por asares del destino vuelvo a necesitarlo dejo un pequenio tutorial por si a alguien mas se le ofrece.

Bien, para el ejemplo estare usando freebsd, pero vamos esto se puede hacer en cualquier maquina y en cualquier sistema operativo, incluyendo a windows.

Lo primero que tenemos que hacer es descargarnos el paquete que ara de servidor, asi como para http esta apache, cherokee, lightttp, nginx, etc y como para ftp hay filezilla, serv-u (el de las revistas de hack-X-crack), pureftp, etc. Para irc tambien hay software disponible como:

Bahamut
InspIRCd
Etc

Las redes como dalnet, undernet, freenode, etc, tienen muchos de estos demonios (bueno, usan sus propios programas) corriendo en varias maquinas y estas se sincronizan entre ellas para que todos puedan comunicarse simultaneament e, asi que si una maquina se cae, la red se puede seguir comunicando (obviamente los que hayan estado conectados a ese servidor perderan la conexion), sin embargo, si asi lo requerimos (o no tenemos muchas maquinas) todo esto se puede hacer desde una sola computadora, que es el ejemplo que veremos.

$ wget http://unreal.brueggisite.de/Unreal3.2.8.tar.gz
$ untar zxvf Unreal3.2.8.tar.gz
$ cd Unreal3.2.8/ 
$ ./Config      (observen como en lugar de ./configure se utiliza ./Config)

Les saldra un letrero como este:
_   _                      _ ___________  _____     _
| | | |                    | |_   _| ___ \/  __ \   | |
| | | |_ __  _ __ ___  __ _| | | | | |_/ /| /  \/ __| |
| | | | '_ \| '__/ _ \/  _ | | | | |    / | |    /  _ |
| |_| | | | | | |  __/ (_| | |_| |_| |\ \ | \__/\ (_| |
 \___/|_| |_|_|  \___|\__,_|_|\___/\_| \_| \____/\__,_|

                               Configuration Program
                                for Unreal3.2.8
                                    
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
regarding the setup of it, during the process.

If you have problems regarding the setup & compile, read Unreal.nfo to get
more information on where to get help. Please, before running this setup,
read the documentation in the "doc" folder. Docs are also avail online @
http://www.unrealircd.com/unreal32docs.html

[Enter to continue]
 

Le dan enter y continuan...

Many older operating systems have an insecure TCP/IP stack
which may be vulnerable to IP spoofing attacks, if you run
an operating system that is vulnerable to such attacks
enable this option. This option can also be useful to prevent
blind proxies from connecting (eg: HTTP POST proxies).

Do you want to enable the server anti-spoof protection?
[No] ->

Respondemos Yes y continuamos...

What directory are all the server configuration files in?
[/usr/home/chilicuil/Unreal3.2.8] ->

Aqui pongan lo que quieran, pero recuerden que deben tener permisos de escritura sobre ese directorio, ya despues pueden cambiarlos, para que nadie mas tenga acceso a ellos, en mi caso utilice: /usr/local/etc/Unreal3.2.8

What is the path to the ircd binary including the name of the binary?
/usr/local/etc/Unreal3.2.8/src/ircd] ->

Le damos enter

Would you like to compile as a hub or as a leaf?
Type Hub to select hub and Leaf to select leaf.
[Hub] ->

Hub se refiere a "lider", mientras que "leaf" vendrian siendo los repetidores, se acuerdan que les dije que una red como dalnet estaba compuesta de muchas computadoras?, pues bueno, una de ellas es la que ordena a las demas como organizarse, ese es el hub, como nosotros solo montaremos una sola maquina esta sera la 'Hub', cualquier otra duda, chequen la documentacion.

Bien, entonces damos enter y continuamos...

What is the hostname of the server running your IRCd?
[fulano] ->

Aqui pueden ponerle lo que quieran, pero debe ser algo que tenga mas o menos logica, por ejemplo yo lo monte este servidor para el dominio josefina.zapto .org entonces aqui puse irc.josefina.z apto.org ven como solo se le agrega el "irc" adelante? si tienen problemas para decidir un nombre, solo denle enter.

What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] ->

Le damos enter

Do you want to support SSL (Secure Sockets Layer) connections?
[No] ->

Si le ponen que si, entonces tendran que crear un certificado, aqui le daremos que "yes", aunque si para uso personal podria perfectamente No y no tendrian ningun problema, todo depende del nivel de paranoia.

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank
[]

Le dan enter, ya nos encargaremos mas tarde de esto.

Do you want to enable IPv6 support?
[No] ->

Le dan enter a menos que sepan que su red/equipo/so lo soporta

Do you want to enable ziplinks support?
[No] ->

Esto sirve para comprimir la comunicacion entre los servidores y asi disminuir el trafico, como solo estamos montando 1, le damos enter (por default no lo habilita), pero no olviden que aqui esta la opcion.

Do you want to enable remote includes?
[No] ->

Ijole, esta opcion quien sabe para que sea, bueno la dejamos como esta, no vaya a ser que la reguemos,

Do you want to enable prefixes for chanadmin and chanowner?
This will give +a the & prefix and ~ for +q (just like +o is @)
Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,
PJIRC, irssi, CGI:IRC, etc.)
This feature should be enabled/disabled network-wide.
[Yes] ->

Esta cosa, solo sirve para cambiar el "look" de los operadores, le damos enter (como ven, ya viene practicamente configurado por su cuenta, en la mayor de los casos solo hay que ir dando enter.

What listen() backlog value do you wish to use?  Some older servers
have problems with more than 5, others work fine with many more.
[5] ->

Ponemos 10 y le damos enter

How far back do you want to keep the nickname history?
[2000] ->

Enter, o pueden cambiarle a 1000, total se supone que es semipersonal

What is the maximum sendq length you wish to have?
[3000000] ->

Enter

How many file descriptors (or sockets) can the IRCd use?
[1024] ->

Por default en freebsd tendran problemas, porque el kernel limita a 980 procesos por default (recuerdan las bombas fork?), asi que cambienlo a 800 y ponganle enter, si han modificado /etc/security/limits.conf  vean que no sobrepase el limite.

Would you like any more parameters to configure?
Write them here:
[]->

Si han leido la documentacion y tienen alguna otra cosa que agregar, ahora es el momento, de lo contrario solo denle enter.

Veran algo parecido a esto:

./configure --with-showlistmodes --enable-nospoof --enable-hub --enable-ssl --enable-prefixaq --with-listen=5 --with-dpath=/usr/home/chilicuil/Unreal3.2.7 --with-spath=/usr/home/chilicuil/Unreal3.2.7/src/ircd --with-nick-history=2000 --with-sendq=3000000 --with-bufferpool=18 --with-hostname=fulano --with-permissions=0600 --with-fd-setsize=800 --enable-dynamic-linking
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler..

Ya se esta configurando, facil no?, esperamos unos momentos... Si habilitaron ssl (security socket layer) entonces veran algo como esto, solo sigan las instrucciones y no hay pierde:

Generating certificate request ..
/usr/bin/openssl req -new  -config src/ssl.cnf -out server.req.pem  -keyout server.key.pem -nodes
Generating a 1024 bit RSA private key
.............. .............. ........++++++
............++++++
writing new private key to 'server.key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name [US]:

En mi caso, pongo MX (mexico) y asi se van, hasta que obtengan esto:

|-------------------------------------------------------------------------|
| Congratulation s on your new SSL self-signed certificate for your IRCd.  |
| However, wouldn't it be better that you get your certifcate signed by   |
| some kind of Certification Authority (CA), so your users can check that |
| they are really connected to the real server, so they feel secure?      |
|                                                                         |
| There is an initiative at CACert.org - They offer SSL Certificates      |
| for use with your IRCd for free, so your users can be sure that they    |
| can trust you and your server.                                          |
|                                                                         |
| To get a free signed certificate please visit http://www.CACert.org     |
|                                                _________________________|
|                                              | Press enter to continue |
---------------------------------------------------------------------------

Listo, ya tienen un certificado firmado por ustedes mismos -.-', si quieren tener "mas seguridad" vayan http://www.CACert.org y sigan las instrucciones de aca: https://www.cacert.org/help.php?id=6

Regresando a la configuracion, ya les abra salido un letrero como este:

______________ ______________ ______________ ______________ ______________ _
|                                                                       |
|                    UnrealIRCd Compile-Time Config                     |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                                                                       |
| Now all you have to do is type 'make' and let it compile. When that's |
| done, you will receive other instructions on what to do next.         |
|                                                                       |
|_______________________________________________________________________|
|_______________________________________________________________________|
|                        - The UnrealIRCd Team -                        |
|                                                                       |
| * Stskeeps  stskeeps@unrealircd.com                                   |
| * codemastr codemastr@unrealircd.com                                  |
| * Syzop     syzop@unrealircd.com                                      |
|_______________________________________________________________________|

Compilamos:

$ make

Esto puede tomarles de 10 a 30 minutos...

______________ ______________ ______________ ________ 
| Compile is now complete.                         |
| You should now read the documentation and learn  |
| how to configure your IRCd.                      |
|                                                  |
| If you really like UnrealIRCd, and would like to |
| make a donation, please read the Donation file in|
| this archive.                                 |
|                                                  |
| Thanks for using Unreal IRCd! If you are in need |
| for any kind of help regarding the IRCd please   |
| read the Unreal.nfo file.                        |
|__________________________________________________|

Esto significa que han compilado con exito su demonio de irc, solo falta configurarlo, para hacer esto, hagan una copia del archivo doc/example.conf, adicionalmente podriamos instalarlo (make install), pero esto a mi consideracion abre las puertas para que todos puedan usarlo, y en mi opinion con un servidor basta y sobra.

$ cp doc/example.conf unrealircd.conf

Y comiencen a configurarlo, debe quedar claro que si no lo modifican el servicio no funcionara, aqui les menciono las partes mas importantes.

include "help.conf";
/*
include "badwords.chann el.conf";
include "badwords.messa ge.conf";
include "badwords.quit. conf";*/
include "spamfilter.con f";
include "sysusers.conf";
include "servers.conf";
/*

Hay que descomentar los anteriores include

/*
 * NEW: me {}
 * OLD: M:Line
 * me {} defines the name, description and unreal server numeric for
 * this server. Syntax is as follows:
 * me {
 *  name "server.name";
 *  info "Server Description";
 *  numeric (server numeric*);
 * };
 * If linking, this numeric may not be used by any other server on the network.
 */
me
{
    name "josefina.zapto .org";
    info "josefina inc";
    numeric 1;
};

Aqui va su dominio e informacion extra, comparen estos datos con su archivo doc/example.conf y llenenlo.

listen         *:6697
{
    options
    {
    /*  ssl;*/
        clientsonly;
    };
};

listen         *:8067;
listen         *:6667;

Dependiendo de como hayan configurado su servidor comenten o descomenten la parte de ssl, clientonly, zlink, etc.

ulines {
    services.josefina.zapto.org;
    stats.josefina.zapto.org;
};

Solo agregenle su dominio a services y a stats

set {
    network-name        "JSNet";
    default-server      "josefina.zapto .org";
    services-server     "services.josef ina.zapto.org";
    stats-server        "stats.josefina .zapto.org";
    help-channel        "#help";
    hiddenhost-prefix   "hidden";
    /* prefix-quit      "no"; */
    /* Cloak keys should be the same at all servers on the network.
     * They are used for generating masked hosts and should be kept secret.
     * The keys should be 3 random strings of 5-100 characters
     * (10-20 chars is just fine) and must consist of lowcase (a-z),
     * upcase (A-Z) and digits (0-9) [see first key example].
     */
    cloak-keys {
        "aoAr1HnR6gl3sJ 7hVz4Zb7x4YwpW ";
        "90jioIOjhiUIOH 877h87UGU898hg F";
        "IOjiojiio8990U HUHij89KJBBKU8 98";
    };
    /* on-oper host */
    hosts {
        local       "locop.josefina .zapto.org";
        global      "ircop.josefina .zapto.org";
        coadmin     "coadmin.josefi na.zapto.org";
        admin       "admin.josefina .zapto.org";
        servicesadmin   "csops.josefina .zapto.org";
        netadmin    "netadmin.josef ina.zapto.org";
        host-on-oper-up "no";
    };
};

Llenenlo segun sea su caso, recuerden que las "cloak-keys" deben ser diferentes, para poder escoder de forma adecuada las ips de sus clientes, no queremos que otros a parte de nosotros puedan la ip de los clientes que se conecten, jeje.

set {
    kline-address "fco.plj@gmail.com";
    modes-on-connect "+ixw";
    modes-on-oper    "+xwgs";
    auto-join "#cph";
    oper-auto-join "#operadores";
    options {
        hide-ulines;
        /* You can enable ident checking here if you want */
         identd-check;
        show-connect-info;
    };

Igual llenenlo segun sea su caso, esto solo tomenlo como un layout general. Despues de haber terminado, por fin sera momento de ejecutarlo.

./unreal start

No paren hasta que vean un letrero como este:

Starting UnrealIRCd
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
v3.2.6
using TRE 0.7.2 (GPL)
using OpenSSL 0.9.8d 28 Sep 2006
using zlib 1.2.3

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.
---------------------------------------------------------------------


Deben verificar que no tenga ni un error, abran su cliente favorito, pidgin, xchat, irssi, etc. y conectense si pueden ver un letrero que les da la bienvenida ya lo han logrado, ahora hay que agregarlo al arranque de su computadora, asi cada vez que inicie/reinicie, el servidor correra por su cuenta, tambien es una buena idea agregarlo al cron para que en caso de que se pare por cualquier motivo, se recupere solito.

# cp /usr/local/etc/Unreal3.2.8/unreal    /etc/rc.d/

O en caso de linux hay que copiarlo al nivel adecuado, en la mayoria de las distribuciones el 5 es el bueno.

# cp /usr/local/etc/Unreal.3.2.8/unreal    /etc/init.d/ # ln -s /etc/init.d/unreal   /etc/rc5.d/ $ crontab -e

Entraran a un editor, probablemente sea vi, y deberan pegar esto:

*/2 * * * * /usr/local/etc/Unreal3.2.7/ircdcron/ircdchk >/dev/null 2>&1

Listo a otra cosa.

Permalink: http://mononeurona.org/entries/view/chilicuil/2033


Problema con el ejemplo de Acl en Cakephp

2009-11-27 19:08:15-06

Programacion

Edito: Despues de tomarme las 2 semanas que me recomendaron, agrego algunas impresiones que me dejo esto.


Buenas, he empezado a ver que onda con Cakephp asi que empece a hacer las 2 aplicaciones de ejemplo pero estoy teniendo problemas con la segunda asi que lo posteo por aqui, para ver si alguien me hecha una mano.

He seguido al menos 4 veces las intrucciones (http://book.cakephp.org/view/641/Simple-Acl-controlled-Application) al pie de la letra pero no obtengo el resultado esperado.

Entiendo muy superficialmente que Acl es para otorgar permisos y que Auth para autenticarse (aunque no se como logra toda esa magia), bien, pues les cuento los pasos que he seguido.

1.- Creo la bd, las tablas, y cocino con bake el crud inicial, hasta ahi ningun problema.

2.- Agrego una funcion login y logout en el controlador 'users' y creo la vista al metodo login, en este punto me pregunto si esto:

$session->flash('auth');
echo $form->create('User', array('action' => 'login'));
echo $form->inputs(array(
'legend' => __('Login', true),
'username',
'password'
));
echo $form->end('Login');

es correcto?, he visto que en los comentarios dicen que le hacen falta las etiquetas de php, he preferido copiarlo tal cual.

Es necesario agregar las etiquetas, la vista es simple y llano php -.-'

3.- Creo app/app_controller.php, entiendo que la clase original viene en cake y que debajo de app podemos redeclarar los modelos y los controladores para personalizarlos, esto es correcto?

Sip, es correcto, de hecho es la unica forma (hasta donde se) en la que se pueden personalizar

4.- Agrego en los controladores de 'groups' y 'users' esto:

function beforeFilter() {
parent::beforeFilter();
$this->Auth->allowedActions = array('*');
}

Para otorgar permisos plenos a todos los usuarios/grupos

5.- Inicializo la tabla Acl con

$ cake schema run create DbAcl

Entiendo que se crearan 3 tablas, aqui me empiezo a perder, para que se supone que se usaran cada una?,

La primera, 'acos' (Access Control Object) se refiere a los recursos que se quieren proteger, como la edicion de nuevos posts (que aplica para este ejemplo), mientras que los 'aros' (Access Request Object) son los que tienen que ganarse los permisos, grupos y usuarios. Una vez declarados los jugadores (acos y aros) en la tabla 'aros_acos' se declaran las reglas, quien puede hacer que y como.

6- El tutorial dice que agregue esto al modelo 'users':

var $name = 'User';
var $belongsTo = array('Group');
var $actsAs = array('Acl' => 'requester');

function parentNode() {
if (!$this->id && empty($this->data)) {
return null;
}
$data = $this->data;
if (empty($this->data)) {
$data = $this->read();
}
if (!$data['User']['group_id']) {
return null;
} else {
return array('Group' => array('id' => $data['User']['group_id']));
}
}

Pero el que arroja bake ya trae un $belongsTo:

    ...
    //The Associations below have been created with all possible keys, those that are not needed can be removed
    var $belongsTo = array(
        'Group' => array(
        'className' => 'Group',
        'foreignKey' => 'group_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
        )
    );
    ...

He notado que si dejo ambos, me arroja muchos errores, cual deberia haber dejado?, por lo pronto deje el que crea bake, asi el modelo queda:

        var $name = 'User';
        var $validate = array(
            'username' => array('notempty'),
            'password' => array('notempty'),
            'group_id' => array('numeric')
        );
            var $actsAs = array('Acl' => 'requester');

        //The Associations below have been created with all possible keys, those that are not needed can be removed
        var $belongsTo = array(
            'Group' => array(
                'className' => 'Group',
                'foreignKey' => 'group_id',
                'conditions' => '',
                'fields' => '',
                'order' => ''
            )
        );

        var $hasMany = array(
            'Post' => array(
                'className' => 'Post',
                'foreignKey' => 'user_id',
                'dependent' => false,
                'conditions' => '',
                'fields' => '',
                'order' => '',
                'limit' => '',
                'offset' => '',
                'exclusive' => '',
                'finderQuery' => '',
                'counterQuery' => ''
            )
                );

            function parentNode() {
                if (!$this->id && empty($this->data)) {
                    return null;
                }
                $data = $this->data;
                if (empty($this->data)) {
                    $data = $this->read();
                }
                if (!$data['User']['group_id']) {
                    return null;
                } else {
                    return array('Group' => array('id' => $data['User']['group_id']));
                }
            }

Aqui sigo perdido, tendre que aplicarme con sql mas a fondo.

Luego agrego esto al modelo 'group':

var $actsAs = array('Acl' => array('requester'));
function parentNode() {
     return null;
 }

Aqui me vendria muy bien cualquier explicacion de lo que hacen las funciones parentNode(), y las variables $actAs

7.- Se supone que ahora debo crear algunos grupos y usuarios, asi que agrego los que se senialan en el tutorial, cada uno con un usuario:

  • administrators -> admin
  • managers -> manager
  • users -> user  

Algo curioso es que cada vez que agrego un grupo/usuario obtengo esto, creen que se deba a que no se esta usando rutas (redireccionando)?

Cuando accedo a users/index obtengo esta otra captura:

Y como veo que esta hasheando las contrasenias, supongo que debo ir bien hasta esta parte, el SELECT * FROM aros me da indentico al del tutorial.

El problema era un espacio en blanco al final del archivo app_controller.php -.-'

8.- Agrego una funcion afterSave() al modelo 'user', para sincronizar la tabla 'users' y 'aros', aqui me pregunto porque se tienen que sincronizar?

Porque si no, cada vez que agregaras un usuario, tendrias que agregarlo manualmente a 'aros', de lo contrario no podria accesar a ningun recurso.

9.- Inicializo la tabla ACO:

$ cake acl create aco root controllers

Lo que me crea una entrada como esta en la tabla 'acos'

mysql> select * from acos;
+----+-----------+-------+-------------+-------------+------+------+
| id | parent_id | model | foreign_key | alias       | lft  | rght |
+----+-----------+-------+-------------+-------------+------+------+
|  1 |      NULL | NULL  |        NULL | controllers |    1 |    2 | 
+----+-----------+-------+-------------+-------------+------+------+

Que no entiendo para nada. Y agrego:

$this->Auth->actionPath = 'controllers/';

A la funcion beforeFilter() en app/app_controller.php

Agrega la raiz, como menciono aarkerio, al parecer acl sigue una estructura jerarquica de arbol, de la cual 'controllers' es la raiz, y que tiene como 'id' 1, a partir de ahi, sus ramas 'linkearan' a 1 y las ramas de esas 'linkearan' a sus respectivos ids.

10.- La lleno con los datos de la aplicacion (o eso supongo), para eso corro el script que ahi mismo ponen (http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs)

Lo que al parecer va bien:

Llena la tabla 'acos' con todos los metodos de los controladores., hasta ahora se han llenado 'aros' y 'acos', se sigue jugando sin reglas.

11.- Ahora el tutorial dice que se deben crear los permisos, ya sea con acl (de la cual no tengo la mas remota idea) o con esto:

$this->Acl->allow($aroAlias, $acoAlias);

Que tampoco me lo deja muy claro.

El primer metodo se referia a un script de cake (del cual aun no tengo muy claro su funcionamiento), y este pues a la forma en la que se crean nuevas reglas, ahora que lo pienso es bastante facil, digo mejor esto, que andar buscando dentro de las tablas 'aros', 'acos' para agregar cada entrada a 'aros_acos'

12.- Copio, pego y corro la funcion initDB(), (http://book.cakephp.org/view/648/Setting-up-permissions)

Que se supone me pondra algunas entradas como 1's y 0's, aunque lo que obtengo son -1's y 1.

mysql> select * from aros_acos;
+----+--------+--------+---------+-------+---------+---------+
| id | aro_id | aco_id | _create | _read | _update | _delete |
+----+--------+--------+---------+-------+---------+---------+
| 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 1 | -1 | -1 | -1 | -1 |
| 3 | 2 | 30 | 1 | 1 | 1 | 1 |
| 4 | 2 | 9 | 1 | 1 | 1 | 1 |
| 5 | 3 | 1 | -1 | -1 | -1 | -1 |
| 6 | 3 | 33 | 1 | 1 | 1 | 1 |
| 7 | 3 | 34 | 1 | 1 | 1 | 1 |
| 8 | 3 | 12 | 1 | 1 | 1 | 1 |
| 9 | 3 | 13 | 1 | 1 | 1 | 1 |
+----+--------+--------+---------+-------+---------+---------+

13.- Remuevo los permisos temporales del paso 4 Y agrego:

function beforeFilter() {
parent::beforeFilter();
$this->Auth->allowedActions = array('index', 'view');
}

En los controladores de posts y widgets para sean accesibles a todos los usuarios, tambien agrego esto:

$this->Auth->allowedActions = array('display'); 

a la funcion beforeFilter() en app/app_controller.php

14.- En http://book.cakephp.org/view/649/Logging-in menciona que debemos crear una vista (de nuevo) para la funcion login del controlador 'users', asi que remuevo la anterior y pego esto:

<h2>Login</h2>
<?php
echo $form->create('User', array('url' => array('controller' => 'users', 'action' =>'login')));
echo $form->input('User.username');
echo $form->input('User.password');
echo $form->end('Login');
?>

MMM, al parecer siempre si se requieren las etiquetas de php...

15.- Segun el tutorial los ultimos pasos son agregar la logica a login():

function login() {
if ($this->Session->read('Auth.User')) {
$this->Session->setFlash('You are logged in!');
$this->redirect('/', null, false);
}
}

Y copiar, y modificar app/views/layouts/default.ctp para mostrar una advertencia cuando el login es incorrecto (o eso fue lo que entendi).

Con esto hecho, si voy a user, obtengo este error:

Pero si uso user/login, me deja ver la pantalla:

Cuando me logeo me vuelve a soltar esto:

Y si voy a posts/add me intenta redirigir (o eso creo) a users/login:

Por lo que supongo que esto no esta funcionando..., aclaro que cuando pongo un usuario/contrasenia incorrecto, entonces si me devuelve un cartel en rojo donde me recuerda que estan mal. Hasta el momento a parte de intentarlo varias veces he pedido ayuda con el grupo local de linux y nada, me han sugerido que el tutorial pueda estar mal, porque pese a que no entiendo muchas de las cosas, creo que lo segui lo suficientemente bien, asi que les pregunto, que me puede estar faltando?.

El error salia por un espacio perdido por ahi, pero la aplicacion estaba correcta, al no estar autentificado te redirecciona a login, y el segundo error se referia a ke los permisos no estaban correctamente establecidos, hasta la 5 vez que lo hice me di cuenta de la importancia de crear la primera entrada en 'acos', el que corresponde a 'controllers'

Nota: Perdon por el post kilometrico.

Permalink: http://mononeurona.org/entries/view/chilicuil/1977


Algunos atajos de bash

2009-11-23 17:47:40-06

Budismo


Algunos tips para autocompletar mas rapido:

Alt-/        ==> Autocompleta archivos
Alt-{       ==> Agrega los posibles archivos a la linea
Alt-?       ==> Muestra los posibles comandos (como Tab, pero solo se presiona una vez)
Alt-*       ==> Agrega todos los posibles comandos a la linea
Alt-~      ==> Completa nombres de usuarios
Alt-$       ==> Completa variables
Alt-@      ==> Completa nombres de maquinas

Ctrl-p       ==> Comando anterior
Ctrl-n       ==> El siguiente
Alt-<        ==> Va a la primera linea del history
Alt->        ==> A la ultima
Ctrl-r       ==> Busca hacia atras en caliente, presionalo de nuevo para el anterior
Ctrl-s       ==> Busca hacia adelante, en lo demas es igual al anterior
Ctrl-x Ctrl-e ==> Ejecuta un editor para darnos vuelo
Ctrl-k       ==> Elimina de donde esta el cursor hasta el final
Ctrl-u       ==> al reves
Alt-d         ==> Se vuela una palabra
Alt-\         ==> Remueve los espacios (no todos, solo los que esten debajo del cursor)

Tambien se pueden crear atajos propios, por ejemplo si hay un programa que se llame, todo (es un programa real que sirve para gestionar tareas) y acepta las funciones add, list, append, etc, etc, podemos crear un archivo en /etc/bash_completion.d/todo.autocp que tenga lo siguiente

Código:
 
#have todo &&
_todo()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    COMMANDS="add a addto app append archive command del       \
              rm depri dp do help list ls listall lsa listcon  \
              lsc listfile lf listpri lsp listproj lsproj move \
              mv prepend prep pri p replace report"

    OPTS="-@ -@@ -+ -d -f -h -p -P -a -n -t -v -vv -V"

    case "${prev}" in
        #-*)
        #    return 0
        #    ;;

        #add|a|addto|append|app|archive|del|rm|depri|dp|do|help| \
        #list|ls|listall|lsa|listcon|lsc|listfile|lf|listpri|lsp|\
        #listproj|lsprj|move|mv|prepend|prep|pri|p|replace|      \
        #report|)
        #    return 0
        #    ;;
        *)
            completions="$COMMANDS $OPTS"
            ;;
    esac

    COMPREPLY=( $( compgen -W "$completions" -- $cur ))
    return 0
}
#[ -n "${have:-}" ] && complete -F _todo $filename todo

complete -F _todo todo t

 

Links de interes:

  • www.gnu.org/software/bash/manual/bashref.html#Programmable-Completion
  • www.caliban.org/bash/
  • www.debian-administration.org/article/An_introduction_to_bash_completion_part_1

 

Permalink: http://mononeurona.org/entries/view/chilicuil/1973


Vulnerable PSB

2009-10-05 15:57:22-05

Miscelania

[1]
You may think I'm strong                  Pensarás que soy fuerte
and I can do no wrong                      que no cometo errores
but I'm vulnerable                             pero soy vulnerable
so vulnerable                                    muy vulnerable
without you                                      sin ti

[2]
I may be hard to take                       Puedo ser dificil de tratar
but you can call me fake                  pero puedes llamarme farzante
'cause I'm vulnerable                       porque soy vulnerable
so vulnerable                                   muy vulnerable
without you                                      sin ti

[3]
I know the assumption                     Sé que se da por hecho
is that I'm tough                              que soy terco
with all my anger                             por mi caracter / con toda mi ira
that's fair enough                            estoy de acuerdo
even with friends                             incluso con mis amigos
I have to compete                            tengo que competir
and try being me                              pero intenta ponerte en mis zapatos
when you walk down the street        cuando vayas por la calle

[4]
it's not easy                                     No es fácil
by the by                                          al fin y al cabo
just surviving                                  sobrevivir
in the public                                   en el ojo
eye                                                 público (wtf???)

[1]
[2]

[5]
you know I can't ever                       Sabes que no puedo darme el lujo
bear to seem weak                           de parecer debil
or have any doubts                          o de tener dudas.
that's just my technique                   Esa es mi técnica
I put in the hours                             Yo pongo las horas
at least I don't shirk                         al menos no lo evito
a little bravado                                un poco de alardeo
does much of the work                     hace la mayor parte

[6]
I am no one's                                   Nadie puede
stepping stone                                 usarme
but I couldn't live life                      pero no podría vivir la vida
in private                                        en privado
alone                                              solo

[1]
[2]

[7]
at night                                             por las noches
I am lying awake                              me despierto
through the hours trying                   y paso las horas tratando
to calculate                                      de responderme
am I good enough?                           soy lo suficientemente bueno?
could I contrive?                               podré inventar algo?
to keep this sham around                 para mantener esta farza
will I survive?                                   sobrevivire?

[8]
I know you must sometimes              Sé que algunas veces
think I don't care                              debes creer que no me importa
or even appreciate                            o que no aprecio / o que incluso no aprecio
what we share                                   lo que compartimos

[9]
though I'm no one's                          Y aunque nadie puede
stepping stone                                  usarme
the truth is I love you                        la verdad es que te amo
and I'd go crazy                                y que me volvería loco
alone                                                sin ti / solo

[1]
[2]

so vulnerable without you                tan vulnerable sin ti

Permalink: http://mononeurona.org/entries/view/chilicuil/1925


Software appliances

2009-07-31 20:41:53-05

Software Libre

Ayer (mm, creo que fue antier...) en vista de la salida de Suse Studio, me entere de las software appliances (algo asi como electrodomesticos de software?), bueno no importa, y me parecio algo practico (y un poco obvio al mismo tiempo) por lo que habia decidido hacer una entrada al respecto (por si alguien mas no estuviera enterado y como notal mental), sin embargo poco antes de terminar la entrada (una mas o menos larga), a mi firefox se le ocurrio congelarse y asi se perdio :(. 

Ahi habria quedado el tema sino fuera porque hoy mismo me ha llegado una invitacion para la mentada pagina y pues dado que ahorita andan algo escasas (por lo de beta) pense que seria bueno compartirla con los MNes :), mientras les llegaban la suyas.

Segun lo que ese dia lei, entre la wikipedia y el blog de uno de los desarrolladores, supe que son imagenes (ya sea virtualizadas o no) que arrancan como livecd y se instalan en pocos pasos (comparados al modo clasico). Es decir como una distro cualquiera, el detalle esta en que como nosotros creamos esas imagenes pueden contener desde una imagen de nuestro entorno de desarrollo hasta una imagen final para un cliente (con sus programas instalados y corriendo). Genial!

Tambien me entere de varios repositorios estaticos (no tenemos control sobre las imagenes) como:

http://www.vmware.com/appliances/

http://www.turnkeylinux.org/appliances

http://www.jumpbox.com/product/FREE+Downloads

http://bitnami.org/

Pero lo que realmente rifa son paginas como;

https://www.rpath.org/ui/   <-- Rbuilder (pre-registro, hay que tenerle paciencia al flash)

https://elasticserver.com/new-server  <---- (pre-registro)

Ambas estan bastante bien, bueno a la primera le quitaria puntos por lo del flash tan pesado, pero estan OK, aunque si los comparamos con suseStudio pues como si se ven mal, jeje. Y es que si ya vieron el screencast, sabran que se puede "virtualizar" en caliente sobre el propio navegador, a parte eyeOS, no sabia que eso era posible, ufff.  [1]

En fin, hasta aqui mi nota mental, dado que no me han dado mas invitaciones por el momento (pense que seria como gmail), los que quieran probarlo, pueden dejar su correo para que les mande el usuario/contrasenia (sip, tendremos que compartirla). Ojo que solo es valido para MNes, jejeje.

[1] Nat Friedman, lider del proyecto, ha escrito una entrada donde explica como lograron este y otros "efectos"

Permalink: http://mononeurona.org/entries/view/chilicuil/1860


Less a color

2009-06-05 05:05:06-05

Linux

No tenia idea de  que la salida de less se podia colorear, es decir a quien no le ha pasado que quiera listar "ls -la" todo el directorio y la salida es tan larga que tiene que recurrir a less, perdiendo con ello el color. Mucho menos estaba enterado de que la salida de man tambien tuviera esta caracteristica, ni tree o similares, la solucion es bien sencilla y probablemente la hubiera descubierto antes si me hubiera leido las respectivas man con cuidado y que sin embargo he encontrado de forma super clara en "Linux desktop hacks", que ademas trae chorrocientos de otros truquillos que podrian interesarles.

Para listar a traves de less sin perder el color, basta con:

$ ls -la --color |less -R

 

Para usarlo con man, hay que agregar esto a  ~/.bashrc

# Less Colors for Man Pages
export LESS_TERMCAP_mb=$'\E[01;31m'       # begin blinking
export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # begin bold
export LESS_TERMCAP_me=$'\E[0m'           # end mode
export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
export LESS_TERMCAP_so=$'\E[38;5;246m'    # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\E[0m'           # end underline
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline

Y para usarlo con tree, supongo que el resto de comandos, al menos los que producen alguna salida muy verbosa, trae una opcion similar:

$ tree -Ca /sys/ |less -R

 

Pueden encontrar mas de esos codigos raros que se ponen en ~/.bashrc en http://ascii-table.com/ansi-escape-sequences.php

Permalink: http://mononeurona.org/entries/view/chilicuil/1823


«Previous
Next »
1 of 4
Login




Join us!
Forgot your password?
chilicuil
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GU d-- s+: !a C++(+++) UL++++$B+++>$ P+ L+++@ !E(---) W+(++)>$ N++ o? K? !w
O? M? V? !PS PE-- Y+ PGP++ !t 5? !X R* tv-- b++>+++ DI? D++@
G++ e>+ h! r++ z?
------END GEEK CODE BLOCK------
Powered by
Despabilando la MonoNeurona.org
Livechat
<-Nombre

chilicuil wrote:
Vara, $250 porque puse como pretexto que era estudiante :&#41;, en realidad eran $350
on 21/2/08

aarkerio wrote:
Cuánto te costo el CONSOL?
on 20/2/08

scarecrow wrote:
Bienvenido!
on 18/1/08


camara, que se arme el desmadre, a tu salud
2 days, 19 hours ago
...
4 days, 3 hours ago
contando ovejas
4 days, 5 hours ago
contando ovejas
4 days, 6 hours ago
nunca!
1 week, 5 days ago
leyendo algunas quicknews
2 weeks, 2 days ago
chale, me volvi a quedar toda la noche despierto, marcador openvpn 3-0 chilicuil
2 weeks, 4 days ago
tambien estaria xido rss para los blogs
2 weeks, 4 days ago
las noticias de portada cayeron por su propio peso, lo que estario xido es que los comentarios de las quicknews usaran ajax o algo para no recargar todo nomas para ver el comentario
2 weeks, 4 days ago
yo diria que: Make everything as simple as possible, but not simpler
2 weeks, 6 days ago
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2009.