Kebmans blogg

Hvordan få farger på terminalen i OS X Mavericks

Posted in Data, Programmering, Programvare by kebman on 25/09/2015

Om du bruker terminalen en del på Mac, har du kanskje tenkt at den ser noe kjedelig ut. Her er en kort leksjon i hvordan gi den litt penere og mer intuitive farger.

Sjekk ut Solarized: Precision colors for machines and people på GitHub.

Merk: Det står en del om SIMBL på nettisden, men det trenger du ikke! Det er kun for eldre systemer slik som Snow Leopard.

Last ned pakken som ZIP (Download ZIP på høyre side). Pakk ut ZIP-filen, og sjekk ut mappeinnholdet. Let til du funner noen filer som har fil-etternavn .terminal. Dobbeltklikk på en terminal-fil for å teste, og nyt åsynet av en solarisert terminalen.

I terminalen, under Innstillinger > Avansert det kan være lurt å sette terminaltypen til å være Ansi, siden det er den profilen paletten er optimalisert for, men xterm-256color kan også fungere.

Dette vil gjøre terminalen din mørkeblå med grå tekst. Ganske kjedelig, men fortvil ikke! Du er bare halvveis. For å virkelig gjøre susen, trenger du litt sammenheng.

Gå inn terminalen og skriv:

nano ~/.bash_profile

Deretter skriver (kopierer) du inn disse linjene:

export CLICOLOR=1
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD

Trykk så ctrl+x og deretter y for å lagre før du avslutter. For å laste den nye paletten, skriver dette i terminalen:

. ~/.bash_profile

Prøv deretter ut noen terminalkommandoer, slik som for eksempel ls.

export CLICOLOR=1 aktiverer farger i terminalen, og export LSCOLORS ser etter spesifikke kodesnutter i ls-programmet som den kan fargelegge. For mer informasjon om dette, les denne artikkelen: ls, colors, and Terminal.app .

Hvordan kryptere passord i PostgreSQL

Posted in Data, Programmering, Teknologi by kebman on 26/08/2015

PostgreSQL kan med et enkelt håndgrep gjøre passordkryptering for deg. Alt du trenger å gjøre er å legge til en extension i psql, sånn her:

CREATE EXTENSION pgcrypto;

Så er det bare å lage en database for å teste litt:

CREATE DATABASE test;

Og en tabell for å lagre noen data med passord:

CREATE TABLE testusers (
	id SERIAL PRIMARY KEY,
	email TEXT NOT NULL,
	password TEXT NOT NULL,
);

SERIAL er her ekvivalenten til AUTO_INCREMENT i MySQL. Strengt tatt kunne vi sikkert brukt email-feltet som PRIMARY KEY, sånn som her:

CREATE TABLE testusers (
	email TEXT PRIMARY KEY,
	password TEXT NOT NULL,
);

…men jeg synes det er kjekt å kunne kalle opp en god, gammeldags ID, spesielt om det senere kan bli snakk om å utføre SQL joins. Istedenfor kan man gjøre sånn her for å sikre at email-feltet forblir unikt:

ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);

Men så, endelig, kan vi teste med å sette inn noe ordentlig data! For å lage skikkelig gode passord, er det ikke nok med bare en god krypteringsalgoritme. Man trenger også salt. Dette for å hindre såkalte rainbow angrep. Her er årsaken til at vi la til den extensionen i sta, for med den kan vi legge til skikkelig godt salt, sånn her:

INSERT INTO testusers(email, password) VALUES (
	'test@test.com', crypt('det_hemmelige_passordet', gen_salt('md5'))
);

Som du ser så hashes passordet med det samme det legges inn i databasen med en funksjon som heter crypt(). Denne tar to argumenter: Passordet og funksjonen gen_salt() som lager salt. For å sjekke at passordet stemmer, kan man bruke denne spørringen:

SELECT email FROM testusers WHERE id=1 AND
password=crypt('det_hemmelige_passordet', password);

Så, når dette er gjort, burde det være en smal sak å få det til å fungere med et passende serverskriptingspråk. Best av alt, skulle noen uvedkomne få tilgang til databasen, vil de uansett ikke kunne finne ut hva passordene er – ikke lett, i alle fall.

Hvordan få tilgang til delte Windows-filer fra Linux

Posted in Data, Fildeling, Internett, Networking by kebman on 30/07/2015

Kjører du en versjon av Linux er det som regel en smal sak å få tilgang til filer delt fra Windows-maskiner på hjemmenettverket. Her er hvordan!

Kjøpte nylig en Raspberry Pi 2 Model B, og ønsket tilgang til filene jeg har delt fra Windows PCen min, dermed kommer guiden til å ta utgangspunkt i det. Men har du et annet Linux-system, så frykt ikke! Pi-en bruker en versjon av Debian Linux kallt Raspian, dermed vil denne guiden funke for de fleste andre UX-distribusjoner også.

Forhåndskunnskaper:

  1. Du må være komfortabel med command line prompts og bruk av terminalverktøy.
  2. Du må allerede ha fungerende internett-tilgang på UX-enheten din.
  3. Du må allerede ha filer som er delt på hjemmenettverket ditt fra Windows-PCen din.
  4. Du må vite IP-ene til de forskjellige enhetene, enten ved å bruke windows > cmd > ipconfing på Windows, ifconfig på UX-enheten, eller ved å bruke Advanced IP scanner
  5. UX-enheten din bør være koblet til samme hjemmenettverk som PCen din, men det er ikke et absolutt krav så lenge du vet hvordan du setter opp port-forwarding.

Mangler en av punktene over, må du finne ut av hvordan du order det selv. Tips: Google er din venn!

Logg inn på UX-enheten din, enten via terminalen eller via command prompt. Er du på en annen maskin kan du bruke PuTTy fra PC (må lastes ned), eller logge inn via SSH fra Mac eller andre UX-maskiner. Hvordan du gjør det har ikke så mye å si, og vil ikke bli dekket av denne guiden. Siden jeg er lat, gadd jeg ikke fysisk gå heeelt ned gangen og bort til Pi-en min, så istedenfor brukte jeg PuTTy.

Opprett en mappe på Linux-maskinen som du kommer til bruke til å vise alle Windows-filene dine i. Du kan både kalle den hva du vil og legge den hvor du vil, men jeg har valgt å kalle den windows-share og å legge den på hjemmemappen min. Du trenger ikke angi hele filbanen hvis du allerede er i hjemmefolderen din, men jeg har likevel gjort det for ekstra klarhet. Alt etter hvordan UX-system du er på, kan det hende at hjemmemappen din har en litt annen adresse enn den som er vist. Min hjemmemappe er selvsagt /home/pi/.

I terminalen, skriv:

mkdir /home/pi/windows-share

OK, det var den enkleste delen av guiden! Så må du koble til Windows-maskinen. Her er et eksempel på hvordan du kan gjøre det:

sudo mount -t cifs //255.0.0.128/delt-windows-folder \
-o user=dittbrukernavn /home/pi/windows-share

sudo betyr at du må være superbruker for å få det til. mount er programmet som finner den delte mappen din. Så er det noen kommandoer som sendes til mount-programmet, inkludert IPen til Windows-maskinen din, og hvilken delt mappe du ønsker å få tilgang til.

Etter \-tegnet må du trykke enter.  Du vil da få en >-prompt, og der må du skrive en kommando for brukernavn og hvilken UX-mappe du vil dele til. Så trykker du enter en gang til for å finalisere.

Oppsummert trenger du altså å vite IP-en til din Windows-maskin, og navnet på mappen du deler med nettverket. Så må du ha brukernavnet til Windows-maskinen din. Sist men ikke minst må du huske på hvilken mappe du ønsker å dele filene med på UX-enheten din.

Og det var det! Har du gjort det riktig, skal du nå kunne gå inn i mappen windows-share på UX-enheten din og se alle filene som er delt til den fra Windows-PCen din. Her er et eksempel på hva du kan prøve:

cd /home/pi/windows-share
ls

Med det vil du kunne se og bruke alle de delte filene på UX-enheten din.

Fjern bjellen Mac-menyen

Posted in Data, Internett by kebman on 31/07/2014

Denne er egentlig utdatert, men lar den stå i tilfelle noen bruker en gammel versjon av Chrome.

Plutselig en dag var den der; bjellen. Så irriterende! Hvor kom den fra? Oi, den ble borte da jeg avsluttet Chrome! Så det er Chrome som er forbryteren!

Å finne ut av hvordan man fjerner bjellen for hendelsesvarslinger mellom operativsystemer i Chrome var en aldri så liten detektivjobb, men selve oppskriften på hvordan man gjør det er ganske enkel.

I Chrome, gå til chrome://flags/

Scroll ned til Aktiver synkroniserte varsler og velg Deaktiver.

Har du gjort det skal bjellen forsvinne. Har du engelsk Chrome er det lettere å google seg til hvordan man får bjellen til å forsvinne. Hovedproblemet er egentlig å få bjellen til å forvinne i den norske utgaven av Chrome fordi man må prøve å tenke seg til  hvordan programmet er oversatt. På toppen av det hele har de av og til endret oversettelsen. Uansett, sånn fjerner man bjellen på engelsk Chrome:

I Chrome, gå til chrome://flags/

Scroll ned til Enable Rich Notifications og velg Disabled.

Sånn, nå har du fjernet bjellen både på norsk og engelsk! For de med andre språk, se etter en tekstbit som har noe med varsler eller varsling å gjøre, etterfulgt av en oppramsing av forskjellige operativsystemer som Mac, Windows, Linux, etc. Det er vanligvis den som skal deaktiveres.

Hvordan enkelt kryptere meldinger med offentlige nøkler

Posted in Data, Internett, Konspirasjonsteorier, Programvare, Sikkerhet, Teknologi by kebman on 19/02/2014

Aldri før har kryptering vært viktigere. Derfor har jeg laget en noen jukselapper for hvordan enkelt bruke ett av de ledende krypteringsprogrammene for å sende og motta krypterte meldinger sikkert over nett. På sikt vil det komme en mer inngående tutorial, men dette burde få deg i gang.

Kryptering med offentlige nøkler fungerer sånn her: Om du vil motta filer sikkert, så oppretter du et nøkkelpar med en offentlig og en privat nøkkel. Den offentlige nøkkelen sender du til dine kompiser eller kollegaer. De kan nå bruke den til å kryptere sine meldinger til deg. Det kule her er at disse meldigene nå kun kan dekrypteres med din private nøkkel. Derfor er det selvsagt viktig at du også holder din private nøkkel hemmelig.

For å sende en fil sikkert til en venn, må du bruke din venns offentlige nøkkel til å kryptere filen før du sender den. Nå kan bare din venn dekryptere filen, og ingen andre.

Datatilsynet krever ved lov at persondata og ting som er unntatt offentligheten krypteres etter visse standarder før det sendes over nett. Det fine er at denne krypteringsmåten langt overstiger Datatilsynets krav, dermed kan du trygt bruke det til å sende slike data med.

Her er instruksjonene:

Jukselapper for GNU Privacy Guard (Kleopatra)

  1. Last ned GNU Privacy Guard fra http://www.gnupg.org/ (det er gratis)
  2. Installer programmet
  3. Hvordan opprette et privat/offentlig nøkkelpar
    1. Åpne Kleopatra
    2. I menyen, velg File > New Certificate…
    3. Velg Create a personal OpenGPG key pair
    4. Skriv inn ditt fulle navn og din e-post
    5. Skriv inn et passord. NB! Dette er det viktigste steget!
    6. Gå videre og sjekk at alt er riktig.
    7. Eksporter nøkkelen. Huk av ASCII Armor slik at den blir enklere å sende over nettet.
    8. Gjør den offentlige nøkkelen din tilgjengelig for dine venner
  4. Hvordan importere en offentlig nøkkel…
    1. …om du må merke og kopiere en offentlig nøkkel:
      1. Merk og kopier en offentlig nøkkel fra nettet eller i en e-post
      2. Lagre den i en egen fil, og pass på at filendelsen er «.gpg». NB! Husk også hvor du lagrer den!
      3. Åpne Kleopatra
      4. I menyen, velg File > Import Certificates…
      5. Finn filen legg den inn
    2. …om du laster ned eller får tilsendt en fil med en offentlig nøkkel:
      1. Lagre filen på et sted du husker (nedlastinger, f.eks)
      2. Åpne Kleopatra
      3. I menyen, velg File > Import Certificates…
      4. Finn filen og legg den inn
  5. Hvordan kryptere en fil med en offentlig nøkkel
    1. Åpne Kleopatra
    2. I menyen, velg File > Sign/Encrypt Files…
    3. Velg filen du vil kryptere (eller signere)
    4. Klopatra spør hva du vil gjøre; huk av Text Output (ASCII Armor) og trykk Next
    5. Legg til (Add) den offentlige nøkkelen du ønsker å kryptere med
    6. Du vil få en advarsel om at bare mottakeren av filen vil kunne dekryptere den. Trykk Continue.
    7. Den krypterte filen lagres med samme navn som originalen, men med filendelsen «.asc»
    8. Bare eieren av den private nøkkelen kan nå dekryptere filen så kopier innholdet i filen og send over nettet, eller legg hele filen med som vedlegg i en e-post
  6. Hvordan dekryptere en fil med din private nøkkel
    1. Lagre mottatt fil, eller opprett en ny fil, kopier det krypterte innholdet inn i den, og lagre den med filendelsen «.gpg»
    2. Åpne Kleopatra
    3. I menyen, velg File > Decrypt/Verify Files…
    4. Finn den krypterte filen
    5. Velg hvor du vil at den dekrypterte filen skal havne
    6. Trykk på Decrypt/Verify
    7. Du kan nå åpne den dekrypterte filen der du la den

Arma 3: Fyll bensin på ditt helikopter

Posted in Data, Programmering, Scripting, Spill by kebman on 28/09/2013

En enkel oppskrift på hvordan kode fylling av drivstoff på ditt helikopter i Arma 3.

Forhåndskunnskaper: Du må minimum kunne plassere objekter ved hjelp av editoren i spillet. Hvis du ikke kan det enda, se her: http://www.youtube.com/watch?v=oN8s58xEi0k
Ellers er prosessen forklart veldig nøye. Teskje-metoden here we come! 😀

Oppskrift

Åpne opp kartet du har lyst å jobbe med og plasser enten en player eller et helikopter som du gjør til player.
Gi helikopteret navnet myHeli. Lagre kartet med Mission Name «Trigger» og som User Mission.

Plasser så en trigger (finnes under flagg-ikonet).
Sett størrelsen slik at det passer med landingsplassen din.
Pass også på at den er satt til Repeatedly og at enten din gruppe, eller alle, kan trigge den.
Repeatedly betyr ganske enkelt at du kan bruke triggeren til å fylle bensin så mange ganger du måtte ønske.

I boksen Condition, skriv følgende kode:

({getPosATL _x select 2 < 0.1} count thisList) > 0 && fuel myHeli < 0.9;

Forklaring av koden

Den første delen av koden gjør at triggeren kun fyrer av om helikopteret er under 0,1 meter over bakken (Merk: i USA bruker de punktum for å skille mellom desimaler, mens vi bruker komma her i Norge).
Den andre delen av koden (etter &&) gjør at triggeren kun fyrer av om helikoptere har under 90 prosent drivstoff i tanken.

getPosATL finner plassering og høyde over land. Det kommer som en array _x bestående av posisjonskoordinatene 0=X, 1=Y og 2=Z.
Vi er selvsagt bare interessert i høydevektoren Z, derfor står select 2 der.
For at det ikke skal fylles drivstoff før helikopteret står på bakken, vil ikke «listen» bli telt som 1 før høyden er under 0,1 meter over land.

I tillegg vil ikke triggeren skyte av før helikopteret har under 90 prosent drivstoff.
&& står simpelten for en logisk «og», som betyr at begge delene av kondisjonalen må være sann før triggeren fyrer av. Det holder ikke at bare én av dem er det.

I boksen On Act (On Activation), skriv følgende kode:

nul = [] execVM "fuel.sqf";

Forklaring til koden

Dette lager en null-array, fordi det av en eller annen grunn kun kan kjøres fra en sånn… Og execVM kjører ganske enkelt filen fuel.sqf.

Denne filen finnes naturlig nok ikke enda, derfor er det på tide at du starter opp din beste tekst-editor (Notepad++, f.eks., men vanlig Notisblokk funker også).

I tekst-editoren, skriv inn følgende skript:

heliFuel = fuel myHeli;
addFuel = 0.1;
while {heliFuel < 1.0} do {
     myHeli setfuel heliFuel + addFuel;
     addFuel = addFuel + 0.1;
     sleep 0.2;
};

Lagre skriptet som fuel.sqf i mission-folderen. Denne ligger vanligvis på C:\Users\DittBrukernavn\Documents\Arma 3\missions\Trigger.Map . I alle fall gjelder det Windows 7
For alt jeg vet har du den på D-disken. Bytt i så fall C: ut med D:. DittBrukernavn bytter du selvfølgelig med ditt brukernavn.
.Map er det kartet du har valgte, enten Stratis, Altis eller et annet kart.

Forklaring av skriptet

heliFuel = fuel myHeli lagrer simpelten hvor mye drivstoff helikopteret har igjen i tanken i variabelen heliFuel.
addFuel lagrer hvor mye som skal fylles hver gang skriptet slår en ny løkke. Det definerer altså hvor fort tanken fylles opp. Jo høyere tall, jo fortere går det, men det er ingen grunn til å sette tallet over 1, siden 1 er normalisert til å bety «full tank».
while-løkken kjører så lenge det er plass til mer drivstoff i tanken (så lenge heliFuel er under 1), men ikke noe mer enn det.
Inni while-løkken, legger setfuel ganske enkelt den eksisterende mengden drivstoff (heliFuel) sammen med ny mengde drivstoff (addFuel).
sleep pauser ganske enkelt løkken så mange sekunder det er angitt (0,2 sekunder i dette tilfellet).

Som du ser er det et ganske lite skript. Kanskje tenker du da at det kunne vært i kondisjonal-feltet i triggeren. Grunnen til at det ikke kan være der, er fordi triggeren ikke godtar pauser. Det er kun mulig i eksterne skript, derfor trenger det å være i sin egen fil.

Valgfritt

Om du vil at det skal se ekstra bra ut, plasser også ut et helipad-objekt under triggeren fra Empty > Objects (Signs).
Det er nemlig litt lettere å finne igjen trigger-området i spillet om du også har en synlig landingsplass assosisert med den. 😉

Q-taggen

Posted in Data, Webdesign by kebman on 11/09/2013

Anbefaling for hvordan bruke Q-taggen innen HTML: Ikke i det hele tatt!

Meningen bak Q-taggen er å definere et kort sitat, i følge W3Schools. W3C forklarer Q-taggen som et element som representerer formulering av innhold sitert fra en annen kilde. Ren skrift representerer dette med et sitat-tegn, enten engelske hermetegn («»), eller norske gåsøyne («») og anførselstegn (‘’). Med andre ord finnes det allerede fullgode typografiske tegn for dette.

Selv om visse maskiner har vansker med å vise frem disse tegnene, kan alle maskiner med tilgang til kodetabellen UTF-8 vise disse fram riktig. Med det som basis anbefaler jeg alle som vurderer å bruke Q-tagg om å heller droppe det og bruke de tegnene vi har tilgjengelig.

Q-taggen var et forsøk fra W3C om å få vist frem korte sitater riktig på alle typer maskiner, da ikke alle maskiner har denne typen tegn. Problemet er at de fleste nettlesere viser dette fram med engelske hermetegn, som skaper et problem når teksten er europeisk, eller når sitatet også inneholder et «undersitat». Som resultat blir man nødt til å skrive ekstra CSS-kode om man vil at teksten skal rendres riktig av nettleseren, noe som er helt unødvendig når du allerede vet hvordan du bruker tegnene riktig. Enda mer unødvendig blir det også når du i HTML-en enkelt kan angi hvilken kodetabell teksten du publiserer skal tolkes med.

Bruker du HTML5 er det bare å sette inn denne kodesnutten i hodet av koden din:

<meta charset="utf-8" />

SMPTE-synkronisering på GitHub

Posted in Data, Filmredigering, Internett, Programmering, Programvare, Scripting, Teknologi, Video by kebman on 13/05/2013

Endelig har jeg oppdaget GitHub og lagt ut mitt første prosjekt der. Driver på med et videoprosjekt nå, men jeg fikk noen problemer med SMPTE-koder (tidskoder for video) som ikke stemte med hverandre da jeg logget. Først sjekket jeg ut noen programmer, men de dugde ikke, så da bare satte jeg i gang å lage min egen kode.

Sjekk det ut her: https://github.com/kebman/Simple-SMPTE-class-in-PHP