Som jag har nämnt förut så håller jag på att lära en applikation att använda c-tree, för att kunna lagra saker på disk med lite bättre prestanda. Eftersom de saker vi lagrar kan ha väldigt olika storlek, delas de upp i två delar. Den första delen innehåller de fält som är gemensamma för samtliga poster, t.ex. dess identifierare, namnet på användaren som skickade det, och lite annat. Den andra delen innehåller de 150+ fält där nästan alla är tomma. Det data ligger helt enkelt i en lång lista, ungefär så här:
fältnummer – typ – längd – data – fältnummer – typ – längd – data – …
Om alla fält är tomma blir listan tom, men vid behov kan den växa hur mycket som helst. Med c-tree är det ganska lätt att hantera det här, för man säger först hur stor den fasta delen är, och för varje post som man vill spara så säger man hur lång den dynamiska delen är. Samma sak när man ska läsa upp en post, då är det lätt att fråga hur stor den aktuella posten är, så man hämtar precis lagom mycket data.
I C-structen så brukar jag skriva det så här:
typedef struct {
/* först de vanliga fälten */
int id;
/* sedan specialaren: */
char optional[0];
} dynstruct_t;
För att skapa en sådan här struct bygger jag då först upp listan med specialfält, och sedan allokerar jag minne så här:
dynstruct_t* obj = calloc(1, sizeof(*obj) + dynamic_length);
memcpy(obj->optional, dynamic_list, dynamic_length);
Det har funkat bra i alla år jag har behövt den här typen av strukturer.
Ända tills nu, då jag skulle köra programmet i Solaris. Automattesterna gick fel hela tiden, det dök upp data som inte existerade, och data försvann. Jag la till lite mer loggning, och upptäckte till slut vad felet berodde på.
Konstruktionen ovan kräver att “optional” ligger precis utanför den storlek som ges av sizeof(). Av något outgrundligt skäl så gjorde det inte det på den här burken, utan trots att arrayen var tom så tog den ändå upp 4 bytes. En aning onödigt, kan man tycka.
Så, jag tog bort optional-fältet, och använde “(char*)(obj + 1)” istället, vilket per definition är samma sak som “(char*)obj + sizeof(*obj)” (fast lite kortare), och precis det jag behövde. Då blev det lite mer enhetligt och lättare att hantera, även om det eventuellt försvinner några bytes i onödan på grund av alignment-strul.
Därefter gick testerna igenom igen. Det är inte riktigt lika snyggt eftersom det är lite svårare för debuggers som Valgrind och Purify att förstå, men det fungerar åtmistone. Kod som inte fungerar kan vara hur snygg den vill.
Ja, jag hade kunnat använda optional-fältet överallt och tagit bort alla sizeof() istället, men det hade antingen krävt offsetof() som jag inte tror finns överallt, eller en massa strulig pekararitmetik och metervis med castningar kors och tvärs. Lite tajtare, men med mycket större risk för misstag. Återigen är det bättre med kod som fungerar.
Andra bloggar intressant om: datorer, programmering.
July 30th, 2008
Posted by
Daniel Brahneborg |
Uncategorized |
no comments
Jag såg via Linda att Jennifer Aniston och Brad Pitt tydligen inte är ihop längre. Där ser man. Tre år hit eller dit.
Det är tur att det finns riktiga journalister som kan skriva om sådana här viktiga och intressanta saker, till skillnad från alla dumma bloggare som bara avslöjar läckor hos myndigheter, myndigheter som bryter mot grundlagen, och annat tramsigt.
Bläddrar man bland bilderna så ser man sedan det här:

Det är skönt att riktiga journalister lägger tid på research och sånt, så att de kan publicera riktiga fakta. Det är en duktig yrkeskår, verkligen.
Andra bloggar om: jennifer aniston, brad pitt.
July 30th, 2008
Posted by
Daniel Brahneborg |
Uncategorized |
no comments
Efter att ha gjort bort sig ganska ordentligt igår i DN försöker Lisa Bjurwald sedan ursäkta sig lite grand i Medievärlden. Det går… tja… inte så himla bra.
Nej, det är bara delar av bloggvärlden jag vill kritisera, inte den halv miljon bloggar som finns.
Så det är inte bloggarna hon vill kritisera, utan bara delar av bloggvärlden? Tänk så tydligt man uttrycka sig när man är journalist. Jag är enormt avundsjuk. Tänk om man kunde skriva så bra.
Det är som FRA som inte ska spana på individer utan bara på personer, eller om det var tvärtom. Om Lisa gör irrelevanta kopplingar till FRA så får väl jag också göra det?
Men det är bra att visa på de lite fulare delarna av bloggvärlden. Inte tysta ner dem, men uppmärksamma dem.
Ett sätt att faktiskt göra detta vore ju kanske att tala om vilka delar av bloggvärlden det rör sig om. Nu ska vi alltså vara uppmärksammade på att det finns någon som har en åsikt som skiljer sig från Lisas. Tack, det var ju väldigt upplysande. Det måste ha kostat många timmars research.
Med tanke på hur mycket hela DN verkar hata bloggar och fri diskussion så skulle det annars vara mer passande att visa att de vet att det finns massor med guldkorn i bloggvärlden också. Vi vet att ni hatar oss, det är inte en nyhet. Visa att det finns saker ni gillar istället.
De kan ju vara före oss rent tekniskt i och med att de kan publicera sig direkt, vi har ju vår deadline nu om en kvart för morgondagens ledare.
Vi är före “rent tekniskt”? Vilka andra sätt finns det? DN publicerar sina artiklar före oss “mentalt”? “Egentligen“? Hon kanske ska prya lite på de andra tidningarna på nätet, som både har resurser och kompetens att publicera nyheter direkt och inte först nästa dag.
Sen är det tråkigt om vanliga bloggar blir ledsna, men det är ju inte dem jag menar. Någon som bloggar om sitt bröllop eller liknande.
Det är ju ytterst vänligt att vi vanliga dödliga får skriva om sådana saker, men vi ska tydligen lämna viktiga ämnen som politik åt “proffsen”. För att ta FRA som exempel så såg vi ju hur bra det gick. Trots att meddelarskyddet var på väg att ryka all världens väg så var det inte en enda tidning som brydde sig.
Det kanske helt enkelt känns jobbigt att inse att man är omsprungen?
Framför allt tycker jag att det är tråkigt men väntat, att fokus hamnar på min släng åt bloggosfären – inte det faktum att bloggare hoppar på en ung tjej som utsatts för ett sexuellt övergrepp.
Öh, kallar man tiotusentals personer för “särskrivande specialklass som är den svenska bloggsörjan” så finns det ju viss risk att en och annan av dem blir lite irriterade.
Själv vill jag inte gå så långt att säga att Blondinbella får skylla sig själv, men det är inte långt ifrån. När man får så många varningssignaler som hon faktiskt fick, så måste någonstans ens självbevarelsedrift få någonting att säga till om. Världen är inte snäll, och det finns gott om idioter. Nej, de har inte rätt att göra övergrepp, men det är bara dumt att utsätta sig för risken att provocera någon som är på dåligt humör. Att personen kanske hamnar i fängelse efteråt för att det var du som offer som “hade rätt” hjälper liksom inte när du ligger på gatan och är våldtagen eller mördad.
Det är precis samma sak när man är ute i trafiken. Folk som inte tittar sig för utan bestämt hävdar sin rätt att åka först pga högerregler eller annat, lever självklart farligare än de som släpper fram fordon där föraren kanske har missat ett trafikmärke eller två. Det handlar om att skydda sig själv, även om det innebär att man får släppa på det som är ens rätt. Speciellt i andra länder eller kulturer, där det kan finnas en massa sociala signaler som man riskerar att missa.
Jag tänker inte peka ut några bloggar, men det finns absolut grumliga strömningar av kvinnoförakt i bloggosfären.
Jag tänker inte peka ut några journalister, men det finns absolut grumliga strömningar av medborgarförakt i gammelmediasfären.
Jag har koll på ett 20-tal bloggar dagligen.
Wow, jag är jätteimponerad. Det måste verkligen ge en total koll på vad som rör sig på nätet. Min egen RSS-lista ligger på drygt 100 bloggar, och den känns ovanligt liten. Det är massor med kul saker jag inte ser förrän flera dagar senare, när någon av “mina” bloggar skriver om det. Fast det är jobbigt att åka på semester.
Återigen vore det kul med några exempel. Vilka är de där bloggarna som faktiskt är läsvärda? Eller är det bara bröllopsbloggar hon läser?
Nej, just det, till att börja med så var det “sällan” hon traskade runt bland bloggarna, och hon blev “alltid” negativt överraskad. Snälla Lisa, varför fortsätter du då läsa de där 20 bloggarna, om du mår så dåligt av det?
Jag kan tycka att de har kommit lite längre utomlands, …
Själv kan jag tycka att de har kommit lite längre på ungefär samtliga tidningsredaktioner utanför DN, i att förstå vad internet är, och hur det fungerar.
Men fine, Lisa kan få förakta både internet, bloggar och allmänt intelligenta, duktiga och kreativa människor som skriver om saker de kan bättre än vilken journalist som helst. Det är hennes fulla rätt. Men då tar jag och flera andra oss rätten att skicka samma känslor tillbaka. Det är vår rätt.
Andra bloggar intressant om: blogg, Politik, fra, bloggosfären, moral, säkerhet, blondinbella, lisa bjurwald.
July 30th, 2008
Posted by
Daniel Brahneborg |
Uncategorized |
7 comments