Basic personligt

Daniel Brahneborgs blogg

Chassibyte

Efter ett litet missöde för några veckor sedan så vägrade servern boota. Jag lyckades få liv i den igen genom att koppla hårddiskarna till en annan dator, men på det hela taget så blev det inte så vackert.

Server med nettis chassi

Efter att ha köpt en antistatmatta så var det då idag dags att flytta över allting till det chassi där servern hör hemma. Det har rejält med plats för hårddiskar, ett bra nätaggregat, lufthål överallt, plats för massor med fläktar, och är allmänt bättre. Jag rensade lite bland kablarna, så nu ser det lite vettigt ut igen. Ja, det är helt tomt uppe till vänster eftersom jag inte har några dvd-spelare eller dylikt. Jag skulle dessutom gärna vilja ha plats för en stor fläkt mellan de två staplarna med hårddiskar, men det verkar fungera bra ändå.

nytt-chassi

När jag kommer på en bättre affärsidé och får in massor med nya pengar, så ska jag köpa ett nytt moderkort som inte är ett par år gammalt, lite nya hårddiskar och så, men det här får duga ett tag till.

Läs även andra bloggares åsikter om datorer, teknik.

August 30th, 2009 Posted by Daniel Brahneborg | blogg | 4 comments

Radiotjänst måste bort

I fredags när jag var på väg från jobbet ringde det i min telefon, varvid ungefär följande dialog utspelade sig.

Hon: Hej, jag ringer från Radiotjänst. Vi ser att du har skaffat ny adress.

Jag: Ja, det stämmer.

Hon: Men du har ingen TV-licens där? Har du flyttat ihop med någon annan som har det?

Jag: Nej, men jag har ingen TV längre.

Här vill jag även inflika att jag för knappt två månader sedan ringde just Radiotjänst och sa upp min TV-licens. Så dels borde de redan veta att jag inte har för avsikt att ge dem några pengar, och dels förstår jag inte vad en flytt har med TV-innehav att göra. Är det något som man får automatiskt i en ny lägenhet, som kyl och spis?

Sedan kom frågan som gjorde mig lätt irriterad.

Hon: Jaha, vad har du gjort av den?

Ursäkta? Hade hon förväntat sig att jag skulle ge personnummer till en eventuell köpare, intyg från notarius publicus att den var skrotad, eller vad? Där någonstans började det kännas som ett polisförhör, så hon fick ett ganska kort svar.

Jag: Det tycker jag inte att du har med att göra.

Det var ganska mycket ljud från gatan, så jag är inte säker på att hon hörde vad jag sa. Strax därefter bröts linjen, förmodligen eftersom hon gav upp. Jag hoppas verkligen att hon inte ringer igen.

Är det inte dags att lägga ner Radiotjänst nu och finansiera SVT via skatten istället? De är ju ändå inte speciellt opartiska när det gäller politik.

Läs även andra bloggares åsikter om ekonomi, tv, radiotjänst.

August 30th, 2009 Posted by Daniel Brahneborg | blogg | 5 comments

Connection Pool

På jobbet hamnade jag i en situation som skulle kunna göra att våra stackars kunder skulle få tusentals samtidiga uppkopplingar till sin MySQL-databas. Tio kanske är ok, i bästa fall hundra, men därefter tror jag inte att databasen blir så glad längre. Alltså behövdes en “connection pool”,  så att det bara behövdes så många uppkopplingar som faktiskt användes samtidigt. Om det behövdes för många uppkopplingar, fick de trådarna helt enkelt ställa sig på kö. Så långt var det det ju inget konstigt.

Tyvärr är vår applikation skriven i C, så alla färdiga paket för sådant här, som nästan alltid är skrivna i Java, går inte att använda. Istället för att ägna halva dagen åt att leta upp något existerande som gick att använda från C, bedöma om licensen gjorde det användbart, fundera över prislappen, anpassa till vår produkt osv, så satte vi oss ner och skissade på en egen implementation.

Först behövs en struct för poolen.

  • int size // antalet skapade resurser (uppkopplingar)
  • int maxsize // det maximala antalet tillåtna resurser, typiskt 10 eller så
  • lock // lås, så att inte flera trådar försöker komma åt poolen samtidigt
  • list available // lediga resurser
  • list waiting // lås för trådar som väntar på en ledig resurs
  • creator // funktion som skapar en ny resurs

Sedan behövs två små algoritmer. Först den för att hämta en resurs ur poolen.

  1. Lås pool.lock.
  2. Om det finns något i available-listan:
    1. Plocka ut första objektet i available-listan.
  3. Annars, om size < maxsize, dvs vi kan skapa fler resurser:
    1. Anropa creator-funktionen, och låt det objektet bli det som ska returneras.
    2. Räkna upp size.
  4. Annars:
    1. Hämta trådens lås från treadlocal.
    2. Lås trådens lås, och lägg det sist i waiting-listan.
  5. Lås upp pool.lock.
  6. Om vi ska vänta:
    1. Lås trådens lås igen, vilket gör att tråden hänger.
    2. När låset släpps, börja om från början.
  7. Returnera resursen.

Det behövs självklart också en liten algoritm för att lämna tillbaka resursen när den inte längre behövs.

  1. Lås pool.lock.
  2. Lägg tillbaka resursen i available-listan.
  3. Om waiting-listan inte är tom:
    1. Plocka ut första låset ur waiting-listan, och lås upp det.
  4. Lås upp pool.lock.

Om det finns lediga objekt krävs därför bara ett lås, annars två. Eftersom man plockar ut låsen ur en ordnad lista, är den helt rättvis. Det sker ingen busywait. Det skulle enkelt gå att öka maxsize i ett körande system, och med ett litet tillägg vid återlämnandet kan maxsize även minskas. Själva implementationen, inklusive några justeringar av algoritmen, var klar strax efter lunch.

Läs även andra bloggares åsikter om datorer, programmering, teknik, databas, mysql, connection pool.

August 26th, 2009 Posted by Daniel Brahneborg | blogg | no comments

Äntligen tillbaka

Satan i gatan, det där tog tid!

Det är nästan tre veckor sedan RSS/Ping-servern hamnade i koma, och först idag lyckades jag få liv i den igen. Diskarna sitter i “fel” chassi, så någon gång inom en snar framtid måste jag plocka ner allting igen och flytta över moderkort och diskar till rätt chassi. Jag måste skaffa en ny antistatmatta först, bara. *host*

Läs även andra bloggares åsikter om datorer, teknik.

August 22nd, 2009 Posted by Daniel Brahneborg | blogg | 3 comments

Burgare utan bea

Vi var några stycken som käkade på en krog i Linköping i fredags, i likhet med tämligen många andra. Det beställdes hamburgare, citronkyckling respektive någon sallad med massa skaldjur.

Till citronkycklingen skulle man få något klägg med mynta, och soltorkade tomater. Tomaterna var dock ersatta med vanliga körsbärstomater, vilket var lite trist. Dessutom var bean till hamburgaren utbytt mot samma myntaklägg, vilket skar sig totalt. Jag frågade servitören vad som hade hänt, varvid han sa att bean tydligen var slut. Jag skickade tillbaka honom till köket, så kom han ut med en lista på andra alternativ. Det roligaste de hade var senapssås, men eftersom jag inte gillar senap så struntade jag i det. DÅ erbjöd han att ta dit en ny varmrätt. Ja, jättekul att få ut sin mat lagom till att alla andra har ätit klart.

Alltså, jag förstår också att saker och ting kan ta slut. Hade de sagt det med en gång, så kanske jag hade haft fler saker att välja på. Jag hade också kunnat välja en annan rätt, där de kanske hade kvar samtliga ingredienser. Inget problem.

Men att på det där sättet bara mörka och låtsas som ingenting, gör mig bara irriterad. Speciellt när maten var långt ifrån gratis.

Som kompensation erbjöd servitören att jag skulle få en gratis kaffe. Ytterst vänligt, för det skulle bergis kosta dem en hel krona i direkta kostnader. Jag tog inget kaffe, men istället hade de glömt att sätta upp de två öl och två rosévin som vi beställde medan vi väntade på bordet. Det räckte ju faktiskt som tröst, även om jag inte kommer återvända till den krogen igen.

Kopierat från en Facebook-notering, från när servern var offline.

Läs även andra bloggares åsikter om mat, linköping.

August 9th, 2009 Posted by Daniel Brahneborg | blogg | no comments

Saker som suger

Just nu är det inte mycket på den tekniska fronten som fungerar som jag vill.

Mitt komsystem till hojen fungerar inte med gps’en i mobilen. Alternativ 1 är en separat gps för 6000 spänn, alternativ 2 ett annat komsystem för närmare 5000. Kul. Återstår att se om jag kan få tillbaka pengarna för det gamla, om jag nu väljer en sådan lösning. Det är miljarder gånger roligare att åka hoj med passagerare om man kan prata med varandra under tiden.

Nallen går inte att använda som modem till datorn, om man inte använder en sladd som jag inte vet var den ligger.

Databasen på RSS/Ping-servern, som även kör min blogg, klagade på något korrupt entry. Nu startar inte datorn alls. Hårddiskarna är dock ok, och kan förhoppningsvis flyttas lite diskret, men jag vet inte när den kan vara uppe igen.

USB-hårddisken går inte att använda från min Linuxdator.

Linuxdatorn fungerar inte i grafiskt läge, och i textläge får jag inte liv i nätverkskortet.

Ett lösenord som jag har glömt bort, ligger i en fil på servern som inte startar.

Å andra sidan är jag fullt frisk, det schysst väder, och jag kan ta min älskling på små hojturer. Sådant kompenserar ju lite grand.

Kopierat från en Facebook-notering, från när servern var offline.

Läs även andra bloggares åsikter om datorer, teknik, internet, mc.

August 5th, 2009 Posted by Daniel Brahneborg | blogg | no comments

|