Kako naučiti vožnju bicikla - metod otkrivanja
“Najbolji način da bilo ko, mlad ili star, nauči vožnju bicikla je da sam otkrije u čemu je trik, na isti način na koji je bicikl i izmišljen. Otidite do nekog tihog mesta na otvorenom, kao što je park, i transformišite bicikl u originalni “hobby-horse”, preteču modernog bicikla: skinite pedale (viljuškasti ključ 15-ica, leva pedala se odvija nadesno), i spustite sedište, tako da vozač može da dohvati stopalima tlo dok sedi. Pokažite vozaču kako se upravlja. Neka krene da se odguruje nogama, kao sa trotinetom. Pokažite mu kako se koristi kočnica. Nakon što bude u stanju da krene i stane, premestite se na neko mesto sa blagom nizbrdicom. Pojedinačna odgurivanja će postati sve duža i duža. Kad bude u stanju da pređe dobar deo bez dodirivanja zemlje, vratite pedale i samo gledajte.
Ovaj metod ne može da omane. Ne koristite pomoćne točkove, niti pokušavajte da pomognete pridržavajući bicikl. Metod otkrivanja obično rešava problem za 20 minuta, često i kraće, ali ako učeniku treba više, ne požurujte, cela poenta i jeste u tome da sve urade sami.”
(Citat iz knjige Richard Ballantine: Richard’s 21st-Century Bicycle Book)
Matori vic sa Sezama
O_Vicevi, Razno.3615, ivojnic
(19.3615) Cet 13/10/1994 15:42, 1085 chr
----------------------------------------------------------------
HMMM HEH ELEM mozhda ste ovaj vech chuli ali evo ga ponoivo ako ga je bilo
HHCrvenkapa vozila biciklo i biciklo se raspalo od starosti shta ce jadna
zamoli vuka da joj zavari biciklo,vuk pristane.Vari on tako celo jutro,vari
celo popodne, vari celu noch, i nakraju zavari biciklo crvenkapi ,buljavih
crvenih ochiju legne da spava, kad ono crvenkapa dolazi sa probne vozhnje.
Pita
nju vuk : je li kako ide biciklo? Crvenkapa odgovori odlichno si to zavario,
nego da ja tebe neshto pitam, izvoli reche vuk, jeli vuche zashto ti je tako
velik nos, vuk reche da te bolje omirishem, a jeli vuhe zashto su ti tako
velike ushi, vuk reche da te bolje chujem, pita ga ona na to jeli vuche z
zashto su ti tako veliki zubi, on njoj reche pa znash ja sam vuk moram imati
velike zube da bih mogao da grizem, na to crvenkapa pita vuka jeli vuche a
zashto su ti tako veliMMMMMke ochia vuk che nato PA PIZDA TI MATERIN ZAR TI
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM KHHNISAM CEO DAN VARIO
PA PIZDA TI MATERINA ZAR TI NISAM CEO DAN VARIO BICIKLO ljutito che vuk!
-------------------------------------------------19.3615 --
Mac-like drag-locking on Linux
If you have used a Mac and “tap to click” option on it, you probably know about drag locking, i.e. the ability to shortly raise your finger from the touchpad while not stopping the dragging (say when you are marking some text, and your finger reaches the end of the touchpad).
Well, there is the same feature on Linux as well, just there’s no GUI (as far as I know) for turning it on. Console to the rescue! Just do this:
synclient LockedDrags=1
and you will have locked dragging. The initial timeout is too long though (5 seconds), so you will probably want to make it shorter, something like half a second or so (play with different values until you reach what suits you the best):
synclient LockedDragTimeout=500
And you’re good to go. In LXDE, you can put these setting to ~/.config/lxsession/LXDE/autostart to make it permanent.
If “tap to click” doesn’t work by default, turn it on using
synclient TapButton1=1
VLC and Conky
I needed a way to display currently playing item from VLC in Conky. The usual solution doesn’t work for me as it doesn’t seem to display track names when listening to radio streams.
So here’s an alternative way which utilizes window title of VLC window (which actually displays track name). It uses xlsclients command which lists currently opened X11 windows and their properties. Combine that with grep and you can have the track title…
So, at the end, I just put this to my .conkyrc:
${exec xlsclients -l | grep "VLC media player" | cut -c -9 --complement}
gnome-panel is dead, long live gnome-panel! →
TL;DR: You can reorganize your gnome panel by using Alt when right-clicking. Whew.
Matching successive records using self-join
SQL joins can be really powerful once you got the hold of them. Especially interesting could be self-joins, i.e. joining the table onto itself.
Let’s say you have a table of daily temperatures:
create table temperatures (
id serial,
date date,
temp numeric(4,2)
);
insert into temperatures (date, temp) values ('2011-09-01', 30);
insert into temperatures (date, temp) values ('2011-09-02', 28);
insert into temperatures (date, temp) values ('2011-09-03', 27);
insert into temperatures (date, temp) values ('2011-09-04', 32);
insert into temperatures (date, temp) values ('2011-09-06', 26);
select * from temperatures;
id | date | temp
----+------------+-------
1 | 2011-09-01 | 30.00
2 | 2011-09-02 | 28.00
3 | 2011-09-03 | 27.00
4 | 2011-09-04 | 32.00
5 | 2011-09-06 | 26.00
(5 rows)
Say that we want a query which would, for each day, calculate the difference between that and the previous measurement.
We will start with a simple query to get all date’s temperatures:
select date, temp from temperatures order by date;
date | temp
------------+-------
2011-09-01 | 30.00
2011-09-02 | 28.00
2011-09-03 | 27.00
2011-09-04 | 32.00
2011-09-06 | 26.00
(5 rows)
Ok, that’s easy. Now we will expand this table with other dates, but we can narrow our query to only get dates prior to the current one:
select t1.date, t1.temp, t2.date
from temperatures t1
left join temperatures t2 on t1.date > t2.date
order by t1.date, t2.date;
date | temp | date
------------+-------+------------
2011-09-01 | 30.00 |
2011-09-02 | 28.00 | 2011-09-01
2011-09-03 | 27.00 | 2011-09-01
2011-09-03 | 27.00 | 2011-09-02
2011-09-04 | 32.00 | 2011-09-01
2011-09-04 | 32.00 | 2011-09-02
2011-09-04 | 32.00 | 2011-09-03
2011-09-06 | 26.00 | 2011-09-01
2011-09-06 | 26.00 | 2011-09-02
2011-09-06 | 26.00 | 2011-09-03
2011-09-06 | 26.00 | 2011-09-04
(11 rows)
Now we have matched every date with all previous dates. (An important thing to note is that 2011-09-01 doesn’t have matched record. That’s because there is no date prior to 2011-09-01 in the table). So, for example, for 2011-09-04 we have all three, 01, 02, and 03. matched. We need just the most recent one, i.e. 03.
We will now use a trick to achieve this. We will add another join to eliminate all the dates but the most recent one:
select t1.date, t1.temp, t2.date, t3.date
from temperatures t1
left join temperatures t2 on t1.date > t2.date
left join temperatures t3 on t3 < t1 and t2 < t3
order by t1.date, t2.date, t3.date;
date | temp | date | date
------------+-------+------------+------------
2011-09-01 | 30.00 | |
2011-09-02 | 28.00 | 2011-09-01 |
2011-09-03 | 27.00 | 2011-09-01 | 2011-09-02
2011-09-03 | 27.00 | 2011-09-02 |
2011-09-04 | 32.00 | 2011-09-01 | 2011-09-02
2011-09-04 | 32.00 | 2011-09-01 | 2011-09-03
2011-09-04 | 32.00 | 2011-09-02 | 2011-09-03
2011-09-04 | 32.00 | 2011-09-03 |
2011-09-06 | 26.00 | 2011-09-01 | 2011-09-02
2011-09-06 | 26.00 | 2011-09-01 | 2011-09-03
2011-09-06 | 26.00 | 2011-09-01 | 2011-09-04
2011-09-06 | 26.00 | 2011-09-02 | 2011-09-03
2011-09-06 | 26.00 | 2011-09-02 | 2011-09-04
2011-09-06 | 26.00 | 2011-09-03 | 2011-09-04
2011-09-06 | 26.00 | 2011-09-04 |
(15 rows)
What’s this? Even more records! We join with t3, but in such way that the date from t3 must be between dates from t1 and t2. But if you note the “missing” bits in t3.date column, you will see that for some date pairs from t1 and t2, there is no t3.date. That’s the records where t2.date is right before t1.date. We need only that records. So, we’ll just add WHERE clause to discard all the records where t3.date exists:
select t1.date, t1.temp, t2.date, t3.date
from temperatures t1
left join temperatures t2 on t1.date > t2.date
left join temperatures t3 on t3 < t1 and t2 < t3
where t3.date is null
order by t1.date, t2.date, t3.date;
date | temp | date | date
------------+-------+------------+------
2011-09-01 | 30.00 | |
2011-09-02 | 28.00 | 2011-09-01 |
2011-09-03 | 27.00 | 2011-09-02 |
2011-09-04 | 32.00 | 2011-09-03 |
2011-09-06 | 26.00 | 2011-09-04 |
(5 rows)
Right! Back to 5 rows, with just right values in t2.date column. Now all we have to do is add the temperature difference, and we’re done:
select t1.date, t1.temp, t2.date, t1.temp - t2.temp as diff
from temperatures t1
left join temperatures t2 on t1.date > t2.date
left join temperatures t3 on t3 < t1 and t2 < t3
where t3.date is null
order by t1.date, t2.date, t3.date;
date | temp | date | diff
------------+-------+------------+-------
2011-09-01 | 30.00 | |
2011-09-02 | 28.00 | 2011-09-01 | -2.00
2011-09-03 | 27.00 | 2011-09-02 | -1.00
2011-09-04 | 32.00 | 2011-09-03 | 5.00
2011-09-06 | 26.00 | 2011-09-04 | -6.00
(5 rows)
That’s it. :)
Publish photos from GMail to Picasa
You have received a bunch of photos to you GMail account, and you want to publish them to your Picasa web album, but you hate having them downloaded to your machine, and then again uploaded to web, especially knowing that both Gmail and Picasa are Google’s applications. Wouldn’t it be nice if Gmail had an option to, besides download, upload the photos directly? Unfortunately, no such option.
There’s a workaround though. Go to your Picasa web account, go to photo settings page, there you will see an option to enable “email to Picasa”, by setting a special email account at @picasaweb.com. Just enable it, go to your Gmail, and simply forward your email with attached photos to newly created email address. You will get your photos imported to Picasa almost instantly.
7 krugova pakla
(ili “7 razloga za pravdanje krađe para od poreskih obveznika preplaćivanjem državnih sajtova”)
Nakon reakcija iz branše na po ko zna koji preplaćen državni sajt, palo mi je na pamet da sistematizujem i klasifikujem sve vrste griža savesti koje se javljaju, kao i načine za njihovo suzbijanje.
Da počnemo od najbanalnijih, ali i najtežih za suzbijanje…
7. Primate platu od države
Ovo je lagano. Ne sečete granu na kojoj sedite. Daleko bilo da podignete svoj glas i otvoreno kažete šefu da to ne košta toliko i da nije u redu što je nabacio posao svom kumašinu nego da je trebalo da se raspiše tender. Ne samo da biste ostali vi bez posla, nego i vaša žena i pašenog, koje ste ugurali na državne jasle preko poznanstva.
6. Dobili ste posao od države
Jasno - ne grizeš ruku koja te hrani. Konkurencija je gadna, vi ste naprimali kadar, ima tu i nešto slabijih programera, treba vremena (i para) dok se uhodaju, iznajmili ste fensi kancelarije, treba to pokrpiti. Pa nećete valjda u starkama raditi posao za Vlast?!
5. Niste dobili još nijedan posao od države, ali radite na tome
Pratite tendere, ortačite se sa perspektivnim partijskim kadrovima, pravite “socijalnu infrastrukturu” za buduće poslove. Ovaj posao su maznuli drugi, ali sledeći je vaš, kad ministarstvo gde radi vaš budući kum dođe na red. Ne želite da se sutradan postavi pitanje da li ste naplatili previše. I ako se postavi, pokazaćete prstom na svoju računicu od prošle godine gde ste matematički precizno dokazali da ni prethodnih N sajtova nikako nije preplaćeno.
4. Radite za strance i to dobro naplaćujete
Kada ste prethodni put stranom partneru lupili cifru triput veću nego što mislite da vaš rad zaista vredi, jako ste se iznenadili kad je pristao. Ali, kontate, tamo stručnjaci skupi, vi kvalitetni i pouzdani, nema razloga da vas grize savest. Lako ste se navikli na “zapadnu platu” u Srbiji. Ali pomalo vam je glupo kad vidite da se ovde ljudi prodaju za sitne pare, samo obaraju cenu u branši. Ko vam garantuje da sutra vaš strani partner neće uzeti baš nekog od njih za duplo manje nego što mu vi fakturišete. Zato neka, 50k€ i nije neka cifra za švajsovani Džumla templejt, kad malo bolje razmislite.
3. Radili biste, al n’ umete
Nikako vam nije jasno kako vaš ortak sastavi sajt za nedelju dana. Vi malo natucate Fotošop, nešto uspete u Drimviveru da nakrpite, PHP razumete kad je lepo napisan. Ej, nije to laka stvar napraviti sajt. Ljudi uče to programiranje po 10 godina, te fakulteti, te sertifikati… Treba imati rispekt za taj uložen rad (i novac). Te uložene pare i to uloženo vreme moraju se u jednom trenutku isplatiti… Džaba se vi danas mučite da učite, jedno po jedno, ako sutra to neko neće znati da ceni i plati.
2. Nekako želite da nosite kravatu
Stalo vam je da ortacima iz srednje koji su vas stalno zajebavali pokažete da ste postali neko i nešto. Hoćete da vas cene, da vas cice gledaju sa poštovanjem, da možete da smuvate i neku “pravu ribu” a ne samo bubuljičave wannabe sponzoruše i debele metalke. Da skinete najzad te starke, godine prolaze, nema više zezanja, dosta furanja nerd-imidža, treba se skinuti matorima s gajbe, kupiti neki pristojan auto. A šta je 50k€, potroši se začas. A cilj opravdava sredstvo.
1. Jednostavno ste konformista
Većina sa Tvitera tako misli a vi ne želite da se konfrontirate. :)
Limundo, sitnice koje smetaju
Redovno koristim Limundo i, iako je u pitanju sasvim funkcionalan sajt sa sada već vrlo velikim komjunitijem, ima par stvari koje čine da Limundo i dalje odaje utisak nedovršenog i poluamaterskog proizvoda. U pitanju su sitnice koje bi bilo lako ispraviti, a znače puno:
Two-level security
Ne želim da moram da se logujem uvek kad pristupam sajtu. Ni GMail ne zahteva logovanje pri svakom pristupu. Umesto toga, treba omogućiti dva nivoa pristupa: prvi nivo sa trajnom sesijom za “soft” pristup sajtu - posmatranje svojih i tuđih aukcija, čitanje pošte, i drugi nivo, sa dodatnim logovanjem i kratkotrajnom sesijom - za postavljanje aukcija, bidovanje itd. Ovaj sistem koriste i GMail i Amazon, recimo.
Auth token u email linkovima
Ako mi Limundo pošalje email (npr, kada primim novu poruku), želim da se klikom na link u mejlu automatski prijavim u prvi security nivo na Limundu, bez potrebe da kucam svoj username i password ponovo. Sama činjenica da imam pristup svom mejlu znači da imam pristup i svom Limundo nalogu.
Automatsko produžavanje aukcije pri bidovanju u poslednjim minutima
Popularni “fazon” na Limundu je bidovanje u poslednjim sekundama aukcije. Na ovaj način kupci se dovode u neravnopravnu situaciju (od aukcije pravi se igra na sreću), a predmet prodaje ne uspe da dostigne punu vrednost, tako da je i prodavac, a posredno i Limundo s obzirom da radi na procenat, oštećen.
Aukcija treba da se automatski produži za par minuta, ako je ponuda postavljena u poslednjim minutima (tako npr. funkcionišu neki onlajn sportski menadžeri tipa hattrick.org). Na taj način predmet će prirodno dostići svoju tržišnu cenu a niko od kupaca neće se osećati frustrirano ako je bio spreman da ponudi višu cenu od ostalih.
Izmena lozinke treba da ide kroz verifikacioni link
Trenutno bilo ko ko zna moju email adresu može da promeni moju šifru. To nije ok. Umesto ovog, u mejlu koji dobijem kad kliknem “zaboravio sam šifru”, treba da stoji jedinstveni link kojim potvrđujem izmenu šifre, tj. šifra treba da se promeni tek kad ja, vlasnik email naloga, odradim svesnu akciju. U suprotnom, šifra treba da ostane ista kao ranije.