Kad se perliše potuku iliti kad community ode kvragu


U maniri scenarija Jelene Veljače i produkcije Romana Majetića nakon dosta mjeseci porođajne muke desio se i taj TWiki fork! Za one koji ne znaju fork u ovom kontekstu znači da je jedan dio TWiki zajednice uzeo izvorni kod i započeo zaseban projekat koji je neovisan od starog TWiki projekta. Zašto je to nekome uopće zanimljivo, zašto bi se uopće netko trebao brinuti a i sto mu gromova, gdje je tu uopće drama?!

TWiki projekat je prije nekih 10etak godina kao klon JosWikija započeo lik koji se zove Peter Thoeny. Bio je to jedan simpatičan strukturiran wiki specifičan po svojoj ideji “Web” -ova koji omogućuju da se site podjeli na manje cjeline. Od samog početka projekat je bio izdan pod GPL licencom ali Peter je bio jedina osoba koja je imala pravo na TWiki trademark. To se kasnije ispostavilo kao uzrok dosta problema i trzavica koje su u konačnici i dovele to podjele.

Kod free software projekata TWikijeve veličine dobar i kvalitetan community sa dobrim leaderom ili dobro posloženom organizacijom je izrazito bitan za uspjeh. Počela se tu s vremenom oko TWikija okupljati neka ekipa ali sve je to nekako kilavo ispalo. Peter je ispao nekomunikativan lik. Ekipa je ispala previše u banani i ta agonija je trajala par godina. Nekih 5-6 godina Peter se i nije bavio nekim razvojem TWikija i sve je bilo na tom nesretnom communitiju. Jedan dio ekipe je samo gunđao i odbijao išta raditi, jer Peter je eto kriv za sve. Drugi dio ekipe je nešto i razvijao ali krajnji korisnici su znali dosta puta biti nakon pritužbi tipa “na Safariju ova forma ne radi” biti otpiljeni sa tipičnim programerskim elitističkim odjebima “tko uopće i koristi Apple”. Naravno uvijek je tu i jedan Debianovac koji ima svoje ideje kako bi to sve trebalo posložiti.


Negdje prošle godine Peter je došao do nekih novaca od VC-ovaca, odlučio je osnovati TWiki.net kao konzultantsku firmu i predlagao je da trademark sa njega pređe na twiki.net. Community programera koji je zadnjih nekoliko godina radio na razvoju nije želio ni čuti za takvu ideju. Malo se pregovaralo, malo su se neki modeli governancea predlagali da bi na kraju sve završilo prošli tjedan na dan objavljivanja nove verzije. Na dan objave cijeli community se nađe na Chatu (#twiki kanal točnije), dogovore se “dnevni red”, odrade se stvari i nova verzija se stavlja za download. Ovaj put je Peter došao i kao točku stavio relaunch twiki.org.

Bez najave je svima koji su do tada bili uključeni u projekat onemogućio pristup do servera i na web site je stavljeno novo pravilo korištenja (na koje se trebalo pristati prilikom ulogiravanja) koje kaže da sav materijal napisan na web siteu pripada firmi twiki.net. Naravno trademark TWiki je prebačen na firmu, dosadašnjim developerima je rečeno “ako vam se ne sviđaju nova pravila slobodno forkajte, imate pravo na to, ali ako budete koristili naziv TWiki bilo gdje budemo vas tužili”.

Onda je počelo kukanje “ne možeš se tako ponašati, mi smo napisali sav code, propast će ti firma bez nas!”. Pa su malo emocije proradile i kilalo se Petera sa fork kanala itd. itd… Za sad fork projekat ima privremeno ime “Next Wiki” iliti nextwiki. Šaljivi njemački developeri. Source je baziran na zadnjoj objavljenoj verziji i isto tako kao i twiki.net planiraju neke veće promjene na projektu. Naravno, svi su sad oduševljeni što više nema tog Petera da koči stvari i blah blah napokon su ostali sami i sad će se vidjeti koliko je community kao takav u biti trul i kako velik broj problema nije bio rezultat Peterovih loših odluka već odraz njihove nesposobnosti.

Sve u svemu meni ostaje da čekam par mjeseci i vidim koja će frakcija pobjediti, to više zbog održavanja trenutne instalacija. Onako među nama mogu reći da smo mi već odlučili napraviti naš poseban “fork” 🙂 Ali pssstttt o tome. Mislim da nam je TWiki super poslužio kod projektiranja nekog prototipa onoga što želimo, kod poslagivanja stvari kad nismo ni sami znali što točno želimo. Wikiji super dođu za tako nešto. Ali sad smo već u situaciji da možemo posložiti stvari znatno kvalitetnije a i pomaknuti stvari u neke komercijalnije smjerove.

Što se tiče samog TWikija mislim da je ovo najbolja stvar koja mu se mogla dogoditi. Svi smo mi nekad bili u situaciji kad je jednostavno najbolje reći “doviđenja”. Šteta što je sve ispalo ovako jadno ali barem su forkaši sad nabrijani pa se možda stvari malo i pomaknu. Predugo je TWiki bio težak za instalirati, pun security rupa, nedovršen API, spor, spor, nevjerovatno spor itd…

* http://www.twiki.org/
* http://www.nextwiki.org/

mount /Sljeme prvi put!

Nešto je kilavo bilo krenulo ali se na kraju desio i prvi “mount /Sljeme”. Odaziv autističnih razmjenjivača je bio kao i obično nikakav. Više im se dalo protraćiti subotu u mami ne radeći ništa nego biti vani na svježem zraku i grahu sa kobasicama. Anywho, njihov gubitak. Za koji tjedan idemo ponovo.

Još jedan video iz produkcije binarnog. Ruka se trese kao nikad do sada ali nošenje stativa a i samo snimanje videa mi nije bila primarna zadaća. U svakom slučaju, bio je to jedan super provod.

Moja mala Pišekica


Pisao sam prije o nezgodana koje mi se dešavaju kad sam ljudima prvi u imeniku. Katkada se to čak i isplati…

Evo attachirao sam jednu normalniju i usput ju malo deformisao da se ne prepozna o kome se radi. Moja mala Pišekica mi u zadnje vrijeme šalje MMS-ove iz kreveta. Ne znam kome su orginalno trebale ići ali meni uredno na kraju dođu. Honey, samo ti šalji i dalje!

Kako Aco bira prijatelje

Na oglas o novim prijateljima je bilo različitih reakcija. Od uvrijeđenih poznanika do ideja da je moj stan javna igraonica. U svakom slučaju, kao i svaki majstor i ja volim iskoristiti alate koje svakodnevno koristim da mi olakšaju život. Stvar je dosta modularna tako da se može lako proširivati sa novim Acinim uslovima. Podrška za Profile (Aco je veseo, Aco je depresivan, Snjeg pada vani i Aci je milo) bi svakako dobro došla.

Kroz ovaj priority queue prođu svi.


from heapq import heappush, heappop
import datetime

DOBRO, VALJA, JEBENO  = 0, 1, 2
NECE, HOCE = False, True
MUSKO, ZENSKO = False, True

ACINE_GODINE  = datetime.date.today().year-1976
FAKTOR_GODINA = -20

acin_um = {"vrckast":  lambda val: -2,
           "stan":     lambda val: val == True and -10 or 1,
           "auto":     lambda val: val == True and -5 or 0,
           "star":     lambda val: round(abs(ACINE_GODINE-val)/100.0*FAKTOR_GODINA),
           "wii":      lambda val: val == True and -5 or 0,
           "udan":     lambda val: val == True and 10 or 0,
           "zauzet":   lambda val: 2,
           "spol":     lambda val: val == True and -10 or 0,
           "ima_maca": lambda val: 0,
           "sise":     lambda val: (-2,-5,-10)[val],
           "guza":     lambda val: (-2,-5,-10)[val]
           }

def create_prijatelj(name, **kw):
    return (reduce(lambda a, b: a+b, map(lambda opc: acin_um[opc](kw[opc]) , kw.keys())), name)

potencijalni = []

heappush(potencijalni, create_prijatelj("osoba jedan",
                                        sise    = JEBENO,
                                        guza    = VALJA,
                                        stan    = False,
                                        vrckast = True)
         )

# itd.. itd... itd..

heappush(potencijalni, create_prijatelj("osoba n",
                                        wii     = HOCE,
                                        udan    = True
                                        )
         )

print "* drum roll *"
print "Najbolji kandidat za acinog novog prijatelja je: ", heappop(potencijalni)[1]

Rezultat u pozitivi


Zadnja dva mjeseca na poslu testiramo sustav za evidenciju radnog vremena. Ništa specijalno, kontrola ulaska i izlaska (sa par razlicitih funkcija) i online provjera evidencije i izrada reportova.

Do sada je sustav funkcionirao tako da rano ujutro nabije osam sati minusa (pazeći na standardnu pauzu i poslovne izlaske) i onda lagano odbija vrijeme od toga. Problem je bio što se sustav nije najbolje ponašao a i u bazu nisu redoviti upisivani godišnji odmori i slične stvari. Rezultat toga je bio da bi neki od nas bili i po 40 sati u minusu. Nije to baš najbolji osjećaj kad provučeš karticu i vidiš “-36 sati”. Tako da je zbog poljuljanog morala i negodovanja promjenjena taktika. Od ranog jutra krećeš sa nulom i lagano nabijaš provedene sate u plus. Iz osobnog iskustva moram priznati da je puno bolji osjećaj ispunjenja kad ideš kući i vidiš “+07:30” a ne “-36:21” 🙂

S haktivistima na badmintonu

Kao i obično, Aco Pretnja u prvom dijelu malo laprda a u drugom predstavlja sourceve i slikice. Pa si vi birajte…

Hrvatski dizajn

Bio sam na otvaranju Izložbe hrvatskog dizajna 0708 na Zagrebačkom velesajmu. Napomenuo mi Namčer da će biti neki njegov rad tamo pa sam odlučio navratiti da vidim usput i neke ostale. Ostao sam ugodno iznenađen kad sam sreo Linu koja mi je rekla da je i rad na kojem sam radio s njom tamo izložen. Baš lijepo rekoh si ja.



Sretoh još neke ljude i pričasmo o “životu i svemiru” i kako to obično biva popričasmo i o tom projektu “Sir i vrhnje” koji je tamo izložen. Ono što me svaki put zapanji je da me ljudi ne mogu zamisliti u japi dizajnu (badminton s kolegama sa posla itd) ali i da u isto vrijeme radim na nečemu kao što je “Sir i vrhnje”. Kažu ljudi i ja citiram “iz izloga br. 3 danas biram identitet br. 2. :))” ! Razumljivo mi je sve to, i sam sam se zatekao da razmišljam o tome (pače, čak sam i počeo nešto pisati na tu temu) ali ne vidim zašto je to tako teško shvatljivo.

Zar ta ta jedna obična košulja od par stotina kuna koju obučeš jednog dana na sebe toliko odredi u očima drugih ljudi? Obučeš košulju i to je to…. gospodin Enterprise Replikacija is in the house. Svašta…. Anywho, bez obzira na košuljice radim ja i dalje sve one stvari koje sam radio i prije. Definitivno se zbog nedostatka vremena štedim ali nisam prestao. Ali ok, neki kuže a neki ne kuže zašto se ja bavim tim stvarima i to je tako.

Organizacija podataka

Kako mi religija nalaže da moram uz laprdanje imati i neku tehničku priču evo par rečenica o tome kako je složen materijal u pozadini. Inače site je totalna koma jer se netko prilikom backupa podataka nakon havarije malo igrao sa encodinzima.

Naime, što se organizacije podataka u ovom projektu radi (ne o priči) radi se o 6 zagrebačkih tržnica i bakicama koje dolaze i prodaju sir i vrhnje na njima. Znači 6 tržnica kroz 7 dana u tjednu i neodređenom broju bakica na svakoj toj tržnici. Jedna baba uvijek ide samo na jednu tržnicu i jedna baba uvijek iste dane dolazi na tržnicu. Znači klikneš da određeni dan na određenoj tržnici. Dobiješ popis svih baba koje dolaze taj dan. Odabereš određenu babu i dobiješ sve fotografije, video i zvučne zapise koji postoje o toj babi (nevezano za dan).



Daklem, postojala je ekipa koja je sa opremom išla po tržnicama i pričala sa babama. Došli bi kući i prebacivali bi snimljene materijale na svoje osobno računalo. Prvo su kreirali tih 6 direktorija: “branimirac”, “britanac”, “dolac”, “kvatric”, “tresnjevka” i “utrine”. Onda su kreirali unutar direktorija “branimirac” direktorije za svaku babu koja dolazi na taj (i samo na taj) plac direktorij i tamo snimili sve foto, video i zvučne zapise o njoj. Zvuči jednostavno.

E sad. Ja sam bio mjesec dana na residencu u Novom Sadu kad se ovo radilo i kad sam se vrati uletio sam jer je kao nedostajalo vremena, deadline i te spike. Anywho, netko je nagovorio ekipu koja je ovo slagala da je ovo loš dizajn i da osobno računalo jednostavno ne može na osnovu ovakvog dizajna dobiti informaciju koja baba se nalazi na kojoj tržnici ili dobiti video od pojedine babe. Osobna računala su jako glupa. Tako da je preporučen bolji, ljepši i noviji dizajn.

Nakon što je sigurno par sastanaka potrošeno na specificiranje ovog bisera krenulo se na posao. Naime, netko je trebao svih 4,000 datoteka preimenovati. Marljivi ljudi su pljunuli u šake i tjedan i pol dana poslije sve su datoteke bile preimenovane (pa ti izračunaj svaki dan par sati puta koliko dana jednako koliko kunića i nečijeg dragocjenog vremena). 12 znakova plus ekstenzija. 1000 mogućih kombinacija za šifru babe bezveze potrošeno na nekih sveukupno 20-30 baba. Bespotrebno kopiranje gomile nepotrebnih informacije kroz svih 4000 datoteka. I na kraju ušteda prostora sa ograničavanjem broja datoteka određenog tipa (slika, audio, video) na samo 9. Tko je ikad snimio više od 9 slika uopće. Mislim, o čemu mi pričamo! O postotku greške kod unosa ovako kriptičnih imena na setu od 4,000 datoteka neću ni razmišljati (pogledajte online koliki je neki standardni prosjek unosa krivih podataka). Sve u svemu, Priceless i totalno za http://thedailywtf.com/ ! Ali to je jednostavno bilo nužno, jer tako osobna računala funkcioniraju. Binarno. Neki to ljudi kuže, dok drugi naivno kreiraju direktorij unutar direktorija i tamo stave svoje materijale. Ahh….Amateri!

Počinju “mount /Sljeme” druženja

“mount /Sljeme” su formalna druženja djela Razmjene vještina koji više pazi na svoje zdravlje a nakon dobre fizičke aktivnosti voli se počastiti grahom sa kobasicama. Ako se netko bude raspitivao ako samo naruči grah da li je to grah u kojem je prije toga bila kuhana kobasica koja je naknadno izbačena preporučavamo štrukle!

Ovo druženje tek treba da se desi zato su prijave dobro došle! Za ovo prvo druženje su u igri Maris i Aco (Aco Pretnja, ne Mali Aco koji je isto dobro došao).

Mjesto radnje: Sljeme http://www.sljeme.hr/
Vrijeme radne: neki vikend http://en.wikipedia.org/wiki/Weekend

U privatnom natječaju za naziv Hobbesov prijedlog “mount /Sljeme” je definitivno pobjedio “Sljemeskop”. Hip hip hura!

Više informacija na:
http://wiki.razmjenavjestina.org/razmjenavjestina/index.cgi?po%C4%8Dela_su_mount_sljeme_dru%C5%BEenja
http://wiki.razmjenavjestina.org/razmjenavjestina/index.cgi?mount_sljeme

Aco traži nove prijatelje


Kao što naslov kaže, Aco traži nove prijatelje. U biti, ne želim kompletno zamjeniti svoje postojeće već želim proširiti krug prijatelja kako bih s vremenom mogao zaboraviti na one stare.

Budimo realni, moji postojeći prijatelji su totalni social dead end. Znam, znam, ljudima je čudno da imam vizitku na kojoj kaže “Aleksandar Erkalović, konzultant za information management software” ali imam ja i onu na kojoj piše “Aleksandar Erkalovic, coding boss”. Nije to sad zato što imam ne jednog već dva Maca. Nije to čak ni zato što sam si nabavio uber mali projektor i doma složio mini kino i igraonicu sa Nintendo Wii-em. Nije to čak ni zato što sa svojim japi prijateljima idem na badminton.

Bilo kako bilo, trebaju mi novi prijatelji. Neki kojima ne moram svaki put plaćati piće jer oni nemaju novaca, neki koje ne moram čekati po sat dva da se pojave jer su nezamislivo neodgovorni, neki koji imaju para na telefonu i ne trebaju moju NOKIA E71 samo malo za poruku, neki koji su barem u kasnim dvadesetima… Pa ako znate koga zanimljivog slobodno mi ga preporučite. Naravno, pod uvjetom da bih i ja bio zanimljiv toj osobi (ovo je malo manje važno).

Slobodno navedite kao plus i listu gadgeta koju sam nabrojao.. samoooo pppsssttttt da imam i Sony DCR-SR36 (osim ako se ne koristi kao “e, ima ti Aco baš takvu kameru, trebali bi se vas dvoje naći pa da to sa tvog balkona snimate”)…

Što se traži

Nakon zadnjeg publicity stunta išao sam pogledati kako mi se promjenila statistika pristupa. Jedna od stvari koja mi je zapela za oko su termini koje ljudi koriste na search engineima (oni koji su me došli tražiti i oni koji su slučajno navratili).

Mislim da si moram naći nekog za PR (ili početi nešto konkretno i pisati) ali pretpostavljam da je to normalno kad staviš online oveći popis *exploatation filmova i napišeš članak o biovalovima. Moji favoriti su zboldani.

1. na rubu znanosti
2. što je binarni kod
3. binarni blog
4. što je to binarni kod
5. cristina garavaglia
6. love camp 27
7. nazi love camp 27
8. titicut follies youtube
9. acin binarni site
10. cristina garavaglia
11. hell penitentiary trailer
12. nazi love camp 27
13. rescue: the beagles
14. acin binarni site
15. acine dogodovštine
16. andrea lewis myspace
17. binarni
18. binarni kod
19. binarni satovi slike
20. binarni.net
21. bioenergetičar čakovec
22. biovalovi
23. black alley cats (1974)
24. black alley cats rape
25. cristina garavaglia movies
26. cristina garavaglia video
27. dabi’ dragan
28. dabić dragan
29. dabić na rubu znanosti
30. dr. dragan dabić na rubu znanosti
31. erica gavin youtube
32. evaulirati
33. funny stranice za uređivanje slika
34. gay nabildani
35. geekoskop
36. https://www.binarni.net/content
37. imdb sjaj u ocima
38. informacije o cernu
39. jebeni cern
40. na rubu znanosti krešimir mišak
41. na rubu znanosti razmjena
42. najjebenije priče
43. nazi.love.camp.27
44. password cristina garavaglia
45. raw videos matchevi iz 2008
46. replikacija dbf
47. sagamore stévenin myspace
48. skupljaci perja synopsis
49. stargat
50. tech-savvy prijevod
51. the cement garden
52. tonći kožul
53. tvisted link
54. što je bit
55. što je to binarni kod?
56. binarni prijevod

Goran Zec protiv blogova osovine

Ograda

Znači ovo je samo šala i ja znam da mi Goran neće ništa zamjeriti a za sourceove odskrolajte preko prvih par paragrafa…

Kako je sve počelo

Pojavio se novi super heroj u gradu i kako stvari trenutno stoje to nije “Aco Pretnja”! Postoji neka anketa http://www.galoviceva-jesen.com/blog.asp za najbolji blog (što god). Veseli i razdragani kandidati latili su se svojih web 2.0 social siteova i počeli nagovarati svoje vjerne čitatelje da im podare koji glas. Sad tu stvari postaju malo zanimljivije. Kako je bilo i sa onim srednjoškolskim demonstracijama i ovaj put je facebook napravio sranje!

Kao što se na ovom screenshotu friendfeeda vidi Rusulica je koristeći twitter svojim vjernim subscriberima poslala link gdje mogu za nju glasati. Oni naravno kreću sa klikanjem! Priznajem, i ja sam dao svoj glas. Vjerni sam čitatelj rusuličinih tekstova, subscriber videa na youtubeu i njenog emo streama na last.fm-u. Anywho, Goran kuži…. Goran nije od jučer i on je odmah pokušao u svojem Firefoxu isključiti kolačiće ne bi li podario koji glas više našoj Rusulici. To mu na kraju i uspjeva ali jedna mu stvar upada u oči. Glasovi za Srđana se povećavaju prevelikom brzinom!

Prosječna brzina klikanja

Goran je u tom biznisu dosta dugo i on zna da PBK (prosječna brzina klikanja) ne može biti ovako velika. Kao Power user Firefoxa (koji ima nekih 30-etak pluginova instaliranih na sistemu) on uzima iMacro i zadaje nizove komandi svojem Firefoxu da automatizira sam proces klikanja. Nabija Rusulici dodatnih 1300 bodova….. Ajmo Rusulica!

Izmjerimo mu glavu!

Tko je taj Srđan i kad je on postao osovina blogova (očigledno aludirajući na Bushove osovine zla)? Srki je “gel velike glave” koji honorari za 12 kuna u leglu NGO mafije. Bogu troši dane surfajući na desku, piše blog, chata na silnim IM-ovima, dopisuje se preko Facebooka. Isto kao i Rusulica pozvao je svoje frendove preko Facebooka da glasaju za njega.

A očeš ti glaaaasati za mene

Tu se sad dešava nekoliko stvari. Srki je dok se to sve počelo zahuktavati radio u m.a.m.i. Radio u m.a.m.i. koja je u tom trenutku bila prepuna “gelova” istih kao i on koji su došli na jedno od događanja na “Queer Zagreb” koje se dešavalo u mami. Mnogi od njih poznaju Srkija i mnogi od njih su na njegov nagovor prošetali do kompa i kliknuli jednom za Srkija. Isto tako, Srki je svim svojim online (znači 100 najmanje) prijateljima rekao da glasaju za njega. Sigurno je otišao i na brojne dating siteove da proširi vijest o svojem nebeskom uspjehu sa glasanjem a ne bi se začudio ni da je iskoristio službeni telefon u mami da pozove sve svoje kontakte u adresaru i uputi ih na časni čin glasanja! Pravi aktivizam na djelu. Da se toliko trudio kad su Teu trebali glasovi za “Pravo na grad” ne bi sada bilo radova na cvjetnome.

Što učini!

Uvijek sam ja govorio da će nas pederi doći glave, ali me malo ljudi sluša. U svakom slučaju, Srkijevi discipliniraniji poznanici učinili su svoje. Nekome je taj mali skok u glasovima mogao značiti samo jednu stvar. Neko hakira! Postanje svoje gole ženske guzice na blog je dobar način da ti ljudi prate blog ali katkada i nedovoljan razlog da se toliko okupe oko neke online ankete…. Anywho, Goran je napuco 1300 glasova, onda su drugi koji su skužili njegovu nečasnu rabotu napucali ostalim isto toliko glasova a sad Goran u maniri drugog razreda srednje škole i dalje uvjeren u bjelosvjetsku blog zavjeru napucava Rusulici dodatne tisuće i tisuće glasova….. O Crni Gorane! ŠTO UČINI CRNI GORANE!

Što bi…

Kao netko tko je u svom životu radio ovakve sustave za procesiranje online anketa (i sličnih online stvari) moram priznati da je ovaj problem zaslužio da se o njemu malo kaže riječ dvije.

Recimo da se radi o nagradnoj igri i recimo da je jako bitno da se pokuša napraviti nagradna igra ili nekakvo glasanje što je moguće regularnije. Osloniti se samo na cookije nije dovoljno. Koji god ASP-eaš je radio ovu nagradnu igru koju je Goran unakazio učinio je katastrofalnu grešku. Ok, možda na Internet Exploreru treba klikati po nekim ne toliko dostupnim mjestima u opcijama pa za to ljudi i ne znaju ali isključiti podršku za cookije je brz način za glasanje u nedogled. Napisati kratku skriptu koja će to raditi za vas je još lakše.

Ako se proba napraviti ograničenje “jedan glas == jedan IP” dolazi se do problema “što sa ljudima iz npr. nekog cyber caffea”. Što sa 3 člana obitelji koji bi preko lokalnog internet providera htjeli odvojeno glasati. U našem slučaju bi to značilo da Srki iz maminog cyber caffea (čitaj mjesta gdje honorari) može dobiti samo jedan glas. To definitivno nije dobro. Da sam ja radio
anketu na http://www.galoviceva-jesen.com/blog.asp definitivno bih stavio ograničenje da sa jednog IP-a u određenog vremenskom intervalu može doći određen broj glasova. Znači: glaso si sad pa možeš opet za n minuta ali isto tako ne možeš sa tog IP-a baš da mi glasaš 100 puta u zadnjih m sati. S obzirom da sam i ja honorario u mamu taj mamin IP prema van i glasanje visoko pozicioniranih džabalabatora mi je ostalo u pamćenju 🙂

Naravno, to ovisi i od konkretne situacije. Ako je broj hitova na site 5 u sekundi i svi glasaju za istu stvar više je nego očigledno da netko fakea. Tako da se isplati ograničiti broj glasova za određeni item (sa svim IP-eva). Koliki? Ovisi od konkretne situacije.

Da ja sad moram napraviti neko glasanje osim svega ovoga stavio bih definitivno i jedan Captcha. To definitivno otjera away jeftine pokušaje fakeanja ali na žalost ne štiti ništa od “ako ti je stvarno stalo daš $50 dolara indijcima i oni klikću cijeli dan”.

A kako bih ovo

Da sam se želio baviti ovom rabotom i ovom konkretnom anketom radio bih to ovako. Ovo nije ništa komplicirano i ne zahtjeva neko prčkanje sa Firebugom pa bih zato samo otišao na stranicu i pogledao source. Fino kaže da radi POST methodu na url /anketa/default.asp?act=1&pid=4. Radi se neka nebitna validacija na onSubmit. Postoje tri “radio buttona” koji se zove answer. Moguće vrijednosti su “11”, “12”, “13”. Pogrešno je stavljeno da su svi “checked” što znači u ovom slučaju da je Rusuličin blog automatski selektiran kao defaultni. Pa ako radite svoje ankete pazite da ne radite ovakve greške.

<form name="frmpoll" id="frmpoll" method="post" action="/anketa/default.asp?act=1&pid=4" onsubmit="javascript: return PollVoteFormValidate();"><b>Ocjenite najbolji blog</b><ul id="answers" class="ulist"><li><input name="answer" checked type="radio" value="11" />Garden of Arcane Delights</li><li><input name="answer" checked type="radio" value="12" />Prodaja Ega-Hiperinflacija emocija by "Srdjan Sandic"</li><li><input name="answer" checked type="radio" value="13" />Rusulica</li></ul><input type="submit" class="button" title="glasaj" value="glasaj" /><br/><a href="/anketa/default.asp?pid=4">rezultati</a><br /><br/>glasalo je <strong>10527</strong> osoba<br />glasanje do: <b>10.10.2008</b></form>

Ja nisam haker pa ne bih koristio neke pluginove već bi to zdravo seljački napisao npr. ovako:


wget --no-cookies --post-data 'answer=11' "http://www.galoviceva-jesen.com/anketa/default.asp?act=1&pid=4"

Gornja linija onom trećem blogu koji se ni kriv ni dužan našao ovdje napucava dodatne glasove. Stavite to u neku petlju, pokrenite na nekoliko različitih kompjutera u isto vrijeme i vojla!

Ok.. a sad, što bi bilo kad bi bilo da su ovi npr. kontrolirali da sa jednog IP-a može samo jedan glas ili da može samo n glasova u sat vremena….

Ima nekoliko načina kako se ovo može izvesti ali evo jedan brutalno banalan. Njegova velika prednost je što možete kontrolirati s kojih adresa ćete napadati. Jer ako se radi o glasanju za hrvatski blog godine lako se shvati da 1000 glasova iz Kazahstana pomalo smrdi.

Znači tajna je u anonimnim HTTP proxijima. Odite na google i skinite si neku od aktualnih listi proxija. Nekih 1000 recimo i skopirajte si u ovu skriptu.

import os, random

SERVERI = """218.249.12.133:8080       anonymous proxy Oct-03, 14:49   China
88.191.60.104:3128      anonymous       Oct-03, 14:46   France
... itd itd itd ..."""

LISTA = [x.split("\t")[0] for x in SERVERI.split("\n")]


n = 0
# daj 100 glasova nabij
while n < 100: 
    # daj mi random proxy iz cijele liste
    proxy_server = random.choice(LISTA)

    # slozi wget komandu
    #  - postavi http proxy
    #  - neka snima output u /dev/null
    #  - neka timeouta nakon 10 sekundi
    #  - u slucaju timeouta ne pokusavaj ponovo
    #  - ne koristi cookije
    #  - postaj datea koji daje dodatni glas onom prvom
    #    bezveznom blogu

    wget_command = "http_proxy=\"%s\" wget -O /dev/null --timeout=10 --tries=1 --no-cookies --post-data 'answer=11' \"http://www.galoviceva-jesen.com/anketa/default.asp?act=1&pid=4\" " % proxy_server

    result = os.system(wget_command)

    # brisi sa liste poznatih proxy servera
    # ako je timeoutao
    if result != 0:
        LISTA.remove(proxy_server)
        print "Removing ", proxy_server, " from the list."
    else:
        n += 1

Ne može biti jednostavnije. Ono što se isplati napraviti je npr. pobacati listu ovih proxya u neku sqlite bazu. Jer sad nakon svakog pokretanja on pokušava
sve http proxy-e iz početka. Staviti u bazi, staviti potencijalnu pauzu između svakog slanja, staviti da jedan proxy može koristi svakih n minuta, staviti da različiti procesi mogu (znači pokreneš 100 puta) pristupati tim podacima i eto ti silnih glasova iz svih država naše lijepe Europe.

Jedna od stvari na koju treba obratiti pažnju je nešto što se zove concurrency iliti istodobnost. Vašoj online aplikaciji (recimo glasanje) može u isto vrijeme pristupiti nekoliko korisnika. Ono što treba obratiti pažnju je na sve te resource koji se međusobno shareaju među različitim sessionima. Normalno to i nije veliki problem jer site ima 5 hitova na dan pa se to i ne primjeti ali kad stavite beskonačnu petlju i 5 procesa koji napadaju site u isto vrijeme ako je neki džabalabator pisao skripte (jer skripte se danas copy pasteaju sa weba i tutoriala, to svi znaju) mogli bi njegov mili uradak staviti na muke.

Kao što se vidi na slici, zamislite da u isto vrijeme dvije osobe dođu na web stranice i da glasaju. Skripta za glasanje uzima broj dosadašnjih glasova. Uvećava ga za jedan i sprema u bazu novu vrijednost. Na gornjoj slici vrijednost u bazi bi na kraju trebala biti 7 ali bit će 6. Problemi sa resoursima koji se dijele se pokazuju u zavisnosti od konkretne situacije ali kod web aplikacija to su obično rad s i samim podacima u bazi podataka ili u datotekama na datotečnom sustavu. U našem slučaju se upiše kriva vrijednost ali ono što se isto vrlo lako može desiti su svakojaki exceptioni kod pristupa već otvorenim ili zalokanim resourcima. Pa vi dajte malo vašoj skripti timeouta ne bi li skriptice sa druge strane dobile malo vremena da dišu....

Eto... toliko od Ace Pretnje.