<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>mrk's techblog</title><link>http://mrk.sed.pl/</link><description>Wpisy z dziennika internetowego Jogger, wspomaganego przez Jabbera</description><lastBuildDate>Tue, 09 Mar 2010 03:49:24 +0100</lastBuildDate><generator>JoggerPL</generator><item><title>ChromiumOS + binarne sterowniki NVidia</title><link>http://mrk.sed.pl/2009/12/06/chromiumos-binarne-sterowniki-nvidia/</link><description>&lt;div class='pl'&gt;
&lt;p style=&quot;text-align:right;font-weight:bold&quot;&gt;&lt;a href='#' onclick=&quot;$('.pl').hide(1000);$('.en').show(1000)&quot;&gt;in english&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Po ładnych kilku wieczorach &quot;walki&quot; udało mi się wreszcie zbudować ChromiumOS działający natywnie na moim T61. Przede wszystkim dorzuciłem binarne sterowniki NVidia, dzięki czemu działa Composite i te wszystkie EyeCandy w WM. Zmieniłem też podział na partycje, by system można było zmieścić na nośniku 1GB (700MB/rootfs i 250MB/partycja rw, brak swap zamiast 950MB/rw, 950MB/swap i 950MB/rootfs).&lt;/p&gt;
&lt;p&gt;W związku ze zmniejszeniem rootfs wyleciał bootchart + zależności, zwalniając 180MB miejsca, natomiast przybył mój ulubiony edytor joe ;) W xorg.conf dodałem polski układ klawiatury.&lt;/p&gt;
&lt;p&gt;Odświeżona została także przeglądarka chromium - przedwczorajszy build r33883&lt;/p&gt;
&lt;p&gt;Ponadto został włączony użytkownik pozwalający na zalogowanie offline: testuser, hasło: qwerty - można dzięki temu pogrzebać trochę w systemie:&lt;/p&gt;
&lt;pre&gt;
sudo mount / -o remount,rw
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Skompresowany obraz dysku usb dostępny via &lt;s&gt;&lt;a href=&quot;http://sed.pl/chromiumos/999.999.33909.205354-a1/usb.img.bz2.torrent&quot;&gt;torrent&lt;/a&gt;&lt;/s&gt; oraz &lt;a href=&quot;http://sed.pl/chromiumos/999.999.33909.205354-a1/usb.img.bz2&quot;&gt;http&lt;/a&gt; (175MB) - &lt;s&gt;czywiście preferowany torrent :)&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;Ściągnięty obraz można zapisać na pendrive (w tym przypadku /dev/sdb) za pomocą:&lt;/p&gt;
&lt;pre&gt;
bzcat usb.img.bz2 &amp;gt; /dev/sdb
&lt;/pre&gt;&lt;/div&gt;
&lt;div class='en' style='display:none'&gt;
&lt;ul&gt;
&lt;li&gt;contains binary NVidia xorg driver, ver. 185&lt;/li&gt;
&lt;li&gt;system is repartitioned, fits on 1GB Flash memory (smaller rootfs, no swap, small rw partition)&lt;/li&gt;
&lt;li&gt;fresh build on latest sources (chromium browser: r33883)&lt;/li&gt;
&lt;li&gt;local user: testuser, password: qwerty&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download compressed usb flashdisk image (185MB) via &lt;strike&gt;&lt;a href=&quot;http://sed.pl/chromiumos/999.999.33909.205354-a1/usb.img.bz2.torrent&quot;&gt;torrent&lt;/a&gt; or&lt;/strike&gt; &lt;a href=&quot;http://sed.pl/chromiumos/999.999.33909.205354-a1/usb.img.bz2&quot;&gt;http&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Instalation (assuming pendrive device is /dev/sdb)&lt;/p&gt;
&lt;pre&gt;
bzcat usb.img.bz2 &amp;gt; /dev/sdb
&lt;/pre&gt;&lt;/div&gt;
</description><pubDate>Sun, 06 Dec 2009 02:16:15 +0100</pubDate><guid>http://mrk.sed.pl/2009/12/06/chromiumos-binarne-sterowniki-nvidia/</guid><category>Ogólne</category><category>Techblog</category><category>chromiumos chromeos chromium chrome google nvidia T61</category></item><item><title>Uwierzytelnianie do Apache'a za pomocą certyfikatów kwalifikowanych</title><link>http://mrk.sed.pl/2009/11/02/uwierzytelnianie-do-apache-a-za-pomoca-certyfikatow-kwalifik/</link><description>&lt;p&gt;Mając do dyspozycji certyfikat kwalifikowany, chciałem użyć go do silnego uwierzytelniania do serwisu www. Nie spodziewałem się większych problemów, jednak okazało się, że sprawa nie jest taka prosta jak się na początku wydawało - i stąd ta notka.&lt;/p&gt;
&lt;p&gt;Nie będę pisał o samym uwierzytelnianiu za pomocą certyfikatów klienta - w sieci napisano na ten temat &lt;a href=&quot;http://www.google.pl/search?&amp;amp;q=client+certificate+authentication+apache&quot;&gt;sporo&lt;/a&gt;. Skupię się na problemach specyficznych dla polskich certyfikatów kwalifikowanych.&lt;/p&gt;
&lt;p&gt;Po pierwsze, apache musi mieć ustawiony certyfikat Narodowego Centrum Certyfikacji za pomocą dyrektywy SSLCACertificateFile lub SSLCACertificatePath w pliku konfiguracyjnym. Certyfikaty można pobrać &lt;a href=&quot;http://www.nccert.pl/ncc/rejestr/rejestr_index.aspx&quot;&gt;stąd&lt;/a&gt;. Po restarcie apache'a w logach SSL'a na poziomie debug powinniśmy mieć informację:&lt;/p&gt;
&lt;pre&gt;
[debug] ssl_engine_init.c(1092): CA certificate: /C=PL/O=CZiC Centrast SA w imieniu Ministra Gospodarki/CN=CZiC Centrast SA
[debug] ssl_engine_init.c(1092): CA certificate: /C=PL/O=Minister wlasciwy do spraw gospodarki/CN=Narodowe Centrum Certyfikacji (NCCert)
[
&lt;/pre&gt;
&lt;p&gt;Pierwszy problem - na początku żadna ze sprawdzanych przeze mnie przeglądarek nie chciała użyć (zaprezentować) certyfikatu serwerowi, pomimo, że był widoczny dla samej przeglądarki (pod IE jako certyfikat osobisty w Opcje internetowe / Zawartość / Certyfikaty, w FF Opcje/zaawansowane/szyfrowanie/certyfikaty).&lt;/p&gt;
&lt;p&gt;W FF sprawa okazała się prosta - wystarczyło zarejestrować w przeglądarce certyfikaty wystawców (CA). W IE niestety to nie pomogło - przeglądarka pokazywała listę wyboru certyfikatu, ale pustą. Przyczyna, dla jakiej IE ignorował certyfikat, okazała się dość poważna i miała mieć jeszcze dość poważne następstwa - mianowicie rozszerzenie KeyUsage, definiujące możliwości użycia klucza, w certyfikacie kwalifikowanym ma ustawiony jedynie bit nonRepudation, i nie ma ustawionego bitu digitalSignature, wymaganego m.in. do uwierzytelniania klienta. Trochę więcej przeczytać o tym można np. &lt;a href=&quot;http://ipsec.pl/certyfikat-kwalifikowany-i-logowanie-do-systemu-teleinformatycznego.html&quot;&gt;tutaj&lt;/a&gt;. W skrócie - bit nonRepudation ustawiony w KeyUsage - określa użycie certyfikatu (a dokładniej klucza prywatnego) do typowego podpisu elektronicznego pod dokumentem, czyli w celu potwierdzenia &lt;a href=&quot;http://pl.wikipedia.org/wiki/Niezaprzeczalno%C5%9B%C4%87&quot;&gt;&quot;niezaprzeczalności&quot;&lt;/a&gt; Natomiast bit digitalSignature zezwala użycie klucza w pozostałych przypadkach, m.in. w celu uwierzytelnienia w systemie informatycznym. Takie rozdzielenie ma sens, jeśli chodzi o zapewnienie większego bezpieczeństwa użycia naszego podpisu elektronicznego - bez tego mechanizmu można sobie wyobrazić &quot;zły&quot; serwer, który przy okazji uwierzytelniania klienta za pomocą certyfikatu klienta podsyła nam zamiast losowych wartości challenge skróty jakichś dokumentów, które byśmy nieświadomie podpisywali naszym e-podpisem...&lt;/p&gt;
&lt;p&gt;Okazuje się, że w IE można jednak &lt;a href=&quot;http://support.microsoft.com/kb/890326&quot;&gt;wymusić użycie certyfikatu bez bitu digitalSignature w KeyUsage&lt;/a&gt; do autoryzacji klienta, aplikując do rejestru:&lt;/p&gt;
&lt;pre&gt;
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl]
&quot;FEATURE_CLIENTAUTHCERTFILTER&quot;=dword:00000001
&lt;/pre&gt;
&lt;p&gt;Po zaaplikowaniu powyższego wpisu do rejestru IE powinien pozwolić na wybranie certyfikatu kwalifikowanego do uwierzytelniania.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Niestety, pomimo że zarówno FF jak i IE pozwalały wybrać certyfikat, Apache dalej odmawiał posłuszeństwa. Dalsze śledztwo wykazało, że z dwóch powodów. Po pierwsze - brak bitu digitalSignature w KeyUsage - Apache honoruje to rozszerzenie i odrzuca certyfikaty klienta nie mające ustawionego bitu digitalSignature. Po drugie - Apache odrzuca certyfikaty mające nieznane rozszerzenia oznaczone jako &quot;krytyczne&quot; - a posiadany przeze mnie certyfikat kwalifikowany takowe posiadał. Rozwiązanie - poniższy patch, powodujący ignorowanie powyższych błędów.&lt;/p&gt;
&lt;pre&gt;
--- apache2-2.2.8/modules/ssl/ssl_engine_kernel.c.orig  2006-07-12 05:38:44.000000000 +0200
+++ apache2-2.2.8/modules/ssl/ssl_engine_kernel.c       2009-10-28 17:19:26.000000000 +0100
@@ -1285,6 +1285,16 @@
     /*
      * And finally signal OpenSSL the (perhaps changed) state
      */
+
+    if(errnum == X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION || errnum == X509_V_ERR_INVALID_PURPOSE) {
+      ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s, &quot;ignoring unhandled critical extension or invalid certificate purpose&quot;);
+      sslconn-&amp;gt;verify_error = NULL;
+      ctx-&amp;gt;error = X509_V_OK;
+      SSL_set_verify_result(ssl, X509_V_OK);
+      ok = TRUE;
+    }
+
+
     return ok;
 }
&lt;/pre&gt;
&lt;p&gt;Powyższy patch nie jest chyba zbyt dużym gwałtem na bezpieczeństwo apache'a - powyższy kod wywoływany jest tylko dla certyfikatów klienta, ignorowane są jedynie nieznane rozszerzenia w certyfikacie i rozszerzenie KeyUsage&lt;/p&gt;
&lt;p&gt;Konkluzja - certyfikatów kwalifikowanych niestety nie powinno używać się do uwierzytelniania klienta via SSL ale jak ktoś się wyjątkowo uprze to się da :)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;I na koniec KONKURS. &lt;a href=&quot;https://sed.pl/django/cert/&quot;&gt;Tutaj&lt;/a&gt; stoi sobie poprawiony j.w. apache, wpuszczający tylko za okazaniem certyfikatu kwalifikowanego. Pierwszej osobie która powie w komentarzu co znajduje się na podanej stronie stawiam piwo :)&lt;/b&gt;&lt;/p&gt;
</description><pubDate>Mon, 02 Nov 2009 16:06:01 +0100</pubDate><guid>http://mrk.sed.pl/2009/11/02/uwierzytelnianie-do-apache-a-za-pomoca-certyfikatow-kwalifik/</guid><category>Ogólne</category><category>Techblog</category><category>certyfikat kwalifikowany klienta apache</category></item><item><title>GParted - zmiana rozmiaru partycji NTFS zawierającej bad sektory</title><link>http://mrk.sed.pl/2009/10/24/gparted-bad-sektory/</link><description>&lt;p&gt;Podczas próby zmniejszenia partycji ntfs, gparted zaskoczył mnie komunikatem:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://its.sed.pl/imagestore/26405/&quot;&gt;&lt;img src=&quot;http://its.sed.pl/imagestore/26406/&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Jak widać współpracy odmówił program ntfsresize, ponieważ znalazł 'zamarkowane' bad sektory. Rozwiązanie - mały wrapper na ntfsresize, który wywoła oryginalną binarkę z opcją &quot;--bad-sectors&quot;:&lt;/p&gt;
&lt;pre&gt;
#!/bin/bash
if test &quot;$#&quot; -gt 0; then
  exec ntfsresize.orig --bad-sectors &quot;$@&quot;
else
  exec ntfsresize.orig
fi
&lt;/pre&gt;
&lt;p&gt;Zmieniamy nazwę oryginalnego ntfsresize na ntfsresize.orig, a powyższy kod umieszczamy w tym samym katalogu w pliku ntfsresize, nadając mu oczywiście atrybuty wykonywania. Przed operacją zmiany rozmiaru warto jeszcze wykonać spod Windows &quot;chkdsk /r /p&quot;, jak zresztą ntfsresize lojalnie nas uprzedza.&lt;/p&gt;
</description><pubDate>Sat, 24 Oct 2009 15:28:21 +0200</pubDate><guid>http://mrk.sed.pl/2009/10/24/gparted-bad-sektory/</guid><category>Ogólne</category><category>ntfs bad sektory gparted ntfsresize</category></item><item><title>Skryptozakładka do logowania via Google OpenID</title><link>http://mrk.sed.pl/2009/07/13/skryptozakladka-do-logowania-via-google-openid/</link><description>&lt;p&gt;Jak wiadomo, implemetacja OpenID google nie jest najłatwiejsza w użyciu. Google używa tzw. &quot;Directed Identity&quot; z OpenID 2.0 - do logowania używany jest ten sam dla wszystkich url, właściwy identyfikator OpenID użytkownika ustalany jest po uwierzytelnieniu u dostawcy OpenID. Identyfikator OpenID dla google to &lt;b&gt;https://www.google.com/accounts/o8/id&lt;/b&gt; - jak widać średnio wygodny do zapamiętania i wpisywania. I właśnie dlatego powstała niniejsza skryptozakładka - szuka na stronie formularza logowania, ustawia identyfikator OpenID i wysyła formularz. Oczywiście można użyć dla dowolnego innego dostawcy OpenID, zmieniając URL.&lt;/p&gt;
&lt;p&gt;Tutaj gotowa skryptozakładka: &lt;a href=&quot;javascript:(function(){var%20inputs=document.getElementsByTagName('input');for(i=0;i%3Cinputs.length;i++){if(inputs[i].type=='text'&amp;amp;&amp;amp;inputs[i].name.indexOf('openid')%3E=0){var%20f=inputs[i];f.value='https://www.google.com/accounts/o8/id';while(f&amp;amp;&amp;amp;f.tagName!='FORM')f=f.parentNode;if(f)f.submit();return;}}alert('Brak%20formularza%20OpenID');})();&quot;&gt;Google OpenID&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A tak wygląda w bardziej strawnej postaci:&lt;/p&gt;
&lt;p&gt;{geshi lang=javascript} (function() { var inputs=document.getElementsByTagName('input'); for(i=0;i=0) { var f = inputs[i]; f.value = 'https://www.google.com/accounts/o8/id'; while(f &amp;amp;&amp;amp; f.tagName!='FORM') f=f.parentNode; if(f) f.submit(); return; } } alert('Brak formularza OpenID'); })(); {/geshi}&lt;/p&gt;
&lt;p&gt;Skryptozakładka sprawdzona w FF3.5 i Chromium.&lt;/p&gt;
</description><pubDate>Mon, 13 Jul 2009 11:47:19 +0200</pubDate><guid>http://mrk.sed.pl/2009/07/13/skryptozakladka-do-logowania-via-google-openid/</guid><category>Ogólne</category><category>programowanie</category><category>Techblog</category><category>google openid skryptozakładka bookmarklet</category></item><item><title>Zasilanie dysku SATA 2.5 ze złącza mini ATA - (44 pin)</title><link>http://mrk.sed.pl/2009/06/11/zasilanie-dysku-sata-2-5-ze-zlacza-mini-ata-44-pin/</link><description>&lt;p&gt;Jakiś czas temu kupiłem uniwersalną &quot;przejściówkę&quot; ATA / mini ATA / SATA na usb. W komplecie znajduję się także zasilacz +5/+12V do zasilenia dysków 3.5&quot; oraz dysków SATA - dyski ATA 2.5 cala nie potrzebują oddzielnego zasilania, ponieważ 4 dodatkowe piny na złączu mini ATA dostarczają zasilanie. I stąd pomysł, by zasilić 2.5&quot; dysk sata ze złącza mini ATA&lt;/p&gt;
&lt;h2&gt;Uwaga - wskazana najwyższa ostrożność. Pomyłka grozi spaleniem dysku, przejściówki, portu USB w komputerze ew. puszczeniem z dymem całego komputera&lt;/h2&gt;
&lt;p&gt;Przerabiamy standardową przejściówkę do zasilania SATA: (przepraszam za niską jakość zdjęć - e51 nie nadaję się stanowczo do zdjęć makro)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://its.sed.pl/static/sata1.jpg&quot; width=&quot;640px&quot; height=&quot;480px&quot; alt=&quot;przerobiona przejściówka do zasilania&quot;&gt;&lt;/p&gt;
&lt;p&gt;Podłączamy ją do pinów 41 (+5V) i 43 (masa): &lt;a href=&quot;http://pinouts.ru/HD/Ata44Internal_pinout.shtml&quot;&gt;(wyprowadzenia ATA 44)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://its.sed.pl/static/sata2.jpg&quot; width=&quot;640px&quot; height=&quot;480px&quot; alt=&quot;sposób podłączenia przejściówki do złącza ATA&quot;&gt;&lt;/p&gt;
&lt;p&gt;Uwagi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Najlepiej by było użyć pełnego złącza mini ATA 44pin, co uniemożliwiło by odwrotne podłączenie zasilania - niestety takim nie dysponowałem i dlatego podwójny gold-pin - trzeba mocno uważać by nie podłączyć zasilania dysku odwrotnie !&lt;/li&gt;
&lt;li&gt;Dobrze zwrócić uwagę na zapotrzebowanie na prąd dysku - mój chce 0.6A, co nie jest wielkim nadużyciem w stosunku do standardu (0.5A / port) i nie powinno grozić przepaleniem ścieżek zasilających USB, ale zasilenie w taki sposób dysku 3.5&quot; może skończyć się źle&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
</description><pubDate>Thu, 11 Jun 2009 16:28:19 +0200</pubDate><guid>http://mrk.sed.pl/2009/06/11/zasilanie-dysku-sata-2-5-ze-zlacza-mini-ata-44-pin/</guid><category>Ogólne</category><category>Techblog</category><category>hardware</category><category>ata</category><category>sata</category><category>zasilanie</category><category>usb</category></item><item><title>Avatary na joggerze za pomocą mikroformatu hCard</title><link>http://mrk.sed.pl/2009/04/24/avatary-na-joggerze-za-pomoca-mikroformatu-hcard/</link><description>&lt;p&gt;Co to jest &lt;a href=&quot;http://microformats.org/wiki/hcard&quot;&gt;hCard&lt;/a&gt;? Jest to jeden z &lt;a href=&quot;http://microformats.org/wiki/Main_Page&quot;&gt;mikroformatów&lt;/a&gt; służący do publikowania informacji osobistych (wizytówki), między innymi fotografii (avatara) użytkownika. Mikroformat ten definiuje po prostu sposób zapisu informacji z popularnego standardu vCard za pomocą tagów HTML.&lt;/p&gt;
&lt;p&gt;Listę site'ów które używają różnych mikroformatów można zobaczyć &lt;a href=&quot;http://microformats.org/wiki/implementations&quot;&gt;tutaj&lt;/a&gt; - znajdziemy tam takich potentatów jak digg, google, flickr, linkedin czy twitter.&lt;/p&gt;
&lt;p&gt;Zgodną ze standardem wizytówkę można przygotować za pomocą &lt;a href=&quot;http://microformats.org/code/hcard/creator&quot;&gt;generatora&lt;/a&gt; , minimalna, zawierająca tylko avatar wygląda tak:&lt;/p&gt;
&lt;p&gt;{geshi lang=html4strict}&lt;/p&gt;
&lt;div class=&quot;vcard&quot;&gt;&lt;img src=&quot;url_avatara&quot; class=&quot;photo&quot;&gt;&lt;/div&gt;
&lt;p&gt;{/geshi}&lt;/p&gt;
&lt;p&gt;Klasę &quot;vcard&quot; można odpowiednio udekorować za pomocą CSS, np. ukryć, jeżeli nie chcemy zdjęcia widocznego na stronie.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Na &lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;GAE&lt;/a&gt; powiesiłem małą usługę która szuka na podanej stronie pierwszej wizytówki w formacie hCard i przekierowuje do wyspecyfikowanego tam avatara, w przypadku braku do obrazka domyślnego. (keszując oczywiście dane, na razie tylko w memcache)&lt;/p&gt;
&lt;p&gt;Potem wystarczy tylko odpowiednio udekorować komentarze pod wpisem, przykład w jQuery:&lt;/p&gt;
&lt;p&gt;{geshi lang=javascript} $(document).ready(function() { $('.commentlist li').each(function(k,v){ url = $('cite a',v).attr('href') || 'anonim'; $(v).prepend('&lt;img src=&quot;http://its.sed.pl/avatar/'+url+'/&quot;&gt;') }) }) {/geshi}&lt;/p&gt;
&lt;p&gt;Zalety takiego rozwiązania? Zgodność z popularnym standardem, jest szansa, że tak przygotowaną wizytówkę będą w stanie automatycznie wykryć inne serwisy.&lt;/p&gt;
&lt;p&gt;TODO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Przeskalowywanie obrazków po stronie serwera, generowanie kilku rozmiarów miniatur&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
</description><pubDate>Fri, 24 Apr 2009 13:37:55 +0200</pubDate><guid>http://mrk.sed.pl/2009/04/24/avatary-na-joggerze-za-pomoca-mikroformatu-hcard/</guid><category>programowanie</category><category>Techblog</category><category>microformats</category><category>hcard</category><category>avatar</category><category>gae</category></item><item><title>Ukrywanie niepożądanej historii w FF</title><link>http://mrk.sed.pl/2009/04/18/ukrywanie-niepozadanej-historii-w-ff/</link><description>&lt;p&gt;Zaglądasz codziennie na pudelka, plotka czy inną naszą-klasę ;) i musisz tłumaczyć się potem kumplom z kompromitującej historii w firefoksie (eh ten awesome bar) ?&lt;/p&gt;
&lt;p&gt;Rozwiązanie: trigger w sqlite o takiej postaci:&lt;/p&gt;
&lt;p&gt;{geshi lang=sql} CREATE TRIGGER history_guard_trigger BEFORE INSERT ON moz_places WHEN new.url in ('http://pudelek.pl/', 'http://www.plotek.pl/') BEGIN select RAISE(ROLLBACK,'bez takich mi tu'); END {/geshi}&lt;/p&gt;
&lt;p&gt;Wrzucić można za pomocą świetnego rozszerzenia &lt;a href=&quot;https://addons.mozilla.org/pl/firefox/addon/5817&quot;&gt;SQLite Manager&lt;/a&gt;, baza 'places.sqlite', polecenie Execute SQL.&lt;/p&gt;
&lt;p&gt;P.S. Tak, wiem, że jest &lt;a href=&quot;https://addons.mozilla.org/pl/firefox/search?q=history&amp;amp;cat=1%2C12&quot;&gt;niejedno rozszerzenie&lt;/a&gt; które daje podobną funkcjonalność, ale tak jest na pewno bardziej geekowsko ;) Poza tym takie rozwiązanie jest prawdopodobnie lżejsze niż instalowanie kolejnego rozszerzenia...&lt;/p&gt;
</description><pubDate>Sat, 18 Apr 2009 20:44:04 +0200</pubDate><guid>http://mrk.sed.pl/2009/04/18/ukrywanie-niepozadanej-historii-w-ff/</guid><category>Ogólne</category><category>historia firefox trigger</category></item><item><title>Zabawy blip api</title><link>http://mrk.sed.pl/2009/04/14/zabawy-blip-api/</link><description>&lt;p&gt;&lt;a href=&quot;http://mrk.sed.pl/files/blip.js&quot;&gt;Tutaj&lt;/a&gt; lekko zmodyfikowany &lt;a href=&quot;http://muzzy.jogger.pl/2008/04/09/blip-er-wklejka-blipa-w-wersji-non-flash/&quot;&gt;Blip_er&lt;/a&gt; &lt;a href=&quot;http://muzzy.jogger.pl&quot;&gt;muzzy'iego&lt;/a&gt; - za pomocą kilku regexp'ów wstawiam linki do użytkowników, tagów, statusów i shortlinków. Aha, wymagane jQuery zamiast prototype. Demo po prawej.&lt;/p&gt;
</description><pubDate>Tue, 14 Apr 2009 19:52:28 +0200</pubDate><guid>http://mrk.sed.pl/2009/04/14/zabawy-blip-api/</guid><category>programowanie</category><category>blip js api</category></item><item><title>Serwer OpenID dla Google Apps for Your Domain</title><link>http://mrk.sed.pl/2009/03/29/serwer-openid-dla-google-apps-for-your-domain/</link><description>&lt;p&gt;Od jakiegoś czasu chodziło mi po głowie, żeby dodać sobie do Google Apps własny serwer OpenID - korzystając oczywiście z dobrodziejstw Google AppEngine. Podstawowa zaleta w stosunku do serwera zewnętrznego - jedno hasło do pamiętania mniej, uwierzytelniamy się bowiem za pomocą naszego konta w Google Apps.&lt;/p&gt;
&lt;p&gt;Okazało się, że sprawa jest prostsza niż na początku się wydawało - w przykładowym kodzie źródłowym do appengine są &lt;a href=&quot;http://code.google.com/p/google-app-engine-samples/&quot;&gt;źródła&lt;/a&gt; providera openid, które praktycznie bez zmian można uruchomić na appengine (pamiętając tylko o ustawieniu uwierzytelniania tylko dla swojej domeny). Niestety - kod ten jest od prawie roku nie rozwijany i użyta tam biblioteka openid jest delikatnie mówiąc archaiczna (obsługa tylko openid 1.0).&lt;/p&gt;
&lt;p&gt;Wziąłem się więc do roboty i po dwóch dniach poznawania python-openid, kodowania i debugowania udało się uruchomić provider'a na ostatniej wersji python-openid (2.1.1)&lt;/p&gt;
&lt;p&gt;Funkcjonalność na razie jest tylko podstawowa - można się logować :) W podstawowy sposób obsługiwane jest także rozszerzenie Simple Registration - pola nickname i email&lt;/p&gt;
&lt;p&gt;Źródła do pobrania &lt;a href=&quot;http://code.google.com/p/appengine-openid-provider/&quot;&gt;na stronie projektu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tutaj natomiast gotowa do testowania aplikacja &lt;a href=&quot;http://id-provider.appspot.com/&quot;&gt;id-provider&lt;/a&gt;, z uwierzytelnianiem ustawionym dla wszystkich kont google.&lt;/p&gt;
&lt;p&gt;Zapraszam do testowania i &lt;a href=&quot;http://code.google.com/p/appengine-openid-provider/issues/list&quot;&gt;zgłaszania&lt;/a&gt; uwag / błędów i patchy.&lt;/p&gt;
&lt;p&gt;W planach dorobienie funkcjonalności typowej dla dostawców openid - edycja profilu użytkownika (danych przesyłanych podczas Simple Registration), pamiętanie po stonie serwera decyzji w sprawie automatycznego logowania (na razie używane są ciasteczka), itd.&lt;/p&gt;
</description><pubDate>Sun, 29 Mar 2009 17:39:47 +0200</pubDate><guid>http://mrk.sed.pl/2009/03/29/serwer-openid-dla-google-apps-for-your-domain/</guid><category>Ogólne</category><category>programowanie</category><category>Techblog</category><category>openid</category><category>python</category><category>appengine</category><category>google</category><category>apps</category></item><item><title>Podpis kwalifikowany</title><link>http://mrk.sed.pl/2008/09/22/podpis-kwalifikowany/</link><description>&lt;p&gt;Dzisiaj miałem okazję pomagać w procedurze uzyskania certyfikatu kwalifikowanego (wysyłka dokumentów do ZUS). Jako centrum certyfikacji wybraliśmy CERTUM. Przez internet został zamówiony zestaw &quot;CERTUM Standard&quot; - zawierający czytnik kart (podłączany przez USB), kartę kryptograficzną i oprogramowanie.&lt;/p&gt;
&lt;p&gt;Mając niejakie pojęcie o kryptografii asymetrycznej, spodziewałem się procedury generowania CSR (Certificate Signing Request), połączonego z generowaniem klucza prywatnego na karcie. Nic z tego jednak - okazuje się, że dostajemy kartę z już wygenerowanym kluczem prywatnym. Na rewersie karty jest 16-cyfrowa liczba, która służy do identyfikacji karty przez CERTUM - i jak zrozumiałem na jej podstawie są w stanie wygenerować mi certyfikat - czyli już znają mój klucz publiczny. I teraz pytanie najważniejszsze: &lt;b&gt;jaką mam gwarancję że nikt nie zna mojego klucza prywatnego?&lt;/b&gt; Konsultant CERTUM zapewniał mnie co prawda, że klucz jest co prawda generowany u nich, jednak następuje to na karcie i karta nie umożliwia exportu tego klucza - pozostaje wierzyć na słowo.&lt;/p&gt;
&lt;p&gt;Dlaczego klucz nie jest generowany w momencie wypełniania wniosku o certyfikat - jak chyba nakazuje dobra praktyka w takich przypadkach? Ucięło by to możliwość spekulacji na temat prywatności klucza prywatnego...&lt;/p&gt;
&lt;p&gt;Ciekawy jestem jak sprawa wygląda u pozostałych dwóch dostawców certyfikatów kwalifikowanych? Jak macie jakieś informacje na ten temat dajcie znać w komentarzach...&lt;/p&gt;
&lt;p&gt;PS. Na koniec jeszcze ciekawostka - byłem w tzw. Punkcie Sprawdzania Tożsamości CERTUM w moim mieście - człowiek zapytany o klucz prywatny stwierdził, że nie ma tam żadnego klucza prywatnego tylko certyfikat. Nazwy firmy przez grzeczność nie wymienię :)&lt;/p&gt;
</description><pubDate>Mon, 22 Sep 2008 12:27:35 +0200</pubDate><guid>http://mrk.sed.pl/2008/09/22/podpis-kwalifikowany/</guid><category>Ogólne</category><category>Techblog</category><category>podpis elektroniczny</category></item><item><title>Wirusy na pendrive'ach - akcja edukacyjna.</title><link>http://mrk.sed.pl/2008/05/05/wirusy-na-pendrive-ach-akcja-edukacyjna/</link><description>&lt;p&gt;Z racji że pracuję w kafejce internetowej, mam okazję zajrzeć na pamięci USB klientów. Z moich obserwacji wynika, że jakieś &lt;b&gt;90%&lt;/b&gt; pendrive'ów przeciętnych zjadaczy chleba zawiera dodatki, o których zainteresowani niestety nie wiedzą. Staram się uświadamiać jak tylko potrafię, ale to kropla w morzu... Ale dzisiaj wpadłem na szatański pomysł. Jak dotrzeć szybko do milionów posiadaczy zainfekowanych pendrive'ów? Puścić edukacyjny łańcuszek na gg :) Jestem oczywiście przeciwnikiem tego typu tworów, ale cel uświęca środki. Mam nadzieję, że pomożecie w komentarzach w edycji formy i treści tego &quot;edukacyjnego łańcuszka&quot;. A może mnie po prostu odwiedziecie od tego pomysłu...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Łańcuszek edukacyjny&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Wytoczmy wojnę zawirusowanym pendrive'om&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Otwórz &quot;Mój komputer&quot;&lt;/li&gt;
&lt;li&gt;Wybierz z menu &quot;Narzędzia/Opcje folderów&quot;, potem zakładkę &quot;Widok&quot;&lt;/li&gt;
&lt;li&gt;W oknie &quot;Ustawienia zaawansowane&quot; włącz &quot;Pokaż ukryte pliki i foldery&quot; oraz koniecznie odznacz &quot;Ukryj rozszerzenia znanych typów plików&quot;&lt;/li&gt;
&lt;li&gt;Zajrzyj na swojego pendrive'a. Jeżeli znajdziesz tam jakieś pliki z końcówką exe lub com, których sam tam nie nagrałeś(aś) i dodatkowo masz plik autorun.inf, jesteś NOSICIELEM !!! Możesz spróbować skasować te pliki, ale nie zdziw się jak magicznie pojawią się ponownie. Bardzo możliwe, że potrzebna będzie wizyta u specjalisty :(&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;
&lt;p&gt;Tak więc zrób co uważasz za słuszne. Wyślij tą wiadomość do wszystkich znajomych, a więcej nie ugoszczą Cię wirusem. Nie przesyłaj wiadomości tym, których sam byś chętnie zaraził :)&lt;/p&gt;
--&amp;nbsp;&lt;br&gt;
Życzliwy Informatyk&lt;/li&gt;
&lt;/ol&gt;
</description><pubDate>Mon, 05 May 2008 20:45:45 +0200</pubDate><guid>http://mrk.sed.pl/2008/05/05/wirusy-na-pendrive-ach-akcja-edukacyjna/</guid><category>Ogólne</category><category>Techblog</category><category>łańcuszek wirusy usb pendrive</category></item></channel></rss>