diff options
| -rw-r--r-- | blog/otherpost.txt | 4 | ||||
| -rw-r--r-- | blog/otherpost.txt~ | 4 | ||||
| -rw-r--r-- | blog/post.org | 4 | ||||
| -rw-r--r-- | blog/post.org~ | 4 | ||||
| -rw-r--r-- | blog/tekstinsyotto.html | 312 | ||||
| -rw-r--r-- | blog/tekstinsyotto.html~ | 312 | ||||
| -rw-r--r-- | blog/yksinkertaisesti-monipuolinen.txt | 226 | ||||
| -rw-r--r-- | generated/blog/otherpost.txt | 4 | ||||
| -rw-r--r-- | generated/blog/post.html | 210 | ||||
| -rw-r--r-- | generated/blog/tekstinsyotto.html | 312 | ||||
| -rw-r--r-- | generated/blog/yksinkertaisesti-monipuolinen.txt | 226 | ||||
| -rw-r--r-- | generated/img/colemak.png | bin | 0 -> 26216 bytes | |||
| -rw-r--r-- | generated/img/qwerty.png | bin | 0 -> 26194 bytes | |||
| -rw-r--r-- | generated/img/silakka54.png | bin | 0 -> 1343181 bytes | |||
| -rw-r--r-- | generated/static/global.css | 136 | ||||
| -rw-r--r-- | generated/static/silakka54-license.txt | 21 | ||||
| -rw-r--r-- | img/colemak.png | bin | 0 -> 26216 bytes | |||
| -rw-r--r-- | img/qwerty.png | bin | 0 -> 26194 bytes | |||
| -rw-r--r-- | img/silakka54.png | bin | 0 -> 1343181 bytes | |||
| -rw-r--r-- | lisp/org-publish-project-alist.el | 44 | ||||
| -rw-r--r-- | lisp/org-publish-project-alist.el~ | 33 | ||||
| -rw-r--r-- | static/global.css | 136 | ||||
| -rw-r--r-- | static/silakka54-license.txt | 21 |
23 files changed, 2009 insertions, 0 deletions
diff --git a/blog/otherpost.txt b/blog/otherpost.txt new file mode 100644 index 0000000..a9f90fd --- /dev/null +++ b/blog/otherpost.txt @@ -0,0 +1,4 @@ + +This is a plain text file + +* Please do not modify this ! diff --git a/blog/otherpost.txt~ b/blog/otherpost.txt~ new file mode 100644 index 0000000..def158f --- /dev/null +++ b/blog/otherpost.txt~ @@ -0,0 +1,4 @@ + +This is a plain text file + +* Please do not modify this diff --git a/blog/post.org b/blog/post.org new file mode 100644 index 0000000..6a6ac6d --- /dev/null +++ b/blog/post.org @@ -0,0 +1,4 @@ + +* Test Org post + +This is a test org post. diff --git a/blog/post.org~ b/blog/post.org~ new file mode 100644 index 0000000..2cb70e1 --- /dev/null +++ b/blog/post.org~ @@ -0,0 +1,4 @@ + +* This is a blog post + +Lorem ipsum diff --git a/blog/tekstinsyotto.html b/blog/tekstinsyotto.html new file mode 100644 index 0000000..9ae7d80 --- /dev/null +++ b/blog/tekstinsyotto.html @@ -0,0 +1,312 @@ +<!DOCTYPE html> +<html lang="fi"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link href="/static/global.css" rel="stylesheet" type="text/css"> + <title>Tarina toimivamman tekstinsyöttämiseni taustalla</title> + </head> + + <body> + <a id="skiptocontent" href="#content">Siirry pääsisältöön</a> + <header> + <a href="/fi/">FI</a> · <a href="/en/">EN</a> + </header> + <main id="content"> + <h1>Tarina toimivamman tekstinsyöttämiseni taustalla</h1> + +<p>Näppäimistöni ovat aina herättäneet hilpeyttä ystävieni keskuudessa. +Koska ensimmäisessä blogikirjoituksessani kerroin, kuinka näppärää raakateksti voi olla, +lienee sopivaa luoda katsaus, +miten kirjoitan ohjelmakoodia ja muuta raakatekstiä tietokoneella, + ja kuinka ohjelmisto- ja laitteistoratkaisuni tekstinmuokkauksen suhteen ovat muuttuneet ajan saatossa.</p> + + +<p>Joskus lukion alkupuolella siirryin asteittain käyttämään Linuxia, +ensin MinGW:n* kautta, sen jälkeen rinnakkain Windowsin kanssa +ja myöhemmin ainoana käyttöjärjestelmänäni. +Linuxin muokattavuus auttoi minua ymmärtämään, +että kykenen itse vaikuttamaan siihen, +miten ergonomisesti ja tehokkaasti kykenen työskentelemään tietokoneellani.</p> + +<p>Kun etsin tietoa netistä ratkaistakseni erinäisiä haasteita, +en voinut olla törmäämättä mainintoihin Vim-ohjelmasta. +Se on juurikin eräs ratkaisuista, +jotka ovat auttaneet minua parantamaan työskentelyni sujuvuutta.</p> + +<p>Vim on tehokas tilapohjainen tekstinmuokkausohjelma. +Sen tärkeimmät tilat ovat liiketila ja tekstinsyöttötila. +Tekstinsyöttötilassa kirjoitettu teksti päätyy kulloinkin auki olevaan tiedostoon**. +Liiketilassa taas voi siirtää kursoria ja suorittaa komentoja. +Liiketilan erillisyys tekstinsyöttötilasta on äärimmäisen hyödyllistä; +liiketilassa se mahdollistaa tavallisten kirjainten käytön liikkumis- ja yleiskomentoja vastaavina näppäinyhdistelminä. +Kursoria liikutetaan HJKL-näppäimillä nuolinäppäinten tavoin, +"N G" siirtää kursorin riville N, "$" taas rivin loppuun, +"y y" kopioi rivin, jolla kursori on ja niin edelleen. +Kaikkeen löytyy näppäinyhdistelmä. + Liiketilassa on helppoa yhdistellä, toistaa ja ketjuttaa komentoja. +Vimin etsi ja korvaa -toiminto on tehokkain, minkä olen nähnyt missään koodieditorissa.</p> + +<p>Tehokkaan tekstinmuokkauksen lisäksi +Vimin toimintaa voi muokata tarkemmin kuin useimpia muita tekstinmuokkausohjelmia. +Yksi osa tätä on nimenomaan liiketila – voit helposti lisätä näppäinyhdistelmiä, jotka tekevät mitä ikinä tahdot. +Pitkälti kaikkia varsin laajassa dokumentaatiossa [1] mainittuja komentoja ja muuttujia voi muokata omien mieltymystensä mukaan. +Vimiin on saatavilla runsaasti lisäosia [2], jotka voivat esimerkiksi lisätä Vimin yhteensopivuutta muiden ohjelmien kanssa. +Olen sittemmin siirtynyt käyttämään Neovimiä. +Se on Vimin modernimpi ja toteutukseltaan kevyempi***, mutta käytännössä samat ominaisuudet sisältävä versio. +Neovim sisältää sisäänrakennettuna jopa LSP-tuen [3]. +LSP:n tiedoilla se kykenee muun muassa huomauttamaan tekstin muokkaajaa virheistä tämän työstämässä lähdekoodissa. +Käytännössä ohjelma muuttuu LSP-serverin avulla täysiveriseksi IDE:ksi.</p> + +<p>Mikäli Vimin kuvaus jäi epäselväksi, on sen itse kokeileminen ja oppiminen sangen helppoa. +Sitä oppii käyttämään katsomalla pari tutoriaalia YouTubesta (esim. <a href="https://youtu.be/-txKSRn0qeA">youtu.be/-txKSRn0qeA</a>) ja tekemällä +Vimiin sisäänrakennetun tutoriaalin kirjoittamalla ":tutor" ja painamalla enteriä. +Jos Vimin asennus ei vielä houkuta, +löytyy samainen tutoriaali netistä, +esimerkiksi osoitteesta <a href="https://remarkablemark.org/vimtutor/">remarkablemark.org/vimtutor/</a>.</p> + + +<p>Viime aikoina olen myös tehnyt kokeiluja GNU Emacs -kehitysympäristön parissa, +ja olen vaikuttunut sen kyvyistä. +Lisäosien voimalla käytän sitä toistaiseksi kuitenkin enimmäkseen Vimin tavoin. +On muutenkin järkevää jättää sen käsittely myöhemmäksi – +se on luonteeltaan lähempänä käyttöjärjestelmää kuin tekstinmuokkausohjelmaa.</p> + + +<p>Toinen suuri muutos, +jonka tein vaihdettuani Linuxiin, +oli näppäimistöasetteluni vaihtaminen. +En koskaan oppinut kymmensormijärjestelmää kunnolla QWERTY-asettelulla, +muun muassa oudosti aseteltujen näppäinten vuoksi, +jotka hankaloittivat kymmensormijärjestelmän oikeaoppista käyttöä. +Lienee kuitenkin paikallaan selventää, +miksi QWERTY ei ollut minulle – ja tuskin muillekkaan paljon kirjoittaville – toimivin näppäimistöasettelu.</p> + +<p>QWERTY-asettelu kehitettiin aikanaan pääasiassa kirjoituskoneille. +Erilaisia asetteluita oli olemassa paljon, joista varhaisimmissa +näppäimet olivat käytännössä vain aakkosjärjestyksessä [4,5]. +Ensimmäisessä sähkeistä suoraan luettavaa tekstiä – morsekoodin sijaan – tuottavassa lennätikoneessa kirjaimet olivat aakkosjärjestyksen lisäksi kaikki samassa rivissä [6]. +Koska sellaisella näppäimistöllä oli vaivalloista kirjoittaa, siirrettiin kirjaimet kolmeen riviin ja numerot neljänteen. +Nyt peräkkäin ja vierekkäin olevat näppäimet saattoivat kuitenkin painaessa juuttua toisiinsa. +Ratkaisuna näppäimet aseteltiin siten, että useimmiten käytetyt näppäimet eivät olleet vierekkäin.</p> + +<p>Monilla Youtube-videoilla, joihin törmäsin todennäköisesti Linux-mielenkiintoni ja Youtuben algoritmin vuoksi, +perusteltiin toiseen näppäimistöasetteluun vaihtamista jotakuinkin vastaavasti. +Niillä vihjattiin, ettei ole järkevää, että useimmiten käytetyt kirjaimet ovat hajallaan ympäri näppäimistöä. +<a href="#fig1">Kuvasta 1</a> näkee helposti, +kuinka yleisimmin käytettyjä kirjaimia vastaavat näppäimet ovat QWERTYllä kaukana toisistaan. +Mistä muusta muutokset ihmisten käytöksessä nykyään johtuisivat kuin YouTubesta.</p> + +<figure id="fig1"> + <img src="/img/qwerty.png" alt="Kuva QWERTY-näppäimistöstä korostuksilla"> + <figcaption>Kuva 1. Englanninkielinen QWERTY-asettelu, jossa näppäimiä on tummennettu sen perusteella, kuinka paljon niitä vastaavat kirjaimet esiintyvät teksteissä Wikipedian mukaan [7]. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Ei ole perusteltua sanoa, että näppäinten asettelua näppäimistölle ei olisi aikanaan mietitty. +Olisi kuitenkin järkevämpää, että useimmiten käytetyt näppäimet olisivat niin kutsutulla kotirivillä, +jolla sormia oletusarvoisesti pidetään näppäimistöä käytettäessä. +Tällöin sormien tarvitsisi harvemmin jättää kotirivi, +kasvattaen kirjoitusnopeutta ja lyhentäen matkaa, joka sormien on kuljettava näppäimistön yllä.</p> + +<p>Joidenkin kokeilujen kautta päädyin käyttämään Colemak-näppäimistöasettelua [8]. +Vuosilukujen valossa sen voidaan olettaa olevan QWERTYä paremmin suunniteltu. +QWERTY syntyi 1800- ja 1900-luvuilla. +Colemak puolestaan on suunniteltu 2000-luvulla [9] tehokkuutta ergonomisuutta ajatellen [8]. +Tietokoneet oli kehitetty jo pitkälle, kun Colemak suunniteltiin, +joten sitä luodessa voitiin paremmin ottaa huomioon tekijöitä, jotka vaativat laajamittaisempaa laskennallista analyysiä. +Esimerkiksi saman sormen peräkkäisiä kirjainpainalluksia, +saman käden kirjainpainalluksia ja kotirivin eri puolille vuoroin kurottavia (esim. ”minimi” QWERTYllä) näppäily-yhdistelmien esiintyvyyksiä on voitu minimoida [10, 11]. +Yksinkertaisin argumentti Colemakin puolesta lienee se, +että useimmin käytetyt näppäimet sijaitsevat kotirivillä, +kuten <a href="#fig2">Kuvasta 2</a> näkyy.</p> + +<figure id="fig2"> + <img src="/img/colemak.png" alt="Kuva Colemak-näppäimistöstä korostuksilla"> + <figcaption>Kuva 2. Colemak, värikoodi tuotettu samoin kuin <a href="#fig1">Kuvassa 1</a>. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Colemak on toiminut hyvin omassa käytössäni. +Uudella asettelulla kirjoittamista harjoitellessa näppäimistöni näppäinhatut olivat fyysisesti yhä QWERTY-asettelussa. +Koska en voinut tarkastaa näppäimen sijaintia silmilläni, +opin kirjoittamaan katsomatta näppäimistöä ollenkaan, +mikä oli ollut minulle QWERTYä käyttäessä hankalaa. +Kirjoittaminen myös on myös tuntunut mukavammalta; +sormien tarvitsee harvemmin poistua kotiriviltä ja epämukavia näppäilysarjoja tuntuu esiintyvän harvemmin.</p> + +<p>On tietysti hyvä huomata, että Colemak on suunniteltu nimenomaan englannin kirjoittamista varten. +Tahdon itse käyttää kaikista järkevistä käyttöjärjestelmistä löytyvää yleisnäppäimistöä, +joka on samoin aseteltu riippumatta kielestä, jota kirjoitan. +Koska kirjoitan paljon sekä suomea että englantia, ja joskus ruotsia, +joudun joka tapauksessa näppäimistöasettelua valitessa tekemään kompromissin kielten välillä, +tai valitsemaan jonkun harrastelijan tekemän esoteerisen useamman kielen yhdistävän näppäimistöasettelun, +jota tuskin on todettu toimivaksi käytössä. +Kaikeksi onneksi Suomeakin kirjoittaessa Colemak on tuntunut minusta luontevammalta kuin QWERTY.</p> + +<p>Alun perin kokeilin ensimmäisenä näppäimistöasettelunani QWERTYn jälkeen Dvorakia****. +Saatoin mututuntumalla kirjoittaa Dvorakilla nopeammin kuin Colemakilla, +mutta sillä kirjoittaminen oli käsilleni epämukavaa, etenkin oikealle pikkurillilleni, +joka joutui usein kurkottamaan L-näppäimen perään. +Hiljalleen ymmärsin, +että itselle sopivaa näppäimistöasettelua valitessa +olennaisinta on asettelun ergonomisuus eikä kirjoitusnopeus. +Mitä hyötyä on nopeasta kirjoitustyylistä, +jos ei voi kirjoittaa rasitusvamman vuoksi.</p> + +<p>Näppäimistöasettelua valitessani minulle oli tärkeää myös erikoismerkkien helppo saatavuus. +Dvorakissa ei ollut juurikaan erikoismerkkejä, ei edes AltGr:n takana. +Colemakilla käytettävissäni ovat helposti muun muassa paljon käyttämäni +nk. ysiysi-lainausmerkit ‘”’ (AltGr+Shift+0) +sekä m-viiva ‘–’ (AltGr+-), ja mukavuuksina esimerkiksi +numeroiden potenssiversioita ‘¹²³’.</p> + +<p>Voit saada ensikosketuksen Colemakiin netissä esim. nopeuspelin <a href="https://gnusenpai.net/colemakclub/">gnusenpai.net/colemakclub/</a> kautta. +Asennus-/käyttöönotto-ohjeet Colemakille puolestaan löytyvät osoitteesta <a href="https://colemak.com/Download">colemak.com/Download</a>. +Muitakin eri tarkoituksiin optimoituja näppäimistöasetteluja löytyy runsaasti netistä, +mutta Colemak lienee kaikista testatuin ja luotetuin vaihtoehto, +joka löytyy monista laitteista vaihtoehtona ilman erillistä asennusta. +</p> + + +<p>Kiinnostuttuani näppäimistöasetteluni ergonomisuudesta aloin pohtimaan myös fyysisen näppäimistöni ergonomisuutta. +Aloitetaan hyvin yksinkertaisella ajatusleikillä. +Kuvittele olevasi pöydän ääressä ennen ateriaa. +Miten asetat kätesi rennosti pöydälle eteesi? +Entä jos niiden on oltava ainakin hieman erillään eikä yhdessä? +Todennäköisesti kätesi olisivat keskemmällä kuin kyynärpääsi. +On luultavaa, +että ranteesi olisivat suorina, +verrattuna esimerkiksi asentoon, +jossa pikkurillejä taittaa kohti kyynärluita. +Lopulta on yleistä, että kämmenesi eivät olisi olleet litteinä pöytää vasten, +vaan että ranteesi peukalopuoli osoitti joko suoraan ylös tai hieman yläviistoon.</p> + +<p>Tavallinen näppäimistö pakottaa kädet epäluonnolliseen suppuun. +Kuvittele ranteesi suoraan sormiesi takana. +Vie sitten sormesi näppäimistön kotiriville. +Joudut taittamaan pikkurilliäsi kohti kyynärluutasi. +Epämukava asento, eikö? +Ongelma ratkeaa jakamalla näppäimistö keskeltä kahtia . +Tällöin eri puoliskot voi asettaa itselleen mieluisiin kulmiin +ja itselleen mieluiselle leveydelle +siten, että ranteet saavat olla suorassa. +Samalla lapasi ja hartiasi pääsevät rentoutumaan.</p> + +<p>Ranteita on myös mukava kallistaa nostamalla peukkut ylemmäs kuin pikkurillit. +Nyt kun näppäimistösi on kahdessa osassa, +voit vapaasti kallistaa ne kulmaan, joka on ranteillesi mieluinen. +Ainakin, jos näppäimistöillä on telineet, +jotka sallivat niiden kallistamisen kätevästi. +Jotkut kirjoittavat jopa näppäimistönpuolikkaat lähes pystysuorassa.</p> + +<p>Lopulta mielenkiintoisena huomiona on varsin kummallista, että näppäimistöjen sarakkeet ovat useimmiten viistossa eivätkä suoraan ylhäältä alas. +Tämä on QWERTYn lisäksi toinen epäoptimaalinen jäänne kirjoituskoneiden ajalta. +Olihan näppäinten varsien jotenkin ulotuttava pääasialliseen kirjoituslaitteistoon. +Jos näppäimistöt suunniteltaisiin ensimmäistä kertaa nykyään ilman historiallista taakkaa, miksi tabulaattori-, näppäinlukko- ja shift-näppäimiä päätettäisiin kasvattaa eri pituisiksi siten, että loput kirjaimet joutuvat kuin väistämään toisiaan. +Viistous ei sinänsä ole välttämättä epäergonomista, +mutta esimerkiksi kaukana kotirivistä olevien numeronäppäinten löytäminen voi olla hankalaa, +kun vaikkapa numero 5 on etusormen yläpuolella, +vaikka sarakkeiden suoraan mennessä siinä pitäisi olla nelonen.</p> + +<p>Markkinoilla on näppäimistöjä, jotka ratkaisevat kaikki nämä ongelmat. +Esimerkiksi Ergodox Ez [12] ja Voyager [13] ovat suosittuja vaihtoehtoja. +Ne vain maksavat halvimmillaan runsaat kolmesataa euroa parilta, +mahdollisia kuljetuskuluja ja tulleja huomioimatta, +ja olen köyhä opiskelija, joten en aio hankkia sellaisia ainakaan vielä.</p> + +<p>Olisin kuitenkin paljon halunnut kyseisenlaisen näppäimistön. +Runsas vuosi sitten yritin lievittää pulmaani tilaamalla +Perixx Periboard-524B-näppäimistön. +Näppäimistö on toiminut kiitettävästi, +mutta sen sarakkeet eivät mene suoraan. +Lisäksi näppäimistöllä ei ole mekaanisen näppäimistön hyötyjä. +Muutoin näkemykseni siitä ei ole juurikaan muuttunut sen jälkeen, +kun kirjoitin siitä geminikapselissani [14].</p> + +<p>Epäonnekseni tuhlasin rahaa – pian näppäimistön ostamisen jälkeen julkaistiin parempi vaihtoehto, jonka hankkiminen maksaa suunnilleen saman verran. +Onnekseni voin hankkia sen paremman vaihtoehdon nyt, kun huomasin asian. +Noin 10 kuukautta sitten +eräs suomalainen tietotekniikan opiskelija julkaisi netissä ohjeet juuri tarpeeni täyttävän näppäimistön kokoamiseen. +Näppäimistö on vieläpä suunniteltu juuri budjettiystävällisyys ja kokoamisen helppous mielessä. +Näppäimistön nimi on Silakka54, ja sen kokoamisohjeet löytyvät GitHubista [15]. +Voit nähdä näppäimistön <a href="#fig3">Kuvassa 3</a>. +Oletuksena näppäimistössä ei ole kallistavaa telinettä, +mutta olen jo 3D-tulostanut sellaisen. +Näppäimistöjä on saatavilla valmiiksi koottuina AliExpressistä, +tai näppäimistön voi koota tilaamillaan osilla, +kuten itse aion tehdä aidon vapaan lähdekoodin hengen mukaisesti.</p> + +<figure id="fig3"> + <img src="/img/silakka54.png" alt="Kuva Silakka54-näppäimistöstä"> + <figcaption>Kuva 3. Silakka54-näppäimistö. Kuva on <a href="https://github.com/Squalius-cephalus">Juho ”Squalius-cephalus” T.:n</a> ja se on lisensoitu <a href="/static/silakka54-license.txt">MIT-lisenssillä</a>.</figcaption> +</figure> + +<p>Paremman asettelun lisäksi Silakka54:n hyötyjä ovat helppo muokattavuus, +mekaanisten näppäinkytkinten tuoma tuntuma sekä QMK:n (tai Vialin) avulla muokattava firmware. +Näppäimistöä voi muokata esimerkiksi sisältämään lisää kerroksia +(vrt. AltGr:n pohjassa pitäminen, +mutta eri näppäimen pohjassa pitäminen avaa pääsyn niihin merkkeihin, +joita itse useimmiten tarvitsee), +ja tavallisia näppäimiä voi asettaa toimimaan eri näppäiminä pohjaan painaessa +– esimerkiksi välilyönnistä voi tehdä myös Ctrl-näppäimen.</p> + +<p>Koska näppäimistöasettelu määritellään firmware-tasolla, +voi oman asettelunsa myös ottaa mukaan kaikkialle, +minne näppäimistönsä saa mukaan. +Itse aion hyödyntää tätä esimerkiksi sähköisessä EXAM-tenttijärjestelmässä, +mikäli sallittua, +sillä kyseinen järjestelmä pohjautuu ainoalle yleiselle käyttöjärjestelmälle, +joka ei tarjoa Colemak-näppäimistöasettelua.</p> + + +<p>Lopuksi maininnan ansainnee Thumb-Key, +jota käytän näppäimistönä puhelimellani. +Siinä näppäimet ovat suuremmat (ne ovat 4x4-ruudukossa), +joten niihin on helpompi osua. +Toki kääntöpuolena kaikki kirjaimet eivät mahdu näppäimille, +mutta loput merkit saa kirjoitettua vetämällä oikeasta näppäimestä oikeaan suuntaan. +Pidän isommista näppäimistä, muita perusteluja kyseiselle näppäimistölle en anna.</p> + + +<p>En varmasti ole vielä valmis työskentelytapojeni optimoinnin kanssa. +Tämä antoi kuitenkin katsauksen nykyään käyttämiini olennaisimpiin tekstinsyöttööni vaikuttaviin ratkaisuihin, +niin ohjelmistojen kuin näppäimistöjen osalta. +Ratkaisut ovat kaikki helposti kokeiltavissa, paitsi mahdollisesti Silakka54 – fyysisiä esineitä kun on hankala kokeilla heti netissä. +Kokeilemalla ei menetä mitään ja kärsivällisellä harjoittelulla kokeilu voi olla sekä hyödyllinen että hauska.</p> + + +<h2>Linkkejä ja lähteitä</h2> + +<p> +[1] Vimin dokumentaatio. Vim-ohjelmassa saatavilla komennolla ":help", verkossa <a href="https://vimhelp.org/">vimhelp.org</a><br> +[2] Ks. esim. <a href="https://vimawesome.com/">vimawesome.com</a><br> +[3] Neovimin dokumentaation LSP-serverien konfiguroinnista: <a href="https://neovim.io/doc/user/lsp.html">neovim.io/doc/user/lsp.html</a><br> +[4] <a href="https://distantwriting.co.uk/instruments.html">distantwriting.co.uk/instruments.html</a>, kuva 23<br> +[5] W. A. Burt. Patentti laitteelle Typographer. 1829. United states patent and trademark office. Saatavilla <a href="https://ppubs.uspto.gov/api/pdf/downloadPdf/X005581?requestToken=eyJzdWIiOiJlYTExNzhhMy0xNTExLTQ1YTktOWJjMy0yMzdlYTNkYTM4NzgiLCJ2ZXIiOiIwODRjMTAzOC01ZGVjLTQwNjItOWUwNC05M2VjNzlmZWU1ZjUiLCJleHAiOjB9">ppubs.uspto.gov/api/pdf/downloadPdf/[...]</a>.<br> +[6] Wikipedia: Printing telegraph. <a href="https://en.wikipedia.org/wiki/Printing_telegraph">en.wikipedia.org/wiki/Printing_telegraph</a><br> +[7] Wikipedia, kirjainten esiintyvyys. <a href="https://en.wikipedia.org/w/index.php?title=Letter_frequency&oldid=1295211904">en.wikipedia.org/wiki/Letter_frequency</a><br> +[8] Colemakin verkkosivut: <a href="https://colemak.com/">colemak.com</a><br> +[9] Wikipedia-artikkeli Colemakista: <a href="https://en.wikipedia.org/wiki/Colemak">en.wikipedia.org/wiki/Colemak</a><br> +[10] Colemakin suunnitteluprosessista: <a href="https://colemak.com/Design">colemak.com/Design</a><br> +[11] Colemakin ergonomiset tekijät: <a href="https://colemak.com/Ergonomic">colemak.com/Ergonomic</a><br> +[12] Ergodox Ez: <a href="https://ergodox-ez.com">ergodox-ez.com</a><br> +[13] Voyager: <a href="https://zsa.io/voyager">zsa.io/voyager</a><br> +[14] Geminilokini: ”Perixx budget split keyboard – first impression” <a href="gemini://cron4.fi/gemlog/periboard.gmi">gemini://cron4.fi/gemlog/periboard.gmi</a>, Verkkoportaalin kautta <a href="https://portal.mozz.us/gemini/cron4.fi/gemlog/periboard.gmi">portal.mozz.us/[...]</a><br> +[15] Silakka54 <a href="https://squalius-cephalus.github.io/silakka54">squalius-cephalus.github.io/silakka54</a><br> +</p> + +<br> + +<p> +*MinGW ei tietenkään ole Linux, mutta sen kautta sain ensikosketuksen GNU:n komentoriviohjelmiin.<br> +**Oikeastaan teksti päätyy vain tekstikenttään, josta se sitten usein tallennetaan (kirjoitetaan) tiedostoon. +Usein tekstikentän sisältö myös vastaa kyseisen tiedoston sisältöä välitallennuksia vaille. +Kuitenkaan tekstiä ei suoraan kirjoiteta tiedostoon +kuten ei käytännössä missään tekstinmuokkausohjelmassa. +Tosiasiassa tekstikentän ei tarvitse kuvata mitään tiedostoa, +eikä sen sisältöjä tarvitse kirjoittaa mihinkään tiedostoon.<br> +***Neovim sovelluksena vie vähemmän tilaa kuin Vim.<br> +****Todellisuudessa käytin Svdvorakia, Dvorakin ruotsin kirjoittamiseen tarkoitettua versiota, koska oletus-dvorakista ei löydy ääkkösiäkään, toisin kuin oletus-colemakista.<br> +</p> + </main> + </body> +</html> diff --git a/blog/tekstinsyotto.html~ b/blog/tekstinsyotto.html~ new file mode 100644 index 0000000..b828d01 --- /dev/null +++ b/blog/tekstinsyotto.html~ @@ -0,0 +1,312 @@ +<!DOCTYPE html> +<html lang="fi"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link href="/global.css" rel="stylesheet" type="text/css"> + <title>Tarina toimivamman tekstinsyöttämiseni taustalla</title> + </head> + + <body> + <a id="skiptocontent" href="#content">Siirry pääsisältöön</a> + <header> + <a href="/fi/">FI</a> · <a href="/en/">EN</a> + </header> + <main id="content"> + <h1>Tarina toimivamman tekstinsyöttämiseni taustalla</h1> + +<p>Näppäimistöni ovat aina herättäneet hilpeyttä ystävieni keskuudessa. +Koska ensimmäisessä blogikirjoituksessani kerroin, kuinka näppärää raakateksti voi olla, +lienee sopivaa luoda katsaus, +miten kirjoitan ohjelmakoodia ja muuta raakatekstiä tietokoneella, + ja kuinka ohjelmisto- ja laitteistoratkaisuni tekstinmuokkauksen suhteen ovat muuttuneet ajan saatossa.</p> + + +<p>Joskus lukion alkupuolella siirryin asteittain käyttämään Linuxia, +ensin MinGW:n* kautta, sen jälkeen rinnakkain Windowsin kanssa +ja myöhemmin ainoana käyttöjärjestelmänäni. +Linuxin muokattavuus auttoi minua ymmärtämään, +että kykenen itse vaikuttamaan siihen, +miten ergonomisesti ja tehokkaasti kykenen työskentelemään tietokoneellani.</p> + +<p>Kun etsin tietoa netistä ratkaistakseni erinäisiä haasteita, +en voinut olla törmäämättä mainintoihin Vim-ohjelmasta. +Se on juurikin eräs ratkaisuista, +jotka ovat auttaneet minua parantamaan työskentelyni sujuvuutta.</p> + +<p>Vim on tehokas tilapohjainen tekstinmuokkausohjelma. +Sen tärkeimmät tilat ovat liiketila ja tekstinsyöttötila. +Tekstinsyöttötilassa kirjoitettu teksti päätyy kulloinkin auki olevaan tiedostoon**. +Liiketilassa taas voi siirtää kursoria ja suorittaa komentoja. +Liiketilan erillisyys tekstinsyöttötilasta on äärimmäisen hyödyllistä; +liiketilassa se mahdollistaa tavallisten kirjainten käytön liikkumis- ja yleiskomentoja vastaavina näppäinyhdistelminä. +Kursoria liikutetaan HJKL-näppäimillä nuolinäppäinten tavoin, +"N G" siirtää kursorin riville N, "$" taas rivin loppuun, +"y y" kopioi rivin, jolla kursori on ja niin edelleen. +Kaikkeen löytyy näppäinyhdistelmä. + Liiketilassa on helppoa yhdistellä, toistaa ja ketjuttaa komentoja. +Vimin etsi ja korvaa -toiminto on tehokkain, minkä olen nähnyt missään koodieditorissa.</p> + +<p>Tehokkaan tekstinmuokkauksen lisäksi +Vimin toimintaa voi muokata tarkemmin kuin useimpia muita tekstinmuokkausohjelmia. +Yksi osa tätä on nimenomaan liiketila – voit helposti lisätä näppäinyhdistelmiä, jotka tekevät mitä ikinä tahdot. +Pitkälti kaikkia varsin laajassa dokumentaatiossa [1] mainittuja komentoja ja muuttujia voi muokata omien mieltymystensä mukaan. +Vimiin on saatavilla runsaasti lisäosia [2], jotka voivat esimerkiksi lisätä Vimin yhteensopivuutta muiden ohjelmien kanssa. +Olen sittemmin siirtynyt käyttämään Neovimiä. +Se on Vimin modernimpi ja toteutukseltaan kevyempi***, mutta käytännössä samat ominaisuudet sisältävä versio. +Neovim sisältää sisäänrakennettuna jopa LSP-tuen [3]. +LSP:n tiedoilla se kykenee muun muassa huomauttamaan tekstin muokkaajaa virheistä tämän työstämässä lähdekoodissa. +Käytännössä ohjelma muuttuu LSP-serverin avulla täysiveriseksi IDE:ksi.</p> + +<p>Mikäli Vimin kuvaus jäi epäselväksi, on sen itse kokeileminen ja oppiminen sangen helppoa. +Sitä oppii käyttämään katsomalla pari tutoriaalia YouTubesta (esim. <a href="https://youtu.be/-txKSRn0qeA">youtu.be/-txKSRn0qeA</a>) ja tekemällä +Vimiin sisäänrakennetun tutoriaalin kirjoittamalla ":tutor" ja painamalla enteriä. +Jos Vimin asennus ei vielä houkuta, +löytyy samainen tutoriaali netistä, +esimerkiksi osoitteesta <a href="https://remarkablemark.org/vimtutor/">remarkablemark.org/vimtutor/</a>.</p> + + +<p>Viime aikoina olen myös tehnyt kokeiluja GNU Emacs -kehitysympäristön parissa, +ja olen vaikuttunut sen kyvyistä. +Lisäosien voimalla käytän sitä toistaiseksi kuitenkin enimmäkseen Vimin tavoin. +On muutenkin järkevää jättää sen käsittely myöhemmäksi – +se on luonteeltaan lähempänä käyttöjärjestelmää kuin tekstinmuokkausohjelmaa.</p> + + +<p>Toinen suuri muutos, +jonka tein vaihdettuani Linuxiin, +oli näppäimistöasetteluni vaihtaminen. +En koskaan oppinut kymmensormijärjestelmää kunnolla QWERTY-asettelulla, +muun muassa oudosti aseteltujen näppäinten vuoksi, +jotka hankaloittivat kymmensormijärjestelmän oikeaoppista käyttöä. +Lienee kuitenkin paikallaan selventää, +miksi QWERTY ei ollut minulle – ja tuskin muillekkaan paljon kirjoittaville – toimivin näppäimistöasettelu.</p> + +<p>QWERTY-asettelu kehitettiin aikanaan pääasiassa kirjoituskoneille. +Erilaisia asetteluita oli olemassa paljon, joista varhaisimmissa +näppäimet olivat käytännössä vain aakkosjärjestyksessä [4,5]. +Ensimmäisessä sähkeistä suoraan luettavaa tekstiä – morsekoodin sijaan – tuottavassa lennätikoneessa kirjaimet olivat aakkosjärjestyksen lisäksi kaikki samassa rivissä [6]. +Koska sellaisella näppäimistöllä oli vaivalloista kirjoittaa, siirrettiin kirjaimet kolmeen riviin ja numerot neljänteen. +Nyt peräkkäin ja vierekkäin olevat näppäimet saattoivat kuitenkin painaessa juuttua toisiinsa. +Ratkaisuna näppäimet aseteltiin siten, että useimmiten käytetyt näppäimet eivät olleet vierekkäin.</p> + +<p>Monilla Youtube-videoilla, joihin törmäsin todennäköisesti Linux-mielenkiintoni ja Youtuben algoritmin vuoksi, +perusteltiin toiseen näppäimistöasetteluun vaihtamista jotakuinkin vastaavasti. +Niillä vihjattiin, ettei ole järkevää, että useimmiten käytetyt kirjaimet ovat hajallaan ympäri näppäimistöä. +<a href="#fig1">Kuvasta 1</a> näkee helposti, +kuinka yleisimmin käytettyjä kirjaimia vastaavat näppäimet ovat QWERTYllä kaukana toisistaan. +Mistä muusta muutokset ihmisten käytöksessä nykyään johtuisivat kuin YouTubesta.</p> + +<figure id="fig1"> + <img src="/images/qwerty.png" alt="Kuva QWERTY-näppäimistöstä korostuksilla"> + <figcaption>Kuva 1. Englanninkielinen QWERTY-asettelu, jossa näppäimiä on tummennettu sen perusteella, kuinka paljon niitä vastaavat kirjaimet esiintyvät teksteissä Wikipedian mukaan [7]. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Ei ole perusteltua sanoa, että näppäinten asettelua näppäimistölle ei olisi aikanaan mietitty. +Olisi kuitenkin järkevämpää, että useimmiten käytetyt näppäimet olisivat niin kutsutulla kotirivillä, +jolla sormia oletusarvoisesti pidetään näppäimistöä käytettäessä. +Tällöin sormien tarvitsisi harvemmin jättää kotirivi, +kasvattaen kirjoitusnopeutta ja lyhentäen matkaa, joka sormien on kuljettava näppäimistön yllä.</p> + +<p>Joidenkin kokeilujen kautta päädyin käyttämään Colemak-näppäimistöasettelua [8]. +Vuosilukujen valossa sen voidaan olettaa olevan QWERTYä paremmin suunniteltu. +QWERTY syntyi 1800- ja 1900-luvuilla. +Colemak puolestaan on suunniteltu 2000-luvulla [9] tehokkuutta ergonomisuutta ajatellen [8]. +Tietokoneet oli kehitetty jo pitkälle, kun Colemak suunniteltiin, +joten sitä luodessa voitiin paremmin ottaa huomioon tekijöitä, jotka vaativat laajamittaisempaa laskennallista analyysiä. +Esimerkiksi saman sormen peräkkäisiä kirjainpainalluksia, +saman käden kirjainpainalluksia ja kotirivin eri puolille vuoroin kurottavia (esim. ”minimi” QWERTYllä) näppäily-yhdistelmien esiintyvyyksiä on voitu minimoida [10, 11]. +Yksinkertaisin argumentti Colemakin puolesta lienee se, +että useimmin käytetyt näppäimet sijaitsevat kotirivillä, +kuten <a href="#fig2">Kuvasta 2</a> näkyy.</p> + +<figure id="fig2"> + <img src="/images/colemak.png" alt="Kuva Colemak-näppäimistöstä korostuksilla"> + <figcaption>Kuva 2. Colemak, värikoodi tuotettu samoin kuin <a href="#fig1">Kuvassa 1</a>. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Colemak on toiminut hyvin omassa käytössäni. +Uudella asettelulla kirjoittamista harjoitellessa näppäimistöni näppäinhatut olivat fyysisesti yhä QWERTY-asettelussa. +Koska en voinut tarkastaa näppäimen sijaintia silmilläni, +opin kirjoittamaan katsomatta näppäimistöä ollenkaan, +mikä oli ollut minulle QWERTYä käyttäessä hankalaa. +Kirjoittaminen myös on myös tuntunut mukavammalta; +sormien tarvitsee harvemmin poistua kotiriviltä ja epämukavia näppäilysarjoja tuntuu esiintyvän harvemmin.</p> + +<p>On tietysti hyvä huomata, että Colemak on suunniteltu nimenomaan englannin kirjoittamista varten. +Tahdon itse käyttää kaikista järkevistä käyttöjärjestelmistä löytyvää yleisnäppäimistöä, +joka on samoin aseteltu riippumatta kielestä, jota kirjoitan. +Koska kirjoitan paljon sekä suomea että englantia, ja joskus ruotsia, +joudun joka tapauksessa näppäimistöasettelua valitessa tekemään kompromissin kielten välillä, +tai valitsemaan jonkun harrastelijan tekemän esoteerisen useamman kielen yhdistävän näppäimistöasettelun, +jota tuskin on todettu toimivaksi käytössä. +Kaikeksi onneksi Suomeakin kirjoittaessa Colemak on tuntunut minusta luontevammalta kuin QWERTY.</p> + +<p>Alun perin kokeilin ensimmäisenä näppäimistöasettelunani QWERTYn jälkeen Dvorakia****. +Saatoin mututuntumalla kirjoittaa Dvorakilla nopeammin kuin Colemakilla, +mutta sillä kirjoittaminen oli käsilleni epämukavaa, etenkin oikealle pikkurillilleni, +joka joutui usein kurkottamaan L-näppäimen perään. +Hiljalleen ymmärsin, +että itselle sopivaa näppäimistöasettelua valitessa +olennaisinta on asettelun ergonomisuus eikä kirjoitusnopeus. +Mitä hyötyä on nopeasta kirjoitustyylistä, +jos ei voi kirjoittaa rasitusvamman vuoksi.</p> + +<p>Näppäimistöasettelua valitessani minulle oli tärkeää myös erikoismerkkien helppo saatavuus. +Dvorakissa ei ollut juurikaan erikoismerkkejä, ei edes AltGr:n takana. +Colemakilla käytettävissäni ovat helposti muun muassa paljon käyttämäni +nk. ysiysi-lainausmerkit ‘”’ (AltGr+Shift+0) +sekä m-viiva ‘–’ (AltGr+-), ja mukavuuksina esimerkiksi +numeroiden potenssiversioita ‘¹²³’.</p> + +<p>Voit saada ensikosketuksen Colemakiin netissä esim. nopeuspelin <a href="https://gnusenpai.net/colemakclub/">gnusenpai.net/colemakclub/</a> kautta. +Asennus-/käyttöönotto-ohjeet Colemakille puolestaan löytyvät osoitteesta <a href="https://colemak.com/Download">colemak.com/Download</a>. +Muitakin eri tarkoituksiin optimoituja näppäimistöasetteluja löytyy runsaasti netistä, +mutta Colemak lienee kaikista testatuin ja luotetuin vaihtoehto, +joka löytyy monista laitteista vaihtoehtona ilman erillistä asennusta. +</p> + + +<p>Kiinnostuttuani näppäimistöasetteluni ergonomisuudesta aloin pohtimaan myös fyysisen näppäimistöni ergonomisuutta. +Aloitetaan hyvin yksinkertaisella ajatusleikillä. +Kuvittele olevasi pöydän ääressä ennen ateriaa. +Miten asetat kätesi rennosti pöydälle eteesi? +Entä jos niiden on oltava ainakin hieman erillään eikä yhdessä? +Todennäköisesti kätesi olisivat keskemmällä kuin kyynärpääsi. +On luultavaa, +että ranteesi olisivat suorina, +verrattuna esimerkiksi asentoon, +jossa pikkurillejä taittaa kohti kyynärluita. +Lopulta on yleistä, että kämmenesi eivät olisi olleet litteinä pöytää vasten, +vaan että ranteesi peukalopuoli osoitti joko suoraan ylös tai hieman yläviistoon.</p> + +<p>Tavallinen näppäimistö pakottaa kädet epäluonnolliseen suppuun. +Kuvittele ranteesi suoraan sormiesi takana. +Vie sitten sormesi näppäimistön kotiriville. +Joudut taittamaan pikkurilliäsi kohti kyynärluutasi. +Epämukava asento, eikö? +Ongelma ratkeaa jakamalla näppäimistö keskeltä kahtia . +Tällöin eri puoliskot voi asettaa itselleen mieluisiin kulmiin +ja itselleen mieluiselle leveydelle +siten, että ranteet saavat olla suorassa. +Samalla lapasi ja hartiasi pääsevät rentoutumaan.</p> + +<p>Ranteita on myös mukava kallistaa nostamalla peukkut ylemmäs kuin pikkurillit. +Nyt kun näppäimistösi on kahdessa osassa, +voit vapaasti kallistaa ne kulmaan, joka on ranteillesi mieluinen. +Ainakin, jos näppäimistöillä on telineet, +jotka sallivat niiden kallistamisen kätevästi. +Jotkut kirjoittavat jopa näppäimistönpuolikkaat lähes pystysuorassa.</p> + +<p>Lopulta mielenkiintoisena huomiona on varsin kummallista, että näppäimistöjen sarakkeet ovat useimmiten viistossa eivätkä suoraan ylhäältä alas. +Tämä on QWERTYn lisäksi toinen epäoptimaalinen jäänne kirjoituskoneiden ajalta. +Olihan näppäinten varsien jotenkin ulotuttava pääasialliseen kirjoituslaitteistoon. +Jos näppäimistöt suunniteltaisiin ensimmäistä kertaa nykyään ilman historiallista taakkaa, miksi tabulaattori-, näppäinlukko- ja shift-näppäimiä päätettäisiin kasvattaa eri pituisiksi siten, että loput kirjaimet joutuvat kuin väistämään toisiaan. +Viistous ei sinänsä ole välttämättä epäergonomista, +mutta esimerkiksi kaukana kotirivistä olevien numeronäppäinten löytäminen voi olla hankalaa, +kun vaikkapa numero 5 on etusormen yläpuolella, +vaikka sarakkeiden suoraan mennessä siinä pitäisi olla nelonen.</p> + +<p>Markkinoilla on näppäimistöjä, jotka ratkaisevat kaikki nämä ongelmat. +Esimerkiksi Ergodox Ez [12] ja Voyager [13] ovat suosittuja vaihtoehtoja. +Ne vain maksavat halvimmillaan runsaat kolmesataa euroa parilta, +mahdollisia kuljetuskuluja ja tulleja huomioimatta, +ja olen köyhä opiskelija, joten en aio hankkia sellaisia ainakaan vielä.</p> + +<p>Olisin kuitenkin paljon halunnut kyseisenlaisen näppäimistön. +Runsas vuosi sitten yritin lievittää pulmaani tilaamalla +Perixx Periboard-524B-näppäimistön. +Näppäimistö on toiminut kiitettävästi, +mutta sen sarakkeet eivät mene suoraan. +Lisäksi näppäimistöllä ei ole mekaanisen näppäimistön hyötyjä. +Muutoin näkemykseni siitä ei ole juurikaan muuttunut sen jälkeen, +kun kirjoitin siitä geminikapselissani [14].</p> + +<p>Epäonnekseni tuhlasin rahaa – pian näppäimistön ostamisen jälkeen julkaistiin parempi vaihtoehto, jonka hankkiminen maksaa suunnilleen saman verran. +Onnekseni voin hankkia sen paremman vaihtoehdon nyt, kun huomasin asian. +Noin 10 kuukautta sitten +eräs suomalainen tietotekniikan opiskelija julkaisi netissä ohjeet juuri tarpeeni täyttävän näppäimistön kokoamiseen. +Näppäimistö on vieläpä suunniteltu juuri budjettiystävällisyys ja kokoamisen helppous mielessä. +Näppäimistön nimi on Silakka54, ja sen kokoamisohjeet löytyvät GitHubista [15]. +Voit nähdä näppäimistön <a href="#fig3">Kuvassa 3</a>. +Oletuksena näppäimistössä ei ole kallistavaa telinettä, +mutta olen jo 3D-tulostanut sellaisen. +Näppäimistöjä on saatavilla valmiiksi koottuina AliExpressistä, +tai näppäimistön voi koota tilaamillaan osilla, +kuten itse aion tehdä aidon vapaan lähdekoodin hengen mukaisesti.</p> + +<figure id="fig3"> + <img src="/images/silakka54.png" alt="Kuva Silakka54-näppäimistöstä"> + <figcaption>Kuva 3. Silakka54-näppäimistö. Kuva on <a href="https://github.com/Squalius-cephalus">Juho ”Squalius-cephalus” T.:n</a> ja se on lisensoitu <a href="/images/silakka54-license.txt">MIT-lisenssillä</a>.</figcaption> +</figure> + +<p>Paremman asettelun lisäksi Silakka54:n hyötyjä ovat helppo muokattavuus, +mekaanisten näppäinkytkinten tuoma tuntuma sekä QMK:n (tai Vialin) avulla muokattava firmware. +Näppäimistöä voi muokata esimerkiksi sisältämään lisää kerroksia +(vrt. AltGr:n pohjassa pitäminen, +mutta eri näppäimen pohjassa pitäminen avaa pääsyn niihin merkkeihin, +joita itse useimmiten tarvitsee), +ja tavallisia näppäimiä voi asettaa toimimaan eri näppäiminä pohjaan painaessa +– esimerkiksi välilyönnistä voi tehdä myös Ctrl-näppäimen.</p> + +<p>Koska näppäimistöasettelu määritellään firmware-tasolla, +voi oman asettelunsa myös ottaa mukaan kaikkialle, +minne näppäimistönsä saa mukaan. +Itse aion hyödyntää tätä esimerkiksi sähköisessä EXAM-tenttijärjestelmässä, +mikäli sallittua, +sillä kyseinen järjestelmä pohjautuu ainoalle yleiselle käyttöjärjestelmälle, +joka ei tarjoa Colemak-näppäimistöasettelua.</p> + + +<p>Lopuksi maininnan ansainnee Thumb-Key, +jota käytän näppäimistönä puhelimellani. +Siinä näppäimet ovat suuremmat (ne ovat 4x4-ruudukossa), +joten niihin on helpompi osua. +Toki kääntöpuolena kaikki kirjaimet eivät mahdu näppäimille, +mutta loput merkit saa kirjoitettua vetämällä oikeasta näppäimestä oikeaan suuntaan. +Pidän isommista näppäimistä, muita perusteluja kyseiselle näppäimistölle en anna.</p> + + +<p>En varmasti ole vielä valmis työskentelytapojeni optimoinnin kanssa. +Tämä antoi kuitenkin katsauksen nykyään käyttämiini olennaisimpiin tekstinsyöttööni vaikuttaviin ratkaisuihin, +niin ohjelmistojen kuin näppäimistöjen osalta. +Ratkaisut ovat kaikki helposti kokeiltavissa, paitsi mahdollisesti Silakka54 – fyysisiä esineitä kun on hankala kokeilla heti netissä. +Kokeilemalla ei menetä mitään ja kärsivällisellä harjoittelulla kokeilu voi olla sekä hyödyllinen että hauska.</p> + + +<h2>Linkkejä ja lähteitä</h2> + +<p> +[1] Vimin dokumentaatio. Vim-ohjelmassa saatavilla komennolla ":help", verkossa <a href="https://vimhelp.org/">vimhelp.org</a><br> +[2] Ks. esim. <a href="https://vimawesome.com/">vimawesome.com</a><br> +[3] Neovimin dokumentaation LSP-serverien konfiguroinnista: <a href="https://neovim.io/doc/user/lsp.html">neovim.io/doc/user/lsp.html</a><br> +[4] <a href="https://distantwriting.co.uk/instruments.html">distantwriting.co.uk/instruments.html</a>, kuva 23<br> +[5] W. A. Burt. Patentti laitteelle Typographer. 1829. United states patent and trademark office. Saatavilla <a href="https://ppubs.uspto.gov/api/pdf/downloadPdf/X005581?requestToken=eyJzdWIiOiJlYTExNzhhMy0xNTExLTQ1YTktOWJjMy0yMzdlYTNkYTM4NzgiLCJ2ZXIiOiIwODRjMTAzOC01ZGVjLTQwNjItOWUwNC05M2VjNzlmZWU1ZjUiLCJleHAiOjB9">ppubs.uspto.gov/api/pdf/downloadPdf/[...]</a>.<br> +[6] Wikipedia: Printing telegraph. <a href="https://en.wikipedia.org/wiki/Printing_telegraph">en.wikipedia.org/wiki/Printing_telegraph</a><br> +[7] Wikipedia, kirjainten esiintyvyys. <a href="https://en.wikipedia.org/w/index.php?title=Letter_frequency&oldid=1295211904">en.wikipedia.org/wiki/Letter_frequency</a><br> +[8] Colemakin verkkosivut: <a href="https://colemak.com/">colemak.com</a><br> +[9] Wikipedia-artikkeli Colemakista: <a href="https://en.wikipedia.org/wiki/Colemak">en.wikipedia.org/wiki/Colemak</a><br> +[10] Colemakin suunnitteluprosessista: <a href="https://colemak.com/Design">colemak.com/Design</a><br> +[11] Colemakin ergonomiset tekijät: <a href="https://colemak.com/Ergonomic">colemak.com/Ergonomic</a><br> +[12] Ergodox Ez: <a href="https://ergodox-ez.com">ergodox-ez.com</a><br> +[13] Voyager: <a href="https://zsa.io/voyager">zsa.io/voyager</a><br> +[14] Geminilokini: ”Perixx budget split keyboard – first impression” <a href="gemini://cron4.fi/gemlog/periboard.gmi">gemini://cron4.fi/gemlog/periboard.gmi</a>, Verkkoportaalin kautta <a href="https://portal.mozz.us/gemini/cron4.fi/gemlog/periboard.gmi">portal.mozz.us/[...]</a><br> +[15] Silakka54 <a href="https://squalius-cephalus.github.io/silakka54">squalius-cephalus.github.io/silakka54</a><br> +</p> + +<br> + +<p> +*MinGW ei tietenkään ole Linux, mutta sen kautta sain ensikosketuksen GNU:n komentoriviohjelmiin.<br> +**Oikeastaan teksti päätyy vain tekstikenttään, josta se sitten usein tallennetaan (kirjoitetaan) tiedostoon. +Usein tekstikentän sisältö myös vastaa kyseisen tiedoston sisältöä välitallennuksia vaille. +Kuitenkaan tekstiä ei suoraan kirjoiteta tiedostoon +kuten ei käytännössä missään tekstinmuokkausohjelmassa. +Tosiasiassa tekstikentän ei tarvitse kuvata mitään tiedostoa, +eikä sen sisältöjä tarvitse kirjoittaa mihinkään tiedostoon.<br> +***Neovim sovelluksena vie vähemmän tilaa kuin Vim.<br> +****Todellisuudessa käytin Svdvorakia, Dvorakin ruotsin kirjoittamiseen tarkoitettua versiota, koska oletus-dvorakista ei löydy ääkkösiäkään, toisin kuin oletus-colemakista.<br> +</p> + </main> + </body> +</html> diff --git a/blog/yksinkertaisesti-monipuolinen.txt b/blog/yksinkertaisesti-monipuolinen.txt new file mode 100644 index 0000000..8295fd7 --- /dev/null +++ b/blog/yksinkertaisesti-monipuolinen.txt @@ -0,0 +1,226 @@ + + yksinkertaisesti-monipuolinen.txt + ================================= + +Jos tämä virke ei mahdu 2 riville puhelimesi näytöllä, käännä laitetta, niin lukeminen on helpompaa. + +Tietokoneiden alkuaikoina ihmisen ja tietokoneen +välinen kommunikaatio tapahtui pääosin tekstin +välityksellä. Komentokehotteeseen kirjoitettiin +tekstikomento ja suoritettu ohjelma tulosti käyt- +täjälle yhtä lailla tekstipohjaisen vastauksen. +Kun internet saapui, kommunikoivat ihmiset myös +toistensa kanssa tekstin välityksellä: esimerkik- +si sähköpostit olivat aluksi raakatekstiä. + +Nykyään pelkkään tekstiin (raakateksti, “plain +text”) törmää harvoin ja sitä kavahdetaan. En pie- +nempänä ymmärtänyt edes, mistä raakatekstissä on +kyse. Tietokoneet esittäytyivät minulle word-doku- +menttien, verkkosivustojen ja pdf-tiedostojen +kautta. En tajunnut, että tietokoneissa taustalla +toimii raaempaa tekstiä. Suurin osa muista ikäi- +sistäni ovat varmasti lähteneet samasta käsityk- +sestä, vaikka ovatkin ehkä löytäneet raakateks- +tinkin varttuessaan. + +Teksti on monissa dokumenteissa pääsisältö, mutta +raakatekstin ja verkkosivujen tai pdf-dokumenttien +ero on siinä, että jälkimmäisissä dokumentin suun- +nittelija on vastuussa myös dokumentin ulkoasusta +ja voi lisätä siihen multimediaa. Verkko-ohjel- +moija suunnittelee verkkosivun ulkoasun ja lisää +sille videoita, ja word-dokumentin kirjoittaja +muuttaa dokumentin fonttia ja lisää siihen kuvia. + +Raakatekstissä mikään tästä ei ole mahdollista. +Raakatekstiä on se, mitä Windows-käyttäjä kirjoit- +taa Notepadiin. Raakatekstistä koostuu myös tämä +blogipostaus. + +Ohjelmistotasolla raakateksti koostuu tavuista, +joista jokainen vastaa tiettyä merkkiä. Nykyään +käytännössä kaikki raakateksti noudattaa UTF-8 +-standardia, joka määrittelee tavujen ja merkkien +vastaavuudet. 01000001 vastaa isoa A:ta, 01000010 +isoa B:tä, 0011 1111 kysymysmerkkiä ja niin edel- +leen. Jotkin merkit koostuvat useammasta tavusta, +koska kahdeksan nollaa tai ykköstä ei riitä esit- +tämään kaikkia merkkejä — näin jopa emojeille löy- +tyy tuki UTF-8 -tekstistä, mikäli fontti sallii🥳 + +Käyttöön raakateksti pääsee nykyään harvoin — jopa +yksinkertaiset muistiinpanot kirjoitetaan esimer- +kiksi Google Docsiin. Se on harmillista, koska +raakatekstillä on ominaisuuksia, jotka tekevät +siitä monissa tapauksissa käyttökelpoisempaa kuin +mistään muusta datan muodosta. + +Raakatekstin kaksi suurinta hyötyä ovat sen yksin- +kertaisuus ja kaikkialla toimivuus. Tekstin for- +maatista vallitsee suurempi yksimielisyys kuin +muiden formaattien osalta ja se on yksikäsittei- +sempää. + +Edellä mainittujen ominaisuuksiensa ansiosta +raakateksti toimii mainiosti tietokoneohjelmien +kanssa kommunikointiin ja niiden välillä tapahtu- +vaan tiedonvaihtoon. On helppoa kirjoittaa +ohjelma, joka lukee tekstiä. Ohjelma tietää mitä +se lukee, koska teksti on hyvin standardisoitua. +Lisäksi se saa datan puhtaana — sen ei tarvitse +eritellä sille olennaista informaatiota ympäröi- +västä ihmissilmälle tarkoitetusta esitystapaa kos- +kevasta informaatiosta kuten tekstin sijainnista +tai fontista. + +Tämä mahdollistaa tekstipohjaisten ohjelmien käy- +tön tehokkaaseen tiedon muokkaamiseen, “skriptaa- +miseen”. Otetaan esimerkiksi aloitus- ja lopetus- +puheiden koostaminen. Miksaan välillä Lohjan seu- +rakunnan messuja ja lähetän ne radioon. Lähetysten +alkuun ja loppuun lausutaan lyhyet ns. spiikit, +jotka koostan aluksi tekstinä. Tykkään kerätä +spiikkien muuttuvat tiedot edellisen päivän iltana +puhelimeeni tekstitiedostoon, ja kun tulen aamulla +kirkolle, kirjoitan vain tietokoneella: + + $ nc -l 1234 >> Desktop/Spiikit/2020-01-01.txt + +ja puhelimellani + + $ nc 10.10.16.231 1234 < infot.txt + +ja olen näin saanut liitettyä tarpeelliset tiedot +puhelimeltani oikeaan tiedostoon seurakunnan +tietokoneella. Mikään tästä ei toimisi — ainakaan +läheskään yhtä hyvin — jos käyttäisin raakatekstin +sijaan vaikkapa `.docx`-dokumentteja. Erilaisia +tekstipohjaisia ohjelmia voi yhdistellä vielä +käyttökelpoisemmin ja monipuolisemmin: Wikipedi- +asta löytyy hyvä esimerkki [1] (linkki dokumentin +lopussa). + +Pelkän tekstin mukana ei myöskään tule turhaa tie- +toa, kuten fonttia, tekstin väriä, videoita tai — +raakatekstiin keskittyvien protokollien yhtey- +dessä — evästeitä. Lukijan ei siis tarvitse odot- +taa, kun verkkosivu lataa kymmenien megatavujen +kokoista videota hipstereistä hyppimässä kännyköi- +densä kanssa (ks. `https://agt.fi`) ja miettiä, +mistä hän saisi paremman nettiliittymän tai kirota +esimerkiksi VPN:n tai Tor-verkon hitautta. Sen +sijaan hän pääsee lähes välittömästi muutaman +(kymmenen) kilotavun kokoisen, hänen kannaltaan +olennaisen tekstisisällön pariin. Resursseja +säästyy ja joidenkin mielestä tiedonsaanti on näin +myös mukavampaa. + +Raakateksti on tehokasta tietojenkäsittelyssä, +mutta mitä tapahtuu, kun päättää tietoisesti käyt- +tää sitä osuvamman formaatin sijaan? Mitä käy esi- +merkiksi, kun kirjoittaa blogipostauksen pelkällä +tekstillä verkkosivuilla tavallisesti käytetyn +HTML-merkintäkielen sijaan? + +HTML:n käyttäminen tarjoasi mahdollisuuden lisätä +tekstiin linkkejä ja kuvia. Lisäksi se tarjoaa +tavan viestittää dokumentin eri osia — koodissa +lukee, mikä osio on tarkoitettu valikoksi, mistä +löytyy pääsisältö ja mikä sen sisällä on otsikko +ja mikä taas alaotsikko. + +Kuten rajoitteiden kanssa yleensä käy, pakottaa +pelkän tekstin käyttäminen kirjoittajan ylittämään +formaatin asettamat rajoitukset ja kannustaa näin +luovuuteen. Jos tekstidokumenttiin tahtoo lisätä +linkin, täytyy se kirjoittaa auki. Voin esimer- +kiksi kertoa, että HTML:n standardi löytyy osoit- +teesta `https://www.rfc-editor.org/rfc/rfc2854`. +Linkin auki kirjoittamisesta on yllättävää +hyötyä: lukija näkee välittömästi minne se vie. +Lisäksi se toimii, vaikka dokumentin tulostaisi +paperille. + +Kuvien välittäminen tekstin kautta taas on luonut +kokonaisen taiteen alan, nimittäin ASCII-taiteen. +Siinä kuva esitetään raakatekstin tarjoamien merk- +kien puitteissa. Yksinkertaisia kaaviokuvia on +tietyissä tapauksissa varsin helppokin piirtää: + ________________________________ + | | + | H H H CH3 | + | | | | \ | + | H - C - C - C - OH C = O | + | | | | | | + | H H H OH | + |________________________________| + Propanoli ja etaanihappo + _____________________ + | _ | + | v | + | ---------> | + | | + | ^ _ | + | | N | + | | | + | | | + | ___|___ | + | | | | + | _ <--| | | + | Fµ | | | | + | _____|___|___|_____ | + | | _ | + | | G | + | v | + |_____________________| + Liukuva kappale + + (huom. kuvien näkemiseksi selaimesi on käytettävä + tiedoston näyttämiseen tasavälistä fonttia) + +Kaaviokuvien lisäksi on myös ASCII-taidetta, jossa +paino on nimenomaan sanalla 'taide'. Netistä löy- +tyy paljon ASCII-taiteen kokoelmia, esimerkiksi +osoitteesta `https://www.asciiart.eu` ja +`https://ascii.mozz.us:7070`. + +Tekstin arvaamattoman kauneuden, sen tehokkuuden +ja vähän turhan informaation vuoksi internetissä +on syntynyt uusia yhteisöjä ja protokollia raaka- +tekstin ympärille. Ylläpidän itse esimerkiksi +geminikapselia osoitteessa +“gemini://gemini.jorl.fi”. Geminin kuvauksen +ensimmäinen lause on vapaasti suomennettuna: +“Gemini on uusi, yhteenlinkitettyjä tekstidoku- +mentteja tukeva internet-teknologia.” [2] Muitakin +protokollia ja yhteisöjä on, joista hyvän otoksen +saa esimerkiksi Michael Lazarin kotisivujen etusi- +vulta `https://mozz.us`. + +Lopulta on myös huomioitava, että käytännössä +kaikki tietokoneohjelmat kirjoitetaan raakateks- +tinä. Projektieni tiedostot ovat luettavissa +netissä tekstinä. [3] (Ja kuka kirjoittaisi tieto- +koneohjelmia Wordilla? Siitä on olemassa jopa +satiirinen Youtube-video! [4]) Suuri osa tiedonvä- +litysprotokollista on määritelty raakateksti +lähtökohtana. Raakateksti siis muodostaa tietoko- +neiden ja laskennan selkärangan. + +Jos tahdomme oppia käyttämään tietokoneita tehok- +kaammin ja sulavammin, tulisi raakatestistä ja +sen käsittelystä siis tehdä normi eikä pelottavien +hakkerien tapa. Näin myös ymmärtäisimme paremmin +tietokoneita — ja ehkä löytäisimme osan tekstin +kadotettua kauneutta. + + + Viitteet + -------- + +[1] https://en.wikipedia.org/w/index.php?title=Pipeline_(Unix)&oldid=1219096916#Example +[2] https://geminiprotocol.net + gemini://geminiprotocol.net +[3] Esim. https://jorl.fi/git/stdu/Makefile +[4] https://www.youtube.com/watch?v=X34ZmkeZDos diff --git a/generated/blog/otherpost.txt b/generated/blog/otherpost.txt new file mode 100644 index 0000000..a9f90fd --- /dev/null +++ b/generated/blog/otherpost.txt @@ -0,0 +1,4 @@ + +This is a plain text file + +* Please do not modify this ! diff --git a/generated/blog/post.html b/generated/blog/post.html new file mode 100644 index 0000000..4a690b4 --- /dev/null +++ b/generated/blog/post.html @@ -0,0 +1,210 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="fi" xml:lang="fi"> +<head> +<!-- 2026-06-12 Fri 00:14 --> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<title>‎</title> +<meta name="author" content="Joel Kronqvist" /> +<meta name="generator" content="Org Mode" /> +<style type="text/css"> + #content { max-width: 60em; margin: auto; } + .title { text-align: center; + margin-bottom: .2em; } + .subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } + .todo { font-family: monospace; color: red; } + .done { font-family: monospace; color: green; } + .priority { font-family: monospace; color: orange; } + .tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } + .timestamp { color: #bebebe; } + .timestamp-kwd { color: #5f9ea0; } + .org-right { margin-left: auto; margin-right: 0px; text-align: right; } + .org-left { margin-left: 0px; margin-right: auto; text-align: left; } + .org-center { margin-left: auto; margin-right: auto; text-align: center; } + .underline { text-decoration: underline; } + #postamble p, #preamble p { font-size: 90%; margin: .2em; } + p.verse { margin-left: 3%; } + pre { + border: 1px solid #e6e6e6; + border-radius: 3px; + background-color: #f2f2f2; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; + } + pre.src { + position: relative; + overflow: auto; + } + pre.src:before { + display: none; + position: absolute; + top: -8px; + right: 12px; + padding: 3px; + color: #555; + background-color: #f2f2f299; + } + pre.src:hover:before { display: inline; margin-top: 14px;} + /* Languages per Org manual */ + pre.src-asymptote:before { content: 'Asymptote'; } + pre.src-awk:before { content: 'Awk'; } + pre.src-authinfo::before { content: 'Authinfo'; } + pre.src-C:before { content: 'C'; } + /* pre.src-C++ doesn't work in CSS */ + pre.src-clojure:before { content: 'Clojure'; } + pre.src-css:before { content: 'CSS'; } + pre.src-D:before { content: 'D'; } + pre.src-ditaa:before { content: 'ditaa'; } + pre.src-dot:before { content: 'Graphviz'; } + pre.src-calc:before { content: 'Emacs Calc'; } + pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } + pre.src-fortran:before { content: 'Fortran'; } + pre.src-gnuplot:before { content: 'gnuplot'; } + pre.src-haskell:before { content: 'Haskell'; } + pre.src-hledger:before { content: 'hledger'; } + pre.src-java:before { content: 'Java'; } + pre.src-js:before { content: 'Javascript'; } + pre.src-latex:before { content: 'LaTeX'; } + pre.src-ledger:before { content: 'Ledger'; } + pre.src-lisp:before { content: 'Lisp'; } + pre.src-lilypond:before { content: 'Lilypond'; } + pre.src-lua:before { content: 'Lua'; } + pre.src-matlab:before { content: 'MATLAB'; } + pre.src-mscgen:before { content: 'Mscgen'; } + pre.src-ocaml:before { content: 'Objective Caml'; } + pre.src-octave:before { content: 'Octave'; } + pre.src-org:before { content: 'Org mode'; } + pre.src-oz:before { content: 'OZ'; } + pre.src-plantuml:before { content: 'Plantuml'; } + pre.src-processing:before { content: 'Processing.js'; } + pre.src-python:before { content: 'Python'; } + pre.src-R:before { content: 'R'; } + pre.src-ruby:before { content: 'Ruby'; } + pre.src-sass:before { content: 'Sass'; } + pre.src-scheme:before { content: 'Scheme'; } + pre.src-screen:before { content: 'Gnu Screen'; } + pre.src-sed:before { content: 'Sed'; } + pre.src-sh:before { content: 'shell'; } + pre.src-sql:before { content: 'SQL'; } + pre.src-sqlite:before { content: 'SQLite'; } + /* additional languages in org.el's org-babel-load-languages alist */ + pre.src-forth:before { content: 'Forth'; } + pre.src-io:before { content: 'IO'; } + pre.src-J:before { content: 'J'; } + pre.src-makefile:before { content: 'Makefile'; } + pre.src-maxima:before { content: 'Maxima'; } + pre.src-perl:before { content: 'Perl'; } + pre.src-picolisp:before { content: 'Pico Lisp'; } + pre.src-scala:before { content: 'Scala'; } + pre.src-shell:before { content: 'Shell Script'; } + pre.src-ebnf2ps:before { content: 'ebfn2ps'; } + /* additional language identifiers per "defun org-babel-execute" + in ob-*.el */ + pre.src-cpp:before { content: 'C++'; } + pre.src-abc:before { content: 'ABC'; } + pre.src-coq:before { content: 'Coq'; } + pre.src-groovy:before { content: 'Groovy'; } + /* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ + pre.src-bash:before { content: 'bash'; } + pre.src-csh:before { content: 'csh'; } + pre.src-ash:before { content: 'ash'; } + pre.src-dash:before { content: 'dash'; } + pre.src-ksh:before { content: 'ksh'; } + pre.src-mksh:before { content: 'mksh'; } + pre.src-posh:before { content: 'posh'; } + /* Additional Emacs modes also supported by the LaTeX listings package */ + pre.src-ada:before { content: 'Ada'; } + pre.src-asm:before { content: 'Assembler'; } + pre.src-caml:before { content: 'Caml'; } + pre.src-delphi:before { content: 'Delphi'; } + pre.src-html:before { content: 'HTML'; } + pre.src-idl:before { content: 'IDL'; } + pre.src-mercury:before { content: 'Mercury'; } + pre.src-metapost:before { content: 'MetaPost'; } + pre.src-modula-2:before { content: 'Modula-2'; } + pre.src-pascal:before { content: 'Pascal'; } + pre.src-ps:before { content: 'PostScript'; } + pre.src-prolog:before { content: 'Prolog'; } + pre.src-simula:before { content: 'Simula'; } + pre.src-tcl:before { content: 'tcl'; } + pre.src-tex:before { content: 'TeX'; } + pre.src-plain-tex:before { content: 'Plain TeX'; } + pre.src-verilog:before { content: 'Verilog'; } + pre.src-vhdl:before { content: 'VHDL'; } + pre.src-xml:before { content: 'XML'; } + pre.src-nxml:before { content: 'XML'; } + /* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ + pre.src-conf:before { content: 'Configuration File'; } + + table { border-collapse:collapse; } + caption.t-above { caption-side: top; } + caption.t-bottom { caption-side: bottom; } + td, th { vertical-align:top; } + th.org-right { text-align: center; } + th.org-left { text-align: center; } + th.org-center { text-align: center; } + td.org-right { text-align: right; } + td.org-left { text-align: left; } + td.org-center { text-align: center; } + dt { font-weight: bold; } + .footpara { display: inline; } + .footdef { margin-bottom: 1em; } + .figure { padding: 1em; } + .figure p { text-align: center; } + .equation-container { + display: table; + text-align: center; + width: 100%; + } + .equation { + vertical-align: middle; + } + .equation-label { + display: table-cell; + text-align: right; + vertical-align: middle; + } + .inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; + } + #org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } + textarea { overflow-x: auto; } + .linenr { font-size: smaller } + .code-highlighted { background-color: #ffff00; } + .org-info-js_info-navigation { border-style: none; } + #org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } + .org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } + .org-svg { } +</style> +<link rel="stylesheet"type="text/css" href="../static/global.css"> +</head> +<body> +<div id="content" class="content"> +<div id="outline-container-org51314e9" class="outline-2"> +<h2 id="org51314e9">Test Org post</h2> +<div class="outline-text-2" id="text-org51314e9"> +<p> +This is a test org post. +</p> +</div> +</div> +</div> +</body> +</html> diff --git a/generated/blog/tekstinsyotto.html b/generated/blog/tekstinsyotto.html new file mode 100644 index 0000000..9ae7d80 --- /dev/null +++ b/generated/blog/tekstinsyotto.html @@ -0,0 +1,312 @@ +<!DOCTYPE html> +<html lang="fi"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link href="/static/global.css" rel="stylesheet" type="text/css"> + <title>Tarina toimivamman tekstinsyöttämiseni taustalla</title> + </head> + + <body> + <a id="skiptocontent" href="#content">Siirry pääsisältöön</a> + <header> + <a href="/fi/">FI</a> · <a href="/en/">EN</a> + </header> + <main id="content"> + <h1>Tarina toimivamman tekstinsyöttämiseni taustalla</h1> + +<p>Näppäimistöni ovat aina herättäneet hilpeyttä ystävieni keskuudessa. +Koska ensimmäisessä blogikirjoituksessani kerroin, kuinka näppärää raakateksti voi olla, +lienee sopivaa luoda katsaus, +miten kirjoitan ohjelmakoodia ja muuta raakatekstiä tietokoneella, + ja kuinka ohjelmisto- ja laitteistoratkaisuni tekstinmuokkauksen suhteen ovat muuttuneet ajan saatossa.</p> + + +<p>Joskus lukion alkupuolella siirryin asteittain käyttämään Linuxia, +ensin MinGW:n* kautta, sen jälkeen rinnakkain Windowsin kanssa +ja myöhemmin ainoana käyttöjärjestelmänäni. +Linuxin muokattavuus auttoi minua ymmärtämään, +että kykenen itse vaikuttamaan siihen, +miten ergonomisesti ja tehokkaasti kykenen työskentelemään tietokoneellani.</p> + +<p>Kun etsin tietoa netistä ratkaistakseni erinäisiä haasteita, +en voinut olla törmäämättä mainintoihin Vim-ohjelmasta. +Se on juurikin eräs ratkaisuista, +jotka ovat auttaneet minua parantamaan työskentelyni sujuvuutta.</p> + +<p>Vim on tehokas tilapohjainen tekstinmuokkausohjelma. +Sen tärkeimmät tilat ovat liiketila ja tekstinsyöttötila. +Tekstinsyöttötilassa kirjoitettu teksti päätyy kulloinkin auki olevaan tiedostoon**. +Liiketilassa taas voi siirtää kursoria ja suorittaa komentoja. +Liiketilan erillisyys tekstinsyöttötilasta on äärimmäisen hyödyllistä; +liiketilassa se mahdollistaa tavallisten kirjainten käytön liikkumis- ja yleiskomentoja vastaavina näppäinyhdistelminä. +Kursoria liikutetaan HJKL-näppäimillä nuolinäppäinten tavoin, +"N G" siirtää kursorin riville N, "$" taas rivin loppuun, +"y y" kopioi rivin, jolla kursori on ja niin edelleen. +Kaikkeen löytyy näppäinyhdistelmä. + Liiketilassa on helppoa yhdistellä, toistaa ja ketjuttaa komentoja. +Vimin etsi ja korvaa -toiminto on tehokkain, minkä olen nähnyt missään koodieditorissa.</p> + +<p>Tehokkaan tekstinmuokkauksen lisäksi +Vimin toimintaa voi muokata tarkemmin kuin useimpia muita tekstinmuokkausohjelmia. +Yksi osa tätä on nimenomaan liiketila – voit helposti lisätä näppäinyhdistelmiä, jotka tekevät mitä ikinä tahdot. +Pitkälti kaikkia varsin laajassa dokumentaatiossa [1] mainittuja komentoja ja muuttujia voi muokata omien mieltymystensä mukaan. +Vimiin on saatavilla runsaasti lisäosia [2], jotka voivat esimerkiksi lisätä Vimin yhteensopivuutta muiden ohjelmien kanssa. +Olen sittemmin siirtynyt käyttämään Neovimiä. +Se on Vimin modernimpi ja toteutukseltaan kevyempi***, mutta käytännössä samat ominaisuudet sisältävä versio. +Neovim sisältää sisäänrakennettuna jopa LSP-tuen [3]. +LSP:n tiedoilla se kykenee muun muassa huomauttamaan tekstin muokkaajaa virheistä tämän työstämässä lähdekoodissa. +Käytännössä ohjelma muuttuu LSP-serverin avulla täysiveriseksi IDE:ksi.</p> + +<p>Mikäli Vimin kuvaus jäi epäselväksi, on sen itse kokeileminen ja oppiminen sangen helppoa. +Sitä oppii käyttämään katsomalla pari tutoriaalia YouTubesta (esim. <a href="https://youtu.be/-txKSRn0qeA">youtu.be/-txKSRn0qeA</a>) ja tekemällä +Vimiin sisäänrakennetun tutoriaalin kirjoittamalla ":tutor" ja painamalla enteriä. +Jos Vimin asennus ei vielä houkuta, +löytyy samainen tutoriaali netistä, +esimerkiksi osoitteesta <a href="https://remarkablemark.org/vimtutor/">remarkablemark.org/vimtutor/</a>.</p> + + +<p>Viime aikoina olen myös tehnyt kokeiluja GNU Emacs -kehitysympäristön parissa, +ja olen vaikuttunut sen kyvyistä. +Lisäosien voimalla käytän sitä toistaiseksi kuitenkin enimmäkseen Vimin tavoin. +On muutenkin järkevää jättää sen käsittely myöhemmäksi – +se on luonteeltaan lähempänä käyttöjärjestelmää kuin tekstinmuokkausohjelmaa.</p> + + +<p>Toinen suuri muutos, +jonka tein vaihdettuani Linuxiin, +oli näppäimistöasetteluni vaihtaminen. +En koskaan oppinut kymmensormijärjestelmää kunnolla QWERTY-asettelulla, +muun muassa oudosti aseteltujen näppäinten vuoksi, +jotka hankaloittivat kymmensormijärjestelmän oikeaoppista käyttöä. +Lienee kuitenkin paikallaan selventää, +miksi QWERTY ei ollut minulle – ja tuskin muillekkaan paljon kirjoittaville – toimivin näppäimistöasettelu.</p> + +<p>QWERTY-asettelu kehitettiin aikanaan pääasiassa kirjoituskoneille. +Erilaisia asetteluita oli olemassa paljon, joista varhaisimmissa +näppäimet olivat käytännössä vain aakkosjärjestyksessä [4,5]. +Ensimmäisessä sähkeistä suoraan luettavaa tekstiä – morsekoodin sijaan – tuottavassa lennätikoneessa kirjaimet olivat aakkosjärjestyksen lisäksi kaikki samassa rivissä [6]. +Koska sellaisella näppäimistöllä oli vaivalloista kirjoittaa, siirrettiin kirjaimet kolmeen riviin ja numerot neljänteen. +Nyt peräkkäin ja vierekkäin olevat näppäimet saattoivat kuitenkin painaessa juuttua toisiinsa. +Ratkaisuna näppäimet aseteltiin siten, että useimmiten käytetyt näppäimet eivät olleet vierekkäin.</p> + +<p>Monilla Youtube-videoilla, joihin törmäsin todennäköisesti Linux-mielenkiintoni ja Youtuben algoritmin vuoksi, +perusteltiin toiseen näppäimistöasetteluun vaihtamista jotakuinkin vastaavasti. +Niillä vihjattiin, ettei ole järkevää, että useimmiten käytetyt kirjaimet ovat hajallaan ympäri näppäimistöä. +<a href="#fig1">Kuvasta 1</a> näkee helposti, +kuinka yleisimmin käytettyjä kirjaimia vastaavat näppäimet ovat QWERTYllä kaukana toisistaan. +Mistä muusta muutokset ihmisten käytöksessä nykyään johtuisivat kuin YouTubesta.</p> + +<figure id="fig1"> + <img src="/img/qwerty.png" alt="Kuva QWERTY-näppäimistöstä korostuksilla"> + <figcaption>Kuva 1. Englanninkielinen QWERTY-asettelu, jossa näppäimiä on tummennettu sen perusteella, kuinka paljon niitä vastaavat kirjaimet esiintyvät teksteissä Wikipedian mukaan [7]. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Ei ole perusteltua sanoa, että näppäinten asettelua näppäimistölle ei olisi aikanaan mietitty. +Olisi kuitenkin järkevämpää, että useimmiten käytetyt näppäimet olisivat niin kutsutulla kotirivillä, +jolla sormia oletusarvoisesti pidetään näppäimistöä käytettäessä. +Tällöin sormien tarvitsisi harvemmin jättää kotirivi, +kasvattaen kirjoitusnopeutta ja lyhentäen matkaa, joka sormien on kuljettava näppäimistön yllä.</p> + +<p>Joidenkin kokeilujen kautta päädyin käyttämään Colemak-näppäimistöasettelua [8]. +Vuosilukujen valossa sen voidaan olettaa olevan QWERTYä paremmin suunniteltu. +QWERTY syntyi 1800- ja 1900-luvuilla. +Colemak puolestaan on suunniteltu 2000-luvulla [9] tehokkuutta ergonomisuutta ajatellen [8]. +Tietokoneet oli kehitetty jo pitkälle, kun Colemak suunniteltiin, +joten sitä luodessa voitiin paremmin ottaa huomioon tekijöitä, jotka vaativat laajamittaisempaa laskennallista analyysiä. +Esimerkiksi saman sormen peräkkäisiä kirjainpainalluksia, +saman käden kirjainpainalluksia ja kotirivin eri puolille vuoroin kurottavia (esim. ”minimi” QWERTYllä) näppäily-yhdistelmien esiintyvyyksiä on voitu minimoida [10, 11]. +Yksinkertaisin argumentti Colemakin puolesta lienee se, +että useimmin käytetyt näppäimet sijaitsevat kotirivillä, +kuten <a href="#fig2">Kuvasta 2</a> näkyy.</p> + +<figure id="fig2"> + <img src="/img/colemak.png" alt="Kuva Colemak-näppäimistöstä korostuksilla"> + <figcaption>Kuva 2. Colemak, värikoodi tuotettu samoin kuin <a href="#fig1">Kuvassa 1</a>. Tämä tuottamani kuva on vapaasti käytettävissä <a href="https://creativecommons.org/publicdomain/zero/1.0/legalcode.en">CC0-lisenssillä</a>.</figcaption> +</figure> + +<p>Colemak on toiminut hyvin omassa käytössäni. +Uudella asettelulla kirjoittamista harjoitellessa näppäimistöni näppäinhatut olivat fyysisesti yhä QWERTY-asettelussa. +Koska en voinut tarkastaa näppäimen sijaintia silmilläni, +opin kirjoittamaan katsomatta näppäimistöä ollenkaan, +mikä oli ollut minulle QWERTYä käyttäessä hankalaa. +Kirjoittaminen myös on myös tuntunut mukavammalta; +sormien tarvitsee harvemmin poistua kotiriviltä ja epämukavia näppäilysarjoja tuntuu esiintyvän harvemmin.</p> + +<p>On tietysti hyvä huomata, että Colemak on suunniteltu nimenomaan englannin kirjoittamista varten. +Tahdon itse käyttää kaikista järkevistä käyttöjärjestelmistä löytyvää yleisnäppäimistöä, +joka on samoin aseteltu riippumatta kielestä, jota kirjoitan. +Koska kirjoitan paljon sekä suomea että englantia, ja joskus ruotsia, +joudun joka tapauksessa näppäimistöasettelua valitessa tekemään kompromissin kielten välillä, +tai valitsemaan jonkun harrastelijan tekemän esoteerisen useamman kielen yhdistävän näppäimistöasettelun, +jota tuskin on todettu toimivaksi käytössä. +Kaikeksi onneksi Suomeakin kirjoittaessa Colemak on tuntunut minusta luontevammalta kuin QWERTY.</p> + +<p>Alun perin kokeilin ensimmäisenä näppäimistöasettelunani QWERTYn jälkeen Dvorakia****. +Saatoin mututuntumalla kirjoittaa Dvorakilla nopeammin kuin Colemakilla, +mutta sillä kirjoittaminen oli käsilleni epämukavaa, etenkin oikealle pikkurillilleni, +joka joutui usein kurkottamaan L-näppäimen perään. +Hiljalleen ymmärsin, +että itselle sopivaa näppäimistöasettelua valitessa +olennaisinta on asettelun ergonomisuus eikä kirjoitusnopeus. +Mitä hyötyä on nopeasta kirjoitustyylistä, +jos ei voi kirjoittaa rasitusvamman vuoksi.</p> + +<p>Näppäimistöasettelua valitessani minulle oli tärkeää myös erikoismerkkien helppo saatavuus. +Dvorakissa ei ollut juurikaan erikoismerkkejä, ei edes AltGr:n takana. +Colemakilla käytettävissäni ovat helposti muun muassa paljon käyttämäni +nk. ysiysi-lainausmerkit ‘”’ (AltGr+Shift+0) +sekä m-viiva ‘–’ (AltGr+-), ja mukavuuksina esimerkiksi +numeroiden potenssiversioita ‘¹²³’.</p> + +<p>Voit saada ensikosketuksen Colemakiin netissä esim. nopeuspelin <a href="https://gnusenpai.net/colemakclub/">gnusenpai.net/colemakclub/</a> kautta. +Asennus-/käyttöönotto-ohjeet Colemakille puolestaan löytyvät osoitteesta <a href="https://colemak.com/Download">colemak.com/Download</a>. +Muitakin eri tarkoituksiin optimoituja näppäimistöasetteluja löytyy runsaasti netistä, +mutta Colemak lienee kaikista testatuin ja luotetuin vaihtoehto, +joka löytyy monista laitteista vaihtoehtona ilman erillistä asennusta. +</p> + + +<p>Kiinnostuttuani näppäimistöasetteluni ergonomisuudesta aloin pohtimaan myös fyysisen näppäimistöni ergonomisuutta. +Aloitetaan hyvin yksinkertaisella ajatusleikillä. +Kuvittele olevasi pöydän ääressä ennen ateriaa. +Miten asetat kätesi rennosti pöydälle eteesi? +Entä jos niiden on oltava ainakin hieman erillään eikä yhdessä? +Todennäköisesti kätesi olisivat keskemmällä kuin kyynärpääsi. +On luultavaa, +että ranteesi olisivat suorina, +verrattuna esimerkiksi asentoon, +jossa pikkurillejä taittaa kohti kyynärluita. +Lopulta on yleistä, että kämmenesi eivät olisi olleet litteinä pöytää vasten, +vaan että ranteesi peukalopuoli osoitti joko suoraan ylös tai hieman yläviistoon.</p> + +<p>Tavallinen näppäimistö pakottaa kädet epäluonnolliseen suppuun. +Kuvittele ranteesi suoraan sormiesi takana. +Vie sitten sormesi näppäimistön kotiriville. +Joudut taittamaan pikkurilliäsi kohti kyynärluutasi. +Epämukava asento, eikö? +Ongelma ratkeaa jakamalla näppäimistö keskeltä kahtia . +Tällöin eri puoliskot voi asettaa itselleen mieluisiin kulmiin +ja itselleen mieluiselle leveydelle +siten, että ranteet saavat olla suorassa. +Samalla lapasi ja hartiasi pääsevät rentoutumaan.</p> + +<p>Ranteita on myös mukava kallistaa nostamalla peukkut ylemmäs kuin pikkurillit. +Nyt kun näppäimistösi on kahdessa osassa, +voit vapaasti kallistaa ne kulmaan, joka on ranteillesi mieluinen. +Ainakin, jos näppäimistöillä on telineet, +jotka sallivat niiden kallistamisen kätevästi. +Jotkut kirjoittavat jopa näppäimistönpuolikkaat lähes pystysuorassa.</p> + +<p>Lopulta mielenkiintoisena huomiona on varsin kummallista, että näppäimistöjen sarakkeet ovat useimmiten viistossa eivätkä suoraan ylhäältä alas. +Tämä on QWERTYn lisäksi toinen epäoptimaalinen jäänne kirjoituskoneiden ajalta. +Olihan näppäinten varsien jotenkin ulotuttava pääasialliseen kirjoituslaitteistoon. +Jos näppäimistöt suunniteltaisiin ensimmäistä kertaa nykyään ilman historiallista taakkaa, miksi tabulaattori-, näppäinlukko- ja shift-näppäimiä päätettäisiin kasvattaa eri pituisiksi siten, että loput kirjaimet joutuvat kuin väistämään toisiaan. +Viistous ei sinänsä ole välttämättä epäergonomista, +mutta esimerkiksi kaukana kotirivistä olevien numeronäppäinten löytäminen voi olla hankalaa, +kun vaikkapa numero 5 on etusormen yläpuolella, +vaikka sarakkeiden suoraan mennessä siinä pitäisi olla nelonen.</p> + +<p>Markkinoilla on näppäimistöjä, jotka ratkaisevat kaikki nämä ongelmat. +Esimerkiksi Ergodox Ez [12] ja Voyager [13] ovat suosittuja vaihtoehtoja. +Ne vain maksavat halvimmillaan runsaat kolmesataa euroa parilta, +mahdollisia kuljetuskuluja ja tulleja huomioimatta, +ja olen köyhä opiskelija, joten en aio hankkia sellaisia ainakaan vielä.</p> + +<p>Olisin kuitenkin paljon halunnut kyseisenlaisen näppäimistön. +Runsas vuosi sitten yritin lievittää pulmaani tilaamalla +Perixx Periboard-524B-näppäimistön. +Näppäimistö on toiminut kiitettävästi, +mutta sen sarakkeet eivät mene suoraan. +Lisäksi näppäimistöllä ei ole mekaanisen näppäimistön hyötyjä. +Muutoin näkemykseni siitä ei ole juurikaan muuttunut sen jälkeen, +kun kirjoitin siitä geminikapselissani [14].</p> + +<p>Epäonnekseni tuhlasin rahaa – pian näppäimistön ostamisen jälkeen julkaistiin parempi vaihtoehto, jonka hankkiminen maksaa suunnilleen saman verran. +Onnekseni voin hankkia sen paremman vaihtoehdon nyt, kun huomasin asian. +Noin 10 kuukautta sitten +eräs suomalainen tietotekniikan opiskelija julkaisi netissä ohjeet juuri tarpeeni täyttävän näppäimistön kokoamiseen. +Näppäimistö on vieläpä suunniteltu juuri budjettiystävällisyys ja kokoamisen helppous mielessä. +Näppäimistön nimi on Silakka54, ja sen kokoamisohjeet löytyvät GitHubista [15]. +Voit nähdä näppäimistön <a href="#fig3">Kuvassa 3</a>. +Oletuksena näppäimistössä ei ole kallistavaa telinettä, +mutta olen jo 3D-tulostanut sellaisen. +Näppäimistöjä on saatavilla valmiiksi koottuina AliExpressistä, +tai näppäimistön voi koota tilaamillaan osilla, +kuten itse aion tehdä aidon vapaan lähdekoodin hengen mukaisesti.</p> + +<figure id="fig3"> + <img src="/img/silakka54.png" alt="Kuva Silakka54-näppäimistöstä"> + <figcaption>Kuva 3. Silakka54-näppäimistö. Kuva on <a href="https://github.com/Squalius-cephalus">Juho ”Squalius-cephalus” T.:n</a> ja se on lisensoitu <a href="/static/silakka54-license.txt">MIT-lisenssillä</a>.</figcaption> +</figure> + +<p>Paremman asettelun lisäksi Silakka54:n hyötyjä ovat helppo muokattavuus, +mekaanisten näppäinkytkinten tuoma tuntuma sekä QMK:n (tai Vialin) avulla muokattava firmware. +Näppäimistöä voi muokata esimerkiksi sisältämään lisää kerroksia +(vrt. AltGr:n pohjassa pitäminen, +mutta eri näppäimen pohjassa pitäminen avaa pääsyn niihin merkkeihin, +joita itse useimmiten tarvitsee), +ja tavallisia näppäimiä voi asettaa toimimaan eri näppäiminä pohjaan painaessa +– esimerkiksi välilyönnistä voi tehdä myös Ctrl-näppäimen.</p> + +<p>Koska näppäimistöasettelu määritellään firmware-tasolla, +voi oman asettelunsa myös ottaa mukaan kaikkialle, +minne näppäimistönsä saa mukaan. +Itse aion hyödyntää tätä esimerkiksi sähköisessä EXAM-tenttijärjestelmässä, +mikäli sallittua, +sillä kyseinen järjestelmä pohjautuu ainoalle yleiselle käyttöjärjestelmälle, +joka ei tarjoa Colemak-näppäimistöasettelua.</p> + + +<p>Lopuksi maininnan ansainnee Thumb-Key, +jota käytän näppäimistönä puhelimellani. +Siinä näppäimet ovat suuremmat (ne ovat 4x4-ruudukossa), +joten niihin on helpompi osua. +Toki kääntöpuolena kaikki kirjaimet eivät mahdu näppäimille, +mutta loput merkit saa kirjoitettua vetämällä oikeasta näppäimestä oikeaan suuntaan. +Pidän isommista näppäimistä, muita perusteluja kyseiselle näppäimistölle en anna.</p> + + +<p>En varmasti ole vielä valmis työskentelytapojeni optimoinnin kanssa. +Tämä antoi kuitenkin katsauksen nykyään käyttämiini olennaisimpiin tekstinsyöttööni vaikuttaviin ratkaisuihin, +niin ohjelmistojen kuin näppäimistöjen osalta. +Ratkaisut ovat kaikki helposti kokeiltavissa, paitsi mahdollisesti Silakka54 – fyysisiä esineitä kun on hankala kokeilla heti netissä. +Kokeilemalla ei menetä mitään ja kärsivällisellä harjoittelulla kokeilu voi olla sekä hyödyllinen että hauska.</p> + + +<h2>Linkkejä ja lähteitä</h2> + +<p> +[1] Vimin dokumentaatio. Vim-ohjelmassa saatavilla komennolla ":help", verkossa <a href="https://vimhelp.org/">vimhelp.org</a><br> +[2] Ks. esim. <a href="https://vimawesome.com/">vimawesome.com</a><br> +[3] Neovimin dokumentaation LSP-serverien konfiguroinnista: <a href="https://neovim.io/doc/user/lsp.html">neovim.io/doc/user/lsp.html</a><br> +[4] <a href="https://distantwriting.co.uk/instruments.html">distantwriting.co.uk/instruments.html</a>, kuva 23<br> +[5] W. A. Burt. Patentti laitteelle Typographer. 1829. United states patent and trademark office. Saatavilla <a href="https://ppubs.uspto.gov/api/pdf/downloadPdf/X005581?requestToken=eyJzdWIiOiJlYTExNzhhMy0xNTExLTQ1YTktOWJjMy0yMzdlYTNkYTM4NzgiLCJ2ZXIiOiIwODRjMTAzOC01ZGVjLTQwNjItOWUwNC05M2VjNzlmZWU1ZjUiLCJleHAiOjB9">ppubs.uspto.gov/api/pdf/downloadPdf/[...]</a>.<br> +[6] Wikipedia: Printing telegraph. <a href="https://en.wikipedia.org/wiki/Printing_telegraph">en.wikipedia.org/wiki/Printing_telegraph</a><br> +[7] Wikipedia, kirjainten esiintyvyys. <a href="https://en.wikipedia.org/w/index.php?title=Letter_frequency&oldid=1295211904">en.wikipedia.org/wiki/Letter_frequency</a><br> +[8] Colemakin verkkosivut: <a href="https://colemak.com/">colemak.com</a><br> +[9] Wikipedia-artikkeli Colemakista: <a href="https://en.wikipedia.org/wiki/Colemak">en.wikipedia.org/wiki/Colemak</a><br> +[10] Colemakin suunnitteluprosessista: <a href="https://colemak.com/Design">colemak.com/Design</a><br> +[11] Colemakin ergonomiset tekijät: <a href="https://colemak.com/Ergonomic">colemak.com/Ergonomic</a><br> +[12] Ergodox Ez: <a href="https://ergodox-ez.com">ergodox-ez.com</a><br> +[13] Voyager: <a href="https://zsa.io/voyager">zsa.io/voyager</a><br> +[14] Geminilokini: ”Perixx budget split keyboard – first impression” <a href="gemini://cron4.fi/gemlog/periboard.gmi">gemini://cron4.fi/gemlog/periboard.gmi</a>, Verkkoportaalin kautta <a href="https://portal.mozz.us/gemini/cron4.fi/gemlog/periboard.gmi">portal.mozz.us/[...]</a><br> +[15] Silakka54 <a href="https://squalius-cephalus.github.io/silakka54">squalius-cephalus.github.io/silakka54</a><br> +</p> + +<br> + +<p> +*MinGW ei tietenkään ole Linux, mutta sen kautta sain ensikosketuksen GNU:n komentoriviohjelmiin.<br> +**Oikeastaan teksti päätyy vain tekstikenttään, josta se sitten usein tallennetaan (kirjoitetaan) tiedostoon. +Usein tekstikentän sisältö myös vastaa kyseisen tiedoston sisältöä välitallennuksia vaille. +Kuitenkaan tekstiä ei suoraan kirjoiteta tiedostoon +kuten ei käytännössä missään tekstinmuokkausohjelmassa. +Tosiasiassa tekstikentän ei tarvitse kuvata mitään tiedostoa, +eikä sen sisältöjä tarvitse kirjoittaa mihinkään tiedostoon.<br> +***Neovim sovelluksena vie vähemmän tilaa kuin Vim.<br> +****Todellisuudessa käytin Svdvorakia, Dvorakin ruotsin kirjoittamiseen tarkoitettua versiota, koska oletus-dvorakista ei löydy ääkkösiäkään, toisin kuin oletus-colemakista.<br> +</p> + </main> + </body> +</html> diff --git a/generated/blog/yksinkertaisesti-monipuolinen.txt b/generated/blog/yksinkertaisesti-monipuolinen.txt new file mode 100644 index 0000000..8295fd7 --- /dev/null +++ b/generated/blog/yksinkertaisesti-monipuolinen.txt @@ -0,0 +1,226 @@ + + yksinkertaisesti-monipuolinen.txt + ================================= + +Jos tämä virke ei mahdu 2 riville puhelimesi näytöllä, käännä laitetta, niin lukeminen on helpompaa. + +Tietokoneiden alkuaikoina ihmisen ja tietokoneen +välinen kommunikaatio tapahtui pääosin tekstin +välityksellä. Komentokehotteeseen kirjoitettiin +tekstikomento ja suoritettu ohjelma tulosti käyt- +täjälle yhtä lailla tekstipohjaisen vastauksen. +Kun internet saapui, kommunikoivat ihmiset myös +toistensa kanssa tekstin välityksellä: esimerkik- +si sähköpostit olivat aluksi raakatekstiä. + +Nykyään pelkkään tekstiin (raakateksti, “plain +text”) törmää harvoin ja sitä kavahdetaan. En pie- +nempänä ymmärtänyt edes, mistä raakatekstissä on +kyse. Tietokoneet esittäytyivät minulle word-doku- +menttien, verkkosivustojen ja pdf-tiedostojen +kautta. En tajunnut, että tietokoneissa taustalla +toimii raaempaa tekstiä. Suurin osa muista ikäi- +sistäni ovat varmasti lähteneet samasta käsityk- +sestä, vaikka ovatkin ehkä löytäneet raakateks- +tinkin varttuessaan. + +Teksti on monissa dokumenteissa pääsisältö, mutta +raakatekstin ja verkkosivujen tai pdf-dokumenttien +ero on siinä, että jälkimmäisissä dokumentin suun- +nittelija on vastuussa myös dokumentin ulkoasusta +ja voi lisätä siihen multimediaa. Verkko-ohjel- +moija suunnittelee verkkosivun ulkoasun ja lisää +sille videoita, ja word-dokumentin kirjoittaja +muuttaa dokumentin fonttia ja lisää siihen kuvia. + +Raakatekstissä mikään tästä ei ole mahdollista. +Raakatekstiä on se, mitä Windows-käyttäjä kirjoit- +taa Notepadiin. Raakatekstistä koostuu myös tämä +blogipostaus. + +Ohjelmistotasolla raakateksti koostuu tavuista, +joista jokainen vastaa tiettyä merkkiä. Nykyään +käytännössä kaikki raakateksti noudattaa UTF-8 +-standardia, joka määrittelee tavujen ja merkkien +vastaavuudet. 01000001 vastaa isoa A:ta, 01000010 +isoa B:tä, 0011 1111 kysymysmerkkiä ja niin edel- +leen. Jotkin merkit koostuvat useammasta tavusta, +koska kahdeksan nollaa tai ykköstä ei riitä esit- +tämään kaikkia merkkejä — näin jopa emojeille löy- +tyy tuki UTF-8 -tekstistä, mikäli fontti sallii🥳 + +Käyttöön raakateksti pääsee nykyään harvoin — jopa +yksinkertaiset muistiinpanot kirjoitetaan esimer- +kiksi Google Docsiin. Se on harmillista, koska +raakatekstillä on ominaisuuksia, jotka tekevät +siitä monissa tapauksissa käyttökelpoisempaa kuin +mistään muusta datan muodosta. + +Raakatekstin kaksi suurinta hyötyä ovat sen yksin- +kertaisuus ja kaikkialla toimivuus. Tekstin for- +maatista vallitsee suurempi yksimielisyys kuin +muiden formaattien osalta ja se on yksikäsittei- +sempää. + +Edellä mainittujen ominaisuuksiensa ansiosta +raakateksti toimii mainiosti tietokoneohjelmien +kanssa kommunikointiin ja niiden välillä tapahtu- +vaan tiedonvaihtoon. On helppoa kirjoittaa +ohjelma, joka lukee tekstiä. Ohjelma tietää mitä +se lukee, koska teksti on hyvin standardisoitua. +Lisäksi se saa datan puhtaana — sen ei tarvitse +eritellä sille olennaista informaatiota ympäröi- +västä ihmissilmälle tarkoitetusta esitystapaa kos- +kevasta informaatiosta kuten tekstin sijainnista +tai fontista. + +Tämä mahdollistaa tekstipohjaisten ohjelmien käy- +tön tehokkaaseen tiedon muokkaamiseen, “skriptaa- +miseen”. Otetaan esimerkiksi aloitus- ja lopetus- +puheiden koostaminen. Miksaan välillä Lohjan seu- +rakunnan messuja ja lähetän ne radioon. Lähetysten +alkuun ja loppuun lausutaan lyhyet ns. spiikit, +jotka koostan aluksi tekstinä. Tykkään kerätä +spiikkien muuttuvat tiedot edellisen päivän iltana +puhelimeeni tekstitiedostoon, ja kun tulen aamulla +kirkolle, kirjoitan vain tietokoneella: + + $ nc -l 1234 >> Desktop/Spiikit/2020-01-01.txt + +ja puhelimellani + + $ nc 10.10.16.231 1234 < infot.txt + +ja olen näin saanut liitettyä tarpeelliset tiedot +puhelimeltani oikeaan tiedostoon seurakunnan +tietokoneella. Mikään tästä ei toimisi — ainakaan +läheskään yhtä hyvin — jos käyttäisin raakatekstin +sijaan vaikkapa `.docx`-dokumentteja. Erilaisia +tekstipohjaisia ohjelmia voi yhdistellä vielä +käyttökelpoisemmin ja monipuolisemmin: Wikipedi- +asta löytyy hyvä esimerkki [1] (linkki dokumentin +lopussa). + +Pelkän tekstin mukana ei myöskään tule turhaa tie- +toa, kuten fonttia, tekstin väriä, videoita tai — +raakatekstiin keskittyvien protokollien yhtey- +dessä — evästeitä. Lukijan ei siis tarvitse odot- +taa, kun verkkosivu lataa kymmenien megatavujen +kokoista videota hipstereistä hyppimässä kännyköi- +densä kanssa (ks. `https://agt.fi`) ja miettiä, +mistä hän saisi paremman nettiliittymän tai kirota +esimerkiksi VPN:n tai Tor-verkon hitautta. Sen +sijaan hän pääsee lähes välittömästi muutaman +(kymmenen) kilotavun kokoisen, hänen kannaltaan +olennaisen tekstisisällön pariin. Resursseja +säästyy ja joidenkin mielestä tiedonsaanti on näin +myös mukavampaa. + +Raakateksti on tehokasta tietojenkäsittelyssä, +mutta mitä tapahtuu, kun päättää tietoisesti käyt- +tää sitä osuvamman formaatin sijaan? Mitä käy esi- +merkiksi, kun kirjoittaa blogipostauksen pelkällä +tekstillä verkkosivuilla tavallisesti käytetyn +HTML-merkintäkielen sijaan? + +HTML:n käyttäminen tarjoasi mahdollisuuden lisätä +tekstiin linkkejä ja kuvia. Lisäksi se tarjoaa +tavan viestittää dokumentin eri osia — koodissa +lukee, mikä osio on tarkoitettu valikoksi, mistä +löytyy pääsisältö ja mikä sen sisällä on otsikko +ja mikä taas alaotsikko. + +Kuten rajoitteiden kanssa yleensä käy, pakottaa +pelkän tekstin käyttäminen kirjoittajan ylittämään +formaatin asettamat rajoitukset ja kannustaa näin +luovuuteen. Jos tekstidokumenttiin tahtoo lisätä +linkin, täytyy se kirjoittaa auki. Voin esimer- +kiksi kertoa, että HTML:n standardi löytyy osoit- +teesta `https://www.rfc-editor.org/rfc/rfc2854`. +Linkin auki kirjoittamisesta on yllättävää +hyötyä: lukija näkee välittömästi minne se vie. +Lisäksi se toimii, vaikka dokumentin tulostaisi +paperille. + +Kuvien välittäminen tekstin kautta taas on luonut +kokonaisen taiteen alan, nimittäin ASCII-taiteen. +Siinä kuva esitetään raakatekstin tarjoamien merk- +kien puitteissa. Yksinkertaisia kaaviokuvia on +tietyissä tapauksissa varsin helppokin piirtää: + ________________________________ + | | + | H H H CH3 | + | | | | \ | + | H - C - C - C - OH C = O | + | | | | | | + | H H H OH | + |________________________________| + Propanoli ja etaanihappo + _____________________ + | _ | + | v | + | ---------> | + | | + | ^ _ | + | | N | + | | | + | | | + | ___|___ | + | | | | + | _ <--| | | + | Fµ | | | | + | _____|___|___|_____ | + | | _ | + | | G | + | v | + |_____________________| + Liukuva kappale + + (huom. kuvien näkemiseksi selaimesi on käytettävä + tiedoston näyttämiseen tasavälistä fonttia) + +Kaaviokuvien lisäksi on myös ASCII-taidetta, jossa +paino on nimenomaan sanalla 'taide'. Netistä löy- +tyy paljon ASCII-taiteen kokoelmia, esimerkiksi +osoitteesta `https://www.asciiart.eu` ja +`https://ascii.mozz.us:7070`. + +Tekstin arvaamattoman kauneuden, sen tehokkuuden +ja vähän turhan informaation vuoksi internetissä +on syntynyt uusia yhteisöjä ja protokollia raaka- +tekstin ympärille. Ylläpidän itse esimerkiksi +geminikapselia osoitteessa +“gemini://gemini.jorl.fi”. Geminin kuvauksen +ensimmäinen lause on vapaasti suomennettuna: +“Gemini on uusi, yhteenlinkitettyjä tekstidoku- +mentteja tukeva internet-teknologia.” [2] Muitakin +protokollia ja yhteisöjä on, joista hyvän otoksen +saa esimerkiksi Michael Lazarin kotisivujen etusi- +vulta `https://mozz.us`. + +Lopulta on myös huomioitava, että käytännössä +kaikki tietokoneohjelmat kirjoitetaan raakateks- +tinä. Projektieni tiedostot ovat luettavissa +netissä tekstinä. [3] (Ja kuka kirjoittaisi tieto- +koneohjelmia Wordilla? Siitä on olemassa jopa +satiirinen Youtube-video! [4]) Suuri osa tiedonvä- +litysprotokollista on määritelty raakateksti +lähtökohtana. Raakateksti siis muodostaa tietoko- +neiden ja laskennan selkärangan. + +Jos tahdomme oppia käyttämään tietokoneita tehok- +kaammin ja sulavammin, tulisi raakatestistä ja +sen käsittelystä siis tehdä normi eikä pelottavien +hakkerien tapa. Näin myös ymmärtäisimme paremmin +tietokoneita — ja ehkä löytäisimme osan tekstin +kadotettua kauneutta. + + + Viitteet + -------- + +[1] https://en.wikipedia.org/w/index.php?title=Pipeline_(Unix)&oldid=1219096916#Example +[2] https://geminiprotocol.net + gemini://geminiprotocol.net +[3] Esim. https://jorl.fi/git/stdu/Makefile +[4] https://www.youtube.com/watch?v=X34ZmkeZDos diff --git a/generated/img/colemak.png b/generated/img/colemak.png Binary files differnew file mode 100644 index 0000000..6189052 --- /dev/null +++ b/generated/img/colemak.png diff --git a/generated/img/qwerty.png b/generated/img/qwerty.png Binary files differnew file mode 100644 index 0000000..6d4bed8 --- /dev/null +++ b/generated/img/qwerty.png diff --git a/generated/img/silakka54.png b/generated/img/silakka54.png Binary files differnew file mode 100644 index 0000000..3d8a992 --- /dev/null +++ b/generated/img/silakka54.png diff --git a/generated/static/global.css b/generated/static/global.css new file mode 100644 index 0000000..6a2ec49 --- /dev/null +++ b/generated/static/global.css @@ -0,0 +1,136 @@ + + +* { + --bg: #050505; + --dim-bg: #444444; + --code-bg: #222222; + --text: #EEEEEE; + --dim-text: #CDCDCD; + --link: #00E800; + --link-active: #22FF22; + overflow-wrap: break-word; +} + +@media (prefers-color-scheme: light) { + * { + --bg: #FAFAFA; + --dim-bg: #D0D0D0; + --code-bg: #E0E0E0; + --text: #000000; + --dim-text: #555555; + --link: #CC6600; + --link-active: #FF8000; + } +} + +body { + --transition: .15s; + background-color: var(--bg); + color: var(--text); + margin: 2em .5em; + font-family: sans-serif; +} + +p { + text-align: justify; +} + +@media screen and (orientation: landscape) { + body { + margin: 2em 20%; + } +} + +h1 { + text-align: center; + padding: 1em; +} + +header { + position: absolute; + top: 0; + left: 0; + padding: .5rem; + text-align: center; + width: 100vw; + box-sizing: border-box; +} + +.x-scroll { + overflow-x: auto; +} +pre { + padding: 1em; + background-color: var(--code-bg); + width: fit-content; +} + +figure > img { + width: 100%; +} + +.profilepicture { + --width: min(40%, 10rem); + border: 3px solid gold; + border-radius: 50%; + width: var(--width); + margin: 2rem calc((100% - var(--width)) / 2) 0 calc((100% - var(--width)) / 2); +} + +.pixelart { + image-rendering: pixelated; +} + +a { + color: var(--link); + transition: color var(--transition); +} +a:hover,a:focus { + color: var(--link-active); +} +#skiptocontent { + opacity: 0; + position: absolute; + transition: opacity var(--transition); + top: -5em; + left: 1em; + +} +#skiptocontent:focus { + top: 1em; + opacity: 1; +} + +nav.menu > a { + display: block; + background-color: var(--bg); + transition: background-color var(--transition), color var(--transition); + border: 0 solid black; + text-decoration: none; + padding: .3em; +} +nav.menu > a:first-child { + border-radius: .5em .5em 0 0; +} +nav.menu > a:last-child { + border-radius: 0 0 .5em .5em; +} +nav.menu > a:only-child { + border-radius: .5em; +} +nav.menu > a:hover,nav.menu > a:focus { + background-color: var(--dim-bg); +} +nav.menu > a > p:not(:first-child) { + color: var(--dim-text); +} +nav.menu > a:hover > p:not(:first-child) { + color: var(--text); +} +nav.menu > a > p { + margin: 0; + padding: .1em; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} diff --git a/generated/static/silakka54-license.txt b/generated/static/silakka54-license.txt new file mode 100644 index 0000000..c4d96c1 --- /dev/null +++ b/generated/static/silakka54-license.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Squalius-cephalus. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/img/colemak.png b/img/colemak.png Binary files differnew file mode 100644 index 0000000..6189052 --- /dev/null +++ b/img/colemak.png diff --git a/img/qwerty.png b/img/qwerty.png Binary files differnew file mode 100644 index 0000000..6d4bed8 --- /dev/null +++ b/img/qwerty.png diff --git a/img/silakka54.png b/img/silakka54.png Binary files differnew file mode 100644 index 0000000..3d8a992 --- /dev/null +++ b/img/silakka54.png diff --git a/lisp/org-publish-project-alist.el b/lisp/org-publish-project-alist.el new file mode 100644 index 0000000..0310ce0 --- /dev/null +++ b/lisp/org-publish-project-alist.el @@ -0,0 +1,44 @@ + +(defun file-extension (filename) + "returns the file extension of the supplied filename, +or nil if no extension was present" + (car + (last + (split-string filename "\\.")))) + +(defun org-html-publish-or-copy (plist filename pub-dir) + "If the file extension is `.org`, publish using +org-html-publish-to-html, otherwise use org-pubish-attachment." + (if (string-equal (file-extension filename) "org") + (org-html-publish-to-html plist filename pub-dir) + (org-publish-attachment plist filename pub-dir))) + +(let ((root "~/Documents/orgsite/") (generated "generated/")) + (setq org-publish-project-alist + `(("blog" + :base-directory ,(concat root "blog") + :publishing-directory ,(concat root generated "blog") + :base-extension any + :exclude ".*~" + :publishing-function org-html-publish-or-copy + :html-head-extra "<link rel=\"stylesheet\"type=\"text/css\" href=\"../static/global.css\">" + :html-postamble nil + :with-toc nil + :section-numbers nil + :language "fi") + + + ; TODO Refactor + ("static" + :base-directory ,(concat root "static") + :publishing-directory ,(concat root generated "static") + :base-extension any + :publishing-function org-publish-attachment) + ("img" + :base-directory ,(concat root "img") + :publishing-directory ,(concat root generated "img") + :base-extension any + :publishing-function org-publish-attachment) + + + ))) diff --git a/lisp/org-publish-project-alist.el~ b/lisp/org-publish-project-alist.el~ new file mode 100644 index 0000000..70fb2ce --- /dev/null +++ b/lisp/org-publish-project-alist.el~ @@ -0,0 +1,33 @@ +(setq org-publish-project-alist + '(("fi" + :completion-function (lambda (a) (copy-file "~/Documents/orgsite/generated/fi/index.html" "~/Documents/orgsite/generated/index.html" 1)) + :base-directory "~/Documents/orgsite/pages/fi" + :publishing-directory "~/Documents/orgsite/generated/fi" + :base-extension "org" + :publishing-function org-html-publish-to-html + :recursive t + :with-toc nil + :lang "fi" + :html-head "<link rel=\"stylesheet\"href=\"/static/mystyle.css\" type=\"text/css\"/>") + ("en" + :base-directory "~/Documents/orgsite/pages/en" + :publishing-directory "~/Documents/orgsite/generated/en" + :base-extension "org" + :publishing-function org-html-publish-to-html + :recursive t + :with-toc nil + :lang "en" + :html-head "<link rel=\"stylesheet\"href=\"/static/style.css\" type=\"text/css\"/>") + ("img" ; equiv with static + :base-directory "~/Documents/orgsite/img" + :publishing-directory "~/Documents/orgsite/generated/img" + :base-extension any + :recursive t + :publishing-function org-publish-attachment) + ("static" ; equiv with img + :base-directory "~/Documents/orgsite/static" + :publishing-directory "~/Documents/orgsite/generated/static" + :base-extension any + :recursive t + :publishing-function org-publish-attachment) + ("website" :components ("fi" "en" "img" "static")))) diff --git a/static/global.css b/static/global.css new file mode 100644 index 0000000..6a2ec49 --- /dev/null +++ b/static/global.css @@ -0,0 +1,136 @@ + + +* { + --bg: #050505; + --dim-bg: #444444; + --code-bg: #222222; + --text: #EEEEEE; + --dim-text: #CDCDCD; + --link: #00E800; + --link-active: #22FF22; + overflow-wrap: break-word; +} + +@media (prefers-color-scheme: light) { + * { + --bg: #FAFAFA; + --dim-bg: #D0D0D0; + --code-bg: #E0E0E0; + --text: #000000; + --dim-text: #555555; + --link: #CC6600; + --link-active: #FF8000; + } +} + +body { + --transition: .15s; + background-color: var(--bg); + color: var(--text); + margin: 2em .5em; + font-family: sans-serif; +} + +p { + text-align: justify; +} + +@media screen and (orientation: landscape) { + body { + margin: 2em 20%; + } +} + +h1 { + text-align: center; + padding: 1em; +} + +header { + position: absolute; + top: 0; + left: 0; + padding: .5rem; + text-align: center; + width: 100vw; + box-sizing: border-box; +} + +.x-scroll { + overflow-x: auto; +} +pre { + padding: 1em; + background-color: var(--code-bg); + width: fit-content; +} + +figure > img { + width: 100%; +} + +.profilepicture { + --width: min(40%, 10rem); + border: 3px solid gold; + border-radius: 50%; + width: var(--width); + margin: 2rem calc((100% - var(--width)) / 2) 0 calc((100% - var(--width)) / 2); +} + +.pixelart { + image-rendering: pixelated; +} + +a { + color: var(--link); + transition: color var(--transition); +} +a:hover,a:focus { + color: var(--link-active); +} +#skiptocontent { + opacity: 0; + position: absolute; + transition: opacity var(--transition); + top: -5em; + left: 1em; + +} +#skiptocontent:focus { + top: 1em; + opacity: 1; +} + +nav.menu > a { + display: block; + background-color: var(--bg); + transition: background-color var(--transition), color var(--transition); + border: 0 solid black; + text-decoration: none; + padding: .3em; +} +nav.menu > a:first-child { + border-radius: .5em .5em 0 0; +} +nav.menu > a:last-child { + border-radius: 0 0 .5em .5em; +} +nav.menu > a:only-child { + border-radius: .5em; +} +nav.menu > a:hover,nav.menu > a:focus { + background-color: var(--dim-bg); +} +nav.menu > a > p:not(:first-child) { + color: var(--dim-text); +} +nav.menu > a:hover > p:not(:first-child) { + color: var(--text); +} +nav.menu > a > p { + margin: 0; + padding: .1em; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} diff --git a/static/silakka54-license.txt b/static/silakka54-license.txt new file mode 100644 index 0000000..c4d96c1 --- /dev/null +++ b/static/silakka54-license.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Squalius-cephalus. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. |
