View RSS Feed

dooz

Resourcebundlande

Rate this Entry
I helgen så bestämde jag mig för att ta tag i en grej som jag skjutit på framtiden en del, nämligen hur jag har tänkt packetera all data jag behöver, så att jag i slutändan kan distribuera något i stil med en .exe-fil och en .dat-fil.

Jag hade förberett lite, såtillvida att all min filhantering gick via en ResourceManagers loadfile-metod, och det slog mig att jag kunde göra som vi gjorde på Xbox:en way back in the day när vi ville lägga ut filerna på DVD:n för att minimera söktider, nämligen att helt enkelt logga alla filläsningar (här räcker det med filnamn), och sen bygga ihop en .dat-fil utifrån detta.

Det funkade nästan out-of-the-box, med en liten ändring. Jag hade nämligen lagt till så att ResourceManagern letade efter filer på lite olika ställen när man bad den ladda något (det är rätt smidigt att kunna spara binärdata på DropBox eller SkyDrive, och dom mapparna finns på olika ställen på olika datorer), så jag fick spara undan både vilken fil man ville ladda, och även vilken fil som faktiskt laddades (för det var den som skulle ner i .dat-filen).

Sagt och gjort, så började jag hacka ihop ett skript som läste min logfil och byggde min .dat-fil. När jag funderade på hur jag ville att mina headers och sånt skulle se ut, så insåg jag att jag äntligen hade möjlighet att använda en av mina favvo-datastrukturer, nämligen den perfekta (minimala) hashtabellen.

(En perfekt minimal hashtabell är en hashtabell som är byggd så den har inga kollisioner, och är precis lika stor som key-rymden. En förutsättning för att det ska funka är att man känner till alla keys i förväg, men det gör jag i det här fallet. Det fina med den, förutom prestandan, är att jag behöver inte spara undan nycklarna nånstans, så varje entry (filnamn) består (i den här implementationen) av bara 2 intar).

Jag passade även på att slänga på komprimering via LZ4 (ett härligt open-source lib, som består av 1 .h och 1 .c fil), och ett par timmar senare så hade jag löst alla mina packeteringsbekymmer

Submit "Resourcebundlande" to Digg Submit "Resourcebundlande" to del.icio.us Submit "Resourcebundlande" to StumbleUpon Submit "Resourcebundlande" to Google

Taggar: Ingen Lägg till/redigera taggar
Kategorier
Uncategorized

Comments