Författararkiv: Daniel Norman

Om Daniel Norman

Nej.

Dell unboxing

Som ni kanske vet så lanserade Dell nya servrar i mars i år, baserade på Xeon 5500-serien. Vi köpte in några R410 för utvärdering och expandering. R410 visade sig vara en mycket trevlig server med sina fyra 3.5-tums HD-slottar i 1U, något jag inte sett på Dells modeller tidigare. Servern har alla finesser man kan tänkas vilja ha för en lång rad serverroller. Denna laddning servrar har 2 x L5500 CPUs, 12GB minne, 2 x 300GB SAS-diskar i RAID1 på PERC6i-kort och dubbla nätagg.

En finess som kommer att spara en del fipplande på websites är Dells Lifecycle. Med detta verktyg kan man hoppa in i ett menysystem och patcha firmware för de olika serverkomponenter som finns i chassit. Patcharna tankas direkt från Dells FTP-site eller från USB-nyckel.

Fullbestyckade kan dom ha mer minne, lite större CPUs och fyra diskar. Fronten är helt i metall, något jag tidigare saknat hos Dell. När man tar bort och sätter tillbaka frontarna så kan man ibland lyckas ha sönder plastclipsen på sidorna, vilket är ett minne blott nu.

Jag gjorde en enkel test jag brukar roa mig med när jag testar ny hårdvara, nämligen att kompilera FreeBSD. För FreeBSD 7.2 AMD64 tog en buildworld (-j8) 13 minuter och kärnan byggdes (-j8) på 5 minuter. Helt OK.

Railsen till dessa servrar är helt underbara. Dom är mycket lätta att sätta i och ta ur rack, med en riktigt innovativ lösning som liknar rails från IBM och SUN, fast med en twist.

Hittills blir betyget fem av fem drifttekniker, bra jobbat Dell!

PS. Detta inlägg är inte sponsrat av Dell. Ibland vill man berömma spontant 🙂

Dell unboxing, bild 1

Dell har alltid haft bra förpackade servrar.

Dell unboxing, bild 2

Högst upp hittar man en låda med kablar, manualer och annat smått och gott.

Dell unboxing, bild 3

Och i botten ligger servern!

Dell unboxing, bild 4

Innehållet i topp-lådan.

Dell unboxing, bild 5

På R410 kan man se utökad information om hur servern mår, direkt på en liten display. Information som temperatur, strömförbrukning och annat visas.

Dell unboxing, bild 6

Så ser dom ut med locket av. Denna är bestyckad med 2 x L5520 CPUs, 12GB minne, PERC6i RAID-kort med två 300GB SAS-diskar och dubbla nätagg.

Dela detta inlägg:

Eufemism och moln

MolnPå sistånde har jag höjt ögonbrynen mer och mer över alla omskrivningar marknadsförare gör för att sprätta liv i marknader och primärt inom området jag jobbar inom. Det senaste är cloud eller moln. Men vad är moln kan man undra? Uppfattningen verkar variera lite. Moln liknar en annan omskrivning jag såg för något år sedan, nämligen grid. Ett grid är tydligen inte exakt samma sak som ett moln, men i grund och botten är det något som funnits sedan datorernas urålder, nämligen distribuerade system.

Men egentligen så är det ännu äldre i andra former. Telesystem är distribuerade och har funnits sedan 1800-talet och går man utanför teknikbranschen når man ännu längre. Ända sedan människans gryning har experter inom olika områden gjort det de är bra på, så om man ville ha något komplicerat utfört kanske man var tvungen att prata med ett par olika experter, nästan som vissa distribuerade system. Partitionerad problemlösning, samarbete för att lösa uppgifter.

Det jag har haft lite svårt för är alltså när marknadsförare uppfinner nya produkter, begrepp, teknologier osv. för redan etablerade ditos. Självklart inser de klarsynta att man pratar om samma eller nästan samma saker, men mänskligheten har en otrolig förmåga att uppfatta någon slags teknologirevolution när det i själva verket handlar om gamla nyheter i nya kläder.

Så varför inte kalla saker för vad de är? Ett moln är ett distribuerat system. Tydligen inte tillräckligt sexigt för marknadsförare, så de tar detta ”dåliga” namn och uppfinner ett nytt. Jag är ingen språkvetare, men det låter som en eufemism.

Wikipedia har en intressant artikel om eufemism. Jag citerar:

För ett och samma begrepp kan det finnas flera olika termer som är eufemismer, neutrala eller nedlåtande, och som ibland används parallellt. Med tiden kan det ske en glidning så att eufemismen ses som neutral och behov av en ny eufemism uppstår.

Så samarbete blev distribuerade system, som blev grids och det senaste, cloud / moln.

Engelska Wikipedia har mer att säga om Cloud computing:

Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet.

… och vidare:

The term cloud is used as a metaphor for the Internet, based on how the Internet is depicted in computer network diagrams and is an abstraction for the complex infrastructure it conceals.

Jaha? Så cloud representerar Internet och cloud computing representerar vettigt implementerade system. Men det är ju det distribuerade system ofta innebär!

Nåja, nu skall jag jobba vidare med Loopias många distribuerade system, exempelvis e-post och Autobahn. Mer om det i framtiden, stay tuned. 🙂

Foto av ewen and donabel på Flickr.

Dela detta inlägg:

Yttre eller inre fåfänga

Pinky and the BrainNu när det börjar bli sommar och semestertider står många (nåja) med beslutsångest över vad man skall göra med all fritid man plötsligt fick.

Det ryktas om att det finns något som heter soldyrkare som tydligen passivt sitter i solstolen hela dagarna på sommaren. För dom som inte tycker att det låter speciellt produktivt, och inte helt utan risk (UV-index, ungar som spiller glass osv.) så finns det alternativ.

Sätt dig i källaren med AC:n, ta på dig tänkarmössan och bege dig till den gamla godingen projecteuler.net vetja! Där kan man hitta matematiska problem som löses på valfritt sätt via allt från penna och papper till superdator. Mycket stimulerande om man gillar pussel och man kanske till och med lär sig några nya matematiska termer. Wikipedia brukar ha bra förklaringar på många termer och det man inte hittar där finns nästan garanterat på mathworld.wolfram.com.

Lycka till!

PS. Det bästa av båda världar skulle förstås vara att sitta och bli snyggare och smartare i solen med netbooken i famn.

Dela detta inlägg:

Du har väl beställt?

En mini-revolution som händer en gång per halvår är som bekant (?) att en ny version av OpenBSD släpps, en av våra absoluta favoritstjärnor på operativsystemshimlen. OpenBSD är framme vid version 4.5 och ändringarna mellan 4.4 och 4.5 kan man se här:

Som många säkert vet så uppstod en kontrovers för ett par veckor sedan när Theo de Raadt upplyste användarna om att den europeiska distributören inte längre skulle distribuera OpenBSD. Anledningen var att distributören, enligt Theo, inte följt överrenskommelser och även låg efter med inbetalningar för beställda varor. Därför bör man beställa direkt från OpenBSD:s huvudsite eller alternativt via en annan underleverantör i Europa. Hela soppan kan man läsa om här:

Ett kanske mindre känt faktum är att ett nära relaterat projekt är OpenSSH, en programvara för säker kommunikation mellan datorer. OpenSSH används kommersiellt av många, många aktörer, exempelvis Cisco, Juniper och många andra. OpenSSH finns tillgängligt för i praktiken alla UNIX- och UNIX-liknande operativsystem, samt även för Windows m fl. OpenSSH utvecklas av OpenBSD-gruppen av utvecklare. Projektets sida finner man på http://www.openssh.org.

OpenBSD

Oavsett om du väljer att köpa ett CD-set eller ladda hem OpenBSD så hoppas jag att du kommer ihåg att donera en slant också till dessa extremt begåvade kodsmeder!

Dela detta inlägg:

sh ip bgp sum … eh, bgpctl sh sum!

Det finstilta: För att ge en något förenklad bild av hur information rör sig på Internet så begränsar jag mig till IP (Internet Protocol).

Det här med nät är ju roligt. Titta bara på sociala nätverk som Facebook, MySpace och så vidare. Något som jag själv anser är ännu roligare, och troligtvis mer givande, är datanätverk som exempelvis Internet. För en leverantör av tjänster på Internet såsom Loopia, så är det viktigt med redundans i anslutningen mellan de servrar man har och Internet. Ett vanligt sätt att få ”riktig” redundans är med hjälp av BGP (Border Gateway Protocol), vilket är ett protokoll som i korthet används för att bestämma nästa steg för transporten av data från källa till mål.

På Internet finns ”öar” med nätverk, så kallade AS (Autonoma System). Ett AS kan betraktas som en behållare för nätverk och i de punkter där dessa AS möts hittar man routers. När en router får information som skall vidare någonstans så tittar routern på IP-adressen för målet. Om målet ligger utanför det egna AS:et så slår routern upp, beroende på målets IP-adress, vilket AS som informationen skall till härnäst, och skickar informationen vidare till rätt AS. Detta fortsätter ända tills informationen nått målet. Om det skall tillbaka ett svar så är det inte säkert att svaret tar samma väg tillbaka. Nu kommer kunskapsstinna läsare protestera lite och påpeka att det faktiskt finns interna routrar i större nät också, vilket stämmer. Men i detta inlägg fokuserar jag bara på så kallade borderrouters mellan AS.

Borderrouters används således som en slags gränsövergång mellan nätverk. Loopias nätverk finns i AS39570 och vårt AS har via våra routers direktkontakt med två andra AS, Telias AS3301 och Tele2s AS1257. En router kan välja att skicka information via nästa AS baserat på en rad olika kriterier, exempelvis kapacitet på anslutningen, vilket land som routern står i, avsiktlig viktning och annat. Framförallt kan vägval göras baserat på om en ansluting är bruten eller inte, vilket är viktigt i just redundanssyfte. Loopia har två Internetleverantörer idag, Telia och Tele2. I normalfallet får och skickar vi trafik till båda leverantörerna. Vilken leverantör som väljs beror på det routingmässiga avståndet på Internet till oss. Om en av anslutningarna mellan oss och en Internetleverantör får ett avbrott så kommer routrarna automatiskt att upptäcka det och skicka allt via en av de fungerande anslutningarna.

Allt det här är ju trevligt, men varför skriver jag om det här då? Jo, för att när man sitter och tittar på tjänsteutbud, priser och annat smått och gott som de olika webhotellen erbjuder så är detta en sak att fundera över. Vad skall man fråga sitt tilltänkta webhotell? Man kan exempelvis fråga om de har redundant anslutning till Internet. Om de säger ja, fråga vilka AS de är direktanslutna till och om BGP används, för att på så sätt försöka avgöra om de verkligen har ”riktig” redundans eller bara två sladdar till ett och samma modem i källaren. Det kan naturligtvis även vara ett visst värde i att webhotellet använder etablerade, välkända Internetleverantörer.

För att ta fram vilket AS en viss IP-adress hör till så kan man använda UNIX-kommandot whois:

> whois 194.9.94.162

OrgName:        RIPE Network Coordination Centre
OrgID:          RIPE
Address:        P.O. Box 10096
City:           Amsterdam
StateProv:
PostalCode:     1001EB
Country:        NL
...
...
origin:         AS39570
mnt-by:         LOOPIA-MNT
source:         RIPE # Filtered

Origin säger att IP-adressen, som går till www.loopia.se, hör till AS 39570.

Hemläxa

Med UNIX-kommandot whois kan man prata med (bland annat) RIPE:s whoisdatabas och få fram information om AS:

> whois -h whois.ripe.net as39570
% This is the RIPE Whois query server #1.
% The objects are in RPSL format.
%
% Rights restricted by copyright.
% See http://www.ripe.net/db/copyright.html
...

Man kan blandannat utläsa vilka nät som annonseras och annat matnyttigt.

Ett annat bra kommando är traceroute, med vilket man kan se vilka nätverksenheter som passeras på vägen mellan dig och någonstans på det stora vida Internet:

> traceroute ftp.sunet.se
traceroute to ftp.sunet.se (194.71.11.69), 64 hops max, 40 byte ...
 1  fw1-1.fw-int.core.loopia.se (194.9.95.225)  0.321 ms  0.165 ...
 2  rtr1.bgp4.core.loopia.se (194.42.55.169)  0.494 ms  0.389 ms ...
 3  telia.isp.core.loopia.se (194.42.55.162)  1.088 ms  1.723 ms ...
 4  81.228.103.160 (81.228.103.160)  316.588 ms  16.742 ms ...
 5  u-b-c5-link.se.telia.net (81.228.79.96)  9.863 ms  10.548 ms ...
 6  fre-c5-link.se.telia.net (81.228.75.100)  9.828 ms  10.979 ms ...
 7  fre-peer1-link.se.telia.net (81.228.75.101)  8.484 ms  8.285 ...
 8  sunet.se.telia.net (195.67.220.150)  28.981 ms  8.188 ms ...
 9  a1sth-ae5.sunet.se (130.242.82.210)  6.268 ms  23.499 ms  ...
10  ftp-g.sunet.se (193.11.0.242)  10.133 ms  13.813 ms  10.716 ...
11  194.71.11.69 (194.71.11.69)  8.476 ms  7.666 ms  9.038 ms
Dela detta inlägg:

ASP.NET 2.0 SP1

Som några av våra läsare kanske noterat så uppstår ett lite speciellt problem med ASP.NET 2.0 efter det att man installerar ASP.NET 2.0 service pack 1 (hädanefter kallat SP 1). När vi läste genom listan över ändringar för SP 1 och installerade det på våra kundservrar så rapporterade några få kunder obskyra fel i sina sidor.

Det visade sig att problemet har att göra med hur man refererar till datakolumner med asp:Repeater, asp:DataGrid och asp:DataList. Innan installation av SP 1 så kunde man i VB exempelvis använda sig av Container.DataItem(”kolumnnamn”) för att referera till sitt data, men efter installation av SP 1 är det inte tillåtet längre utan Full Trust. Det är inte speciellt bra att använda Full Trust i delade miljöer, vi använder därför Medium Trust, så en annan metod att referera till sitt data behövdes.

Beteendet har därmed ändrats i och med SP 1. Om man använder det sätt som Microsoft rekommenderar för att refererera till datat, Databinder.Eval(Container.DataItem, ”kolumnnamn”), så fungerar det utmärkt i VB och C# både före och efter SP 1. Vi rapporterade detta till Microsofts Gold Partner-support som snabbt konstaterade att det var ett riktigt problem, reproducerade det i sitt labb, och bekräftade att våra antaganden var korrekta. De erbjöd sig till och med att kontakta våra kunder och förklara problemet, så de gick ”the extra mile” i ärendet. 🙂

En sak jag blev förbryllad över var skillnaden mellan VB och C#. I VB kunde man använda Container.DataItem() som en metod innan SP 1, medan C#-kompilatorn undrade vad jag höll på med, då Container.DataItem är en property och inte en metod. Det verkar vara någon form av syntaktiskt socker, då det faktiskt fungerade med SP 1 i Full Trust i VB, men med Medium Trust får man reflection exception. Microsofts supporttekniker publicerade en artikel om detta som förklarar detaljerna.

Microsoft lovade även att lägga upp en KB-artikel men det kan dröja lite, då Loopia tydligen var först med att rapportera detta problem.

Dela detta inlägg:

Snakes on a server

Ett av de kanske lite mer ovanliga språken vi har stöd för på Loopia är Python. Python är ett skriptspråk i likhet med exempelvis Perl eller PHP och är ett så kallat general purpose-språk. Detta innebär att Python kan användas till allt mellan himmel och jord. Python används bland annat av NASA, ILM och Astra Zeneca. Ett annat exempel är Eve Online, ett onlinespel, som använder en specialversion av Python (Stackless Python) till stor utsträckning.

Det som gör att jag gillar Python är flera saker. En prominent anledning är att det är så lätt att läsa Pythonkod. En annan anledning är att jag gillar funktionell programmering (tänk exempelvis LISP (SBCL), Haskell och Erlang) och Python har inslag av just det.

Nåväl, talk is cheap så nu är det hög tid för några exempel.

Databashantering

En kort exempel på databashantering (utan felhantering).

import MySQLdb

db = MySQLdb.connect("host", "user", "password", "database")
db_cursor = db.cursor()
db_cursor.execute("SELECT title FROM books")

row = db_cursor.fetchone()
count = 1
while row is not None:
     print count, row[0]
     count += 1
     row = db_cursor.fetchone()

db_cursor.close()
db.close()

Detta ger följande utmatning från min testdatabas:

1 Security Engineering: A Guide to Building Dependable ...
2 Secrets and Lies: Digital Security in a Networked World
3 Hackers and Painters: Essays on the Art of Programming

Sortering av en hash

Sortering av en hash (som heter dictionary i Python) på värdet istället för nyckeln:

data = {'a' : 2, 'b' : 1}
for key in sorted(data.keys(), lambda x, y: cmp(data[x], data[y])):
        print key, data[key]

Detta ger följande utmatning:

b 1
a 2

Annat spännande …

Andra attraktiva funktioner är filter(), map() och reduce(). Dessa används för att filtrera och sammanställa data. Ett något krystat exempel på detta är följande kodsnutt som filtrerar ut alla tal som är större än noll ur en lista, dela dessa med två och sedan summerar:

data = [6, 4, 8, -3, 5, -7]
bigger_than_zero = filter(lambda x: x > 0, data)
half = map(lambda x: x / 2.0, bigger_than_zero)
the_sum = reduce(lambda x, y: x + y, half)
print the_sum

Ger följande utmatning:

11.5

Det härliga med Python är förstås att allt detta kan skapas med endast en (1) rad kod. Denna är förvisso ganska lång och behöver därför radbrytas i detta exempel (med ett \-tecken).

print reduce(lambda x, y: x + y, map(lambda x: x / 2.0, \
filter(lambda x: x > 0, [6, 4, 8, -3, 5, -7])))

Utmärkta introduktioner för dig som programmerat tidigare och som tycker Python verkar intressant hittar du här och här. Lycka till!

Dela detta inlägg: