<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>http://blog.simpledesigns.com.pl/</title><link>http://blog.simpledesigns.com.pl/</link><description>Wpisy z dziennika internetowego Jogger, wspomaganego przez Jabbera</description><lastBuildDate>Thu, 03 Jul 2008 17:06:18 +0200</lastBuildDate><generator>JoggerPL</generator><item><title>Szyfrowanie partycji: dm-crypt</title><link>http://blog.simpledesigns.com.pl/2008/03/14/szyfrowanie-partycji-dm-crypt/</link><description>&lt;p&gt;Do szyfrowania partycji w systemach Linuksowych można wykorzystać dm-crypt - jest to już od dłuższego czasu w jądrze, potrzebny jest jeszcze tylko pakiet cryptsetup. W konfiguracji jądra należy włączyć szyfry (np. AES, Blowfish) i dm-crypt dla &quot;Device mapper&quot;.&lt;/p&gt;
&lt;p&gt;Teraz pokażę jak utworzyć szyfrowaną partycję, ja wykorzystuję LVM, ale nic nie stoi na przeszkodzie wykorzystać dowolną inną partycję.&lt;/p&gt;
&lt;p&gt;Tworzymy partycję:&lt;/p&gt;
&lt;pre&gt;
# lvcreate -n encrypted -L 2G vg
  Logical volume &quot;encrypted&quot; created
&lt;/pre&gt;
&lt;p&gt;Tworzymy mapowanie szyfrujące:&lt;/p&gt;
&lt;pre&gt;
# cryptsetup -v --cipher aes-cbc-plain -y create decrypted /dev/vg/encrypted
Enter passphrase:
Verify passphrase:
&lt;/pre&gt;
&lt;p&gt;Tworzymy system plików:&lt;/p&gt;
&lt;pre&gt;
# mkfs.ext3 /dev/mapper/decrypted
mke2fs 1.40.6 (09-Feb-2008)
Warning: 256-byte inodes not usable on older systems
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
&lt;/pre&gt;
&lt;p&gt;Teraz już możemy zamontować naszą zaszyfrowaną partycję:&lt;/p&gt;
&lt;pre&gt;
# mount /dev/mapper/decrypted /mnt/crypt
&lt;/pre&gt;
&lt;p&gt;Utworzone mapowanie będzie istniało aż do wyłączenia systemu lub ręcznego usunięcia (przez &lt;i&gt;cryptsetup remove&lt;/i&gt;). W Gentoo automatyczne tworzenie mapowań realizuje dodatek &lt;i&gt;dmcrypt&lt;/i&gt; do baselayout, polecam przeczytać plik &lt;i&gt;/etc/conf.d/dmcrypt&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ważne&lt;/b&gt;: błędnie podane hasło nie jest sygnalizowane przez cryptsetup - dopiero nieudana próba zamontowania odszyfrowanej partycji może świadczyć o błędnym haśle.&lt;/p&gt;
&lt;p&gt;Dużą zaletą dm-crypt w porównaniu z szyfrowaniem pojedynczych plików jest ukrywanie nie tylko zawartości plików ale również informacji o nich: szyfrowany jest cały system plików - uniemożliwia to nie tylko odczytanie danych z plików, ale również zorientowanie się co właściwie jest na takiej partycji. Drugą ważną zaletą jest przeźroczystość rozwiązania - odszyfrowaną partycję montujemy jak każdą inną, więc można ją wykorzystać do dowolnego celu - trzymanie tajnej poczty, szyfrowanie plików baz danych w /var/lib/postgresql, ogólnie: można z taką partycją dokładnie to samo co z normalną (niezaszyfrowaną) partycją (w odróżnieniu od &lt;a href=&quot;http://arg0.net/encfs&quot;&gt;encfs&lt;/a&gt;). Wadą jest wymaganie praw administratora do utworzenia mapowania i zamontowania partycji w odróżnieniu od wspomnianego już encfs, który działa jako moduł &lt;a href=&quot;http://en.wikipedia.org/wiki/Filesystem_in_Userspace&quot;&gt;FUSE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;dm-crypt umożliwia również wczytywanie klucza z pliku zamiast hasła z klawiatury, daje to ciekawe możliwości:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;szyfrowanie partycji wymiany (swap) losowym kluczem z /dev/urandom - innym przy każdym starcie&lt;/li&gt;
&lt;li&gt;szyfrowanie partycji kluczem zapisanym na zewnętrznym nośniku: pendrive, karta SD, telefon z włączonym Bluetooth, etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Więcej o dm-crypt można poczytać na &lt;a href=&quot;http://www.saout.de/misc/dm-crypt/&quot;&gt;stronie domowej dm-crypt&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Fri, 14 Mar 2008 10:06:18 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2008/03/14/szyfrowanie-partycji-dm-crypt/</guid><category>devel</category><category>Techblog</category></item><item><title>I-Hate-Oracle</title><link>http://blog.simpledesigns.com.pl/2008/01/16/i-hate-oracle/</link><description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://thedailywtf.com/images/ihoc/Obstacle_L_R.gif&quot; alt=&quot;Obstacle&quot;&gt;&lt;/p&gt;
&lt;p&gt;Źródło: &lt;a href=&quot;http://thedailywtf.com/images/ihoc/&quot;&gt;I-Hate-Oracle&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Wed, 16 Jan 2008 11:41:12 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2008/01/16/i-hate-oracle/</guid><category>general</category></item><item><title>Kompresja plików - część 2</title><link>http://blog.simpledesigns.com.pl/2008/01/13/kompresja-plikow-czesc-2/</link><description>&lt;p&gt;Druga część testu kompresorów, tym razem uwzględniony został dodatkowo zip i wszystkie możliwe stopnie kompresji dla gzip, bzip2 i lzma. Testy obejmowały również czas kompresji.&lt;/p&gt;
&lt;p&gt;Zmienił się plik testowy: tym razem to archiwum zawierające zdjęcia JPEG, dokumenty (OpenOffice.org, PDF) oraz drzewko portage. Plik wejściowy ma rozmiar 281 MB (294420480 bajtów).&lt;/p&gt;
&lt;p&gt;Wyniki testów:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://place.simpledesigns.com.pl/compression2.png&quot; width=&quot;605&quot; height=&quot;653&quot; alt=&quot;Wyniki testów&quot;&gt;&lt;/p&gt;
&lt;p&gt;lzma wypadł najlepiej pod względem wynikowego rozmiaru pliku, najgorzej pod względem czasu kompresji. Ale jak zaznaczyłem w poprzednim odcinku: dla mnie w tym przypadku nie liczy się czas kompresji. Ciekawie wypada porównanie bzip2-9 i lzma-2: lzma-2 jest lepszy zarówno pod względem czasu jak i rozmiaru pliku.&lt;/p&gt;
</description><pubDate>Sun, 13 Jan 2008 13:16:14 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2008/01/13/kompresja-plikow-czesc-2/</guid><category>devel</category><category>Techblog</category></item><item><title>Kompresja plików</title><link>http://blog.simpledesigns.com.pl/2008/01/13/kompresja-plikow/</link><description>&lt;p&gt;Zrobiłem dzisiaj mały test różnych metod kompresji plików. W konkursie udział brały trzy programy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gzip&lt;/li&gt;
&lt;li&gt;bzip2&lt;/li&gt;
&lt;li&gt;lzma&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plikiem który był archiwizowany jest md.tar - archiwum zawierające moją skrzynkę pocztową. Plik ma rozmiar 547 MB (573378560 bajtów). Ważny warunek: nie liczy się czas kompresji, najważniejszy jest jak najmniejszy rozmiar pliku wynikowego.&lt;/p&gt;
&lt;p&gt;Wyniki wyglądają następująco (posortowane według finalnego rozmiaru pliku, im mniej tym lepiej):&lt;/p&gt;
&lt;table style=&quot;border: none; margin: auto;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; padding: 4px;&quot;&gt;Metoda kompresji&lt;/td&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; padding: 4px;&quot;&gt;Rozmiar pliku (MB)&lt;/td&gt;
&lt;td style=&quot;text-align: center; font-weight: bold; padding: 4px;&quot;&gt;Rozmiar pliku (bajty)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px; font-weight: bold;&quot;&gt;lzma -9&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;207&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;216402095&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;lzma -7&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;223&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;233372691&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px; font-weight: bold;&quot;&gt;bzip2 -9&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;270&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;282651378&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;bzip2 -7&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;271&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;284121394&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px; font-weight: bold;&quot;&gt;gzip -9&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;278&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;291419283&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;gzip -7&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;279&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;291837325&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;bzip2 -1&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;280&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;293459891&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;lzma -1&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;282&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;295213626&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding-left: 10px;&quot;&gt;gzip -1&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;295&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;308516514&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Lub w formie wykresu:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;object data=&quot;http://place.simpledesigns.com.pl/compression.svg&quot; width=&quot;518&quot; height=&quot;261&quot; type=&quot;image/svg+xml&quot; codebase=&quot;http://www.adobe.com/svg/viewer/install/&quot;&gt;&lt;/p&gt;
&lt;p&gt;lzma wypada zaskakująco dobrze nawet przy -7 (domyślne ustawienie kompresji). Krótko podsumowując: jeśli nie liczy się czas kompresji to lzma jest najlepszym wyjściem.&lt;/p&gt;
</description><pubDate>Sun, 13 Jan 2008 01:30:53 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2008/01/13/kompresja-plikow/</guid><category>devel</category><category>Techblog</category></item><item><title>HAL and mounting in /media</title><link>http://blog.simpledesigns.com.pl/2007/11/24/hal-and-mounting-in-media/</link><description>&lt;p&gt;If you dislike /media directory (just as I do) and use plain, old /mnt for mounting various media (be it CDs, USB sticks) just use &lt;b&gt;INSTALL_MASK&lt;/b&gt; in &lt;i&gt;/etc/make.conf&lt;/i&gt;:&lt;/p&gt;
&lt;pre&gt;
INSTALL_MASK=&quot;/media&quot;
&lt;/pre&gt;
&lt;p&gt;Simple, clean and working :)&lt;/p&gt;
</description><pubDate>Sat, 24 Nov 2007 19:04:34 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2007/11/24/hal-and-mounting-in-media/</guid><category>english</category><category>general</category></item><item><title>Java webapps in Gentoo</title><link>http://blog.simpledesigns.com.pl/2007/11/11/java-webapps-in-gentoo/</link><description>&lt;p&gt;Since my commit &lt;a href=&quot;http://overlays.gentoo.org/dev/nelchael/changeset/301&quot;&gt;301&lt;/a&gt; to my overlay we have preliminary support for packaging Java web applications in Gentoo. First real application that uses it is &lt;a href=&quot;http://blojsom.sourceforge.net/&quot;&gt;blojsom&lt;/a&gt; - &lt;i&gt;A Java-based, full-featured, multi-blog, multi-user software package&lt;/i&gt;, it has been added as commit &lt;a href=&quot;http://overlays.gentoo.org/dev/nelchael/changeset/304&quot;&gt;304&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Big fat warning&lt;/b&gt;: this is first release of this eclass, so strange things may happen - you've been warned.&lt;/p&gt;
</description><pubDate>Sun, 11 Nov 2007 21:57:07 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2007/11/11/java-webapps-in-gentoo/</guid><category>devel</category><category>english</category></item><item><title>jabberd changes</title><link>http://blog.simpledesigns.com.pl/2007/10/09/jabberd-changes/</link><description>&lt;p&gt;jabberd2 has been split from net-im/jabberd to it's own package: &lt;b&gt;net-im/jabberd2&lt;/b&gt;. It's currently package.mask'ed for testing - if you'd like to help please take a look at &lt;a href=&quot;https://bugs.gentoo.org/show_bug.cgi?id=178055&quot;&gt;bug #178055&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Tue, 09 Oct 2007 20:27:50 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/10/09/jabberd-changes/</guid><category>devel</category><category>english</category></item><item><title>Szablon</title><link>http://blog.simpledesigns.com.pl/2007/10/05/szablon-1/</link><description>&lt;p&gt;Zaktualizowałem szablon aby pasował do reszty stron w *.simpledesigns.com.pl :)&lt;/p&gt;
</description><pubDate>Fri, 05 Oct 2007 16:08:03 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/10/05/szablon-1/</guid><category>general</category></item><item><title>RC_PARALLEL_STARTUP</title><link>http://blog.simpledesigns.com.pl/2007/10/05/rc-parallel-startup/</link><description>&lt;p&gt;Pytanie: jakie przyśpieszenie daje włączenie &lt;b&gt;RC_PARALLEL_STARTUP&lt;/b&gt;?&lt;/p&gt;
&lt;pre&gt;
RC_PARALLEL_STARTUP=&quot;no&quot;
&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://place.simpledesigns.com.pl/bootchart-no-parallel.png&quot;&gt;&lt;img src=&quot;http://place.simpledesigns.com.pl/bootchart-no-parallel-small.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;
RC_PARALLEL_STARTUP=&quot;yes&quot;
&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://place.simpledesigns.com.pl/bootchart-parallel.png&quot;&gt;&lt;img src=&quot;http://place.simpledesigns.com.pl/bootchart-parallel-small.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5 sekund&lt;/b&gt; różnicy :)&lt;/p&gt;
</description><pubDate>Fri, 05 Oct 2007 12:17:59 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/10/05/rc-parallel-startup/</guid><category>devel</category><category>Techblog</category></item><item><title>Zmiana adresu :)</title><link>http://blog.simpledesigns.com.pl/2007/10/02/zmiana-adresu/</link><description>&lt;p&gt;Nowy adres &lt;a href=&quot;http://blog.simpledesigns.com.pl/&quot;&gt;http://blog.simpledesigns.com.pl/&lt;/a&gt; :)&lt;/p&gt;
</description><pubDate>Tue, 02 Oct 2007 09:00:30 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/10/02/zmiana-adresu/</guid><category>general</category></item><item><title>PDF Security</title><link>http://blog.simpledesigns.com.pl/2007/09/16/pdf-security/</link><description>&lt;p&gt;Pracuję nad pracą magisterską i miałem dwa problemy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&quot;Bookmarks&quot; - czyli spis treści dokumentu w Acrobat Reader&lt;/li&gt;
&lt;li&gt;PDF Security - czyli jak zabezpieczyć dokument PDF&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rozwiązanie pierwszego problemu jest proste:&lt;/p&gt;
&lt;pre&gt;
\RequirePackage[dvipdfm]{hyperref}

\hypersetup{
        bookmarks=true,
        bookmarksnumbered=true,
        citebordercolor={0.8 0.8 1},
        linkbordercolor={0.8 0.8 1},
        pdfauthor={Krzysztof Pawlik},
        pdfstartview=FitH,
        pdfsubject={...}
        pdftitle={...},
        urlbordercolor={0.8 0.8 1},
}
&lt;/pre&gt;
&lt;p&gt;Więcej opcji jest opisane w &lt;a href=&quot;http://dionysos.mpch-mainz.mpg.de/~joeckel/pdflatex/hyperref.pdf&quot;&gt;dokumentacji hyperref&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Drugi problem wymagał wykorzystania innego programu: &lt;a href=&quot;http://www.pdfbox.org/&quot;&gt;PDFBox&lt;/a&gt;. A oto jak go wykorzystać:&lt;/p&gt;
&lt;pre&gt;
pdfencrypt -O hasło -canAssemble false -canExtractContent false -canExtractForAccessibility false -canFillInForm false -canModify false -canModifyAnnotations false -canPrint false -canPrintDegraded false -keyLength 40 plik.pdf
&lt;/pre&gt;
&lt;p&gt;I teraz:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://img237.imageshack.us/img237/300/acroreadsecurityyb6.png&quot; alt=&quot;PDF Security&quot;&gt;&lt;/p&gt;
</description><pubDate>Sun, 16 Sep 2007 00:55:56 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/09/16/pdf-security/</guid><category>devel</category><category>Techblog</category></item><item><title>SCO files for bankruptcy</title><link>http://blog.simpledesigns.com.pl/2007/09/15/sco-files-for-bankruptcy/</link><description>&lt;p class=&quot;quote&quot;&gt;SCO announced today that it has filed for reorganization under Chapter 11 of the US Bankruptcy Code. Business operations, according to SCO, will continue as normal during the reorganization. (&lt;a href=&quot;http://www.linux.com/feature/119211&quot;&gt;źródło&lt;/a&gt;)&lt;/p&gt;
</description><pubDate>Sat, 15 Sep 2007 00:12:58 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/09/15/sco-files-for-bankruptcy/</guid><category>general</category><category>Techblog</category></item><item><title>Komiks</title><link>http://blog.simpledesigns.com.pl/2007/07/29/komiks/</link><description>&lt;p&gt;Jeden z lepszych odcinków &lt;a href=&quot;http://wulffmorgenthaler.com/&quot;&gt;Wulffmorgenthaler&lt;/a&gt;:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://wulffmorgenthaler.com/striphandler.ashx?stripid=ec0e4676-c0d0-4b4b-a964-3e051fc3c98b&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</description><pubDate>Sun, 29 Jul 2007 10:18:57 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/07/29/komiks/</guid><category>general</category></item><item><title>Lepsze uzupełnianie argumentów mount</title><link>http://blog.simpledesigns.com.pl/2007/07/13/lepsze-uzupelnianie-argumentow-mount/</link><description>&lt;p&gt;Funkcja &lt;i&gt;_mount&lt;/i&gt; odpowiedzalna za uzupełnianie arugmentów dla &lt;i&gt;mount&lt;/i&gt; jest IMHO irytująca.&lt;/p&gt;
&lt;p&gt;Odrobinę lepsza wersja:&lt;/p&gt;
&lt;pre&gt;
# Author: Krzysiek Pawlik &amp;lt;nelchael@gentoo.org&amp;gt;
#
# Completion for sys-unneeded-distfiles

_mount() {

        local cur=${COMP_WORDS[COMP_CWORD]}
        local props=
        for i in $(grep -v '^$' /etc/fstab | grep -v '^#' | awk '{print $1}'); do
                [[ -e &quot;${i}&quot; ]] &amp;amp;&amp;amp; props=&quot;${props} ${i}&quot;
        done
        props=&quot;${props} $(grep -v '^$' /etc/fstab | grep -v '^#' | grep -v '^none' | awk '{print $2}')&quot;
        COMPREPLY=( $(compgen -W &quot;${props}&quot; -- $cur) )

}

complete -F _mount mount
&lt;/pre&gt;</description><pubDate>Fri, 13 Jul 2007 19:02:37 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/07/13/lepsze-uzupelnianie-argumentow-mount/</guid><category>Techblog</category></item><item><title>Durne mail() w PHP</title><link>http://blog.simpledesigns.com.pl/2007/06/16/durne-mail-w-php/</link><description>&lt;p&gt;&lt;i&gt;mail()&lt;/i&gt; w PHP jest ciekawą funkcją: najczęściej nadużywaną, najmniej zabezpieczoną (żadnego logowania, ograniczeń - NIC). W sieci &lt;a href=&quot;http://ilia.ws/archives/149-mail-logging-for-PHP.html&quot;&gt;pojawiła się łatka&lt;/a&gt;, która ma to poprawić (tylko logowanie ;)), niestety ma parę wad. Poprawiona wersja dla PHP 5.2.2 znajduje się w &lt;a href=&quot;https://bugs.gentoo.org/show_bug.cgi?id=182187&quot;&gt;bug 182187&lt;/a&gt;. Liczę, że w 5.2.4 znajdzie się już to w waniliowym PHP.&lt;/p&gt;
&lt;p&gt;Co daje ta łatka? Możliwość logowania użycia funkcji mail(): logowana jest data, nazwa pliku PHP i odbiorca - akurat tyle ile potrzeba, żeby stwierdzić kogo powiesić ]:-&amp;gt;&lt;/p&gt;
</description><pubDate>Sat, 16 Jun 2007 14:09:21 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/06/16/durne-mail-w-php/</guid><category>devel</category><category>Techblog</category></item><item><title>I see dead... numbers</title><link>http://blog.simpledesigns.com.pl/2007/05/10/i-see-dead-numbers/</link><description>&lt;pre&gt;
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://09f9.com/&quot;&gt;The Source&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Thu, 10 May 2007 23:06:48 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/05/10/i-see-dead-numbers/</guid><category>general</category></item><item><title>Web services w Gentoo - część 1</title><link>http://blog.simpledesigns.com.pl/2007/05/03/web-services-w-gentoo-czesc-1/</link><description>&lt;p&gt;Jak korzystać z dobrodziejstwa &lt;a href=&quot;http://java.sun.com/webservices/&quot;&gt;Web services&lt;/a&gt; w Gentoo? Oto mały poradnik dotyczący &lt;a href=&quot;https://jaxb.dev.java.net/&quot;&gt;&lt;acronym title=&quot;Java Architecture for XML Binding&quot;&gt;JAXB&lt;/acronym&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Zaczynamy od zainstalowania JAXB:&lt;/p&gt;
&lt;pre&gt;
# emerge -av jaxb-tools
&lt;/pre&gt;
&lt;p&gt;Teraz potrzebujemy katalog projektu:&lt;/p&gt;
&lt;pre&gt;
$ mkdir -p projekt/{bin,src,lib}
&lt;/pre&gt;
&lt;p&gt;Nasz przykładowy plik XML (&lt;i&gt;sample.xml&lt;/i&gt;):&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;dane&amp;gt;
  &amp;lt;osoba imie=&quot;Jan&quot; nazwisko=&quot;Kowalski&quot;&amp;gt;
    &amp;lt;id pesel=&quot;00000000000&quot;/&amp;gt;
  &amp;lt;/osoba&amp;gt;
  &amp;lt;osoba imie=&quot;Janina&quot; nazwisko=&quot;Kowalska&quot;&amp;gt;
    &amp;lt;id pesel=&quot;00000000001&quot; dowod=&quot;AAA00000&quot;/&amp;gt;
  &amp;lt;/osoba&amp;gt;
&amp;lt;/dane&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Tworzymy dla niego plik XML Schema (&lt;i&gt;sample.xsd&lt;/i&gt;):&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE schema PUBLIC &quot;-//W3C//DTD XMLSCHEMA 200102//EN&quot; &quot;http://www.w3.org/2001/XMLSchema.dtd&quot;&amp;gt;
&amp;lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&amp;gt;
  &amp;lt;xs:element name=&quot;dane&quot;&amp;gt;
    &amp;lt;xs:complexType&amp;gt;
      &amp;lt;xs:choice maxOccurs=&quot;unbounded&quot; minOccurs=&quot;1&quot;&amp;gt;
        &amp;lt;xs:element name=&quot;osoba&quot; type=&quot;typeOsoba&quot;/&amp;gt;
      &amp;lt;/xs:choice&amp;gt;
    &amp;lt;/xs:complexType&amp;gt;
  &amp;lt;/xs:element&amp;gt;
  &amp;lt;xs:complexType name=&quot;typeOsoba&quot;&amp;gt;
    &amp;lt;xs:all minOccurs=&quot;1&quot; maxOccurs=&quot;1&quot;&amp;gt;
      &amp;lt;xs:element name=&quot;id&quot; type=&quot;typeId&quot;/&amp;gt;
    &amp;lt;/xs:all&amp;gt;
    &amp;lt;xs:attribute name=&quot;imie&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&amp;gt;
    &amp;lt;xs:attribute name=&quot;nazwisko&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&amp;gt;
  &amp;lt;/xs:complexType&amp;gt;
  &amp;lt;xs:complexType name=&quot;typeId&quot;&amp;gt;
    &amp;lt;xs:attribute name=&quot;pesel&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&amp;gt;
    &amp;lt;xs:attribute name=&quot;dowod&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&amp;gt;
  &amp;lt;/xs:complexType&amp;gt;
&amp;lt;/xs:schema&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Sprawdzamy jeszcze poprawność XML Schema i przykładowego pliku XML:&lt;/p&gt;
&lt;pre&gt;
$ xmllint --valid --noout sample.xsd
$ xmllint --noout --schema sample.xsd sample.xml
&lt;/pre&gt;
&lt;p&gt;Teraz już jesteśmy gotowi do wykorzystania XJC - kompilatora XML Schema, da on nam w rezultacie gotowe klasy Javy:&lt;/p&gt;
&lt;pre&gt;
$ xjc-2 -d src/ -p net.nelchael.jaxb.generated sample.xsd
&lt;/pre&gt;
&lt;p&gt;Wygenerowane pliki:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;net.nelchael.jaxb.generated.Dane&lt;/li&gt;
&lt;li&gt;net.nelchael.jaxb.generated.ObjectFactory&lt;/li&gt;
&lt;li&gt;net.nelchael.jaxb.generated.TypeId&lt;/li&gt;
&lt;li&gt;net.nelchael.jaxb.generated.TypeOsoba&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Potrzebujemy jeszcze paru bibliotek:&lt;/p&gt;
&lt;pre&gt;
$ ln -s /usr/share/codemodel-2/lib/codemodel.jar lib/
$ ln -s /usr/share/istack-commons-runtime/lib/istack-commons-runtime.jar lib/
$ ln -s /usr/share/jaxb-2/lib/jaxb-api.jar lib/
$ ln -s /usr/share/jaxb-2/lib/jaxb-impl.jar lib/
$ ln -s /usr/share/jaxb-tools-2/lib/jaxb-tools.jar lib/
$ ln -s /usr/share/jsr173/lib/jsr173.jar lib/
$ ln -s /usr/share/relaxng-datatype/lib/relaxngDatatype.jar lib/
$ ln -s /usr/share/rngom/lib/rngom.jar lib/
$ ln -s /usr/share/sun-jaf/lib/activation.jar lib/
$ ln -s /usr/share/xerces-2/lib/xercesImpl.jar lib/
$ ln -s /usr/share/xsom/lib/xsom.jar lib/
&lt;/pre&gt;
&lt;p&gt;Teraz już jesteśmy gotowi do napisania klasy korzystającej z danych (&lt;i&gt;src/net/nelchael/jaxb/Projekt.java&lt;/i&gt;):&lt;/p&gt;
&lt;pre&gt;
package net.nelchael.jaxb;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import net.nelchael.jaxb.generated.Dane;
import net.nelchael.jaxb.generated.ObjectFactory;
import net.nelchael.jaxb.generated.TypeId;
import net.nelchael.jaxb.generated.TypeOsoba;

public class Projekt {

        public static void main(String[] args) {

                try {

                        JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
                        Unmarshaller unmarshaller = context.createUnmarshaller();

                        Dane dane = (Dane)unmarshaller.unmarshal(new File(&quot;sample.xml&quot;));

                        for (TypeOsoba osoba : dane.getOsoba()) {

                                System.out.println(&quot;Osoba: &quot; + osoba.getNazwisko() + &quot;, &quot; + osoba.getImie());
                                TypeId id = osoba.getId();
                                System.out.print(&quot; Pesel: &quot; + id.getPesel());
                                if (id.getDowod() != null)
                                        System.out.print(&quot;, dowód osobisty: &quot; + id.getDowod());
                                System.out.println();

                        }

                } catch (JAXBException e) {
                        e.printStackTrace();
                }

        }

}
&lt;/pre&gt;
&lt;p&gt;Na tym etapie przyda się już plik build.xml dla Ant:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;project name=&quot;jaxb&quot; default=&quot;compile&quot;&amp;gt;
  &amp;lt;path id=&quot;globalClassPath&quot;&amp;gt;
    &amp;lt;fileset dir=&quot;lib/&quot; includes=&quot;*.jar&quot;/&amp;gt;
    &amp;lt;pathelement path=&quot;bin/&quot;/&amp;gt;
  &amp;lt;/path&amp;gt;
  &amp;lt;taskdef name=&quot;xjc&quot; classname=&quot;com.sun.tools.xjc.XJC2Task&quot; classpathref=&quot;globalClassPath&quot;/&amp;gt;
  &amp;lt;target name=&quot;xjc&quot;&amp;gt;
    &amp;lt;xjc schema=&quot;sample.xsd&quot; package=&quot;net.nelchael.jaxb.generated&quot; destdir=&quot;src/&quot;/&amp;gt;
  &amp;lt;/target&amp;gt;
  &amp;lt;target name=&quot;compile&quot;&amp;gt;
    &amp;lt;javac target=&quot;1.5&quot; source=&quot;1.5&quot; srcdir=&quot;src&quot; destdir=&quot;bin/&quot; encoding=&quot;UTF-8&quot; classpathref=&quot;globalClassPath&quot;/&amp;gt;
  &amp;lt;/target&amp;gt;
  &amp;lt;target name=&quot;clean&quot;&amp;gt;
    &amp;lt;delete verbose=&quot;true&quot; dir=&quot;bin/net&quot;/&amp;gt;
  &amp;lt;/target&amp;gt;
  &amp;lt;target name=&quot;run&quot;&amp;gt;
    &amp;lt;java classpathref=&quot;globalClassPath&quot; classname=&quot;net.nelchael.jaxb.Projekt&quot;/&amp;gt;
  &amp;lt;/target&amp;gt;
&amp;lt;/project&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Wszystko gotowe, więc uruchamiamy XJC, ...&lt;/p&gt;
&lt;pre&gt;
$ ant xjc
&lt;/pre&gt;
&lt;p&gt;... kompilujemy projekt, ...&lt;/p&gt;
&lt;pre&gt;
$ ant compile
&lt;/pre&gt;
&lt;p&gt;... w końcu uruchamiamy:&lt;/p&gt;
&lt;pre&gt;
$ ant run
&lt;/pre&gt;
&lt;p&gt;Spodziewany wynik:&lt;/p&gt;
&lt;pre&gt;
$ ant run
Buildfile: build.xml

run:
     [java] Osoba: Kowalski, Jan
     [java]  Pesel: 00000000000
     [java] Osoba: Kowalska, Janina
     [java]  Pesel: 00000000001, dowód osobisty: AAA00000

BUILD SUCCESSFUL
Total time: 2 seconds
$ 
&lt;/pre&gt;
&lt;p&gt;Jak widać korzystanie z JAXB w Gentoo jest dość proste - wszystkie potrzebne biblioteki są już w portage, wystarczy zainstalować ;) Bardzo dobry tutorial dotyczący Web services jest na &lt;a href=&quot;http://java.sun.com/webservices/docs/2.0/tutorial/doc/index.html&quot;&gt;stronie Sun'a&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Niedługo postaram się umieścić podobny tutorial, ale dotyczący &lt;a href=&quot;http://jibx.sourceforge.net/&quot;&gt;JiBX&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Thu, 03 May 2007 15:16:54 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/05/03/web-services-w-gentoo-czesc-1/</guid><category>devel</category><category>Techblog</category></item><item><title>:)</title><link>http://blog.simpledesigns.com.pl/2007/05/01/bez-tytulu/</link><description>&lt;p&gt;Zieeeeeeeeeeeeeef ... &lt;a href=&quot;http://cia.vc/stats/author/nelchael&quot;&gt;JWSDP w wersji OpenSource dodane do portage&lt;/a&gt; :)&lt;/p&gt;
</description><pubDate>Tue, 01 May 2007 23:56:54 +0200</pubDate><guid>http://blog.simpledesigns.com.pl/2007/05/01/bez-tytulu/</guid><category>devel</category></item><item><title>&quot;Features&quot; w Subversion</title><link>http://blog.simpledesigns.com.pl/2007/03/16/features-w-subversion/</link><description>&lt;p&gt;Taki mały &lt;a href=&quot;http://subversion.tigris.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=124783&quot;&gt;&lt;i&gt;feature request&lt;/i&gt;&lt;/a&gt; - ciekawe czy wejdzie do SVN :)&lt;/p&gt;
</description><pubDate>Fri, 16 Mar 2007 14:06:28 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2007/03/16/features-w-subversion/</guid><category>devel</category></item><item><title>Skype</title><link>http://blog.simpledesigns.com.pl/2007/03/03/skype/</link><description>&lt;p&gt;Dlaczego nie widzę się korzystającego z Skype'a? &lt;a href=&quot;http://www.secdev.org/conf/skype_BHEU06.handout.pdf&quot;&gt;Dlatego&lt;/a&gt;!&lt;/p&gt;
</description><pubDate>Sat, 03 Mar 2007 16:37:13 +0100</pubDate><guid>http://blog.simpledesigns.com.pl/2007/03/03/skype/</guid><category>general</category></item></channel></rss>