Marco Islas Blog FLOSS http://islascruz.org/html markuz@islascruz.org (Marco Antonio Islas Cruz) 2005-2007, Marco Antonio Islas Cruz Tue, 26 Aug 2008 13:15:16 -0500 JAWS 0.7.4 <![CDATA[ gwibber rules! ]]>

gweeber rules!, originally uploaded by markuz.

I'm using gwibber., a really nice application that solves one problem with microblogging: A multi-protocol client. This small app, looks good, and works better, I can see Flickr updates, twitter, identi.ca, and updates on my facebook page. If you use two of this services you should use gwibber

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/gwibberrules markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/gwibberrules Tue, 26 Aug 2008 13:15:16 -0500
<![CDATA[ My baby ]]>

My baby., originally uploaded by markuz.

This is cristina's belly, and the first 'picture' of our baby. Yes, cristina is pregnant and I am the happiest dad in the world. face-smile-big.png .

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Mybaby markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Mybaby Sat, 23 Aug 2008 11:01:07 -0500
<![CDATA[ Christine in ohloh ]]>

Christine in ohloh, originally uploaded by markuz.

I just want to let you know the christine page in Ohloh:


http://www.ohloh.net/projects/christine

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christineinohloh markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christineinohloh Fri, 22 Aug 2008 16:22:02 -0500
<![CDATA[ Christine kicking the Compiz nuts. ]]>

Christine kicking the Compiz nuts., originally uploaded by markuz.

Importing several directories at the time...

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/ChristinekickingtheCompiznuts markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/ChristinekickingtheCompiznuts Sat, 09 Aug 2008 18:22:42 -0500
<![CDATA[ Borderless metacity theme ]]>

Borderless metacity theme, originally uploaded by markuz.

I finally found the metacity theme I'd like, is a variation made by me of The Beck Theme.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Borderlessmetacitytheme markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Borderlessmetacitytheme Wed, 06 Aug 2008 16:31:21 -0500
<![CDATA[ WTF! Recursive errors. ]]>

wtf !, originally uploaded by markuz.

An internal error ocurred while showing an internal error.

Update:

@shakaran: In Eclipse 3.4, trying to install some components.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/wtfrecursiveerrors markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/wtfrecursiveerrors Sat, 09 Aug 2008 18:30:15 -0500
<![CDATA[ WTF! Excessive use of memory by eclipse ]]>

wtf !, originally uploaded by markuz.

I have just upgraded eclipse, from 3.3 (Europa) to 3.4 (Ganymede) . Is nice to have it, several things have been improved, but in this shot it was using almost 40% of my memory...

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/WTFExcessiveuseofmemorybyeclipse markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/WTFExcessiveuseofmemorybyeclipse Wed, 06 Aug 2008 16:58:19 -0500
<![CDATA[ Christine in launchpad ]]> As the title says: Christine is now in lauchpad, the code in sourceforge.net si no longer maintained, the reason: I cannot commit my changes to the svn repo, then, I cannot share the newest code.

Christine is now a registered project in Launchpad, well, christine has been a in launchpad for a while but never really use it. So, I will use the launchpad christine account. The bug tracker, the code (and all the good things that launchpad offers) will be hosted here.

As part of the change, christine no longer use Subversion, instead, will use Bazaar, you can get the code using this:

bzr branch lp:christine

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christineinlaunchpad markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christineinlaunchpad Sun, 03 Aug 2008 11:00:41 -0500
<![CDATA[ Christine love in the night ]]>

Christine love in the night, originally uploaded by markuz.

1:47 in the morning. Im still giving some love to christine, that personal proyect that I used to code frequently. Now, it takes some days before I can toch it.

I'm working on the sqlite3 storage layer, This should help me with a more unified data between multiple "sources" that should be renamed as playlists. This will be usefull for many other features, I'm thinkin in some kind of browser.

Anyway, I'm still in the process. I'd like to share the code I have, but SourceForge.net's SVN service is bothering me with a 403 (Forbidden) error that don't let me commit my changes. Now I'm seriously change the project host. What do you recommend?

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christineloveinthenight markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christineloveinthenight Thu, 24 Jul 2008 02:03:57 -0500
<![CDATA[ Kill -9 ]]>

Disfrutenlo.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Kill--9- markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Kill--9- Wed, 16 Jul 2008 14:13:01 -0500
<![CDATA[ GNOME 3.0 (Everything with tabs) == Suck! ]]> I believe that GNOME as a project is a very great project, event with the fact that they are reinveing the wheel from time to time (galeon, epiphany => epiphany webkit?). Anyway, I think it's great and as desktop is great too. I use GNOME in my every day and most of the time I'm quite happy, c'mon, there is no desktop environment that have everythin that every user could need.

I love most of the applications that GNOME has as desktop and many others that are not part of the Desktop but integrates well with it. I use such applications because they solve at least one of my problems, being something for my work or just my day to day computer use, and in most of the cases they solve that problem in a very good way, making me feel like I own my computer. But, I also think that they should evolve to be better.

In latest posts on http://planet.gnome.org/ I have seen several posts about some projects that want have tabs everywhere, which for me is ridiculous, Not every application must have tabs. One example is the totem at least not in the way Wouter Bolsterlee is showing it. Another application that I think should not is the calculator. Nautilus is nice for me because it may improve the user's workflow, but does anyone plays two items at the same time?.

Another UGLY example is what Davyd Madeley proposes to the GNOME panel, he may have some point while some people don't know "...what the little grey and blue boxes on their panel are for..." But the users are not stupid, they click them and will know that are they for. And.. a panel with tabs is just UGLY uses more space and useleses (I don't use the workspace switcher applet... is useles at least for me).

I Hope the GNOME developers reconsider where they should or not use tabs in the applications. And if they are going to do that.. Christian Neumair.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/GNOME30EverythingwithtabsSuck markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/GNOME30EverythingwithtabsSuck Sun, 13 Jul 2008 15:22:02 -0500
<![CDATA[ Stickers... ]]>

cucusa stickers, originally uploaded by markuz.

How many (and which) stickers do you have in your laptop?

I know.. I need to find a Python Sticker

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Stickers markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Stickers Fri, 11 Jul 2008 14:51:47 -0500
<![CDATA[ Christine Flickr group ]]> I use flickr since 2004 (I think) and I have a personal christine set, where I use to post the christine screenshots I do. This is not the place for the christine screenshots since they are just mine.

I have created the christine flickr group for everybody that uses christine and like to take a screenshot from time to time. You may also upload videos of christine in action if you wish.

http://flickr.com/groups/christine-project/

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-Flickr-group markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-Flickr-group Fri, 04 Jul 2008 23:23:29 -0500
<![CDATA[ Dear Ubuntu... ]]>

Why the Fuck did you stop playing sounds on the speaker? I can't use the headphones all day...

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/DearUbuntu markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/DearUbuntu Fri, 04 Jul 2008 23:15:02 -0500
<![CDATA[ Ubuntu start... ]]>

Ubuntu start..., originally uploaded by markuz.

I found this booting Ubuntu Hardy in my laptop. The progress bar was just "pulsing" but didn't change to a fraction. Well, This is why. This didn't happend before and I don't know how to reproduce this, so, I can't report it has a bug.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Ubuntustart markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Ubuntustart Sun, 29 Jun 2008 08:19:46 -0500
<![CDATA[ Brightness button Compaq V3017LA Ubuntu Hardy ]]> There is a bug (I think it is) in hardy, where the brightness button is not working on some laptops including Dell and Compaq/HP. The bug report is here and the proposed fix (for the compaq/hp laptops) is to blacklist the video module to let hal do it's work.

I try it yesterday, but it doesn't seem to work. Anyway, the other way to change the brightness in your laptop is write by hand the /proc/acpi/video/VGA/LCD/brightness file.

echo $value > /proc/acpi/video/VGA/LCD/brightness
]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/BrightnessbuttonCompaqV3017LAUbuntuHardy markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/BrightnessbuttonCompaqV3017LAUbuntuHardy Sat, 28 Jun 2008 09:29:36 -0500
<![CDATA[ Mugshot in Ubuntu ]]> If you are trying to install mugshot in Ubuntu (like I did), try this repo:

https://launchpad.net/~gilir/+archive

Anybody using mugshot here ?

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/MugshotinUbuntu markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/MugshotinUbuntu Fri, 27 Jun 2008 15:20:06 -0500
<![CDATA[ Christine importing a folder. ]]>

Christine importing a folder., originally uploaded by markuz.

I had worked on christine weeks ago, this week I had no time to give it some love. I have been using this "development" version (I think every version of christine is a development version) for a while.

Christine is faster at the load time, starting in just 4 seconds with at least 1500 items in the list, and the search and sort is quite fast too. But working with something like 6889 items in another 'source' I had make it a bit slow.

I think this is because christine use 3 models in the main list. Yes, three models. One is the main model, the one that holds all the library data. then the filter model and then the sort model. I'll try to make a model that implements in some way the filter and sort to reduce the work.

I notice that when you use a filter or even worse a filter and sort model ever time you select or move your cursor, or do anything with a row this process has to be done for every model you have. I mean, in christine you have to do it three times because of the three models. I think this sucks.

Well, I hope to have the time to write a bit on christine in this week.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christineimportingafolder markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christineimportingafolder Thu, 26 Jun 2008 23:31:30 -0500
<![CDATA[ Irony ]]>

Irony, originally uploaded by markuz.

In this week I had the task to look for a new bug tracker here at ICT Consulting, we used to have bugzilla, but it is a bit confusing. In my search I stop in the phpbugtracker site. Diving in, I found that many projects use PHPBT has their Bug and Issues tracker. Now I know why, its pretty easy to use, is really easy to search in the bug list.

Anyway, the screnshot you are looking above is the what I call Irony, Php bug tracker, a project for bug tracking use another bug tracking system, the Sourceforge.net Bug tracker. I think this is because then they have the statistics in the sourceforge statistics and they don't need to host the tracker. I don't think this is a bad idea, but it's funny.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Irony markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Irony Fri, 27 Jun 2008 09:33:20 -0500
<![CDATA[ Back! ]]>

Islascruz.org is back again!

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Back markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Back Wed, 18 Jun 2008 19:16:40 -0500
<![CDATA[ Upgrade to Ubuntu 8.04 ]]> Booting Ubuntu.I have finally upgrade my Ubuntu install to Hardy... Wasn't so easy. It takes more than 1 hour downloading the files, I know, this isn't Ubuntu's servers fault, but, I was supposed to download 1585 files, fortunately I had copied the files from another machine here in ICT Consulting that was upgraded yesterday, from where I grab ~1200 files. So, 300 files in 1 hour, 1200 should be 4 hours (aprox).

The upgrade, indeed is easy, just run the upgrade manager and you have your system upgraded. But, that doesn't mean that you don't have to do anything else, my nvidia driver wasn't working, and I thought it was because I use envy to install the nvidia driver in Gutsy. So, I remove envy and then install the nvidia-glx-new package, didn't work. So, looking for in the system I realize that the restricted drivers manager wasn't working properly, diving there I found that it miss one package, the restricted driver manager for my kernel. I have to install it and then my nVidia work again.

Is nice when you can upgrade your favorite distribution, even when you have to repair your installation after the upgrade.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/UpgradetoUbuntu804 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/UpgradetoUbuntu804 Sun, 01 Jun 2008 20:03:33 -0500
<![CDATA[ I repeat ]]>

P1010884.JPG, originally uploaded by markuz.

Why do you use windows for this kind of devices ??

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Iinsists markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Iinsists Tue, 20 May 2008 14:44:42 -0500
<![CDATA[ Creating a gtk custom model ]]> I have been working this week in a new custom model for one of the applications we are developing here at ICT Consulting. We found a problem with many many rows in gtk.ListStore. This is a common problem with Gtk's ListStore and TreeStore. Both are easy to implement and convenient if you are not going to work with too many values. I'm thinking in a couple of thousands. As far as this, the TreeModel is quite usable, but if you use a TreeFilterModel and/or TreeModelSort then you will experience some performance issues.

If what you want to do is just map the main application and then fill the model you can use the idle_add gobject function to iterate over your data and then store it in your model without freezing your application, but it is at the same way, the slowest. You can put chunks of 20 or so, then every time you application runs the callback function will run a small but faster insertion. Anyway, this is still a bit slow.

I have been doing tests with 100,000 rows, in the easy way there are just numbers using a for cycle via a range() result.I think in Gtk, the smaller is the data stored in the model, the faster it goes, because I can insert 100,000 rows in a gtk.ListStore in 7 seconds aprox. while in christine, inserting 2600 row in christine (with more data per cell) takes a lot more.

Anyway, the application that I'm developing shows a list of customers, this is a growing list as new customers are added, in our tests we need to show up to 17,000 customers. Using gtk.ListStore takes at least 17 seconds on my machine just to show it, but we also have a filter model becuse search in a list of 17000 items is not easy if you go looking every row by hand. So, usig the FilterModel takes almost the same time in searching something. Obviusly, waiting 17 seconds for the result is not an option, even worse, you made a mistake and wrote LOPEX instead LOPEZ.

So, I was searching over internet what can I do. I have already use the common 'tweaks' to improve the gtk.ListStore performance and I have reached the 8 - 9 seconds over those 17,000 items, but even with this, its too much time. The search points me to the gtk.GenericTreeModel. This generic model allows you to create a custom model where you can make your own tweaks to improve the performance of your model. In the link above gives you the way to use it. I have alreade created my own custom model and it really relly made the things better.

Now, one of the problems that gtk.GenericTreeModel have are the memory leaks. Using this model you may use lots of memory. This is because the GTM use to create a reference to the value that you are returning as Iter, e.g. you are using a list of lists, where you store the values, every item in the list is a row, then, the index if the iter wich references to the list you are storing in that row. The problem is that the GTM increase the reference count of you node (the list inside of the list) to aviod row destruction and then use the iter. This, in the best will make your values been refered until you destroy your model (and any reference to the data), in the worse the reference count of your data will never been unrefered and then the memory will never be freed.

You can use the invalidate_iters every time you modify the rows (add or delete) to make the rows invalid and then decrease the reference count of the row, and when your data have no more references then be deleted. But, I have the problem that the reference count was never decreased when I destroy the window or the model. Where is the trick here, use the Python's garbage collector, and your memory will be freed.

So, the new model based on PyGtk's GenericTreeModel actually works for us. Inserting 17,000 takes just 1 second, and the search (filter) is the same thing, 1 second is an option. I would like to see everything just appear when you request it, but one second is good for now. And testing with my current christine music list it takes just 0.06 seconds to show the list. Inserting 100,000 items (the easy way, just numbers) takes just 1.164 seconds to get filled with four columns and 2.36 seconds to show itself (creating a filter model and setting it to a treeview), so, for now this kind of optimizations will work for us, there are other optimizations on the Filter model and the treeview, My goal is to create something similar to wat Aaron bockover do with banshee.

Gtk Custom Model

Note: Test times are approximate, cache, cpu usage, load average and other may cause the times change, but at the end give us an idea of what is going on.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Creating-a-custom-model markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Creating-a-custom-model Sat, 17 May 2008 10:27:56 -0500
<![CDATA[ Home workplace ]]>

Home workplace, originally uploaded by markuz.

This is my workplace at home. Whats yours?

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Homeworkplace markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Homeworkplace Sun, 04 May 2008 23:09:46 -0500
<![CDATA[ Testing the new christineConf module ]]>

Testing the new christineConf module, originally uploaded by markuz.

I have been working in the configuration module for christine, something similar to gconf, but just for christine. Why? well, many people complains because christine needs the gnome-extras package, where gconf is, and to be honest, christine didn't use all the gconf power, so, there isn't a big reaons to keep gconf on christine.

This isn't the only thing I have been working on. I'm trying to improve many things for the next release. Most of the work wil be in the list, zodman gives me some nice ideas, and I will try to implement them.

Anyway, you are also invited to work with me in the christine development. You can join the maling list for the next release.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/TestingthenewchristineConfmodule markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/TestingthenewchristineConfmodule Sat, 03 May 2008 23:58:14 -0500
<![CDATA[ 27 segundos ]]>

Bootchart, originally uploaded by markuz.

Tiempo record arrancando Ubuntu Gutsy en mi maquinita con un AMD Mobile Sempron de 1.6Ghz, 1Gb de ram (menos el video) y ReiserFS.

Cuanto haces en tu maquinita??

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Bootchart markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Bootchart Sat, 03 May 2008 17:45:11 -0500
<![CDATA[ Christine 0.1.6 ]]>
christine 0.1.6
CLick to enlarge
This is the new release of Christine Media Player. This release include:

HelpMenu.png

  1. Some bugfixes
  2. Reworked code in Sources list
  3. Reworked display.
  4. Improved import code (no more freeze while looking for the media files)
  5. Multiple Sources list.
  6. Translate Christine and Report a bug menuitems

You can download it from sourceforge:

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-016 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-016 Tue, 29 Apr 2008 15:10:06 -0500
<![CDATA[ OpenOffice 2.4 en Gutsy ]]> If you are trying to install OpenOffice 2.4 in Gutsy, check this how to:

Installing OpenOffice 2.4 on Ubuntu Gutsy

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/OpenOffice24enGutsy markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/OpenOffice24enGutsy Mon, 21 Apr 2008 14:32:23 -0500
<![CDATA[ Gnome open location dialog ]]>


Gnome open location dialog, originally uploaded by markuz.

It is quite usefull, but, where can I configure the key bindings for the gnome open location dialog?? I mean, It nice if I click on the Desktop and press +l then it appears, but it's not the same if I am on any other application.

You can configure the key shortcuts to show the main menu, or to show the run dialog, you can even configure the shortcut to show your home, but, what about this?.

If you know how to do it (on GNOME), please, let me know.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Gnomeopenlocationdialog markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Gnomeopenlocationdialog Fri, 18 Apr 2008 12:12:11 -0500
<![CDATA[ PyGTK y Threads ]]> Es facil, al inicio de tu aplicacion tendras que inicializar los threads, que son algo asi:

gtk.gdk.threads_init()
 

Esto lo tendras que hacer antes de iniciar algun thread. Y luego, al usar algun thread debes englobarlo dentro de

gtk.threads_enter()
thread.start_new(funcion, (arg1,arg2,argN))
gtk.threads_leave()
 

Solo recuerda que no debes manipular gtk fuera del thread en el que esta corriendo el ciclo principal (gtk.main_loop).

Si lo que necesitas es estar cachando informacion en un thread aparte y modificar la interfaz (ej. Leyendo un socket y mostrando informacion de cuanto llevas leido) entonces usa alguna bandera y modifica tu apariencia en el thread principal, de lo contrario tendras problemas con gobject y glib.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/PyGTK-y-Threads markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/PyGTK-y-Threads Thu, 10 Apr 2008 18:51:44 -0500
<![CDATA[ Christine for conary ]]> El buen Zodman ha empaquetado Christine para Conary. Si usas Foresight Linux tal vez esto te interese.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christineforconary markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christineforconary Tue, 08 Apr 2008 22:24:42 -0500
<![CDATA[ Actualizacion del bios Compaq V3017LA ]]> Le actualice el bios a mi maquina, de la version F.07 a la F.39, todo bien, aunque en ubuntu, para que arranque despues de la actualizacion necesitaras pasar los siguientes parametros al kernel:

pci=assign-busses apicmaintimer idle=poll reboot=cold,hard

Una vez que hayas arrancado no se te olvide ponerlo en grub para los siguientes arranques.

Esto tambien puede ser util para aquellos que han comprado una laptop Compaq V3000 o HP dv2000 reciente y tengan problemas al iniciar Ubuntu (o algun derivado)

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Actualizacion-del-bios-Compaq-V3017LA markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Actualizacion-del-bios-Compaq-V3017LA Tue, 08 Apr 2008 22:46:36 -0500
<![CDATA[ Algo de amor para cristine ]]> sources.pngBien, hoy ha sido un pequenio dia para dar amor a christine, Hoy he tenido un poco de tiempo libre para 'descansar', Ayer cristina y yo nos fuimos a conocer Guanajuato, pronto pondre las fotos y la reseña.

Hoy, despues de hacer los quehaceres de la casa me sente un rato a cubrir una necesidad en especial que he tenido en Christine. Bien, pues resulta que a cristina le gusta mucho la musica en español, en particular la movida, mientras que a mi me gusta mas la musica en inglés, El problema es que la gran mayoria de la musica en español la he copiado de varios lugares y no la tengo en mi directorio de musica tipico, y tampoco lo tengo dentro de mi lista de canciones normal. Que pasa cuando cristina quiere escuchar su musica, tengo que entrar en ~/.christine y copiar el archivo music a algun otro, despues copiar el archivo de musica de cristina a music, y lo mismo cuando quiero poner mi lista de canciones. Un poco engorroso, aunque no lo hago muy seguido. Hoy he hecho un pequeño cambio a christine de forma que es posible selecionar la lista de canciones. Por hoy, en este lado es suficiente, aun le falta pulir, pero lo hace con mas tiempo y despues.

Tambien estuve trabajando un poco para corregir unos pequenios problemas con los menus, que no se muestran traducidos, esto debido a que en los archivos de descripcion de glade las etiquetas no tienen la propiedad translatable (en los menues). Tambien he agregado al SVN los archivos de traduccion creados en Launchpad. En fin, estos cambios ya estan disponibles en el SVN de christine.

newMenu1.png

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Algo-de-amor-para-cristine markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Algo-de-amor-para-cristine Tue, 25 Mar 2008 16:50:02 -0500
<![CDATA[ Translation status ]]> It's nice to see that since yesterday to today there are already three new languages in the christine translations.

Translation status in christine

Wanna help? Translate christine HERE!

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Translation-status markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Translation-status Tue, 12 Feb 2008 16:57:22 -0600
<![CDATA[ change shadow offset in compiz fusion ]]> There is a bug report where compiz fusion's ccsm doesn't change the shadow's X/Y offset. Thereis a workarround. Open gconf-editor and set this variables:

shadow_offset_x = int
shadow_offset_y = int

And set the value to change de offset.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/change-shadow-offset-in-compiz-fusion markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/change-shadow-offset-in-compiz-fusion Wed, 06 Feb 2008 17:59:57 -0600
<![CDATA[ Microsoft to buy Yahoo? ]]> If Microsoft wants to buy Yahoo is good, if Yahoo sells itself to Microsoft is bad, If Microsoft buys Yahoo and get his hands over Flickr it is worse.

Has a flickr user, I don't want Microsoft to mess up with it. Fortunately the deal is off

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Microsoft-to-buy-Yahoo markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Microsoft-to-buy-Yahoo Tue, 05 Feb 2008 16:06:11 -0600
<![CDATA[ christine 0.1.5 ]]> I have finally found a small time in my life to give a little love to christine and I'm not so proud (because of the delay) of the fifth revision of the fifth revision of the 0.1 version.

This fixes some bugs that I have found since the 0.1.4 but to be honest, I don't remember them. You can download the source packages from Here. There is also an Ubuntu Gutsy Package there.

christine 0.1.5

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/christine-015 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/christine-015 Tue, 05 Feb 2008 15:34:41 -0600
<![CDATA[ Something weird ]]> There is something weird about this screenshot...

something weird

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Something-weird markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Something-weird Thu, 03 Jan 2008 15:20:02 -0600
<![CDATA[ Happy New Year ]]>
. Fuck you

Ya en serio...

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Happy-New-Year markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Happy-New-Year Tue, 01 Jan 2008 14:56:23 -0600
<![CDATA[ Firesight Linux with time machine! ]]>
Foresight linux

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Firesight-Linux-with-time-machine markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Firesight-Linux-with-time-machine Tue, 11 Dec 2007 20:33:33 -0600
<![CDATA[ RTFM ]]>

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/RTFM markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/RTFM Sat, 08 Dec 2007 19:05:39 -0600
<![CDATA[ Speed up gtk.ListStore ]]> Alguien sabe de algun algoritmo o forma para acelerar la insersion de elementos en un ListStore?. He estado haciendo pruebas con Christine sobre una lista de ~14000 canciones y mi pobre maquinita tarda entre 20 y 24 segundos para llenar el ListStore.

Se, que podria mostrar Christine y dejar que una llamada con idle_add haga la chamba, es decir, christine se mostraria en menos de 1 segundo, pero el idle_add me retrasa mas la carga de la lista a unos 2 minutos.

Alguien con algun comentario, enlace o similar, seria mas que apreciado.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Speed-up-gtkListStore markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Speed-up-gtkListStore Thu, 06 Dec 2007 15:24:50 -0600
<![CDATA[ Brick Archway ]]>

Definitivamente, los juegos son cada vez mas reales...

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Brick-Archway markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Brick-Archway Thu, 06 Dec 2007 11:03:19 -0600
<![CDATA[ Christine 0.1.3 ]]> christine ReflectedEl software mas usado es sin duda el que mas bugs tiene. Al menos eso se supone, pues al software que mas se usa mas bugs se le han de encontrar. Christine 0.1.3 es la nueva version de christine con bugfixes. De los cuales solo yo he probado, y de la cual me gustaria mucho que todos los amables lectores linuxeros de este blog le dieran prueba y reportaran todos los bugs en el tracker.

Que hay de nuevo en christine, nada, la verdad no he cambiado nada, salvo el hecho de que carga un poco mas rapido. De ahi en fuera, es la misma cosa con intentos mios de corregir unos bugs.

Por que me he tardado tanto? pues porque Christine sigue siendo un desarrollo que hago en mi tiempo libre, que muy seguido se ve afectado por trabajo y otras cosas que me han llamado la atencion. De cualquier manera, Christine ahi esta, y es lo que uso dia a dia para escuchar musica.

Asi que denle bajin las Fuentes o al paquetin para Ubuntu Gutsy Gibbon

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-013 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-013 Tue, 04 Dec 2007 14:47:12 -0600
<![CDATA[ Muy cerca el 7o. aniversario del GLIB ]]> Se ha publicado una animacion para el Aniversario del Grupo Linuxero del Bajio

Ver animacion

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Muy-cerca-el-7o-aniversario-del-GLIB markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Muy-cerca-el-7o-aniversario-del-GLIB Fri, 30 Nov 2007 10:27:34 -0600
<![CDATA[ Epiphany ]]> Que haces cuando Epiphany se muere antes de poder arrancar por completo?

Epiphany crash

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Epiphany markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Epiphany Fri, 23 Nov 2007 07:53:16 -0600
<![CDATA[ Compiz Fusion Memory leak ugly fix. ]]> Como ya saben Compiz Fusion+nVidia tienen un BUG del tamanio del mundo, consumiendo chingos de megas de memoria en RAM. Bien, una solucion simple, aunque no la ideal es correr compiz de esta forma:

compiz --replace --indirect-rendering

Aunque el bug parece ser sobre todo del controlador de nVidia, parece que ya ha sido solucionado y que se vera reflejado en la siguiente version del controlador.

top + uptime

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Compiz-Fusion-Memory-leak-ugly-fix markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Compiz-Fusion-Memory-leak-ugly-fix Thu, 22 Nov 2007 18:36:17 -0600
<![CDATA[ 7o. Aniversario de GLIB ]]> Logo 7o. Aniversario GLIB El Grupo Linuxero del Bajío organiza el evento “Séptima Reunión de Aniversario”, a realizarse en la ciudad de Irapuato en el estado de Guanajuato, México el día sábado 15 de diciembre de 2007.

El evento tiene como objetivo difundir el uso y desarrollo de GNU/Linux y el Software Libre mediante un ciclo de conferencias que año con año estamos siempre mejorando en torno a los temas y calidad de las conferencias.

Con el objetivo de siempre mejorar la calidad del evento, la sede del evento este año será en el Hotel Holiday Inn.

Mas informacion

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/7o-Aniversario-de-GLIB markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/7o-Aniversario-de-GLIB Thu, 22 Nov 2007 11:46:36 -0600
<![CDATA[ Profiling Python ]]> Interesante articulo si te interesa ver que onda con los cuellos de botella de tu aplicacion en python: Profiling and Optimizing Python

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Profiling-Python markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Profiling-Python Thu, 22 Nov 2007 08:40:15 -0600
<![CDATA[ Encuentre el error #2 ]]>
Funny date

Pista:

Funny date

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Encuentre-el-error-2 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Encuentre-el-error-2 Tue, 20 Nov 2007 17:56:39 -0600
<![CDATA[ Linux Noob ]]> Furioso Favicon.
Grab the error

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Linux-Noob markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Linux-Noob Mon, 19 Nov 2007 18:38:05 -0600
<![CDATA[ Widgets 'recortados' en Gtk ]]> La mayoria de los widgets en Gtk tienen una ventana asociada, y no precisamente la ventana con decoracion que todo mundo ve. Gtk adiere una propiedad llama "window" a los widgets al ser empacados, o emparentados a otro widget contenedor.

Generalmente estos widgets son de apariencia rectangular, pero es posible tunearlos para que tengan la forma que nosotros queremos. La forma mas facil de hacerlo es tomar una imagen un usarla como "Molde" para crar nuestro contenedor recortado. aunque tambien es posible dibujar lo que nosotros querramos usando las funciones de cairo sobre un contexto (Que en si, es lo que hacemos con la imagen molde, pero mucho mas sencillo).

Lo que hacemos es obtener un molde a partir de una imagen, es decir, abrimos la imagen y creamos un gtk.gdk.Pixbuf, que es el mostraremos, pero podemos obtener el gtk.gdk.Pixmap y la mascara de este Pixbuf de forma que podamos usar dicha mascara para crear el contorno de nuestro widget.

Los widgets, una vez empacados,como ya habia dicho obtienen una propiedad llamada window, que pertenece a la clase gtk.gdk.Window. Aquellos que ya se han puesto a dibuar algo con cairo se habran dado cuenta que se obtiene un contexto de un widget a partir de su gtk.gdk.Window.

Bien. tambien es posible obtener este contexto de cairo a partir de un pixmap, hacer el dibujo molde y luego pegarselo a la ventana para que gtk.gdk sepa que partes ha de dibujar y cuales no.

Veamos un pequenio ejemplo.

class shapedWindow(gtk.DrawingArea):
        def __init__(self):
                gtk.DrawingArea.__init__(self)

                self.__pixbuf =  gtk.gdk.pixbuf_new_from_file('./logo.png')

                self.connect('size-allocate',self.size_allocated)
                self.connect('expose-event',self.do_expose_event)

                self.set_size_request(self.__pixbuf.get_width(),
                                self.__pixbuf.get_height())

       
        def size_allocated(self,win,allocation):
                w,h = (allocation.width, allocation.height)
                self.bitmap = gtk.gdk.Pixmap(None,w,h,1)
                context = self.bitmap.cairo_create()
               

                self.do_expose_event(self,'',context)

                parent = self.get_parent()
                win.shape_combine_mask(self.bitmap,0,0)
                parent.shape_combine_mask(self.bitmap,0,0)
               
        def do_expose_event(self, widget, event,allocate = False):
                if allocate:
                        context = allocate
                else:
                        context = self.window.cairo_create()

                if allocate:
                        context.set_operator(cairo.OPERATOR_DEST_OUT)
                        w,h = (self.allocation.width, self.allocation.height)
                        context.rectangle(0,0,w,h)
                        context.set_source_rgb(1,1,1)
                        context.paint()

                context.move_to(0,0)

                context.set_operator(cairo.OPERATOR_OVER)

                if allocate:
                        pixmap,mask = self.__pixbuf.render_pixmap_and_mask()
                        context.set_source_pixmap(mask,0,0)
                else:
                        context.set_source_pixbuf(self.__pixbuf,0,0)
                context.paint()
       

if __name__ == '__main__':
        window = gtk.Window()
        window.set_decorated(False)
        a = shapedWindow()
        window.add(a)
        window.show_all()
        gtk.main()

       
 

Que es lo que hacemos aqui? bien, primero creamos un widget personalizado usando gtk.DrawingArea y conectamos la sennial size-allocate para poder establecer el tamanio de nuestro widget. Una vez llamada esta funcion creamos un pixmap vacio del tamanio de nuestro widget, que es el tamanio que nos ha dado el contenedor padre, este es un rectangulo como de costubre, con un ancho y alto. A este pixmap le sacaramos el cairo context, sobre el cual hemos de 'dibujar' nuestro molde.

Como en este ejemplo el widget y su molde de la misma forma estoy aprovechado el metodo do_expose_event para hacer el dibujo inicial y despues hacer las funciones de redibujado en caso de un evento de expose.

Quienes hacen la chamba aqui? bien, para el dibujo inicial de nuestro widget es context.set_source_from_pixmap(), aunque podriamos usar el mismo set_source_from_pixbuf he detectado problemas con colores en Windows, entonces no lo recomiendo.

Otro que entra en juego y es el que le dice al widget 'orale cabron, apegate a esta forma' es win.shape_combine_mask(self.bitmap,0,0).

De ahi, el ponerle contenido a nuestro widget no es mas que un amanipulacion de colores y demas dentro de nuestro contexto cairo. Que, es otro tema del que hablar, como 'dibujar' lo que queremos en nuestro widget usando su contexto cairo.

Shaped Window widget

Tamanio Completo

Ciertamente, el logtipo de Christine es el widget 'recortado' face-smile.png

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Widgets-recordatos-en-Gtk markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Widgets-recordatos-en-Gtk Fri, 09 Nov 2007 17:59:37 -0600
<![CDATA[ WTF?? ]]> Que chingados esta mal con compiz ??

What's wrong with Compiz??!!!

What's wrong with Compiz??!!!

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/WTF markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/WTF Wed, 07 Nov 2007 16:04:58 -0600
<![CDATA[ Mi gmail cuenta ]]> Oscar, o ya lo corrigieron y de plano tengo muy mala suerte...

screenshot2.png

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Mi-gmail-cuenta markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Mi-gmail-cuenta Mon, 29 Oct 2007 15:35:30 -0500
<![CDATA[ Primera semana con Ubuntu Gusty Gibbon ]]> Pues bien, he dejado de ladito el Slackware un rato para usar Ubuntu, debido a que vaya, ahora entiendo a quienes antes me habian dicho por montones: Yo quiero trabajar, no lidiar con dependencias.

Dado que siempre tengo que hacer en ICTC, cuando llego a casa pocas veces me intereza estar peleando con la compu, tal como lo hacia en casa, donde siempre tenia chance de hacerlo. Entonces me he instalado Ubuntu Gutsy Gibbon para evitarme estas tranzas y usar el poder de apt.

Obviamente, me tuve que desprender de toda esa libertad que me da Slackware al no amarrarme del arbol de dependencias, pero es todo en favor de poder chambear o lograr lo queq uiero con el menor esfuerzo posible. Y pense que si lo conseguia todo seria bonito.

Bien, pues estaba bien perdido. He tenido unos ligeros problemas con Ubuntu. Antier tuve pedos con el controlador que te ofrecen para poder usar las tarjetas Broadcom. el bcm43xx funciona bien, pero no tan bien como deberia. Segun esta cosa si se conectaba con el router al que deberia de conectarse, pero aunque deshabilitaba cualquier otra interfaz de red y agregaba las rutas, el ping al mismo router jamas funcionaba!. Ha. y NetworkManager no me fue de mucha ayuda. Use wlassistant y ndiswrapper para lograr mi objetivo.

Ok, no fue todo. Resulta que a como tenia mi configuracion funciono bien en su momento, pero al dia siguiente al iniciar, Bolas don cuco Gnome no inicia... o mejor dicho, si lo hace, pero tarda Muuuuuuuuuuuuuuuuuuuuuuuuucho y las aplicaciones tambien tardan Muuuuuuuuuuuuuuuuuuuuuuuuucho a pesar de que el uso del CPU estaba al 0% o cuando mucho al 5% y el load average tambien estaba normal.

En fin, me hice una cuenta de usuario alterna para probar y nada, no pelaba. Gnome en modo seguro, tampoco, me asegure. Entonces entro en consola a prueba de fallos (simon, si falla la consola quito Ubuntu a la chingada y meto Slackware otra vez.. es mejor pelear un solo dia que pelar todos los dias!)..

En fin, aproveche e instale xfce y justo cuando va arrancando me dice que no encuentra la ip de cucusa (cucusa es el nombre de mi maquina), voy a echarle un ojo al /etc/hosts y veo que me faltaba el nombre corto para la maquina. se lo pongo y arranga perfecto. salgo de Xfce y entro en Gnome y Jala perfecto.

Aqui viene el descontento, recuerdo que en Gnome 1.x te avisaba que no podia resolver el nombre del equipo que esto posiblemente te acarrearia problemas. Entonces hacias las correcciones necesarias (tal como me paso con xfce). Por que jodidos lo quitaron?. Si GNOME es GNU Network Object Model Environment, porque jodidos no te avisa cuando hay un error en algun aspecto de red??

Ok, va una, la segunda sucede cuando llego a Salamanca, Me la volvio a hacer. Llego, conecto la compu a la corriente, arranco, y sopas, GNOME no arranca, Xfce si lo hace y no advierte de nada, muy probablemente porque ahora si resuelve la ip de mi maquina. Problema, la configuracion de red, deshabilite las interfaces de red que tengo, arrango GNOME, abro el NetworkManager y le digo que ahora mi configuracion ha de ser por dhcp en ambas interfaces (eth0 (alambrica) y eth1 (inalambrica)), y entonces si funciona bien.

Hasta ahorita no he tenido mayor problema que este, pero si es algo frustrante que despues de cambiar mi configuracion de red tenga tantos pedos para poder usar Ubuntu.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Primera-semana-con-Ubuntu-Gusty-Gibbon markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Primera-semana-con-Ubuntu-Gusty-Gibbon Sat, 27 Oct 2007 22:10:31 -0500
<![CDATA[ Somos cuates pero... ]]> Hoy he instalado Ubuntu en cucusa en la reunion del Grupo Linuxero del Bajio y hablando sobre ubuntu salio a la luz lo del shipit, el hecho de que en los primeros envios te motivaban a pedir varios CDs para que al menos valiera la pena el costo del envio.

Tambien estabamos hablando sobre la educacion en mexico, el hecho de que empresas como Microsoft esten dando "Gratis" las licencias de Microsoft Windows y Microsoft Office y de otro software de Microsoft a las escuelas, de forma que los usuarios se acostumbren a usar sus productos y cuando salgan tengan que pagar por las licencias de los productos que usaban en la escuela. Lo mismo que aquel que le regala droga en un principio a la victima para decirle que despues siempre ya no, que hay que pagar "Somos cuates, pero no me chingues...'

Y entre todo esto, regresamos a la platica de Ship it de Ubuntu, donde salio que Mark Shuttleworth, despues de ver que en todo mundo se pedian cantidades industriales de CDs completamente Gratis de Ubuntu, seguro ha de haber dicho:

Somos cuates, pero no me chingues

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Somos-cuates-pero markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Somos-cuates-pero Sun, 21 Oct 2007 02:04:15 -0500
<![CDATA[ USAS Open Day ]]>

El Open Day es un día (próximo 16 de Noviembre del 2007) en el cual se dará a conocer a los alumnos de Licenciatura en Informática e Ingeniería en Sistemas Computacionales de la Universidad San Ángel del Sur y a la Comunidad Estudiantil de la localidad las Nuevas Tecnologías en Sistemas Informáticos.

Específicamente se pretende difundir el uso e implementación del Software Libre como alternativa emergente a productos comerciales.

Todo lo anterior mediante un ciclo de ponencias sobre las principales áreas de aplicación del Software Libre y complementando dichas ponencias con un Install Fest.

Mas info: http://usasod.globalyti.com/

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/USAS-Open-Day markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/USAS-Open-Day Fri, 19 Oct 2007 21:39:28 -0500
<![CDATA[ Imprimir a un archivo PDF usando GTK. ]]> Perfecto. En esta semana me ha tocado estar trabajando sobre un programita que ando haciendo, el cual debe correr sobre Linux y MS Windows >= 2000. El desarrollo se esta haciendo en Python usando GTK para la interfaz grafica, pero me he encontrado uno que otro problemita con GTK, sobre todo con el manejo de ventanas, aunque el que mas tiempo me ha llevado ha sido el de impresion.

Gtk+ a partir de la version 2.10 incluye soporte para impreision en Linux y otros Unix'es gracias a CUPS, mientras que en Windows lo hace de manera nativa con el sistema de impresion de Windows.

Debo decir que en linux esta cosa es la maravilla, En windows no tanto, pero funciona decentemente si tus requerimientos no son tan especiales.

Los requerimientos para imprimir son estos:

  • Debe imprimir en la impresora por defecto
    • NO debe mostrar el dialogo de seleccion de impresora
  • Debe imprimir en el tamanio determinado por el programa

En linux, repito, esto es una maravilla, solo le digo imprime usando la constante gtk.PRINT_OPERATION_PRINT y con esto no me muestra el cuadro de dialogo, previamente he creado la operacion de impresion y le he dicho que seleccione la impresora por defecto, en linux, si en settings.set_printer() le pasas el parametro '' usa la impresora por defecto, es mas, si no usas el metodo set_printer usa la impresora por defecto.

Pero en Windows la cosa no es tan bonita. para empezar Siempre muestra el cuadro de seleccion de impresora (punto menos). Y para acabarla de amolar, aunque tengas una impresora predeterminada y esta impresora este seleccionada mandas imprimir (Alt +m o ENTER) habra un error porque GTK no ha configurado las cabeceras de impresion para mandarle el 'win32-driver', 'win32-driver-extra' y otros parametros fumados de los que Windows sabe. Obviamente, si seleccionas otra impresora y regresas a la que esta por defecto estos parametros son llenados y entonces la impresion funciona "bien". Obviamente, como no queremos que el usuario vea el cuadro de impresion esto no es opcion.

Lo siguiente es, obtener la impresora por defecto y mandar establecer los encabezados, para esto se pueden valer del modulo win32print

import win32print

printerName = win32print.GetDefaultPrinter()
printer = win32print.OpenPrinter(printerName)
printerValues = win32print.GetPrinter(printer,2)
dir(printerValues['pDevMode'])
 

Y pueden valerse del gtk.PrintSettings.set() para poner los encabezados.

Esto les sera util cuando ustedes quieran mostrar el cuadro de impresion, a fin de que lo muestre y espere una configuracion por parte del usuari, o en caso de que no se configure nada por parte del usuario, usar las configuraciones por defecto.

Hasta aqui todo bien, pero, Yo no quiero el cuadro de impresion!, solo quiero que imprima.

Bien, yo no queria hacerlo asi, pero pues bueno, no hay de otra.

if os.name == 'nt':
        filename = './ultimafactura.pdf'
        op.set_export_filename(filename)
        action = gtk.PRINT_OPERATION_ACTION_EXPORT
elif '-d' in sys.argv:
        action = gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG
else:
        action = gtk.PRINT_OPERATION_ACTION_PRINT
try:
        response = op.run(action)
except:
        response = gtk.PRINT_OPERATION_RESULT_ERROR
if response == gtk.PRINT_OPERATION_RESULT_ERROR:
        settings = op.get_print_settings()
        settings.foreach(funcPrintKeys)
        print "Hubo un error a imprimir"
elif response == gtk.PRINT_OPERATION_RESULT_APPLY:
        if os.name == 'nt':
                filename = './ultimafactura.pdf'
                import win32api
                win32api.ShellExecute(0,
                                'print',
                                filename,
                                None,
                                '.',
                                0)
 

La solucion ha sido crear un archivo PDF, usando el PrintOperation.set_export_filename() para despues usar win32api.ShellExecute() para imprimir.

Que es lo que hace ShellExecute?. Bien, ejecutara el comando que tu le des, en este caso 'print' sobre el archivo dado por el siguiente parametro "filaname", el siguiente parametro son los parametros al programa que va a realizar la operacion, el siguiente, el directorio de trabajo y por ultimo un valor entre 0 y 1 que dice si se ha de mostrar o no la ventana del programa que ha de realizar la operacion.

Para esto, es necesario tener en Windows un programa que pueda abrir e imprimir PDF. Obviamente el mas conocido es Adobe Acrobat Reader, pero Adobe Acrobat Reader es un Monstruo si lo unico que queremos es impresion. Asi que, lo que he hecho es utilizar Foxit PDF Reader, el cual es mucho mas ligero y rapido.

Y eso es todo, ese ha sido el cucharazo porque GTK por defecto no te utiliza la impresora por defecto, ni te esconde el cuadro de impresion en Windows.

En fin. el chiste es lograr que las cosas jalen.

Un ejemplo sencillo de impresion lo pueden encontrar Aqui

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Imprimir-a-un-archivo-PDF-usando-GTK markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Imprimir-a-un-archivo-PDF-usando-GTK Fri, 19 Oct 2007 10:22:02 -0500
<![CDATA[ Franklin CDU-680 en Slackware Linux ]]> ... Y otros linux.

Bien, este es un pequenio How to, donde quiero cubrir algunos de los aspectos oscuros en la configuacion del Franklin CDU-680. Este aparatito es un modem EVDO que se conecta por USB y que aqui en Mexico Iusacell lo esta vendiendo como par te de su servicio "Banda Ancha Movil" (BAM).

Bien, lo tuve que comprar porque necesito conexion a internet desde mi casa y fue la, desde mi punto de vista, mejor eleccion entre los proveedores que hay aqui en Salamanca.

  • Cable: bien, para empezar ni siquiera tengo TV. Como quiera, no importa, lo que me interesa es la conexion. Ok, la mayor parte del tiempo estoy fuera de la casa por lo que no puedo esperar al CableGuy para que me haga la instalacion. Ademas, varias personas me han dicho que el servicio de internet por cable aqui en salamanca esta muy malo. Asi que no es opcion.
  • Prodigy Infinitum: La neta, para lo que yo uso Internet me parece bastante bien (salvo por el costo), no soy muy de descargar los millones de canciones al dia, y generalmente ocupo internet para hacer una que otra tarea, leer noticias y descargar pedazos de software que ocupo. El problema con Infinitum es que tengo que contratar una linea telefonica, y luego el internet, mismo caso que con el Cable, no tengo tiempo y no quiero contratar una linea telefonica!.
  • BAM: Entrega, se supone que en el momento, pero me tardaron un par de dias porque tenian problemas con el inventario. Ventaja: Conexion donde quiera que tenga recepcion de Celular (no estoy amarrado a la casa). Velocidad maxima de 3.1Mbps, promedio entre 80 y 800Kbps, upload entre 80 y 500. Bien, no tuve que esperar mucho, y no fueron a mi casa a instalar nada.

Bien, ahora que ya sabemos la historia vamos a la parte fea

BAM Iusacell Para empezar, debes tener un equipo con Windows y obviamente una conexion USB. Por que? porque los de iusacell no te dan el modem activado, asi que hay que activarlo uno. Apenas metiendo el modem al conector USB veras que el sistema lo reconoce como un medio de almacenamiento masivo, es decir, como cualquier otra USB, y por que?, bien, porque es en el mismo modem que se incluyen los controladores para Windows XP y Windows Vista. Entonces, instalar el controlador no tiene mayor problema.

Luego de la instalacion hay que activar el equipo, hay que abrir la aplicacion que se ha instalado, te pedira un numero para poder continuar, inicialmente el numero es 000000 (seis Ceros). y de ahi te pide un numero MIN y MDN, y el Home SID, si no los tienes llama a iusacell para que te los pasen.

Ok, despues, el modem se reinicia, y muy probablemente tambien tengas que reiniciar windows, enctonces, tu modem esta activado, y al lanzar de nuevo la aplicacion para conexion veras que te puedes conectar a la red de iusacell y navegar por internet. Hasta aqui todo muy bien (Usuarios de Windows, me deben 100 pesos por leer estas instrucciones, usuarios de Linux, ustedes me los pagan cuando terminen de leer este post).

En un principio pense que nada mas era de activar y listo, pero no, y me di cuenta porque a pesar de estar siguiendo las escuatas instrucciones que vi en internet sobre este aparato, nomas no funcionaba.

Para echarlo a andar:

Tu sistema, al igual que en Windows te reconocera el modem en primera instancia como un medio de almacenamiento masivo. Simplemente ignoralo. y mejor desmonta la unidad (si se ha montado automaticamente) no la necesitaras.

Luego deberias habilitar el modem usb usando el modulo usb_serial. Pero antes de que vayas de golozo y te lo fletes asi nomas porque si, hay que echarle un ojo a lsusb, que te dira algo asi:

root$ lsusb
Bus 2 Device 1: ID 0000:0000
Bus 1 Device 8: ID 16d8:6803
Bus 1 Device 1: ID 0000:0000
root$

Si notas en el dispositivo 8 veras que es diferente a los demas, entonces, aqui tienes el 'vendor' y el 'product' para ser usado con el moprobe:

modprobe usb_serial vendor=0x16d8 product=0x6803

Haz notado que he pusto "0x" antes de los numero que me ha dado lsusb ??.

Bien, Esto te dice algo de que se ha registrado el dispotivo y que ha sido asignado a ttyUSB0 o algo por es estilo. pero si usas wvdialconf no te va a funcionar. y He aqui el por que:

Recuerdas que dos veces he dicho que el sistema la reconocera como dispositivo de almacenamiento masivo?. Bien, es porque el aparato este tiene dos modos, modem y medio de almacenamiento masivo. Tipicamente esta en modo almacenamiento, luego, cuando ejecutas tu programa de conexion (en windows) este le cambia el modo y todo parece funcioarn bien. Que pasa en Linux, que nunca le haz cambiado el modo y por lo tanto, aunque el sistema te lo detecte como un convertidor USB Serial el modo Modem nomas no va a pelar.

Solucion, regresa otra vez a windows, el programa ese de conexion tiene un menu y unas configuraciones, y en la ultima pestania te puedes configurar el modo de deteccion del dispositivo. Esto cambia la forma en que se trabajara el disp. permitiendote ponerle modo Modem y Disco o Solo Disco. Curiosamente, el Solo Disco funciona bien para que esta cosa funcione como Modem en Linux.

Una vez que he hecho esto, me he hecho lo de arriba y me detecta el dispositivo y me crea loque deberia ser ttyUSB0 y ttyUSB1

usb-storage: device scan complete
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbserial_generic 1-3:1.0: generic converter detected
usb 1-3: generic converter now attached to ttyUSB0
usbserial_generic 1-3:1.1: generic converter detected
usb 1-3: generic converter now attached to ttyUSB1
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core

Y si usas wvdialconf ahorita te dira que el dispositivo en ttyUSB0 esta al puro pedo para funcionar como modem. Y listo. Si alguien me hubiera dicho esto hace 5 horas ahora estaria dormio y este post seria 5 horas mas viejo.

En fin, algo que me paso a mi y que tal vez te pase a ti tambien es que a pesar de que dmesg me dice que el dispositivo esta en ttyUSB{0,1} en /dev/ no hay ningun ttyUSB* tuve que hacer mis enlaces a manita a /dev/tts/USB0 y /dev/tts/USB1.

Luego, usas el programa que quieras para conectarte, wvdial me ha salido con un fallo de conexion, pero KPPP me ha dejado trabajar a gusto.

En fin, espero que te sea util este pequenio post. Al menos te podria ahorrar un buen tiempo en lo que averiguas porque el jodido aparato no funciona como debe en linux.

BAM

Update: En cofradia.org han publicado que los 3G de Telcel jalan en linux sin mayores problema

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Franklin-CDU-680-en-Slackware-Linux markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Franklin-CDU-680-en-Slackware-Linux Thu, 17 Apr 2008 10:08:51 -0500
<![CDATA[ Christine 0.1.1 ]]> El equipo de desarrollo de Christine se complace en presentarles la nueva version de Christine, 0.1.1, Esta version es una version corregida de Christine 0.1, es decir, no implementa cosas nuevas, solo mejora lo que ya estaba.

Pueden descargar las fuentes de Christine 0.1.1 Aqui, y revisar las notas de liberacion Aqui.

Gracias a todos los que han cooperado con el desarrollo de Christine.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-011 markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Christine-011 Fri, 21 Sep 2007 14:10:38 -0500
<![CDATA[ Un contenedor GTK Redimensionable al gusto. ]]> Uno de los widgets menos usados en GTK es el gtk.Fixed, Este contenedor nos permite poner widgets de manera estatica en nuestra aplicacion. Es decir, si la ventana cambia de tamanio los widgets no se redimencionaran y tampoco cambiaran de posicion. Pocos lo utilizan por esto, pero a veces es necesario.

Pues resulta que en una de las aplicaciones lo tengo asi, simplemente porque los widgets NO se tienen que mover ni cambiar de tamanio si la ventana se redimenciona, aqui yo lo veo como algo bueno. En fin, El problema del GtkFixed es que nomas no me cacha los eventos, y meterlo en un gtk.EventBox me parece no tan optimo, puesto que yo quiero que los eventos los cache el Widget, no un EventBox.

Mi primer intento de solucion: Crear una clase que herede de gtk.Fixed y cachar los eventos para que cuando el cursor este dentro de un punto determinado se pueda redimencionar al muy puro estilo de click-arrastra-suelta. Problema, gtk.Fixed no me cacha los eventos, incluso si se los agrego a manita con gtk.Fixed.add_events.

Segundo intento: Hereda primero de un gtk.EventBox y luego de un Fixed: Si cacha los eventos, No te muestra ni madres. Inviertelo, Si te dibuja, pero no te cacha los eventos... (ya me estoy desesperando)

La solucion?, Bueno, nunca le habia echado el ojo al gtk.Layout, entonces heredo de un gtk.Layout primero, este no me cacha los eventos, pero, me permite dibujar como si fuera un gtk.DrawingArea aunque tienes que dibujar sobre el bin_window de tu layout (gtk.Layout.bin_window) en lugar del window como tipicamente se hace en gtk.DrawingArea. Bien, tu segunda herencia es de un EventBox para poder cachar las seniales, y listo face-smile.png .

Es importante que Primero se herede de gtk.Layout y luego de algun otro widget (gtk.DrawingArea tambien funciona) para que Gtk no reniegue al tratar de agregar widgets a tu gtk.Layout.

El codigo seria mas o menos asi (Estoy seguro que de alguna manera se puede mejorar):

class groupWidget(gtk.Layout,gtk.EventBox):
        '''
        Una version modificada del gtk.Fixed
        '
''
        def __init__(self):
                gtk.Layout.__init__(self)
                gtk.EventBox.__init__(self)

                self.__buttonPressed = False

                self.set_name('groupWidget')
                self.set_size_request(50,50)
                self.set_property('events',
                                gtk.gdk.EXPOSURE_MASK |
                                gtk.gdk.ENTER_NOTIFY_MASK|
                                gtk.gdk.POINTER_MOTION_MASK |
                                gtk.gdk.BUTTON_RELEASE_MASK |
                                gtk.gdk.BUTTON_PRESS_MASK )
                self.add_events(
                                gtk.gdk.EXPOSURE_MASK |
                                gtk.gdk.ENTER_NOTIFY_MASK|
                                gtk.gdk.POINTER_MOTION_MASK |
                                gtk.gdk.BUTTON_RELEASE_MASK |
                                gtk.gdk.BUTTON_PRESS_MASK )

                self.connect('expose-event',self.__exposeEvent)
                self.connect('motion-notify-event',
                                self.__motionNotify)

                self.connect('button-press-event',
                                self.__buttonPressEvent)
                self.connect('button-release-event',
                                self.__buttonReleaseEvent)
       
        def __motionNotify(self,widget,event):
                if self.__buttonPressed:
                        x,y = self.get_pointer()
                        if (x,y ) > (0,0):
                                self.set_size_request(x,y)
                                self.__lastWH= [x,y]

        def __buttonPressEvent(self,widget,event):
                w,h = self.__lastWH
                px,py = self.get_pointer()
                if event.button == 1:
                        if w > px > w-5 and  h > py > h-6:
                                self.__buttonPressed = True
       
        def __buttonReleaseEvent(self,widget,event):
                if event.button == 1:
                        self.__buttonPressed = False

        def __exposeEvent(self,widget,event):
                '''
                Encargada de dibujar el widget
                '
''
                context = self.bin_window.cairo_create()
                x,y,w,h = self.allocation
                self.__lastWH = [w,h]
                context.set_line_width(1)
                context.set_antialias(cairo.ANTIALIAS_NONE)

                #Dibujamos el relleno y el borde
                context.move_to(0,0)
                context.rectangle(1,0,w-1,h-1)
                context.rectangle(1,0,w-1,h-1)
                context.set_source_rgba(1,1,1,0.5)
                context.fill_preserve()
                context.set_source_rgb(0,0,0)
                context.stroke()

                #Dibujamos un pequenio rectangulito
                # en la parte inferior derecha.
                context.rectangle(w-5,h-6,5,5)
                context.set_source_rgb(0.5,0.5,0.5)
                context.stroke()

 

Y se deberia ver asi:

En el video se puede apreciar que el boton esta dentro del contenedor, por eso de corta cuando el tamanio del contenedor es menor (se pueden usar Scrollbars gracias a la capacidad de gtk.Layout.

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Un-contenedor-GTK-Redimensionable-al-gusto markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Un-contenedor-GTK-Redimensionable-al-gusto Thu, 13 Sep 2007 16:28:18 -0500
<![CDATA[ Cambiar la fuente por defecto en Gvim ]]> Sumamente sencillo, selecciona la fuente como tipicamente se haria: 'Edit->Select Font...', luego, ejecuta esto en el modo comando:

:set gfn?

Esto te devuelve algo como

guifont=Fixed Semi-Condensed 8

copia y pegalo en tu ~/.vimrc y listo, solo asegurate de escapar los espacios con backslashes

:set guifont=Fixed\ Semi-Condensed\ 8
]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Cambiar-la-fuente-por-defecto-en-Gvim markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Cambiar-la-fuente-por-defecto-en-Gvim Thu, 13 Sep 2007 09:16:28 -0500
<![CDATA[ Bon Echo ]]> Me he compilado el Mozilla Firefox, pero sin 'Branding' face-smile.png se me hizo curioso ver 'Bon Echo' en lugar de Mozilla Firefox.

Firefox 2.0.0.6

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/Bon-Echo markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/Bon-Echo Wed, 12 Sep 2007 11:53:42 -0500
<![CDATA[ 15 de Septiembre, Dia de la libertad. ]]>
El proximo 15 de Septiembre el Grupo Linuxero del Bajio celebrara el Software Freedom Day 07. Se llevara a cabo en:

Lopez Velarde #121 Col. Jardines de San Pedro (a media cuadra del seguro social)
Salamanca, Gto.

  • Charlas
  • Instalaciones
  • Mucho Software Libre
  • Muy buen ambiente

Mas info

]]>
http://islascruz.org/html/index.php/Blog/SingleView/id/15-de-Septiembre-Dia-de-la-libertad markuz@islascruz.org (Marco Antonio Islas Cruz) http://islascruz.org/html/index.php/Blog/SingleView/id/15-de-Septiembre-Dia-de-la-libertad Tue, 11 Sep 2007 17:54:34 -0500
<![CDATA[ Comprendiendo el error ]]> Recuerdo cuando apenas habia entrado a preparatoria, en primer semestre llevaba la materia de "Taller de Lectura y Redaccion", por un profesor poco amigable, era bueno, pero tambien algo amargadito. Un dia toco examen y yo, no estaba preparado, me fue del banano, lo admito, no soy bueno para aprender nombres, fechas y demas cosas, por algo no soy biologo, medico, historiador o algo en el que tenga que aprenderme muchos nombres.

En fin, reprobe, pero una companiera que por lo general reprobaba aprovo, y no me sorprendi mucho, puesto que supe desde el examen porque saldria bien. Tenia una copia del examen que se habia aplicado a otro grupo, en otras palabras, ya lo tenia resuelto.

Obviamente, yo me moleste con el profesor, le pregunte que por que a mi me reprobaba, yo que jugue limpio y a ella que se copio el examen la estaba aprobando?. El profesor me tiro a loco. En la tarde le comente a mis padres sobre mi resultado, y trantado de justificarme (tratando de aminorar el reganio) les plantee la misma situacion que con el profesor: A mi me reprobaron, pero fue limpio, y a una companiera la aprobaron, pero fue por copia....

Mi papa nomas meneo la cabeza y me dijo: Y a ti que te preocupa si ella aprobo o reprobo, preocupate por ti, y cuanta razon tiene mi padre. Sin importar si mi companiera hubiera aprobado o no, YO estaba reprobado, y no tenia razon, ni motivo para meterla a ella en mi justificacion, el problema era mio, de nadie mas, ni siquiera del profesor.

Por