Syncing av pdf-lesing

av Sten Morten Misund-Asphaug på Programmerer.com

 

 

 

 

Jeg ønsker meg en pdf-leser som kan synke hvor langt jeg har kommet, mellom devicer. Slik som Kindle kan med Amazon-bøker. Kindle-appen selv kunne gjerne gjort det…

Men siden den ikke kan … hvem lager det først? Jeg er villig til å betale kr 35 for en slik leser, tenker jeg. Sånn cirka.

Programmeringsglede

av Sten Morten Misund-Asphaug på Programmerer.com

 

 

 

 

«I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.»

Alan J. Perlis (April 1, 1922-February 7, 1990)

Initiativ og skapelse

av Sten Morten Misund-Asphaug på Programmerer.com

 

 

 

 

“Concerning all acts of initiative (and creation), there is one elementary truth, the ignorance of which kills countless ideas and splendid plans: that the moment one definitely commits oneself, then Providence moves too. All sorts of things occur to help one that would never otherwise have occurred. A whole stream of events issues from the decision, raising in one’s favor all manner of unforeseen incidents and meetings and material assistance, which no man could have dreamed would have come his way. Whatever you can do, or dream you can do, begin it. Boldness has genius, power, and magic in it. Begin it now.”

- William Hutchinson Murray, The Scottish Himalayan Expedition (1951)

Dare mighty things

av Sten Morten Misund-Asphaug på Programmerer.com

 

 

 

 

«Far better it is to dare mighty things, to win
glorious triumphs, even though checkered by failure,
than to take rank with those poor souls who neither
enjoy much nor suffer much, because they live in the
gray twilight that knows neither victory nor defeat.»
–Theodore Roosevelt

Hvis bare utviklerne ...

av Magnar Sveen på Framsieutvikling.no

  • Hvis bare utviklerne hadde vært med i salgsmøtene,
  • Hvis bare utviklerne hadde estimert sakene bedre,
  • Hvis bare utviklerne hadde planlagt sprinten nøye,
  • Hvis bare utviklerne hadde blitt enige på forhånd,
  • Hvis bare utviklerne hadde satt seg ned sammen med interaksjonsdesigneren,
  • Hvis bare utviklerne hadde satt seg ned sammen med produkteieren,
  • Hvis bare utviklerne hadde satt seg ned sammen med arkitekten,
  • Hvis bare utviklerne hadde satt seg ned sammen med kunden,
  • Hvis bare utviklerne hadde brukt mindre tid i møter,
  • Hvis bare utviklerne hadde fått ting ferdig fortere,
  • Hvis bare utviklerne hadde skrevet testene først,
  • Hvis bare utviklerne hadde gjort en sak av gangen,
  • Hvis bare utviklerne hadde brukt bedre verktøy,
  • Hvis bare utviklerne hadde konsistent bruk av whitespace,
  • Hvis bare utviklerne hadde startet med de største sakene,
  • Hvis bare utviklerne hadde samme vokabular som kunden,
  • Hvis bare utviklerne hadde kjørt koden gjennom statisk analyse,
  • Hvis bare utviklerne hadde vært mer smidige,
  • Hvis bare utviklerne hadde jobbet konsentrert,
  • Hvis bare utviklerne hadde parprogrammert,
  • Hvis bare utviklerne hadde brukt samme editor,
  • Hvis bare utviklerne hadde startet med en velfundert arkitektur,
  • Hvis bare utviklerne hadde skrevet integrasjonstester,
  • Hvis bare utviklerne hadde ryddet opp i gammel kode,
  • Hvis bare utviklerne hadde lagd færre bugs,
  • Hvis bare utviklerne hadde sett alle konsekvenser av en endring,
  • Hvis bare utviklerne hadde fulgt prosessen til punkt og prikke,
  • Hvis bare utviklerne hadde skrevet utfyllende dokumentasjon,
  • Hvis bare utviklerne hadde funnet gode navn på alle variable,
  • Hvis bare utviklerne hadde samarbeidet på tvers av team,
  • Hvis bare utviklerne hadde jobbet godt alene,
  • Hvis bare utviklerne hadde brukt bunnsolide rammeverk,
  • Hvis bare utviklerne hadde fulgt formateringsreglene,
  • Hvis bare utviklerne hadde tatt en fot i bakken,
  • Hvis bare utviklerne hadde fortalt hvor mange timer som gjenstod,
  • Hvis bare utviklerne hadde brukt mindre tid på produksjonssaker,
  • Hvis bare utviklerne hadde kjørt alle testene før hver commit,
  • Hvis bare utviklerne hadde latt være å brekke bygget,
  • Hvis bare utviklerne hadde sjekket i alle nettleserne,
  • Hvis bare utviklerne hadde tatt høyde for framtidige endringer,
  • Hvis bare utviklerne hadde vært litt flinkere,

så hadde alt vært … ok.

Wordfeud – En uvelkomneste fråtsing i absurde ord, featuring grep

av Sten Morten Misund-Asphaug på Programmerer.com

 

 

 

 

Etter å ha blitt banket ned i støvlene i Wordfeud av “venner” som synes det er okay å legge ord som gjura (perfektum-form av ordet gjure, norr gyrða, som betyr gjorde) og CIF (som er en engelsk forkortelse: Cost, Insurance, Freight, og betyr at en vare leveres uten at du må betale for omkostninger, forsikringer og frakt), og ikke minst klapr (jupp, en avart av klapre), så jeg meg nødt til å utforske den norske ordboka Wordfeud bruker. Wordfeud har samme ordbok i bånn som Bokmålsordboka på nett, og denne grunnordboka kan du laste ned etter å ha registret deg hos Norsk Ordbank.

Med i zip-filen er et par filer som beskriver den elektroniske ordbokens format, og en paradigme-fil som beskriver ordformer og deres bøyninger, men vi skal ikke gå inn i å sette ordene sammen til en komplett liste ved regelbruk. Istedenfor går vi rett i strupen på filen fullform_bm.txt.

Jeg startet min utforskning med å gjøre enkle søk i TextEdit, et Mac-program som tok frem den svære tekstfilen forbausende raskt, og som også søkte i den raskt. Jeg tror de fleste av oss ville ha noe å lære av å se på hvordan TextEdit er implementert, hvis vi fikk sjansen. For da jeg fant ut at jeg ville bruke regulære uttrykk (også kjent som regular expressions, også kjent som regexp eller regex) i mine søk, og dro opp TextMate, ble maskinen til sirup, og etter noen få søk kræsjet den. Det samme skjedde med AquaEmacs.

Det enkle er ofte det beste. Jeg hadde oversett den åpenbare løsningen: grep. Med grep -e (også kjent som egrep) går det lynraskt å søke med regulære uttrykk i den 82 MB store filen.Gå til kommandolinjen, eller terminalen, eller hva du kaller det. La oss gjøre noen enkle søk.

Finnes Ordet?

Lurer du på et spesifikt ord er i ordboken, før du legger det? Finnes ordet “gnu”?

egrep 'bgnub' fullform_bm.txt

b betyr “en tom string ved kanten av et ord”, og du får listet ut alle treffene der ordet “gnu” står alene:

23846 gnu gnu verb inf <trans1> <trans11/p?> <refl9/i> normert 040 1
23847 gnu gnu subst mask appell ent ub normert 700 1
23846 gnu gnur verb pres <trans1> <trans11/p?> <refl9/i> normert 040 2
23847 gnu gnuen subst mask appell ent be normert 700 2
23846 gnu gnus verb inf pres pass <trans1> <trans11/p?> <refl9/i> normert 040 3
23847 gnu gnuer subst mask appell fl ub normert 700 3
23846 gnu gnudde verb pret <trans1> <trans11/p?> <refl9/i> normert 040 4
23847 gnu gnuene subst mask appell fl be normert 700 4
23846 gnu gnudd verb perf-part <trans1> <trans11/p?> <refl9/i> normert 040 5
23846 gnu gnudd adj <perf-part> n?yt ub ent <trans1> <trans11/p?> <refl9/i> normert 040 6
23846 gnu gnudd adj <perf-part> m/f ub ent <trans1> <trans11/p?> <refl9/i> normert 040 7
23846 gnu gnudde adj <perf-part> be ent <trans1> <trans11/p?> <refl9/i> normert 040 8
23846 gnu gnudde adj <perf-part> fl <trans1> <trans11/p?> <refl9/i> normert 040 9
23846 gnu gnuende adj <pres-part> <trans1> <trans11/p?> <refl9/i> normert 040 10
23846 gnu gnu verb imp <trans1> <trans11/p?> <refl9/i> normert 040 11

Andre kolonne er grunnform av ordet (det er den som har gitt oss treffene på det regulære uttrykket her,) tredje kolonne er fullformen av ordet. Gnu finnes selvfølgelig, med en del uventede avarter. Finnes ordet uvelkomneste, da?

egrep 'buvelkomnesteb' fullform_bm.txt

Jada.75803 uvelkommen uvelkomneste adj sup be normert 562 7

Hvilke ord inneholder bokstaven C?

egrep 'b[a-z]*c[a-z]*b' fullform_bm.txt

Det vi sier her er: gi meg et ord som har 0 eller flere bokstaver mellom a-z (inklusive) og som så har en c, og som så har 0 eller flere bokstaver mellom a-z (inklusive). Listen er lenger enn du kanskje tror. Opsjonen -c gir oss antall linjer:

egrep -c 'b[a-z]*c[a-z]*b' fullform_bm.txt

skriver ut 10889. Enjoy!

Finnes det ord som inneholder både C og W?

Oh yes, baby.

egrep -c 'b[a-z]*c[a-z]*w[a-z]*b|b[a-z]*w[a-z]*c[a-z]*b' fullform_bm.txt

gir ikke mindre enn 206. Tegnet | betyr “eller”, så her har jeg kombinert de to uttrykkene:

1) finnes det ord med c og så w, med 0 eller flere bokstaver i mellom dem (b[a-z]*c[a-z]*w[a-z]*b) ?

med

2) finnes det ord med w og så c, med 0 eller flere bokstaver i mellom dem (b[a-z]*w[a-z]*c[a-z]*b) ?

Fra nr. 1 får vi ord som breitschwans, catwalk, cowboy, crawl, patchwork og rickshaw.

Fra nr. 2 får vi for eksempel worldcup, whitecoat og weltschmerz (men Z har vi vel ikke i Wordfeud, så det blir vanskelig å legge)

Forkortelser

Wordfeud skiller seg fra Scrabble ved at det er lov med forkortelser. Men hvilke forkortelser kan du bruke? CIF er lov, og vi finner det igjen i ordboken. Men jeg har f.eks. prøvd å legge SV, uten å få lov til det. Det fortvilede er at forkortelsen SV finnes i filen vår, fullform_bm.txt. Så hva som er lov og ikke lov i Wordfeud, er jeg ikke sikker på. Men som utgangspunkt kan vi i hvert fall ta alle de ordene som, bekvemt nok, er merket med “fork”. Vi kan altså bare gjøre det enkle søket

egrep 'bforkb' fullform_bm.txt

… og få listet ut alle forkortelser som er lovlige. 1270 stykker, er det. Her er et lite knippe du kan prøve neste gang du er i en knipe:

AD
ADB
AL
AM
AS
ASA
CD (bekreftet)
CP (bekreftet)
DS
EDB
EEC
EF
EKG
ES
EU
FM
FN
GMT
GT
HMS
KT
krf
MS
MT
Ng (bekreftet)
PVC
PVRK
SI
SM
SS
UHF
UK
UNESCO
USA
YAP

Om du vil titte selv, og bare ønsker deg kolonne 2, den med ordene i, kan du pipe treffene til awk:

egrep -i 'bforkb' fullform_bm.txt | awk '{ print $2 }'

Leke Mer?

Kjør

info grep

i kommandolinjen, og se under headingen “Regular Expressions” (du finner den samme informasjonen med Google-søket man:grep http://www.google.no/?q=man:grep ).

FAQ

Q: Uttrykkene over kan skrives mer elegant?

A:  Ja, de kan nok det. Jeg har skrevet de regulære uttrykkene for å være enklest mulig å forstå.

Q: Hva med æ, ø, å?

A: Jeg har droppet det for enkelhets skyld. Dermed mister du endel ord ved å bruke uttrykkene slik de er beskrevet over.