Modul r8169 (Realtek mrežne kartice) sadrži bug u kernelu 2.6.20 (konkretno ja imam slučaj na Ubuntuu 7.04, 2.6.20-16-generic). Problem je da nedektira ispravno da li je uštekan kabel, odnosno prisutnost linka. Obično do toga dolazi kada se na istom računalu koriste i Windowsi. Naime, Windowsi prilikom gašenja ne ostavljaju uključenu mrežnu karticu te nakon pokretanja Ubuntua modul ne zna uključiti mrežnu karticu i jednostavno u dmesg prikaže “r8169: eth0: link down“. Rješenje je da se ponovno pokrenu Windowsi, i unutar Device managera, u postavkama mrežne kartice uključi opcija WakeOnLan. Isto tako, preporuča se da se uključi wake on lan opcija i unutar BIOS-a.
Druga stvar u vezi ovog modula je da je mrežna spora. Problem je u tome da radi, na 10Mb/s, Duplex: Half . Ovo se lako rješava pomoću ethtool.sudo ethtool -s eth0 speed 1000
sudo ethtool -s eth0 duplex full
Prilikom instalacije Ubuntua, ukoliko imamo već instaliran neki operativan sustav (pod nekim mislim na Windowse), Ubuntu će automatski u GRUB-u dodati stavku za pokretanje Windowsa. Ukoliko se doda disk na kojem su već instalirani windowsi, potrebno je ručno izmjeniti listu u GRUB-u. Evo primjera kako to napraviti kada je potrebno bootati sa druge particije ili diska.
Otvorite datoteku (prije izmjene ne bi bilo loše napraviti backup!) /boot/grub/menu.lst.
Sve vlastite izmjene je potrebno napraviti iza linije### END DEBIAN AUTOMAGIC KERNELS LISTiz razloga jer bi se te izmjene poništile prilikom updatea i instalacije novog kernela.
Bootanje s druge particije:
Dakle, za bootanje npr. Windowsa XP s druge particije na kraj menu.lst datoteke dodajemo:
title Windows XP
root (hd0,1)
makeactive
chainloader +1pri čemu (hd0,1) označava prvi disk (hd0), drugu particiju (1).
Ukoliko su windowsi na prvoj particiji tada pišemo (hd0,0).
Bootanje s drugog diska:
title WindowsXP
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
makeactive
chainloader +1Windowsi se moraju bootat s prvog diska, tako da je potrebno “zamijenit” diskove kako bi Windowsi mislili da su na prvom disku. To postižemo pomoću ‘map’.

Priznajem da je ideja za twitter u najmanju ruku … glupa. Ali samo na prvi pogled
. Što je twitter? Twitter je zajednica prijatelja i stranaca širom svijeta koji šalju poruke o momentima iz njihovih života, kako piše na twitter web stranici. Ukratko, ljudi šalju poruke što rade, što misle i sl. Updateanje (jasno mi je da updateanje nije hrvatska riječ, ali obnova i sl. mi jednostavno ne pašu) je moguće preko weba, mobitela, instant messengera (Jabber) itd. Sad se ideja već malo manje čini glupa jer je moguće twitter updateati s bilo kojeg dijela svijeta, postaviti unutar bloga i koristiti ga kao mini blog u blogu, na primjer. Što se tiče updatea korištenjem mobitela, to se vrši slanjem sms poruke na broj lociran u Engleskoj. Zgodno, ali nije baš nešto jeftino ukoliko se često koristi
. Naravno, postoje i Java aplikacije koje update vrše putem interneta.
Dostupne Java aplikacije mi se nisu nešto pretjerano sviđale pa sam odlučio napraviti svoju. “How hard can it be?”, rekao bi Clarkson. Sat-dva nakon ideje, evo gotove aplikacije na mobitelu.
Ponekad je potrebno neku aplikaciju pokrenuti kao root no neda nam se svaki put upisivati lozinka. To se može rješiti modificiranjem /etc/sudoers datoteke. Potrebno je naglasiti da se datoteka ne smije mjenjati korištenjem nekih od tekst editora već se koristi visudo za izmjenu. Ne smije se zbog toga jer ukoliko se napravi greška pri izmjeni datoteke može doći do toga da se više nije moguće prijaviti na sustav. visudo postoji upravo zbog tog razloga. On zaključava datoteku kako bi se onemogućila višestruka (istovremena) izmjena, vrši provjeru datoteke da li ima grešaka i sl. Više o visudou: man visudo.
Recimo da za aplikacije /usr/bin/aplikacija1 i /usr/bin/aplikacija2 želimo postići da nije potrebno upisivati lozinku za pokretanje kao root korisnik. Pokrenemo visudo i dodamo redak: korisnik računalo_odnosno_hostname=NOPASSWD: /usr/bin/aplikacija1, /usr/bin, odnosno:
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
h00s ALL=NOPASSWD: /usr/bin/aplikacija1, /usr/bin/aplikacija2
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
I ovo neće raditi. Zašto? Zato što će posljednja linija %admin… to poništiti. Dakle, potrebno je ovu našu novu liniju staviti na kraj, tj. iza %admin… linije:
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
h00s ALL=NOPASSWD: /usr/bin/aplikacija1, /usr/bin/aplikacija2
Nakon 1h čupanja kose i provjere gdje je greška u najobičnijem INSERT queryu, čini se da sam naletio na bug u Pythonu i dbapi2-u za sqlite3. Problem je kod unosa podataka u tablicu (INSERT INTO). Naime, nakon inserta a prije zatvaranja connectiona potrebno je pozvati commit() metodu. Nešto kao ovo:
connection = sqlite.connect("baza.db")
cursor = connection.cursor()
...
cursor.execute("INSERT INTO tablica (stupac1) VALUES (?), "podatak")
...
neki_kod
...
connection.commit()
connection.close()
Da, ovo bi trebalo radit, ali ne radi! Problem je u tome što je commit() potrebno pozvati odmah nakon inserta. Aaaaaa. Dakle ovo:
connection = sqlite.connect("baza.db")
cursor = connection.cursor()
...
cursor.execute("INSERT INTO tablica (stupac1) VALUES (?), "podatak")
connection.commit()
...
neki_kod
...
connection.close()
Testirati ću to još detaljnije kad se naspavam
1. Ponovno otvaranje slučajno zatvorenih tabova u Firefoxu:
Pri prelasku sa Opere (tamo je taj posao odradio Undo), ovo mi je užasno falilo. No, sva sreća, otkrio sam ovu kombinaciju
2. Ignore u Irssiu:
Irssi koristim za praćenje nekoliko IRC kanala. Kako pratim kanale koji imaju puno korisnika koji svako malo ulaze i izlaze sa kanala, stvara se nepotrebna buka. Zato je najbolje filtrirati nepotrebne poruke poput ulaza na kanal, izlaza, promjena nicka itd.
Npr. zelimo filtrirati kanal ubuntu:
/ignore -channels #ubuntu * JOINS PARTS QUITS NICKSOvo će ignorirati sve ulaze, izlaze sa kanala (uključujući i net split) kao i promjenu nickova.
Ukoliko želimo isključiti maloprije postavljeni ignore:
/ignore -channels #ubuntu * -JOINS -PARTS -QUITS -NICKS

Toliko je danas bilo u hladu iza kuce. Hot in the city…
Kako je eBook reader glup odnosno nema opciju za nasumičan odabir pjesme, pojavila se potreba za novom verzijom skripte koja će raditi upravo to
. Znači, potrebno je izmjeniti skriptu tako da učita popis pjesama u listu, razmješa istu i zapiše na PSP.
Da bi to radilo kako treba, trebalo je napraviti mali algoritam za randomiziranje liste. Algoritam se temelji na slijedećem: uzme se prva stavka i zamjeni sa nasumično odabranom stavkom. Nakon toga uzme se druga stavka i također zamjeni sa nasumičnom stavkom itd.
for i in range(len(lista)):
rnd = random.randint(0, len(lista)-1)
tmp = lista[i]
lista[i] = lista[rnd]
lista[rnd] = tmp
Nakon toga sam shvatio da u random klasi postoji i metoda shuffle koja radi upravo to
tako da se isti učinak postiže pomoću:
random.shuffle(lista)
Python rulez.
Skripta: psp-ver2.zip
Na ISPConfigu verzije 2.2.13. dolazi do interesantne greške prilikom promjene lozinke za pojedinog korisnika. Ukoliko se korisniku postavi lozinka npr. ‘0123456789′, korisnik će se moći spojiti (preko SSH-a) i upisom ‘012345678′ ili ‘0123456787′ i sl. Dok za lozinku kao ‘01234567′ se neće moći spojiti. Ukoliko se lozinka postavi koristeći naredbu ‘passwd’, korisnik će se moći spojiti korištenjem samo te novo postavljene lozinke.
Da bi se omogućilo ispravna izmjena lozinke iz ISPConfiga, potrebno promjeniti način kriptiranja lozinka u bazi.
U datoteci /home/admispconfig/ispconfig/lib/config.inc.php potrebno je redak:
$go_info["server"]["password_hash"] = ‘crypt’;
izmjeniti u:
$go_info["server"]["password_hash"] = ‘md5′;
WSUS omogućava automatsku nadogradnju zakrpa za računala pokretana Windows operativnim sustavom. Osim što omogućava odabir koja će se računala “updateati” i koje točno zakrpe će se aplicirati, omogućava i štednju internet prometa jer se računala više ne nadograđuju preko interneta već preko lokalnog WSUS-a.
Kako održavam Windows domenu sa preko 70 računala odabir WSUS-a za nadogradnju računala bio je jedini pravi izbor. Okolina na koju sam instalirao WSUS je: Windows Server 2003 SP1 sa ISA Server 2004. WSUS možete skinuti ovdje a uputstva kako instalirati možete pogledati ovdje.
To u teoriji izgleda lijepo i krasno. Instalira se WSUS, podesi se group policy da računala koriste WSUS server za nadogradnju i uglavnom to je to. Paa, ne. Vjerojatno će te naletiti na nekoliko problema kao i ja te ću stoga napisati probleme na koje sam naišao kao i njihova rješenja.
- Event Type: Error
Event Source: Windows Server Update Services
Event Category: Synchronization
Event ID: 364
Description:
Content file download failed. Reason: Proxy authentication is required.
Source File: /msdownload/update/v5/eula/officexpeula_deu.txt Destination File: d:\WSUS\WsusContent\1F\9DE9B2A4C3A94DA9656896B0D2D5057AE2509E1F.txt.
Iako WSUS u postavkama dopušta unošenje proxy servera, on ga ne zna koristiti. U mojem slučaju WSUS je koristio proxy ISA Servera i iako sam unio ispravne podatke pojedine updatee nije uspio skinuti jer se je spajao na proxy kao anonymous. Rješenje je da ne koristite proxy ili postavite da proxy ne zahtjeva autentifikaciju za server sa instaliranim WSUS-om.
- Event Type: Error
Event Source: Windows Server Update Services
Event Category: Synchronization
Event ID: 364
Description:
Content file download failed. Reason: The client does not have sufficient access rights to the requested server object.
Source File: /msdownload/update/v3-19990518/cabpool/windowsxp-kb918118-x86-enu.exe Destination File: d:\WSUS\WsusContent\6D\8C38E06D795C410B8A072506AF40AD81D64F1D6D.exe.
Za ovo rješenje postoje dvije solucije iako je za moj slučaj radila samo ova druga.
1. Potrebno je za korjenski direktorij (npr. D:\) postaviti ovlasti read, list and execute za korisnika NETWORK SERVICE. Isto tako za direktorij \WSUS i sve njegove poddirektorije i datoeke potrebno je postaviti potpune (full) ovlasti za korisnika NETWORK SERVICE.
2. Druga solucija je promjeniti korisnika koji pokreće WSUS iz NETWORK SERVICE u Local system account.
- Event Type: Error
Event Source: Windows Server Update Services
Event Category: Core
Event ID: 10042
Description:
There is less than 200 MB of free disk space on the content drive. Please make more space available as soon as possible.
Ovo je bila zanimljiva greška jer je na disku gdje se nalazi WSUS bilo više od 150gb slobodnog prostora. Rješenje je isto kao za problem pod točkom 2.
- Event Type: Warning
Event Source: Windows Server Update Services
Event Category: Clients
Event ID: 13051
Description:
No client computers have ever contacted the server.
Firewall blokira pristup portu 8530. Otvorite port (samo za lokalnu mrežu) kako bi računala mogla pristupiti wsus-u.