Posts filed under 'softat'

Eväitä engineä vastaan

Terpan postauksesta innoittuneena päätin itsekin kirjoittaa jotain kokemuksiani The Kilobyte’s Gambitia vastaan mittelystä. Pienestä kilotavun koostaan huolimatta engine ei ole ihan helppo voitettava, etenkin kun se pelaa aika kummallisesti useimpiin ihmisiin verrattuna. Viimeisimmistä viidestätoista pelistä olen voittanut kolmetoista ja tasapelejä on tullut kaksi, joten uskoisin, että aika varma resepti alkaa olla kasassa. Toki edelleen on tarpeen pelata tarkasti, sillä Beth rokottaa kyllä ainakin pahimmista virheistä vääjäämättä. Perusveivini lähtee liikkeelle tukevalla Lontoon systeemillä, jota pelaan muutenkin valkoisilla. Seuraavaksi odotellaan, sössiikö kone heti avauksessa yhden kuningaslaidan sotilaan, kuten tässä on käynyt:

“CGA”-palikkamössöstä on välillä hieman vaikea erottaa nappeja toisistaan (kuningas/daami ja lähetti/sotilas etenkin).

Kuten kuvasta näkyy, keskelle (e5) on jäänyt hyödyllinen reikä, johon voi läntätä ratsun. Ratsun voi tarvittaessa vaihtaa pois puolustuksen heikentämiseksi ja kierrättää toisen samaan ruutuun. Kuningas on lähtenyt seilaamaan keskelle lautaa, jolloin Amerikan päihdeongelmainen ihmelapsi on menettänyt samalla tornitusoikeutensa. Oma kuningasasema näyttää turvalliselta, etenkin kun Bethin lähetti on omien sotilaiden takana jumissa eikä kuningatarkaan hetkeen hyökkäämään pääse. Toisinaan laidasta pääsee vaihtamaan lisäksi lähettinsä shakilla torniin, mutta ei enää tässä tapauksessa. Seuraavaksi yritän avata kuningatarlaidan, mihin engine aina suostuukin ja vaihtaa samalla tornit, mikä puolestaan päästää valkean kuningattaren laitaa pitkin hyökkäämään.

Vielä kootusti joitakin Kilotavun gambiitin heikkouksia, joista olen onnistunut saamaan pientä tai jopa ratkaisevaa etua:

  • Beth ei näe kovin monen siirron päähän, joten se ei lähde ajoissa pysäyttämään korottujia tai osaa varoa muutaman siirron sommitelmia
  • Jos lyönnin voi tehdä usealla eri napilla, Beth lyö ensisijaisesti kuninkaalla, mikä ajaa kurkon huonompaan paikkaan
  • Beth ei pelaa kovin hyökkäävästi, esim. kuningashyökkäykset ovat harvinaisia
  • Sotilaita saa usein ilmaiseksi ainakin yhden Lontoon systeemillä – en ole juuri muita avauksia kokeillutkaan
  • Bethin avauspeli on pääosin sotilaantyöntelyä, jolloin asemaan jää reikiä etenkin ratsuille
  • Beth ei juuri koskaan tornita (ainakaan itse en ole nähnyt moista kertaakaan)
  • Häviöksi kääntyneessäkin pelissä saattaa vielä löytyä tilanne, jossa Beth ryhtyy toistamaan samoja siirtoja loputtomasti, millä saa aikaan yhden sortin “tasapelin”

Toisaalta Neuvostoliiton shakkikoneiston kukistajalla on joitakin ominaisuuksia, jotka tekevät siitä virheistä huolimatta hankalan vastustajan: jos tarjolla on haarukoita tai roikkuvia nappeja, niin ne kyllä huomataan armottomasti. Sotilaantyöntelyä vastaan pitää pelata huolellisesti tai huomaa pian olevansa selkä seinää vasten ahtaassa asemassa. Roikkuvia upseereja pääsee harvoin lyömään ilmaiseksi, sillä engine osaa pitää puolustuksesta kohtuullisesti huolta. Loppupeleissä avoimella laudalla 1k-shakki sommittelee joskus turhauttavankin tarkasti, jolloin omat sotilaat katoavat yksi toisensa jälkeen. Lisäksi etenkin mustan nappeja oli vaikea erottaa toisistaan aluksi, minkä vuoksi välillä tuli törttöiltyä; sittemin silmä näyttää teroittuneen eikä samanlaisia huomiovirheitä tule ainakaan yhtä usein.

Add comment May 4th, 2021

DDC:n äärellä

Jälleen aivan sattumalta tuli vastaan perusjuttu, josta olen ollut lähes tietämätön, nimittäin että DDC-protokollan ansiosta tietskari voi lukea näytöltä tietoja ja myös säätää monenlaisia asetuksia — käytännössä kaikkea, mitä näytön menustakin. Linuxissa tarvitaan ddcutil, joka löytyy valmiina paketinhallinnasta. Ensimmäisenä etsitään näytön I2C-väylänumero:

sudo ddcutil detect

Omalla koneellani HP:n littu on jostain syystä numerolla 7, kun taas kahdessa muussa talouden pöntössä näytöt ovat 3 ja 0. En tiedä, miten nämä numerot määräytyvät, mutta ainakin niitä tarvitaan ohjailuun eikä voi olettaa, että näyttö löytyy eri koneilla samasta kiinteästä osoitteesta. Tarkastellaan seuraavaksi, mitä kaikkea on tarjolla:

sudo ddcutil capabilities --bus=7

HP antaa melkoisen luettelon kaikenlaista, Lenovon vähän vanhempi näyttökin yhtä sun toista, mutta Samsungin telsu vain hyvin vähän valintoja. Sen verran järkeä DDC:n suunnittelussa on ilmeisesti käytetty, että tietyt ominaisuudet ovat standardeilla numeroilla, kuten vaikkapa AE (Vertical Frequency). Luettelon loppupäästä löytyy myös valmistajan omia lisäyksiä, joista työkalu ei osaa kertoa tarkemmin. Kaiken varalta jättänen niiden kokeilun sikseen ikävien yllätysten välttämiseksi. Komennot getvcp ja setvcp mahdollistavat asetusten lukemisen ja myös säätämisen:

sudo ddcutil --bus=7 getvcp C0

Yllä oleva rimpsu näyttää ominaisuuden C0 (Display usage time) arvon eli käyttötunnit. Komennosta ehti olla jo ihan käytännön hyötyäkin, sillä juniorin Lenovo ei näytä käyttötunteja menussaan, mutta DDC:n kautta ne sai näkyviin näin helposti. Näytön asetusten säätämistä en ehkä haluaisi tehdä näin komentoriviltä, mutta toisaalta voin kuvitella tilanteita, jossa siitäkin voisi olla iloa, kuten vaikkapa automatisoitu kirkkaussäätö tai näytön sammuttelu kellonajan mukaan.

edit: Asetusten säätö on hieman hidasta, joten skriptillä tehty näytön kirkkautta pehmeästi muutteleva viritelmä jäi pettymykseksi. Mieleen tuli myös yksi realistinen käyttökohde lisää: jostain syystä väärällä kielellä olevat näytön menut voi käydä resetoimassa vaikkapa enkuksi DDC:llä, jos asetusta ei menusta navigoimalla löydä.

Add comment March 18th, 2021

Runollista Protonin tunkkaamista

Tällä erää taas uusi aluevaltaus Protonin kanssa. Kalevalaisesta kansantarustosta ammentava kotimainen Runo ilmestyi hiljattain virallisesti. Peli on ladattavissa ilmaiseksi, mutta se toimii “tietysti” vain Windowsilla, eli ainakin jonkinlaista säätöä on odotettavissa, jos sitä mielii Mäkillä tai Linuxissa ajaa. Hätäinen kokeilu perus-Winellä johti — jokseenkin odotetusti — vain pelin kaatumiseen, joten suuntasin seuraavaksi katseeni Steam-pelien kanssa hyväksi havaitun Protonin suuntaan.

Protonissa on ollut jo kautta maailman sivu mahdollisuus ajaa muitakin kuin Steamin kautta asennettuja Windows-pelejä, mutta koska minulla ei sellaisia juuri ole, niin en ollut toimintoa koskaan kokeillut. Erityisen vaikea toimenpide se ei ole: alareunan kohdasta Add a game — Add a Non-Steam Game… — Browse (File type: All files) kaivellaan pelin exe-tiedosto, jonka jälkeen se ilmestyy kirjastoon. Oikealla napilla saa sitten esiin seuraavan näkymän:

Asetusten asetusta

Oleellinen säätö Runon tapauksessa löytyi Compatibility-välilehdeltä. Viimeisimmällä tai kokeellisella Protonin versiolla sai nimittäin aikaiseksi vain jumin tai alkuruudun, jossa ei voi klikata hiirellä. Vaan laitetaanpa 5.0-10 asialle ja johan soi:

alt=”Hohtava lintu nokkii kannelta pimeässä metsässä”

Järin paljon en peliä vielä ehtinyt testailla, mutta ainakin alkuruudusta pääsee eteenpäin, soitto soi ja asetuksetkin toimivat. Oletuksena oli käytössä 1080p-tarkkuus, jonka ruuvasin onnistuneesti 1440p:ksi. Päivitän alle, jos pidemmän päälle ilmenee jotain kompurointeja tai kaatumisia. Ihan avaimet käteen -ratkaisu tämä ei ollut, mutta ei paljon puutu, joten taas pisteet Protonille. Ehkäpä joku päivä pitää yritellä jotain hieman mutkikkaampaa tekelettä, vaikka olenkin aika skeptinen erillistä asennusta vaativien pelien suhteen (Runohan ei vaadi kuin zipin purkamisen).

Add comment March 8th, 2021

Kun Zoomi ei aukea selaimesta / When Zoom doesn’t start from a browser

Pari kertaa on käynyt niin, että kun olen päivittänyt Zoomin Linux-koneella, niin se on lakannut aukeamasta suoraan selaimesta. Ongelma liittyy jotenkin xdg-openiin ja siihen, mitä tehdään zoommtg-tyyppisille osoitteille. Netistä löytyi onneksi kätevä rimpsu, joka ongelman korjaa:

xdg-settings set default-url-scheme-handler zoommtg Zoom.desktop

A couple of times it has happened that after updating Zoom on Linux, online meetings won’t start any more from a browser. The issue has to do with xdg-open and its URL handling. The above blurb, conveniently found online, will fix the issue.

Add comment January 29th, 2021

Katsaus vuoteen 2020

Sellainen oli 2020. Kuvittelin viime vuoden olleen jotenkin poikkeuksellisen raskas, mutta tähän loppuvaan verrattuna ei se sitä tainnut ollakaan. Koronavirus vaikutti tietysti melkein kaikkeen tänä vuonna, kuten varmasti muillakin, mutta ehkäpä aiheesta ei nyt jaksa jauhaa juuri nyt paljon enempää – muistelmia etäkoulusta kirjoittelin jo keväämmällä. Yleensähän nämä pandemiat ovat “siellä jossain” eivätkä kosketa lintukotoamme, mutta tämänkertainen tuli ihan kotiovelle asti.

Töitä ja tutkimusta

Aallossa ryhdyttiin etätöihin suunnilleen ensimmäisten joukossa keväällä, mistä seurasi yllätys ja toinenkin, kun lähiopetukseen suunnitellut kurssit piti pikaisesti siirtää verkkoon. Osa opetuksesta, kuten opinnäyteseminaari, teki digiloikan odottamattoman helposti, siinä missä studiokurssit olivat paljon kinkkisempi tapaus. Eipä juuri käy kateeksi syksyllä aloittaneita uusia opiskelijoita, jotka eivät ole välttämättä nähneet luokkakavereitaan fyysisesti ollenkaan – toisaalta jotkut sanoivat opintojensa sujuneen nyt jopa paremmin, kun kursseihin pystyi osallistumaan kotoa käsin.

Videopuheluihin ei ole valitettavasti oikein standardia, ja vaikka suurin osa omista duuneista on hoitunutkin Zoomilla, on taloudessa eri tarkoituksiin käytetty myös ainakin Teamsia, TeamWieweriä, Google Meetiä ja Facebook Messengeriä. Suurin osa toimii Linuxissakin hyvin, mutta toisinaan on tarvinnut kaivaa vanha MBP kaapista.

2019 kypsyi poikkeuksellisen mukava artikkelisato, joten tänä vuonna on ollut sitten vastaavasti hiljaisempaa. Tapani Joelssonin kanssa kirjoitettu ”Another visitor!” – kun puhuvat koneet tulivat kotiin taisi jäädä ainoaksi vertaisarvioiduksi julkaisuksi. Populaaripätkiä tuli sentään työstettyä Skrolliin tavallista enemmän, vaikka niistä ei paljon akateemista glooriaa kerrykään. Hartaasti kokoon kursittu WiderScreenin tietokonekulttuuriaiheinen erikoisnumerokin saatiin lopulta kunnialla pihalle.

Vuoden akateeminen kohokohta osui elokuulle, kun Turun yliopiston humanistinen tiedekunta myönsi allekirjoittaneelle digitaalisen kulttuurin dosentuurin. Juuri mihinkään se ei ole vielä ehtinyt vaikuttaa (eikä välttämättä vaikutakaan), mutta oli silti mukavaa saada jotain tunnustusta vuosien rehkimisestä. Samalla karistin henkisesti viimeisetkin pitkän jatko-opiskelulimbon tomut jaloistani.

Skenetyksiä

Ensi hätään tuntui siltä, että eipä tänäkään vuonna paljon mitään tullut tehtyä, mutta ei tilanne aivan niin synkeältä näytä lähemmässä tarkastelussa. Muutama PETSCII-kuva tuli jälleen väkästettyä joko kilpailuihin tai omaksi huviksi, ja pariin niistä olen jopa näin jälkikäteenkin ihan tyytyväinen. Pariin kertaan laitoin merkistön myös opetuskäyttöön, kun havainnekuvia oli nopeaa tehdä petskarina. Vastoin odotuksiani koodasin jopa yhden ruudun minimalistisen pikku Processing-demon (Naien) Vammala Partyille. Ensi vuonna täytyy luultavasti aktivoitua hieman enemmän, sillä Fit täyttää pyöreät 30 vuotta.

Pitkään ja hartaasti väsätyt Marq’s PETSCII Editor ja Pixel Polizei saivat molemmat ison päivityksen. Merkittävin sisäinen muutos oli loikka Processingin versiosta 2 versioon 3, mutta ujutin kaikenlaista muutakin pikku lisätoimintoa ja bugikorjausta mukaan, kuten vaikkapa paremmat tiedostovalitsimet Linuxille ja Macille. Polliisi on näistä kahdesta se sivuraiteelle joutunut projekti, jolla ei liene paljonkaan aktiivikäyttäjiä, siinä missä PETSCII-editorilla niitä on varmasti ainakin useita kymmeniä ulkomaita myöten.

Virustilanne vaikutti myös skeneen, ja niinpä vain katkesi ’94 alkanut Assembly-putkeni (jos tätä katkoa voi laskea), kun kesäassyt peruttiin. Vammala Party saatiin sentään pidettyä melko normaalisti. Synkkyyden keskellä valopilkkuna loisti läpi mennyt hakemus, jonka myötä demoskene lisättiin kansallisen elävän perinnön luetteloon, mahdollisesti jopa ensimmäisenä digitaalisena kulttuurina maailmassa. 2021 alussa saanemme kuulla, miten kävi saksalaisten hakemukselle.

Tietotekniikkaa

Isot konepäivitykset tuli tehtyä pitkälti viime vuonna, mutta toki viime aikoinakin on tullut räpellettyä tietotekniikan äärellä varsin ahkerasti (jo etätöidenkin takia). Edelleen fokus on ollut siellä tuoreemman tekniikan puolella tyyliin peesee-Raspi-verkkolaitteet, joten retrokokoelma on saanut enimmäkseen odottaa aikaa parempaa. Linux-osaamista on karttunut vapaaehtoisesti ja hieman pakollakin, että videoneuvottelut ym. on saanut pyörimään.

Alla on nyt varsin pelikelpoinen peesee, mutta itse pelaamiselle ei ole oikein riittänyt aikaa, eikä jonossa ole ollut järin montaa kuumottavaa teostakaan, joita olisi ollut pakko päästä hakkaamaan. Proton on ollut jälleen ystävä, ja sen avustuksella tuli tahkottua läpi ainakin näyttävä Gris ja viihdyttävä Creaks. Inside taisi tulla pelattua taas ainakin kolme kertaa läpi pikku palasissa, mutta mihinkään speedrun-yritykseen en ole ainakaan vielä uskaltautunut. Steam-kirjastossani olisi varmaan toistasataa täysin kokeilematonta tekelettä – koskahan noidenkin äärelle ehtinee?

Shakkia

Korona puraisi shakkikerhoja pahasti, ja suuri(n) osa tämän vuoden kilpailuista on jouduttu peruuttamaan. Parit nappulaturnaukset sentään ehdittiin koluta ja puistoshakin kovatasoinen HM. Linjoilla on toki voinut pelata yllin kyllin, mutta hyppy takaisin oikealle laudalle ei ole aina ihan helppo, kun tilanteita hahmottaa oikeilla pelivälineillä heikommin. Nappuloita ja lautoja tuli kokoelmaan vain muutamat uudet, mutta sentään onnistuin parin vuoden etsimisen jälkeen lopulta hankkimaan aidot Tannit, joita on tehty Vammalassa.

Uskaltauduin helmikuussa kokeilemaan pikashakkia Lichessissä, vaikka olinkin jo ennalta tuominnut sen itselleni liian kiivastahtiseksi ja mahdottomaksi. Ennustukset näyttivät käyvän toteen, kun alkuunsa tuli takkiin melkein järjestään. Kaikkeen tottuu ja nyt joulukuun lopussa vertailulukuni on noussut pohjamudista jo melkein 500 pistettä, eikä 3+2 tunnu enää ollenkaan niin hätäiseltä huiskimiselta kuin aluksi. Noin kaikkiaan alan huomata omassa pelaamisessani näin kolmen vuoden jälkeen jotain tiettyä rutinoitumista ja kokemusta, kun kuvioita alkaa tunnistaa helpommin ja törkeiden munausten määrä on hiljalleen pienentynyt.

Leffoja ja sarjoja

Taloyhtiö laittoi kerhohuoneen oven säppiin – tämäkin taas koronan vuoksi – joten vuoden molemmat länkkärimaratonit oli harmillisesti pakko perua. Toivottavasti edes ensi keväänä tärppää, koska pitäisi jo päästä näkemään sinne jyvitetty The Ballad of Buster Scruggs. Noin muuten olen jatkanut länkkäreiden kuluttamista, mutta selvästi enemmän vanhoja laatufilkkoja uudelleen katsellen kuin aiemmin näkemätöntä bulkkia haalien. Eräänä aluevaltauksena oli sentään ehta 3D-länkkäri, vaikka kokemusta ei voi kovin nautinnolliseksi luonnehtiakaan.

Yhtenä kartoitusprojektina katsoin läpi puukkojunkkarileffat, missä ei juuri aikaa vierähtänyt “genren” niukkuuden takia. Täysmittaisille filkoille on usein vaikea löytää aikaa, kun taas sarjoja on helpompi koluta, joten ysärin vanha suosikki Kyllä Jeeves hoitaa sai uuden kierroksen. Muuten työn alla on ollut ainakin Star Trekiä, useampi kausi Merilinjaa sekä aivan hiljattain korealaista zombidraamaa Kingdom.

Muita puuhia

JavaScript on kökköyksistään huolimatta nykyään tärkeä työkalu, joten opettelin sitä sen verran kuin oli tarpeen omien interaktiivisten kikkareiden saamiseksi verkkoon. Tyypitettyjen perinteisten kielten suunnasta tulevalta “kaikki käy” -mentaliteetti ei irtoa noin vain, mutta on sitä kaikenlaista muutakin tullut neppailtua, joten miksipä ei tuota. Mihinkään loputtomaan frameworkkien suohon en ajatellut sukeltaa, vaan pitäydyn näillä näkymin tutunoloisessa P5.js:ssä, jota voi kirjoittaa vaikkapa Processingin editorilla suoraan. Pistin linjoille pari ensimmäistä kokeilua: Frozen ja Jsrokit.

Vuoteen on väsähtänyttä huumoriaan suonut IL-kroppailu, jossa yhdistetään jonkin iltiksen artikkelin otsikko ja seuraavan artikkelin kuva koomiseksi hybridiksi. Näitä on tullut väkästeltyä jo useita satoja ja joukossa on jokunen helmikin. Olen postaillut silloin tällöin best of -kokkareita Feseen, joten alla olevassa kollaasissa on vain yksi näytteenä.

Iskän vuosikatsaus ei voi tietenkään olla kattava, jos muksuista ei mainita mitään. Ihan hyvin on onneksi mennyt: poitsu selvisi kotikoulusta ilman sanottavia ongelmia (itsestäni en ole niin varma) ja tyllerö on kasvanut jo niin, että vuoden päästä odottaa eskari. Rakkaiden sisarusten rähinä tuntuu loputtomalta, mutta koitan lohduttaa hermojani, että tämä on vain ohimenevä vaihe… Koronaa ei ole perheeseen toistaiseksi tärpännyt, ja tämän vuoden 2020 ikimuistoisen ilmiön sivuutammekin varsin mieluusti.

Add comment December 31st, 2020

Vanha koira ja P5.js

En ole koskaan erityisemmin kiinnostunut JavaScriptistä — perinteisten tyypitettyjen kielten suunnasta tulevalle “kaikki käy” -asenne ei tule luonnostaan, minkä lisäksi kaikenlaisten kirjastojen ja alustojen kirjo on jokseenkin masentava. Samaan aikaan on toki pakko myöntää, että JS on nykypäivää ja kehittynyt hurjasti takavuosien turhista mouseover-ajoista. Aina välillä olisi myös ihan kätevää saada oma Processing-kikkare webaselaimen kautta muiden nähtäväksi, kun Java-applettien aika on auttamattomasti ohi.

Olen käyttänyt sillanrakennukseen aiemmin Processing.js:ää, joka kuitenkin lakkasi jossain vaiheessa päivittymästä eikä ollut muutenkaan koskaan täysin ongelmaton. Pienet kikkarat siirtyivät kyllä, mutta vähänkin mutkikkaamman pätkän kanssa tuli nopeasti seinä vastaan. Tuoreempaa tulokulmaa edustaa välimallin ratkaisu P5.js, joka on lähinnä kirjasto Processingin käteviä funktioita JS:lle. P5.js on sikäli virallinen ja tunnustettu, että sitä voi kirjoitella suoraan Processingin editorilla, kunhan vaan asentaa tarvitun laajennuksen. Sketsiä ajettaessa lopputulos menee suoraan tabiksi oletusselaimeen, eikä ympärille tarvitse onneksi räpeltää itse mitään HTML/CSS-purkkaa.

Ensimmäisenä yritelmänä oli joulun aikaan sopiva piirto-ohjelma, joka peilaa hiirellä piirrettävän viivan kahteentoista kertaan symmetrisesti. Härpättimellä saa helposti aikaan etenkin lumihiutaleita (sekä pitsipöytäliinoja):

Lumi on jo peittänyt canvasin webasessa.

Perustutoriaaleja googlaamalla pääsi nopeasti alkuun, eikä kokeiluun paljoa aikaa seonnut. Melko varmasti joitakin asioita tuli tehtyä tarpeettoman kierosti, mutta pluralismi näyttää olevan JS:lle luonteenomaista. Saman asian voi tehdä monella eri tavalla ja hyvin kyseenalainenkin “ratkaisu” saattaa vahingossa toimia. Mieluummin tietysti opettelisin alusta saakka niitä hyviä tapoja. Muuttujien näkyvyysalue ja esittely tuntuu edelleen hiukan randomilta: perinteinen var-tapa on oikeastaan ihan suoranaisen huono, mutta nykyään on sentään tarjolla järkevämpi let.

Sormiharjoituksena tiivistin vielä koodin mahdollisimman lyhyeksi, missä puuhassa tuli opittua sitä sun tätä uutta jekkua. Luettavuus on edelleen yllättävän hyvä, joten en varmaankaan osannut vielä käyttää kaikkia mahdollisia optimointikonsteja: frozen3.js. Pätkää voisi toki vielä merkittävästi lyhentää toiminnallisuutta heikentämällä — vaikkapa kumituksen poistolla ja värejä rumentamalla — mutta moinen kikkailu ei ole järin kiinnostavaa. Tulipa nyt tätäkin kokeiltua ja tulevaisuudessa ehkä lisääkin.

Mikään pakkohan ei ole piirtää hiutaleita.

Add comment December 16th, 2020

Poliisi pamputtaa taas

Värkkäilin 2016 retrograafikoille Pixel Polizein, joka on tarkoitettu pikemminkin toisaalla piirrettyjen kuvien tarkastamiseen kuin yleiseen formaatista toiseen konvertointiin ja ditherointiin (vaikka sillä formaattikonversioita kohtuudella pystyykin tekemään). Siinä missä tekstigraffaeditorilleni löytyi nopeasti käyttäjäkunta, jäi Poliisi hieman marginaaliin, kenties siksi, että samat asiat sai tehtyä muillakin ohjelmilla.

Alkuinnostuksen voimin jaksoin väsätä tukea aika monelle plattikselle ja moodille, mutta lopulta se polttoaine oli käytetty ja 2017 tein enää pieniä korjauksia. Sen jälkeen tuli yli kolmen vuoden tauko, ja kuvittelin jo koko projektin tulleen tiensä päähän – näinhän on tunnetusti käynyt monille muillekin innolla aloitetuille graffatyökaluille. Läsähdyksestä huolimatta prokkis toimi kuitenkin hyvänä olio-ohjelmointi- ja ohjelmistosuunnitteluharjoituksena: kokonaisrakenne on kohtuullisen selkeä, uusia koneita on helppo lisätä eikä missään ole kohtuuttoman mutkikkaita söheröitä, joihin en uskaltaisi enää itsekään koskea. Samaa ei voi valitettavasti sanoa PETSCII-työkalusta, joka mutatoitui pikaisen yhden illan kokeilun ympärille.

Innostuin päivittämään petskariedikkaa jälleen tänä syksynä sieltä täältä, etenkin kun Processing 2:ssa jumittamisesta alkoi tulla todellisia ongelmia. Lopetin siis vetkuttelun ja kohtuullisen pienin muutoksin sain siirryttyä Processing 3:een. Sitä myötä muistin myös Poliisin ja hyvin pikaisesti modernisoin senkin. Kopypastesin samalla mukaan uudistettua UI-koodia toisesta projektista, mitä myötä käyttöliittymä hieman koheni. Jo pelkästä P3:een siirtymisestä koitui jotain etuja korjattujen tiedostopolkujen ja uudemmilla JRE:n versioilla toimimisen muodossa.

Samaltahan se näyttää.

P3:ssa ei voi enää pompotella piirtäessä grafiikan pehmennystä pois smooth/noSmooth-funktioilla, joten oli pakko valita pikselien erottuvuuden vuoksi pehmentämätön graffa. Asiasta ei onneksi sanottavaa harmia koitunut muuten kuin hieman rösöisempien painonappien muodossa. Eri zuumitasoja kokeillessa huomasin käyttöliittymätekstien menevän joskus kuvan päälle, joten tulipa korjattua sekin pitkäikäinen bugi samalla. Katsotaan nyt, mitä teen seuraavaksi: retrokoneita ja niiden graffamoodeja olisi loputtomasti, mutta energiaa taas ei ole loputtomasti, joten jollei jostain paljastu suurta lojaalia käyttäjäkuntaa, niin taidan tyytyä lähinnä korjailemaan pikku bugeja.

Add comment December 1st, 2020

Processing 2 -> Processing 3

Pitkän jähnäilyn jälkeen päätin lopulta yrittää PETSCII-editorini päivittämistä Processing 2:sta Processing 3:lla toimivaksi. Yhtäältä P2 alkaa olla jo ammoinen versio, eikä sillä tehtyjen softien toimivuus nykykoneilla ole enää taattua, ja toisaalta sorsaversiosta kiinnostuneille on melkoista riesaa roikottaa koneella vanhentunutta ohjelmaa vain tämän takia. En mitenkään erityisemmin itse rakasta P3:a, sillä se ei ole joka suhteessa parannus aiempiin, mutta minkäs teet.

Processing 3 – haaskataanpa tilaa oikein kunnolla näihin tabien väleihin 🙁

Parin illan pakerruksen jälkeen uskoisin saaneeni jo suunnilleen kaiken toimimaan tyydyttävästi. Osa korjauksista oli triviaaleja, kuten ikkunan koon asetuksen vaihtaminen settings()-funktioon ja args:n kohdalla lisätarkistus, ettei taulukko ole null – P2:ssa taulukko on tyhjä, jos komentorivillä ei ole annettu parametreja. Ikkunan otsikko vaihdetaan nykyään surface.setTitle()-funktiolla aiemman framen sijasta.

Mutkikkaat asiat ovat kuitenkin mutkikkaita, ja etenkin esikatseluikkunan kanssa taistellessa oli usko loppua. Vanha (sekin huono) tapa avata toinen ikkuna ei enää toiminut alkuunkaan, mutta toisaalta esimerkeistä löytyy nykyään ihan semivirallinenkin keino kahden ikkunan käyttöön. Ongelmat alkavat siinä vaiheessa, kun toinen ikkuna pitäisi pystyä sulkemaan ilman, että koko ohjelman suoritus loppuu. Päädyin siihen, että toista ikkunaa ei kannata edes yrittää sulkea, vaan se on parempi piilottaa, kun sen halutaan olevan “kiinni”. Lopulta esikatseluikkunan koodista tuli selkeämpi ja siistimpi kuin vanhasta, joten ainakin tämä muutos oli parannus.

Toinen suuri kompastuskivi oli vasemman ja oikean shift-näppäimen toisistaan erottelu, joka oli jo ennenkin hankalaa ja vaati keyPressed(KeyEvent ke)-purkkaamista. Nyt vanha konsti ei toiminut enää ollenkaan, mutta onneksi keyEvent-oliosta saa edelleen kaivettua AWT:n eventin, jonka alta löytyy tuttu KeyEvent.KEY_LOCATION_LEFT. Tämäkin tapa on jo menossa kiellettyjen listalle, mutta ainakin toistaiseksi se vielä toimii. Olisi tietysti yksinkertaisinta, jos Processing vain suoraan tukisi shiftien erottelua, mutta se lienee turha toivo.

Oikeasti merkittävä parannus olisi, jos saisin höskän toimimaan 2D-kiihdytettynä, mutta tällä hetkellä piirtokoodi on niin tiukasti sidottu pikselien suoraan sorkkimiseen, että se ei ole kohtuudella mahdollista. Vaihdoin kokeeksi grafiikkaengineksi P2D:n, mutta se oli lähinnä ruma ja läginen (tämä on toki kiinni lähinnä omasta piirtokoodistani), joten olkoon toistaiseksi. Linuxilla ja Windowsilla kiihdyttämätönkin ikkuna on aivan tarpeeksi nopea, mutta Mäkillä meno on hieman hyhmäistä nykyisillä Javan versioilla, joissa ei ole enää Applen optimointeja mukana.

Add comment November 17th, 2020

Processing 3 and right/left shift

In Processing 2 it was relatively easy to tell the difference between the right and left shift by overriding keyPressed(java.awt.event.KeyEvent ke), but in Processing 3 event handling has changed and the function doesn’t even get called any more. I really really wanted to use the two keys differently and came up with this blurb for the keyPressed() handler:

if(keyCode==SHIFT)
{
  java.awt.event.KeyEvent ke;
  ke=(java.awt.event.KeyEvent)keyEvent.getNative();

  if(ke.getKeyLocation()==KeyEvent.KEY_LOCATION_LEFT)
  {
    // It's the left shift
  }
}

Note that this will only work with the default renderer, as the others don’t use AWT. The “solution” is also deprecated, so it might stop working any time and then we need another hack to work around the issue. Things would be so much easier if Processing simply provided a different keyCode for the two keys, but I wouldn’t hold my breath waiting for that.

Add comment November 16th, 2020

Revisiting the compositor script

After some recent updates it seems my old compositor toggle script may not work on all setups – for example two of mine. Marco doesn’t react to the compositor setting change or even the graphical Window Settings preference. Need to do things a bit more complicated way then:

#!/bin/sh

case $1 in
on)
	gsettings set org.mate.Marco.general compositing-manager true
	gsettings set com.linuxmint.desktop mate-window-manager marco-composite
	marco --replace &
	nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=On }"
	;;
off)
	gsettings set org.mate.Marco.general compositing-manager false
	gsettings set com.linuxmint.desktop mate-window-manager marco
	marco --replace &
	nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=Off }"
	;;
esac

Again, call it something like compositor.sh, copy it to /usr/local/bin and chmod a+x compositor.sh as root. The parameters on and off will toggle the compositing.

As a sidenote, the compositor started getting stuck in several situations on my main machine: turning the screen off and on would make the GUI get stuck, and likewise for display sleep. Updating to a newer driver version (455.23.04) seems to have remedied the situation.

Add comment October 29th, 2020

Previous Posts


Kommenttien virta

Aiheet