~hruske Hruške, jabuke, jablane, čežane. » slovenija
Home Contact Sitemap

Hruške, jabuke, jablane, čežane.

Ste se gdaj vprašali, zakaj Najboljšega soseda nikoli ni doma, ko pridete na obisk?

Prosti podatki za zabavo: 22. Liffe

Posted on November 2nd, 2011 in dovhcajt, kultura, ljubljana, opendata, python, slovenija |

Prosti podatki so pogosto opevani kot zelo uporabna reč, vendar je očitno, da marsikdo te uporabnosti ne prepozna. Pa poglejmo zakaj so podatki, ki so dostopni v tabelarični obliki, lahko uporabni.

Recimo, da si na primer želimo ogledat kak film na Ljubljanskem mednarodnem filmskem festivalu. Izbire je preveč, zato je nujno narediti selekcijo. Kako to narediti? Ročni način bi bil, da z miško klikaš po seznamu, prebereš opise, morda pogledaš še video in si sproti ustvariš zaznamke. Če se ti da še malenkost bolj potrudit (ali če je opis premalo sporočilen), pogledaš še na IMDB za oceno. Na podlagi teh zaznamkov se potem odločiš za ožji izbor.

Malo manj ročni način je z uporabo računalniškega programa. Program festivala žal ni na voljo v tabelarični obliki, kar pomeni, da bo s pridobivanjem podatkov nekoliko več dela. Podatke je potrebno izvleči iz kode spletne strani.

Za programiranje bom uporabil prost programski jezik Python. Najprej preberimo kodo spletne strani. Da bo program “razumel” kodo, bomo uporabili dodatno knjižnico lxml. Sam sem uporabil Python 2.7 in lxml 2.3.

#!/usr/bin/python

# nalozimo knjiznico
import lxml.html

# naslov, kjer se nahaja program festivala
root = 'http://www.liffe.si/program/abc-seznam/'

# preberimo spletno stran
h = lxml.html.parse(root).getroot()
h.make_links_absolute(root)

Zdaj smo prebrali spletno stran. Ta se nahaja v spremenljivki h. Iz naložene spletne strani je zdaj potrebno dobiti zapise o posameznem filmu. Koda spletne strani ima obliko drevesa. S plezanjem po drevesni strukturi izberemo delčke strani, ki nas zanimajo. Če izberemo vse vrstice, bomo lahko prebrali vse filme.

# ... koda se nadaljuje od zgoraj

# zanimajo nas zapisi v tabeli filmov
# s spodnjim ukazom poiščemo vrstice (tr) znotraj tabele (table),
# ki se nahaja znotraj obrazca (form), katerega atribut "id" je "pluginAppForm"
trs = h.xpath('//form[@id="pluginAppForm"]//table/tr')

# seznam za shranjevanje zapisov
filmi = []

# sprehodimo se po vseh vrsticah
for tr in trs:
	# znotraj vrstice tr izberemo polja
	tds = tr.xpath('.//td')
	
	# iz vsakega polja poberemo besedilo
	teksti = []
	for c in tds:
		teksti = teksti + c.xpath('.//text()')
	
	# ker so v nekaterih vrsticah črte med črkami abecede,
	# je potrebno te vrstice ignorirati, kar naredimo tu
	if len(teksti) != 6:
		continue
	
	# izpisimo informacije, ki jih imamo sedaj
	print teksti
	
	# dodajmo informacije o filmu v seznam filmov
	filmi.append(teksti)

Datoteka: liffe1.py

Zdaj smo uspeli prebrati kar nekaj informacij o filmih, ki se bodo na festivalu predvajali. Slovenski naslov, naslov v izvirniku, država in leto, režiserja, jezik in kategorijo, v katero je na festivalu umeščen.

Ker bi želeli to prebrati kot preglednico, se nam splača to shraniti v zapis, ki ga bo prebavil Calc ali Excel. Najenostavnejši je CSV oz. z vejico ločena polja.

# informacije o filmih so shranjene v spremenljivki "filmi"

# nalozimo modul csv
import csv

# odprimo novo datoteko liffe22.csv, v katero bomo podatke shranili
wr = csv.writer(open('liffe22.csv','w'))

# vpisimo naslove stolpcev
wr.writerow(['Naslov', 'Originalni naslov', 'Drzava, Leto', 'Rezija', 'Jezik', 'Kategorija'])

# vsak film vpisemo v datoteko
for f in filmi:
	polja = []
	for p in f:
		polja.append(p.encode('utf-8'))
	wr.writerow(polja)

Datoteka: liffe2.py

Če sedaj datoteko liffe22.csv odpremo z Excelom oz. Calcom, bomo videli nekaj podobnega spodnji sliki:

Z uporabo preglednice lahko potem izvajamo bolj zanimive stvari, npr. filtriramo. Najprej uporabimo AutoFilter:

Če sedaj označimo, da želimo pregledati le perspektive, potem vidimo nekaj podobnega:

Če želimo pregledovati po letniku filma, pa naletimo na težavo, saj je leto združeno z državo. Zato moramo naš program malo popraviti:

...

	if len(teksti) != 6:
		continue
	
	# locimo drzavo in leto v dve polji
	drzava_leto = teksti[2].rsplit(', ', 1)
	
	# vkomponiramo novi polji
	teksti = teksti[:2] + drzava_leto + teksti[3:]
	
	# izpisimo informacije, ki jih imamo sedaj
	print teksti

...

# vpisimo naslove stolpcev
wr.writerow(['Naslov', 'Originalni naslov', 'Drzava', 'Leto', 'Rezija', 'Jezik', 'Kategorija'])
...

Datoteka: liffe3.py

Skoraj perfektno, sedaj lahko filtriramo tudi po letu izida.

Sedaj imamo podatke v tabelarični obliki v zapisu, ki ga lahko uporabimo, da podatke obogatimo še s čim drugim… na primer s podatki, ki so v IMDB. IMDB ima v bazi povprečje ocen filma, ki so jih filmu prisodili uporabniki, kar je včasih kar dober indikator. Dodajmo še to:

# nalozimo knjiznice
import lxml.html
import json
import urllib

...

	# locimo drzavo in leto v dve polji
	drzava_leto = teksti[2].rsplit(', ', 1)
	
	# dodajmo še ocene in žanr iz IMDB
	# sestavimo url
	orig_naslov = urllib.quote(unicode(teksti[1]).encode('utf-8'))
	url = 'http://www.imdbapi.com/?t=%s&y=%s' % (orig_naslov, drzava_leto[1])
	
	# prenesimo url
	imdb_text = urllib.urlopen(url).read()
	
	# nalozimo zapis v program
	imdb = json.loads(imdb_text)
	
	# preberemo oceno
	imdb_ocena = imdb.get('Rating', '')
	imdb_zanr = imdb.get('Genre', '')
	
	# vkomponiramo nova polja
	teksti = teksti[:2] + drzava_leto + teksti[3:] + [imdb_ocena, imdb_zanr]

...

wr.writerow(['Naslov', 'Originalni naslov', 'Drzava', 'Leto', 'Rezija', 'Jezik', 'Kategorija', 'IMDB ocena', 'IMDB zanr'])

...

Datoteki: liffe4.py in life22.csv

Tako dobljeno CSV datoteko zdaj ponovno odpremo s Calcom oz. Excelom, ponovno uporabimo AutoFilter in podatke posortiramo padajoče po IMDB oceni (Data -> Sort). Tako dobimo dobro informacijo če je določen film vreden ogleda ali vsi pred njim bežijo.

Seveda teh ocen ni nujno upoštevat. Liffe je super priložnost, da si človek ogleda kak tretji film, ki ga brez festivala sploh ne bi opazil.

Komentarji so izklopljeni

Avtoprevozniški hlapci

Posted on Avgust 13th, 2011 in kultura, mediji, slovenija |

Mediji v Sloveniji so v žalostnem stanju. Nad njimi se lahko pritoži marsikdo in poznam ljudi, ki so mi priznali, da so zaradi nekakovosti že prenehali brati slovenske medije. Popolnoma jih razumem, in zdaj vam bom razložil zakaj.

Preden se postavite v bran medijem, naj vam povem, da mi je jasno, da obstaja kvazipluralnost na politični sferi; Reporter bo objavil (pozitivističen) intervju z Janšo in Urško, Mladina pa bo objavila pomirjujoč članek o dolgu, ki ga je uspela Pahorjeva vlada pridelat. Obe reviji pa sta približno enako populistični in navijaški do svoje strani. Toda tu ni govora o politiki, ampak o izsiljevanju avtoprevoznikov z grožnjo zapore predora skozi Karavanke, o Darsovi nesposobnosti komunikacije z javnostjo in o nesposobnosti medijev, da objektivno poročajo.

DARS in avstrijski upravljalec avtocest ASFINAG sta se že junija lani družno dogovorila, da bosta letošnje poletje na podlagi analize strokovnjakov med poletnimi vikendi Karavanški predor zaprla za tovorni promet. Smiselno. Tunel je dvopasovnica in zato ozko grlo. Prepušča zgolj omejeno število avtomobilov in če lahko ob poletnih vikendih povečamo varnost in pretočnost za trume turistov s tem, da prepovejo promet za tovorna vozila je odločitev zelo enostavna: prepovejmo tovorni promet.

Zalomilo se je, ko bi moral DARS obvestiti slovensko javnost o tej skupni odločitvi. Ker tega očitno ni bil zmožen storiti (Zakaj ne?) so se avtoprevozniki ob nepričakovani novici odločili, da bodo za talca vzeli državo in tuje turiste. Z grožnjo zapore predora so na DARSu izsilili, da so odgovorni stisnili rep med noge in niti pomislili niso, da bi naglas rekli, da je bila zapora del skupnega dogovora z ASFINAGom. Šli so še naprej in prometnega ministra prisilili, da posreduje. Prometni minister se žal ni postavil po robu avtoprevoznikom, ampak je pojasnilo zahteval od — ASFINAGa. Zaplet se nadaljuje tako, da sta se sestala slovenski minister za promet in avstrijska ministrica za promet, ki pa se nista uspela dogovoriti za izsiljevalcem sprejemljive pogoje. Tu se ne konča, napovedan je še sestanek med slovenskim predsednikom vlade in avstrijskim kanclerjem.

Povzetek: nekdo na nižjem nivoju naredi napako, nastali spor pa rešujemo na meddržavnem nivoju.

Iz reševanja tega problema se lahko zelo veliko naučimo:

1. Nič ni čudnega na tem, da Slovenija ne zaseda mest evropskih veleposlanikov. Ne samo da ne znamo sami korektno reševati svojih težav, pogajamo se teroristom v prid in odgovornost prelagamo celo na sosednje države.

2. Medijsko pokrivanje te razmeroma enostavne zgodbe je nadvse “politično korektno” oz. medijsko enoumno. “Objektivno” poročanje je za medije poročanje dejstev kakor jim jih predstavijo udeleženci in ne poročanje dejstev, kakršna v ozadju zares so: da so avtoprevozniki nerazumni in izsiljujejo na škodo varnosti ostalih udeležencev prometa. Naslovi so “objektivizmu” primerno zelo medli, izjeme pa preveč redke in obrobne.

3. Dokler bodo novinarji in uredniki tako površno opravljali svoje delo, se bo Slovenija še zelo dolgo vrtela v krogu. Tisti, ki bi za to napako morali odgovarjati — vodstvo DARS in zaradi napačnega ukrepanja tudi minister — ne bodo, nastradamo pa vsi ostali.



Požar v tunelu Mont Blanc

Požar leta 1999 v Tunelu Mont Blanc

Zgornja slika (vir: AP) prikazuje jedro pogorišča po požaru marca leta 1999 v tunelu Mont Blanc. Ogenj je zajel tovornjak z moko in margarino, požar pa je gorel tri dni, vzel 41 življenj in zaprl tunel za tri leta. Prve reševalce je gost dim tako presenetil, da so se morali zateči v zaklonišče, nesreča pa je sprožila nove raziskave o požarih v tunelih. O nesreči so posneli tudi dokumentarec. Ali bo DARS res počakal na hudo nesrečo, preden se bo zmigal in začel resno obravnavati Karavanški tunel?

Komentarji so izklopljeni

Ne tolerirajte, da vam pijanci narekujejo dejanja

Posted on Junij 28th, 2011 in kultura, slovenija |

Poglejmo neko novico o sodnem postopku, do katerega je prišlo zaradi prometne nesreče. Novica kar kipi od absurdnosti.

Celje – Na celjskem okrožnem sodišču se je začelo sojenje 23-letnemu Ž. B. iz Celja, ki ga obtožnica bremeni kaznivega dejanja predrzne vožnje in opustitve pomoči poškodovancu v prometni nesreči.

Mladi voznik je “predrzno vozil”, povzročil nesrečo in ni pomagal poškodovani osebi (oz. je odpeljal s kraja dogodka).

Prometna nesreča se je zgodila 27. novembra 2008 ob 14. uri na križišču Mariborske ceste in Podjavorškove ulice v Celju. Ž. B. je takrat pijan (imel je več kot dva grama alkohola na kilogram krvi) na prehodu za pešce zbil peško, ki je šla čez cesto pri zeleni luči.

Nesreča se je zgodila v četrtek ob 14h, sredi belega dneva. Obtoženi je bil dokazano zelo močno pijan in v prekršku, saj je imela peška zeleno luč.

Po trčenju jo je vrglo na vetrobransko steklo, nato pa še na streho vozila. Voznik jo je še nekaj časa peljal na strehi vozila, nato pa na Podjavorškovi ulici izstopil in odšel s kraja nesreče, ne da bi pomagal ponesrečenki.

Peško je vrglo na vetrobransko steklo, potem pa še na streho. Kar pomeni, da voznik ni niti poskušal ustaviti. Za nameček je še odkorakal stran od poškodovanke.

Obtoženi Ž. B. ki se je v preiskavi branil z molkom, je na glavni obravnavi pojasnil, da se ničesar ne spomni od tega dne, saj so od prejšnjega večera praznili kozarce, in da tudi sicer v družbi rad pije.

Obtoženi se brani z molkom. Brani?! Še kdo pozna pregovor, da se tisti, ki molči, strinja? Tudi sicer ne razumem kako naj bi bilo katero koli od navedenih dejstev – 1) da se ničesar ne spomni (iz česar naj verjetno sklepam, da naj bi bil tako pijan?), 2) da je do druge ure popoldan (sic!) “praznil kozarce”, 3) da rad pije in 4) da si je po vsem tem še upal sesti za volan – sploh kakršna koli olajševalna okoliščina.

Povedal je še, da se oškodovanki opravičuje in da zdaj, kadar pije, ne sede več za volan. Zaradi povzročitve omenjene nesreče je bil tudi ob vozniško dovoljenje, a je vozniški izpit spet opravil.

Dodamo naj še, da je bil obtoženec že trikrat pravnomočno kaznovan pri sodniku za prekrške zaradi vožnje pod vplivom alkohola.

Človeku je v Sloveniji uspelo trikrat priti do pravnomočne kazni zgolj zaradi vožnje pod vplivom alkohola. Koliko krat se je policiji izognil? Koliko krat ga je policija oglobila ali opozorila zaradi drugega prometnega prekrška? In država se kljub vsemu odloči, da takemu človeku dovoli ponovno opravljanje vozniškega izpita.

D. H. je pojasnila, da je prehod za pešce prečkala pri zeleni luči, v trčenju pa je utrpela več zlomov golenice in drugih poškodb. Povedala je, da je bila ves čas pri zavesti in da se spominja dveh moških glasov iz vozila.

Dodala je še, da jo je naslednji dan v bolnišnici obiskal obtožencev oče. Povedal ji je, da ima sin težave z alkoholom in da bi se ji rad sam opravičil. A oškodovanka ni hotela, da jo obišče.

Sine ima problem. Lasten oče ga ima za neodgovornega pijanca. Iz vsega prebranega to očitno tudi je. Trikrat je bil oglobljen zaradi vinjene vožnje (vprašanje kolikokrat se je policiji uspel izogniti), iz česar lahko sklepamo, da je pijanec. Neodgovoren, saj je prevzel volan (in s tem odgovornost za svoja dejanja na cesti), zdaj pa se odgovornosti za povzročitev nesreče poskuša izogniti.

Izvedenec sodnomedicinske stroke dr. Borut Štefanič je v svojem mnenju, ki so ga na sodišču prebrali, zapisal, da je bila oškodovanka huje poškodovana, njeno življenje pa ni bilo ogroženo.

Glede količine popitega alkohola je menil, da obtoženec absolutno ni bil zmožen za vožnjo. Senat je nato ugodil zahtevi obrambe, da se do nadaljevanja obravnave v drugi polovici avgusta angažira izvedenec psihiatrične stroke.

Ta bo ugotavljal, ali je bil obtoženec zaradi vožnje pod vplivom alkohola med vožnjo neprišteven ali bistveno manj prišteven.

Konec novice.

Sodni izvedenec obravnava obe strani, tožilčevo in obtoženčevo. Sodni senat pa ugodi zadevi obrambe, ki hoče pokazati, da je bil obtoženec neprišteven. Prosim? Seveda je bil kognitivno nesposoben, če pa je imel 2 promila alkohola v krvi. A sodni senat je pravzaprav zgrešil bistvo, ki ni ugotavljanje (ne)prištevnosti, ampak gre za vprašanje, čemu je večkratno pravnomočno kaznovan pijanec sploh sedel za volan. Kako je uspel ponovno pridobiti vozniški izpit, čeprav je jasno dokazal:

  • da redno vozi pijan (trikratno pravnomočno kaznovan pri sodniku za prekrške),
  • se je na sodišču izrekel, da “tudi sicer v družbi rad pije” in
  • celo njegov lasten oče verjame, da je pijanec (“ima probleme z alkoholom”).

Če je tu kaj neprištevnega, so to odločitve državnih organov, ki so mu dovolili, da ponovno opravi vozniški izpit in ki hkrati obtoženemu dovolijo, da se brani z neprištevnostjo.

Žrtve prometnih nesreč pa medtem umirajo, se vsedajo na invalidski voziček ali zaradi večkratnega zloma golenice do konca življenja šepajo in podoživljajo usodne trenutke vsakič, ko spet pridejo v podobno nevarno situacijo, kot je nedolžen prehod čez cesto.

Samo zato ker “vsakdo včasih malo spije in sede za volan” še ne pomeni, da je vožnja pod vplivom alkohola tudi pravilna odločitev. In tu, dragi slovenci, se tako država kot tudi posamezniki v Sloveniji izkažejo kot zelo zelo zelo slab vzor. Po eni strani država javno podpira akcije kot je “0,0 šofer”, po drugi strani pa institucije birokratsko ignorirajo težavo, se delajo da je ni in niti ne poskušajo bolje spoznati ali gre za težavo velikosti slona ali domačega goveda.

Posamezniki pa mirno tolerirajo pijance okrog sebe, se norčujejo iz njih in še sami spijejo kak kozarček, da “se lažje družijo” ter vseskozi vztrajno podcenjujejo problem, dokler ne pride do meje, kjer resnično ni več poti navzgor… takrat pa od pijanca pričakujejo, da se bo začel obnašati odgovorno. Malo pozno, ne?

Ne tolerirajte, da vam pijanci narekujejo dejanja.

Kolesarska zmaga: Bicike(LJ) in Android aplikacija

Posted on Maj 30th, 2011 in ljubljana, slovenija, zanimivosti |

Bicikelj je za kolesarje najboljša možna zmaga. S postavitvijo sistema za izposojo koles je mestna uprava končno kolo in kolesarje priznala kot pomemben del mestnega živeža.

Nasprotniki “razsipanja denarja” pravijo, da bi za 1,8 milijona evrov, kolikor je vreden posel postavitve sistema izposoje koles, lahko nakupili veliko več koles, pa vendar pozabljajo na eno zelo pomembno dejstvo: za kolo je potrebno skrbeti, mu zagotoviti streho, skrbeti, da je vedno primerno zaklenjen, da so zračnice primerno napolnjene, da zavore delujejo, občasno pa ga je potrebno tudi naoljiti. Shranjevanje kolesa zahteva kolesarnico, rizičen priklep na ograjo ali pa nošenje kolesa v stanovanje, kar pa tudi ni vedno možno.

Alternativa, vsaj za prvo izkušnjo mestne vožnje s kolesom, je izposoja, kjer odpadejo skoraj vse skrbi. Potrebno je le imeti dovolj sreče, da je ciljna postaja prosta, ko do nje prispete. Da ne boste neprijetno presenečeni, si lahko pomagate z Android aplikacijo, s katero pogledate zasedenost postaj. Aplikacijo je naredil Jernej Virag, malenkostno pa sem mu pomagal tudi sam.

Razmeroma enostavna vaja za ekonomiste bi bilo ekonomsko oceniti vrednost nizkega vstopnega praga za preizkus in uporabo kolesa, ki ga je uvedel BicikeLJ in to vrednost primerjati s ceno navadnih koles, ki bi jih kupili z vrednostjo celotnega zneska projekta, in predvideti kdaj se tehtnica prevesi. To bi bila zanimiva diploma ali seminarska naloga.

Še največji pomislek pri tej zmagi pa je zasebnost, saj naj bi bilo potrebno Europlakatu, ki je oglaševalska agencija, zaupati kup osebnih podatkov.

Zakaj mora vsak operater kakršnega koli omrežja javno objaviti pregled nad stanjem omrežja

Posted on Maj 18th, 2011 in opendata, slovenija |

Na Twitru se je razvila debata o Simobilovem občasnem nedelovanju omrežja, ki je za Simobilove uporabnike razmeroma znan pojav. Nikjer pa nisem mogel pogledati če je prišlo do napake na omrežju ali gre za vzdrževalna dela. Takih informacij na spletni strani Simobila ne boste našli.

Si predstavljate kaj bi se zgodilo, če bi vam elektro naenkrat nenapovedano izklopil elektriko? Ali pa ko sredi britja nenapovedano preneha teči voda in moraš uporabiti kreativne ideje, da lahko dokončaš svoje delo? Ljudje so sprva tečni, če pa se to dogaja pogost, pa se prilagodijo na nezanesljivost in si poiščejo ali ustvarijo alternative – zbiranje deževnice namesto vodovoda, baterijska svetilka za razsvetljavo v primeru odsotnosti elektrike in Vox.io v primeru nedelovanja operaterja mobilnega omrežja.

No, nekateri bodo želeli argumentirati, da je z vodovodom in elektriko drugače, da sta “nujno potrebna za življenje”. Prosim lepo, kako pa so živeli pred 200 leti, ko je bila elektrika zgolj nek čuden pojav, s katerim so se ukvarjali trije ljudje na svetu, in ko so po vodo hodili v vaške vodnjake? In ko se nekaj pripeti in moraš nujno opraviti telefonski klic, je lahko mobilni operater ravno tako nujno potreben za življenje. Ko me operater izda, bom tečen. Niti ne toliko zaradi tega, ker stvar tisti trenutek ne deluje, ampak predvsem zato, ker dobro vem, da se to stalno ponavlja in da je zadevo možno izpeljati bolj kvalitetno.

Pregledna in redno osvežena spletna stran s stanjem omrežja je prvi korak do izboljšanja. Uporabniki se privadijo, da lahko kadarkoli sami preverijo stanje omrežja, brez da bi morali čakati na telefonski liniji centra za pomoč uporabnikom in poslušati muziko, ki si je niso sami izbrali. Operater pa živi v strahu in bolečini, da mora javno objaviti nenapovedan izpad omrežja, skupaj s podrobnostmi kot so čas izpada, razlogi in trenutnim napredovanjem odprave izpada.

Ampak, dragi Simobil, to je bolečina, s katero podjetje zunanjo neprijetnost (nezadovoljstvo uporabnikov in nekvalitetna storitev) preslika v notranjo (javna osramotitev oz. uradno priznanje nesposobnosti), kar pa pomeni, da boste končno imeli motivacijo popraviti sedanje stanje. In končno bo lahko tudi navaden smrtnik izračunal kako zanesljiv ponudnik zares ste.

Javna skrivnost je, da je Simobilovo omrežje dokaj … “šibko”. Novost zame pa je, da morda (ali pa ne) ob 10h dopoldan izvajajo vzdrževalna dela, kar bi bilo sila nespametno početje. Vsekakor pa zadolženi za komunikacijo na Twittru ne deli bolečine z mano, ko pravi, da je “Vsake toliko je to [=dela na bazni postaji] potrebno. ;) ”.

Naj šramfajo in tipkajo ponoči, če ponujajo infrastrukturno storitev, sicer ima da dela.