januari 2009

You are currently browsing the monthly archive for januari 2009.

Jag är snart klar med min javakurs och har till den skrivit ett damspel. Här kan ni pröva resultatet:

Det är version 0.1rc1 och jag är glad om jag kan få feedback i kommentarerna. Antagligen ändrar jag inte så mycket eftersom slutinlämningen är om en vecka, men jag har dock tänkt att släppa koden under gpl och sedan även skriva en version 0.2, eftersom jag inte hittade nått färdigt, fritt, damspel när jag letade inspiration inför kursen.

Tyvärr släpper jag inte källkoden direkt, eftersom lärarna på kursen gärna ser att alla skriver sina spel själva på kursen (av förklarliga skäl). Så koden kommer när en rimlig tid har gått efter att kursen är slut.

Men som sagt, spela gärna och återkom med feedback, så ska jag ta era synpunkter i beaktande inför kommande versioner.

 

 

 

 

I dag fick jag ett mejl från en bloggläsare som undrade hur man gör för att ställa in svensk tid på en MediaWiki-installation. I ursprungsinställningarna används nämligen UTC i stället för CET (vilket är den tid som används i Sverige).

Svaret är enkelt, som så mycket annat när det gäller MediaWiki handlar det om att lägga till lite kod i LocalSettings.php. Öppna LocalSettings.php och lägg denna kod längst ned:

#Set Default Timezone
$wgLocaltimezone = "Europe/Stockholm";
$oldtz = getenv("TZ");
putenv("TZ=$wgLocaltimezone");
# Versions before 1.7.0 used $wgLocalTZoffset as hours.
# After 1.7.0 offset as minutes
$wgLocalTZoffset = date("Z") / 60;
putenv("TZ=$oldtz");

Detta är den primära metod som anges i dokumentationen. Det har dock rapporterats att detta kan ge problem med sommartid varför det även finns en inofficiell metod angiven i dokumentationen:

#Set Default Timezone
$wgLocaltimezone = "Europe/Stockholm";
#Calculate the timezone offset with UTC
$oldtz = getenv("TZ");
putenv("TZ=$wgLocaltimezone");
$wgLocalTZoffset = date("Z") / 60 + date("I") * 60;
putenv("TZ=$oldtz");

Den metoden har jag inte testat själv, men det skadar ju aldrig att experimentera lite, så länge man alltid gör backup på LocalSettings.php.

Se även:

Den som vill bli påmind om hur man gör för att ändra i LocalSettings.php, kan läsa ett äldre blogginlägg här:

Läs även andra bloggares åsikter om ,

 

Att komma i gång med korskompilering för Windows var betydligt enklare än vad jag räknat med. Allt man behövde göra var att installera tre paket:

 

sudo apt-get install mingw32 mingw32-binutils mingw32-runtime  

När det är klart kan du kompilera program för Windows (skapa .exe-filer) direkt i din GNU/Linuxburk. Allt du behöver göra är att lägga till 586-mingw32msvc- före ditt vanliga anrop till en gnukompilator, alltså t.ex.:

 

i586-mingw32msvc-g++ hello.cpp

för att kompilera källkoden i filen hello.cpp.

Allt detta tack vare MinGW (Minimalist GNU for Windows) som fixat denna utmärkta korskompilator åt oss.

Eftersom jag inte har någon Windowsburk får jag nu köra mina Windowsprogram i Wine

 

Se även:

Läs även andra bloggares åsikter om , , , , ,

En positiv utveckling som skett den senaste tiden är att material från Wikipedia trycks i bokform. Här kan nämnas fågelboken "Svenska fåglar" som Wikimedia Sverige givit ut, men också det projekt jag själv är  inblandad i. Det är ett projekt för att skriva en manual för MediaWiki som genomförs i samarbete med .SE. Manualen kommer att innehålla mycket nyproducerat material, men också text från Wikipedias hjälpsidor. Det innebär naturligtvis att manualen måste släppas under GFDL och att samtliga författare till texterna på Wikipedia måste listas i enlighet med kraven i licenstexten.

Hur gör man då för att skapa en lista på alla författare som skrivit i ett tjugotal hjälpsidor på Wikipedia? Svaret är enkelt, man skriver ett program som fiskar fram alla författare ur en MediaWiki-dump. Därefter släpper man programmet under GPL, så att andra kan göra samma sak. Det är i alla fall vad jag har gjort. Så här gör man för att använda programmet:

1. Gå till Special:Export på wikin som du tagit material i från, gör en dump på de artiklar det gäller och spara den på din dator. Glöm inte att klicka ur krysslådan "Inkludera endast den nuvarande versionen, inte hela historiken"

2. Starta mitt program som du hittar här: http://mickenordin.se/files/GetAuthors.jar

Det krävs att du har java installerat på din dator (http://java.com/sv/), men borde å andra sidan funka på (nästan) alla
operativsystem.

3. Tryck på knappen "Select xml-file" och klicka dig fram till filen du sparade på din dator

4. Tryck på knappen "Select save location" och välj var du vill spara filen med författare.

5. Tryck på knappen "Get authors"

Programmet har även ett CLI, så man kan skicka sökvägen till en dump som argument, författarlistan skrivs sedan till standard out så att man kan pipa vidare om man vill. Då får ni packa upp jar-filen och sedan köra: java GetAuthors [file]

Ha så kul!

Se även:

Läs även andra bloggares åsikter om , ,

Här kommer fortsättningen på min lilla terminalserie, de tidigare delarna hittar du här och här.

echo

echo är ett kommando som skriver ut det som kommer efter det till standard out, till exempel skriver kommandot: echo jag testar echo ut texten "jag testar echo" i terminalen. Vad kommandot kan vara bra till kommer ni kanske förstå nedan under avsnittet om pipelines.
 

cat

cat är en förkortning för (con)catenate som betyder "slå i hop", cat kan alltså användas för att skriva ut (en eller) flera filer efter varandra till standard out. Kommandot cat fil1 fil2 kommer att först skriva ut innehållet i fil1 och sedan innehållet i fil2 direkt i terminalen. Man kan också använda cat för att dumpa innehållet i en fil till standard out, men vill man helt enkelt läsa en fil gör man det oftast enklare med kommandot less som vi tittat på tidigare. Det går också bra att använda cat till standard in, det görs så här: cat följt av inget alls kommer att skriva ut standard in i terminalen. Kommandot cat fil1 – fil2 kommer att först skriva ut innehållet i fil1, därefter standard in och slutligen innehållet i fil2.

Pipelines

En pipeline är inget regelrätt kommando, det är ett sätt att skicka en ström vidare, till exempel från standard out till en fil eller ett program.  För att göra detta används olika specialtecken. | är det egentliga pipe-tecknet. Till exempel kan man göra så här: echo "testar en pipeline" | cat fil1 – fil2 det kommer först att skriva ut innehållet i fil1 på skärmen därefter kommer strängen "testar en pipeline" från kommandot echo att skrivas ut följt av innehållet i fil2. Med pipelines kan man också skicka saker till filer med hjälp av > och >>. Om vi använder samma exempel som ovan så kan man alltså göra så här: echo "testar en pipeline" | cat fil1 – fil2 > fil3 detta kommer att skicka innehållet i fil1 följt av strängen "testar en pipeline" och därefter innehållet i fil2 till en tredje fil kallad fil3. Om filen inte finns kommer den att skapas och om den finns kommer den att skrivas över, vill vi i stället lägga texten från fil1, standard in och texten från fil2 i slutet på fil3 gör vi så här: echo "testar en pipeline" | cat fil1 – fil2 >> fil3 detta kommer att skapa fil3 om den inte finns, eller lägga allt material i slutet på filen om den finns redan, utan att skriva över det gamla innehållet. Det går bra att på det här sättet sätta i hop i princip hur många program/kommandon som helst som läser från standard in och skriver till standard out.  Här har vi ett exempel med flera program:   echo "testar en pipeline" | cat fil1 – fil2 | grep "testar" >> fil3 detta kommando kommer att skicka alla radera som innehåller ordet "testar" i från fil1, standard out och fil2 och lägga dessa sist i fil3.
 

sed

sed är ett kanonbra kommando som låter dig klippa och klistra i en sträng. sed betyder "Stream editor". Ponera att du har två filer som bland annat innehåller ditt namn. Innehållet i dessa filer vill du skicka till en tredje fil enligt ovan, men du vill byta ut ditt efternamn mot ett annat (kanske på grund av att du gift dig :-), då använder du sed: cat fil1 fil2 | sed ‘s/Andersson/Larsson/’ > fil3 sed kommandot har som ni kan se flera delera, först kommer själva anropet av programmet sed, därpå följer en sträng inom enkelfnuttar s:et betyder "substitute" och det som kommer inom den första avdelningen inom /och/ är det som sed kommer att leta efter, i nästa avdening (också mellan /och/) kommer det som sed skall byta ut det första mot. Kommandot kommer alltså att hämta innehållet i fil1 och fil2 med cat, pipelinen skickar texten i filerna vidare till sed som byter ut alla förekomster av "Andersson" mot "Larsson" och slutligen skickas den modifierade texten till fil3 med häjlp av en ny pipeline. Det finns mycket mer än så man kan göra med sed och jag vill uppmana alla att använda kommandot man som jag tipsade om i första delen av min terminalskola i kombination med alla andra kommandon jag tipsat om här.

Se även:

Läs även andra bloggares åsikter om , ,

Newer entries »

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin