RSS Feed for Ubuntu translations that needs review
Posted by Adi | Filed under English, Free Software, Planet Ubuntu
After announcing the „alpha” version on the Ubuntu Translators mailing list, I am also adding this to Ubuntu planet for more feedback.
For the Romanian team I wanted to keep the “needs review” counter somewhere near zero so that new translators will get a quick feedback and will be encourage to add more translations. I received feedback from a few drive-by translators that at first they were confused why their translations to an untranslated string are not automatically added as the current translation but rather as a suggestion.
It is not fun to see that your translations are not reviewed by more than 1 week. It is discouraging in the same time.
This is why I created a quick and dirty hack to generate an RSS feed and send a notification email for all the PO files for an Ubuntu release that have new suggestions:
The RSS looks something like this:

The code is here:
https://github.com/adiroiban/scripts/blob/master/ubuntu-l10n-review-notifications.py
It is a crude implementation but it should do the job.
It can also send emails, but I prefer RSS.
I have already set up a daily cron for RO, ES, PT_BR, SL RSS feeds for Ubuntu Natty.
The code is there and you can set up your own RSS feed or let me know if you would like me to generate a feed for your language.
I hope that you will find it useful. Any feedback is much appreciated!
PS: Hope you don’t mind git and github.com . I still love bzr and Launchpad as they are fantastic. I am just testing github and git.
FLOSSCamp 2011 - faza preliminară
Posted by Adi | Filed under Free Software, Romanian
O parte dintre membri comunităților de software liber din România ar dori să participe și anul acesta la o întâlnire națională FLOSSCamp. Încă nu există pagină web pentru FLOSSCamp 2011 dar puteți vizita cele din 2008, 2009 și 2010.
Scopurile întâlnirii nu sunt mărețe și în principal se dorește să mai ieșim din fața calculatoarelor să mai socializăm offline și să punem niște voci și fețe în spatele caracterelor online.
În cazul în care sunteți interesați să participați la o astfel de întâlnire vă rugăm să completați chestionarul preliminar astfel încât să ne putem face o idee câte persoane sunt interesate și cam cum ar vrea fiecare să arate întâlnirea.
Clic aici pentru a completa formularul! Mulțumesc!
Sunteți invitați să dați mai departe acest anunț. Mulțumesc din nou!
Nu-i român ca ardeleanu’, dar nici ardelean ca zălăuanu’
Posted by Adi | Filed under Romanian
Din capitolul „în ultima vreme am trăit într-o peștere unde am ascutat Tămaș și povestiri din seria mai tare ca piatra mai iute ca săgeată” … etc, etc am dat de ilariant.ro … .

Passenger and Python and Django and OSQA … first blood
Posted by Adi | Filed under English, Free Software
These are just a few notes about my experience with installing OSQA on Nginx with Passenger. I assume you already have passenger installed.
In short:
Step 1: Make sure an Hello world! is working
Step 2: Withing the already working Hello world application, try to execute your application and catch and print any errors.
Step 3: Profit!
The main headaches are cause by the Passenger cache and a clueless “An error occurred importing your passenger_wsgi.py” message if something is wrong.
Step 1: Making sure passenger is working and picking up the passenger_wsgi.py
Start with a plain passenger_wsgi.py file and put it in the root or your project. I have created a virtual env in /var/www/DOMAIN so replace this path to match your configuration.
We want to make sure that Passenger is working so we start with a simple „Hello world” WSGI application.
In the same time, we want to make sure that Passenger uses the right python version from our virtual environment… so we force it:
import os, sys
INTERP = "/var/www/DOMAIN/bin/python"
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
def application(environ, start_response):
response_headers = [('Content-type','text/plain')]
start_response('200 OK', response_headers)
return ['Hello!']
Step 2: Now that you know that passenge is working, edit the file to catch any errors and print the stack trace
import os, sys
INTERP = "/var/www/DOMAIN/bin/python"
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
# We force some paths
sys.path.append('/var/www/DOMAIN')
sys.path.append('/var/www/DOMAIN/osqa')
def application(environ, start_response):
try:
os.environ['DJANGO_SETTINGS_MODULE'] = 'osqa.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
return application(environ, start_response)
except:
import traceback
response_headers = [('Content-type','text/plain')]
start_response('200 OK', response_headers)
result = traceback.format_exc()
return [result]
Step3: After all error were fixed, you can use to a much simple wsgi file:
import os, sys
INTERP = "/var/www/DOMAIN/bin/python"
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
# We force some paths
sys.path.append('/var/www/DOMAIN')
sys.path.append('/var/www/DOMAIN/osqa')
os.environ['DJANGO_SETTINGS_MODULE'] = 'osqa.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Enable “Editable menu shortcut keys” in GNOME
Posted by Adi | Filed under English, Free Software
In case you were wondering why and where the Interface tag from gnome-appearance-properties is gone you should start looking at the GNOME bug #592756.
In case you just want that feature back, read this askubuntu.com question and answer.
To make it short just read the ‘Editable menu shortcut keys’ documentation and run the following command:
gconftool --set /desktop/gnome/interface/can_change_accels --type=bool True
Enjoy!

Mono and GMCS (C# compiler) on Dreamhost shared account
Posted by Adi | Filed under English, Free Software
This guide is only for installing mono and gmcs version 1.9.1 on a Dreamhost shared account… it does not covers ASP.Net support for Dreamhost web server.
I just wanted to run the Icy Projectile Challenge game using a Java, Python and C# player. Java and Python are already available on Dreamhost and I was able to execute the icypc.jar and Java and Python players using the default installation.
Right now there is no mono installed on the shared server where my Dreamhost account is hosted. The system is running Debian 5.0 Lenny so I went and installed the Mono version that is available from the repository.
Apt, dpkg or aptitude could not help me in installing the packages in a custom location… there is also no fakeroot on my Dreamhost shared server.
After a bit of research I found this trick by Phan Vinh Thinh and I ended up with this:
mkdir -p ~/mono/packages
pushd ~/mono/packages
apt-get --yes --print-uris install mono-gmcs | grep --regex 'tp://.*deb' | cut -d ' ' -f1 | sed "s/^'//g;s/'$//g" | wget -i -
for i in *.deb; do dpkg --extract $i ~/mono; done
I then changed the ~/mono/usr/bin/gmcs to look like this
#!/bin/sh
PREFIX=/home/adi/mono
exec ${PREFIX}/usr/bin/mono $MONO_OPTIONS ${PREFIX}/usr/lib/mono/2.0/gmcs.exe "$@"
The resulting mono installation is hosted by the ~/mono/ prefix. Feel free to add ~/mono/usr/bin to your PATH environment variable.
That’s all. You will not get to much apart from the standard mono execution and C# compilation environment, but I hope that these hints will inspire you in installation more Mono libraries and other fancy stuff.
Rețetă pentru cumpărături
Posted by Adi | Filed under Free Software, Romanian
Vă rețin atenția pentru a vă aduce la cunoștință următoarea rețetă de scraping pentru pagina de resigilate de la eMag.
Totul a început ca un pretext pentru a testa git și Github iar rezultatul se află aici: https://github.com/adiroiban/scripts/blob/master/emag-resigilate-filter.py
Pentru a-l utiliza aveți nevoie de Python și BeatifulSoup (asta pentru a evita să reinventez roata).
Pentru început:
python emag-resigilate-filter.py --help
Pentru a afișa toate televizoarele cu diagonală mai mare de 100 cm , mai ieftine decât 2500 RON și care nu au pixeli defecți (mare atenția la ghilimele pentru a evita interpretarea variabilele de câtre shell):
python emag-resigilate-filter.py -c 492 -f'price<2500,diagonala ecran (cm)>100,stare!~pixel’
Pentru a trimite rezultatele pe email (este nevoie de un server SMTP):
python emag-resigilate-filter.py -c 492 -f'price<2500,diagonala ecran (cm)>100,stare!~pixel’ -e nume@example.org
Pentru a finaliza rețeta, se pune scriptul într-un cron și se așteaptă până apar rezultatele … sau se cheltuie bani pe alte prostii … dar să nu faceți greșeală să dați bani la Oktal
Pe pagina eMag nu am găsit condițiile de utilizare a conțintului lor … așa că folosiți scriptul pe propria răspundere și cu băgare de seamă.








