Useful snippets

    Task warrior (CLI todo app)

    Sun 22. October 2023 | 2023-10-22

    Installer på Ubuntu (WSL)

    sudo apt-get install taskwarrior
    

    https://taskwarrior.org/download/

    Oppstart

    task version
    

    yes for å lage config file (.taskrc)

    Bruk

    📍 Legg til task

    task add bla bla bla bla
    

    📌 - med priority

    task priority:H add bla bla bla bla
    

    📅📃 List opp alle tasks

    task next
    

    next kan sløyfes

    ✔ Gjennomfør task nr X

    task X done
    

    ❌ 🗑 Slett

    task X delete
    

    https://taskwarrior.org/docs/30second/

    💬🗨 Se og rediger alle detalljer

    task X edit
    

    🗃 Opprett i prosjekter

    task add project:Kitchen Select floor tiles
    task add project:Kitchen Measure counter-top
    task add project:Kitchen Design placement of electrical outlets
    task add project:Kitchen Locate ideal placement for extractor duct
    task add project:Kitchen Select and order counter-top material
    task add project:Kitchen Talk to the Electrician about when the work can start
    

    https://taskwarrior.org/docs/best-practices/

    Interessant

    • visual interactive taskwarrior - https://gothenburgbitfactory.org/vit/

    table of contents with IntersectionOvserver (not perfect)

    Sun 22. October 2023 | 2023-10-22

    useScrollSpy.ts

    import { useEffect, useRef, useState } from "react";
    
    export function useScrollSpy(ids: string[]) {
      const [activeId, setActiveId] = useState();
      const observer = useRef();
    
      useEffect(() => {
        const elements = ids.map((id) => document.getElementById(id));
    
        observer.current?.disconnect();
    
        elements.forEach((heading) => {
          if (heading) {
            observer.current?.observe(heading);
          }
        });
    
        observer.current = new IntersectionObserver(
          (entries) => {
            console.group("executing intersectionobserver callback");
    
            entries.forEach((entry) => {
              if (entry?.isIntersecting) {
                console.log(entry.target.id, "is intersecting");
    
                setActiveId(entry.target.id);
              }
            });
            console.groupEnd();
          },
          { rootMargin: "0% 0% -80% 0%", threshold: 0.1 }
        );
    
        return () => observer.current?.disconnect();
      }, [ids]);
      return activeId;
    }

    TableOfContents.tsx

    import React, { useEffect, useState } from "react";
    import classes from "./TableOfContents.module.css";
    import { useScrollSpy } from "@/hooks/useScrollSpy";
    
    interface TableOfContentsProps {
      isLoading: boolean;
    }
    
    export type heading = { text: string | null; id: string };
    
    export const TableOfContents = ({ isLoading }: TableOfContentsProps) => {
      const [headings, setHeadings] = useState<heading[]>([]);
      const activeId = useScrollSpy(headings.map(({ id }) => id));
      useEffect(() => {
        if (!isLoading) {
          const elements: heading[] = Array.from(
            document.querySelectorAll("h3")
          ).map((element) => ({ text: element.textContent, id: element.id }));
          setHeadings(elements);
        }
      }, [isLoading]);
    
      return (
        <div
          className={`${classes.root} d-none d-lg-block sticky-with-gutter list-group small`}
        >
          <nav>
            {headings.map((heading) => {
              const maybeActive = activeId === heading.id ? "active" : "";
              return (
                <li key={heading.id}>
                  <a
                    className={`list-group-item list-group-item-action ${maybeActive}`}
                    href={`#${heading.id}`}
                  >
                    {heading.text}
                  </a>
                </li>
              );
            })}
          </nav>
        </div>
      );
    };

    PHP White screen

    Sun 22. October 2023 | 2023-10-22

    echo "<pre>";
    ini_set('display_errors', 'On');
    ini_set('html_errors', 0);

    Skal kanskje være ini_set('html_errors', 'On');?

    fordeler/ulemper med Windows/MacOS

    Sun 22. October 2023 | 2023-10-22

    mislikte/misliker med mac:

    1. man må ha app store account og derav også registrere bankkort for å oppdatere OS.
    2. finder sorterer filtyper helt alfabetisk i stedet for å putte mapper over alt annet
    3. man må aktivt rydde opp filene hele tiden for å få det på stell, og hvis man vil ha auto sortering på noe annet enn filnavn må man takke seg til å gruppere filene i forskjellige rader
    4. kryss og minifiser og det er på feil side, dessuten er knappene veldig små
    5. skrivebordet plasserer alltid programmer på feil side (og man må flytte over programmene manuelt og stille inn grid slik at det går. Det resettes når man velger sortering og nye programmer dukker opp til høyre)
    6. savner muligheten til å raskt forvandle vindu til å oppta halvparten av skjermen
    7. fullscreen-uten-å-ta-bort-dock er upraktisk
    8. På Mac XAMPP versjonen må man aktivt mounte xampp/lampp-mappa. Slitsomt
    9. launchpad kan noen ganger ta lang tid på å laste inn noen programmer. i hvert fall etter seks år.
    10. Teit at menyelementer ofte finnes på to steder: Både i menylinje og i selve programvinduet. Er for det meste windows programvarer dette gjelder.
    11. Hvis derimot menyelement kun finnes på det ene stedet (i VSCode så vises den bare i overmenyen, i XAMPP vises nesten ingenting der) så ender man opp med mye ubrukt luft som bare opptar skjermplass
    12. Man kan ikke trykke fn + esc for å slå på og av funksjonstaster
    13. når man kobler til et kamera så går macen bare ut i fra at du vil bruke den fotogalleri-appen. Det er så irriterende! Hvis mankopierer camera raw file derfra så blir de til jpg når man limer dem inn!

    (sort of) fikset

    1. det er mulig å komme rundt dette
    2. finnes innstilling for å ikke gjøre det slik
    3. det har kommet innstilling for auto stortering etter filtyper
    4. man har tastatursnarveier som man bruker oftest
    5. den har introdusert GUI knapper for å få vinduet til å oppta halvparten av plassen, men dette er ikke godt nok. knappene finnes også i window menyalternativet.

    For å få vinduet til venstre, må man først hover'e over den knøttlille grønne knappen, vente et kvart sekund og så klikke.

    Man kan forresten legge til egen app shortcut, så lenge man vet hva man skal gjøre (må følge en tutorial)

    Men det er jo nesten ingen tastastursnarveier igjen!

    https://www.paulsahner.com/posts/window-movement

    Mislikte/misliker med windows:

    1. Den hadde forferdelige problemer mellom endnote og word og sitering (se diarium og komprimerte tanker bok)
    2. Noe forbanna herk å få ekstern harddisk til å faktisk kopiere alt jeg ba den om å kopiere
    3. Ting brekker. GUI er brukken. Ting funker ikke. Lyd, PC-frys, PC bestemmer seg bare for å slukne helt uten videre. Task-bar sin ekstern harddisk symbol fungerer ikke alltid
    4. Windows' Adobe Bridge ser ut som en vits. Meny og greier er for store.
    5. Word har ikke like behagelig søkefelt, og man kan ikke åpne det med ctrl+F
    6. Elendige tastatursnarveier
    7. Litt irriterende uten egen PDF app. Når du åpner et dokument så åpner den automatisk MS Edge for å vise PDF-en. Og selv om du ikke har tenkt å bruke nettleseren til noe nettspesifikt, kommer den med meldinger som at "du må sikre nettleseren" eller hva det nå var det sto. Og det er ikke relevant hvis du bare skal se på en PDF! Distraherende!
    8. I filutforsker, hvis man prøver å navigere opp fra "Pål Stakvik"-mappa, så kommer man ikke til Users, men til desktop. Og når man klikker i addressefeltet, så står det bare "Pål Stakvik" - som om det er øverste mappa. Man må navigere seg inn en mappe, og først da får man den fulle og hele addresselinjen: "C:\Users\Pål Stakvik\Postman".
      • særlig hvis du jobber med typografi. Windows' "tastatursnarveier" for ekte anførselstegn er en vits og blir fullstendig grust av de til mac. Gjelder også:
    • ellipse
    • binde- og tankestrek Ellers gir tastatursnarveiene til mac generelt mer mening (f.eks. så er "/", "|" og "" alle samlet under samme knapp).
    1. McAfee kommer med sine dialog-bokser og avbryter deg i arbeidet ditt

    fikset

    1. Fikk funnet ut hva som var feil, etter en hel dags research og prat med utviklerne/support.
    2. Fikk fikset det til slutt
    3. man kan lage et autohotkey skript for å få til samme snarveier som mac

    Ohmybash

    Sun 22. October 2023 | 2023-10-22

    Hvordan starte med ohmybash, velge theme og laste ned nødvendig font icons

    Installasjon

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
    

    Du får med masse aliases med dette. List alle med alias

    Velge theme

    nano ~/.bashrc
    
    OSH_THEME="agnoster"
    

    Save & exit: ctrl + x, y, [Enter]

    Reload:

    . ~/.bashrc
    

    Hvis du har mellomrom i path to oh-my-bash insallation, slik:

    # Path to your oh-my-bash installation.
    export OSH=/c/Users/Pål Stakvik/.oh-my-bash
    

    Må du enkapsulere path-en i quotes, ellers får du error

    skaffe nødvendige font icons

    evt. se på agnoster-zsh-theme

    last ned Hack-fonten

    1. Gå til https://sourcefoundry.org/hack/ og last ned font. Windows executable funker for WSL og VS Code
    2. Kjør executable i nedlastninger
    3. Godta restart

    Sette WSL til å bruke riktig font

    1. Åpne WSL
    2. høyreklikk toppmeny, velg 'properties'
    3. velg "Hack" fonten

    ubuntu-omb

    Sette VS Code til å bruke riktig font

    1. ctrl + shift + p
    2. settings.json
    3. lim inn "terminal.integrated.fontFamily": "Hack", https://stackoverflow.com/questions/37895501/display-issue-with-oh-my-zsh-agnoster-theme#answer-38475948

    vscode-omb

    Erstatte user @ hostname

    ...Med kun hostname:

    prompt_context() {
      if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
        prompt_segment black default "$USER"
      fi
    }

    Eller hva det skal være:

    prompt_segment black default "P"

    image (9)

    prompt_segment black default "%(!.%{%F{yellow}%}.)$USER" skal visstnok også funke, men jeg får bare slik tekst da:

    image (8)

    Git bash merknader

    Får du permission denied ved git add .?

    • Kjør VS Code som administrator

    Får du

    hint: Waiting for your editor to close the file... 'C:\Users\Pål' is not recognized as an internal or external command,
    operable program or batch file.
    error: There was a problem with the editor '"C:\Users\Pål Stakvik\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd" --wait'.
    Please supply the message using either -m or -F option.
    

    ved git commit (-v)

    • Prøv å kjør git config --global core.editor "code --wait". Les mer https://stackoverflow.com/questions/52195877/how-can-i-fix-git-commit-error-waiting-for-your-editor-to-close-the-file-wi

    Oh my bash adding missing code completions

    Sun 22. October 2023 | 2023-10-22

    source /usr/share/bash-completion/completions/git
    __git_complete gco _git_checkout
    __git_complete gb _git_branch
    __git_complete gbs _git_bisect
    __git_complete ga _git_add
    __git_complete gcmsg _git_commit
    __git_complete gcs _git_commit
    __git_complete gd _git_diff
    __git_complete gl _git_pull
    __git_complete gp _git_push
    __git_complete gm _git_merge

    Syntax highlighting i Nano commit diff

    Sun 22. October 2023 | 2023-10-22

    nano ~/.nanorc

    sett inn

    https://gist.github.com/keithamus/736220/5e069767b22841610ee18fd2f92bd6026f5eb41d

    syntax "gitcommit" "COMMIT_EDITMSG$"
    color white "#.*"
    color green "#.(modified|added|deleted|unmerged|copy-edit|rename).*"
    color yellow start="# Changes.*" end="# Changed.*"
    color brightgreen "^\+.*"
    color brightred "^-.*"
    color brightyellow "(diff|index|---|\+\+\+).*"
    color brightmagenta "@@.*"
    color white "# Changes .*"
    color white "# Changed .*"
    color white "#.*\(use .*"
    color white "#$"
    

    =

    farger i git commit vinduet!