er snakk om eiendom, men et tidsbegrenset monopol. Simon Phipps
forteller videre at noen jobber med å skrive
<a href="http://www.intellectualprivilege.com/book.html">en bok med
-tittel Intellectual Property</a>, og at boken er anbefalt av Lawrence
+tittel Intellectual Privilege</a>, og at boken er anbefalt av Lawrence
Lessig. Jeg tror jeg skal begynne å bruke begrepet intellektuelt
privilegium når jeg snakker om opphavsrett, patenter, varemerker og
forretningshemmeligheter framover.</p>
</div>
<div class="padding"></div>
+<div class="entry">
+ <div class="title">
+ <a href="../../../F__rste_vellykkede_videostr__m_fra_NUUG.html">Første vellykkede videostrøm fra NUUG</a>
+ </div>
+ <div class="date">
+ 2009-02-11 06:30
+ </div>
+
+ <div class="body">
+
+<p>Jeg ble glad for å se under
+<a href="http://www.nuug.no/aktiviteter/20090210-compiz/">gårdagens
+medlemsmøte</a> i NUUG Oslo at utsending av live-video fra møtet
+fungerte for første gang. Forrige gang ble det ved en teknisk tabbe
+sendt video uten lyd. Vi kan takke Ole Kristian Lien og resten av
+videogruppen i NUUG for at nå NUUG-medlemmer over det ganske land
+kunne se foredraget samtidig med oss i Oslo. Vi opplevde til og med
+under møtet å motta spørsmål via IRC som ble besvart der og da.
+Opptaket publiseres så snart det er kopiert over til NUUGs
+webserver og komprimert.</p>
+
+ </div>
+ <div class="tags">
+
+
+
+ Tags: <a href="../../../tags/norsk">norsk</a>, <a href="../../../tags/nuug">nuug</a>, <a href="../../../tags/video">video</a>.
+
+ </div>
+</div>
+ <div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="../../../Endelig_er_Debian_Lenny_gitt_ut.html">Endelig er Debian Lenny gitt ut</a>
+ </div>
+ <div class="date">
+ 2009-02-15 11:50
+ </div>
+
+ <div class="body">
+
+<p>Endelig er <a href="http://www.debian.org/">Debian</a>
+<a href="http://www.debian.org/News/2009/20090214">Lenny</a> gitt ut.
+Et langt steg videre for Debian-prosjektet, og en rekke nye
+programpakker blir nå tilgjengelig for de av oss som bruker den
+stabile utgaven av Debian. Neste steg er nå å få
+<a href="http://www.skolelinux.org/">Skolelinux</a> /
+<a href="http://wiki.debian.org/DebianEdu/">Debian Edu</a> ferdig
+oppdatert for den nye utgaven, slik at en oppdatert versjon kan
+slippes løs på skolene. Takk til alle debian-utviklerne som har
+gjort dette mulig. Endelig er f.eks. fungerende avhengighetsstyrt
+bootsekvens tilgjengelig i stabil utgave, vha pakken
+<tt>insserv</tt>.</p>
+
+ </div>
+ <div class="tags">
+
+
+
+ Tags: <a href="../../../tags/debian">debian</a>, <a href="../../../tags/debian edu">debian edu</a>, <a href="../../../tags/norsk">norsk</a>.
+
+ </div>
+</div>
+ <div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="../../../Kart_over_overv__kningskamera_i_Norge.html">Kart over overvåkningskamera i Norge</a>
+ </div>
+ <div class="date">
+ 2009-02-15 22:30
+ </div>
+
+ <div class="body">
+
+<p>I regi av
+<a href="http://www.personvern.no/">personvernforeningen</a> har jeg
+startet på
+<a href="http://personvern.no/wiki/index.php/Kameraovervåkning">et
+kart over overvåkningskamera i Norge</a>. Bakgrunnen er at det etter
+min mening bærer galt avsted med den massive overvåkningen som
+finner sted i Norge i dag, og at flere og flere overvåkningskamera
+gjør det vanskeligere og vanskeligere å gå igjennom livet uten at
+små og store brødre trenger inn i ens private sfære. Datatilsynet
+har et register over kameraovervåkning, men det viser seg å være
+ubrukelig både til å finne ut hvor det er kamera plassert, og til å
+sjekke om et kamera en kommer over er registrert. Dette nye kartet
+fikser en av disse manglene, men det vil fortsatt være umulig å vite
+om et kamera er registrert etter lovens krav eller ikke. Pr. nå er
+22 kamera i Oslo registrert, og det trengs flere til å registrere
+alle. Informasjonen registreres direkte inn i <a
+href="http://www.openstreetmap.org/">OpenStreetmap</a>, sa hentes det
+automatisk over i spesialkartet.</p>
+
+ </div>
+ <div class="tags">
+
+
+
+ Tags: <a href="../../../tags/norsk">norsk</a>, <a href="../../../tags/personvern">personvern</a>.
+
+ </div>
+</div>
+ <div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="../../../Using_bar_codes_at_a_computing_center.html">Using bar codes at a computing center</a>
+ </div>
+ <div class="date">
+ 2009-02-20 08:50
+ </div>
+
+ <div class="body">
+
+<p>At work with the University of Oslo, we have several hundred computers
+in our computing center. This give us a challenge in tracking the
+location and cabling of the computers, when they are added, moved and
+removed. Some times the location register is not updated when a
+computer is inserted or moved and we then have to search the room for
+the "missing" computer.</p>
+
+<p>In the last issue of Linux Journal, I came across a project
+<a href="http://www.libdmtx.org/">libdmtx</a> to write and read bar
+code blocks as defined in the
+<a href="http://en.wikipedia.org/wiki/Data_Matrix">The Data Matrix
+Standard</a>. This is bar codes that can be read with a normal
+digital camera, for example that on a cell phone, and several such bar
+codes can be read by libdmtx from one picture. The bar code standard
+allow up to 2 KiB to be written in the tag. There is another project
+with <a href="http://www.terryburton.co.uk/barcodewriter/">a bar code
+writer written in postscript</a> capable of creating such bar codes,
+but this was the first time I found a tool to read these bar
+codes.</p>
+
+<p>It occurred to me that this could be used to tag and track the
+machines in our computing center. If both racks and computers are
+tagged this way, we can use a picture of the rack and all its
+computers to detect the rack location of any computer in that rack.
+If we do this regularly for the entire room, we will find all
+locations, and can detect movements and removals.</p>
+
+<p>I decided to test if this would work in practice, and picked a
+random rack and tagged all the machines with their names. Next, I
+took pictures with my digital camera, and gave the dmtxread program
+these JPEG pictures to see how many tags it could read. This worked
+fairly well. If the pictures was well focused and not taken from the
+side, all tags in the image could be read. Because of limited space
+between the racks, I was unable to get a good picture of the entire
+rack, but could without problem read all tags from a picture covering
+about half the rack. I had to limit the search time used by dmtxread
+to 60000 ms to make sure it terminated in a reasonable time frame.</p>
+
+<p>My conclusion is that this could work, and we should probably look
+at adjusting our computer tagging procedures to use bar codes for
+easier automatic tracking of computers.</p>
+
+ </div>
+ <div class="tags">
+
+
+
+ Tags: <a href="../../../tags/english">english</a>, <a href="../../../tags/nuug">nuug</a>.
+
+ </div>
+</div>
+ <div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="../../../Checking_server_hardware_support_status_for_Dell__HP_and_IBM_servers.html">Checking server hardware support status for Dell, HP and IBM servers</a>
+ </div>
+ <div class="date">
+ 2009-02-28 23:50
+ </div>
+
+ <div class="body">
+
+<p>At work, we have a few hundred Linux servers, and with that amount
+of hardware it is important to keep track of when the hardware support
+contract expire for each server. We have a machine (and service)
+register, which until recently did not contain much useful besides the
+machine room location and contact information for the system owner for
+each machine. To make it easier for us to track support contract
+status, I've recently spent time on extending the machine register to
+include information about when the support contract expire, and to tag
+machines with expired contracts to make it easy to get a list of such
+machines. I extended a perl script already being used to import
+information about machines into the register, to also do some screen
+scraping off the sites of Dell, HP and IBM (our majority of machines
+are from these vendors), and automatically check the support status
+for the relevant machines. This make the support status information
+easily available and I hope it will make it easier for the computer
+owner to know when to get new hardware or renew the support contract.
+The result of this work documented that 27% of the machines in the
+registry is without a support contract, and made it very easy to find
+them. 27% might seem like a lot, but I see it more as the case of us
+using machines a bit longer than the 3 years a normal support contract
+last, to have test machines and a platform for less important
+services. After all, the machines without a contract are working fine
+at the moment and the lack of contract is only a problem if any of
+them break down. When that happen, we can either fix it using spare
+parts from other machines or move the service to another old
+machine.</p>
+
+<p>I believe the code for screen scraping the Dell site was originally
+written by Trond Hasle Amundsen, and later adjusted by me and Morten
+Werner Forsbring. The HP scraping was written by me after reading a
+nice article in ;login: about how to use WWW::Mechanize, and the IBM
+scraping was written by me based on the Dell code. I know the HTML
+parsing could be done using nice libraries, but did not want to
+introduce more dependencies. This is the current incarnation:</p>
+
+<pre>
+use LWP::Simple;
+use POSIX;
+use WWW::Mechanize;
+use Date::Parse;
+[...]
+sub get_support_info {
+ my ($machine, $model, $serial, $productnumber) = @_;
+ my $str;
+
+ if ( $model =~ m/^Dell / ) {
+ # fetch website from Dell support
+ my $url = "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/no/details?c=no&cs=nodhs1&l=no&s=dhs&ServiceTag=$serial";
+ my $webpage = get($url);
+ return undef unless ($webpage);
+
+ my $daysleft = -1;
+ my @lines = split(/\n/, $webpage);
+ foreach my $line (@lines) {
+ next unless ($line =~ m/Beskrivelse/);
+ $line =~ s/<[^>]+?>/;/gm;
+ $line =~ s/^.+?;(Beskrivelse;)/$1/;
+
+ my @f = split(/\;/, $line);
+ @f = @f[13 .. $#f];
+ my $lastend = "";
+ while ($f[3] eq "DELL") {
+ my ($type, $startstr, $endstr, $days) = @f[0, 5, 7, 10];
+
+ my $start = POSIX::strftime("%Y-%m-%d",
+ localtime(str2time($startstr)));
+ my $end = POSIX::strftime("%Y-%m-%d",
+ localtime(str2time($endstr)));
+ $str .= "$type $start -> $end ";
+ @f = @f[14 .. $#f];
+ $lastend = $end if ($end gt $lastend);
+ }
+ my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+ tag_machine_unsupported($machine)
+ if ($lastend lt $today);
+ }
+ } elsif ( $model =~ m/^HP / ) {
+ my $mech = WWW::Mechanize->new();
+ my $url =
+ 'http://www1.itrc.hp.com/service/ewarranty/warrantyInput.do';
+ $mech->get($url);
+ my $fields = {
+ 'BODServiceID' => 'NA',
+ 'RegisteredPurchaseDate' => '',
+ 'country' => 'NO',
+ 'productNumber' => $productnumber,
+ 'serialNumber1' => $serial,
+ };
+ $mech->submit_form( form_number => 2,
+ fields => $fields );
+ # Next step is screen scraping
+ my $content = $mech->content();
+
+ $content =~ s/<[^>]+?>/;/gm;
+ $content =~ s/\s+/ /gm;
+ $content =~ s/;\s*;/;;/gm;
+ $content =~ s/;[\s;]+/;/gm;
+
+ my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+
+ while ($content =~ m/;Warranty Type;/) {
+ my ($type, $status, $startstr, $stopstr) = $content =~
+ m/;Warranty Type;([^;]+);.+?;Status;(\w+);Start Date;([^;]+);End Date;([^;]+);/;
+ $content =~ s/^.+?;Warranty Type;//;
+ my $start = POSIX::strftime("%Y-%m-%d",
+ localtime(str2time($startstr)));
+ my $end = POSIX::strftime("%Y-%m-%d",
+ localtime(str2time($stopstr)));
+
+ $str .= "$type ($status) $start -> $end ";
+
+ tag_machine_unsupported($machine)
+ if ($end lt $today);
+ }
+ } elsif ( $model =~ m/^IBM / ) {
+ # This code ignore extended support contracts.
+ my ($producttype) = $model =~ m/.*-\[(.{4}).+\]-/;
+ if ($producttype && $serial) {
+ my $content =
+ get("http://www-947.ibm.com/systems/support/supportsite.wss/warranty?action=warranty&brandind=5000008&Submit=Submit&type=$producttype&serial=$serial");
+ if ($content) {
+ $content =~ s/<[^>]+?>/;/gm;
+ $content =~ s/\s+/ /gm;
+ $content =~ s/;\s*;/;;/gm;
+ $content =~ s/;[\s;]+/;/gm;
+
+ $content =~ s/^.+?;Warranty status;//;
+ my ($status, $end) = $content =~ m/;Warranty status;([^;]+)\s*;Expiration date;(\S+) ;/;
+
+ $str .= "($status) -> $end ";
+
+ my $today = POSIX::strftime("%Y-%m-%d", localtime(time));
+ tag_machine_unsupported($machine)
+ if ($end lt $today);
+ }
+ }
+ }
+ return $str;
+}
+</pre>
+
+<p>Here are some examples on how to use the function, using fake
+serial numbers. The information passed in as arguments are fetched
+from dmidecode.</p>
+
+<pre>
+print get_support_info("hp.host", "HP ProLiant BL460c G1", "1234567890"
+ "447707-B21");
+print get_support_info("dell.host", "Dell Inc. PowerEdge 2950", "1234567");
+print get_support_info("ibm.host", "IBM eserver xSeries 345 -[867061X]-",
+ "1234567");
+</pre>
+
+<p>I would recommend this approach for tracking support contracts for
+everyone with more than a few computers to administer. :)</p>
+
+<p>Update 2009-03-06: The IBM page do not include extended support
+contracts, so it is useless in that case. The original Dell code do
+not handle extended support contracts either, but has been updated to
+do so.</p>
+
+ </div>
+ <div class="tags">
+
+
+
+ Tags: <a href="../../../tags/english">english</a>, <a href="../../../tags/nuug">nuug</a>.
+
+ </div>
+</div>
+ <div class="padding"></div>
+
<p style="text-align: right;"><a href="02.rss"><img src="../../../xml.gif" alt="RSS Feed" width="36" height="14"></a></p>
<h2>Archive</h2>
<ul>
+<li>2010
+<ul>
+
+<li><a href="../../../archive/2010/01/">January (2)</a></li>
+
+<li><a href="../../../archive/2010/02/">February (1)</a></li>
+
+<li><a href="../../../archive/2010/03/">March (3)</a></li>
+
+</ul></li>
+
<li>2009
<ul>
<li><a href="../../../archive/2009/01/">January (8)</a></li>
-<li><a href="../../../archive/2009/02/">February (3)</a></li>
+<li><a href="../../../archive/2009/02/">February (8)</a></li>
+
+<li><a href="../../../archive/2009/03/">March (12)</a></li>
+
+<li><a href="../../../archive/2009/04/">April (10)</a></li>
+
+<li><a href="../../../archive/2009/05/">May (9)</a></li>
+
+<li><a href="../../../archive/2009/06/">June (3)</a></li>
+
+<li><a href="../../../archive/2009/07/">July (4)</a></li>
+
+<li><a href="../../../archive/2009/08/">August (3)</a></li>
+
+<li><a href="../../../archive/2009/09/">September (1)</a></li>
+
+<li><a href="../../../archive/2009/10/">October (2)</a></li>
+
+<li><a href="../../../archive/2009/11/">November (3)</a></li>
+
+<li><a href="../../../archive/2009/12/">December (3)</a></li>
</ul></li>
<h2>Tags</h2>
<ul>
- <li><a href="../../../tags/3d-printer">3d-printer (7)</a></li>
+ <li><a href="../../../tags/3d-printer">3d-printer (11)</a></li>
<li><a href="../../../tags/amiga">amiga (1)</a></li>
<li><a href="../../../tags/aros">aros (1)</a></li>
- <li><a href="../../../tags/debian">debian (2)</a></li>
+ <li><a href="../../../tags/debian">debian (14)</a></li>
- <li><a href="../../../tags/debian edu">debian edu (3)</a></li>
+ <li><a href="../../../tags/debian edu">debian edu (12)</a></li>
- <li><a href="../../../tags/english">english (4)</a></li>
+ <li><a href="../../../tags/english">english (20)</a></li>
<li><a href="../../../tags/fiksgatami">fiksgatami (1)</a></li>
+ <li><a href="../../../tags/fildeling">fildeling (5)</a></li>
+
+ <li><a href="../../../tags/kart">kart (2)</a></li>
+
+ <li><a href="../../../tags/lenker">lenker (1)</a></li>
+
<li><a href="../../../tags/ltsp">ltsp (1)</a></li>
- <li><a href="../../../tags/multimedia">multimedia (2)</a></li>
+ <li><a href="../../../tags/multimedia">multimedia (5)</a></li>
+
+ <li><a href="../../../tags/norsk">norsk (64)</a></li>
- <li><a href="../../../tags/norsk">norsk (19)</a></li>
+ <li><a href="../../../tags/nuug">nuug (67)</a></li>
- <li><a href="../../../tags/nuug">nuug (17)</a></li>
+ <li><a href="../../../tags/opphavsrett">opphavsrett (11)</a></li>
- <li><a href="../../../tags/personvern">personvern (2)</a></li>
+ <li><a href="../../../tags/personvern">personvern (10)</a></li>
- <li><a href="../../../tags/reprap">reprap (7)</a></li>
+ <li><a href="../../../tags/reprap">reprap (10)</a></li>
<li><a href="../../../tags/rss">rss (1)</a></li>
+ <li><a href="../../../tags/sikkerhet">sikkerhet (5)</a></li>
+
+ <li><a href="../../../tags/standard">standard (11)</a></li>
+
<li><a href="../../../tags/stavekontroll">stavekontroll (1)</a></li>
- <li><a href="../../../tags/video">video (2)</a></li>
+ <li><a href="../../../tags/video">video (10)</a></li>
+
+ <li><a href="../../../tags/vitenskap">vitenskap (1)</a></li>
- <li><a href="../../../tags/web">web (2)</a></li>
+ <li><a href="../../../tags/web">web (5)</a></li>
</ul>