Recent Updates Page 7 Toggle Comment Threads | Keyboard Shortcuts

  • Urban 22:39 on 2 May. 2011 Permalink |  

    Pot pod noge 

    There is nothing like walking to get the feel of a country.  A fine landscape is like a piece of music; it must be taken at the right tempo.  Even a bicycle goes too fast.  ~Paul Scott Mowrer, The House of Europe

    Ko skočim na kakšen oddih, ponavadi pešačim, da na koncu dneva bolijo noge (ne samo, da tako veliko vidiš, še zdravo je). Zdaj, po prvomajski turi Budimpešta-Bratislava-Dunaj, imam prvič vsaj približne gabarite: kje se gibljejo številke in koliko imam prehojenih kilometrov, če ne šparam s koraki.

    Sicer s sabo že dolgo vlačim tudi Garmina, vendar se po mestih, kjer je zaradi stavb vidno le malo neba, ne znajde prav dobro (pa tudi baterija mu hitro izdihne). Že zato je za merjenje razdalj praktično neuporaben (da ne omenjamo pokritih prostorov).

    Tudi moj hack GPS-a na telefonu se je v tujini izkazal za precej neuporabnega. V Sloveniji je še dobro delal, kot je razvidno s spodnjega zemljevida. Potem pa je telefon zamenjal omrežje in ker sem imel izklopljen roaming, je navigacija odpovedala. Za geolokacijo s Cell ID ali WiFi BSSID je namreč potrebna podatkovna povezava (d’oh), ki pa jo brez roaminga ni. Na GPS brez asistence prav tako ni za računati, ker rabi približno 5 minut za hladen štart. Torej bolj malo datapointov.1

    Fitbit to the rescue. Sicer nimam lokacij kjer sem se sprehaljal (nekaj točk vseeno ima telefon, če sem bil dovolj časa na odprtem, da je GPS dobil fix), imam pa kilometrino.

     

    Spodnja statistika je presegla moja pričakovanja in je krepko nad nenehno izmikajočimi se 70.000 koraki (~50 km) na teden:

    • v 10 dneh prehodil 232.208 korakov
    • skupaj čez 175 km (peš), kar je cele 4 ‰ Zemljinega obsega 🙂
    • oz. v povprečju 17+ km na dan

    Oz. drugače, nekdo ki bi vsak dan naredil “samo” 17 km, bi v dobrih 6 letih prepešačil celoten obseg Zemlje na ekvatorju: 40.075 km.

    V glavnem, hoja je precej podcenjena. Čeprav je naše telo zgrajeno zanjo, se danes umika prevoznim sredstvom, dvigalom in tekočim stopnicam, mi pa postajamo sedeči zombiji.

    Avtor strani Zenhabits takole pravi (v svoji objavi “38 stvari, ki sem se jih naučil v 38 letih”), in najbrž ima prav:

    20. A good walk cures most problems. Want to lose weight and get fit? Walk. Want to enjoy life but spend less? Walk. Want to cure stress and clear your head? Walk. Want to meditate and live in the moment? Walk. Having trouble with a life or work problem? Walk, and your head gets clear.

    Vir: Zenhabits

    29. Don’t sit too much. It kills you. Move, dance, run, play.

    (ibid)

    1. Ko pa sem data roaming vključil, je telefon začel nalagati goro podatkov, in tokrat sem celo razumel zakaj: kot je razložil Jobs zaradi afere “locationgate”, telefon ob določenih lokacijskih zahtevah naloži crowdsourcano bazo bližnjih Cell ID-jev in WiFi MAC naslovov, da lahko kasneje lokacijo pridobi tudi v offline načinu; vir []
     
    • dare 22:55 on 2 May. 2011 Permalink

      jep, tudi jaz zadnje case veliko prebiram o hoji in vedno bolj verjamem vanjo.

  • Urban 23:26 on 7 Apr. 2011 Permalink |  

    Efficient server backup 

    I do back up my servers, of course1. I rsync the image files (VM snapshots, since all servers are virtual) to a remote location. The good part about VM snapshots is that a consistent disk state can be copied while the machine is running, regardless of the OS and guest FS (though, snapshots alone are also possible on NTFS, Ext+LVM, ZFS and possibly many other file systems, but each case has to be handled individually).

    So I devised the following strategy: since this site lives on a modest Linux machine with a net footprint of only 2GB, I decided to copy it off-site every night (rsync also compresses the data, so only 1GB has to be copied). For other (less actively changing) servers (net sizes of 10GB and 60GB), I decided on weekly and monthly backups, respectively. I have enough storage2, so I decided to keep old copies to have some fun (or rather, to see how long I’d last with Google’s strategy of not throwing anything away, ever).

    2GB is clearly not much, but it adds up over time. All in all, adding up all images, it should come close to 2TB / year.

    Now, 2 TB is also not that much. A 2TB drive costs about 80 EUR today3, and it will cost half as much before the year is over. But it becomes incredibly annoying to have your hard drive filled with nearly identical backup copies, gobbling up space like a starving sumo wrestler.

    So my first idea to bring the number down was to compress the backups on the fly. I played with NTFS compression on the target server and was quite satisfied: the images shrunk to about 60% of the original size, which would yield 1.2TB/year. Better.

    It’s well known that NTFS compression is not very efficient, but it’s pretty fast. That’s a trade-off I don’t really need for what is basically a one-time archiving.

    So I tried to shrink about 100GB of mostly duplicate data (50 almost identical images of 2GB, taken 24 hrs apart over 50 days) with different compression and deduplication software.

    For starters, since I had great experience with WinRAR, I tried that. WinRAR has a special “solid archive” mode which treats all files combined as a single data stream, which proves beneficial in most cases. Countless hours later, I was disappointed. Data only shrunk to about 40%4, which is exactly the same as if compressing individual files without solid compression. Pretty much the same with tar+bzip25, which performed a tad worse with 44% compression.

    This is an excellent moment to ponder on the difference between compression and deduplication: while they may seem the same (they both reduce the size of a data stream by removing redundancy) and even operate in a similar manner (at least in my case, where different files were concatenated together using tar) they differ in the size of the compression window. Bzips of the world will obviously only use small windows to look for the similarities and redundancy, while deduplication ignores fine-grained similarities and tries to identify identical file system blocks (which usually range from 4KB to 128KB).

    So I figured deduplication might be worth a try. I found an experimental filesystem with great promise, called Opendedup (also SDFS). I got it to work almost without hiccups: it creates a file-based container which can be mounted as a volume6. However, it’s turned out to be somewhat unreliable and crashed a couple of times. I still got the tests done, however, and it significantly outperformed simple compression by bringing the data down to 20% (with block size 128k; it might perform even better with a block size of 4K, but that would take 32 times more memory  since all the hash tables for block lookup must be stored in RAM).

    Next stop: ZFS. I repeated the same test with ZFS@8K blocks, and it performed even better with over 6-fold reduction in size (likely a combination of smaller block size and added gzip-9 block compression. Opendedup, however, doesn’t support compression) — the resulting images were only around 15% the original size.

    Impressive, but on the other hand, what the heck? There’s no way 15GB of unique data has misteriously appeared in 50 days within this 2GB volume. The machine is mostly idle, doing nothing but appending data to a couple of log files.

    I’ve read much about ZFS block alignment, and it still made no sense. Files withing the VM image should not just move around the FS, so where could the difference come from? As the last option, I tried xdelta, a pretty efficient binary diff utility. It yielded about 200MB of changes between successive images, which would bring 100GB down to 12% (2GB + 49 x 200MB).

    Could there really be that much difference in the images? I suspected extfs’ atime attribute, which would (presumably) change a lot of data by just reading files. It would make perfect sense. So I turned it off7. Unfortunately, there was no noticeable improvement.

    Then I tried to snapshot the system state every couple of hours. Lo and behold, deltas of only 100K most of the day, and then suddenly, a 200MB spike. It finally occurred to me that I’ve been doing some internal dumping (mysqldump + a tar of /var/www) every night as a cron job, yielding more than 200MB of data, which I’d SCP somewhere else and then immediately delete. And while deleting it does virtually free the disk space, the data’s still there — in a kind of digital limbo.

    So I tried to zero out the empty space, like this (this writes a 100MB file full of zeros; change the count to fill most of the disk; when done, delete it):

    dd if=/dev/zero of=zero.file bs=1024 count=102400
    rm zero.file

    The results were immediate: the backup snapshot itself shrunk to 1.7GB. And what’s more important: the successive backups differed by only about 700K (using xdelta again). My first impression is that Opendedup and ZFS should also do a much better job now.

    But having gone through all that trouble, I’ve found myself longing for a more elegant solution. And in the long run, there really is just one option, which will likely become prevalent in a couple of years: to make efficient backups, you need an advanced filesystem which allows you to backup only the snapshot deltas. Today, this means ZFS8. And there’s not that many options if you want ZFS. There’s OpenIndiana (former OpensSolaris), which I hate. It’s bloated, eats RAM for breakfast and has an awfully unfamiliar service management. And to top all that, it doesn’t easily support everything I need (which is: loads of Debian packages).

    Then there’s ZFS fuse, and ZFS on BSD. Both lag behind latest zpool versions singnificantly, not to mention slow I/O speeds. I just wouldn’t put that into production.

    Luckily, there’s one last option: Nexenta Core — Solaris kernel with GNU userland. I’ve seen some pretty good reviews which convinced me to give it a try, and I’ve been running it for a couple of weeks without problems. And if it delivers on its promise, it really is the best of two worlds. Included zpool (version 26) supports deduplication, endless snapshots, data integrity checking, and the ability to send an entire filesystem snapshot or just deltas with built-in zfs send. And the best part, compared to OpenIndiana: everything I need installs or compiles just fine. Expect to hear more about this.

    1. last week was World Backup Day 2011 []
    2. two 2TB WD elements attached to a recycled EEE701 netbook []
    3. look here []
    4. WinRAR 3.92, solid archive, compression=rar, method=best []
    5. simple tar cjvf, bzip2 v1.05 []
    6. I even succeeded mounting it as a drive under Windows, using Dokan, a windows version of FUSE []
    7. adding noatime flag in /etc/fstab and remounting the filesystem []
    8. I’m eagerly awaiting BTRFS, but currently it’s pretty much in its infancy []
     
    • dare 14:36 on 14 Apr. 2011 Permalink

      wow, you’re really into this sysadmin sheit 🙂

  • Urban 20:39 on 30 Mar. 2011 Permalink |  

    Obelisk Memo 

    Moja objava za Obelisk blog. Obelisk Memo je vaša zvočna beležnica, ko pri roki nimate svinčnika. Pokličete številko, poveste sporočilo, potem pa zvočno datoteko prejmete na e-mail.

    Se vam je kdaj zgodilo, da ste se nečesa spomnili, pa niste imeli pri roki pisala? Na primer na poti do parkirišča. Ko je padal dež. In ste ravno stopili v lužo. In še preden ste prišli do avta, ste že pozabili, za kaj je šlo.

    Gotovo gre za Murphyjev zakon, pa tudi za neko drugo, globljo, psihološko zakonitost: največ dobrih idej in prebliskov dobiš takrat, ko ne razmišljaš o problemu. Ampak takrat, ko recimo sediš v pregovorni kopalni kadi (tako kot Arhimed, ki je domnevno formuliral Arhimedov zakon, ko je videl, da njegovo telo izpodriva vodo). Ali ko sediš na vrtu, in ti na glavo pade jabolko (kot je domnevno padlo Newtonu, preden se mu je posvetilo, da vsaka stvar v vesolju z gravitacijo privlači vsako drugo).

    Globlji princip, ki stoji za tem, je povezan z zgradbo možganov. Večji del vse možganske aktivnosti se zgodi v t.i. limbičnem delu, ki je povezan s podzavestjo in najbolje funkcionira, ko ga pustiš pri miru. Iz česar lahko sklepamo, da se bodo dobre ideje vedno pojavljale takrat, ko pri roki ne bo pisala.

    Obelisk Memo

    In prav za take situacije smo na Obelisku razvili rešitev, ki smo jo poimenovali Obelisk Memo. Gre za preprosto glasovno beležnico. Takole deluje:

    • Pokličeš telefonsko številko storitve Obelisk Memo
    • Poveš svoje sporočilo
    • Posnetek ti pošljemo na e-mail

    Preprosto.

    Seveda porečete: saj smo v letu 2011. Imamo leteče avte in internetne možgane. Zakaj bi sploh potreboval tako storitev, če lahko iz žepa potegnem svoj iPhone ali Android telefon, odprem svojo najljubšo aplikacijo za snemanje govora (recimo Evernote), posnamem sporočilo, ga shranim, počakam da se naloži na strežnik, ter ga doma poslušam?

    Na to vam odvrnemo, da vsi uporabniki še nimajo tako naprednih telefonov. Tudi tisti, ki jih imajo, mogoče nimajo ustrezne aplikacije. In tudi tisti ki jo imajo, mogoče nočejo stati na dežju in brskati po menijih, medtem ko jim v čevlje pronica voda.

    Za uporabo storitve Obelisk Memo je dovolj klic na našo številko. Številko, ki jo lahko shranite med priljubljene kontakte. In pokličete z enim pritiskom, na napravi, ki bi pravzaprav morala biti, in najbrž tudi je, optimizirana prav za telefoniranje. Z ostalimi težavami se bomo ukvarjali mi.

    In nenazadnje, ta storitev ni prav v ničemer slabša od recimo Evernota. Kot e-mail namreč lahko uporabite kar vaš Evernote naslov, kamor je spročilo dostavljeno in takoj shranjeno tudi kot Evernote zapisek. Ali pa si v Gmail računu izdelate filter, ki vaša sporočila shrani pod posebno oznako.

     

     
  • Urban 01:31 on 18 Mar. 2011 Permalink |  

    Fitbit ali ne fit bit 

    Pisal sem že o merjenju: po eni strani zato, ker res verjamem, da brez podatkov o tem, kje si, ne moreš vedeti kam moraš iti, da bi prišel do cilja (oz.: kako sploh veš, da nisi že na cilju?). Po drugi strani pa je tudi vedno bolj jasno, da so podatki tisti manjkajoči člen, ki lahko gamificira katerokoli aktivnost.

    Marsikje je to postalo že logično. Vsakemu lastniku spletnega mesta je samoumevno, da spremlja podatke o obisku strani na Google Analytics in na podlagi tega poskuša oblikovati vsebino in obliko tako, da bi povečal obisk. In vsakemu razvijalcu iPhone in Android aplikacij je samoumevno, da spremlja podatke o prodaji aplikacij na App storu in išče strategije zniževanja cen, oglaševanja, ipd.

    Da bi dobil kakšen tak osebni stream podatkov, sem oktobra z veliko navdušenostjo nabavil Wifi tehtnico1. Poleg spremljanja grafov na sajtu in v iPad aplikaciji, sem zadevo polinkal tudi na Google Health, upajoč na Googlovsko nirvano podatkovnega zlivanja (če lahko napovedujejo gripo, pa naj še iz mojih podatkov kaj pametnega potegnejo). 🙂

    Ampak tam žal vidim samo en graf. Podatki zaenkrat samevajo med vsemi polji, ki jih Google Health podpira (višina, količina spanja, krvni tlak, idr.). Večino ostalih parametrov je namreč treba vnašati na roke.

    Google Health ima kakopak tudi API, preko katerega lahko vnašamo poljubne podatke, vendar pa to enostavno ni primerna platforma za ostale tipe podatkov, ki jih trenutno beležim (lokacijo in število kilometrov, ki jih dnevno opravi moj telefon, število tipk in klikov, ki jih dnevno odtipkam). Drug problem je dejstvo, da je potrebno urediti precej nekih detajlov, da Google pusti vpisovanje (API je namreč produkcijski, namenjen predvsem resnim institucijam, in zahteva vse od registracije sajta do SSL certifikata — vse to za par grafov).

    Zadnjič pa sem slučajno opazil v Healthu postavko “opravljeni koraki” (steps taken). Takoj mi je kliknilo, da se že dobro leto govori o zanimivem gadgetu z imenim Fitbit (nazadnje sem slišal Tima O’Reillyja, ki se je lani na Web2expu hvalil, koliko bolj je motiviran za športanje, odkar ga ima). Od takrat sem se nekajkrat že sam smukal okrog njihovega sajta, vendar še vedno dostavljajo samo v US. Na koncu sem se odločil, da ne bom več čakal, in sem ga naročil kar preko posrednika na eBayu.

    Nekaj prvih vtisov: presenečen sem bil nad robustnostjo; bal sem se, da ga bo vsak tresljaj vrgel iz tira, ampak očitno je to kar zrelo področje in jasno je, da mora upoštevati samo nek ozek pas frekvenc med hojo in tekom.

    Uporabniški vmesnik pedometra ima samo en gumb. S pritiskom preklapljaš med prikazom korakov, prehojenih kilometrov, kalorijami in rožico, ki raste glede na to koliko se giblješ (in še adaptivna je: bolj kot si fit, težje raste). Dolg pritisk pomeni začetek ali konec spanja, s čimer lahko beležiš trajanje in kvaliteto spanca. Ni pa on/off stikala. Če ga hočeš dejansko ugasniti, ga priključiš na dok in stisneš reset na doku. Ponovno pa ga vklopiš tako, da ga vstaviš v priključen dok.

    Tudi namestitev je dokaj enostavna — poveš samo višino, in kar sam določi povprečno dolžino korakov za hojo in tek, ki jih lahko kasneje po želji tudi popraviš.

    Fitbit seveda omogoča tudi sprotno uvažanje v Google Health — za to sem ga pravzaprav želel. Vedno se mi je zdelo, da je iz vseh teh podatkov mogoče iztisnit precej več kot 2 grafa, in sem računal, da bo to nišo prej ali slej nekdo zapolnil (če ne Google, pa kak startup).

    Zdaj pa se mi vse bolj zdi, da je mogoče prav Fitbit tisti startup: njihov lasten sajt je pred kratkim dodal še integracijo z zgoraj omenjeno Wifi tehtnico, tako da sedaj lahko avtomatsko in na enem sajtu spremljaš:

    • težo in % telesne maščobe (preko API-ja od serverja za tehtnico)
    • število peš kilometrov, opravljenih na dan
    • število kalorij, porabljenih na dan (vsota bazalnega metabolizma — to je kar porabiš, če nič ne delaš — plus kalorije ki jih porabiš ko se giblješ)
    • čas, ki ga prespiš (s pritiskom na gumb za 2s poveš, da gre za spanec)
    • kvaliteto spanca (akcelerometer beleži premikanje med spanjem, ki pomeni slab spanec)
    • procent nizke, srednje in visoke aktivnosti, in procent časa ki ga presediš (24h minus čas aktivnosti, minus čas spanca)

    Njihov sajt pa že zdaj omogoča tudi ročno vnašanje drugih podatkov: pritisk, srčni utrip, krvni sladkor, beleženje zaužite hrane, popite tekočine, in celo počutja (precej več in bolj prijazno kot Google Health).

    Glavna prednost pred Google Healthom pa so vizualizacije — kup lepih grafov, ki so (vsaj po mojem občutku) skrbno izbrani tako, da so čimbolj informativni. In količina informacij, ki so jo iztisnili iz samo 1 senzorja — akcelerometra — je impresivna.

    In da ne pozabim na gamification. Če si dodaš prijatelja in z njim tekmuješ kdo peš naredi več kilometrov, potem ti postane še kako pomembno, da kdaj parkiraš malo dlje. 🙂

    Nad eno stvarjo sem pa razočaran. Nimajo izvoza podatkov, in to bom že še uredil, pa četudi s svojim proksijem.

    So pa informacije na internetu dokaj skope. Sajt sicer lahko uporabljaš tudi brez fitbita in različne podatke vnašaš na roke; ni pa nobene demonstracije produkta in nobenih uradnih posnetkov na Youtubu. Tole spodaj je še eden boljših pregledov:

    1. ki btw. dela že pol leta povsem brez vzdrževanja in še s prvimi baterijami []
     
  • Urban 01:42 on 2 Mar. 2011 Permalink |  

    Prihodnost virtualizacije 

    Tale strežnik že od leta 2005 živi virtualno življenje. Za takratne čase zadovoljiva konfiguracija z 2 GB diska in 256 MB rama je začuda dovolj še celo danes, ko ima več spomina že vsak mobilni telefon (v 2 GB gre presenetljivo veliko plaintexta). Za primerjavo: ker komprimirana vsebina celotnega strežnika zasede le 800 MB, bi lahko na najmanjši iPad (16 GB) kar 20x posnel celoten image. 2 GB USB ključ pa v času tegale pisanja stane samo 5,6 EUR1. Moraš imeti rad Moorov zakon.

    Tule bi pa rad povzel dve prednosti, ki jih takšna postavitev prinese:

    1. Prenosljivost: operacijski sistem je inštaliran na generičnem virtualnem hardveru, kar pomeni, da lahko brez vsake modifikacije teče na kakršnikoli strojni opremi, kjer lahko teče npr. VMware strežnik ali VMware player (zadeva seveda brez težav teče tudi v VirtualBox-u).
    2. Možnost enostavne nadgradnje: z nekaj kliki lahko povečaš število navideznih cpujev, količino rama ali celo velikost diska2.

    Seveda je prednosti še več, zlasti, če imamo več kot en strežnik. Ena takih je statistični multipleks izrabe virov: ker praktično noben strežnik ni ves čas obremenjen na 100%, lahko resurse njegovega prostega teka izkoristi še kakšen drug strežnik. To pa pomeni prihranek električne energije, manjšo potrebo po hlajenju, itd.

    V moji viziji tak virtualni strežnik predstavlja nekakšen fluiden stroj (remember, you heard it here first 🙂 ). Njegov format je praktično že zdaj povsod poznan, v prihodnosti pa bo tako vseprisoten, kot je danes plaintext. Danes ga lahko na USB ključu prenašaš med različnimi gostitelji (hosts), jutri pa boš samo vtaknil ključ v Grid, tako kot danes vtakneš polnilec za telefon v električno vtičnico.

    Malo bolj realističen scenarij bo najbrž tole: strežnik poženeš pri ponudniku A; če se ponudnik A podraži, ga prekopiraš k ponudniku B. V primeru, da pride do oblačne katastrofe, potegneš iz naftalina zaprašen prenosnik, namestiš nanj Linux in VirtualBox, ter svoj strežnik gostiš sam. In to je — v samem bistvu — tvoj privatni oblak. Sicer zaenkrat še z ročno migracijo, vendar predvidevam, da ne bo dolgo, ko bodo virtualni imagi leteli preko interneta tako kot danes letijo e-maili, in sestavljali gromozanski globalni in odprti Vmotion™3.

    Počasi se že bližamo tej utopiji, saj lahko varnostno kopijo tega strežnika izdelam prej, kot bi presnel četrt ure HD videa, ter ga v 15 minutah poženem na praktično kateremkoli računalniku. VMware pa je pred kratkim (na letošnjem MWC) predstavil tudi virtualizacijsko okolje za Android mobilne telefone. Telefon, ki ima 1GB rama, 1GHz CPU, 32GB flash spomina in statičen IP naslov4, na njem pa teče podobno virtualizacijsko okolje, ni nič drugega kot privaten oblak, ki ga imaš vedno s seboj — v žepu.

    1. npr. tule: Ceneje.si []
    2. diska z nekaj več truda, ker je potrebno še naknadno resizanje particije []
    3. Vmotion je rešitev podjetja VMware, ki že zna seliti virtualne strežnike med fizičnimi serverji v isti gruči ter tako optimizira izrabo infrastrukture []
    4. glej npr. tole mobile IPv6 postavitev []
     
    • Roman 11:16 on 2 Mar. 2011 Permalink

      Dober post.
      Če gledam sebe dejansko imam že tako virtualno sedanjost.
      Zaželim si server in v 15 minutah ga že imam delujočega na virtualcu. Največji problem je določit kakšen server hočem :).

      Hvala za vse ribe … v oblaku.

    • Urban 22:39 on 2 Mar. 2011 Permalink

      Mogoče bomo pa lahko enkrat tud sebe virtualiziral.. ko enkrat dosežemo singularnost in ko pozaugajo prve človeške možgane na vmware, potem boš večen 🙂
      Lahko boš menjal hardware (različna robotska telesa), se suspendal, ali naredu snapshot in se vrnu v mladost, če boš rabu pa kašno pomoč, se boš pa kloniral 🙂
      pa še pobackupiran boš lahk fajn 🙂

    • dare 11:33 on 1 Apr. 2011 Permalink

      Nice informations for me. Your post has helpful. I wish to has valuable posts like yours in my blog. How do you find these posts?

    • dare 11:34 on 1 Apr. 2011 Permalink

      i kid.
      lajkam post, seriously.

    • Urban 22:05 on 1 Apr. 2011 Permalink

      lolz 😀

c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel