Bdb upload script

February 7th, 2010 mejf

Jag har länge tänkt att jag på något sätt skulle vilja dela med mig av min vardag till folk jag känner genom foton. Jag höll på med bilddagboken ett tag, men det blev så tråkigt att ladda upp bilder där med deras formulär. Men nu har jag äntligen fått tummen ur och löst problemet för mig själv, åtminstone tillfälligt.

Jag har nämligen, med hjälp av en del exempel och en bristfällig API-dokumentation slängt ihop ett script för att ladda upp bilder på Bilddagboken. Det är skrivet i PHP och använder sig av curl (både programmet curl och libcurl i PHP, funderar på att ändra till bara libcurl), notify-send och zenity. Jag kör det i Ubuntu Karmic 64 bit, men det funkar alldeles säkerligen under andra operativsystem också, kanske med lite pill. Jag tänkte hur som helst dela med mig av scriptet i fråga. Jag personligen har lagt scriptet i ~/.gnome2/nautilus-scripts/ för att kunna högerklicka på bilder och ladda upp dem direkt från Nautilus, men det går ju att göra på andra sätt.

Scriptet läser även ut datumet som namnet på katalogen bilden ligger i, i formatet ÅÅÅÅ-MM-DD eller ÅÅÅÅ_MM_DD. Det går givetvis lätt att fixa på något annat vis om så önskas (exempelvis från EXIF-taggarna).

För att använda Bdbs API krävs en API-key och ditt userid. Kommentarer i koden beskriver hur man skaffar apikey och tar reda på userid.

Och här är koden (hos pastebin).

Update: Jag har jobbat vidare en del på koden. Här är en senare variant.

Posted in Programmering | Tags: , , , , , , , , , , , | 1 Comment »

Det Sista ProgrammetTM

December 13th, 2009 mejf

Inte helt sällan inom mitt område av studier är det problem man ska lösa. Dessutom problem kan ofta delas in i grupper av problem där de olika problemen har olika metoder för hur de ska lösas. Ibland kan en grupp problem ha som lösning att man omformulerar problemet och joxar runt det lite grand så att det ser ut som en annan grupp av problem som går att lösa mer direkt.

För någon vecka kom jag att tänka på det här med mjukvara. Hur många olika mjukvaror har det utvecklats under historien? Även om vi inte räknar uppdateringar och mindre utökningar som nya program så skulle jag tro att kvoten (antal utvecklade program) / (antal olika, av dess program, lösta problem) är ganska hög. Alltså att det finns väldigt många program/system som löser exakt samma grundläggande problem. Om man bara kunde identifiera dessa distinkta problem-typer borde man väl i teorin kunna skriva Det Sista ProgrammetTM. Alltså skriva det sista programmet som någonsin behövde skrivas. Programmet som kan lösa alla tänkbara problem som någonsin skulle kunna tänkas behöva lösas av en dator. Man kanske skulle få jobba med att anpassa användargränssnitt och annan kosmetik efter rådande normer och mode. Men i övrigt skulle världens problemlösning vara tryggad.

Nackdelen med den här tanken skulle jag väl kunna tänka mig är att mängden problem som kan behöva lösas är så astronomiskt stort att det… Jag behöver nog inte skriva mer nu.

Posted in Funderat, Programmering | Tags: , , , | No Comments »

Optimerande Kompilator

December 12th, 2009 mejf

Jag har nu avslutat, lämnat in och blivit nöjd med det roligaste projektet på LTH (hittills). Kursen heter Optimerande Kompilatorer och hålls av kompilatorernas Yoda Jonas Skeppstedt.

Projektet gick ut på att vi fick en simpel kompilator för en förenklad variant av C med inbyggd simulator som vi skulle utöka med optimeringar. Målet var att en bifogad benchmark skulle köras på så få klockcykler som möjligt.

Inte nog med att jag och Jesper vann, vi spöade även alla de tidigare åren med ganska god marginal. Orginalkompilatorn körde benchmarken på ~180.000 klockcykler. Tidigare rekordet från 2007 var på 1047 klockcykler. Vår kompilator fick ner det till 950 klockcykler. (Enda besvikelsen var väl att vi inte lyckades slå dem med 100, vilket var målsättningen mot slutet.)

De kommentarer vi fått efter att vårt resultat blev (ehrm) offentligt har verkligen varit självförtroendehöjande. Jonas själv trodde inte det var möjligt att få ner siffran under 1000. Minst sagt en boost!

Posted in Programmering | Tags: , , , | 1 Comment »

So long, suckaz!

November 20th, 2008 mejf

Imorgon kl. 8.10 avgår minibussen som ska ta mig från Lund till Utrecht, Holland där jag ska tävla i NWERC (Northwestern Europe Regional Programming Contest) där jag ska gnugga mina geniknölar och tävla i programmering. För den som vill följa tävling (som går av stapeln på söndag förmiddag) finns denna hemsidan. Är du sugen på att titta på vad för slags problem vi kommer syssla med kan du ta en titt på tävlingens hemsida från förra året.

Önska mig lycka till!

Posted in Programmering | Tags: , , , | 2 Comments »

TimeTanks, Preview

August 19th, 2008 mejf

Jag har äntligen kommit loss och programmerat lite! Jag håller på med ett spel jag kallar TimeTanks. Skjuta monster och klara banor, with a twist, är tanken. Är man inte nöjd med hur man genomförde banan kan man resa tillbaka i tiden och spela om banan tillsammans med sig själv. Dock får man procentuellt poängavdrag för varje tidsresa. Blir man dödad färdas man automatiskt tillbaka i tiden. Här kommer några screenshots av hur långt jag kommit hittills, för den som är intresserad:

Posted in Programmering | Tags: , , , , | No Comments »

Semester

June 17th, 2008 mejf

Nu drar jag på semester. En vecka i Blekinge kommer sitta fint. Jag ska sitta på en gräsmatta, plugga körteori, dricka läsk och öl, umgås med familj och, mot slutet av veckan, Hannas släkt.

Två spännande saker händer på onsdag, och jag ska följa båda så gott det går. FRA-omröstningen i riksdagen och fotbollen.

I övrigt har du säkert sett att min, nu världsberömda, Sitename Generator har blivit en widget längst ner till höger på denna sida. Jag har dessutom utökat sortimentet av ord i den så att det totala antalet möjliga kombinationer ligger just över 650 000.

Jag har nog förresten glömt att berätta att resultaten från vårens kurser har kommit in i Ladok. 4:an i kursen Matematisk Statistik ger mig 138 högskolepoäng och det innebär alltså att jag nu (poängmässigt) har passerat halva utbildningen. Grattis till mig!

Posted in Mejf, Programmering | Tags: , , , , , , , , , , , | No Comments »

Yoursitename.com

June 13th, 2008 mejf

Japp japp. Jag har nu gjort slag i saken och skapat mig en egen sitename-generator. Funderar du på att starta en ny, hipp hemsida som ska locka alla werldens besökare? Ge knappen nedan ett snabbt klick!

<klicka på knappen>

För den som är intresserad av källkoden så finns den här.
Generatorn (som den används ovan) fungerar så vitt jag vet inte i Internet Exploder.

[Disclaimer: Jag garanterar icke att genererade sitenamn inte redan är upptagna. En jäkla massa av dem är dessutom registrerade varumärken hos diverse företag och organisationer.]

Posted in Programmering | Tags: , , , | 1 Comment »

Chatbotten Markov

May 13th, 2008 mejf

En Markovkedja är enligt Wikipediaen tidsdiskret stokastisk process med Markovegenskapen, det vill säga att processens förlopp kan bestämmas utifrån dess befintliga tillstånd utan kännedom om det förflutna.“. Med andra ord har vi något slags process som befinner sig i ett tillstånd åt gången. Efter varje tillstånd har processen ett antal andra tillstånd till vilken den går vidare till med en viss sannolikhet.

Med lite vilja bör man kunna se språk som en Markovkedja av bokstäver, ord, meningar eller kanske till och med hela konversationer. Man kan genom att dela upp ett språkexempel i dessa tillstånd få ut en jättestor matris med alla dessa sannolikheter där raden representerar “från”-tillstånd och kolumnen “till”-tillstånd. Då innehåller elementet sannolikheten för just den övergången. Denna matrix kallas därför för “övergångsmatris”.

Analyserar vi exempelvis meningen “Hej jag heter Manfred” med avseende på ord så kommer det vara 100% sannolikhet att ordet “Hej” efterföljs av ordet “jag”, och så vidare. Ser man istället tecken (bokstäver) som tillstånd kommer det vara 25% (1/4) chans att bokstaven “e” följs av bokstaven “j”, 25% bokstaven “t”, osv.

Detta kan man givetvis leka med om man känner för det. Med ett oerhört litet, enkelt C-program kan man analysera en given text (med avseende på bokstäver) och sedan slumpa fram en ny text med den analyserade textens sannolikheter. Då kan man få resultat som:

“The homexis llle be!”, eller

“Fin suth! or mar thtou ghed thinechtew.”.

Kan du gissa vilken text det är jag har utgått från? Nej, misstänkte det. Det blir nog lite lättare om jag låter ord vara mina tillstånd istället. Det blev en något mer avancerad övergångsmatris, så det blev ett inte lika kort program, och dessutom skrivet i Java (för att enklare kunna bolla med datastrukturer). Då kan man få meningar som dessa:

“Prologue: Enter Nurse Nurse Madam, if they can give to stand: I cannot at graves!” eller

“Juliet Madam, if they can give to thee, they have to love, to Romeo There is shut.”

Ja, alldeles riktigt. Texten jag har analyserat är en omarbetad version Romeo och Julia av Shakespear (som kan laddas ner gratis på Wikisource). Nu återstår bara att komplettera så att man kan blanda sannolikheter från meningar till meningar och meningar till ord och bygga in IRC-stöd, så har jag en komplett chatbot! Eller nått…

Posted in Programmering | Tags: , , , , , | No Comments »