Monthly Archives: September 2007

Xchat i prikazivanje pesme iz audacious-a

Dok sam koristio xmms ispisivanje imena pesme koju trenutno slušam na IRC-u sam radio pomoću plugin-a za Xchat pod imenom Xlack. Nažalost, xmms i dalje koristi GTK1, pa sam počeo da koristim audacious za puštanje muzike. E sad, problem je što Xlack ne podržava preuzimanje imena pesme iz audaciousa, pa sam odlučio da napišem neku skripticu na brzinu. Jeste budž, ali za 10ak minuta kucanja koda, odradiće posao.

Da bi skripta radila, potrebno je da se instalira Song Change plugin za audacious. Pod Gentoo-om ovaj plugin se nalazi u paketu audacious-plugins. Za ostale distribucije ćete morati sami da se snađete. Kada je plugin instaliran potrebno je podesiti neke stvari. Kada ga uključite (nalazi se u General sekciji) pojaviće se nova opcija u Preferences (koja se, naravno, zove Song Change). Tu imate mogućnost da ukucate komande koje će se izvršiti kad počne nova pesma, završi pesma ili kad se dođe do kraja liste. U mom slučaju to ovako izleda:
# na pocetku nove pesme
echo "%s" > /tmp/del-boy-audacious-cur-song
# na kraju pesme
# ostaljamo prazno
# na kraju playliste
rm /tmp/del-boy-audacious-cur-song

Naravno, možete promeniti ime fajla…

Zatim je potrebno da u direktorijum ~/.xchat2 snimite fajli cursong.py sa sledećim sadržajem:

#!/usr/bin/env python
__module_name__ = "Currnet song"
__module_version__ = "0.1"
__module_description__ = "Displays current song played by audacious"
__module_author__ = "Bojan Delic del-boy@ns-linux.org"
 
FILE = '/tmp/del-boy-audacious-cur-song'
 
import xchat
import re
 
def chomp(s):
    return re.sub(r"[\r\n]+$", "", s)
 
def getSong():
    try:
        f = open(FILE, 'r')
    except IOError:
        return
    song = f.read()
    return chomp(song)
 
def song(word, word_eol, userdata=None):
    if word[0] == 'song':
        song = getSong()
        if song:
            xchat.command("me slusa " + song)
    return xchat.EAT_ALL
 
xchat.hook_command("song", song, help="/song displays current song")

Eventualno treba da izmenite vrednost promenljive FILE ako ste to uradili i u Song Change plugin-u u audacious-u.

Ugasite i upalite Xchat (ili iskoristite komandu /py load ~/.xchat2/cursong.py) i plugin je spreman za upotrebu. Komanda za prikazivanje pesme je /song.

Svestan sam da ovaj plugin nema veliku upotrebnu vrednost (možda postoji već nešto sličtno što radi istu stvar). U stvari cilj ovoga je bio da se malo upoznam sa python API-jem za Xchat, pa ako nekome usput pomogne super… Ako ne, meni opet super :)

Linux po meri

Svako ko je malo upućeniji u priču o Linux-u zna da postoji mnoštvo distribucija. Ako zanemarimo tehnićke činjenice koje su uglavnom bitne tehnički potkovanijim korisnicima, za obične korisnike razlika između svih distibucija se svodi na razliku u software-u koji dolazi uz distribuciju. Naravno, većina ima repozitorijume sa kojih može da se skine dodatni software, ali šta raditi ako hoćete da imate Live sistem ili ako nemate odgovarajuću konekciju da biste mogli da skinete sve dodatne programe…

Jedno od rešenja za ovo bi bilo da sami napravite distribuciju sa software-om koji vam treba, ali u tom slučaju se više ne svrstavate u obične korisnike, pa ova priča nema mnogo smisla. Isto ovo rešenje, samo mnogo automatizovanije nudi distribucija NimbleX. Ovo je distribucija zasnovana na Slackware-u i može da se snimi na CD od 8 cm, USB flash, mp3 player itd…

Međutim, parava lepota leži u tome što on-line, kroz jako jednostavan web interface, možete da napravite sistem sa tačno onim softwareom koji vam treba. Sve se svodi na nekoliko klikova tipa Next, biranja software-a, još par dodatnih parametara i server autoramski generiše ono što ste naručili. U kratkom roku ćete dobiti link ka ISO image-u koji samo treba da narežete i imaćete Linux Live CD po meri. Mnogo dobra stvar…

Custom NimbleX možete napraviti ovde.

Software Freedom Day

Dakle, juče je bio Software Freedom Day i upravo sam se vratio sa LUGoNS-ove žurke koja je organizovana ovim povodom. U stvar nije bila samo žurka nego smo se skupili iz malo ozbiljnijih razloga, ali na kraju smo, kao i obično, završili u kafani (bar neki od nas).
LUGoNS - SFD

SFD je globalna stvar, i predstavlja način popularizacije slobodnog i open source software-a. Održava se treće subote u septembru tako što svaki od lokalnih timova organizuje neko dešavanje. Trenutno ima 330 timova iz 90 zemalja sveta, a iz Srbije je samo LUGoNS prijavljen.

Pošto nam je ovo prvi SFD, nismo se pretrgli od posla i odlučili smo da okupimo članove povodom svečanog uručenja članskih karti (koje su konačno izrađene). Odziv je bio odličan i čini mi se da je bilo 20ak ljudi (nažalost, neki su otišli pre slikanja). Prijavilo se i par novih članova, i ovom prilikom hoću da im poželim dobrodošlicu. Usput su se neki zanimali instalacijom OpenBSD-a na jedan od servera (nadam se novi router), neki su se igrali sa OpenSolarisom, a bilo je i onih koji su prvi put videli kako Plan 9 izgleda (uključujući i mene). Sad kad malo razmislim, jedino se sa Linux-om nismo igrali :)

Ostale slike možete videti u galeriji na SFD sajtu.

The ABC of Unix

Davno sam naišao na ovu pesmicu negde na netu (ne znam više gde, ali napravio sam kopiju). Ono što me potsetilo da je objavim je tema na LUGoNS forumu gde je objavljena još jedna zanimljiva pesmica.

Dakle, ABC of Unix:

A is for awk, which runs like a snail, and
B is for biff, which reads all your mail.
C is for cc, as hackers recall, while
D is for dd, the command that does all.
E is for emacs, which rebinds your keys, and
F is for fsck, which rebuilds your trees.
G is for grep, a clever detective, while
H is for halt, which may seem defective.
I is for indent, which rarely amuses, and
J is for join, which nobody uses.
K is for kill, which makes you the boss, while
L is for lex, which is missing from DOS.
M is for more, from which less was begot, and
N is for nice, which it really is not.
O is for od, which prints out things nice, while
P is for passwd, which reads in strings twice.
Q is for quota, a Berkeley-type fable, and
R is for ranlib, for sorting ar table.
S is for spell, which attempts to belittle, while
T is for true, which does very little.
U is for uniq, which is used after sort, and
V is for vi, which is hard to abort.
W is for whoami, which tells you your name, while
X is, well, X, of dubious fame.
Y is for yes, which makes an impression, and
Z is for zcat, which handles compression.

No more stress for me!

Coca-Cola je pre nekog vremena pokrenula nagradu igru u kojoj se skupljaju bodovi tako što se šalju kodovi sa flaša i kad skupite dovoljno bodova možete da naručite nagradu koju hoćete. Klasična priča kakve obično ignorišem, ali Colu pijem svaki dan u velikim količinama, pa sam malo po malo počeo da šaljem kodove. Za igru sam saznao sasvim slučajno kad sam odlepio nalepnicu sa jedne falše i video neke brojeve ispod. Tek onda sam obratio pažnju šta piše na samoj nalepnici i iz dosade poslao kod. I tako par puta… Onda odlučim da se registrujem na sajtu mojenagrade.co.yu, vodeći se idejom da kad već šaljem kodove, mogu da pratim koliko sam poslao i šta mogu da dobijem za to!
Read more »

Bug u GlossyBlue Advanced temi za wordpress!

Malopre sam igrom slučaja otkrio bug u temi koju koristim na blogu. Naime,ako koristite GlossyBlue Advanced temu na wordpress-u i ukucate adresu u obliku http://adresa.bloga.com/?p=XX, gde je XX broj posta koji ne postoji u bazi, dobićete brljotinu od stranice.

Stvar je u tome da se u tom slučaju ne ispisuje sadržaj posta (jer ga nema) nego tekst koji posetiocu kaže da ne postoji traženi sadržaj. Greška je u tome da je jedan div tag na pogešnom mestu zatvoren. Ako sadržaj postoji, sve je u redu i tag je zatvoren kako treba, ali ako nema sadržaja post div tag se ne otvara, ali se zatvara i u tom sličaju on “pokupi” otvoreni content div tag.

Da ne komplikujem sledi rešenje… Potrebno je otvoriti file single.php u folderu pomenute teme i pronaći nešto što liči na ovo:

<?php link_pages('<p><strong>Strane:</strong> ', '</p>', 'number'); ?>
		<?php edit_post_link('Izmena', '', ''); ?>
		</div>
 
		<?php comments_template(); ?>
 
			<?php endwhile; else: ?>
		/*NOTE: Ovo će izgledati drugačije kod Vas... Ovo je moj prevod*/
		<p>Ni jedan unos ne odgovara vašem kriterijumu.</p>
<?php endif; ?>
	  </div><!--/post -->
	  </div><!--/content -->

i prepraviti ga u ovako nešto:

<?php link_pages('<p><strong>Strane:</strong> ', '</p>', 'number'); ?>
		<?php edit_post_link('Izmena', '', ''); ?>
		</div>
		</div><!--/post -->
 
		<?php comments_template(); ?>
 
			<?php endwhile; else: ?>
		/*NOTE: Ovo će izgledati drugačije kod Vas... Ovo je moj prevod*/
		<p>Ni jedan unos ne odgovara vašem kriterijumu.</p>
<?php endif; ?>
	  	  </div><!--/content -->

Sve što je urađeno je da je linija koja sadrži zatvaranje post div taga pomerena za par mesta gore.

Kad se ovo uradi, neće biti problema ni sa stranicama koje nemaju sadržaj ni sa nepostojećim stranicama.

Switch to our mobile site