måndag, februari 27, 2012

TSQL Challenge 76

Här är min lösning av TSQL pussel nummer 76 från Beyond Relational. Pusslet är tydligen inspirerat av Erland Sommarskogs problem från verkligheten. Erland har en väldigt trevlig sida med mycket matnyttig information om SQL Server.

;WITH base AS
(
  SELECT ROW_NUMBER() OVER (ORDER BY AccountNo, InstrumentID, TradeDatesOrder) [TransactionID]
  , ROW_NUMBER() OVER (PARTITION BY AccountNo, InstrumentID ORDER BY AccountNo, InstrumentID) [AccountInstrumentNo]
  , AccountNo, InstrumentID, Qty, TotalQty, TradeDatesOrder
  FROM TC76
)
, rec AS
(
  SELECT TransactionID, AccountInstrumentNo, AccountNo, InstrumentID
  , CASE WHEN TotalQty = 0 THEN CONVERT(BIT,1) ELSE CONVERT(BIT,0) END [NewBlock]
  , CONVERT(INT,1) [BlockNo]
  , CONVERT(INT,1) [RowNoInBlock]
  FROM base 
  WHERE [AccountInstrumentNo] = 1 AND Qty < 0

  UNION ALL

  SELECT b.TransactionID, b.AccountInstrumentNo, b.AccountNo, b.InstrumentID
  , CASE WHEN b.TotalQty = 0 Or b.AccountInstrumentNo = 1 THEN CONVERT(BIT,1) ELSE CONVERT(BIT,0) END [NewBlock]
  , CASE WHEN r.NewBlock = 1 THEN r.BlockNo + 1 ELSE r.BlockNo END [BlockNo]
  , CASE WHEN r.NewBlock = 1 THEN 1 ELSE r.RowNoInBlock + 1 END [RowNoInBlock]
  FROM rec r
  INNER JOIN base b ON r.AccountNo = b.AccountNo 
    AND r.InstrumentID = b.InstrumentID 
    AND r.AccountInstrumentNo + 1 = b.AccountInstrumentNo
)
SELECT b.AccountNo, b.InstrumentID, b.Qty, b.TotalQty, 
b.TradeDatesOrder, r.BlockNo, r.RowNoInBlock
FROM rec r
INNER JOIN base b ON r.TransactionID = b.TransactionID
ORDER BY b.AccountNo, b.InstrumentID, b.TradeDatesOrder

lördag, februari 25, 2012

Microsoft SQL Server 2012

Då var det dags igen! En ny version av den programvara som jag arbetar mest med är på väg att släppas, finns idag tillgängligt att ladda ner och testa som en s.k "release candidate" vilket innebär att allt är i princip klart och att man vill låta oss utvecklare provköra de nya funktionerna och hitta eventuella brister. Ett par nyheter i licensmodellen innebär att det nu är tänkt att bli enklare och billigare att jobba med en virtualiserad miljö vilket blir allt vanligare. Det finns ett par åsikter om det här med virtualisering och databaser som jag inte kommer att gå in närmare på nu. Vi är, oavsett vad det betyder för just DBMS, på väg mot en servermiljö där allt fler satsar på virtualisering för att kanske främst sänka kostnader.

För mig som utvecklare innebär den här nya versionen ett par större förändringar i utvecklingsmiljön som bl.a innebär; lättare att förbereda lyft mellan miljöer och hålla databaser i synk, möjlighet att arbeta offline utan kontakt med databasen (man validerar sina ändringar mot script och en lokal utvecklingsdatabas som liknar .NETs Cassini för webutveckling), en mer fungerande utvecklingsmiljö för SSIS. Listan är lång och gör mig riktigt glad. Det känns kul att få jobba med en produkt som ligger så långt fram och strävar vidare framåt.

Den nya versionen kommer att släppas den 7 mars 2012 i något så fräsigt som ett virtuellt event, läs mer om detta på www.sqlserverlaunch.com. En bra plats att lära sig mer om nyheterna i den nya versionen är Microsofts informationsportal.

fredag, februari 24, 2012

Ulf Bilting

En av de första böckerna jag minns som jag hade något direkt utbyte av och som var kopplade till IT skrevs av Jan Skansholm och Ulf Bilting. Boken hette "Vägen till C" och var en något som idag är väldigt ovanligt, en riktigt bra bok på svenska om programspråk. En av de största skillnaderna mellan svenska och de andra (amerikanska böcker) är att de svenska är betydligt mer kompakta och kärnfulla, ett stående skämt är att amerikanska författare får betalt per sida (vilket kanske faktiskt är sanning). Hursomhelst är boken mycket bra.

När jag läste mitt sista år vid KTH här i Stockholm passade jag på att läsa två kvällskurser, en i E-musik och en i designmönster. Den första kursen var intressant men mer lättsam medan den andra var extremt intressant och nyttig för mig som blivande programutvecklare. Det roliga var att det var Ulf som höll i båda kurserna! Nu i efterhand har jag förstått att han även var med att om att på Chalmers ansluta den första IP klienten till vad som senare skulle kallas Internet.

Jag kan inte hitta designmönsterkursen någonstans på nätet så jag gissar att den inte hålls längre, kanske Ulf valt att endast ägna sig åt musik?

tisdag, februari 21, 2012

CRON job to keep OpenWRT 3G connection alive

This is the CRON job that I use to keep the 3G connection on my OpenWRT setup alive. It is probably not the most correct way to accomplish this and I'm eager to hear suggestions on improvements from other users out there. Here goes:

#!/bin/sh
IFCONFIG="/sbin/ifconfig 3g-wan";

ISIT=`$IFCONFIG | grep "UP" | wc -l`;

if test $ISIT -gt 0; then
        if ! ping -q -c 1 -W 10 -I 3g-wan www.sunet.se > /dev/null; then
                #(ifdown wan; ifup wan) &
                /etc/init.d/network3g restart &
        fi
fi

And my crontab looks like this, runs the script every five minutes:

*/5 * * * * /bin/tester.sh

Rut målar

Trots att vädret är dåligt och att det är mörkt ute kan tiden ändå inte stå stilla. Rut gillar att måla så det gör vi ganska ofta. Jag hoppas att hon fortsätter när hon blir äldre. Idag hade vi besök av vår coach i Early Stop studien och pratade sömn, mat och aktiviteter.