keskiviikko 27. heinäkuuta 2022

Stylus

Stylus on Chromelle ladattava lisäosa, jolla voi räätälöidä nettisivujen ulkoasua. Jos esimerkiksi Iltalehden värimaailma ei miellytä silmää, niin Stylusilla voit vaihtaa sivuston värimaailman toiseksi!

Itseäni on häirinnyt esimerkiksi Trellon oletusnäkymä kapealla ruudulla:

Oletusnäkymässä usein käyttämäni suosikit-lista jää piiloon Lisää-napin taakse ja työkalurivi jakautuu kahdelle riville vieden turhan paljon tilaa pystysuunnassa. Stylusin avulla saan piilotettua harvemmin tarvittavat toiminnot, jolloin suosikit tulevat suoraan valikkoriville ja työkalut mahtuvat yhdelle riville:

Tämän muutoksen mahdollistaa CSS-tyyli, jonka Stylus asentaa sivulle:

@-moz-document domain("trello.com") {
    /* Piilota työtilan valitsin yläpalkista */
    #trello-root #surface [data-desktop-id="header"] button[data-testid="workspace-switcher"] {
        display: none;
    }
    
    /* Piilota äsken käytetyt yläpalkista */
    #trello-root #surface [data-desktop-id="header"] button[data-testid="recently-viewed-boards-menu"] {
        display: none;
    }
    
    /* Piilota mallit yläpalkista */
    #trello-root #surface [data-desktop-id="header"] button[data-testid="templates-menu"] {
        display: none;
    }
    
    /* Näytä suosikit yläpalkissa myös kapealla ruudulla */
    @media screen and (max-width: 1160px) {
        .uBxJ2o6k5IeFft button:nth-child(3) { 
            display: flex;
        }
    }
    
    /* Piilota lisää-nappi yläpalkista */
    .uB_pTObtvQIxyu {
        display: none;
    }
}

Päivitys 22.7.2023: Päivitetty CSS-tyylit Trellon uusinta versiota varten.

Päivitys 18.2.2023: Tämä sivu kertoi alun perin Stylish-nimisestä laajennuksesta. Kun Stylish alkoi näyttää sivuistoilla mainoksia, niin siirryin käyttämään vastaavaa Stylus-laajennosta.

LibreOfficen MOD-funktio ei toimi!

Käytän LibreOfficen taulukkolaskentaa mm. algoritmien suunnitteluun. Taulukkolaskenta on hyvä työkalu tähän tarkoitukseen, koska algoritmia voi testata erilaisilla syötteillä jo ennen kuin algoritmia tarvitsee toteuttaa millään oikealla ohjelmointikielellä. Erästä algoritmia toteuttaessani huomasin kuitenkin, että LibreOfficen MOD-funktio toimii eri tavalla kuin ohjelmointikielissä yleensä.

MOD-funktiolla lasketaan kahden kokonaisluvun jakojäännös: jos esimerkiksi 9 jaetaan 5:llä, niin 5 mahtuu 9:ään yhden kerran ja jäljelle jää 4. Jos jakajan ja jaettavan etumerkit kuitenkin poikkeavat toisistaan, niin LibreOffice MOD-funktio antaa yllättävän tuloksen. Esimerkiksi -9 jaettuna 12 antaa Libreoffice 7.3.4.2:ssa jakojäännökseksi 3:
Vastaavasti C-kielessä (GCC 12.1.0) sama laskukaava antaa tulokseksi -9:
#include <stdio.h>

int main(void) {
        printf("vastaus=%d\n", -9 % 12);
        return 0;
}
> gcc x.c > ./a.out vastaus=-9

Kyseessä ei ole bugi, vaan jakojäännös voidaan laskea usealla eri algoritmilla ja ohjelmointikielet poikkeavat toisistaan tässä suhteessa: When exactly one of a or n is negative, the naïve definition breaks down, and programming languages differ in how these values are defined. LibreOffice käyttää jakojäännöksen laskemiseen Knuthin algoritmia kun ohjelmointikielet yleensä käyttävät kokonaislukujen jakojäännöksen laskemiseen ns. "truncated division" algoritmia.

LibreOfficessa jakojäännös "truncated division" algoritmilla saadaan kaavalla MOD(ABS(A); ABS(B)) * SIGN(A), missä A on jaettava ja B on jakaja:
Ero on hyvä pitää mielessä, jos käyttää LibreOfficea algoritmien kehittämiseen!