1. Stäng efter dig när du går

    Java är ett snällt språk som tar hand om skräpsamling för oss. Vi behöver inte tänka på att avallokera minnet efter vi använt det.. jättesmidigt! Dock verkar det som att denna automatiska skräpuppsamling har gjort oss lata och glömmer bort att vi faktiskt måste städa upp efter oss ibland!

    Strömmar av alla olika slag är nämligen väldigt viktiga att stänga. Framförallt strömmar till filer är viktiga, eftersom en öppen ström mot en fil tar upp systemresurser. Om man inte stänger filströmmarna efter sig, kommer ditt Java-program äta upp systemresurser tills minnet tar slut, eller tills operativsystemet sätter stopp för att du har öppnat för många filer (känns felmeddelandet ”Too many open files” igen?). Om du kör ditt program på en Linuxmaskin räknas både filer och TCP-anslutningar som filkopplingar. Detta gör att om du öppnar för många filer på disk, så kommer det heller inte att gå att öppna nya sockets.

    Det finns många sätt att stänga sin ström på, men vad är då det mest korrekta sättet?
    (Läs mer…)

  2. Google Chrome OS på gång

    Googles operativsystem som skall släppas i slutet av 2010 med fokus på prestanda, enkelhet och säkerhet.
    Som ett väldigt enkelt operativsystem, skall det främst användas på netbooks och andra mindre bärbara enheter med bra prestanda även på datorer med lägre processorkraft.
    Visionen är att det ska gå lika snabbt att starta upp som en tv-apparat.
    Som bilden nedan till höger visar, jämfört med den vanliga OS till vänster, tar man bort några (Läs mer…)

  3. Nya vassa utvecklarmaskiner

    Då fick äntligen våra nya vassa utvecklarmaskiner från Apple.

    Mac Pro med 2st 4 kärnors Xeon (Inte nån iMac) med 10 GB i RAM och 2 diskar med hårdvaruraid.
    Riktigt grym prestanda.

    Fast givetvis var maskinen rätt uppsatt från början utan 1 av minnesmodulerna satt fel så systemet kom åt ”bara” 8GB.
    Sen så var inte raiden uppsatt som jag (Läs mer…)

  4. VMGL – 3D acceleration för virtuella maskiner

    Ett väldigt spännande projekt jag råkade snubbla över kallas För VMGL. Detta är ett OpenGL tillägg till virtuella maskiner, vilket gör det möjligt att använda hårdvaruacceleration med våra virtuella grafikkort. Jag hörde själv om möjligheten för några år sedan genom en bekant från BTH men nu verkar det hända lite också. Själv vill jag använda möjligheten att köra windows spel i linux, men det finns många applikationer idag som kan använda OpenGL ytor för sin rendering. Testa gärna det hela och posta era kommentarer!

    Här kommer en länk till projektet:

    http://www.cs.toronto.edu/~andreslc/xen-gl/

  5. REST: UNIXtankar för webben

    Jag läser en bok som handlar om REST och under tiden jag läser så kommer jag på att jag känner igen de här tankarna från något annat, nämligen UNIX. (Läs mer…)

  6. Bättre stöd för java i kommandoradsfönster

    Om du kör Bash som kommandoskal i tex: Cygwin (windows) eller Linux så kan du aktivera bash-completion som fungerar ungefär som code-completion i kodeditorer fast i kommandoradsfönster. (Läs mer…)

  7. Portabelt filsystem för bärbara hårddiskar

    De allra flesta av oss idag har åtminstone ett USB-minne som vi emellanåt använder när vi vill flytta filer från en dator till en annan och inte kan (eller har tid) att sätta upp ett nätverk mellan dem. Email är oftast begränsat till ett par MB och att använda nån form av fildelning är oftast ganska omständigt (du vill ju bara dela filen med den som ska ta emot den, inte alla på hela Internet). CD/DVD-skivor är för stora och varje skiva kan bara skrivas en gång (nej, jag räknar inte med R/W skivor). Det blir alltså att man använder sig av ett USB-minne, eller för riktigt stora filer, en portabel hårddisk (oftast också ansluten via USB). Detta fungerar oftast rätt bra, men på senare tid så har jag kommit fram till att det hela har vissa brister.

    På de USB-minnen och portabla hårddiskar vi använder idag så har man använt sig av FAT-32 som filsystem. Detta filsystem har en ganska allvarlig begränsing, nämligen att varje fil kan vara max 4 GB (vilket beror på att det är 32-bitars addressing). Det är alltså inte möjligt att flytta, t.ex., en DVD-image från en dator till en annan via ett USB-minne. Det finns en del andra begränsningar i FAT-32 (så som att max storlek på en partition kan vara 8 TB), men dessa är mindre allvarliga. Filsystemet är dessutom oerhört mycket långsammare än andra, mer moderna, filsystem. Dessa begränsningar gör att FAT-32 allt mer ofta kommer begränsa hur vi kan flytta filer mellan datorer.

    NTFS har inte dessa begränsningar, och är dessutom mycket snabbare än FAT-32. Hade alla använt Windows på alla sina datorer så hade detta inte varit något problem, men fler och fler kör idag på alternativa OS, såsom Mac OSX, Linux, FreeBSD och nu på senare tid även Solaris. Linux (och andra UNIX OS) har länge haft (beta) drivrutiner som låter dig läsa NTFS-partitioner, men det är till föga hjälp om du vill kunna flytta en fil från en Linux-maskin. Det omvända problemet finns på Windows; program finns som låter dig läsa både från ext2/3 och reiserFS, men att skriva är fortfarande inte helt stabilt. Jag har sett en del projekt där man börjat utveckla drivrutiner för att kunna montera en reiserFS eller ext2/3 med hjälp av IFS (Installable Filesystem Kit, ett SDK till Windows för att lägga till stöd för nya filsystem), men ingen av dem har kommit särskilt långt. Kort sagt, vi har varit begränsade till att använda FAT-32 för att kunna dela filer via portabla medier mellan olika operativsystem.

    Jag ska inom kort installera om mina laptop och köra Linux (eller Solaris) på den. Detta problem blev då återigen aktuellt för mig, eftersom jag vill kunna jobba med mina kollegor på ett så effektivt vis som möjligt. Så jag började söka igen efter lösningar för ett portabelt filsystem. Tydligen är detta ett område som ingen tänkt på, för en sökning på Google ger ett ganska dåligt resultat. Det man hittar är portable APIer, och det löser ju ingenting för mig. Jag vill kunna jobba mot min portabla 160 GB disk både från Windows och Linux, utan att behöva installera någon specialapplikation (kort sagt, jag ska kunna läsa och skriva filer via utforskaren i Windows och motsvarande i Linux). Det såg rätt mörkt ut för min migrering till ett bättre OS helt enkelt.

    Det var då jag snubblade över NTFS-3G. Efter 12 års utveckling så verkar det nu som att det finns stabila drivrutiner för Linux, FreeBSD, NetBSD, Mac OSX och Haiku som låter dig både läsa och skriva till NTFS-partitioner. För min egen del så löser detta alla mina problem, även om jag hade varit mer glad över stöd för ett öppet filsystem (t.ex. reiserFS) till Windows. NTFS-3G har dessutom funnits ute ett bra tag, mer än ett år faktiskt. De anses så pass stabila att de följer med de flesta större Linux-distributioner, så de flesta Linux-användare borde alltså ha detta redan. Dock verkar det vara lite problem för Mac-användare då Mac OSX redan har en NTFS-drivrutin som är inställd på read-only som standard. Ok, två steg fram och ett tilbaka för ett portabelt filsystem alltså.

    Även om NTFS-3G löser mina problem (blir nog en trevlig Ubuntu-installation nästa helg efter att jag varit på JavaZone), så kvarstår problemen med portabelt filsystem. NTFS ägs och hanteras helt av Microsoft, och mig veterligen så har de inga planer på att släppa det öppet. Alla UNIX-filsystem är begränsade till just dessa operativsystem och det ser inte ut som om vi kommer ha några stabila drivrutiner för Windows snart. Är det bara jag som ser detta som ett problem?!? Jag, som konsument, tycker att branchen borde ta ett initiativ till ett filsystem som är anpassat till portabla medier (USB-minnen, portabla hårddiskar, minneskort till telefoner osv.). Det behöver inte vara så värst avancerat. Strunta i allt vad filrättigheter och säkerhet heter, det är ändå helt irrelevant i dessa fall (om jag stoppar in ett USB-minne i datorn så ska jag väl också kunna få skriva till det?!?). Här är min önskelista för ett portabelt filsystem:

    - Obegränsad storlek på filer OCH partitioner (ok, det finns vissa teoretiska gränser, men det finns inte så stora diskar idag i vilket fall).
    - Inga finesser som äganderättigheter, säkerhet och annat. Sitter USB-minnet i datorn så ska ALLA som har access till maskinen få skriva och läsa.
    - Drivrutiner till filsystemet ska följa med vid nästa uppgradering/service pack för alla större operativsystem.
    - Fullständigt öppen specifikation som kräver att man följer den utan avvikelser ifall man vill kunna påstå att man stödjer det (ungefär som 802.11-standarderna)
    - Man ska kunna ställa in saker som block-storlek och dylikt för att kunna anpassa varje partition för just den typ av filer som kommer ligga där. Har du en disk du har MP3or på så vill du ha mindre block, har du stora filmer så vill du ha större, o.s.v.

    Sådär, det var väl ungefär allt. Microsoft, Sun och Apple; kan ni ha det här klart till på fredag nästa vecka då jag ska installera om min laptop? :-)