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

FM TRANSMISSION

Jedan od razloga zašto Franjo Kluz kasni su ovakvi nenadani projekti. Booki (nova Flossmanuals platforma) je u izgradnji ali zbog nevjerovatno velike zainteresiranosti u zadnje vrijeme i velikog broja Book sprintova koji se dešavaju (Španjolski, Firefox, Command line sa FSF-om, PD-ovi…) trebao sam se poigrati malo sa trenutnim chat sustavom. Trenutni chat sustav je neki dummy javascript+php koji su copy+pasteali u flossov editor.


Poigrao sam se tako da sam zasukao rukave i prihvatio se neke prastare ideje koju sam imao prije 6-7 godina (koje god je doba bilo kad sam radio tamtam). Maaaaaaalkice se stvari i izdešavalo od onda ali ideja je za komunikaciju koristiti čisti HTTP koji zaobilazi firewallove, Comet (u to doba sam osmislio Comet kroz Flash koji je bio uspješno implementiran kod igrica za VIP.net) te svakojake gatewayeove prema drugim mrežama (irc, icq i aim tad itd.).

Anywho… demo fino radi s tim da još moram srediti autorizaciju u chat sustav kroz TWiki identitete, TWiki notifikacije u chatu i Comet komunikaciju (i istestirati taj dio malo žešće). Kod demoa sam stavio da se stvari samo sinhroniziraju svakih par sekundi. S obzirom da je Firefox Book sprint sutra i da želimo impresionirati Chrisa Hofmanna (Director of Engineering, Mozilla Foundation) tih par sekundi će biti ok za sad.

Znači, imamo Web chat koji je spojen trenutno na #flossmanuals kanal na irc.freenode.net. Oni koju znaju mogu koristiti irc client dok oni koji ne znaju kako instalirati ili nisu u mogućnosti instalirati irc cliente mogu se preko weba priključiti na chat. Dependency je morao od samog početka biti minimalan, tek flat fileovi i minimalna potrošnja memorije (trenutni stroj je slab, prebacujemo se na novi i ne želimo ništa novo instaliravati od softwarea dok ne dodje novi Booki na kojem radimo).

Stvari koje će biti implementirane:
– Podrška za više od jednog kanala. Tako da npr. svaki sprint ili svaka knjiga ima svoj kanal.
– Podrška za online browsanje historija i za snimanje chatova u wiki stranice.
– TWiki notifikacije u sustavu. npr. “Korisnik David je promjenio status knjige u published.”. “Korisnik David je kreirao novi chapter.”. Notifikacije se vide trenutno (bitno zbog sprintova) što znači da će neki od naših TWiki pluginova direktno komunicirati sa FM TRANSMISSIONOM a neće se analizirati logovi ili feedovi.
– Upload fileova. Takvi fileovi su vidljivi web i irc korisnicima koji ih mogu lako skinuti na svoje računalo.
– Privatne poruke.
– Mala verzija chata koja se vidi kraj editora i full size koja se može imati otvorena u posebnom prozoru.
– Gatewayevi prema drugim mrežama i sustavima
– Plugin sustav (dodatni gateway na druge mreže, filteri, svakojake dodatne komande)

Imam dosta tih ideja pa ćemo vidjeti što i kako ćemo implementirati s obzirom da imam i neke hitne bug fixeve za ispraviti u postojećem sustavu. Sexy feature čak i u verziji 0.0.10 je da se kod automatskog spajanja na chat dobije odmah back history nekih 30-etak linija pa se može vidjeti diskusija koja se dešavala ili koja se dešava u tom trenutku.

Cijela stvar je prilagođena Flossmanuals potrebama ali lako će se moći koristiti na bilo kojem drugom TWiki based siteu ili samostalno. Sređujemo Trac za Booki pa ću u jednom trenutku kad mi se i bude dalo mučiti sa kreiranjem README fileovea i fileova sa licencama staviti git repositorij na public. U pozadini je python, dedicated web server za komunikaciju sa clientima i twikijem, irc bot, mod_proxy u apacheu da se twiki instanca i url za komunikaciju stavi na istu domenu (zbog javascript security issuea, sessiona itd.) itd… itd…

Mala trivia… Transmission dolazi od (a super mi se potrefilo sa našom skraćenicom FM)….

“5 min edit” video




Video: A day in the life of FLOSS manuals….

Roll Up! Roll Up! for the greatest show on earth. That’s right never before have you had such unlimited access to a distributed network meeting in real life. This time we know it’s for real. This is pure gold for network academics the world over and it’s coming to this email list first. No shit.

Videos:::

5 mins edit – http://blip.tv/file/1879311/

Full 30 min video part one – http://blip.tv/file/1878455 – part two http://blip.tv/file/1879151

And if you like this, contact me (mick at mcin dot net) for the outtakes – Raw uncut members only scenes in full color, see real arguments, watch as networks atropy, Unmissable stuff – Reasonable rates.

FLOSSify 1 : Digital Foundations


Jedna od stvari koja mi je smetala tokom školovanja (a smeta mi i sada) je što su nas stalno podučavali na softwareu koji nisam mogao slobodno nabaviti i instalirati na svoje osobno računalo. Razumljivo je da nekad nema slobodne/besplatne alternative, u nekim situacijama je proprietary rješenje jedino što će studenti susretati u budućnosti ali katkada ipak postoji mogućnost izbora. Mirkosoft i dosta ostalih proizvođača razumije tu cijelu priču jako dobro pa imaju posebne edicije za studente ali i dalje velik broj rješenja koja se podučavaju nije moguće slobodno ili besplatno dobaviti. Ne treba ni spominjati kako se neka slobodna rješenja uopće ili jako malo koriste u edukaciji. S obzirom da se većina učenika/studenata u životu i neće dalje maknuti od toga što su ih podučili na samom početku edukacije (postati konzumenti proprietary rješenje koja ih vežu za proizvođača) mi iz FLOSS Manualsa smo odlučili malo da se ubacimo u cijelu tu priču.

Daklem, cijeli taj proces zovemo “FLOSSify“. Konvertiramo knjige koje koriste zatvoreni software da koriste Free Libre Open Source Software (FLOSS). Knjiga s kojom je to sve započelo je “Digital Foundations” od Michael Mandiberga and Xtine Burrough (http://digital-foundations.net/). Radi se o knjizi koja vas uči koristiti software tako da vas uči dizajnu. Knjiga trenutno koristi alate iz Adobijeve palete proizvoda ali se upravo konvertira da koristi slobodna rješenja (Inkscape, GIMP, KompoZer, FireFox, Scribus, gedit, Processing). Ono što je zanimljivo je da su se autori knjige obratili nama s idejom o konverziji.

Trenutno u prostorijama Eyebeama (http://eyebeam.org/ ; New York) traje prvi trodnevni FLOSSify workshop. Na knjizi radi oko 18 ljudi. Neki su uključeni remote, neki su u prostorijama Eyebeama a neki su samo nenajavljeni banuli totalno nabrijani. Saznali su za projekat na Internetima, čekali da cirkus dođe i u njihov grad i sad sjede sa ekipom, druže se i pišu tekstove po cijeli dan. I to više od jedne osobe (znači, za sad 2). Koji totalni zakon!


Ovo što vidite iznad je modificirani TWiki koji koristi ekipa. Autori vide Table of contents (koji će se u novoj verziji uređivati na drag & drop foru). Vide koji status trenutno pojedini Chapter ima (ne vidi se ali postoji i status chart gdje se vidi koliki je postatak knjige završen). Sa desne strane (ne vidi se na slici) postoji realtime chat (svi su još i na IRC-u). Također vidi se realtime tko u ovom trenutku editira koji chapter. Za novu verziju ćemo pokušati sve to još više integrirati zajedno. Za ovu trenutku verziju najveći je issue biti upogoniti (ne pitajte zašto ne koristimo mod_perl) na našem ne jakom serveru cgi-bin/perl/twiki sa ajax foricama za više od….. pa 4 korisnika 🙂 Ah ah.. ali sad radi normalno.

Eto.. malo vijesti iz FLOSS manuals svijeta. Ima toga još ali ostavit ću za drugi put.

Više o svemu na:
* http://www.flossmanuals.net/
* http://www.mandiberg.com/2009/01/28/flossify-1-digital-foundations/
* http://gabriellacoleman.org/blog/?p=1256
* http://hackervisions.org/?p=319