
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