RSS
 

Archive for maj, 2009

Marit Paulsen – vilken jävla sopa!

26 Maj

I år har politikerna börjat med små reklam filmer inför EU parlamentsvalet. Min personliga favoritfilm just nu är Marit Paulsens film – ”En röst för fred”. Där Marit, född 1939, brer på om att hon ”tillhör den sista årskullen som upplevt krig, terror och förintelse”. Inte för att vara nedlåtande om hennes eventuella minnen från andra världskriget, hon bodde faktiskt i det då okuperade Norge, men kriget var slut 1945 då hon var 6år. Hur mycket kommer man själv ihåg från man var 6år? Inte mycket!

Sen har ju generationerna efter henne upplevt en hel del! Kriget på balkan är det ganska många av Sveriges medborgare som både blivit drabbade av och hjälpt till att ställa till med. Terror har vi ju upplevt på två fronter den senaste tiden. Dels terrorhotet från skäggiga grottmäniskor samt statlig terror i form av Ipred, FRA lagar och den alltid lika pågående Israeliska statsterrorismen mot palestinierna. Förintelse är väl det som hon kan komma med men det blev ju först kännt efter kriget. Så det känns som Marit har trampat rätt bra i klaveret här faktiskt! Se själva!

 
 

IPRange beräkning

24 Maj

Har senaste tiden skrivit en del kod som är tänkt att processa information från flera nätverksnoder. Därför behövde jag ett bra sätt att få fram alla ipadresser mellan en given start- och slut-adress. Kollade runt på nätet och hittade inte mycket om det så jag satte mig ner och testade följande:

long

startIP = (long)(uint)IPAddress.HostToNetworkOrder((int)IPAddress.Pars(tbStartIP.Text).Address);
long endIP = (long)(uint)IPAddress.HostToNetworkOrder((int)IPAddress

.Parse(tbEndIP.Text).Address);

ArrayList ipaddresses = new ArrayList

();

for (long i = startIP; i <= endIP; i++) { ipaddresses.Add(CalcIPAddressFromIPNumber(i)); }

private string CalcIPAddressFromIPNumber(long ipnumber)
{
string retval;
long w = (ipnumber / 16777216) % 256;
long x = (ipnumber / 65536) % 256;
long y = (ipnumber / 256) % 256;
long z = (ipnumber) % 256;
retval =
string.Format(”{0}.{1}.{2}.{3}”, new string[] { w.ToString(), x.ToString(), y.ToString(), z.ToString() });

return retval;
}

Det funkade helt perfekt dock är det väldigt mycket boxning och parsning vilket kan resultera i mycket overhead. I detta exempel, som rent kodfiness mässigt är bland det snyggare av de olika varianterna, används ju division av heltal i stor utsträckning vilket är enkelt för processorn att hantera.

Nästa exempel ser ut som följer:

long startIP = (long)(uint)IPAddress.HostToNetworkOrder((int)IPAddress.Pars(tbStartIP.Text).Address);
long endIP = (long)(uint)IPAddress.HostToNetworkOrder((int)IPAddress.Parse(tbEndIP.Text).Address);

ArrayList ipaddresses = new ArrayList();

for (long i = startIP; i <= endIP; i++) { ipaddresses.Add(IPAddress.Parse(i.ToString()).ToString());
}

Här använder jag de redan färdigskrivna funktionerna, parsningar m.m som finns på IPAddress klassen i .Net. Har inte kört reflector och kollar men jag skulle misstänka att den i bakrunden gör något i still med mitt förra exempel när man ropar på parse. Denna kod är mindre snygg eftersom det är väldigt mycket string hantering fram och tillbaka vilket blir väldigt bluddrigt.

Sista exemplet, och även det som exikverar snabbast:

private ArrayList CalculateIPAddresses(string startIP, string endIP)
{
ArrayList retval = new ArrayList();

// Split ip addresses
string[] arrStartIP = startIP.Split(new string[] { ”.” }, StringSplitOptions.None);
string[] arrEndIP = endIP.Split(new string[] { ”.” }, StringSplitOptions.None);

// Get int values from ip
int StartIP1 = int.Parse(arrStartIP[0]);
int StartIP2 = int.Parse(arrStartIP[1]);
int StartIP3 = int.Parse(arrStartIP[2]);
int StartIP4 = int.Parse(arrStartIP[3]);
int EndIP1 = int.Parse(arrEndIP[0]);
int EndIP2 = int.Parse(arrEndIP[1]);
int EndIP3 = int.Parse(arrEndIP[2]);
int EndIP4 = int.Parse(arrEndIP[3]);

// Set calc values
int StartIP2Calc = 0;
int StartIP3Calc = 0;
int StartIP4Calc = 0;
int EndIP2Calc = 0;
int EndIP3Calc = 0;
int EndIP4Calc = 0;

// Start looping the first segment
for (int i = StartIP1; i <= EndIP1; i++) { // Calc values for next enumeration
if ((i > StartIP1) && (i <>// Middle of loop of first segment
StartIP2Calc = 0;
EndIP2Calc = 254;
}
else if ((i == StartIP1) && (i == EndIP1))
{
// Only one rotation of the first segment
// Set start and end point to actual values
StartIP2Calc = StartIP2;
EndIP2Calc = EndIP2;
}
else if (i == StartIP1)
{
// First rotation of the first segment
// start at starting ip of second segment
StartIP2Calc = StartIP2;
EndIP2Calc = 254;
}
else if (i == EndIP1)
{
// Last rotation of the first segment
// End at the last specified ip of second segment
StartIP2Calc = 0;
EndIP2Calc = EndIP2;
}

// Start looping
for (int j = StartIP2Calc; j <= EndIP2Calc; j++) { // Calc values for next enumeration
if ((j > StartIP2Calc) && (j <>// Middle of loop of this segment
StartIP3Calc = 0;
EndIP3Calc = 254;
}
else if ((j == StartIP2Calc) && (j == EndIP2Calc))
{
// Only one rotation of second segment
// Set start and end point to actual values
StartIP3Calc = StartIP3;
EndIP3Calc = EndIP3;
}
else if (j == StartIP2Calc)
{
// First rotation of the second segment
// Start at the starting ip of third segment
StartIP3Calc = StartIP3;
EndIP3Calc = 254;
}
else if ((j == EndIP2Calc) && (i==EndIP1))
{
// Last rotation of the first segment
// Last rotation of the second segment
// End at the last specified ip of third segment
StartIP3Calc = 0;
EndIP3Calc = EndIP3;
}

// Start loop of third segment
for (int k = StartIP3Calc; k <= EndIP3Calc; k++) { // Calc values for next enumeration
if ((k > StartIP3Calc) && (k <>{
// Middle of loop for the segment
StartIP4Calc = 1;
EndIP4Calc = 254;
}
else if ((k == StartIP3Calc) && (k == EndIP3Calc))
{
// Only rotation of third segment
// Set start and end point to actual values
StartIP4Calc = StartIP4;
EndIP4Calc = EndIP4;
}
else if (k == StartIP3Calc)
{
// First segment of the third segment
// Start at the starting ip of fourth segment
StartIP4Calc = StartIP4;
EndIP4Calc = 254;
}
else if ((k == EndIP3Calc) && (j==EndIP2Calc) && (i==EndIP1))
{
// Last segment of the third segment
// End at the last specified ip of the four segment
StartIP4Calc = 1;
EndIP4Calc = EndIP4;
}

// Start loop of fourth segment
for (int l = StartIP4Calc; l <= EndIP4Calc; l++) { // Add ip address to arraylist
retval.Add(string.Format(”{0}.{1}.{2}.{3}”, new string[] { i.ToString(), j.ToString()
,k.ToString(), l.ToString() }));
}
}
}
}
return retval;
}

Kodmässigt är denna variant riktigt vidrig! Dock är det den absolut snabbaste! Vid framräkning av alla adresser mellan 192.167.20.1 -> 192.168.10.1 så var den 0.2 sekunder. Inte direkt så mycket att det spelar någon större roll, men ändå! Troligen är det för att det ändast sker upräkning av ett siffer serie i taget istället för en massa parsning/divisioner varje interation. Om det är någon som kan beskriva detta i mer detalj så kommentera gärna.


 

Hur tänkte han här?

24 Maj

Man börjar ju undra vad det är för fel på folk när man ser sånt här. Någon filmade denna killen mellan Liseberg och Gårda i Göteborg när han helt sonika kör mot färdriktningen mitt i rusningstrafiken.

 
No Comments

Posted in Humor

 

AFA jobbar för staten?

23 Maj

Det är fan otroligt att dessa idioter får lyfta statlig lön som vi alla är med och betalar. Dömd för upplopp och stenkastning mot polisen men ändå enhetschef på förvaret i Kållered!?! Vad är det för jävla pajjasorganisation som inte kan rensa upp i leden. Den här typen av människor, dömda för denna typ av demokratiomstörtande brottslighet, skall ju fan inte vara anförtrodda med annat än en sopkvast.

http://www.gp.se/gp/jsp/Crosslink.jsp?d=113&a=496840

 

Spotify för Iphone

08 Maj

Spotify jobbar för fullt med en version för Iphone. Med tanke på att jag snart har installerat Iphone integration i bilen kommer det bli riktigt nice. Nedan är en liten film som visar beta versionen av Spotify i Iphone.

 

Star Trek

08 Maj

Var på smygpremiär av nya Start Trek filmen 00:01 imorse. Inte för att jag egentligen är någon inbiten trekker men får man chansen att gå gratis på en ny stor film före alla andra så varför inte. Min generation har väl fått sin bild av Star Trek från tv-serien ”Next Generation” vilket enligt många inte är det riktiga Star Trek. Sen har man även ”Starship Voyager” som var en nyare variant av ”Next Generation”. Den nya filmen var väl ännu ett steg från den ursprungliga Star Trek i riktning mot vanlig action med mycket specialeffekter och slagsmålsscener. Dock tycker jag att filmen var över förväntan, hade väntat mig ett större avsteg från konceptet för att nå en yngre mer actionsugen publik.

 

Tandläkare

07 Maj

Var hos tandläkaren imorse, för första gången på typ 2.5 år. Min kära mor har tjatat på mig länge och jag har vägrat. Jag har aldrig haft hål, har därför aldrig behövt uppleva smärtan som folk pratar om hos tandläkaren men ändå har jag så svårt för dem. Sadister i munskydd som stoppar in en halv verktygslåda i munnen på en och sen försöker konversera med en. Min allmänna ovilja mot tandläkare kanske beror på den förra jag hade. Han hade väl typ 4 sekunder kvar till pension om han inte bara hade lullat in på mottagningen och utgav sig för att vara tandläkare. När den mannen plockade tag i tandstenskroken gick han in för att dra ut så mycket av tandköttet han kom åt om det inte var kraniet han försökte dra ut ur käften på mig. Just det ljudet som uppstår när dem rispar på tänderna så det låter i hela huvudet får mig att rysa i hela kroppen. Men som tandläkaren sa att allt beror på saliv, antingen mycket tandsten eller hål. Känns som man dragit det långa stråt i vilket fall!

 
 

Page optimized by WP Minify WordPress Plugin