Posts Tagged ‘programmering’

Energetisk

augusti 12, 2009

Efter en lugn helg med en massa bokläsning och lite TV kände jag mig oförskämt pigg och bestämde mig för att ta tag i ett par (väldigt) små projekt som jag haft liggande.

Det första var ytterst litet och enkelt: Byta SMS-signal på min telefon. För ett tag sedan kom jag på att sekvensen som spelas mellan nivåerna i The Great Giana Sisters skulle vara rolig att ha. För att komma åt detta ljud laddade jag ner musiken i sid-format (eller psid om man ska vara noga), sedan använde jag SIDPlayer för att spara ljudet som wav och sedan konverterade jag wav-filen till mp3 och förde över till min mobiltelefon. (SMSa gärna så jag får höra signalen!)

När jag använde sidplayer upptäckte jag att programmet kraschade (segmenterings fel) precis när det avslutades och eftersom jag var så pass pigg satte jag mig och letade efter felet och hittade det. Det gör ingen egentlig skillnad eftersom kraschen inte gör någon skada men det kändes ändå bra. Detta var sent en söndag kväll, vissa har liv men inte jag…dock har jag skoj!

Projekt nummer två var att fixa iordning mitt script som laddar ner och visar den senaste bunny-strippen på mitt skrivbord. Tidigare använde jag libxml2 för att själv parsa seriens RSS-flöde nu valde jag att använda det aningen (läs mycket) smidigare biblioteket feedparser och resultatet blev ett litet smidigt script som jag till och med vågar visa andra. Nu finns det upplagt i menyn till höger under namnet bunny-bg.

Annonser

Javalabbar

oktober 28, 2008

I höst läser jag Objektorienterad programmering med Java på distans och föll tidigt in i den dåliga vanan att lämna in mina labbar aningen för sent.

I min ungdom (för 8 år sedan eller så) lärde jag mig programmera i C och är väldigt inkörd på sekventiell programmering så det är ruskigt intressant att titta på vilka möjligheter objektorienterade språk erbjuder. Jag har sysslat en del med python (jag har skrivit ett par inlägg om det tidigare vill jag minnas) men aldrig riktigt gått in på djupet i de objektorienterade bitarna, så jag har inte så mycket stöd därifrån, å andra sidan är syntaxen väldigt lik C vilket gör att jag kan koncentrera mig på filosofin bakom språket utan att behöva traggla kodstrukturer och måsvingar.

Det jag hitintills är mest imponerad över är extend-funktionen vilken gör att man kan skapa ett grundobjekt och sedan göra nya objekt baserat på grundobjektet som erbjuder grundobjektets funktioner tillsammans med en del nya, funktioner kan till och med bytas ut. Jag är inte riktigt klar på exakt vad det här innebär men det ger fantastiska möjligheter till att återanvända objekt.

Koden blir generellt sett mycket mer strukturerad än vid sekventiell programmering tack vare den underliggande tanken på att allt skall kapslas in i objekt. Även om man får mycket gratis måste man fortfarande tänka på vad man gör annars får man så kallad raviolikod (jmfr. spagettikod vid sekventiell programmering).

Jag har tyvärr inte riktigt haft så mycket tid jag velat till att pyssla med det här så jag har inte läst så mycket i boken, google har varit min största informationsresurs medan jag skrivit labbarna. Jag måste också kolla hur de strukturer jag lärt mig bygga ser ut i python…men det blir en annan dag.

Python: Sex månader senare

juli 24, 2008

Nu har jag använt Python på jobbet och privat i ungefär ett halvår och börjar känna mig hyggligt bevandrad i språket. (Med hyggligt bevandrad menar jag att jag skrivit ett par program och lekt lite med språket.)

Jag tror att jag har haft ganska lätt att komma in i språket eftersom jag programmerat en del C samt att jag känner till lite om Unix/POSIX eftersom POSIX-funktionerna i Python (filhantering, hantering av in-argument till program, etc.) är standardiserade.. (POSIX definierar en uppsättning av funktioner som operativsystemet skall hantera, samt dessa funktioners funktionalitet.) Trots att jag haft hjälp av tidigare erfarenheter tror jag att Python är ett bra nybörjarspråk eftersom det är lätt att komma igång med, det går snabbt att skapa intressanta program och framför allt för att det finns bra dokumentation.

Det jag använt Python till under våren:

  • Info-Rip: Ett program jag satte ihop till jobbet för att enkelt slita ut valda variabler och kommentarer från header-filer för att vår testare ska kunna ha något att gå efter när han använder sin testprogramvara för att analysera programet som körs i vår hårdvara.
  • Bunny Comic Downloader: Ett program som laddar ner den senaste Bunny-serien och integrerar den med min bakgrundsbild. Det här programmet använder wget för att ladda ner bilder från nätet och Python Image Library för att integrera den nedladdade bilden med min bakgrund. (jag ska ladda upp det här programmet när jag snyggat till det så jag vågar visa det)
  • Screenshooter: Ännu ett program för jobbet. Ett program som använder pySerial för att ladda upp en skärmdump från vårt display-kort och spara det som en bild (Python Imaging Library är gruvligt praktiskt). Till det här programmet skrev jag även ett litet GUI i TCL/Tk.
  • Fluxmarks: För att lära mig lite mer om Pythons reguljära uttryck skrev jag det här programmet som tolkar bookmarks-filer (Netscape v 1.0) från till exempel firefox och genererar en meny-fil som enkelt kan integreras i fluxbox huvudmeny-fil.
  • classTest: Ett litet program jag skrev för att lära mig hur man skriver en ny klass. Klassen jag skrev implementerar en enkel cirkulär buffert som kan initieras till en variabel storlek och innehåller kommandona read och write. Man kan inte direkt kalla den en komplett datatyp men den fyller sitt syfte.

Det jag tycker är mest positivt med Python är att det går fantastiskt snabbt att skriva ett program när man väl bestämt sig för hur det ska fungera. Det finns massor av bibliotek som gör livet enkelt för utvecklaren. Eftersom det går så snabbt att utveckla har python varit idealt att använda på jobbet för mindre pc-program som behövts för att underlätta mitt huvudarbete (programmering av inbyggda system).

Under de här månaderna har jag dock stött på patrull vid ett par tillfällen, inga större problem men ändå problem. Det första problem jag stötte på var att jag inte kan skriva mitt namn i kommentarerna eftersom Å är ett ogiltigt tecken, jag hade förstått ifall det var ogiltigt att använda i koden men som kommentar borde det väl få vara med tycker jag. Det här är inte ett problem utan en feature egentligen: Variabler skapas så fort de används vilket innebär att om jag sätter variabeln TestVar till ”Hej kom och hjälp mig!” och sedan skriver fel när jag kallar på variabeln print testVar får jag inget felmeddelande utan print skriver ut en tom sträng. Detta har lett till att jag (som är ganska slarvig av mig) har slitit mitt hår i frustration på jakt efter ett litet skrivfel.

För att sammanfatta det hela: Python är ett språk som är lätt att lära och som fungerar mycket bra till att skriva mindre applikationer. Det verkar även gå ypperligt att skriva större applikationer som synes av till exempel Deluge.

Fler python-experiment

januari 21, 2008

Efter ett litet uppehåll i mitt hobbykodande har jag nu i helgen färdigställt ett enkelt python-script/program vars funktion är att när jag loggar in på Woodstock (min kära PC) laddas senaste ”Bunny”-strippen ner och klistras in på min skrivbordsbakgrund. ett mycket enkelt program som använder ”wget” för att ladda ner filer från webben och sedan används ”Python Image Library” för att klistra ihop den nedladdade bilden med min bakgrundsbild. Ifall någon är intresserad av koden eller har några frågor om python (som jag eventuellt kan svara på) är det bara att skicka en kommentar. Ni får även kommentera ifall ni har en kommentar =)

Bakgrund generad av mitt Python-skript
Min bakgrund, jämför med dagens Bunny.

Jag börjar känna mig ganska bekväm med pythons syntax och känner att det snart är dags att försöka fördjupa mina kunskaper lite mer. Jag tror mitt nästa projekt kommer att bli att implementera en enklare klass, kanske en länkad lista eller ett träd? Man kanske till och med ska plocka fram sin ”Datastrukturer och algoritmer”-bok och se om man kan göra en funktionskomplett datatyp?

Pythonsöndag

december 2, 2007

Även denna söndagen har jag suttit med Python, det börjar nog bli lite av en tradition nu. Idag har jag experimenterat med pythons reguljära uttrycks-bibliotek. Eftersom jag söker i text efter specifika ord och måste klippa och klistra en hel del passar dessa utmärkt att använda.

Jag har tidigare inte använt mig särskilt mycket av reguljära uttryck (förutom ett par awk one-liners) men det gick ganska snabbt att hitta de kommandon man behöver. Sedan hur dessa skulle användas krävdes det lite experimenterande för att utröna, lyckligtvis gör pythons kommandotolk det lätt att experimentera så jag behövde inte spendera allt för lång tid med detta. Så här ser mitt block för att plocka ihop informarion för variabler ut:

lineParts = re.split(”//Info:”, line)
lineParts[0] = re.sub(r”extern ”, ”, lineParts[0])
lineParts[0] = re.sub(r”;”, ”, lineParts[0])
targetFile.write(lineParts[0] + ”\t” + lineParts[1])

XKCD har givevis skrivit om reguljära uttryck…