Glasajte za Booki!

Gdje to treba glasati ?

Transmediale je u suradnji sa Mozillom najavio Open Web Award 2011. Pročitajte više na website-u o čemu se radi.

Flossmanuals su uključeni sa projektom Booki. Ne trebam pričati koliko ću biti sretan kad bi glasali za nas i pomogli nam da se dokopamo 5000 EUR-a nagrade i vječne slave!

Što je Booki ?

Booki je naziv naše nove platforme za jednostavno i brzo objavljivanje knjiga. To uključuje softwarea koji služi za multiuser online editiranje knjiga, publish-anje knjiga u različite formate, importanje sadržaja sa drugih platformi itd… Osim samog software (platforme) to uključuje i Book sprintove koje organiziramo, a od skoro i kombi. Kombi? Oh da… Kombi sa opremom za printanje i uvezivanje koji je u stanju doći i razveseliti vaše lokalno događanje!

Zašto bi glasao/la za Booki?

Postoji nekoliko razloga zašto bi mogli glasati za nas!

Prvo razlog je što smo vam mi baš super! Super vam je ekipa uključena u projekt, super vam je ekipa koja je odlučila koristiti naš sustav za svoje projekte,… Npr. ekipa kao što je Arctic Perspective Initiative (http://arcticperspective.org) koji rade na knjizi o preživljavanju u Artiškim uvjetima, Thunderbird / Inkscape / Processing / CimCRM / Blender / Command line / OLPC i ostali manuali, ekipe koja skuplja folk priče o uzgajanju biljki, itd. Super vam je ekipa koja odvaja ono malo slobodnog vremena od svog posla i obitelji da potroši na stvari do kojih im je stalo, a vjerujte mi, takvih je dosta uključeno u projekt i stvari koje se dešavaju oko projekta. Oh… kako bi im samo Vas glas puno značio 🙂

Drugi razlog je što bi svaki vaš glas mene malo trgnuo i natjerao da mrdnem guzicu i više radim na projektu. U zadnje vrijeme sam se fino ulijenio. Što je naravno velika šteta jer se radi o jednom od najzanimljivijih projekata u mom dosadašnjem zivotu. Pa ako mislite da će Vaš glas pomoći da mrdnem guzicu od besmislenog komercijalnog posla koji ne pruža ništa osim stalnog prihoda, nemojte se previše sramiti da glasate za nas!

Kako glasati ?

Ako ste došli do ovog paragrafa, neće vam biti onda teško ni da se registrirate na websiteu i glasate za nas! Znam … znam.. ali tako stvari stoje 🙂

Prvo se registrirajte:
http://www.drumbeat.org/user/register

I onda glasajte za nas:
http://www.drumbeat.org/project/open-web-publishing

Hvala od mene i cijelog tima!

FLOSS Manuals – Theora Cookbook

Završio je četverodnevni Theora sprint u Berlinu. Rezultat je u vidu 212 stranica papira …. Theora Coockbook knjiga… ttarrraaaaa….. Sprint podržao Google i Berlin Summercamp.

Kao i obično, idućih par dana će se prolaziti kroz tekstove i ispravljati greške. Užasno mi je žao što na ovome nisam mogao biti… ali eto, teško je usaglasiti regularan posao sa paradiranjem po Evropi i sudjelovanju u različitim projektima. U ovaj manual se uspio progurati i Barack Hussein Obama. Skidajte, čitajte i širite glas dalje (naravno, možete i pomoći u pisanju).

Link na web izdanje:
http://en.flossmanuals.net/theoracookbook

Link na PDF i papirnato izdanje:
http://www.lulu.com/content/7531795

Link na FLOSS Manuals:
http://en.flossmanuals.net/

Conversation and Community: The Social Web for Documentation!

Anne Gentle piše za paru tehničku dokumentaciju. U slobodno vrijeme radi na FLOSS Manualsima, piše neke svoje priče i stara se o mužu i dvoje djece. Simpatična teksašanka (donijela mi je nekoliko kutijica Altoidsa). Teško da ću zaboraviti naš susret u Amsterdamu. Njen prvi put u Evropu i odmah poslom u Amsterdam. Smješak na licu koji kaže “ah da je sve ovo prije 15 godina”.

Daklem. Izdala je žena svoju prvu knjigu pod nazivom “Conversation and Community: The Social Web for Documentation”. Ako vas zanima ta tematika slobodno pogledajte free chapter (spominje se i moja malenkost unutra…. samo riječju i imenom ali eto).

Više o knjizi na:

Announcing Conversation and Community: The Social Web for Documentation!

Friedrich Nietzsche i thumbnailovi sa images.google.com

Izgleda da je ovo tjedan 5 lajnera u pythonu. Anywho, radim neki backend za jedan hax0rski portal. U biti, radim neuspješnu reinkarnaciju Metafeeda-a u vidu naslovnice za site Razmjena vještina. Svečana prezentacija bi trebala biti na “Ništa se neće dogoditi”. Nakon toga siguran sam da će to biti vaš prvi (ako ne i jedini) feed uz koji ćete ujutro pijuckati kavu.

Daklem… jedna od stvari koja mi treba za backend portala je operacija “uzmi mi random sliku sa images.google.com”. Mislio sam da će biti nekog HTML parsanja sa BeautifulSoup ali moj dragi Google me lijepo iznenadio. Pljunu natrag gomilu JavaScripta koji izgenerira stranicu u samom Browseru. Koristeći najobičniji regular expression uzmem sadržaj tog JavaScript Arraya (kao string). Zgodno je što je u ovom slučaju sintaksa za Array polja u JavaScriptu identična Pythonovim listama pa iskoristim običan Pythonov eval da od toga dobijem Pythonovu listu. Da sam i imao želju za Djeda Mraza (iliti lika sa Coca-Coline reklame) ne bi bilo ovako lako na kraju.

Naravno, cijela ova fora će raditi dok Google ne odluči promjeniti sintaksu. Cilj skripte je pokazati ukratko kako sam rješio problem dobivanja URL-a slike (a i da popunim blog ovom trivijalijom). Zbog toga i nisam onečistio code sa provjerama u slučaju grešaka i neispravnih rezultata. Baš mi nešto i ne radi num argument za podešavanje broja rezultata na stranici. Zato koristim argument -p koji mi kaže na koju stranicu rezultata da odem.

Upotreba:

skini.py -p 4 krava muzara
skini.py -r svinjska gripa

Skripta skini.py:

#!/usr/bin/python

import urllib2, urllib, re, sys, getopt, random
def fetchURL(query, start = 0): req = urllib2.Request('http://images.google.com/images?hl=en&q=%s&gbv=2&aq=f&oq=&aqi=g10&start=%s' % (urllib.quote_plus(query), start)) req.add_header('User-Agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1pre) Gecko/20090701 Ubuntu/8.10 (intrepid) Shiretoko/3.5.1pre') req.add_header('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') req.add_header('Accept-Language', 'en-us,en;q=0.5') req.add_header('Accept-Encoding', 'deflate') req.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7') req.add_header('Connection', 'close') r = urllib2.urlopen(req) data = r.read() return data
def parseImages(data): p = re.compile(";dyn\.setResults\(\[(.+)\]\);\<\/script\>") m = p.search(data) lst = eval(m.group(1)) return lst
if __name__ == '__main__': try: optlist, args = getopt.getopt(sys.argv[1:], 'rp:') except getopt.GetoptError, err: print "skini.py [-p <page number>] [-r] args\n" print str(err) sys.exit(-1) start, isRandom = 0, False for arg, value in optlist: if arg == '-p': start = value if arg == '-r': isRandom = True data = fetchURL(' '.join(args), start = start) images = parseImages(data) if not isRandom: for img in images: print img[3] else: print random.choice(images)[3]

Prekrasna juhica u Googleovoj zdjelici servisa

“Ej Aco..” – prekinuo me Srki u ___________ dok sam ljenčario na poslu. Naime, zanima ga… da li bi mu mogao prebaciti sadržaj “prodaja Ega/hiperinflacija Emocija” sa http://srdjansandic.blog.com/ na blogger.com. Da li bih mogao… pif….

S obzirom da Aco nije nikad odbio besplatno pivo odlučio sam složiti neku sitnu skriptu koja će mu to raditi. Naime, blogger.com (kaže Srki, nisam ja provjeravao) ne može to sam importati. blog.com nema nikakav public API za export podataka ali zato blogger/blogspot ima.

Brz na idejama, kakav već jesam, bacio sam kratki pogled na
http://srdjansandic.blog.com/. Analizirajući stranice mojim omiljenim FireBugom odlučio sam se na najkraće moguće rješenje (u međuvremenu se malo promjenio template ali u vremenu kad sam prebacivao code je imao smisla).

Daklem…. govoreći riječnikom iskusnih kiber hakera i internauta odlučio sam se za slijedeće:

ćopi_sve_linkove_na_arhivu sa strane "http://srdjansandic.blog.com/";

vrti_kroz_te_stranice { | stranica |

  ćopi_sve_linkove_na_perma_link sa stranica;

  -- LoL !
  vrti_kroz_te_stranice { | stran1ca | 
      ćopi_sadržaj_stranice stran1ca;
      izvuci_iz_dom [title, datum, content] -> snimi_u_bazu;
  }
}

Naime, šema je slijedeća. Ćopim naslovnu stranu. Na naslovnici se nalaze linkovi na stranice sa arhivama. Uzmem te linkove i skinem svaku od tih stranica posebno. Tamo se nalazi popis svih postova (lako je jer je sve na jednoj stranici) sa dijelom sadržaja. Vrtim kroz svaki od tih postova i uzmem linkove na koje pokazuje link na njihov permalink. Uzmem svaku od tih permalink stranica i iz nje izvučem sadržaj naslova, datum objave i sadržaj. Može i komentare na taj način ali Srki je rekao da nema potrebe za tim.

Zatim dobiven sadržaj spremim negdje (u mom slučaju sqlite3). S obzirom da blogger ima neku zaštitu od SPAM-anja podnosi samo određeni broj postova u danu. Preko Web interfacea se može postati više ali se mora popuniti neki CAPTCHA. Preko GData API-a nisam vidio da ima neka opcija za to pa zbog toga svaki dan opalim nekih 50-etak novih članaka iz baze.

U svemu ovome koristio sam Beautiful Soup. Zakon library koji mi je do sad dosta puta uskočio u pomoć. Kuži loš HTML, lako se izvlači sadržaj iz njega i brine se za encodinge. To im čak piše i na naslovnoj stranici 🙂 Iz nepotpunog primjera koji slijedi (koji nisam ni isprobao) je vidljivo kako se koristi Beautiful Soup i kako sam ja primjenio gornji algoritam na Srkijevom siteu.

import urllib
from BeautifulSoup import BeautifulSoup

def fetchURL(url): return BeautifulSoup(urllib.urlopen(url).read(), fromEncoding="utf-8")
soup = fetchURL("http://srdjansandic.blog.com/")
for link in soup.find('div', {"class":"block slideshow"}).findAllNext("a"): archive = fetchURL(link["href"])
for post in archive.find('div', {"id": "posts", "class": "posts"}): for plink in post.findAllNext("span", {"class": "permalink"}): clanak = fetchURL(plink.next["href"])
title = clanak.find("h4", {"class": "posttitle"}).next datum = clanak.find("h3", {"class": "date"}).next text = clanak.find("div", {"class": "posttext"}).next

Fali dio koji izvlači podatke iz baze i preko GData python clienta posta na blogger/blogspot.

Bojo razbacivač

Jedan od uradaka Binarnog laboratorija pod dobrim starim motom “ne.. nećeš vidjeti moj source”. Plugin za Adobe Illustrator na temu “porazbacaj mi ove boje” što sam složio za Gambu. Gamba, za one koji ne znaju je dizajner. Trebao bi ovo biti “one of many” koje će laboratorij izbaciti…

Acina prva iPhone OS aplikacija


Kao što i naslov kaže – “Acina prva iPhone OS aplikacija” je zgotovljena. Početne nule i jedinice Binarni.net iPhone aplikacije koja će se uskoro moćo kupiti na Apple Storeu 🙂 Daklem, kad kliknete na button “Generiraj” izgenerira se binarni broj. Nešto kao i web verzija mog binarnog startupa (dio weba koji još nije objavljen).

Anywho, još nisam postao dio iPhone Developer Programa (znači pljuno $99 godišnje Appleu) tako da se ovo za sad vrti u simulatoru. Treba platiti ako se želi testirati na pravom uređaju. Kad se malo bolje snađem u Cocoi i gomili novog API-a (i ako skužim da imam vremena za iPhone OS) budem se učlanio. Vrtiti ovakve primjere na samom uređaju mi trenutno i nije neki prioritet s obzirom da mi simulator sa debugerom daje puno veći komfor. Do tad….. ostanite na liniji do nekih mojih slijedećih postova.


Napredak sa Franjom


Da se odmah razumijemo – ja sam na samom početku rekao da će Franjo ići tempom koji ja odredim. U svakom slučaju, bio sam zauzet nekim drugim projektima ali dva su me događaja ponovo pokrenula. U biti tri. Prvi je vezan s tim da sam odlučio podovršavati sve ti sitne zezancije od projekata koje sam započeo. Rekoh, kad sam već utukao par sati na izrade videa i svega mogao bih utući još dva tri sata da sve i finiširam. Drugi je kad sam vidio kako je dvogodišnja klinkica od moje drage prijateljice napaljena na Franju Kluza. Treći je što sam nekome obećao da će kao dio rođendanskog poklona (da ne ispadne da sam totalno lame – pao je i normalni poklon) dobiti ulogu u Franji Kluzu.

Daklem… idemo redom. Priča ide da je Franjo utekao u partizane zbog kartaških dugova i možebitnog pretjeranog drugovanja sa ženom svog nadređenog. Isto tako postoji priča da Franjo nije nikad poginuo već da je odletio u Afriku (vezano sa njegovim letovima u izbjegličke logore gdje je bio popularan među djevojkama). To mi je sve djelovalo kao zanimljiva osnova za samu igricu. Svakako će biti konfigurabilno (jer ipak želimo i da djeca igraju Franju) ali početak Franje će biti u stilu 8-bitnih igrica iz 80etih. Franjo treba u “n” različitih poza zadovoljiti ženu svog nadređenog dok se isti lagano približava kući. Hoće li zateći Franju unutra? Ovisi od vas!

Daljne misije vode Franju preko Bosne, Dalmacije do same Afrike. Između pravih misija nalaze se male kartaške igre (još nisam smislio kakve) za nabavljanje dodatnog novca. Misije koje Franjo treba završiti bi bile tipa:

  • bacanje cigara i konjaka drugu Titi
  • bacanje konzervi drugu Titi da ih može podjeliti borcima “7 banijske udarne divizije”. To je jedna od onih mnogih pričica kad Tito svoju hranu dijeli (sigurno je konzervi istekao rok trajanja). Meni je priča zanimljiva jer je moj djed bio dio te priče. (bitka na Neretvi iliti Operacija Weiss)
  • bacanje vojne pomoći 3-ećoj udrarnoj diviziji pod vodstvom Save Kovačevića u borbama kod Sutjeske (Operacija Schwarz )
  • bacanje “političkog” iz padobrana da podigne moral jedinicama
  • bacanje britanskih špijuna na razgovore sa drugom Titom
  • definitivno hoću ubaciti misiju sa bacanjem hrane za kravu (hm.. krava je bila u pitanju?!) koja je vukarala knjige od Vladimira Nazora. Isto tako, malo van konteksta ali kao dio priče hoću ubaciti i Velog Jožu u tu misiju sa možebitnom “Jamom” na kraju. Bez aluzija na pederluk ali svakako sa Jožom koji baulja po terenu i na kraju na*ebe.

Anywho… imam dosta ideja i budem uskoro opet počeo na tome raditi.

Što se tiče rođendanskog poklona…. pismo je išlo ovako:

Dragi moj Duško,
u ovakvim situacijama čovjek se uvijek zapita «Što kupiti nekome tko je uspješan kako u poslovnom tako i u privatnom životu? S kakvim poklonom pokazati koliko mi je stalo do našeg prijateljstva sve ove godine?!».

Jedini odgovor na takvo životno pitanje je «Znam! Stavit ću ga kao jednog od likova u svoju novu indie igricu koju radim (nije ona igrica)!». Drugi odgovor mi je bio «Dat ću mu testne licence na 90 dana za Informix Dynamic Server pa da jadničak napokon vidi pravu relacijsku bazu za muškarce!».

Daklem…. Igrica se zove «Franjo Kluz» i trenutna 0.04 verzija se nalazi na web adresi https://www.binarni.net/projects/franjo/. Zašto mislim da bi ti bio idealan lik unutra? Franjo je, kao što najvjerovatnije i sam znaš, bio kockar i švaler koji se zamjerio ustaškom časniku (nakon što je izdao kraljevsko zrakoplovstvo te prebjegao u okupatore) i utekao sa svojim kopilotom u partizane. Igrica prati dogodovštine našeg Franje od odlaska u partizane do samog kraja. Službena priča kaže da je poginuo od švabske ruke ali mi znamo da nije bilo uistinu tako….

Koji si ti od likova? Možeš sam odrediti…. reci što bi želio biti a ja ti predlažem neke likove:

Muškarčina. Brat blizanac Bate Živojinovića. Budućnost SFRJ ovisi o njemu dok ga Franjo treba izbaciti sa padobranom da se pridruži Savi Kovačeviću i njegovim ratnicima na Sutjesci.

Politički. Brat blizanac Rade Šerbedžije. Budućnost političkog uređenja SFRJ ovisi o njemu. Franjo ga treba padobranom izbaciti da stigne na sjednicu AVNOJA. Osim AVNOJA može biti i neka jedinica u okruženju kojoj treba dignuti moral.

Britanski špijun. Brat blizanac Mikija Manojlovića od majke iz prvog braka. Direktno od Churchilla treba donjeti pakovanje najfinijih kubanskih cigara drugu Titi u njegovu špilju u Drvaru.

Mislim da je ovo bolje od bilo koje beskorisne drangulije a s obzirom da se radi o čistoj JavaScript igrici koja koristi HTML5 element Canvas i sam ćeš znati koliko sam truda, znanja i ljubavi uložio u sve ovo. Tvoji beskorisni Java developeri koji često znaju ispustiti index na glavnom ključu u tablici će ti zaviditi.

Tvoj Aco

Introduction to the Command Line

Još jedna zgotovljena knjiga. Ovaj put se radilo o dva dana Booksprinta u organizaciji Free Software Foundation i FLOSS Manualsa. Knjiga još nije u finalnom stanju (provjeravaju se greške i dodaju neka nova poglavlja) ali je osnovni dio dovršen. Naslov je “INTRODUCTION TO THE GNU/LINUX COMMAND LINE” i slobodno ju možete pogledati online. Lijep napredak i za FSF ako se usporedi sa njihovim reference manualom http://www.gnu.org/software/bash/manual/bashref.html (ok, to je ipak malo drugačija vrsta literature).

FM Transmission je kao i u slučaju Firefox Booksprinta dobro poslužio kao gateway između IRC i Web korisnika (integriran unutar web sustava editiranja). Isto tako, kao i u slučaju Firefox booksprinta uočili smo da nam fali više online administratora. Naime, kad se radi o online participantima zbog različitih vremenskih zona (Novozelanđani prvi dolaze dok se ostali tek spremaju na spavanje) treba nam više online administratora koji će uvijek biti pri ruci novim participantima. FSF najava i njihovo sponzorstvo je uvelike povećalo zanimanje i broj zainteresiranih pisaca. S obzirom da nova verzija nije ni približno zgotovljena povećana zainteresiranost za staru platformu me nimalo ne veseli.

Linkovi:
* http://en.flossmanuals.net/gnulinux
* http://www.lulu.com/content/6521146
* http://en.flossmanuals.net/bin/view/Blog/GNULinuxDone?&skin=flossrss
* http://www.fsf.org/blogs/community/book-sprint