Introducción al Desarrollo de Aplicaciones con PyGTK
Dentro de 2 días, la asociación GNOME Hispano dará una charla en IRC bajo el título “Introducción al Desarrollo de Aplicaciones con PyGTK“, cuyo expositor será Alejandro Valdes. Los contenidos que se tratarán en esta charla son los siguientes: 1. Teoría (programación por eventos, widgets, signals, callbacks, etc). 2. Ejercicios. Partiendo desde un ejemplo interactivo con python, pasado [...]A New P2
For those of you who haven’t yet tried it, P2 is an awesome micro blogging theme with quick front end posting, live ajax updating, and inline threaded comments. It already packs a big punch.
So how can an already great theme be taken to the next level? That was the task of Team 34 at this year’s Automattic retreat.
One of the first areas we thought could be improved was the ease of customization. Most people like to add their own personal touch to a theme, currently P2 is hard to customize beyond the standard design. We’ve added new options to allow you to hide the sidebar and even set a unique header image. All these options allow you to personalize your own P2 to match your tastes.

Post Types
We’ve also introduced post types into P2. Now you can post different types of content and have them formatted and displayed in a way that fits the content beautifully. There are settings for standard posts, single images and galleries, as well as links and quotes. Selecting which post type to use is as simple as clicking the correct tab above the post box.
We also decided to go a step further and rework P2 so that it could easily be used as a parent theme and extended with child themes. This will allow theme designers to create awesome new theme designs without having to duplicate all of the existing P2 features. We’ve streamlined the HTML of the theme so that it is much more flexible for creating new designs using CSS. We’ve also added a large number of template based hooks that will allow plugin developers to hook into the theme and output extended functionality.
The new P2 theme is now live on WordPress.com, and also available for download from the WordPress.org theme repository. However for .org users, P2 requires WordPress 2.9 beta or greater.

Tengo una empresa y uso Linux. myGestión es mi Software de Gestión
En muchas ocasiones se achaca que a Linux le faltan programas para poder ser más funcional en el entorno empresarial, pero ¿es real? myGestión cubre todas las necesidades de la empresa a la hora de llevar la gestión. Es un Software de Gestión Online que dispone de 4 módulos independientes y complementarios entre sí (ERP, CRM, [...]Ubuntu Netbook… de “Remix” a “Edition”
Según podemos leer en este blueprint, el equipo de desarrollo ha decidido cambiar el actual nombre de la edición ultraportátil de Ubuntu, llamada hasta ahora Ubuntu Netbook Remix, por un nombre que consideran más apropiado: Ubuntu Netbook Edition. Este cambio será un hecho en el futuro Ubuntu 10.04 (Lucid Lynx).WordPress 2.8.6 Security Release
Un nuevo release de wordpress vio la luz el dia de hoy
2.8.6 fixes two security problems that can be exploited by registered, logged in users who have posting privileges. If you have untrusted authors on your blog, upgrading to 2.8.6 is recommended.
The first problem is an XSS vulnerability in Press This discovered by Benjamin Flesch. The second problem, discovered by Dawid Golunski, is an issue with sanitizing uploaded file names that can be exploited in certain Apache configurations. Thanks to Benjamin and Dawid for finding and reporting these.
Link | wordpres.org
Maddog habla del software libre en los móviles
En Clarin.com han publicado una escueta entrevista a Jon “maddog” Hall, actual presidente y director ejecutivo de Linux International y una de las figuras más emblemáticas en el mundo de Linux y el software libre, acerca de la llegada del código abierto a los teléfonos móviles (celulares): “Además de la inercia, ¿por qué le cuesta tanto [...]Microsoft patenta sudo (¿?)
En una muestra más de hasta donde puede llegar el absurdo sistema de patentes aplicado al mundo del software, nos hemos encontrado con la noticia en numerosos medios (1, 2, …) del intento por parte de Microsoft de patentar el comando sudo (super user do). En realidad se trata de una patente que describe exactamente lo [...]A Blog Near You
During the Automattic company meetup, Team 21* holed up in a cottage outside Québec to create a new set of features for a blog near you (literally!). Have you ever wondered where in the world a blog post was written? Where a commenter was located? If there were other WordPress.com bloggers near you? If so, hold on to your hat, because you’re going to love the geotagging and geolocation features we’re introducing.
Starting today, when you log in to write a post, you have the option of identifying your location. For browsers that support it, we can get this information automatically through the magic of 21st century technology and you just have to double-check to make sure the location is correct. You can also enter your location manually. This feature is opt-in, meaning that if you don’t want anyone to know where you were when you wrote a post, that’s okay.

Enter an address, click the map, or auto detect your location
In addition to geotagging posts, you can also geotag your profile. Interested in reading blogs by other people in your area? A quick search will find them, and in the future could even be used to organize local WordPress.com user meetups.
Right now, we’re only collecting and exposing geodata for posts and profiles. Geotagged posts get marked up with the geo microformat, geo.position and ICBM meta tags, and GeoRSS and W3C geodata in feeds.
This is all machine readable data: hidden from display. What good is it if it’s hidden? It tells search engines where your posts are located, and with browser plugins like Operator and Geo, you can view geo information on any web page (not just WordPress.com geotagged posts).
The machine readable data is cool and geeky, but what about something for us humans? Right now, we don’t display geo data anywhere in a human readable way. Don’t worry, though. We’ll be launching theme integration, various maps, widgets, and shortcodes soon.
This is just the beginning. Building on this platform, we’ll gradually roll out more geotagging features, such as showing the location of your commenters, the location of poll votes, a live map view of blog updates on WordPress.com, or an annual report showing you where your posts were written and where your comments came from — kind of a blogger’s version of the Dopplr annual travel report.
For now, we’re pretty psyched about the geotagging and (the upcoming) search of posts and profiles and hope you’ll all give this new feature a try! If there are other geotagging features you’d like to see built on this foundation, suggest them in the comments!
For more information, check out the Geotagging support page.
Note: We’re holding off on launching the geo search feature until we start getting some data (from you!). So start geotagging
*Team 21 consisted of Jane, Jon, Mike and Stephane.

Intel 82567lm-3 en Debian Lenny 5
Al instalar un debian desde Netinstall en una pc Dell optiplex 760 me encuentro con un pequeño y sencillo problema… El kernel de debian 5 no reconoce la tarjeta de red Ethernet controller: Intel Corporation 82567LM-3 Gigabit Network Connection
El problema radica en que el kernel de Lenny incluye una versión un poco obsoleta del controlador e1000e, la 0.3.3.3-k2 y no la reconoce.
El primer paso es conseguir los fuentes desde la pagina oficial de Intel: downloadcenter.intel.com Estando en Ethernet Components + Ethernet Controllers + Intel 82567 Gigabit Ethernet Controller descargamos el último disponible (latest).
Luego de descargado el codigo fuente de este NIC, vamos a descomprimirlo
[/bash] tar zxf e1000e-x.x.x.tar.gz[/bash]
en la carpeta que el anterior proceso nos creara
cd e1000e-x.x.x/src/
para poder compilarlo en este caso se tuvo que agregar los siguientes paquetes:
linux-source-2.6.26, linux-headers-2.6.26-2-amd64, linux-headers-2.6.26-2-common 2.6.26-19, libncurses5-dev
Ahora si
# make install
Copiamos el modulo.ko a la carpeta correspondiente:
/lib/modules//kernel/drivers/net/e1000e
ultimos pasos, quitar el modulo antiguo e instalar el nuevo
rmmod e1000e ; insmod /lib/modules//kernel/drivers/net/e1000e/e1000e.ko
ahora si un ifconfig y mas que listos…
Asterisk, migracion de Master CSV a Mysql
Luego de aprender como guardar todos nuestros CDRs dentro de mysql, me ha surgido la duda de como migrar los ya existentes en el master.csv a la base de datos nueva, bueno primero explico algo de como y porque.
Por que:
Esto corriendo asterisk 1.4 y manejandolo con Vicidial (contact center app) pero este utiliza el custom_cdr.conf en donde el guardado en CVS esta definido de la siguiente forma:
Master.csv => "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}",
"${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}",
"${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}",
"${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}",
"${CDR(amaflags)}",
"${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}"
Que significa esto ?? http://www.voip-info.org/wiki/view/Asterisk+billing
ahora bien he encontrado algunos scripts que dicen ser la herramienta mas util para este tipo de migracion lo cual luego de probarlos ha resultado falso!! jejeje
aqui les dejo el que yo modifique y utilize para que migrara de forma transparente los datos del Master.csv con la configuracion cdr_custom de vicidial.
<?php
/*** process asterisk cdr file (Master.csv) insert usage
* values into a mysql database which is created for use
* with the Asterisk_addons cdr_addon_mysql.so
* The script will only insert NEW records so it is safe
* to run on the same log over-and-over.
*
* Author: John Lange (john@johnlange.ca)
* Date: Version 2 Released July 8, 2008
*
*
* Here is what the script does:
*
* Parse each row from the text log and insert it into the database after testing for a
* matching "calldate, src, duration" record in the database. Note that not all fields are
* tested.
*
* If you have a large existing database it is recomended that you add an index to the calldate
* field which will greatly speed up this import.
*
*/
/*
* Modified by Leif Madsen, July 29, 2009 to add additional columns.
* Original post and code by John Lange: http://www.johnlange.ca/tech-tips/asterisk/asterisk-cdr-csv-mysql-import-v20/
*/
/*
* Modified by Paulo Alvarado, Nov. 09 2009 to run with the custom master.cvs from vicidial now
* Original post and code by John Lange: http://www.johnlange.ca/tech-tips/asterisk/asterisk-cdr-csv-mysql-import-v20/
*/
$locale_db_host = 'localhost';
$locale_db_name = 'asterisk';
$locale_db_login = 'root';
$locale_db_pass = 'vicidialnow';
if($argc == 2) {
$logfile = $argv[1];
} else {
print("Usage ".$argv[0]." <filename>\n");
print("Where filename is the path to the Asterisk csv file to import (Master.csv)\n");
print("This script is safe to run multiple times on a growing log file as it only imports records that are newer than the database\n");
exit(0);
}
// connect to db
$linkmb = mysql_connect($locale_db_host, $locale_db_login, $locale_db_pass) or die("Could not connect : " . mysql_error());
mysql_select_db($locale_db_name, $linkmb) or die("Could not select database $locale_db_name");
//** 1) Find records in the asterisk log file. **
$rows = 0;
$handle = fopen($logfile, "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// NOTE: the fields in Master.csv can vary. This should work by default on all installations but you may have to edit the next line to match your configuration
list($clid, $src, $dst, $dcontext, $channel, $dstchannel, $lastapp, $lastdata, $start, $answer, $end, $duration, $billsec, $disposition, $amaflag, $accountcode,$uniqueid, $userfield ) = $data;
/** 2) Test to see if the entry is unique **/
$sql="SELECT calldate, src, duration".
" FROM cdr".
" WHERE calldate='$end'".
" AND src='$src'".
" AND duration='$duration'".
" LIMIT 1";
if(!($result = mysql_query($sql, $linkmb))) {
print("Invalid query: " . mysql_error()."\n");
print("SQL: $sql\n");
die();
}
if(mysql_num_rows($result) == 0) { // we found a new record so add it to the DB
// 3) insert each row in the database
$sql = "INSERT INTO cdr (calldate, answerdate, hangupdate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflag, accountcode, uniqueid, userfield)
VALUES('$start', '$answer', '$end', '$clid', '$src', '$dst', '$dcontext', '$channel', '$dstchannel','$lastapp', '$lastdata', '$duration', '$billsec', '$disposition', '$amaflag', '$accountcode', '$uniqueid', '$userfield')";
if(!($result2 = mysql_query($sql, $linkmb))) {
print("Invalid query: " . mysql_error()."\n");
print("SQL: $sql\n");
die();
}
print("Inserted: $end $src $duration\n");
$rows++;
} else {
print("Not unique: $end $src $duration\n");
}
}
fclose($handle);
print("$rows imported\n");
?>
ahora la parte mas dificil, como ejecutarlo:
php import.php Master.csv
Nota: si por algun motivo no funciona el comando php, eso significa que no tienen el paquete php-cli para ejecutar sentencias php en linea de comando.



