Ovaj puta Dobrica Pavlinušić i Ivan Voras razgovaraju o raznim NoSQL bazama i lamentiraju o tome da li je došao kraj relacijskim bazama.
download mp3
| Informatizacija, Rashodi za nabavu neproizvedene imovine | |
U četvrtoj epizodi razgovora o slobodnom softveru Dobrica Pavlinušić, Ivan Voras, Tonimir Kišasondi i Vlatko Košturjak razgovaraju o SSL-u, CA certifikata, DNSsec-a i srodnim temama.
download mp3
Mislili ste da smo u zadnjem podcastu o Androidu zaboravili spomenuti razvoj? Nismo, ovaj put Dobrica Pavlinušić, Nikola Kapraljevic, Vedran Rodić i Vlatko Košturjak razgovaraju samo o tome!
I ne samo to! Ako vam je 25 USD problem za objavu Vaše Android aplikacije pod OSI licencom na marketu, pošaljite je na android@linux.hr i HULK će je objaviti!
Of course it does, it's get and post requests which your browser does to server. And if you need to modify in bulk records in your web application (Koha in our example) you might wonder about writing a script which does job for you.
It's not really hard. WWW::Mechanize provides us with web browser scriptable in perl and following scripts logs in into Koha's interanet and edit items specified in file:
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
use Data::Dump qw(dump);
# we will use %d and %s to insert values from file
my $url_template = 'https://localhost:8443/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=%d';
our ( $user, $passwd );
require 'config.pl'; # edit $user and $password in config.pl file
my $login_url = 'https://localhost:8443'; # Koha intranet
my $mech = WWW::Mechanize->new( autocheck => 1 );
warn "# login $login_url\n";
$mech->get( $login_url );
$mech->submit_form(
fields => {
userid => $user,
password => $passwd,
},
);
sub modify_field; # declare later
while( ) {
chomp;
my @v = split(/\s+/,$_);
warn " ",dump(@v),$/;
my $url = sprintf $url_template, @v;
warn "# url $url\n";
$mech->get( $url );
my $form = $mech->form_number( 1 ); # XXX 1st form
# XXX edit fields
modify_field $form => 'tag_008_subfield_00' => sub { s/^(.{24}).(.+)/$1d$2/ };
$mech->submit;
}
exit;
# magic to find field name by partial match from beginning
sub modify_field {
my ( $form, $field, $coderef ) = @_;
my @inputs = $form->inputs;
my ( $name, $value ) = map { $_->name, $_->value } grep { defined $_->name && $_->name =~ /^\Q$field\E/ } $form->inputs;
die "can't find $field in ", $mech->dump_forms unless $name && $value;
$_ = $value; $coderef->($value);
my $new = $_;
if ( $value eq $new ) {
warn "WARNING: $name not changed [$value]\n" if $value eq $new;
return;
}
warn "$name\n\tOLD: $value\n\tNEW: $new\n";
$mech->field( $name, $new );
}
Interesting part is modify_field which tries to find field with specified prefix, since Koha adds unique numbers to all field names in edit form.
This script proved to be very useful for us, and hopefully it might be useful for other users of Koha also.
As you know by now, I'm working pure free software implementation of RFID support for our library. This time, I decided to tackle problem of printing RFID cards using EVOLIS Dualys printer.
This is experimental support for EVOLIS Dualys 3 printer with black ribbon (K) to provide pixel-exact driver with support for two-side printing.
Existing cups driver is available at
http://www.evolis.com/eng/Drivers-Support/Product-support/Dualys-3
but I haven't been able to make it print on both sides of cards,
partly because using dumplex option in cups seems to segfault GhostScript
and/or rastertoevolis cups filter depending on combination of duplex
options.
I also needed pixel perfect transfer to printer, and cups bitmap format is always in color, leaving final pixel modifications down to cups filter which always produced differences between file sent to printer and perfect black and white rendition of it.
Current toolset consists of following scripts:
Generate pdf files from Inkscape SVG template in card/ using
print-front and print-back object IDs. Layers doesn't work
since we can't toggle visilbity easily. To print more than one
object gruop them and change ID of group.
After pdf files are created, GhostScript is used to rasterize them into pbm (monochrome) bitmaps.
Provides driver which generates printer command stream to print two-sided card from pbm files.
Simulator for EVOLIS printer commands which is useful for development. It creates one pbm file per page printed.
Command-line interface to send commands to printer and receive responses. Supports readline for editing and history. Requires local parallel port connection, probably to USB parallel device.
Following is simple walk-through from svg image in Inkscape to evolis command stream which can be executed in top-level directory of this distribution:
./scripts/inkscape-render.pl card/ffzg-2010.svg 201008159999 Ime Prezime ./scripts/evolis-driver.pl out/201008159999.front.pbm out/201008159999.back.pbm > evolis ./scripts/evolis-simulator.pl evolis qiv evolis*.pbm
ssh -D 12345 moj.remote.hostsa network.proxy.socks_remote_dns u Firefoxu
sshfs login@moj.remote.host:/remote_path/ /local/path/
Dobrica Pavlinušić razgovara sa Ivanom Vorasom o stemmingu u hrvatskom jeziku i implementaciji za PostgreSQL tsearch2 pretraživač teksta.
download mp3U ovom podcastu spominjemo PostgreSQL tsearch2 modul za hrvatski jezik i članak Retrieving Information in Croatian: building a simple and effcient rule-based stemmer.
Muzička podloga: Painted Dream by The Dada Weatherman
Bez obzira na pokušaje nametanja drugih ‘naprednih’ tehnologija, klasični HTML uz pomoć JavaScripta pretvara preglednike u glavnu aplikacijsku platformu. JavaScript tako postaje sveprisutan i uskoro neće biti developera koji razvija aplikacije namijenjene krajnjim korisicima, a da neće barem dio koda pisati u tom jeziku. Kao i kod svake promjene tehnologije tako i ova platforma pati od dječjih bolesti, a developere oduševljavaju stvari koje su na drugim platformama već odavno prerasli.
Dobar primjer za to je JavaScript demo scena. Pogledajte “Or so they say…” demo (preporučeno je korištenje Chrome ili Chromium preglednika). To je impresivno za JavaScript, ali kod nekih drugih platformaša bi moglo izazvati podsmijeh. Naravno samo kod onih koji su zaboravili kako su prvi koraci izledali na njihovoj platformi. (Autor uratka je Mr.doob, a kod njega ima i još zanimljivih stvari. Npr. Water Type, Water, Rotozoomer… )
U tijeku je natjecanje JS1k za fancy pancy JavaScript demo do veličine 1024 bajtova izvornog koda. Neki od bolji su tunel, fire cube, Luminous, 3d function ploter…
Steven Wittens je jedan od sudionika spomenutog natjecanja, a zanimljiv je zbog toga što je opisao nastajanje svojeg demo uratka.
10K Apart omogućava 10 puta veću slobodu od JS1k projekta pa su uratci sadržajniji. Ima onih koji bi se moglo svesti na demo, ali ima i kompletnih malih aplikacija. Lines je zanimljva igra, Notes, TaskForce i Checklist su male aplikacije za produktivnost. Posao je uvelike olakšan jer dozvoljeno korištenje jQuery, Prototype i Typekit biblioteka i ne zbraja se njihova veličina.
Na suprotnoj strani od JS1k projekta je natječaj kojeg organiziraju Tuts+ i CodeCanyon. Njih ne zanimaju demo majstore već konkretne aplikacije, bazirane na HTML5 tehnologijama, koje bi se mogle naći u ponudi njihovog dućana u HTML5 Apps kategoriji. Osigurane su nagrade u vrijednosti od $7000.
I had some money to spare recently, and I decided to buy some good
technical books. Actually I went out to find some great books, and not
so much with an agenda to learn from them but more to be used as
reference for years to come.
First book I settled on was
the Principles
of Network and System Administration by Mark
Burgess. Last edition is from 2003 but this book is still
excellent and unique in many ways. It is one of the only (if not the
only) book approaching the topic of systems administration from a
scientific standpoint, treating it as a branch of engineering. Book on
principles, best practice, ethics, users and management of the
human-computer systems. At times it seems perhaps too academic in its
approach in respect to business environments where something is always
going wrong (Murphy is out to get you) and is often hard to maintain
levels of operation this book advocates. Still it's something every
good sysadmin should aspire to, I enjoyed re-reading it and it's just
the kind of book I had in mind.
It felt kind of karmic that the fourth, 20th year anniversary, edition
of
the Unix
and Linux System Administration Handbook was released these
days. This series of books (previously UNIX and Linux treated
separately) by Evi Nemeth (and others) is well known, and I
just had to buy this edition. It is very much different than the book
above, a 1300 pages volume filled with practical matters including
real world experiences of its authors. The foreword says it is not one
of those "administration" books targeting users who run a UNIX system
in their garage. It's rather oriented towards running UNIX in the
enterprise. This revised edition covers AIX, HP-UX, Solaris,
RedHat, SuSE and Ubuntu, and as usual dedicates a large
part of the book to networking. It could be worth to you to know that
it also includes chapters on topics like DNSSEC and
virtualization (being that the 3rd edition was released back in 2000).
Korisnici iPhone-a su oduševljeni što je za jailbreak potrebno odsurfati na stranicu jailbreakme.com i napraviti jedan slide. Nakon im možda neće raditi MMS, ali navodno se može instalirati zamjenska aplikacija s Cydiae.
Svi zadovoljno cvkruću, kao da nitko ne shvaća da je to zapravo veliki sigurnosni propust. Propust se nalazi u komponenti za prikaz .pdf datoteka ( Safari samo omogućava da se .pdf datoteka učita i nije propust u njemu ). Super jednostavan jailbreak je zapravo jedna super velika rupa. Ovaj put je bila iskorištena za popularan iPhone sport, ali isto tako se može iskoristiti za bilo kakvu drugu malicioznu operaciju.
Umjesto da su sretni i zadovoljni iPhone korisnici bi trebali biti zabrinuti, vrlo zabrinuti. Da li će Apple problem riješiti brzom zakrpom ili će početi prodavati Apple certifikat za web stranice koji će garantirati da one neće naštetiti vašem uređaju? I kao što su naučili držati iPhone na drugačiji način tako će korisnici naučiti da se surfa samo na sigurnim, certificiranim web valovima.
P.S. pdf datoteke koje iskorištavaju propust i služe za jailbreak nalaze se u direktoriju /_/ navedene web stranice.
linuxzasve je istvitao link na članak Ten outstanding cross-platform apps. Kao i većina članaka te vrste izbor je poprilično ziheraški i povodljiv. Uzimaju se neke default aplikacija iako možda i nisu najbolje. Ovo je moj odgovor na taj članak s alternativnim naslovima.
OpenOffice je spor i nije baš nešto. Kad govorimo o obradi teksta onda je bolji izbor AbiWord. Posjeduje sve potrebne osnovne funkcionalnosti i još nešto što veliki igrači nemaju: AbiCollab plugin koji omogućava zajedničko editiranje jednog teskta.
Gnumeric je tablična računaljka i za njega vrijedi slična ocjena kao i za AbiWord, manji je i brži od konkurencije. Ono u čemu je bolji od velikih konkurenata je import csv datoteka.
Inkscape je alat za vektorsko crtanje. Kako je njegov prirodni format .SVG zacijelo će ga sve više ljudi koristiti kako bude SVG uzimao maha. Niste profić i trebate povremeno napraviti neki vektorski crtež? Ne treba vam ništa više od Inkscapea.
O Scribusu sam pisao od njegovih prvih dana i u međuvremenu se ravio u ozbiljan DTP (Desktop Publishing) alat. Ono što je zanimljivo kod njega je da postoji i OS/2 Warp 4/eComStation port. Njega koriste i profići, a knjiga napravljena uz pomoć njega je 2009. u Belgiji osvojila nagradu kao najbolje dizajnirana u kategoriji non-fiction.
Gramps je aplikacija za one koji vole izrađivati obiteljska stabla. Neki ljudi za to koriste iskrekirana komercijalna rješenja koja su ružnija i s manje mogućnosti, čisto zbog navike i zbog toga jer drugi to isto koriste. Eh to proklestvo navike i povodljivosti…
calibre sam nedavno spominjao, ali kako se elektronički čitači knjiga sve više koriste tako će sve više ljudi imati potrebu za jednom ovakvom aplikacijom. Hvale se da je to one stop solution to all Your e-book needs.
Umjesto Apache web poslužitelja možete uzeti nginx. Od tih malih web poslužitelja on mi je najbolji, i nemojte da vas preplaši oznaka 0.7.67 za trenutnu stabilnu inačicu. U open source svijetu ima puno primjera gdje su projekti s oznakom manjom od 1.0 bili itekako dobri i stabilni.
Banshee nije baš omiljen kod sastavljača distribucija zbog toga jer se provodi tihi bojkot stvari napisanih u Mono frameworku. Meni on nekako najviše odgovara jer onih par osnovnih stvari, koje su mi potrebne za preslušavanje audio datoteka, ima riješene na jednostavan način.
Adobe reader na Linux ne koristim već godinama. Za prikaz .pdf (i što je meni jako važno .djvu) formata koristim Evince. Kad se prvi put pojavio u Ubuntu distribuciji kao default reader nisam bio presretan, ali u međuvremenu sam se toliko naviknuo na njega da ne koristim ništa drugo.
GnuCash je aplikacija za vođenje financija. Pokušava biti jednostavna za korištenje, ali ne na račun mogućnosti i fleksibilnosti.
Allmost two years ago, I began my experiments with RFID, writing support for 3M 810 RFID Reader. Then I tried to make web interface for RFID it in Koha.
This woked, but having separate Comet server was too much complexity for me, so I decided to implement JSONP directly in RFID driver code. Hack, I allready had HTTP server, and local JavaScript interface, so why not?
Move to JSONP allowed me to use original Koha web interface, and just overlay RFID information and form submission code as simple jQuery snippet.
But, two years of development and trying out different approaches produced not-quite-production-quality code. So, I began rewrite called Biblio::RFID. It splits RFID reader support from HTTP and JSONP servers and couples this with documentation and tests. I have production use for it this summer, involving programming of RFID cards as they are printed out, so expect it to change during next few weeks. After that I will push it to CPAN, but I would love to get feedback and comments before that.
Update: It's also availale at CPAN.
Mail od App Inventor teama je značio da sam dobio pristup svetom gralu. Na getting started stranici se spominjao Mac i PC pa sam mislio da ću morati promijeniti računalo da bih ga isprobao, ali podržana su sva tri OS-a (konkretno: Mac OS X 10.5, 10.6, >Windows XP, Ubuntu 8+, Debian 5+). Za Linux je predviđen appinventor-extras paket od 50 MB.
Nakon instalacije AI Extras paketa potrebno je podesiti mobilni uređaj. Bez obzira na instalaciju Extras paketa glavni alat za rad je preglednik i alat na adresi: appinventor.googlelabs.com. Osim tog web Designer alata potreban je i Blocks Editor koji omogućava vizualno puzzle programiranje. U Blocks Editoru kliknuo sam za povezivanje s mobitelom, nakon nekoliko trenutaka spajanje je uspješno završeno i na mobilnom zaslonu pokazao se početni ekran aplikacije. Upute u posebnom okviru navode što treba napraviti kad se nešto zaglavi, a meni se upravo to i dogodilo, zaglavio se Blocks Editor.
Izgleda da je bio problem u Chromiumu, Firefox i Google Chrome uglavnom nisu imali problema. Blocks Editor se pokazao ubitačno spor. Zamijenio sam OpenJDK Sunovom inačicom Java i nakon toga je postao malo živahniji, ali je i dalje pomalo iritantan. Nijedan tutorial me nije osobito privlačio pa sam se odlučio na izradu jednostavnog alata za izračun indeksa tjelesne mase.
Nakon uspješno završenog zadatka i dalje sam zbunjen. Nije mi jasno zbog čega App Inventor nema jedinstveno sučelje i razvojnu okolinu. U pregledniku (Designer) kreirate ekrane, slažete komponente i uglavnom obavljate sve oko sučelja. U Blocks Editoru (kojega pokreće Java Web Start) programirate tj. uz pomoć različitih puzzle komponenti određujete logiku rada aplikacije. To su dva potpuno različita sučelja. Designer je web aplikacija, Blocks Editor je šarena Java aplikacija. Sve zajedno djeluje jako neozbiljno.
Prvi problem na kojeg sam naletio su naša slova, na mobitelu sam dobio upitnike umjesto naših slova (UTF-8). Designer nema osobite mogućnosti za slaganje sučelja pa se treba jako potruditi da se aplikacija nalikuje nečemu. Google App Inventor, u ovom stupnju razvoja, je zgodna igračka za one kojima su svi drugi načini za izradu mobilnih aplikacija prekomplicirani. Hm…neće li im onda i GAI biti prekompliciran?
Sve to vam ne smeta, unatoč svemu uz pomoć GAI-a ste napravili killer aplikaciju. No čeka vas nepremostiva prepreka. Tehnička ograničenja trenutno onemogućavaju slanje GAI aplikacija na Android Market. Nije moguće napraviti aplikaciju koja se sastoji od više ekrana (GAI tim predlaže da u slučaju istog rasporeda elemenata simulirate promjenu ekrana ili da napravite posebnu aplikaciju za svaki ekran pa da jedna zove drugu). Nije moguće ni da više puzzlera radi na jednoj aplikaciji.
Prva test vožnja App Inventorom pokazala je cijeli niz nedostataka i pomalo je smiješno da se tolika buka diže zbog jednog Frankenstein rješenja. AI tim sad sve to što su napravili mogu baciti u vodu (prvi mačići) i napraviti nešto što valja.
As you might know by now, I started an informal podcast in Croatian about Free and Open Source software called Razgovori o slobodnom softveru. This blog post will try to summarize my experiences and serve as information for podcast guests on how to get the best possible audio quality.
Every podcast currently starts as google wave. While this isn't ideal, it does work for now. I would love some other service which would allow me to see information color-coded by users. Those notes are later used to write blog post with all links and information about episode.
First, let's get Skype out of way. Only reason why we aren't using free software for audio conversation is simple fact that everybody has Skype and there is great skype-call-recorder which allows us to get uncompressed audio recording with local audio on one channel and remove one on another which enables easy matching of audio levels for local and remote speakers.
While we are at audio levels, let me share a little secret: right after recording audio from Skype, I use Levelator to adjust audio levels. There is Linux version of it, but it doesn't seem to work for me on recent Debian. But, effect is so valuable to good quality podcast that I just use Windows version under wine.
As far as guest audio is concerned I have found following notes really important for my guests:
Much more useful information can be found in Skype for interviews by Doug Kaye and Paul Figgiani (guys behind Conversations Network which also implemented Levelator mentioned above), so if you need to record on Windows or Mac take a look there.
For editing audio I use audacity which is great audio editor, but I still have to learn all keyboard shortcuts because using mouse to edit audio is too slow and cumbersome if you want real flow of montage (and I did video montage back in 1990 on local TV station, so I know unnecessary mouse clicks when I see them). It would be nice if labels moved when I do cut of audio, because editing of audio leaves labels at old positions which isn't useful since audio moved. To give you some idea of how much effort is involved in editing audio (mostly removing silences, bloopers and breading): for last 35 minute podcast, it took 420 edits to get it into final state. And most of single day. It's about the same as creating good presentation: I often need 6 times more than presentation length to create it. For audio editing, you can count on 10-15 times ratio for editing.
Finally, I hop over to some creative commons audio site (to be honest, it was first one in google search for CC music), pick one of top tracks and extract intro and outro music from it to put it at beginning of podcast and end. Finally, audio introduction and web address information for end are recorded and put on top of music.
Web stranica Sabayon Linux distribucije mi baš i nije djelovala obećavajuće, ali odlučio sam joj dati šansu zbog jednog jedinog razloga - bazira se na Gentoo distribuciji. Gentoo je poseban po svojem Portage sistemu za upravljanje paketima kod kojega se instalacija novog paketa svodi na preuzimanje izvornog koda i lokalno kompajliranje. To je prihvatljivo kod poslužitelja, gdje je ionako riječ o manjem broju specifičnih aplikacija, ali za desktop računalo takav način je vremenski prezahtjevan. Neke aplikacije su dostupne i u binarnom obliku i to malo štedi vrijeme, ali to čini Gentoo tek malo (nedovoljno) pristupačnijim.
Sabayon omogućuje instalaciju binarnih paketa (zahvaljujući svojem Entropy sistemu), ali zadržava i potpunu kompatibilnost s Gentoo distribucijom pa je korisnicima dostupan i Portage. Mogli bi reći da je Sabayon za Gentoo isto ono što je Ubuntu za Debian.
Najnoviji Sabayon nosi broj 5.3, a ja sam testirao x86 Gnome inačicu. Instalacija je prošla bezbolno i bez ikakvih problema. Ukoliko ga instalirate na računalo na kojem već postoje drugi operativni sustavi i particije nužno je da znate odrediti gdje i što instalirati i to je najkompliciraniji dio instalacije. Osim klasičnog Linux sustava moguće je instalirati media centar (XBMC baziran) i UMPC (Ultra-Mobile PC) inačice, a birati možete i između tekstualnog i grafičkog načina instalacije.
Najprije se znatiželje radi isprobao XBMC. Ako slažete HTPC (Home theater PC) svakako pogledajte Sabayon. Kako me takve aktivnosti trenutno ne zanimaju instalirao sam klasični Sabayon. Nekako sam očekivao da bi kod njega moglo biti više problema nego kod openSuSE-a 11.3, ali ostao sam prijatno iznenađen. Ispoliran, dorađen, lišen bilo kakvih iritantnih sitnica. Za razliku od ružnih openSuSE fontova i jedva pristojne desktop teme Sabayon je vizualno odlično sređen. Ja volim promijeniti izgled desktopa (kad imam vremena gledam obavezno razgledam gnome-look.org), ali ovdje nisam osjetio potrebu da bilo što mijenjam (potreba koja se obično javi nakon prve Ubuntu instalacije).
Nakon početnog upoznavanja (prva stvar koju treba novi korisnik napraviti je upoznavanje s Entropy sistemom i update paketa) i prvih par sati korištenja definitivno sam siguran da je Sabayon Linux kojeg bih želio koristiti. Za razliku od openSuSE-a kod kojeg je slijed bio instaliram, pogledam, ostavim da stoji, pregazim kad mi zatreba particija.
Sabayon je zauzeo svoje mjesto na mojem laptopu, a ako nastavi s dobrim ponašanjem otvara mu se put i za druga računala.
SuSE distribuciju sam intenzivno koristio (i kupovao službena izdanja od jednog od rijetkih domaćih distributera) u vrijeme 6.x i 7.x inačica. U to vrijeme to je bila, po mojem mišljenju, jedna od najboljih i najispoliranijih distribucija. Kasnije sam počeo koristiti Mandrake distribuciju da bih krajem 2004. zapeo na Ubuntu distribuciji.
Nekako su se poklopile zvijezde pa sam našao vremena da instaliram i istestiram novu inačicu openSuSE distribucije (11.3). Možda sam u odabiru načinio grešku birajući GNOME inačicu (čini mi se da SuSE više naginje na KDE stranu), ali iskustva nisu onakva kakvima sam se nadao. Izgleda da me Ubuntu previše razmazio.
Prvo me iznenadila brzina, tj. sporost instalacije. Ubuntu instalacija traje dvostruko kraće. Početni koraci u instalaciji su manje-više svude isti i tu nema što da se govori. Prvo razočaranje je bilo to što automatska konfiguracija boot managera nije uzela u obzir postojeće OS-ove na diskovlju. Touchpad nije prepoznat i trebalo ga je posebno konfigurirati. Prvi restart i neugodno iznenađenje. Umjesto slova na ekranu su bili prazni pravokutnici. Izgleda da je SuSE samoinicijativno promijenio jezik i postavio baš onaj koji nije imao podršku u default fontovima. Napiknuo sam i promijenio jezik i uspio dobiti slova natrag.
Jedna od prvih stvari koju većina korisnika napravi je instalacija restricted paketa i aplikacija. Pouzdajući se u OpenSuSE Community omogućio sam dodatne repozitorije i pokušao dodati restricted formate. Neki su uspjeli, neki nisu, ffmpeg se skršio i nije se želio instalirati. Kako ne mogu zamisliti rad bez više virtualnih radnih površina, definrao sam svoju dozu i otkrio da u postavkama tipkovničkih kratica nema mogućnosti da se odabere Switch to workspace X.
Sve to i nisu bili prestrašni problemi, ali nisam uspijevao instalirati dodatne pakete. Izgleda da se strgala rpm baza. Nakon rebuildanja instalacije su prošle bez problema. Kad je već krenulo instalirao sam i KDE4. Na njemu su ružni SuSE fontovi došli do potpunog izražaja. Nakon 10 minutnog upoznavanja zaključio sam da mi KDE ipak ne odgovara.
openSuSE mi djeluje kao dobro odrađena distribucija, ali pojedine sitnice kvare dojam. Početnicima i manje iskusnim korisnicima bi one mogle predstavljati nepremostivu teškoću pa je bolje da instalaciju prepuste iskusnijim korisnicima. openSuSe ima premalo sati na mojem računalu, ali čini mi se da kad se jednom posloži da stvar radi stabilno.
I have two screens, and 9 virtual dekstops on my machines. Which sometimes makes it tricy to remember on which virtual desktop is xterm connected to klin. Fortunatly, I have that information in window title, so something as simple as:
xdotool search --name klin windowactivateWill do the right thing. However, my mouse pointer is not always over xterm on local machine, so keyboard shortcut in awesome window manager for this simple xdotool usage would be helpful. So, here it is:
-- XXX dpavlin: search windows and active them
awful.key({ modkey }, "F12",
function ()
awful.prompt.run({ prompt = "window: " },
mypromptbox[mouse.screen].widget,
function (find)
awful.util.spawn("xdotool search --name "..find.." windowactivate", false)
end)
end),
I would love to be able to insert this snippet somehow dynamically instead of editing rc.lua by hand, so suggestions are welcomed.
So you have a car. And you are a geek. You know kind of I don't really know or care how cars work. And then you got graph like this from your car:
If you take a look at OBD2, you might think that it's only useful to your car mechanic. But, as you can clearly see above, any technology which can draw graphs and uses computers is interesting to me.
You can take two different paths to getting sensor data from your car using open source software. Freediag is project which support dumb (basically level converters between your car OBD2 connector and RS232 or USB) cables. This approach requires very funky boud rates on serial port and lot of knowledge inside software, but offers future-prof route because you can hack software.
So I decided to buy one of those cables (available locally in Zagreb) and ended up with VW cable which did dump some data, but freediag didn't really helped in decoding them.
So, in next step, I opted for one of ELM327 based devices (which decode car protocol within microcontroller) and moved to OBD GPS Logger for data collection. This did work, and result is graph included in this post. In the process, I figured out why you can disconnect both cables (to car and to usb) from micro-controller in metal box: it's the only way to reset it, sigh!
However, now I have a few observations about state of free software for OBD2: I wasn't able to found any software which would introspect all my sensors and log them. This is quite strange since you can inquire car about supported sensors, so that will probably be next thing for me to do. If you have more information, please let me know.
Google je izbacio još jedan proizvod o kojem će svi pričati, a kojeg će za koji mjesec svi zaboraviti. Umjesto društvenih mreža ovaj puta je riječ o Svetom Gralu razvoja računalnih aplikacija, o konačnom rješenju koje omogućava izradu aplikacija bez programiranja. Svi, pa i njihovi psi, moći će napraviti aplikaciju koju god da zamisle. Google alkemičari su predstavili App Inventor for Android.
U nekom idealnom, ili tome bliskom, svijetu razvoja aplikacija u trenu kad na red dođe pisanje koda, najvažniji dio razvoja je već gotov. Dalje bi sve trebalo biti lako. To što većina projekata u praksi započinje pisanjem koda ne znači da je to i najbolji način ( iako daje rezultate). Programiranje prije programiranja, kako ga često laici nazivaju, je važan dio razvoja. Izrada neke aplikacije kreće s planiranjem, analizom, oblikovanjem i tek onda dolazi na red programiranje, pa nakon toga testiranje nakon kojega se možda opet zavrti cijeli krug. Što želim reći? App Inventor vas rješava programiranja, ali za izradu uspješne aplikacije trebate ovladati cijelim krugom.
Da li to znači da se s njime neće moći napraviti uspješna aplikacija? Hoće, kako da ne. Svi će moći uz par klikova napraviti svoju droidFart aplikaciju, i ako se zvijezde poklope slava je zagarantirana. Google ja malo zakasnio, ali nije isključeno da nas zagluši i navala droidVuvuzela aplikacija.
Vizualno slaganje blokova na prvi pogled izgleda jednostavno, ali je istovremeno i jako ograničavajuće. Takav razvoj omogućavaju Yahoo Pipes, Microsoft je imao Popfly i stavljen je ključ u bravu. Na prvu loptu takav koncept izgleda privlačno, ali nismo još vidjeli neku uspješnicu. Scratch je navodno na tom tragu, nisam ga nikada isprobao pa ne mogu reći. Scratch i App Inventor su djelomično i povezani Open Blocks Java libraryem. Najbolje ostvareno vizualno programiranje vidio sam u jednoj igri (MindRover), ali i tamo je ono bilo usko specijalizirano.
Čini mi se da bi puno bolje rješenje bilo da je Google kupio neko postojeće rješenje (npr. PhoneGap, Titanium) i onda bacio završni finiš (npr. za sučelje Sencha Touch, pojednostavniti build i deployment) kako bi developerima olakšao ulazak u razvoj mobilnih aplikacija. Bila bi puno veća šansa da se ergela android aplikacija popuni kvalitetnijom robom.
Dobar dio svojeg developerskog života potrošio sam na rad s raznim generatorima koda. I jedno sam naučio. Dobar RAD alat omogućuje jednostavno lego slaganje aplikacije, ali mora dopustiti nesmetan pristup ispod haube do te mjere da, ukoliko to baš želi, developer može sve napraviti i tipkajući kod, red po red…
Izašla je nova Opera 10.60, ovaj puta kako treba, za sve tri platforme. I zato uzeh da je malo istestiram i počistim neke zabilješke koje čekaju da napravim nešto s njima.
Ext JS je promijenio ime, zapravo nije…Biblioteka tog imena se tako zove i dalje, a web stranica i brand se promijenio i sada je to Sencha. Pridošlice u timu su Raphaël (odličan za grafičke igrarije u JavaScriptu) i jQTouch koji zadržavaju svoju licencu (MIT).
Prvi rezultat spomenute simbioze je Sencha Touch, prvo(?) HTML5 razvojno okruženje za mobilne uređaje (podržani su iOS i Android). Prvo pogledajte primjere. Naravno, ne s Operom.
Na mobilnoj sceni pojavio se još jedan dućan za aplikacije. LG Application Store podržava i glupe uređaje, a ne samo pametne.
Ostajemo na mobilnoj sceni, konačno sam na Slideshare postavio prezentaciju Šefe, smanjio sam web. Neke stranice možda neće biti jasne bez objašnjenja, pa ako vas nešto zanima, pitajte.
GNU HURD Altered visions and lost promise. Možda niste znali da se prvi GNU operativni sustav počeo razvijati 7-8 godina prije Linuxa. Duke Nukem Forever, ti si još dijete u pelenama naspram HURD-a. Zašto je Linux uspio, a HURD nije? Možda taj mikrokernel i nije najbolje rješenje, profesore Tanenbaum? Ili bi nekakav benevolentan diktator ipak i to riješio?
Jedna jezična dilema. Da li je ispravno operacijski sustav ili operativni sustav? Meni je prirodnije ovo drugo, ali već godinama koristim ono prvo jer su me uvjerili da je to ispravno. Objašnjenje da je ispravnije koristiti operativni sustav čini mi se u redu.
JavaScript uzvraća udarac novom bibliotekom za grafičke igrarije InfoVis Toolkit. Bilo mi je malo sumnjivo, došao tip na reddit i kaže da je napravio JavaScript biblioteku. Nepovjerljivo kliknuh i gle, izgleda ok. Samo ako se ne pokaže da je pokrao Raphaëla.
Završio sam pisanje članka u novoj Operi. Djeluje bolje nego u prošlom pokušaju. Fontovi su mi normalni, čak i naši. Brza je, ali ponekad se događaju manji zastoji bez vidljivog indikatora da se nešto događa. Zaključak je da se radi o boljoj i bržoj Operi. Samo, da li je dovoljno bolja?

Domaća mobile developer scena zahuktala se u posljednjih par mjeseci. Uz pokretanje Mobile Mondaya, tu su i VIPNet Android Izazov te Budi kreaTivan 2010 natječaji koji su izazvali razmjerno velik interes potencijalnih developera.
Kao rezultat toga, na Android Marketu pojavljuje se sve više domaćih aplikacija, većinom lokalnog karaktera. Kako zapravo ne postoji način za saznati otkud su autori pojedine aplikacije i koliko je aplikacija iz Hrvatske, tijekom posljednjih nekoliko dana bilježio sam domaće aplikacije na koje sam naišao, skupio ih u listu, te vam sada ponosno predstavljam svjetsku premijeru najveće i jedine liste domaćih Android aplikacija:
Napomene: Oneliner opisi pojedine aplikacije preuzeti su iz njenog opisa u Marketu, uz ponegdje slobodan prijevod sa engleskog i skraćivanje/parafraziranje opisa – ako uočite bilo koju grešku ili smatrate da sam krivo prepričao opis, ili ste našli aplikaciju koju ja nisam pa je nema u popisu, molim vas da mi javite. Također, većinu ovih aplikacija nisam isprobao, a i za one koje jesam, ovdje ne donosim svoj sud, mišljenje ili preporuku. Prilikom isprobavanja pojedine aplikacije, preporučam pročitati komentare na Marketu (te dati i vlastiti komentar/ocjenu, čime ćete autoru aplikacije dati dragocijeni feedback za daljnji razvoj iste).
Update: dodane aplikacije: Žabolomac, aMazing Submarine, HrStock, Meet Croatia, Tv Guide, Mobilisis (ATM, Fleet, Parking, Tracker), Praznik, Rođoš, VMC application, Hoću u kino!, Gdjesi.com, Tele2SMS. Maknut Columbus (slovačka aplikacija).
Update2: dodani HRT Teletext, HotFuzz, Transmeet.TV MusicMap, Worldscope
Update3: dodani Elevation and Sea Depth, Qibla Compass, Weather Forecast USA.
O problemima s e-maticom već svi sve znaju. Simptomatično je to što ministar Fuchs pokušava okriviti sve moguće (profesori su krivi jer se žure na more, a ne govori kako je išla okružnica da se prije srijede ne unose podaci), radi neuobičajene iznimke (učenici se bez svjedodžbe mogu prijaviti u srednje škole), a ne dozvoljava nijednu kritiku na račun onoga što je stvarno zakazalo (informatičko rješenje naplaćeno 5.000.000 kuna). Tako da se stvarno možemo zapitati da li je točan puni naslov ministarstva kojeg je naveo jedan komentator na portalu Večernjeg lista: Ministarstvo za King ICT, znanost, obrazovanje i šport.
Kolege blogeri su se već osvrnuli na taj slučaj (Nešto je trulo u državi Hrvatskoj 2 (e-Matica MZOS), Zašto je e-Matica loša?, Farbanje informatičkih tunela) i tu se nema što puno dodati ili oduzeti. Na web stranici savjest.com je prije dva mjeseca objavljen članak Kako je King ICT u poslovanju s državom osvojio 6 ugovora u 24 sata koji je pravi prilog komentatoru koji navodi kako se stvarno zove nadležno ministarstvo.
Oni koji su radili e-maticu su imali tu nesreću da zbog velikog broja korisnika u kratko vrijeme njihov loš posao postane svima poznat. Ono što nije dobro u cijeloj priči s velikim i vrijednim informatičkim projektima, koji se rade za javnu i lokalnu samoupravu te javne institucije, je činjenica da je e-matica klasični obrazac kako se projekti odrađuju. Podobne firme odrađuju loše kvazi-projekte za prevelike novce.
Razlozi koji su doveli do takvog stanja u informatiziciji našeg javnog sektora mogu se preuzeti iz članka Miroslava Dragičevića Aktiviranje državne imovine u turizmu (objavljen u Globusu, prenesen na blogu Nenada Bakića)…
Hrvatska još uvijek muku muči s izgradnjom vrijednosnog sustava na principima europske uljudbe. Marginalizacijom znanja, rada, poštenja, transparentnosti i zdrave konkurencije Hrvatska se dovela na razinu niske produktivnosti, visokog duga, niske zaposlenosti i visokih fiskalnih opterećenja.
Zaboravite na znanje koje je potrebno za kvalitetnu izradu nekog projekta, zaboravite na pošten rad, transparentnost i zdravu konkurenciju i dobili ste okruženje u kojem nastaje prosječan informatički projekt za nekog od proračunskih korisnika.
Vjerujem da bi za polovicu novca, kojeg sada za informatičke projekte odvajaju proračunski korisnici, imali bolja i kvalitetnija rješenja samo kad bi se oni radili na principima otvorenosti i zdrave konkurencije.
Slijedeći veliki e-fijasko mogao bi biti vezan uz e-recept i zdravstvo bez papira. Svi potrebni sastojci su tu…veliki državni projekt, veliki broj operatera (medicinsko osoblje) i korisnika (pacijenti).
Ono bez čega ne bi smio proći nijedan veći informatički projekt, koji se financira iz proračuna, je nezavisna recenzija struke. Najbolje je da se definiraju vrijednosni razredi, slično kao i u sustavu javne nabave, na osnovi kojih bi se primjenjivali odgovarajući kriteriji za recenziranje. Kad bi imali takav mehanizam kontrole smanjili bi korupciju i povećali bi kvalitetu rješenja.
Ono što bi mi u Hrvatskoj, po ustaljenoj praksi naših političara, mogli dobiti je nekakvo povjerenstvo. Sve po onoj ako nešto ne želiš riješiti, osnuj povjerenstvo (Winston Churchill).
Often it's hard to beat a few lines of shell script to perform a basic
monitoring task on a personal system. A system-load, or a file-system
monitoring script running from cron is extremely easy to
write and setup, while being invaluable in emergencies.
I wrote plenty of those during the years (load, fs, pacct,
daemons... monitors), which I use in combination with network and
intrusion monitoring. And here's how it works; e-mail alerts from all
personal systems are sent out to a third-party system where they are
immediately relayed to my local mailbox, and then archived, but not
marked as read. That way a backup remains, but that archive mailbox is
also available through IMAP. While having e-mail alerts is good, a
live alert is better. Live in my case means IM, and if I'm on the
road: SMS - which is easily done through a service
like email2sms offered by the mobile service
provider. Although the IM part is more to the point of this
article.
Years ago while learning Python I wrote two bots, an IRC one and a
Jabber one. Dealing with a protocol like IRC is great for learning, it
involves many different libraries and problems. Text processing,
sockets, databases, accessing web resources... When I lost interest
(don't we all) I decided maintaining and running the Jabber version is
a better choice, and besides, I love that protocol. Sometime later
hooking the Jabber bot into the existing alert system was easy thanks
to the imaplib
library. Bot connects to the IMAP server and relays, to Jabber,
all alerts which have the Unseen flag. Once read an alert is
flagged as Seen, and that's all there is to it. Live alerts
24/7, over my favorite protocol, in my
favorite messaging
client.
If you are interested in writing your own bots you can checkout
the xmpppy
library. Handling the connection, presence and subscriptions can
be done in as little as 20 lines of code. To complete the cycle I
should also mention some of my favorites for local monitoring. For
process monitoring the htop
project provides a great interactive replacement for top
in procps. Finally, no article would be complete without
mentioning nmon
- an amazing AIX and Linux performance monitor, developed (and
unofficially supported) by an IBM employee.
Ukoliko koristite open source aplikacije ili biblioteke sigurno vam se dogodilo da, iz različitih razloga, više ne možete doći do njihovog izvornog koda. Obično se to događa s projektima koji se ne razvijaju baš aktivno, ali ponekad se i aktivnim projektima zna dogoditi da ne produže domenu ili nešto slično pa vam nisu dostupni baš kad su vam potrebni.
Prvo što možete napraviti u takvim slučajevima je da posjetite github i potražite željeni projekt. Nije nužno da projekt koristi github kao svoje skladište za kod, skoro svaki projekt koji nešto vrijedi ima svoj neslužbeni odraz na githubu. Kad su nedavno PyAMF stranice bile nedostupne par dana pomogao mi je njegov github repozitorij.
Neki projekti koji su malo zastali u razvoju zbog toga što njihovi glavni razvijači nemaju vremena za njih račvaju se na githubu. WYMEditor, koji se nedavno ipak počeo intenzivnije razvijati, ima nekoliko račvi, neke od njih dodaju nove funkcionalnosti, neke ispravljaju greške.
MochaUI je odlična JavaScript biblioteka za izradu sučelja. Autor nema više vremena za nju. github otkriva da postoji jedno račvanje koje je jučer osvježeno.
Ako imate potrebu da izmijenite nešto na nekom postojećem projektu ali ne možete čekati da tu promjenu provedete službenim putevima ili se ona ne uklapa u originalni razvojni plan? I još vam to treba za jučer?! Jednostavno račvajte originalni projekt, napravite promjenu i objavite ju na svojem github repozitoriju.
Sila je jaka na githubu, iskoristite to…
We all speek utf-8 thease days, don't we? Well, not really... I got CSV file export and I couldn't guess encoding from simply looking into it any more. So I wrote gist to dump all Croatian 8-bit encodings in utf-8:
#!/bin/sh -x
file=$1
function encoding {
echo "# $1"
head $file | iconv -f $1 -t utf-8
}
encoding cp850
encoding cp852
encoding cp1250
encoding cp1252
encoding iso-8859-1
encoding iso-8859-2
encoding mac
encoding MAC-CENTRALEUROPE
Example usage:
./test-8bit-encodings.sh data/ESB_izvadak-tekuci.csv | vi -R -c 'set nowrap' -
I have spent few last weeks with my head down, adding persistence and changes tracking to Mojo Facets, turning it into much more interesting alternative to web-based data stores like DabbleDB. Idea was simple: I had all data in memory, I should be able to edit it, right?
Well, as it always turns out, if was about three weeks of development, but it moved Mojo Facets into much more interesting use case of making small tweaks to your input data.
Problem is how to keep those changes? Mojo Facets is never master provider for data so saving some kind of audit log which can be applied back on master data is of paramount importance. After all, if you edit that data, you might want to apply those changes back when you re-generate source file or pull new version from some other system.
First idea was to add simple audit log which records all requests in Mojo. I decided to call requests with parameters actions and store them on disk under /tmp. All I had to add was re-submit form in browser and a bit of interface around it. Same form with all parameters can turn Mojo Facets into peer-to-peer application: I just added checkbox which can change destination URL in action to another Mojo Facets installation and I got nice replication of actions to another instance.
But, all was not well. Editing data in browser generates update to specific entry in your dataset, so I decided also to record changes which include old and new field value, and all unique keys for this dataset.
This seems like such a small statement, but getting it up to point where you can load some data, edit it in browser and than apply that changes back on original data (after reboot) or on different dataset with same unique field.
Even better, it should be possible to apply changes log to master data. I prefer to think of it as a replication log to another system.
To integrate better with other systems, filters got export (and import) option which dumps them in simple, one line per entry text file which is accessible over http. It's perfect format it you want to quickly xargs that data into another script, for example to generate more source data with something as simple as:
cat /srv/mojo_facets/public/export/isi-cro2.js/filter.autor.119 | \
xargs -i ./bin/isi-download-results.pl 'CA={}'
Speaking of more dataset sources, I also added parsing on html tables, which should allow users at some point to just drop multiple tables from results page into single directory and load them as dataset. Your telebanking doesn't have export you need? No problem! Just save all pages to disk and you are ready to do.
Right now, table parsing needs a bit of heuristics to be really useful. It searches for table on page with correct number of columns, and has support for extracting of header or repeating first row (normal <td>) for column names.
All that would be unusable without profiling to turn it really snappy. This is first time I used Google Chrome for serious development, and while I still dislike it's inspector (firebug's dom inspector is much nicer to me), Speed Tracer extension was very useful for front-end part including network throuput and html/javascript overhead. On server side, I used Devel::NYTProf, and I will talk about it at Slobodni Fastival 4 in Čakovec, so see you there...
One of the earliest articles here was about
my personal
backup solution, rsync based, with rotating
backup-snapshots. Implemented as a simple shell script. It served me
well, but I was never fully satisfied with it, it had a
few Todo items attached to it which I never got around to
address. I couldn't motivate my self to write BASH, and the script was
working the way it was designed, running on a dozen of my
machines.
After reading
"Python for Unix
System Administration" last week I decided it's time to rewrite
it, in Python. Result is available in a git
repository; rybackup.git. The
script is designed to backup chosen directories, and files to an NFS
backup server, or removable storage. Maintaining an arbitrary number
of backup-snapshots going back hourly/daily/weekly/monthly as long as
you need, rotating them as it goes. All of this is controlled by a few
settings at the top of the script. In addition it has a few functions
making it suitable to use for backup of eCryptfs encrypted
home directories. Script will exit with EAGAIN if
the eCryptfs mount is active, and relies on Dillon's
cron to retry once in a while, after receiving the signal. To
give you an idea of how it works, here is a directory tree after a few
months of rotating snapshots:
2010-05-30 16:04 daily.1/ 2010-05-29 00:04 daily.2/ 2010-05-28 20:04 daily.3/ 2010-05-31 20:03 hourly.1/ 2010-05-31 16:04 hourly.2/ 2010-05-31 00:05 hourly.3/ 2010-05-30 20:03 hourly.4/ 2010-04-04 00:05 monthly.1/ 2010-03-10 00:04 monthly.2/ 2010-05-28 00:02 weekly.1/ 2010-05-13 00:04 weekly.2/ $ du -hs ; du -hs hourly.1 1.5G . 778M hourly.1
# ~/.backup/ryrestore.py /home/anrxc/.xinitrc 0: monthly.1 [2010-04-04 00:05:33] 1: monthly.2 [2010-03-10 00:04:10] 2: daily.2 [2010-05-29 00:04:21] 3: hourly.3 [2010-05-31 00:05:26] 4: hourly.2 [2010-05-31 16:04:16] 5: hourly.1 [2010-05-31 20:03:57] 6: hourly.4 [2010-05-30 20:03:56] 7: daily.3 [2010-05-28 20:04:01] 8: weekly.2 [2010-05-13 00:04:04] 9: daily.1 [2010-05-30 16:04:28] 10: weekly.1 [2010-05-28 00:02:52] Snapshot: 5 sending incremental file list .xinitrc sent 2634 bytes received 31 bytes 5330.00 bytes/sec total size is 2543 speedup is 0.95

First time I read Virtual Light by William Gibson I liked it,
but I didn't appreciate it as much as it deserved. Only
after Pattern
Recognition and the current series I realized just how good the
whole Bridge
Trilogy really is. To me the path towards Pattern Recognition is
evident in every chapter, hinted in every reference. While waiting for
the Zero
History release I decided to buy the whole bridge series and read
it again. I'm half way through now, and I'm loving every page of it. I
was born too late to really
appreciate Neuromancer
anyway, it never influenced me, not like it did the previous
generation. It wasn't even what introduced me to cyberpunk, it was
Neal
Stephenson's Snow Crash instead. Maybe that's the reason
I love Gibson's recent work so much, his amazing portrayal of the
present, his ability to spot patterns and nodal
points where nobody else does... bits of the literal future right
here, right now.
Virtual Light is set in the year 2005. Tokyo is recovering from a huge
earthquake, and the society as a whole from AIDS. This is where we
meet Chevette Washington, a bike courier. She lives on the
San Francisco Bay Bridge, where squatters have built
settlements. Visiting San Francisco, the bridge and Chevette's
roommate (Skinner, a bridge veteran) is Yamazaki, a
student of sociology from Japan. Another character is Rydell,
a security guy and former policemen, who is brought in to help
investigate a theft of VR glasses. Which just so happen were stolen by
Chevette, on an impulse.
The second book, Idoru, finds Rydell working for hotel
security where he befriends a guest, Colin Laney, a data
analyst. Laney has a singular gift - he can intuitively spot trends
developing within masses of seemingly unrelated data. Through
Yamazaki, who is now in Tokyo, Rydell finds a new job for Laney. The
assignment is for Lo/Rez - the hottest rock band on
earth. The lead signer has just announced that he intends to
marry Rei Toi, a software agent and Japanese
idoru. Chia, a member of a Lo/Rez fan club from Seattle,
travels to Tokyo to visit the local chapter of the fan-club and find
out if rumors about the wedding are true.
The third book sees the culmination of all these events, and although
All Tomorrow's Parties includes many of the same characters,
it's not a direct sequel to either. The book offers its own story
line, and is perhaps the best of the three. Laney can now see
significant "nodal points" in the vast streams of data in the
worldwide computer network, and he owes this gift to an experimental
drug he received during his youth. Such nodal points are rare but
significant events in history that forever change society, even though
they might not be recognizable as such when they occur. Laney isn't
quite sure what's going to happen when society reaches this latest
nodal point, but he knows it's going to be big, and he knows it's
going to occur in San Francisco. On the Bay Bridge.
What happens when we reach the nodal point? Finding out is a perfect
prelude to Zero History coming in September.
Currently I’m testing if it is possible to create btrfs live CD-USB Fedora Remix. If this works next release of Community Fedora Remix will have btrfs by default.
What you need to do is to edit Fedora kickstart file. Instead of just one line that creates single ext4 root partiion you also need a dedicated /boot partition. Currently it is not possible to boot from btrfs partition.
Original lines from Fedora kickstart files look like this:
part / --size 5000 --fstype ext4
And you need to change so it look like this:
part /boot --size 120 --fstype ext4
part / --size 6000 --fstype="btrfs"
bootloader --location=mbr --append="btrfs"
Keeping my fingers crossed that this works ;)
UPDATE:
This isn’t working, livecd-creator just fails when use kickstart file that is edited this way. I got a tip to try one different setup:
part /boot –size=128 –onpart=sda1 –fstype=ext3
part pv.01 –size=128 –onpart=sda2 –grow
volgroup VolGroup pv.01
logvol / –size=128 –vgname=VolGroup –fstype=btrfs –grow –name=root –fsoptions=ssd
This works so far that it creates iso image but it is ext3 image, and not btrfs?!? Any ideas on how to create btrfs livecd is more than welcome.

Nakon mnogo mukotrpnog rada, štrikanja kickstart skripti, pravljenja novih rpm paketa i testiranja Community Fedora Remix 13.1 “Lucky 13″ je spreman za download.
Dvije su osnovne ideja koje stoje iza Community Fedora Remixa, prva je “više od upstreama” a druga je “multimedija odmah”.
Što znači “više od upstreama”?
Fedora je vrlo usko vezana za upstream projekte (GNOME, KDE i sve ostale) te s njima ima jako usku suradnju, takav način suradnje donosi i puno prednosti pri razvoju novih mogućnosti. No bliska suradnja s upstream projektima ima i nedostatak ako netko želi bilo što eksperimentirati s nekim promjena na desktopu to ne može napraviti u Fedori već sve treba prvo dogovoriti s upstream projektima, što ubije sve ideje u početku. Zbog toga je izgled Fedora desktopa malo “zaostao” u odnosu na druge Linux distribucije koje grabe hrabro naprijed poput Linux Mint-a. Ovdje ne mislim na dizajn jer Fedora dizajn tim radi odličan posao, već na ukupan izgled i funkcionalnost desktopa.
Kao je Fedora projekt omogućio pravljenje Remix-a iskoristili smo tu mogućnost kako bi napravili najbolji mogući Fedora Remix za desktop korisnike.
Što znači “multimedija odmah”?
Druga ideja “multimedija odmah” znači da su multimedia codeci i flash podrška odmah instalirani, nema potrebe za instaliranjem bilo kakvih dodatnih paketa.
Ovaj Fedora Remix možete zamisliti kako Pimy My Ride verziju Fedore ;)
Jedna od najvećih promjena u odnosu na sve mainstream distribucije je korištenje mintMenu-a i DoxkbarX-a na GNOME sučelju umjesto standardnih GNOME panel komponenti.
Ovim putem vas pozivam da se i uključite u ovaj projekt. Ako imate ideju i znanje kako ju implementirati više ste nego dobrodošli. Ako imate samo ideju kako poboljšati ovaj Remix svakako javite, bilo bi nam drago da čujemo vašu ideju, a još draže da se priključite i sami ju ostvarite. Ako nešto i ne znate pomoći ćemo vam oko tehničkih detalja.
Za suradnju se prijavite na mailing listu ovog Community Fedora Remix projekta.
Kako pomoći ovom projektu:
- ako imate ideje i znanje:
* kako poboljšati Linux Destop
* koje programe instalirati kao standardne
* koje programe izbaciti s popisa standardnih
* koje GNOME teme instalirati
- ako ste grafički dizajner
* pomognite nam u dizajnu web stranica
* dizajn logotipa i zaštitnog znaka distribucije
- ako ste web programer
* pomognite nam podići novi web site, forum i sve ostalo što treba
- ako ste Linux Ninja
* uključite se u direktan razvoj ove distribucije
Za detalje pogledajte i službene stranice.
My server side faceted browser just got a bit better. In fact, it become 10 times better. But, let's try to explain this story step by step...
This week I will try to introduce faceted joins. Primary motivation is great Plants For A Future database which consists of more than one text file.
Use case is something like following:
I would like to know all plants which can have medical use, are edable and have perennial habitat (so I don't have to re-plant them every year).
And you can watch the video to see how easily this can be done:
But, this still doesn't make MojoFacets 10 times better than before. This is quite small dataset (still about 10 times bigger than Exhibit could handle), but I had new problem: 100Mb source file a bit less than 30000 items. To make it scale more I implemented pre-calculated filters and sorts. They serve same usage as indexes do in relational databases, but they are calculated on demand and stored in memory.
Let's see in action how does it work with ~30000 items:
In this video, we saw:

Prošli tjedan je Google na svojoj IO konferenciji objavio kako će svoj VP8 video kodek učiniti dostupnim svima pod slobodnim licencama. Samu objavu podržao je veliki broj organizacija i firmi, među ostalima Mozilla, Opera, Adobe, donekle Microsoft, kao i neki proizvođači hardvera – nVidia, ARM, AMD, Texas Instruments.
Posebnost objave je to da je VP8 ne samo kvalitetan (kvalitetniji od H.263, Theore ili Flash videa) i besplatan (odnosno enkoder/dekoder i specifikacija su potpuno otvoreni i slobodni za korištenje) nego je i neopterećen patentima. Točnije, Google kaže da je u posjedu svih patenata koje VP8 koristi, kao i da te patente daje u slobodno korištenje svim korisnicima VP8 kodeka. U praksi ovo znači da bilo tko može koristiti kodek (bilo za kreiranje sadržaja, distribuciju, ili samo gledanje) bez da ima obavezu bilo kome bilo što plaćati.
To ga čini puno privlačnijim (sa pravno/ekonomske strane) od H.264, trenutno najzastupljenijeg (ako ne računamo ne-hd Flash videe, koji koriste stariji i lošiji kodek) kodeka za web video. H.264 je tehnološki bolji od VP8, ali je opterećen patentima. MPEG-LA, organizacija koja zastupa vlasnike patenata koje koristi H.264 trenutno dozvoljava njegovo korištenje uz prilično liberalne uvjete, ali vrlo je vjerojatno da će ih pooštriti (tj. početi naplaćivati) kad zaključi da joj se to isplati – odnosno čeka da većina sadržaja bude u H.264 i da ga svi koriste, pa će onda samo ubirati svoj dio.
Iscrpnu usporedbu tehničkih karakteristika oba kodeka napravio je Jason Garrett-Glaser, glavni developer na x.264 (open source H.264 enkoder, vjerojatno najbolji na svijetu). Njegov zaključak je kako je VP8 tu negdje po kvaliteti kao osnovna verzija H.264 (tzv. Baseline Profile, inačica koja se većinom koristi u mobilnim uređajima), dok su naprednije verzije H.264 puno bolje od VP8 (dakle, nećemo uskoro gledati 1080p filmove u VP8 kodeku). Također kaže da su sami enkoder i dekoder trenutačno prilično ne-optimalni, za što je realnio zaključiti da će se popraviti s vremenom.
Jason također tvrdi da su VP8 i H.264 zapravo vrlo slični – toliko slični da je moguće da VP8 ipak krši patente iz H.264. Njegovo mišljenje također dijeli i Steve Jobs, iako je za vjerovati da je to Jobsov primarno politički stav (Apple svugdje koristi H.264, jedan je od vlasnika patenata nad njim, i nikako im ne odgovara da svi ostali pređu na VP8).
S druge strane, prilično je teško vjerovati da brojni odvjetnici Googlea i ostalih firmi koje ga podržavaju u ovome projektu nisu vrlo pažljivo pregledali svaki komadić kodeka i uvjerili se da nema opasnosti. Softverski patenti su vrlo specifični – da bi se dokazalo da netko koristi tuđi patent, potrebno je dokazati da precizno radi točno ono što piše u patentu. Kod H.264 stvar je čista, jer sam standard specificira točno one stvari koje su i u patentima. Ali kod VP8, ako je on samo “sličan”, ne mora značiti da krši bilo što. Dapače, lako je moguće da su očiti nedostaci VP8 u odnosu na H.264 izostavljeni baš zato kako bi se zaobišli patenti.
Naravno, MPEG-LA je već najavila pripremanje “patent poola” i analizu VP8 kako bi ustanovila koji su patenti prekršeni. Ali njihovu izjavu treba shvatiti u kontekstu toga da se oni samo tim i bave, i već godinama najavljuju da će krenuti u pohod na Vorbis (slobodni i otvoreni audio kodek) zbog povrede neimenovanih patenata, pa još nisu. S druge strane, Google se drži prilično samouvjereno, i već je najavio da će svi sadržaji na YouTube-u biti rekodirani u VP8.
Ono čemu se mnogi nadaju i što bi svakako zacementiralo sigurnost u VP8 je Googleova izjava da će na sebe preuzeti sav rizik od eventualne tužbe za povredu patenata – no teško je vjerovati da bi se Google želio toliko izložiti, bez obzira na to koliko su samouvjereni. U nedostatku toga, vrijeme će pokazati koliko su strahovi oko VP8 utemeljeni. U svakom slučaju, zanimljiva su vremena za web <video/> pred nama.
PS. VP8 podrška dostupna je već za brojne free software multimedia projekte, među kojima su GStreamer, FFMpeg, MPlayer, VLC, itd. Više informacija kako gledati VP8 sadržaje može se naći na stranicama WebM projekta. I hrvatski web može se pohvaliti eksperimentalnom podrškom za VP8 na CARNet Media on Demand portalu.
The arrival of my
new workstation
saw the culmination of a 2 year quest to (drastically) improve my
desktop environment. Machine came pre-installed with Ubuntu
and LUKS which I disposed of, and installed the best
desktop/workstation OS available at the
moment, Arch Linux. Its
solid UNIX fundations, its philosophy and package management,
deserve an article in its own right so that is all I'll say about it
now. Once the OS was installed I cloned
my dotfiles.git
repository and was ready to go. During these past few years I wrote
about various software I use every day, but to see these components
work in unison, to see the interaction and the big picture, is what
matters to me most.
Following the order of
my awesome
tag layout is a good path through my workspace. But first to
mention Zenburn,
a color scheme I discovered a few years ago, which now plays a very
important role. Just about everything on my desktop follows the
schemes guidelines, everything but GTK and QT widgets. Zenburn is easy
on my eyes and saved me a lot of headaches.
First tag is "term" where my terminals reside, Zenburn themed
urxvt and screen connecting me to the outside world. An SSH client and
Irssi are often found there. Long lasting sessions are always
on that tag, but for quick terminal jobs
the scratch
module provides me with disposable terminals that slide-in or
pop-up. While working, awesome's fair layout ensures each
terminal gets an equal part of the screen, and one that requires my
total attention I often maximize.
Next tag is "emacs", probably the most important tag, where I
code, write and take notes. The
Emacs org-mode
plays a crucial role, I use its format for notes, documentation,
keeping track of projects and working hours, auth credentials,
personal agenda and much more. I do
use eCryptfs,
but every sensitive file is also GPG encrypted with some help
of Emacs epa-mode. Which brings me to the GPG agent which I
mentioned in
many previous
articles. Every time Emacs needs my key a PIN entry dialog will
appear, every time I open a new SSH session a dialog will appear to
unlock that key. I have dozens of crypto keys but it's easy to keep
track of them in this manner.
Next tag is "web" with Firefox
and vimperator
that changed my browsing drastically. Once I wrote about connecting
awesome with org-mode, and this is the tag where I utilize
that connection the most. The Mod4+q key-binding spawns a
little
remember
frame for taking a note, or automatically pasting the clipboard
selection. I store huge amounts of web data in this way. Another very
important connection is passing text field contents to Emacs, for
editing. I use it almost exclusively for managing support tickets,
once the ticket is opened in Emacs
the post-mode
is invoked.
Speaking of e-mail, the "mail" tag comes next. The realm of
Alpine and awesome's magnifier layout. Most of the
time there are two instances running, one personal and one connected
to the company's IMAP server. By the way Alpine handles a
500k mailbox with ease, and only days ago I heard
a Thunderbird user complain it couldn't handle just 60. Where
would I be without it, I can't imagine. Every time a new mail comes in
the tag turns red, because of the urgent flag, one key press and the
client which triggered the event is automatically focused. Since I
use Topal
this tag too spawns a lot of PIN entry dialogs.
My fifth tag is reserved for IM, where Gajim was used almost
exclusively until I
needed OTR encryption on
a daily basis. Now I run Pidgin, and I was very surprised
that it took very little effort to make it look and behave exactly
like Gajim. I spend a lot of time on this tag and it was very
important to
have zenburn
in pidgin, otherwise all other efforts would be useless. The
following tag, "rss", was very important while I was
freelancing. Akregator would fetch the new projects feed
every 5 minutes and often that responsiveness alone would land
jobs. Last tag is "media", a floating layout tag
with smplayer, utorrent, ROX, Okular... mostly for
multimedia, and for reading.
Denis Avdagić je neki dan napisao kako Država zna koristiti Internet i dobro nas informira!. Svoje pozitivno mišljenje on zasniva i na činjenici da je Hrvatska 35. na svijetu po razvoju e-Vlade prema UN e-Government development index-u.
Ja se ne bih složio s njim da je stanje dobro. Ako pogledamo Studiju dostupnosti javnih usluga na Internetu u RH u 2006. godini (ne vidim da ima noviji dokument od toga) onda vidimo da u zadnje 4 godine nije bilo značajnijeg napretka.
Pogledajmo kako su razine informatiziranosti definirane Bangemannovim izvještajem:
Masnim slovima je označen uvjet koji je potreban da bi neka usluga bila viša od razine 3. Autentifikacija. Korisnici trebaju elektronički identitet ili e-iskaznicu. Da li je u Hrvatskoj pokrenut taj projekt? Da li se o njemu uopće govori? Da li se na stranicama e-Hrvatska spominje nešto slično? Ne bih baš rekao.
U Studiji dostupnosti navedeno je nekoliko usluga koja su dosegnule 4. razinu. Kod nekih je to navlačenje kriterija, a neke usluge stvarno imaju predispozicije za nju. Čini mi se da su za dobru ocjenu najviše zaslužne akademske institucije. One mogu bez navlačenja dosegnuti 4. razinu jer imaju riješen problem elektroničkog identiteta. Sve ostale usluge padaju na tom koraku. Hej političari, najprije nam treba elektronički identitet.
Večernji list donosi vijest o projektu “zdravstva bez papira”. Do kraja godine će u cijeloj Hrvatskoj krenuti e-recept, e-naručivanje te elektronički karton. To zvuči odlično, a svi oni informatički pismeni će s uzdahom reći konačno. Mene je za oko zapela jedna rečenica iz tog članka.
Pacijent odlazi u koju god ljekarnu želi, ljekarnik upisuje pacijentove podatke iz zdravstvene iskaznice u računalo i tako sasvim jednostavno nalazi lijek
Upisuje? Što ima upisivati kad postoji zdravstvena iskaznica? Na papiru ovaj projekt zvuči odlično, ali da neće po starom, lošem, hrvatskom običaju sve biti uprskano lošom izvedbom? Ili još veći horror: da svaka nova e-usluga bude imala svoj način identifikacije korisnika?! Potreban nam je jedinstveni elektronički identitet.
U članku se spominje kako će različiti djelatnici vidjeti samo one podatke o pacijentu koje su im potrebne za njihov rad i napomenuto je kako se vodilo računa o zaštiti osobnih podataka. Među onima koji bi trebali vidjeti te podatke nedostaje jedan važan element: sam pacijent. Nigdje se ne spominje da će on imati uvid u svoje podatke, a čini mi se da je jedan od preduvjeta uspješnog elektroničkog društva da svaka osoba ima potpuni uvid u podatke koje o njemu imaju javne institucije (osim slučajeva gdje to zbog drugih interesa nije moguće - ne bi bilo dobro da kriminalci vide da ih prate). Taj uvid bi prvenstveno imao ulogu kontrole podataka jer svaka osoba će za sebe najbolje znati da li su podaci točni ili ne, a nema smisla da hrpa državnih službenika ima uvid u vaše podatke dok vi sami ne smijete znati što oni znaju.
U lijepoj priči o e-receptu nedostaje jedan važan usability detalj. Lječnik prije slanja recepta u sustav provjerava da li je lijek dostupan u ljekarnama. Ako nije onda propisuje drugi odgovarajući lijek ili pokreće proceduru nabave lijeka. Drugi dodatni detalj: kronični pacijenti ne moraju zvati doktora da im napiše e-recept već mu pošalju elektorničku poruku (najbolje bi bilo kad bi to bila neka web aplikacija HZZO-a) koju doktor samo odobri.
U članku se spominje i HZJZ koji će, kad sustav proradi, podatke o zdravlju i bolestima nacije dobivati u stvarnom vremenu. Te podatke ne bi trebali zadržati za sebe ili ih skupo prodavati, već bi po Open Government Data Principles trebalo učiniti javno dostupnima.
Članak Git is a Harrier Jump Jet. And not in a good way je klasičan primjer situacije kad se neka aplikacija proglasi lošom zbog nedovoljnog poznavanja iste.
Oni koji žele koristiti samo 3% njegovih funkcionalnosti mogu to bez problema. Znam jer sam prošao taj put, u početku sam koristio 2-3 najosnovnije radnje. Hash kao identifikator inačice zvuči loše ukoliko se s Gitom ne radi kako treba. Kod Gita je commit jeftin i treba ga što češće koristiti. Napravite neku funkcionalnost. Commit. Ispravite bug. Commit. U takvoj slučaju kad imate puno manjih commitova nećete za svaki od njih mijenjati oznaku inačice. Ako hoćete oznaku onda za to upotrijebite oznaku (tag). Savjet: ako baš trebate koristiti hash identifikator ne morate ga navoditi cijelog, dovoljno je prvih nekoliko znakova.
Autor članka se okomio i na činjenicu da treba najprije dodati (git add) neku datoteku i tek onda napraviti commit (git commit). Oni koji žele mogu to obaviti u jednom koraku (-a parametar), a oni koji žele znati više neka prouče što je to staging area. Primjer upotrebe: radite na nekoj funkcionalnosti i uleti vam ispravak nekog buga nevezan za to što radite. U staging area dodate samo taj ispravak i napravite commit. Vratite se onome što radite i poslije commitate taj dio. Poželjno je da commit bude neka cjelina. Na taj način će vam biti jednostavnije korištenje i jedne druge Git funkcionalnosti koja se zove cherry pick.
U jednom je autor članka u pravu, Git se ne može koristiti kao CVS jer to i nema smisla. Ako trebate CVS koristite njega. Osnovna greška koju čine mnogi korisnici, kad prelaze sa stare aplikacije na novu, je da na novoj aplikaciji pokušaju zadržati stari način rada. U želji da što prije počnu raditi korisnici preskaču upoznavanje s novom aplikacijom i proučavanje njezinog načina rada. Pogrešan pristup obično rezultira neželjenim rezultatima i frustracijama. Kad počinjete upoznavati nove alate i aplikacije zaboravite na tren ono što znate od prije, pokušajte neopterećeno i otvoreno upoznati način na koji novi alat rješava probleme.
Aljkavi pilot Harriera se žali i na nedostatak dokumentacije, tutoriala za Git. Izgleda da on uopće nije pogledao što piše na Documentation stranici, nije uspio izguglati git ready, gittutorial, Everyday Git, Git for the lazy…
Senko je na ovogodišnjem DORS/CLUC-u održao Git radionicu na kojoj je prošao osnove i popričali smo o tome kako nedostaje radionica na kojoj bi se pokazali načini korištenja, najbolja praksa i konkretni slučajevi kako koristiti Git. Većina developera će brzo i samostalno naučiti osnove korištenja, ali do najbolje prakse će doći tek vremenom. Bilo bi zgodno kad bi im netko skratio to vrijeme.
Like every year, we had our local Linux conference. It was very intense event (for first year I'm involved in real organization) and I can say it's all just a big blurb.
I had two tutorials, one about my Virtual LDAP and another one about creating Google like (horizontally scalable) cluster from library building. In this one, I covered a whole bunch of tools which I ended up using during last year:
During the conference I wrote small project to index git log messages using Sphinx which might help you to get started with it.
From what Google is doing in Chrome/Cromium browsers it is obvious that Google wants http to disappear. Google is saying that http confuses regular users, but that is just pure PR nonsense and a lie.
The real reason is that spdy:// would confuse users, but Google is spinning it a different way and Chrome/Chromium developers must do as Google tells them to do.
If you aren’t familiar with spdy:// it is a new and protocol that is faster and better than http protocol for browsing, it is developed by Google.
Spdy hasn’t gained much traction since it’s announcement, and none of major sites uses spdy protocol yet, so to make it ambiguous Google has decided to remove http from Chrome/Chromium browsers address bar thus causing lots of havoc.
Chromium developers aren’t listening to any comment and just ignore all issues that have been cropping up. For me first issue is that copy/paste of url links on Linux is broken, but there are more serious issues if you read through comments.
Now even commentig is disabled and on the bug page there is a message saying: “This issue is read-only. New comments cannot be added.” This is a really bad move from Chromium developers. The discussion was locked on first mention of spdy protocol.
The obvious solution to show http:// when users click on the address bar just isn’t what Google wants, no matter what users want.
Zadnjih par mjeseci važem razna rješenja za pretraživanje teksta, a kako mi je u fokusu Django onda mi je Haystack bila glavna igračka za traženje igle u plastu sijena. Haystack je samo jedinstveni API ispod kojeg možete prikačiti neko od rješenja za pretraživanje (Solr, Whoosh, Xapian). Zgodan je u slučaju da niste sigurni koje će rješenje koristiti vaša aplikacija, pa s njime možete biti sigurni da nakon izmjene mašine-tražilice ne morate mijenjati kod.
Kako nam je DORS/CLUC doveo Andrewa Aksyonoffa mislio sam kako ne bi bilo loše provjeriti što njegov Sphinx nudi. Ipak on ima slične probleme s čudnim slovima i još čudnijim jezikom kao i mi pa su nam rješenja na sličnim valnim dužinama. Za vrijeme radionice uspio sam indexirati bazu tekstova jednog manjeg portala, stvar je odlično fercerala, a weighting je bio odlično pogođen za moj testni uzorak. Kako postoji django-sphinx vrlo vjerojatno će sve to brzo u produkciju…
GIS mi je oduvijek bilo nešto čime bih se želio baviti, a nisam bio u prilici i zbog toga me jako zanimalo što će Darko Boto reći na temu GIS-a na GNU/Linuxu. Na radionici se koristio Arraramagong live DVD s hrpom predistaliranih aplikacija (isključivo pod pokroviteljstvom OSGeo fondacije).
Svežanj predstavljenih aplikacija je pokazao kako su GIS FLOSS rješenja itekako konkurentna. S njima možete napraviti sve što možete zamisliti, a i više od toga. Od manipulacije vektorskim i rasterskim podacima, njihove analize i obrade do vizualizacije na razne načine. Ima čak i moćnih GUI alata (Quantum GIS), a uz raspoložive podatkovne alate (prvenstveno PostGIS), odličan srednji sloj (MapServer, GeoServer, Mapnik) te web klijente (OpenLayers, GeoMayas, MapFish) više zaista nema opravdanja za nedostatak web aplikacija koje bi koristile te blagodati.
P.S. Vidi Podkast i Željko Filipin (of Watir fame
) predstavljaju dva DORS/CLUC predavača: Andrewa Aksyonoffa i Floriana Schießla.
Slijedom nespretnih okolnosti na DORS/CLUC 2010 sam došao tek na Mrakovo predavanje o predsjedničkoj kampanji na Linuxu. Jedna njegova rečenica je potvrdila ono što većina informatičara iz drugih tabora poriče: Linux je konkurentno rješenje za desktop u radno orjentiranoj okolini. To poricanje više proizlazi iz nedovoljnog iskustva, ustavljenih navika, pomalo i straha, nego što ima realne temelje. Što je to Mrak rekao? Neki ljudi osam mjeseci nisu skužili da rade na Linuxu, a ne na Windowsima.
Njegova priča potvrdia je i da su moje predodžbe o katastrofalnoj sigurnosti u državnim i javnim institucijama točne. Sigurnost se na svodi na postavljanje neprobojnog vatrozida. Računalna sigurnost je jedan složeniji proces u kojem sve pada u vodu ako ste zaboravili na najslabiju kariku.
Mrakovoj priči smo se uglavnom smijali, ali kad je Harald Welte počeo priču o katastrofalnoj sigurnosti GSM mreže sigurno je bilo onih koji su ozbiljno počeli razmišljati o tome da više uopće ne koriste mobitel. Harald je i glavni developer u OpenBSC projektu koji bi vam mogao biti zgodna igračka ako vam pod ruku dođe neka rashodovana bazna stanica.
Darko Sokolić i Hrvoje Vulin su pričali o DRBD-u, a ja sam shvatio da sam to vidio u produkciji i da čovjek to mene to vrti već 3 godine na produkcijskim poslužiteljima. Tonimir Kišasondi je nastavio u sigurnosnom stilu o sigurnosti autentifikacije i tokenima. U praksi je pokazao kako radi YubiKey.
Zanimljive novosti mi je otkrio Darko Gulija u svojem predavanju o spajanju distribuiranih podataka širom weba (Linked Data). Jedna od tih novosti (za mene) je DBpedia koja omogućava zanimljve upite nad podacima s Wikipedije.
Silvia Kolarić, uz podršku Vinka Prelca, pričala je o FLOSS-u u nastavi informatike u osnovnoj školi i predstavila aplikacije koje je ona koristila. Najavila je i projekt Menta, live DVD sa svim aplikacijama koje su potrebne u nastavi. Kroz predstavljanje se iskristalizirao glavni problem informatike u našim školama. Ovaj ili onaj operacijski sustav je tu najmanji problem, najveći je problem u školskom programu koji je skrojen po nekim čudnim mjerama i ne daje ono što bi trebao dati: osnovna i opća znanja koja su temelj za daljnju nadogradju.
Tijekom dana je više puta spomenuto kako na Linuxu nema virusa pa je tijekom Silvijinog predavanja iz auditorija stigla primjedba kako nije istina da za Linux nije potreban antivirus i da je to zavaravanje korisnika. Iako ne treba zanemarivati taj sigurnosni aspekt, činjenica je da velika većina Linux korisnika ne koristi antivirus, a da sigurnost njihovih računala nije zbog toga narušena. Primjer za to je i spomenutih 8 mjeseci predsjedničke kampanje i hrpa računala bez sigurnosnog incidenta.
Antivirusi imaju i dodatnu osobinu o kojoj se rijetko kada govori: usporavaju rad računala i stvaraju dodatne probleme. To se obično očituje kad treba kopirati datoteke s jednog mjesta na drugo (situacije u kojima je isključivanje antivirusnog programa dovelo do ubrzanja od 100 puta) ili kad nespretno zaključavanje datoteka uzrokuje neočekivano ponašanje aplikacija koje pišu u njih (korumpirane datoteke ;-)).
Žao mi je što nisam imao vremena popratiti uvod u NOSQL baze podataka i okrugli stol koji je slijedio nakon toga, ali valjda je to snimljeno pa se bude kasnije moglo pogledati.
Sve u svemu, zanimljiv dan na konferenciji.
CL-Javascript 0.10.05
With version 0.10.05 we announce the first public release of CL-Javascript, translator from Javascript to Common Lisp.
The main idea behind the project was to provide a way to extend CL applications (or libraries) with a standard and widely accepted scripting language. Javascript seemed to be ideal for such a purpose since the language is popular, quite small and its semantics are not that far from Lisp's.
Rather than writing an interpreter, CL-Javascript converts Javascript to CL, which is then compiled as any other Lisp program. With such an approach most of the runtime overhead is eliminated – although the function-calling protocol and runtime dispatching still make Javascript programs slower compared to pure CL.
CL-Javascript is licensed under the MIT Public License.
The official project page is at http://github.com/akapav/js
For parsing, CL-Javascript uses Marijn Haverbeke's excellent parse-js
library, which generates AST in a form of s-expression which perfectly
suits its needs. This AST is preprocessed (lexical scope analysis,
local function reordering, keywords changed to symbols from the JS
package, and some syntactic forms reduced) so that the resulting form
is a valid and executable CL expression in which every node is further
macroexpanded. On top of that there is a reader macro layer which
allows embedding parts of Javascript directly into Lisp code.
The rest of the system contains support for the JS runtime -- including object hash tables, functions, operators, as well as an implementation (currently incomplete) of the JS standard library.
Since there is no documentation (yet), here are a few examples how to
use CL-Javascript. It is important to mention that while all system
symbols are interned in the JS package, symbols generated during
program execution are interned in the JS-USER package.
At the moment, there are several ways to execute JS code from within Lisp.
Probably the easiest way to invoke JS code from CL is using the
js::!eval macro. The following example just prints hello world and
returns its result (UNDEFINED in this example) back to Lisp.
(!eval "print('hello world!');")
Reader macros are designed to embed JS code directly into CL. Code
between #{javascript} and . will be compiled and inserted
in-place.
In the following example an anonymous JS function is generated and returned to Lisp, where it can be used directly.
(defun sum-to (n)
(js::js-funcall
#{javascript}
(function(n) {
var sum = 0;
for(var i = 0; i < n; sum += i++);
return sum;
})
.
n))
Note that unless you are in the JS-USER package you should write
#{js::javascript} instead.
To load and execute external JS programs one should use the
js::js-load-file function which accepts a filename as its only
argument.
(js-load-file "hello.js")
JS-USER
At the moment, all properties of [object Global] are interned into
the JS-USER package, so they are directly visible form CL. If some
of those properties are function definitions then a defun wrapper is
also generated. The drawback to such an approach is that JS
properties are case- sensitive, while most CL implementations use an
uppercase symbol case policy.
#{javascript}
var one = 1
function adder(n)
{
return function(m) {return n+m;}
}
.
(js::js-funcall (adder one) 2) ;=> 3
this part will probably be changed soon
At the moment the only way to implement callback functions to CL is to
use the js-function macro.
Example from stdlib.lisp:
(setf (prop *global* "print") ;add 'print' property to global object
(js-function (arg) ;define js callable function
(if (undefined? arg) (format t "~%") ;underlying lisp code
(format t "~A~%" (js-funcall string.ctor arg)))))
There are also plans to allow direct embedding of Common Lisp code in
Javascript (the opposite of the #{javascript} reader macro), but
such a change would require some additional modifications to
Javascript's syntax.
Although most of the ECMA-262 standard is implemented, the project is still under heavy development. Known missing features are: bitwise operators, RegExp and Date classes, as well as some Number formatting methods. Error reporting still needs significant improvement; additionally, optimizations to operator dispatching would increase the overall performance of generated code.
The project is developed in SBCL, but since no SBCL specific extensions are used, it should be easy portable to any other Common Lisp implementation.
CL-Javascript uses a hybrid versioning schema - the first number indicates development stage (0 means no stable release yet), and decimal numbers indicate release date. In general, the schema for minor releases is [0,1,..].yy.mm, while stable releases use [1,2,..].00.00.
I love btrfs, and he hates me back. Tonight he decided to take away my holiday morning by spinning single core and bringing server down for three and half hours until I migrated everything back to ext4.
I will miss snapshots, but with all troubles I had so far, it's not worth it. See you in few years...
Na blogu, čiji je naziv predug i predosadan za navođenje, navedeno je 6 najboljih programerskih navika (u naslovu se spominje 5), a kako mi se čini da su natuknice odlične, a tekst nešto manje, onda sam odlučio da ih prepričam na svoj način.
Na greškama se uči. Kažu neki da je pametnije učiti na tuđim greškama, ali vlastite greške imaju bolji učinak. Kod greške je vrlo važno otkriti kako je došlo do nje i razumijeti okolnosti pod kojima je nastala. Nije dobro kad se greške javljaju zbog toga jer programer nije predvidio i obradio neregularne slučajeve (neočekivane unose). Poseban su problem programeri koji ne priznaju vlastite greške i svaki otkriveni bug smatraju napadom ne sebe. Bugovi su sastavni dio programerskog posla i svaki bi programer trebao imati razrađenu proceduru za njihovo rješavanje i preventivu. Poricanje to sigurno nije.
Najbolja rješenja su najjednostavnija rješenja. Ako je neki problem rješen na kompliciran način sasvim sigurno je pogrešno riješen. Jednostavno je u većini slučajeva i najbolje. Najveći problem je što je ponekad do jednostavnog teže doći. Tu su nam problematični programeri koji vole komplicirati jer jednostavna rješenja ne smatraju dostojnim njihove genijalnosti ili jednostavno ne znaju stvari rješavati na jednostavan način.
Komunikacija treba biti jednostavna i razumljiva. Programer treba znati što traži od korisnika i navesti korisnika da mu to kaže na najjednostavniji način. Problematični su oni korisnici koji pokušavaju programeru reći kako oni misle da bi problem trebalo riješiti. Ja sam korisnicima uvijek znao govoriti da zanemare tehnikalije te da mi pokažu kako oni rješavaju taj problem na papiru, bez računala. Nije potrebno da programeri korisnika zamaraju s tehničkim detaljima, to njih može samo zbuniti. Korisniku je važan ulaz i izlaz, crna kutija između njih je stvar programera.
Učenje novih tehnologija, metodologija i alata se podrazumijeva. Neki programeri su odabrali put u jednom pravcu i smatraju da ne trebaju učiti ništa izvan tog puta. Uvijek je dobro učiti nove stvari, čak i ako nisu u direktnoj vezi s specijalnošću nekog programera. Nešto što ste vidjeli u drugom dvorištu može vam dati ideju kako da riješite problem u svojem.
Oblačenje u tuđu kožu. Ako radite program za nekog korisnika, a smatrate da ne morate znati ništa o njegovom poslu, onda ste u krivu. Programer se mora ponekad naći u koži korisnika kako bi bolje razumio problem i na taj ga način bolje riješio. Iako programeri izrađuju programe, oni nastaju i rade se za korisnike i ne bi im trebalo biti ispod časti da snime stvari i iz korisničke perspektive.
Podučavanje. Ako ste sebični programeri i smatrate da je vaše znanje predragocjeno da bi ga samo tako dijelili s drugima, onda znajte da podučavanjem pomažete ne samo drugima nego i sebi. Kad drugima prenosite neko znanje onda ga morate uobličiti, sistematizirati, srediti. Tako možete otkriti neke nedostatke u vašem znanju ili u metodama. Pametan učenik će vam postavljati pametna pitanja. Možda ste preduboko ušli u rutinu pa vam neka jednostavna rješenja nisu tako očita kao nekome tko to gleda sa strane ili iz druge perspektive.
U tekstu govorim o programerima, ali zapravo mislim na one koji su stepenicu iznad toga i nazivaju ih developerima. Ne znam da li u hrvatskom postoji neka prikladna riječ za njih.
Kombinacija apache2-mpm-worker, php5-cgi, libapache2-mod-fcgid,
preporuča se na serverima gdje se očekuje velik broj upita prema web servisu.
Spomenuta kombinacija zahtjeva malo više RAM memorije, no to ovisi o MaxClients parametru.
Što veći broj uz parametar –> više rama za apache servis –> više simultanih konekcija prema web servisu.
Instalacija:
sudo apt-get install apache2-mpm-worker php5-cgi libapache2-mod-fcgid
Konfiguracija:
sudo vim /etc/apache2/conf.d/worker
AddHandler fcgid-script .php
SocketPath /var/lib/apache2/fcgid/sock
Options ExecCGI
IdleTimeout 10
ProcessLifeTime 360
MaxProcessCount 8
IPCConnectTimeout 8
IPCCommTimeout 5
<IfModule mpm_worker_module>
StartServers 50
MinSpareThreads 200
ThreadsPerChild 250
MaxRequestsPerChild 0
MaxClients 400
KeepAliveTimeout 2
ThreadStackSize 65536
</IfModule>
sudo vim /etc/apache2/sites-available/neki-web
<VirtualHost *:80>
DocumentRoot /var/www/neki-web
<Directory /var/www/neki-web>
FCGIWrapper /usr/bin/php-cgi .php
AddHandler fcgid-script .php
Options +ExecCGI
</Directory>
</VirtualHost>
Aktivacija neki-web stranice u apache-u:
sudo a2ensite neki-web
Restart servisa:
sudo /etc/init.d/apache2 restart
I have friend’s Asus eee 701 with only 512 Mb of RAM and 2GB SSD storage. I would like to install Fedora 13 on this netbook and increase SDD performance and speed via btrfs and enabling compression.
I immediately stumbled upon some issues:
- Anaconda graphical installed doesn’t support 800×480 resolution
- Anaconda text installer fails on 2GB SDD
- No support for btrfs compression during the install
I reported these three issues:
Any help with getting Fedora 13 installed on Asus eee 701 with btrfs + compression is more than welcome.
Can MySQL be slow? Yes it can. It depends on disk speed (even if you have fancy SSD drives) and some tuning can turn down query time dramatically, especially if you are currently using default settings and/or your accumulated several gigabytes of data. Sure, there is documentation about optimizing MySQL, and bunch of information on Internet but where to start?
For a start, download mysqltuner.pl or tuning-primer.sh and run them. While they won't give you exactly same recommendations it will give you nudge into right direction.
I would especially recommend setting innodb_buffer_pool_size to some reasonable number. This will provide immediate performance improvement, especially if you are running with default Debian settings and have couple of gigs of data.
But linking to scripts wouldn't be worth a blog post. Next step is to find which queries are slow on your system. To do that, you can use Maatkit or more specifically mk-query-digest. You can feed it with /var/log/mysql/mysql-slow.log or run in on live system:
$ wget maatkit.org/get/mk-query-digest $ perl mk-query-digest --processlist localhost --interval 0.01This will create considerable load on your system (since we are using inverval of 0.01 seconds to capture all queries running longer that that), but after you press Ctrl+C you will have good idea which queries need speedup. You can also take a look at Baron Schwartz video from OpenSQLCamp 2009 or presentation about mk-query-digest from PgEast 2010 if you want to know more. Hint: it supports MySQL (slow query log, binlog, genlog or tcpdump), HTTP, PostgreSQL and memcached.
If you are can modify application, dig into show queries. In my case, I found out that session handling in Koha takes more than 75% of all MySQL query time. I decided to leave this for future improvement. But, if you can't or don't want to modify application, simply move to next topic.
Yoshinori Matsunobu had great presentation Linux Performance Tuning and Stabilization Tips at recent MySQL Conference & Expo in which he covered all various ways to optimize Linux for MySQL workloads. I will summarize here just few parts which I found useful for my workload which involves multiple LXCs, each with own logical volume using btrfs and sitting on battery backed RAID controller.
hdparm -a 0 /dev/sdb
echo deadline > /sys/block/sdb/queue/scheduler
echo 0 > /proc/sys/vm/swappiness
mount /mnt/koha -o remount,nobarrier
So did all of this made sense? It's best to have clear goal when optimizing, and mine was less than 3 second web response. Without any MySQL tweaking and 3Gb database it was taking 5 seconds or more for each response. To my amazement, without any modification in application itself, I managed to produce visible improvement, even if only real comment I got was: It's not slow today :-)
The next stable release of
the awesome window manager
will introduce some new widget properties. When graphs and
progress-bars were ported to Lua, in the 3.3 to 3.4 transition, some of
the properties were lost. Most notably the progress-bar ticks, and the
graphs ability to draw multiple values at once. Well, they are back,
and will be included in awesome v3.4.5! To tell the truth they are not
as nice as the old properties, because I tried to keep them as simple
as possible (by design and implementation).
The progress-bar
ticks introduce two new methods: "set_ticks_gap" and
"set_ticks_size". Default gap size is 1, and tick size 4, in
respect to the default progress-bar width of 100px. That's what the
above picture shows, defaults. But if you use a lot of custom
properties, and change the progress-bar size, it's up to you to pick
the perfect gap and tick size for that progress-bar.
The graph
stacking (also called multigraph by some) introduces these new
methods: "set_stack" (false by default) and
"set_stack_colors" (i.e. {"red", "white", "blue"}). The
order of colors matters, because the "add_value" method now
accepts an (optional) last argument, an index of a color from your
stack color group. With these properties you can draw graphs similar
to those found in Gnome, feed them multiple values and by
specifying a color index they will all be drawn on the
graph.
Remaining two are smaller properties, but could be as important as the
others to some people. First of them found its way into awesome in the
current 3.4.4 release. The progress-bar "max_value" property
allows you to feed your progress-bars with any value without having to
scale it to the 0-1 range. Graph widgets already supported this. The
last property is the progress-bar "offset", which may not be
included after all, but some future user might want it so I'll link to
the mailing
list patch. With offset the progress-bar will be drawn distanced
from the border by as many pixels as the offset argument.
I have been following btrfs for quite some time. First I got kernel oopses with full disk (which have been fixed since), and then I began testing snapshots for incremental backup. Few weeks ago, I have taken a plunge and migrated by production server over to btrfs. I will try to summary first few weeks of my experience with it.
For a start, forget about using btrfs-tools which come with your distribution (Debian in my case). It's probably too old to include delete snapshot option which is really needed if you don't want to fill up your disk eventually. So, hop over to btrfs-progs-unstable and compile your own utilities.
With latest utilities at hand, I decided to make logical volume for each of my virtual machines. Before installing (or migrating) machine, create sub-volume. This is important because snapshot work on file-system or sub-volume level, and if you want to create incremental snapshots, you need to have sub-volume to snapshot.
root@prod:~# lvcreate -L 50G -n koha raid5
Logical volume "koha" created
root@prod:~# mkfs.btrfs /dev/raid5/koha
WARNING! - Btrfs v0.19-15-g8f55b76-dirty IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on /dev/raid5/koha
nodesize 4096 leafsize 4096 sectorsize 4096 size 50.00GB
Btrfs v0.19-15-g8f55b76-dirty
root@prod:~# mkdir /mnt/koha
root@prod:~# mount /dev/raid5/koha /mnt/koha
root@prod:~# btrfsctl -S rootfs /mnt/koha
operation complete
Btrfs v0.19-15-g8f55b76-dirty
Now, you are ready to install your machine in /mnt/koha/rootfs. After you have done that, you can create backup snapshots using something like this:
root@prod:~# mkdir /mnt/koha/.snap root@prod:~# btrfsctl -s /mnt/koha/.snap/2010-04-19 /mnt/koha/rootfs/ operation complete Btrfs v0.19-15-g8f55b76-dirty
Even, better, you can hop over to my sysadmin cookbook and fetch mksnap shell script which will create hourly snapshots of your machine for nice incremental backups. This is all nice and well, but after a while you will see that your disk-space increases all the time (which is expected because you are creating one snapshot every hour, collecting all changes).
As you can see in graph above, after two weeks of such usage, I figured out what I will run out of disk space eventually, and even worse, disk fragmentation begin to take toll on performance of my server. So, I implemented small perl script to expire snapshots older than 3 days (but keep single midnight snapshot for each day). I also decided to create cron job to defragment file-system every morning.
dpavlin@prod:~$ cat /etc/cron.d/btrfs-defrag PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 15 7 * * * root btrfsctl -d /mnt/koha/rootfs/
This did help a bit, but not good enough. I have three basic services on this box: Apache web server running perl cgi scripts, MySQL database and Zebra indexer. So, in a final step of despair (before going back to ext4) I decided to move Zebra to RAID1 volume which is on two separate disks. And it did make a huge change.
So, is btrfs ready for usage in production? That depends on your IO load. If you have to more-or-less random IO workloads (like RDBMS and full-text indexer in my example) spreading it over multiple disks will provide better performance than any choice of file-system. But, if snapshots are something useful for your use-case, give btrfs a try. Also have in mind that recovery tools for btrfs are... non-existent. So make backups (which is good idea anyway) and remember that btrfs snapshots on same disks don't count as backup.
I got a new workstation last month, a laptop from the ThinkPad SL
series. The TuxMobil article
about installing Arch Linux on it
is here. Overall
it works good, but I soon regretted the decision to go with
Lenovo. The ACPI support is almost non-existent, none of the function
keys work, there's no bluetooth rfkill so it constantly draws power,
and the machine can't wake up from suspend.
It is my workstation, but still what use is a laptop without any power
management features? It's 2010, and I can barely comprehend the
suspend/hibernate situation in Linux. Last two years
with my
TravelMate have been a constant battle, 3 months of suspend
working, followed by periods when it was broken. Last of which is
especially ugly,
it breaks hibernation
for people with Intel graphics. Worst of all, in periods when it
was working you still couldn't suspend because you couldn't trust
it.
These machines actually have the IdeaPad firmware, which
rules out using thinkpad_acpi. Next up was
lenovo-sl-laptop,
a third party module which provides support for SL models, but only up
to SL500. Then I turned
to asus-laptop which
provides
official in-kernel
support for ThinkPad
SL. Unfortunately after
inspecting the DSDT developers concluded SL510 support is not
possible. These machines expose a wmi interface, but it's not
handled by any current module. Developing one will not be
easy.
I don't want to write to kernel mailing lists or Lenovo until I find
more owners of SL510, or some other model with the same
interface. Individually we could be ignored, together maybe we get the
ball rolling towards "lenovo-sl-wmi".
Fightclub se isprva činio kao super ideja. Predstavljanja učesnika su bila forastična pa su i očekivanja bila veća. Nisam baš potpuno popratio cijeli događaj, što zbog nestabilnosti u potprostoru, što zbog loše postavljenih mikrofona, ali ono što sam vidio i čuo je bilo na razini forumskih prepucavanja. Složio bih se sa zaključkom da po obicaju, iPhone tim svoje argumente temelji na stvaranju buke
.
iPhone tim je imao loše i maglovite argumente. Ne troše mobilni bandwidth jer na svakom čošku je neki Wi-Fi
( iliti kradite bandwidth od ljudi koji ostavljaju nezaštićene mreže ), c00l fora su aplikacije za slušanje radija koje su besplatne ( ali troše bandwith koji nije ), iPhone je teško uništiti ( propustili su to pokazati s vlastitim uređajima)…a služili su se i krivim informacijama (o demografiji BB kupaca, najzeleniji telefon, a Greenpeace je bio protiv njega).
BB tim je bio dobroćudniji, samozatajniji, ali je naveo više konkretnih argumenata. Propustili su iskoristiti protunapad na temu aplikacija ( za BlackBerry može bilo tko izraditi aplikaciju i ponuditi je za download svim korisnicima, na svojem web poslužitelju, bez da trebaju moliti vrhovno božanstvo za dopuštenje). Propustili su i pitati iPhone korisnike koliko ono plaćaju za ono trenutno syncanje svojih podataka (99$ godišnje).
Voditelj nije bio na visini zadatka, ovakvi događaji koji imaju geekove (ili one koji naginju na tu stranu) za publiku ne trebaju poznatog i štosnog voditelja već nekoga tko se malo više razumije u problematiku i koji bi znao presjeći prazne riječi i zakuhati raspravu u pravom času.
Da moram birati, na temelju viđenog na #fightclub-u, odabrao bih BlackBerry pragmatizam nasuprot vjerskoj magli iPhone tima.
Vlastito iskustvo s jednim i drugim uređajem odvuklo bi me na iPhone stranu, i to najviše zbog toga što mi stvari, u kojima je BlackBerry jači, nisu najvažnije. A i onaj njihov preglednik je stvarno grozan.
U jedno sam siguran, moj slijedeći mobitel će biti neki Android, mada mi i neki Nokijini uređaji golicaju znatiželju.
The iPad was released and sales are sky high, software wise
it is terrible but the fact makes me happy anyway. We are getting
closer to some of the ideas laid down in 1994 by Neal
Stephenson in his
book The Diamond
Age. Even though
the age of
nanoscience is only just beginning, there are some fundamental
similarities between his Illustrated Primer, today's eBook
readers, OLPC and the iPad.
These are the primers of the early 21st century. Beautiful devices
that we read from, learn from and play with. We could consider our
laptops as primers, but I can't wait to get my hands on one
of those devices. At this point most likely
the Sony
PRS-600. Even though much different than the iPad it is still my
first choice, because of the software limitations but also
practicality. I would use a pad mostly for reading anyway,
and here the E-Ink
has the advantage, regarding contrast and battery life. Multiple new
devices, by just about every big player on the market, were already
announced. Some of them will run GNU/Linux and in the long
run that will probably prove to be the best choice.
The mock-ups of next
generation OLPC, the
XO-2 are probably the closest, especially considering their role,
to truly serve in education of children. The now classic
article, Sic
Transit Gloria Laptopi, by Ivan Krstic addresses some
problems, and reminds me once more I shouldn't get carried
away. There's still a long way to go. Gillian 'gus' Andrews
gave an interesting talk on the subject, at
"The Last HOPE"
conference. The audio is still
available: Hacking
the Young Lady's Illustrated Primer.
Planet Linux.hr is an aggregation of Linux and Open Source themed blogs written by Croatian people from the whole wide world. Blog entries aggregated on this page are owned by, and represent the opinion of the author.
Planet Linux.hr je skup blogova sa Linux i open source tematikom koje pisu nasi ljudi u domovini i inozemstvu. Clanci sakupljeni na ovoj stranici su u vlasnistvu i predstavljaju misljenje svojih autora.
Last time updated: 03. 09. 2010. 10:00
Aggregated blogs:
If you want your blog to be aggregated on this planet, contact Senko Rasic.