This is an alpha version of Phanet, You can test some of its features like categories, tags, user registration (no more than a registration for now), search engine and feed reading

Phanet's Wiki

Homepage

19

Aug

Written by: flaper87 on Tue, 19 Aug 2008 21:00:00 -0700
Science should be exactly as cool as the headlines sound.  Like the RUSSIANS CUT APART AND REASSEMBLE DOGS

17

Aug

RBA

Written by: flaper87 on Sun, 17 Aug 2008 21:00:00 -0700
This is a story all about how I started drinking.

14

Aug

Written by: flaper87 on Thu, 14 Aug 2008 21:00:00 -0700
And that's *another* crypto conference I've been kicked out of.  C'mon, it's a great analogy!

12

Aug

Written by: flaper87 on Tue, 12 Aug 2008 21:00:00 -0700
It's amazing what it does for YouTube comments.

10

Aug

Written by: flaper87 on Sun, 10 Aug 2008 21:00:00 -0700
Apparently Google assumes you're traveling during the ferry's normal operating hours.  We lost two hours circling that damn lake (to say nothing of the Straw Man).

7

Aug

Written by: flaper87 on Thu, 07 Aug 2008 21:00:00 -0700
Dinosaurs totally jumped the ichthyosaur when they got rid of Brontosaurus.

5

Aug

Written by: flaper87 on Tue, 05 Aug 2008 21:00:00 -0700
Okay, everyone, cross yourselves, then cross the streams.

3

Aug

Written by: flaper87 on Sun, 03 Aug 2008 21:00:00 -0700
And nothing for 'I'm glad I saw Epic Movie.'

31

Jul

Written by: flaper87 on Thu, 31 Jul 2008 21:00:00 -0700
'Don't worry, I can do it in under a minute.' 'Yes, I've noticed.'

29

Jul

Written by: flaper87 on Tue, 29 Jul 2008 21:00:00 -0700
This really is a true story, and she doesn't know I put it in my comic because her wifi hasn't worked for weeks.

27

Jul

Written by: flaper87 on Sun, 27 Jul 2008 21:00:00 -0700
...

24

Jul

Written by: flaper87 on Thu, 24 Jul 2008 21:00:00 -0700
My friend Elizabeth tried to mail one end of the cable to me and thread the mail system.

22

Jul

Written by: flaper87 on Tue, 22 Jul 2008 21:00:00 -0700
I'd like to see more damage assessments for hurricanes hitting New York and flooding Manhattan -- something like the 1938 Long Island Express, but aimed a bit more to the west.  It's just a matter of time.

20

Jul

Written by: flaper87 on Sun, 20 Jul 2008 21:00:00 -0700
Don't you know?  The chances of a random object being a scone are about one in six.

17

Jul

Written by: flaper87 on Thu, 17 Jul 2008 21:00:00 -0700
If you think this is too hard on literary criticism, read the Wikipedia article on deconstruction.

15

Jul

Written by: flaper87 on Tue, 15 Jul 2008 21:00:00 -0700
And then a second one, to drain the sea.

14

Jul

Written by: flaper87 on Mon, 14 Jul 2008 16:21:34 -0700

Hi all!!

Yes! It’s true, I’m releasing the mouseTrap version 0.2 so it can be downloaded by anyone.

What offers mouseTrap version 0.2:

* Complete control of the mouse pointer via webcam.

* Mouse Movements

* Mouse Clicks events ( left, double, drag/drop, middle, right… Scroll Up/Down coming in the coming revisions )

* Compatibility with other Assistive technologies ( MouseTweaks, GOK)

* Multi Desktop Manager application ( Tested with: Gnome, E17 and OpenBox W.M )

* Complete Documentation for developers ( using –enable-pydoc and –enable-doxygen for building it )

* more……

The Code:

It is written in python using OpenCV library, and can be browsed from:

http://mousetrap.flaper87.org/trac/

Or downloaded using the subversion repository:


svn checkout http://svn.flaper87.org/mousetrap mousetrap

Installation:

MouseTrap uses the autotools for the installation process, so it is as easy as doing:


$ ./autogen.sh && make

AS ROOT:

# make install

Suggestions:

Read the README file :D

Coming on future versions:

* Eye tracking

* More Stability

* Different clicking methods.

* mouseTrap Art ( Icons, Images ) ( Any help needed!! )

Well, I really hope you like it and I’ll be waiting for your feedback ( please write me to: flaper87 [at] flaper87 [dot] org )

Thanks all

14

Jul

Written by: flaper87 on Mon, 14 Jul 2008 02:03:59 -0700

Español:

Bueno acá dejo un vídeo realmente corto para demostrar el funcionamiento de mouseTrap con aplicaciones como OpenOffice Draw, el diseño que realizo es un simple cuadrado mostrando el uso del panel de click y específicamente el click Drag and Drop.

Disfrútenlo!!

English:

Well, Here’s the video showing how to use mouseTrap for drawing in applications like OpenOffice Draw.The design is a simple square showing the use of the buttons click panel and specifically the Drag and Drop click method.

Enjoy!!

Italiano:

Ecco qua un piccolo video di come funziona mouseTrap con applicazioni stile OpenOffice Draw. Si fa vedere l’uso del panello di click e specificamente l’uso del click Drag and Drop.

Spero vi piaccia!!

Video: http://www.youtube.com/watch?v=_rjyEouT-Hw

13

Jul

Written by: flaper87 on Sun, 13 Jul 2008 21:00:00 -0700
'I'm nothing without you' is a fucked-up sentiment.

10

Jul

Written by: flaper87 on Thu, 10 Jul 2008 21:00:00 -0700
As my standard, I use going to sleep at midnight and waking up at 8 AM.

8

Jul

Written by: flaper87 on Tue, 08 Jul 2008 21:00:00 -0700
They say if a mathematician doesn't do their great work by age eleven, they never will.

6

Jul

Written by: flaper87 on Sun, 06 Jul 2008 21:00:00 -0700
Someday the 'in popular culture' section will have its own article with an 'in popular culture' section.  It will reference this title-text referencing it, and the blogosphere will implode.

3

Jul

Written by: flaper87 on Thu, 03 Jul 2008 21:00:00 -0700
Bonus strip: just read the rightmost panels straight down.

1

Jul

Written by: flaper87 on Tue, 01 Jul 2008 21:00:00 -0700
At the time of this writing, Wikipedia has a wonderful article titled 'List of problems solved by Macgyver'.

29

Jun

Written by: flaper87 on Sun, 29 Jun 2008 21:00:00 -0700
Friggin' modern tents don't have a single piece of rope.

26

Jun

Written by: flaper87 on Thu, 26 Jun 2008 21:00:00 -0700
I love the title-text!

24

Jun

Written by: flaper87 on Tue, 24 Jun 2008 21:00:00 -0700
I bet my future kids will read this someday.  DEAR FUTURE KIDS: how did you get internet in the cellar?

22

Jun

Written by: flaper87 on Sun, 22 Jun 2008 21:00:00 -0700
Okay, now just as the loss hits him, slam on the brakes.

19

Jun

Written by: flaper87 on Thu, 19 Jun 2008 21:00:00 -0700
Did he just go crazy and jump out the window?

17

Jun

Written by: flaper87 on Tue, 17 Jun 2008 21:00:00 -0700
It's easier to be an asshole to words than to people.

15

Jun

SUV

Written by: flaper87 on Sun, 15 Jun 2008 21:00:00 -0700
Electric skateboards, by cost, get the equivalent of about 300 miles per gallon.  Lithium batteries just need to get cheaper.

12

Jun

Written by: flaper87 on Thu, 12 Jun 2008 21:00:00 -0700
I was there, dude.

10

Jun

Written by: flaper87 on Tue, 10 Jun 2008 21:00:00 -0700
On the other hand, physicists like to say physics is to math as sex is to masturbation.

8

Jun

Written by: flaper87 on Sun, 08 Jun 2008 21:00:00 -0700
Under three ounces, but it stains panties.

8

Jun

Written by: flaper87 on Sun, 08 Jun 2008 13:17:18 -0700

Well Here’s a short video showing the first mouseTrap mouth Click.

I hope you like it.

Acá les dejo un pequeño vídeo con el primer click ejecutado con mouseTrap.

Espero que les guste.

URL: http://www.youtube.com/watch?v=jfNRS1oSb34

5

Jun

Written by: flaper87 on Thu, 05 Jun 2008 21:00:00 -0700
'Pick you up at eight?' 'Nine.  I've got to re-mine the driveway.'

3

Jun

Written by: flaper87 on Tue, 03 Jun 2008 21:00:00 -0700
Man, this emo shit was supposed to be for people who didn't have hats.

3

Jun

Written by: flaper87 on Tue, 03 Jun 2008 18:32:39 -0700

Hi!!

I’ve been programming the httpServer and the dbusServer for mouseTrap and I wanted to share how simple is communicate with our applications using dbus and its python bindings.

The piece of code we are interested in is this:

import dbus
import gobject
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop

main_loop = DBusGMainLoop()
bus = dbus.SessionBus(mainloop=main_loop)

DBUS_NAME = "org.myApp"
DBUS_PATH = "/org/myApp"

class myAppdBus(dbus.service.Object):
    """
    Our dbus Class
    """

    def __init__( self ):
        """
        Starting the dbus service.
        """
        global bus
        bus_name = dbus.service.BusName(DBUS_NAME, bus=bus)
        dbus.service.Object.__init__(self, bus_name, DBUS_PATH)

    @dbus.service.method(DBUS_NAME)
    def do( self ):
        """
        Function to execute using dbus service
        """
        print "do function has been called using dbus service"

class myApp:

    def __init__(self):
        self.loop = gobject.MainLoop()
        d = myAppdBus()

    def start(self):
        self.loop.run()

if __name__ == '__main__':
    app = myApp()
    app.start()

It is a simple script with 2 classes. The main class called myApp will call the dbus class (myAppdBus) and will start the applications main loop. The second class (myAppdBus) is the dbus class, it starts the service and register the methods that can be called using dbus.

The script can be executed like this (in my case the name of the script is dbus_script.py):


$ python dbus_script.py

After running the script it is possible to execute the do function like this:


$ dbus-send --reply-timeout=30000 --print-reply --dest=org.myApp /org/myApp org.myApp.do

This last command will show us the information related to the call we just executed. The output is something like:

flaper87@r4-p17:~$ dbus-send --reply-timeout=30000 --print-reply --dest=org.myApp
/org/myApp org.myApp.do
method return sender=:1.6 -> dest=:1.7 reply_serial=2

Ass you can the classes are really simple and show an easy way to communicate with our applications using dbus. There are a lot of options a tweaks that can be implemented so it’s all in you hands now.

Good Luck.

P.S: Quick post, isn’t it? :P

2

Jun

Written by: flaper87 on Mon, 02 Jun 2008 15:18:12 -0700

Saludos!!

Quisiera compartir una de las tantas cosas que se descubren en #archlinux-es, posiblemente muchos ya la conozcan pero yo no :P

Goosh, es una shell no oficial de google que nos permite ejecutar la mayoria de las acciones que normalmente llevamos a cabo con St. Google pero a través de una shell al estilo unix.

No los entretengo mas, acá les dejo el link: http://goosh.org/

Saludos

1

Jun

Written by: flaper87 on Sun, 01 Jun 2008 21:00:00 -0700
Ma'am, I admit that wasn't in the best taste, but you have to admire my delivery!  Ha ha, get it?  Oh God, don't throw those syringes!  Your baby's fine!

29

May

Written by: flaper87 on Thu, 29 May 2008 21:00:00 -0700
There was something about a cup and a sword and a tree and a green hill ...

29

May

Written by: flaper87 on Thu, 29 May 2008 17:51:06 -0700
  1. Su nombre es fruto de un error de pronunciación del término gúgol (Googol).
  2. Su extrema sencillez se debe a que sus fundadores sabían muy poco HTML.
  3. En sus inicios mucha gente pensaba que la web no estaba totalmente cargada por su simpleza (no era lo habitual en aquellos tiempos).
  4. El botón “Voy a tener suerte” hace perder millones a Google en publicidad (te lleva directamente a una web). Se mantiene porque sus fundadores aseguran que hace al buscador más agradable.
  5. Google tiene registradas direcciones parecidas, por si alguien se equivoca al escribirlas, tipo gogle.com, gooogle.com.
  6. Su slogan era Don´t Be Evil (no seas malvado).
  7. Durante el 11-S Google se encargo de realizar “cachés” de los principales medios de comunicación (evitando su colapso) y se redirigieron muchas búsquedas hacia las últimas noticias.
  8. Google es propietario del dominio 466453.com ( escribe Google en un SMS para saber porqué).
  9. En Google usan la regla 20/5 para sus proyectos. Si al menos un 20% de los usuarios necesita una función esta se incluye. Además si como mínimo un 5% la necesita la implementan en preferencias avanzadas.
  10. GMail estuvo en periodo de pruebas 2 años y medio. Concluyeron que había 6 tipos de usuario, y en función de eso desarrollaron las opciones de la aplicación.
  11. Nadie sabe con exactitud donde están sus datacenters. Este es un mapa no oficial.
  12. Antes se llamó BackRub.
  13. Google tiene una intranet llamada Moma con documentación técnica e información de sus más de 16.000 empleados.
  14. Sus empleados tienen disponible el 20% de su tiempo para pensar en nuevos proyectos. interesante no?
  15. La compañía tiene una regla sobre la comida. Ningún empleado puede estar a más de 100 pies de ella.
  16. Para determinados estrenos como “El Señor de los Anillos” o “Transformers” la empresa ha alquilado varios cines exclusivamente para sus empleados y acompañantes.
  17. Google también fue beta durante un tiempo.
  18. Cobraron un cheque de 100.000$ a nombre de Google Inc…¡cuando aún no existía! Tuvieron que fundarla para poder hacerlo efectivo.
  19. GooglePlex es el nombre de sus oficinas.
  20. Fue fundada oficialmente el 7 de Septiembre de 1998. ¡Aún no tiene ni 10 años!”

29

May

Written by: flaper87 on Thu, 29 May 2008 12:18:49 -0700

OpenCv (Open Source Computer Vision Library) es una librería de funciones principalmente orientadas al procesamiento de imágenes en tiempo real.

En este post colocare un ejemplo de como utilizar OpenCV para realizar una simple captura y mostrarla en un frame.

import sys
from opencv import cv,highgui

if __name__ == '__main__':
    #Iniciamos la captura del device 0. Ej: /dev/video
    capture = highgui.cvCreateCameraCapture (0)

    # Revisamos que este Capturando.
    if not capture:
        print "Error Abriendo el device /dev/video0"
        sys.exit (1)

    # Creamos las ventanas necesarias.
    highgui.cvNamedWindow ("Ejemplo OpenCV", highgui.CV_WINDOW_AUTOSIZE)

    while 1:
        # Loop Infinito.

        # 1. Capturamos la imagen actual
        frame = highgui.cvQueryFrame (capture)

        # 1.1 Si no hay captura salimos.
        if frame is None:
            break

        # 2. Mostramos la imagen
        highgui.cvShowImage ("Ejemplo OpenCV", frame)

        # 3. Manejar Eventos. Esta función debe ser llamada periódicamente,
        # por eso esta dentro del loop
        c = highgui.cvWaitKey (10)

        #Revisamos si alguna tecla de nuestro interés fue presionada
        if c == '\x1b':
            # Esc fue presionado, Salimos.
            break

    cvDestroyWindow( "Ejemplo OpenCV" );

Como pueden apreciar los pasos son muy simples:

  1. Nos conectamos al device
  2. Comenzamos a capturar
  3. Mostramos la captura
  4. Capturamos teclas.
  5. Procesamos las capturas

Espero que les sirva como una pequeña introducción a opencv + python, seguire publicando otras formulas secretas :P para explicar pocas de las infinidades de cosas que se pueden hacer con esta combinacion :D

Feliz Día a todos!!

27

May

Written by: flaper87 on Tue, 27 May 2008 21:00:00 -0700
I guess if she accepted irrational realities, she'd hardly be my fantasy.

25

May

Written by: flaper87 on Sun, 25 May 2008 21:00:00 -0700
I always figured the word 'blog' would sound *less* silly as the years went by.

22

May

Written by: flaper87 on Thu, 22 May 2008 21:00:00 -0700
Protip: Even without the red spiders, never have that conversation halfway through a balloon ride.

20

May

Written by: flaper87 on Tue, 20 May 2008 21:00:00 -0700
Saturday is game night.

20

May

Written by: flaper87 on Tue, 20 May 2008 16:22:38 -0700

mouseTrap: This is the name of my new application. It is being developed using python and its main and most important function is allow users to control their mouse using a Web Cam and their faces by tracking specific points of the face previously detected. It is also capable to perform clicks and all the mouse options (at least it will). At this moment it is completely capable to perform mouse movements using at-spi’s python bindings (pyatspi).

1) History:

mouseTrap started as a simple widgetsTrap (read bellow), while the development advanced new ideas were coming and one of them was the idea of creating an application to move the mouse with the head using a simple and low cost web cam. After doing some research I found OpenCV ( base library of mouseTrap ). After downloading and testing OpenCV I found out that it is capable to do amazing things including face detection. After this I just performed some other tests and apply everything into mouseTrap and so the Web Cam feature became the main function of it.

2) Project Main Goal:

The main goal of the project is to become a completely accessible application for people with movement impairments and so take care of that important part of accessibility that wasn’t covered until now. With this, It’s possible to expand even more the Assistive Technology and Computer Accessibility and so make the technology accessible for more people.

3) What does mouseTrap use to model the head movement into mouse movement?

It calculates the 2D coordinates variation of the face movement on the Web Cam image and after that it executes the required movements with the pointer. It is a really simple calculation that gives an absolute and flexible control. The required movement is completely customizable by the user through the gtk based GUI.

4) Other Important Features:

  • WidgetsTrap: The widgetsTrap is a time-out focus executer feature that catches all the selectable and focusable widgets of the current window ( Desktop or any other application ) and if the mouse hasn’t been moved in the setted time-out the nearest selectable or focusable widget will be focused. A demonstration video can be found here
  • HttpServer: It is a basic httpServer to communicate with mouseTrap using command line ( wget ) or a simple web browser.
  • KeyBindings: Yes Keybindings! The keybindings let the user perform some extra mouseTrap actions like, re-detect points, enable/disable features and so on…
  • Mousebindings: There are also mousebindings for the main or most important actions ( like re-detect points ) so the can be executed using the Web Cam too requiring less movement.
  • Internationalisation: multi language support.

5) Future Features:

  • Eyetraking: This is the most important feature to implement, hopefully in a short future. This will allow the user to move the mouse just with the eyes, just watching the point in the screen where the mouse should be moved.
  • Plugins Interface: a simple interface for plugins implementations.
  • More Features to add soon…

I’ve recorded a Demo Video where is possible to appreciate how mouseTrap works. [video here]

There is a lot more to write, but i wanted to give a resume.

I hope you like the Video and even better the project.

Best Regards to all.

P.S: SPONSORS, Ideas, Suggestions, Opinions, Helps, DESIGNERS are welcomed so don’t think twice and feel free to submit a comment or mail me to: flaper87 at flaper87 dot com    :P

18

May

Written by: flaper87 on Sun, 18 May 2008 21:00:00 -0700
'You will have hot, steamy, sweaty sex ... IN BED!'

15

May

Written by: flaper87 on Thu, 15 May 2008 21:00:00 -0700
True story: I had to try several times to upload this comic because my ssh key was blacklisted.

13

May

Written by: flaper87 on Tue, 13 May 2008 21:00:00 -0700
The question with Lucy and the football was always whether, on some level, she believed the things she said.

11

May

Written by: flaper87 on Sun, 11 May 2008 21:00:00 -0700
It's *almost* enough to make me want to redo high school.

9

May

Written by: flaper87 on Fri, 09 May 2008 14:48:34 -0700

Si alguna ves se encontraron con que no podían montar un Disco Externo desde el administrador de archivos que solían usar aquí les coloco la solución a ese problema que me funciono. La solución consiste en agregar el usuario al grupo hal y crear una regla en dbus-1 que permita a hal montar los discos, como?… Así:

Para agregar al usuario al grupo hal ejecutamos el siguiente comando como root:

# usermod -a -G hal

Ahora bien aquí viene lo bonito que es modificar el archivo /etc/dbus-1/system.d/hal.conf como root:

Abrimos el archivo con nuestro editor preferido:

# vim /etc/dbus-1/system.d/hal.conf

Y agregamos:

<policy group="82">
<allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"></allow>
<allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"></allow>
<allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"></allow>
<allow send_interface="org.freedesktop.Hal.Device.Volume"></allow>
<allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"></allow>
</policy>

Donde 82 corresponde al ID de nuestro grupo hal, para saber el ID de nuestro grupo hal ejecutamos el siguiente comando:

$ cat /etc/group | sed 's/:/\ /g' | awk '{print $1 " --> " $3}' | grep -e '^hal'

Y obtendremos algo como:

hal --> 82

A este punto guardamos el archivo, cerramos la sesión y la volvemos a abrir. Si todo ha salido bien se deberia poder montar los discos desde el Administrador de Archivos.

Espero que les sirva!!

8

May

Written by: flaper87 on Thu, 08 May 2008 21:00:00 -0700
There are at least fourteen ways this could go badly (seventeen if that fork is a dangerous crossbreed.)

8

May

Written by: flaper87 on Thu, 08 May 2008 13:26:21 -0700

Resulta que me acabo de enterar que existe un plugin de Totem que permite explorar y ver los videos de youTube, asi que queria compartirlo con ustedes…

El plugin original se puede activar en Editar -> Complementos y marcando la casilla que dice “Examinador de YouTube”, también existe una mejora del plugin aqui el cual permite utilizar los nuevos códecs H.264 que ofrecen las personas de youTube los cuales permiten ver los vídeos con máxima calidad.

Para descargar el plugin se puede hacer desde acá y puede ser instalado de la siguiente manera:

tar xvzf youtubeh264.tar.gz
mv youtubeh264 /usr/lib/totem/plugins/

Luego puede ser activado de la misma forma que activamos el plugin original…

Totem + youTube

Enjoy….

6

May

Written by: flaper87 on Tue, 06 May 2008 21:00:00 -0700
Oh, huh, so you didn't know that story?

6

May

Written by: flaper87 on Tue, 06 May 2008 15:15:02 -0700

Acá les dejo unas cuantas frases Geeks que me pasaron, algunas las he modificado para hacerlas mas Linuxeras :P

Frases tomadas de este link

Ahí les dejo…

  • Eres el kernel de mi linux.
  • Eres el html de mi corazon.com.
  • Eres 1024kb para mi megabyte.
  • Tus ojos brillan mas que mi torre de cd´s.
  • Tucorazon.com esta en mi pagina de inicio.
  • Eres el socket de mi CPU.
  • Eres el compilador de mi codigo.
  • El .gif que anima mi vida.
  • Siempre estas en /home/Mi\ Corazón/
  • Te pienso mas que las paginas indexadas por google.
  • Eres como el firefox que me saco del infiero explorer.
  • Eres el enter de mi vida.
  • Si me dejas hago Ctrl+C en mi vida.
  • Cuando te veo mi ciclo de CPU se acelera.
  • Tú tienes la máxima prioridad en mi lista de procesos.
  • Eres el linkador de mis objetos.
  • Tus deseos son signals para mi.
  • Ninguna gráfica podría renderizar al 100% tu perfecta figura.
  • En la cama eres puro overclocking.
  • Sin ti mi vida sería como una web sin CSS.
  • Eres el cargador de mi iPod.
  • Díme cómo te llamas y te agrego a favoritos
  • Eres la primera en Google al buscar mi corazón.
  • Tienes permisos de root en mi vida.
  • Tus palabras tienen el IRQ más bajo para mí.
  • Compiz-Fusion tiene envidia de tu belleza.
  • Juntos somos como un procesador de doble núcleo.
  • Tengo el feed RSS de tus pensamientos.
  • Hiberno cuando no estás a mi lado.
  • Quisiera ser un Pendrive para tus USB.
  • Nuestros corazones sincronizan por Wifi.

4

May

Written by: flaper87 on Sun, 04 May 2008 21:00:00 -0700
Their biggest mistake was bringing Rachael Ray and Emeril to tour the lab and sign off on the project.  That's when Spielberg caught wind of it.

1

May

Written by: flaper87 on Thu, 01 May 2008 21:00:00 -0700
Although maybe it's just a phase, like freshman year of college when I realized I could just buy frosting in a can.

22

Apr

Written by: flaper87 on Tue, 22 Apr 2008 17:32:25 -0700

No hay palabras que pueda decirte,

pero si mil cosas por escribirte,

en las que como en un cuento de hadas,

tu eres la princesa de mis cruzadas.

No sabes cuanto te extraño,

a ti, a tu piel y a tu aroma de mayo,

que en el brillante resplandor de sus días,

te hacia mas bella, te hacia mas viva.

Te extraño como las aves extrañan al viento,

como los peces extrañan al mar,

como solo yo puedo extrañarte en este momento,

en la distancia de nuestro andar.

Siempre escribo con dolor,

aunque tus recuerdos me traigan alegría,

porque aunque inmensurable sea nuestro amor,

la distancia me sumerge en una terrible agonía.

Y dime tu Amada Mía,

si no existiera el silencio, ¿las aves como cantarían?

si no existieran los mares, ¿Los peces como nadarían?

Si no existieras tu, ¿mi corazón como latiría?

Mis manos tiemblan cuando escribo,

al mismo tiempo que mi corazón se acelera,

explícame entonces cariño mio

… no, no me expliques nada, déjame en el olvido

Y solo una cosa mas he decirte:

Que aunque mis versos sean batallas en las que mi corazón se acorrala

y mis palabras ocupen espacios sin sentido,

tu seras siempre nombrada como la princesa de mis cruzadas.

13

Apr

Written by: flaper87 on Sun, 13 Apr 2008 13:35:31 -0700

Este es un pequeño y simple howto acerca de como crear un paquete para Archlinux…

Los paquetes de archlinux son simples .tar.gz, la mayoria con 3 archivos dentro (2 de ellos opcional) que gestionan la descarga e instalación de la aplicación, digo la mayoria porque también existen paquetes que ademas de traer estos 2 archivos traen las fuentes de la aplicación (vease el caso de eclipse, netbean, Firefox3, entre otros) y que por ende son más pesados.

Estos dos archivos que mencionon son el PKGBUILD (Obligatorio), un .install con algunas reglas extras como pre_instalacion, post_instalacion, pre_desisntalacion o post_desisntalacion y un archivo .filelist que contine la lista de archivos el cual es usado para la desisntalación del paquete o para buscar conflictos con archivos. El archivo .install se dice que es opcional ya que el paquete no depende directamente de el, pero si no se especifican estas reglas el paquete a la hora de ser desisntalado (por ejemplo) sera eliminado solamente de la base de datos dejando todos los archivos en las carpetas de instalación ya que no existe ninguna regla para desinstalarlo y lo mismo se aplica para el archivo .filelist

Para este ejemplo utilizare el paquete de Ulipad que en estos momentos mantengo. Comencemos con el PKGBUILD:

El PKGBUILD es un archivo que contiene tanto la información completa del paquete como la
funcion de construcción (build) del paquete, por ejemplo:

# Maintainer: Flavio Percoco <flaper87 at archlinux dot com dot ve>
# Contributor: Flavio Percoco <flaper87 at archlinux dot com dot ve>
pkgname=ulipad
pkgver=3.8.1
pkgrel=1
pkgdesc="UliPad is en editor written in python and wxPython."
arch=('i686' 'x86_64')
license=('GPL')
install=ulipad.install
url="http://code.google.com/p/ulipad/"
depends=(python wxpython unzip)
source=("http://ulipad.googlecode.com/files/ulipad.$pkgver.zip")
md5sums=('9bfb7c6000c3b1a61e65840385c2be03')

build() {
cp -Rf $startdir/src/ulipad /usr/share/
echo "#!/bin/bash" > /usr/bin/ulipad
echo "python /usr/share/ulipad/UliPad.py" >> /usr/bin/ulipad
chmod 777 /usr/share/ulipad/ -Rf
chmod a+x /usr/bin/ulipad
}

Expliquemos el PKGBUILD:

Los parametros para proporcionar la informacón del paquete son faciles de entender, sin embargo acá les coloco la explicación de los que utilice, para verlos todos vean este link

  • pkgname: El nombre del paquete.
  • pkgver: La versión del paquete.
  • pkgrel: El numero de release del paquete, el cual debe ser modificado cada vez que se le hagan cambios al
  • PKGBUILD.
  • pkgdesc: La descripción del paquete.
  • arch: la architectura para la cual esta permitida el paquete.
  • license: La licencia del paquete.
  • install: El archivo .install a incluir el cual debe encontrarse en la misma carpeta del PKGBUILD.
  • url: La pagina principal del paquete.
  • depends: Las dependencias del paquete.
  • source: De donde se obtendran las fuentes, puede ser local como http o ftp.
  • md5sum: El md5sum de las fuentes del paquete.

La función build también es bastante simple por el tipo de paquete que estamos creando, Ulipad es un IDE para python hecho en python y utilizando wxwidgets, y su instalación se hace simplemente copiando la carpeta a donde queramos, sin necesidad de compilar o algo por el estilo.

cp -Rf $startdir/src/ulipad /usr/share/

Con este comando copiamos la carpeta de ulipad a /usr/share/ que sera nuestro path de instalación.

echo "#!/bin/bash" > /usr/bin/ulipad
echo "python /usr/share/ulipad/UliPad.py" >> /usr/bin/ulipad
chmod 777 /usr/share/ulipad/ -R
chmod a+x /usr/bin/ulipad

Esto era realmente opcional y lo hice para ofrecer un lanzador para ulipad ya que este no lo trae, simplemente creo un archivo llamado ulipad bajo /usr/bin el cual ejecutara el comando python /usr/share/UliPad.py al ser ejecutado y le otorgo permisos de ejecución.

Ahora pasemos a explicar el arhcivo ulipad.install del paquete el cual por la simplicidad del paquete es aun mas facil que el mismo PKGBUILD :-D

post_remove() {
rm -Rf /usr/share/ulipad/
rm /usr/bin/ulipad
}

La unica función que le agregue fue la de post_remove (post_desinstalacion) la cual eliminara todos los archivos que fueron agregados durante la instalación obviando los de configuracion del usuario por supuesto. En este caso esos archivos son /usr/share/ulipad y /usr/bin/ulipad.

Ok ahora empaquetemos todo lo que acabamos de hacer, creemos una carpeta con el nombre de la aplicación en la cual deberan ser guardados los archivos:

$ mkdir ulipad && cd ulipad
$ vim PKGBUILD // Para crear el PKGBUILD, pueden usar su editor favorito.
$ vim ulipad.install // Para crear el ulipad.install, pueden usar su editor favorito.

Ahora quedan dos cosas por hacer una es crear el paquete para subirlo a los repositorios de AUR ( Archlinux User-Community Repository ) y crear el paquete instalable. El primero nos servira simplemente para subirlo a AUR y que otros lo puedan instalar mediante yaourt (hasta que tenga suficientes votos para entrar en community y poder ser instalado mediante el uso de pacman ), este es un paquete que contiene los dos archivos que creamos y el cual sera construido cuando el usuario intente instalarlo; el segundo es un paquete ya construido y listo para instalar.

$ tar -cvvf ulipad-3.8.1.tar.gz ../       //Este es el que podra ser subido en los repositorios de AUR

# makepkg –asroot                        // Este debe ser ejecutado como root y con el comando –asroot

Ok… Hemos construido nuestros paquetes, el segundo es opcional pero siempre es bueno probarlo antes de subirlo al repositorio, asi que probemoslo. Como lo tenemos en nuestro computador lo podemos instalar con pacman.

# pacman -A ulipad-3.8.1-1-i686.pkg.tar.gz

Si todo va bien entonces es hora de entrar a la pagina de AUR, iniciar nuestra sesión y subir nuestro paquete ulipad-3.8.1.tar.gz

Espero que les sirva este pequeño howto de como crear un paquete para Archlinux…

6

Apr

Written by: flaper87 on Sun, 06 Apr 2008 09:07:09 -0700

Archlinux

Aprovecho para anunciar que instale Archlinux en mi laptop, las razones las explicare luego (si es que a alguien le interesa, lol)…. :-D

En este post quiero explicar como compilar un kernel para Archlinux, no me detendré en las configuraciones del kernel así que sera breve…

  • La versión del kernel con la que voy a trabajar es la 2.6.24.-4
  • El directorio en el cual estaré trabajando es ~/kernel/linux-2.6.24.4

Lo primero que hay que hacer es configurar el kernel, compilarlo e instalar sus modulos, si se quiere utilizar las configuraciones viejas del kernel que esta actualmente instalado y con el que estamos trabajando hay que hacer lo siguiente:


# cd ~/kernel/linux-2.6.24.4/


# zcat /proc/config.gz > .config


# make oldconfig

Luego procedemos a configurar el kernel, en mi caso utilizare menuconfig:

# make menuconfig

Luego de tener todo configurado procedemos a la compilación del kernel y a la instalación de los modulos:

# make


# make modules_install

Ahora tenderemos que copiar el kernel bajo /boot y luego generar el ramdisk:

# cp -v arch/i386/boot/bzImage /boot/vmlinuz-2.6.24.4


# mkinitcpio -k 2.6.24.4 /boot/kernel2.6.24.4.img

Con esto nos queda simplemente agregar las lineas del nuevo kernel al Grub (o lilo :) ):

# vim /boot/grub/menu.list

Y agregamos lo siguiente:

# My Kernel
title Arch’i Compile 2.6.24-4
root (hd0,1)
kernel /vmlinuz2.6.24-4 root=/dev/sda3 ro quite vga=791 acpi=force idebus=66
initrd /kernel2.6.24-4.img

# My Kernel
title Arch’i Compiled 2.6.24-4 Fallback
root (hd0,1)
kernel /vmlinuz2.6.24-4 root=/dev/sda3 ro quite vga=791 acpi=force idebus=66
initrd /kernel2.6.24-4.img

Existe otra forma para compilar e instalar el kernel la cual seria mas pacman way que la que acabo de explicar, les dejo este link[0] que explica como hacerlo.

[0] Pacman Way

Espero les sirva…

2

Apr

Written by: flaper87 on Wed, 02 Apr 2008 05:51:33 -0700

No se ni como, ni cuando ni donde (bueno donde si, en /usr/lib/pkgconfig), ni porque razón todos mis archivos .pc que deberían estar en las carpetas de pkconfig (_nada importante realmente_, “notese el tono sarcástico”) habian desaparecido. Decidí tomar esto como una de las bellas sorpresas que da Debian Sid y la cual nos permite aprender muchas cosas mas ( que fanatismo :-D ).

El hecho es que de alguna manera tenia que restaurar esos archivos y no me iba a poner a reinstalar paquete por paquete ni mucho menos iba a ponerme a buscar en debian.org que paquete tiene un .pc que debería ir en las carpetas de pkgconfig para luego ver si lo tenia instalado para reinstalarlo, así que combine unos comandos (porque esto no se llama crear un gran comando, los comandos ya existían, lo que hice fue ponerlos juntos) que me permitieran saber que paquetes tengo instalados para luego saber cuales de ellos tienen un bendito archivo .pc y asi poder luego reinstalarlos todos juntos.

El comando es el siguiente:

dpkg -l | awk '{print $2}' |xargs dpkg -L | grep pkgconfig/ | xargs dpkg -S | sed 's/:.*/\ /' | xargs aptitude reinstall

Lo explico:

Con dpkg -l obtenemos una lista de todos los paquetes que tenemos instalados.

Ej:

ii  x11-common         1:7.3+10           X Window System (X.Org) infrastructure
ii  x11-session-utils  7.3+1              X session utilities
ii  x11-utils          7.3+1              X11 utilities
ii  x11-xfs-utils      7.3+1              X font server utilities
ii  x11-xkb-utils      7.3+1              X11 XKB utilities
ii  x11-xserver-utils  7.3+2              X server utilities

Con awk ‘{print $2}’ nos quedamos solo con la columna que tiene los nombres de los paquetes.

Ej:

x11-common
x11-session-utils
x11-utils
x11-xfs-utils
x11-xkb-utils
x11-xserver-utils

Con xargs dpkg -L obtenemos la lista de todos los ficheros de los paquetes de la lista. (En el ejemplo verán archivos de evince).

Ej:

/usr/share/locale/en_CA
/usr/share/locale/en_CA/LC_MESSAGES
/usr/share/locale/en_CA/LC_MESSAGES/evince.mo

Con grep /pkgconfig/ nos quedamos solo con aquellas lineas que contienen el nombre de la carpeta /pkgconfig/ (Los / no tienen nada que ver con regex son simples separadores de carpetas).

Ej:

/usr/lib/pkgconfig/xdamage.pc
/usr/lib/pkgconfig/xdmcp.pc
/usr/lib/pkgconfig/xevie.pc
/usr/lib/pkgconfig/xext.pc
/usr/lib/pkgconfig/xfixes.pc

Con xargs dpkg -S obtenemos nuevamente los nombres de los paquetes pero esta vez solo los que contienen los ficheros de pkgconfig (.pc).

Ej:

x11proto-fonts-dev: /usr/lib/pkgconfig/fontsproto.pc
x11proto-gl-dev: /usr/lib/pkgconfig/glproto.pc
x11proto-input-dev: /usr/lib/pkgconfig/inputproto.pc
x11proto-kb-dev: /usr/lib/pkgconfig/kbproto.pc
x11proto-randr-dev: /usr/lib/pkgconfig/randrproto.pc

Con sed ’s/:.*/\ /’ nos ponemos exigentes para quedarnos solo con lo que esta antes de los : es decir solo con el nombre del paquete, lo de mas lo reemplazamos con un espacio en blanco.

Ej:

x11proto-resource-dev
x11proto-scrnsaver-dev
x11proto-trap-dev
x11proto-video-dev
x11proto-xcmisc-dev
x11proto-xext-dev

Y por ultimo no nos queda mas que reinstalar todo con xargs aptitude reinstall

Espero les sirva y también espero que nunca lo tengan que usar porque quiere decir que hasta que no lo hagan no podrán compilar sus paquetes :-D.

P.D: Me imagino que existirá una forma mas fácil de hacerlo (no se ni siquiera si existe un único comando que haga todo esto), pero fue divertido…

Saludos

30

Mar

Written by: flaper87 on Sun, 30 Mar 2008 13:10:04 -0700

Hablemos un poco de Wordpress en su version 2.5…

Acabo de actualizar mi blog y puedo decir que uno de los cambios mas importante e imposible de no notar es el del nuevo panel de administración.

La nueva una interfaz es mucho más ligera pero simple y entendible como la otra, completamente intuitiva y de fácil acceso. Desde mi punto de vista es incluso mas organizada que la anterior.

Algunas de las nuevas caracteristicas son:

  • Guardado automatico de los borradores.
  • Creacion de permalinks personalizados.
  • Gestion de sidebar a traves de widgets.
  • Media Library: permite la gestion de archivos de imagenes, video, audio etc. los cuales pueden ser agregados desde el panel de escritura de posts y gestionados desde Manage->Media Library.
  • Dashboard mejorada y personalizable.

Esperemos que esta versión no traiga problemas de seguridad como la 2.3.

Ahí les dejo :-D

17

Mar

Written by: flaper87 on Mon, 17 Mar 2008 14:32:20 -0700

Bueno a pesar de que me sentía cómodo haciendo el “debug” de las paginas a punta de echos atravesados en las funciones,  un amigo me mostró algunas de las bellezas de utilizar las cualidades de un debugger.

En este caso como para php utilizo Eclipse PDT me interesaba hacer funcionar el debugger con este IDE. Primero que nada hay que instalar xdebug (suponiendo que ya tenemos instalado apache y php). Para distribuciones como las Debian Based es necesario el paquete dev de php, en mi caso como estoy utilizando php5 instale php5-dev… Mejor agamoslo desde el principio :-D.

# aptitude install apache2 libapache2-mod-php5 php5 php5-dev
$ wget http://xdebug.org/link.php?url=xdebug200rc3
$ tar xvzf xdebug-2.0.0RC3.tgz
$ cd xdebug-2.0.0RC3/
$ phpize
$ ./configure --enable-xdebug

En caso de tener instalado el php-config en un path que no sea estándar entonces podemos configurarlo de esta manera:

$ ./configure --enable-xdebug --with-php-config=/path/to/php-config

Luego compilamos e instalamos:

$ make
# sudo make install

Ahora viene la configuración, tenemos que editar el archivo php.ini y para saber cual es el que utiliza apache utilizaremos la función phpinfo de php (coloco en negrita la linea que nos interesa):

$ php -r ”phpinfo();” | grep -i php.ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

Abrimos ese archivo con permisos de superusuario y agregamos las siguientes lineas antes de ;End

zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so
xdebug.remote_enable=1

Luego de esto reiniciamos el servicio de apache y podremos probar el debugger:

# sudo /etc/init.d/apache2 restart

Apache utilizara el debugger sin la necesidad de un IDE como Eclipse PDT, pero para poder hacer uso de breakpoints, o llevar la secuencia de los valores de las variabiles a medida che la pagina es cargada entonces es recomendable el uso de un IDE y sus herramientas.

Espero les sirva.

P.D: Prometo hacer otro post explicando como ussar xdebug con eclipse.

5

Mar

Written by: flaper87 on Wed, 05 Mar 2008 08:39:02 -0800

En los últimos días he cambiado 3 de mis aplicaciones principales:

1) Iceweasel -> Firefox 3 b3

2) Amarok -> Exaile

3) OpenOffice ( casi nunca lo use :-D ) -> Lotus Symphony

Firefox 3 beta 3:

Esta es la ultima versión que ha sido liberada, viene con ligeros cambios en su interfaz y muchos mas en su forma de hacer las cosas. La razón principal por la cual lo instale es que traje mejoras al nivel de accesibilidad el cual es uno de los principales campos por los cuales me muevo. Algunos de los cambios son:

1) Nueva gestión de complementos y temas, permite que sean descargados e instalados directamente desde la interfaz de complementos.

2) Mejoras en el gestor de marcadores.

3) En su interfaz principal ha sido movido el botón de inicio la la barra de marcadores.

Screenshot:

Firefox 3

Exaile:

Resulta que navegando por los largos océanos de la WWW me encontré con esta aplicación, que resulta ser un reproductor de música hecho en python que busca de cubrir todas esas opciones y posibilidades que el muy conocido Amarok nos ofrece. Algunas de esas cosas son:

1) Soporte a grandes librerías.

2) Soporte para Album Covers.

3) Audio Scrobbling.

Screenshot

Exaile

Lotus Symphony:

Esta es una suite de ofimática desarrollada por la conocida empresa IBM la cual esta basada en Eclipse y desarrollada en Java. Es completamente libre, ofrece un procesador de texto, creación de presentaciones y hojas de calculo.

Screenshot

Lotus Symphony

Phanet does not generate contents each post belongs to the author.
© 2008 - Phanet is under GPLv2