<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.funus.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
		<id>http://www.funus.net/wiki/index.php?title=Specjalna:Nowe_strony&amp;feed=atom</id>
		<title>funus.net - Nowe strony [pl]</title>
		<link rel="self" type="application/atom+xml" href="http://www.funus.net/wiki/index.php?title=Specjalna:Nowe_strony&amp;feed=atom"/>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Specjalna:Nowe_strony"/>
		<updated>2012-05-21T02:02:37Z</updated>
		<subtitle>Z funus.net</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Ebookpoint.pl</id>
		<title>Ebookpoint.pl</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Ebookpoint.pl"/>
				<updated>2012-04-29T18:06:26Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ebookpoint.pl}}W należącej do wydawnitwa [[Helion]] księgarni '''[http://ebookpoint.pl/ ebookpoint.pl]''' można kupić [[ebooki]] głównie typu poradniki pseudopsychologiczne, NLP, trochę IT i takie tam.&lt;br /&gt;
&lt;br /&gt;
Zalety sklepu:&lt;br /&gt;
* książki na ogół dostępne w 3 formatach: epub, mobi, pdf; płatne oczywiście raz za wszystkie&lt;br /&gt;
&lt;br /&gt;
Wady:&lt;br /&gt;
* Podczas rejestracji chcą całego życiorysu, włącznie z dokładnym adresem (przez chwilę przypuszczałem, że planują mi te ebooki na dyskietce przesłac przy pomocy poczty polskiej :/) numerem telefonu.&lt;br /&gt;
* Błędy na stronach, przeglądarka ostrzega o niezabezpieczonych elementach&lt;br /&gt;
* Ordynarne watermarki – wyświetlane na każdej stronie nazwisko i e-mail klienta, w formacie epub zupełnie nie wyróżniające się od tekstu właściwego, przez to przeszkadzające w czytaniu&lt;br /&gt;
* Ich książki w formacie epub na moim [[pocketbook|czytniku]] sprawiają problemy po kilku pierwszych stronach - nie chcą przełączyć się na następną. Pomaga użycie innego programu niż domyślny Adobe Viewer.&lt;br /&gt;
&lt;br /&gt;
Kolejny zgrzyt to automat powiadamiający o udostępnieniu zakupionych pozycji.  Nie dość, że zamiast zbiorczego maila o wszystkich pozycjach wysyła po jednym dla każdej książki, to jeszcze dokleja jakieś dziwaczne napomnienia w stylu: pamiętaj o prawach autorskich! ukryj książkę dobrze by ją chronić przed nielegalnym skopiowaniem! Jak widać Helion z dużą podejrzliwością traktuje swoich klientów; czyżby przypuszczali, że nikt o zdrowych zmysłach nie płaciłby za ich książki, a skoro jednak płaci, to znaczy że na pewno planuje coś niecnego?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[kategoria:serwisy WWW]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Calibre</id>
		<title>Calibre</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Calibre"/>
				<updated>2012-04-23T22:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: parę uwag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://calibre-ebook.com/ Calibre]''' to opensource'owy program do zarządzania kolekcjami  [[e-book]]ów. Ułatwia zbieranie, katalogowanie, wyszukiwanie, konwersję i przesyłanie na czytniki. Napisany jest chyba w [[python]]gu, stąd na starszych sprzętach może działać cokolwiek ociężale.&lt;br /&gt;
&lt;br /&gt;
Luźne uwagi na temat programu.&lt;br /&gt;
* Interfejs użytkownika początkowo był dla mnie trochę nieintuicyjny.&lt;br /&gt;
* Czytnik formatu e-pub ma możliwość wstawiania &amp;quot;zakładek&amp;quot; w książce. Zaskoczyło mnie, że te zakładki przechowywane są w samym pliku epub. Nie podaba mi się takie rozwiązanie.&lt;br /&gt;
* Obsługuje kilka formatów, dana pozycja może składać się z egzemplarzy w różnych formatach, ale tylko jeden na format. Obejście sprawdzone pod linuksem dla pdf-ów: zmienić końcówkę dodatkowego pdf-a powiedzmy na *.pdf_, a następnie dodać - program zakceptuje plik (widocznie format sprawdza po zawartości), a jednocześnie unikniemy kolizji z już pamiętanym pdf-em.&lt;br /&gt;
* Zbyt restrykcyjnie wycina znaki z nazw plików i katalogów, np. nie podoba mu się znak '+', dość istotny chociażby w kontekście książek o [[C++]].&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/DjVu</id>
		<title>DjVu</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/DjVu"/>
				<updated>2012-04-07T12:59:05Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''DjVu''' – format do przechowywania zeskanowanych dokumentów, głównie czarno-białych, zawierających tekst i prostą grafikę. Ma być dość efektywny jeśli chodzi o poziom kompresji.&lt;br /&gt;
&lt;br /&gt;
Chcę sprawdzić, o co z tym chodzi. Może przyda mi się na przykład do posklejania wielostronicowych skanów w jedną całość?&lt;br /&gt;
&lt;br /&gt;
Na początek zainstalowałem sobie pakiety: minidjvu ocrodjvu pdf2djvu djvusmooth, oraz kilka innych, od których te są zależne. Wcześniej miałem już djvulibre-bin.&lt;br /&gt;
&lt;br /&gt;
== Przykład ==&lt;br /&gt;
Mam szereg (konkretnie: 245) obrazów JPG zawierających skany poszczególnych stron książki. Jest tam głównie tekst, ale też kilkadziesiąt ilustracji, część barwnych. Chcę zrobić z niego wielostronicowy dokument DjVu, na początek choćby czarno-biały.&lt;br /&gt;
&lt;br /&gt;
Krok pierwszy to konwersja kolorowych obrazów JPG do czarno-białych PBM:&lt;br /&gt;
&lt;br /&gt;
 for file in Image*.jpg; do [[man:convert(1)|convert]] &amp;quot;$file&amp;quot; &amp;quot;${file%.jpg}.pbm&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Następnie koduję je enkoderem cjb2 z pakietu djvulibre-bin:&lt;br /&gt;
&lt;br /&gt;
 for file in Image*.pbm; do [[man:cjb2(1)|cjb2]] &amp;quot;$file&amp;quot; &amp;quot;${file%.pbm}.djvu; done&lt;br /&gt;
&lt;br /&gt;
Następnie &amp;quot;sklejam&amp;quot; pojedyncze strony w jedną całość:&lt;br /&gt;
&lt;br /&gt;
 [[man:djvm(1)|djvm]] -create book.djvu Image*.djvu&lt;br /&gt;
&lt;br /&gt;
Książkę tę mogę przejrzeć programem djview:&lt;br /&gt;
&lt;br /&gt;
 [[man:djview(1)|djview]] book.djvu&lt;br /&gt;
&lt;br /&gt;
Efekty:&lt;br /&gt;
:(+) oszczędność miejsca: zamiast &amp;gt; 570 MB skan zajmuje ok. 8 MB&lt;br /&gt;
:(+) całość jest w jednym pliku, lepiej nadaje się na [[czytniki e-booków|czytnik]]&lt;br /&gt;
:(-) ilustracje generalnie rzecz biorąc szlag trafił; prawdopodobnie właściwie byłoby potraktować strony je zawierające inaczej&lt;br /&gt;
:(-) mimo dobrej kompresji, tekst nadal nie jest tekstem, nie mogę np. użyć opcji &amp;quot;kopiuj jako tekst&amp;quot; programu djview&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[wikipedia:DjVu]]&lt;br /&gt;
* [https://commons.wikimedia.org/wiki/Help:Creating_a_DjVu_file Creating a DjVu file], instrukcja w Wikimedia Commons&lt;br /&gt;
* [[man:djvu(1)]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Odtwarzanie_skasowanych_plik%C3%B3w</id>
		<title>Odtwarzanie skasowanych plików</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Odtwarzanie_skasowanych_plik%C3%B3w"/>
				<updated>2012-03-17T20:36:05Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Odtwarzanie usuniętych plików''' oczywiście na [[Linux|Linuksie]].&lt;br /&gt;
&lt;br /&gt;
Właśnie sobie coś niechcąco skasowałem, konkretnie obraz ISO płyty DVD. Na dodatek nie zauważyłem, że próba przemontowania systemu plików w tryb tylko do odczytu była nieskuteczna. Z drugiej strony, raczej nic tam już po tym zdarzeniu nie robiłem... Zacząłem szukać jakiegoś narzędzia typu &amp;quot;undelete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
W paczkach [[debian]]a było coś obiecującego, mianowicie e2undel. Program marudził o braku logów, a dokumentacja pod postacią strony manuala nie jest szczególnie jasna. Jednak na [http://e2undel.sourceforge.net/recovery-howto.html stronie WWW] znalazłem jasne zastrzeżenie: ''Attention: This will not work with ext3!''. Tak więc nic z tego.&lt;br /&gt;
&lt;br /&gt;
Następnie znalazłem program [http://extundelete.sourceforge.net/ extundelete]. Ma ponoć działać z ext2, 3 i 4. Ściągnąłem, zbudowałem, zauściłem. Owszem, odtworzył mi plik iso, ale jakby mniejszy. Po zamontowaniu okazało się, że wszystkie kilkanaście plików miało błędy uniemożliwiające ich odczyt. Tak więc znowu niepowodzenie; nie wiem dlaczego - czy za późno odmontowałem partycję i się zabazgrało, czy to wina programu.&lt;br /&gt;
&lt;br /&gt;
Extundelete pozwolił mi przynajmniej obejrzeć zawartość katalogu w niechcąco skasowanym obrazie płyty. To mnie przekonało, że zawartość ta nie jest mi w sumie potrzebna, więc dalsze próby jej odzyskania sobie podarowałem.&lt;br /&gt;
&lt;br /&gt;
== Photorec ==&lt;br /&gt;
&lt;br /&gt;
[http://www.cgsecurity.org/wiki/PhotoRec '''Photorec'''] to program z pakietu 'testdisk'. Służy do odzyskiwania plików u uszkodzonych systemów plików. Jak nazwa sugeruje, nastawiony jest na media - zdjęcia, mp3-ki itd. Efekty w moim przypadku nie były szczególnie ciekawe. Poodtwarzał raz mniej, raz więcej, ale rzedko kiedy całe pliki.&lt;br /&gt;
&lt;br /&gt;
Uwaga. W przypadku odzyskiwania z uszkodzonej płyty CD/DVD (czy też jej obrazu), nie należy wybierać nasuwającego się &amp;quot;non partitioned media&amp;quot;, tylko &amp;quot;Intel/PC partion&amp;quot; a następnie &amp;quot;No partition / [Whole disk]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Skryptowe_GUI</id>
		<title>Skryptowe GUI</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Skryptowe_GUI"/>
				<updated>2012-03-17T14:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: dla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proste skryptowe &amp;quot;aplikacje okienkowe&amp;quot; można sobie zrobić dzięki programom:&lt;br /&gt;
* [[man:kdialog(1)|kdialog]] (dla KDE/Qt)&lt;br /&gt;
* [[man:zenity(1)|zenity]] (dla Gnome'a/Gtk)&lt;br /&gt;
Jeśli kto zna podstawy [[Tcl/Tk]], to w tym celu może użyć program '''wish'''.&lt;br /&gt;
&lt;br /&gt;
Pełnoekranowe &amp;quot;gui terminalowe&amp;quot; można z kolei uzyskać dzięki:&lt;br /&gt;
* dialog&lt;br /&gt;
* whiptail&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Digitus</id>
		<title>Digitus</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Digitus"/>
				<updated>2012-03-17T14:32:02Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: druga wysypka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nabyłem kartę PCI-e [http://www.digitus.info/en/products/archiv/usb-30-pci-express-add-on-card-ds-30220-1/ '''Digitus'''] z 2 portami USB 3.0, żeby ją wsadzić w swój [[root|nienajmłodszy sprzęt]] i następnie podpiąć doń kupiony niedawno [[icybox|zewnętrzną obudowę RAID]]. Cena takiej karty w detalu to ok. 60 zł.&lt;br /&gt;
&lt;br /&gt;
Opartą na chipsecie NEC D720200 kartę wpycha się w najmniejsze z gniazd PCI express, oznaczano jako x1. Dodatkowo trzeba ją podpiąć do zasilacza molexem.&lt;br /&gt;
&lt;br /&gt;
Linux, mimo że to nie pierwszej świeżości stabilny [[debian]], wykrył urządzenie i ma doń driver - xhci. Pierwsza próba, polegająca na podłączeniu starszego dysku USB 2.0 do gniazda na tej karcie nie wypadła zachęcająco. Dysk widział, ale przy próbie odczytu (na szczęście nie próbowałem zapisu) była masa błędów i w efekcie nieużywalny filesystem. Ale może to była wina dość cienkiego kabla? Z drugiej strony ten sam kabel sprawdza się na gniazdach usb 2.0.&lt;br /&gt;
&lt;br /&gt;
Na szczęście mój [[icybox]] podpięty jego dedykowanym kablem zdaje się działać poprawnie. Jedynie niepokoją pojawiające się co kilka minut w logach komunikaty:&lt;br /&gt;
:&amp;lt;tt&amp;gt;kernel: [11037.141412] xhci_hcd 0000:02:00.0: WARN: Stalled endpoint&amp;lt;/tt&amp;gt;&lt;br /&gt;
ale poza tym chyba wszystko gra. Transfer skoczył zauważalnie. Na USB 2.0 było to do ok. 30 MB/s. Teraz mam, na gołym dysku do ~ 105 MB/s. W normalnym użytkowaniu wąskim gardłem staje się [[dm-crypt|szyfrowanie dysków]], ograniczające transfery do 70 MB/s. Podałem oczywiście wartości graniczne, osiągalne np. przy liniowym lub prawie liniowym odczycie.&lt;br /&gt;
&lt;br /&gt;
'''Aktualizacja.''' Następnego dnia wieczorem się wysypało. Patrząc na logi, początkowo było jak wyżej, tzn. od czasu do czasu wpisy w rodzaju:&lt;br /&gt;
 [ 2092.821996] xhci_hcd 0000:02:00.0: WARN: Stalled endpoint&lt;br /&gt;
W pewnym momencie, podczas kopiowania na ten dysk zaczęło zgłaszać błędy. Zajrzałem do logów, a tam pełno błędów związanych z USB. Poszukałem miejsca, gdzie to się zaczęło. Pierwszy komunikat wyglądał tak:&lt;br /&gt;
 [10631.177960] xhci_hcd 0000:02:00.0: WARN: transfer error on endpoint&lt;br /&gt;
A potem zaczęły się cała horda błędów rozpoczynających się od:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[10631.178047] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.178052] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.178057] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.178061] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.178065] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.178077] usb 2-2: USB disconnect, address 2&lt;br /&gt;
[10631.178180] sd 8:0:0:0: [sdc] Unhandled error code&lt;br /&gt;
[10631.178182] sd 8:0:0:0: [sdc] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK&lt;br /&gt;
[10631.178186] sd 8:0:0:0: [sdc] CDB: Read(10): 28 00 51 52 ce a0 00 00 f0 00&lt;br /&gt;
[10631.178193] end_request: I/O error, dev sdc, sector 1364381344&lt;br /&gt;
[10631.178215] sd 8:0:0:0: [sdc] Unhandled error code&lt;br /&gt;
[10631.178217] sd 8:0:0:0: [sdc] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK&lt;br /&gt;
[10631.178220] sd 8:0:0:0: [sdc] CDB: Read(10): 28 00 51 52 cf 90 00 00 10 00&lt;br /&gt;
[10631.178226] end_request: I/O error, dev sdc, sector 1364381584&lt;br /&gt;
[10631.194175] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10631.396203] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10631.600231] usb 2-2: device not accepting address 0, error -71&lt;br /&gt;
[10631.600244] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10631.600590] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10631.804676] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10632.008029] usb 2-2: device not accepting address 0, error -71&lt;br /&gt;
[10632.008042] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10632.008338] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10632.212198] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10632.416102] usb 2-2: device not accepting address 0, error -71&lt;br /&gt;
[10632.416115] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10632.416442] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10632.620686] usb 2-2: Device not responding to set address.&lt;br /&gt;
[10632.824519] usb 2-2: device not accepting address 0, error -71&lt;br /&gt;
[10632.824531] hub 2-0:1.0: cannot disable port 2 (err = -32)&lt;br /&gt;
[10632.824542] hub 2-0:1.0: unable to enumerate USB device on port 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Niedobrze. Potem jednak przez jakiś czas chodziło znów bezproblemowo, aż któregoś ranka komputer pozostawiony samemu sobie usiłował coś tam pogrzebać w icyboksie, który w międzyczasie zdążył przejść w tryb &amp;quot;standby&amp;quot;. Rozruszanie z tego trybu trwa dość długo (kilka sekund) i powoduje błędy w logach, które czasem skutkują, a czasem nie, błędami w warstwach wyższych. Nie wiem, czy ten standby był przyczyną, ale znowu coś się spieprzyło i jedyne, co mogłem zrobić, to restart komputera.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/SMART</id>
		<title>SMART</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/SMART"/>
				<updated>2012-03-10T13:49:49Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: Utworzył nową stronę „'''SMART''', czyli ''Self-Monitoring, Analysis and Reporting Technology'' to funkcjonalność monitoringu i autodiagnostyki w dyskach twardych.  Narzędzia: * smartm...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''SMART''', czyli ''Self-Monitoring, Analysis and Reporting Technology'' to funkcjonalność monitoringu i autodiagnostyki w dyskach twardych.&lt;br /&gt;
&lt;br /&gt;
Narzędzia:&lt;br /&gt;
* smartmontools [http://sourceforge.net/apps/trac/smartmontools/wiki] (polecenie smartctl) — to chyba najbardziej zaawansowane narzędzie&lt;br /&gt;
* libatasmart [http://www.ohloh.net/p/libatasmart] (skdump, sktest)&lt;br /&gt;
* [[man:ide-smart(8)|ide-smart]] — nie potrafi zinterpretować poszczególnych pozycji&lt;br /&gt;
&lt;br /&gt;
== SMART przez USB ==&lt;br /&gt;
&lt;br /&gt;
Żeby obsłużyć SMART w dyskach podłączanych przez USB, program musi umieć obsłużyć mostek USB, co nie zawsze jest możliwe. Smartmontools ma kilka driverów do wyboru, więc jeśli nie potrafi rozpoznać, to można popróbować z różnymi. Driver podaje się jako wartość opcji -d polecenia smartctl. Żeby wylistować dostępne drajwery, trzeba podać opcję -d bez wartości.&lt;br /&gt;
&lt;br /&gt;
Na przykład, mój dysk zewnętrzny Toshiba 400G wymagał użycia drajwera &amp;quot;usbsunplus&amp;quot;:&lt;br /&gt;
:&amp;lt;tt&amp;gt;smartctl --all /dev/sdc -d usbsunplus&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Chromium</id>
		<title>Chromium</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Chromium"/>
				<updated>2012-03-01T23:36:04Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: referrer logging&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chromium to opensource'owa baza [[chrome|chrome'a]], czyli przeglądarki [[Google|Google'a]]. Testuję ją sobie od czasu jakiegoś na [[noisy|starszej maszynce]], albowiem ma ulubiona dotąd [[opera]] zbiesiła się niemiłosiernie w [[linux|linuksiarskiej]] wersji 11., żre pamięć, silnik javascriptu rozgrzewa procesor do białości a na platformie amd64 dodatkowo wypierdziela się bez zdania racji tak średnio raz dziennie; wygląda na to, że chłopcy od opery zlali linuksiarzy totalnie, gdyż [[windows]]owe wydanie przeglądarki działa bez zarzutu. Więc zainstalowałem sobie chromium jako potencjalną alternatywę.&lt;br /&gt;
&lt;br /&gt;
Co prawda stabiliny [[debian]] 6.0 &amp;quot;squeezy&amp;quot; zawiera chromium sprzed gdzieś tak dwóch lat, wersję 6.0.cośtam, podczas gdy aktualna to 13.0, ale co mi tam - popróbuję tego, co jest w paczkach i zobaczę co i jak.&lt;br /&gt;
&lt;br /&gt;
Z tego co pamiętam (czytałem o chromie parę lat temu) nowatorskie podejście google'a polega przede wszystkim na tym, że każdy tab w przeglądarce jest obsługiwany przez osobny proces. Dzięki temu, nawet jeśli coś się zwiesi, dajmy na to przez wadliwy plugin, to inne taby będą działać nadal jak gdyby nigdy nic. Świetny pomysł na oko. Wygląda to tak, że są dwa procesy przeglądarki, trzeci proces to &amp;quot;zygota&amp;quot;, a z niego forkują się precesy &amp;quot;rendery&amp;quot;, może nie jeden na tab, ale jeden na domenę, nie wiem, w każdym razie tych procesów potomnych zygoty jest kilkanaście, a tabów mam kilkadziesiąt.&lt;br /&gt;
&lt;br /&gt;
Chromium startuje dość szybko, ale jeszcze nie natrzepałem tylu tabów, ile zwykle miewam w operze. Kończy się też sprawnie i bez marudzenia. W przeciwieństwie do opery, nie sypie się na amd64. Interfejs jest dość ubogi, brak gestów myszy i tysiąca innych miłych drobiazgów, które dostarczała opera, no ale cóż, przywyczajam się coraz bardziej - szybkość i stabilność wygrywają z ergonomią i przyzwyczajeniem.&lt;br /&gt;
&lt;br /&gt;
=== Wady ===&lt;br /&gt;
Na razie trafiłem na jedną poważną wadę programu: nie ma możliwości wyłączenia [[referrer logging]]. Podobno jest  opcja commandline --no-referrers, ale nie sprawdzałem no i nie jest to szczególnie wygodne w użyciu.&lt;br /&gt;
&lt;br /&gt;
== Chrome ==&lt;br /&gt;
&lt;br /&gt;
Chrome to full-wypas przeglądara od [[Google|Google'a]], będąca ponoć tym samym co [[chromium]] z paroma dodatkami. Wśród tych dodatków znajdują się niestety jakieś szpiclowskie mechanizmy typu unikatowe identyfikatory użytkownika, instalacji oraz wysyłanie raportów do Google'a. Dziękuję uprzejmie, pozostanę przy ciut uboższym, ale bezpieczniejszym chromium.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Magnatune</id>
		<title>Magnatune</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Magnatune"/>
				<updated>2012-02-28T01:17:33Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: Utworzył nową stronę „Magnatiuna [http://magnatune.com/] to firma próbująca sprzedawać muzykę w alternatywnym modelu biznesowym. Można sobie płacić abonament i słuchać oraz ści...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Magnatiuna [http://magnatune.com/] to firma próbująca sprzedawać muzykę w alternatywnym modelu biznesowym. Można sobie płacić abonament i słuchać oraz ściągać do woli. Można też zapłacić jednorazową opłatę (dwieście coś baksów) i czerpać pełnymi garściami do końca życia - swego lub magnatuny.&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też: ''' [[Jamendo]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:serwisy WWW]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Jamendo</id>
		<title>Jamendo</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Jamendo"/>
				<updated>2012-02-25T15:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: ciężko coś znaleźć po tagu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.jamendo.com '''Jamendo'''] — serwis z muzyką na licencjach creative commons bądź podobnych, czyli darmową do użytku niekomercyjnego. Artyści współpracujący z Jamendo mają zarabiać dzięki udziałom w przychodach z reklam emitowanych w serwise, dobrowolnym dotacjom oraz opłatom licencyjnym wymaganym dla komercyjnego wykorzystania. Innymi słowy, jedna z prób wprowadzenia alternatywnego modelu biznesowego do branży muzyczno-rozrywkowej.&lt;br /&gt;
&lt;br /&gt;
Pierwsze moje wrażenia: kategoryzacja przy pomocy tagów jest do życi... Wygląda na to, że wykonawcy sami sobie tagują swoje utwory (wytwory? potwory?), co generalnie sprowadza się do tego, że tagi są na ogół bez sensu - bo tagującemu coś się wydawało albo po prostu wykoncypował sobie, że im więcej tagów, tym lepiej. Efekt? chciałbyś na przykład znaleźć sobie coś z folku, wybierasz odpowiedni tag, a tam głównie didżej-cośtam z dance-rympałkami :(&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [[Magnatune]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:serwisy WWW]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Stow</id>
		<title>Stow</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Stow"/>
				<updated>2012-02-16T00:35:02Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: Utworzył nową stronę „'''[http://www.gnu.org/software/stow/ GNU Stow]''' to małe narzędzie napisane w perlu, wspomagające zarządzanie pakietami budowanego i instalowanego przez użytk...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.gnu.org/software/stow/ GNU Stow]''' to małe narzędzie napisane w perlu, wspomagające zarządzanie pakietami budowanego i instalowanego przez użytkownika oprogramowania.&lt;br /&gt;
&lt;br /&gt;
Pomysł jest prosty. Zamiast instalować wszystko jak leci w /usr/local/{bin,lib,include,share,...} robimy tak. Tworzymy katalog /usr/local/stow, tam będziemy instalować poszczególne pakiety w osobnych katalogach, np. /usr/local/stow/gcc-4.6.1/, /usr/local/stow/boost-1.47/ itp. Następnie przy pomocy programu stow tworzymy symlinki w katalogach /usr/local/bin itp, prowadzące do miejsc, gdzie dany pakiet został zainstalowany.&lt;br /&gt;
&lt;br /&gt;
Dzięki takiemu podejściu odnosimy dwie korzyści:&lt;br /&gt;
* wszystko jest w /usr/local/{bin,lib,...}, nie trzeba więc definiować kilometrowych zmiennych środowiska PATH, LD_LIBRARY_PATH itp.&lt;br /&gt;
* a jednocześnie wiemy, co jest skąd, bo w /usr/local/{bin,lib,...} są tylko symlinki prowadzące do /usr/local/stow/nazwa-pakietu/.&lt;br /&gt;
&lt;br /&gt;
Oczywiście program stow potrafi też &amp;quot;odinstalować&amp;quot; pakiety poprzez pousuwanie symlinków.&lt;br /&gt;
&lt;br /&gt;
Głównym problemem przy korzystaniu ze stowa jest to, że dany pakiet musi obsługiwać instalację w miejscu innym, niż docelowe. To znaczy, np. gcc-4.6.1 docelowo będzie w /usr/local, ale musimy je zainstalować w katalogu /usr/local/stow/gcc-4.6.1. W przypadku pakietów korzystających z frameworka buildowego autoconf/automake jest to proste:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr/local&lt;br /&gt;
 make&lt;br /&gt;
 make install DESTDIR=/usr/local/stow/pakiet-wersja&lt;br /&gt;
 cd /usr/local/stow/pakiet-wersja&lt;br /&gt;
 mv -vi usr/local/* .&lt;br /&gt;
 rmdir -vp usr/local&lt;br /&gt;
 cd ..&lt;br /&gt;
 stow -v pakiet-wersja&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Sprz%C4%85tanie_Debiana</id>
		<title>Sprzątanie Debiana</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Sprz%C4%85tanie_Debiana"/>
				<updated>2012-02-15T00:40:25Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Zbyt pracochłonne zadania crona */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Po instalacji bądź choćby aktualizacji [[Debian]]a okazuje się zwykle, że usiłuje on mnie uszczęśliwić kupą zupełnie niepotrzebnych [[daemon]]ów bądź ustawieniami mającymi na celu chyba tylko pożeranie zasobów oraz osłabianie bezpieczeństwa systemu. Każdorazowo muszę więc '''posprzątać''', a tu postanowiłem sobie wynotować, co i jak. Tę listę należy traktować jako pracę w toku.&lt;br /&gt;
&lt;br /&gt;
Ostatnie sprzątanie nastąpiło z okazji upgrade'u systemów z wersji 5.cośtam do 6.0.cośtam, na podstawie [[noisy|noisiego]].&lt;br /&gt;
&lt;br /&gt;
=== Zmiany dot. [[KDE]] 4.4 ===&lt;br /&gt;
Tutaj niestety zmiany dotyczą tylko konkretnego użytkownika, mi to specjalnie nie przeszkadza, ale w systemie z wieloma użytkownikami byłoby to mało praktyczne, żeby na każdym koncie powtarzać poniższe kroki.&lt;br /&gt;
&lt;br /&gt;
* Wyłączenie &amp;quot;efektów pulpitu&amp;quot;, czyli różnych męczących animacji i innych wodotrysków: odznaczyć opcję ''Ustawienia systemowe / Pulpit / Efekty pulpity / Włącz efekty pulpitu''&lt;br /&gt;
* Wyłączenie zasobożernego potwora o nazwie [[nepomuk]]a: ''Ustawienia systemowe / Zaawansowane / Wyszukiwanie na pulpice / Włącz pulpit semantyczny Nepomuk''.&lt;br /&gt;
* Wyłączenie [[akonadi]], następnego syfu z tej samej stajni, co nepomuk. Tego w sumie nie musiałem robić, gdyż mu się coś popieprzyło z dostępem do bazy danych i sam z siebie przestał działać :)&lt;br /&gt;
&lt;br /&gt;
=== Niepotrzebne daemony ===&lt;br /&gt;
&lt;br /&gt;
Niepotrzebne [[daemon]]y niepotrzebnie pochłaniają zasoby systemu oraz narażają na szwank jego bezpieczeństwo, zwłaszcza gdy otwierają jakieś porty i obsługują jakieś żądania. Poleceniem [[man:netstat(8)|netstat]] można sprawdzić, co sobie siedzi na poszczególnych portach tcp i udp:&lt;br /&gt;
&lt;br /&gt;
 netstat -plunt&lt;br /&gt;
&lt;br /&gt;
Do zbędnych daemonów w moich przypadku zaliczają się:&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:avahi (software)|avahi-daemon]] – jakieś cudo do &amp;quot;zeroconfu&amp;quot; sieci lokalnych. Nie potrzebuję, nie używam i nie lubię. Na szczęście w tej wersji debiana można po ludzku odinstalować i cześć: &amp;lt;code&amp;gt;aptitude remove avahi-daemon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Korekty w konfiguracji systemu ===&lt;br /&gt;
&lt;br /&gt;
==== Wyłączenie obsługi IPv6 ====&lt;br /&gt;
&lt;br /&gt;
Nie używam IPv6, mój ISP nie obsługuje, więc po co mi to? Żeby martwić się dodatkowo ustawieniami ip6tables? Już to kiedyś wyłączałem, a teraz muszę zrobić ponownie.&lt;br /&gt;
&lt;br /&gt;
W Debianie 6.0 (squeezy) sposób wyłączenia IPv6 uległ zmianie. Kiedyś trzba było przyblokować ładowanie modułu jądra o nazwie ipv6, ale teraz, w jądrze 2.6.32, nie ma już takiego modułu, prawdopodobnie obsługa IPv6 jest wbudowana na stałe. Dlatego należy wyłączyć ją poprzez odpowiedni wpis w /etc/sysctl.conf:&lt;br /&gt;
&lt;br /&gt;
 net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
&lt;br /&gt;
a następnie zrestartować komputer. Może być konieczne podkonfigurowanie niektórych programów, zob. [http://wiki.debian.org/DebianIPv6#In_squeeze].&lt;br /&gt;
&lt;br /&gt;
==== Usuwanie starych jąder ====&lt;br /&gt;
&lt;br /&gt;
Najnowsze działa, więc po co mi te stare?&lt;br /&gt;
&lt;br /&gt;
 aptitude search linux-image | grep ^i&lt;br /&gt;
&lt;br /&gt;
Z listy zainstalowanych jąder wybrać te do usunięcia. U mnie było to:&lt;br /&gt;
&lt;br /&gt;
 aptitude purge linux-image-2.6.24.7 linux-image-2.6.26-{1,2}-amd64&lt;br /&gt;
&lt;br /&gt;
==== Usunięcie starego gruba ====&lt;br /&gt;
&lt;br /&gt;
Zgodnie z sugestiami skryptów upgrade'ujących, kazałem sobie zainstalować nowego gruba (wersja 2) jako chainload ze starego (wersja 1.cośtam). Nowy grub zdaje się działać poprawnie, więc zapuściłem polecany skrypt upgrade'ujący:&lt;br /&gt;
&lt;br /&gt;
 upgrade-from-grub-legacy&lt;br /&gt;
&lt;br /&gt;
oraz usunąłęm (właściwie to przeniosłem) pliki /boot/grub/menu.lst*.&lt;br /&gt;
&lt;br /&gt;
Na mojej [[root|drugiej maszynce]] to nie było konieczne, gdyż od razu grub się zupgrade'ował bez tych ceregieli z chainloaderem, przypuszczalnie dlatego, że tam miałem niestandardowo postawionego gruba w katalogu /boot/boot/grub (przechodziłęm z lilo na gruba kiedyś i tak jakoś wyszło).&lt;br /&gt;
&lt;br /&gt;
==== Skrypty startowe privoxy ====&lt;br /&gt;
Mam dwie instancje privoxy. Niedoróba przy stopowaniu powoduje, że chcę zatrzymać (lub zrestartować) jedną, a zabijane są obie. Wykomentowanie drugiego wywołania start-stop-daemon w funkcji do_stop() rozwiązuje problem.&lt;br /&gt;
&lt;br /&gt;
==== Zbyt pracochłonne zadania crona ====&lt;br /&gt;
&lt;br /&gt;
Polecenie [[man:locate(1)|locate]] z pakietu bodajże findutils jest bardzo pożytecznym narzędziem pomagającym w wyszukiwaniu plików o nazwach czy ścieżkach pasujących do zadanego wzorca. Korzysta z bazy danych, która jest okresowo aktualizowana - standardowo codziennie, a wykonuje to skrypt /etc/cron.daily/locate. Niestety, przy większych dyskach, zwłaszcza zawierających mnóstwo plików i katalogów, proces takiej aktualizacji może trwać dość długo (rzędu kilkudziesięciu minut). Dyski w tym czasie mielą, cache jest obciążany przeszukiwaniem katalogów, przez to system staje się mniej mułowaty i mniej reaktywny.&lt;br /&gt;
&lt;br /&gt;
W końcu doszedłem do wniosku, że w zupełności wystarczy mi cotygodniowa aktualizacja bazy danych locate. Technicznie sprawa jest trywialna: wystarczy przenieść plik /etc/cron.daily/locate do katalogu /etc/cron.weekly. Żeby zachować zgodność z konwencjami Debiana, oraz uniknąć sytuacji, że w przyszłości, po aktualizacji oprogramowania, odmienne wersje skryptu znajdą się w obu lokalizacjach, należy użyć polecenia dpkg-divert:&lt;br /&gt;
&lt;br /&gt;
 dpkg-divert --divert /etc/cron.weekly/locate --rename /etc/cron.daily/locate&lt;br /&gt;
&lt;br /&gt;
To spowoduje, że Debian zapamięta nową lokalizację tego pliku. Dzięki temu, gdy pojawi się zaktualizowana jego wersja, trafi tam, gdzie powinna.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Macchanger</id>
		<title>Macchanger</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Macchanger"/>
				<updated>2012-02-12T14:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:macchnager}}[http://www.alobbs.com/macchanger '''macchanger'''] to poręczny programik pozwalający zmienić adres MAC karty sieciowej. Zmiana na ogół nie jest trwała, więc najlepiej macchanger wywołać gdzieś ze skryptów startowych:&lt;br /&gt;
&lt;br /&gt;
Sposób użycia:&lt;br /&gt;
* Pokaż aktualny adres MAC&lt;br /&gt;
 macchanger -s eth0&lt;br /&gt;
* Zmień na jakiś inny &amp;quot;tego samego typu&amp;quot; (nie wiem, o co chodzi z tym typem)&lt;br /&gt;
 macchanger -a eth0&lt;br /&gt;
* Zmień na inny &amp;quot;dowolnego typu&amp;quot; (jw., ale miałem potem problemy z autoryzacją [[PPPoE]])&lt;br /&gt;
 macchanger -A eth0&lt;br /&gt;
* Zmień na inny, będący zupełnie losowym ciągiem bajtów:&lt;br /&gt;
 macchanger -r eth0&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Hardlink</id>
		<title>Hardlink</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Hardlink"/>
				<updated>2012-02-11T14:12:59Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: nieistotne doprecyzowania&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:hardlink}}&lt;br /&gt;
'''[http://jak-linux.org/projects/hardlink/ hardlink]''' to program wyszukujący zduplikowane pliki i zamieniający nadmiarowe kopia linkami (hardlinkami).&lt;br /&gt;
&lt;br /&gt;
Przydał mi się przy kopiowaniu moich płyt CD/DVD z danymi sprzed lat. Otóż w pewnym okresie miałem taki zwyczaj, że nagrywając na płycie robiłem dwie (czasem nawet trzy) hierarchie katalogów z tymi samymi plikami: jedna &amp;quot;normalna&amp;quot;, druga - dla [[windows]], bez polskich znaków itp. Oczywiście zapisywanie dwóch kopii plików byłoby głupie, dlatego więc wykorzystywałem hardlinki. Odpowiednie skrypty [[bash|powłoki]] dość zgrabnie załatwiały dla mnie sprawę.&lt;br /&gt;
&lt;br /&gt;
Teraz, po długiej przerwie, zgrywam sobie w ramach porządków i przeglądu te płyty i co się okazuje: filesystem iso9660 pokazuje dla tych polinkowanych plików różne inode'y, przez co narzędzia kopiujące tworzyły oczywiście na dysku kopie zamiast linków. Jestem pewien, że kiedyś (lata temu) działało to jak trzeba, tzn. z hardlinkami zamiast kopii.&lt;br /&gt;
&lt;br /&gt;
Tak więc obchodzę problem kopiując sobie te zduplikowane katalogi na dysk, następnie zapuszczam program hardlink i on robi porządek. Szkoda, że to narzędzie nie ma opcji działania &amp;quot;w locie&amp;quot;, tj. podczas kopiowania plików z płyty na dysk.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Ddrescue</id>
		<title>Ddrescue</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Ddrescue"/>
				<updated>2012-02-11T13:49:20Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ddrescue}}&lt;br /&gt;
[http://www.gnu.org/software/ddrescue/ddrescue.html '''ddrescue'''] to narzędzie, które może być przydatne np. do ratowania, czego się tylko da, z uszkodzonych płyt cd  / dvd.&lt;br /&gt;
&lt;br /&gt;
==== Przykłady użycia ====&lt;br /&gt;
&lt;br /&gt;
Czytaj płytę z domyślnymi ustawieniami i zapisz w pliku image.iso. W pliku image.log program zapisuje sobie dodatkowe informacje; ten plik jest opcjonalny, ale warto go podać, bo dzięki niemu można przerwać i kontynuwać później, albo ponowić próbę odczytu uszkodzonych sektorów.&amp;lt;ref&amp;gt;W praktyce nie zawsze to działa, program potrafi narzekać, że log, który sam wytworzył, jest uszkodzony.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ddrescue /dev/cdrom image.iso image.log&lt;br /&gt;
&lt;br /&gt;
Jak wyżej, ale specyfikujemy liczbę prób odczytu uszkodzonych bloków:&lt;br /&gt;
&lt;br /&gt;
 ddrescue -r5 /dev/cdrom image.iso image.log&lt;br /&gt;
&lt;br /&gt;
Na początek zalecają jednak użycie opcji -n, która ma powodować, że nie dokłada szczególnych starań do pracy nad błędnymi sektorami (a to może trwać cholernie długo, np. kilka godzin):&lt;br /&gt;
&lt;br /&gt;
 ddrescue -n /dev/cdrom image.iso image.log&lt;br /&gt;
&lt;br /&gt;
A dopiero potem, gdy chcemy popracować nad błędami, puścić program ponownie z innymi opcjami i tym samym plikiem image.log&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html ddrescue online manual]&lt;br /&gt;
&lt;br /&gt;
{{przypisy}}&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Root_-_konfiguracja_w_lutym_2012</id>
		<title>Root - konfiguracja w lutym 2012</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Root_-_konfiguracja_w_lutym_2012"/>
				<updated>2012-02-05T13:33:39Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: root w 2012, wyodrębniony z głównego plus modyfikacje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Konfiguracja sprzętowa i programowa [[root]]a''', stan na luty 2012.&lt;br /&gt;
&lt;br /&gt;
=== Sprzęt ===&lt;br /&gt;
&lt;br /&gt;
Aktualna konfiguracja sprzętowa &amp;quot;roota&amp;quot; to:&lt;br /&gt;
&lt;br /&gt;
* procesor: AMD Athlon64 X2 5000+ (2,6 GHz); OPN: [http://products.amd.com/en-us/DesktopCPUDetail.aspx?id=40 ADO5000DOBOX]; SN: X459172K70062&lt;br /&gt;
* płyta główna: [http://www.asus.com/products.aspx?l1=3&amp;amp;l2=101&amp;amp;l3=308&amp;amp;l4=0&amp;amp;model=1181&amp;amp;modelmenu=2 Asus M2N-E]&lt;br /&gt;
** chipset: nVidia MCP55&lt;br /&gt;
** wbudowana karta sieciowa&lt;br /&gt;
** wbudowana karta dźwiękowa&lt;br /&gt;
* pamięć: 2 GB ([http://www.ec.kingston.com/ecom/configurator_new/partsinfo.asp?root=europe&amp;amp;LinkBack=http://www.kingston.com&amp;amp;ktcpartno=KVR800D2N5K2/2G KVR800D2N5K2/2G], 2 kości po 1GB, 800 MHz)&lt;br /&gt;
* dysk /dev/sda: WDC WD2500KS-00MJB0, 250 GB, SATA&lt;br /&gt;
* dysk /dev/sdb: [[WD Caviar Blue|WD500AAKS]] 500 GB, SATA&lt;br /&gt;
* nagrywarka DVD: NEC DVD-RW ND-3500AG&lt;br /&gt;
* karta graficzna: Asus EN7300TC512 (nVidia Corporation GeForce 7300 LE (rev a1))&lt;br /&gt;
* karta sieciowa Air Live 10/100Mbps PCI Network Adapter, LFE-8139HTX (chipset: Realtek)&lt;br /&gt;
* zasilacz: Modecom Feel II-350 ATX (350W)&lt;br /&gt;
* wentylator na procku &amp;quot;boksowy&amp;quot;&lt;br /&gt;
* odłączony dodatkowy wentylator u góry obudowy&lt;br /&gt;
&lt;br /&gt;
=== Oprogramowanie ===&lt;br /&gt;
&lt;br /&gt;
* system: [[Debian]] Linux 6.0 &amp;quot;squeeze&amp;quot; (architektura: x86)&lt;br /&gt;
* jądro 2.6.32-5-686 #1 SMP (z dystrybucji Debiana)&lt;br /&gt;
&lt;br /&gt;
==== Sterowniki ====&lt;br /&gt;
&lt;br /&gt;
Sterowniki wynotowane w 2008, jeszcze z czasów Debiana 4.0.&lt;br /&gt;
* dysk IDE: '''amd74xx'''&lt;br /&gt;
* dysk SATA: '''sata_nv'''&lt;br /&gt;
* wbudowany układ dźwiękowy obsługiwany jest przez driver '''snd-hda-intel'''&lt;br /&gt;
* karta sieciowa PCI: '''8139too'''&lt;br /&gt;
&lt;br /&gt;
=== Informacje ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
processor       : 0&lt;br /&gt;
vendor_id       : AuthenticAMD&lt;br /&gt;
cpu family      : 15&lt;br /&gt;
model           : 107&lt;br /&gt;
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+&lt;br /&gt;
stepping        : 2&lt;br /&gt;
cpu MHz         : 2611.980&lt;br /&gt;
cache size      : 512 KB&lt;br /&gt;
physical id     : 0&lt;br /&gt;
siblings        : 2&lt;br /&gt;
core id         : 0&lt;br /&gt;
cpu cores       : 2&lt;br /&gt;
apicid          : 0&lt;br /&gt;
initial apicid  : 0&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 1&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch&lt;br /&gt;
bogomips        : 5223.96&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
cache_alignment : 64&lt;br /&gt;
address sizes   : 40 bits physical, 48 bits virtual&lt;br /&gt;
power management: ts fid vid ttp tm stc 100mhzsteps&lt;br /&gt;
&lt;br /&gt;
processor       : 1&lt;br /&gt;
vendor_id       : AuthenticAMD&lt;br /&gt;
cpu family      : 15&lt;br /&gt;
model           : 107&lt;br /&gt;
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+&lt;br /&gt;
stepping        : 2&lt;br /&gt;
cpu MHz         : 2611.980&lt;br /&gt;
cache size      : 512 KB&lt;br /&gt;
physical id     : 0&lt;br /&gt;
siblings        : 2&lt;br /&gt;
core id         : 1&lt;br /&gt;
cpu cores       : 2&lt;br /&gt;
apicid          : 1&lt;br /&gt;
initial apicid  : 1&lt;br /&gt;
fdiv_bug        : no&lt;br /&gt;
hlt_bug         : no&lt;br /&gt;
f00f_bug        : no&lt;br /&gt;
coma_bug        : no&lt;br /&gt;
fpu             : yes&lt;br /&gt;
fpu_exception   : yes&lt;br /&gt;
cpuid level     : 1&lt;br /&gt;
wp              : yes&lt;br /&gt;
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch&lt;br /&gt;
bogomips        : 5224.00&lt;br /&gt;
clflush size    : 64&lt;br /&gt;
cache_alignment : 64&lt;br /&gt;
address sizes   : 40 bits physical, 48 bits virtual&lt;br /&gt;
power management: ts fid vid ttp tm stc 100mhzsteps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lspci&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)&lt;br /&gt;
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)&lt;br /&gt;
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)&lt;br /&gt;
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)&lt;br /&gt;
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)&lt;br /&gt;
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)&lt;br /&gt;
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)&lt;br /&gt;
00:06.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2)&lt;br /&gt;
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)&lt;br /&gt;
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration&lt;br /&gt;
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map&lt;br /&gt;
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller&lt;br /&gt;
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control&lt;br /&gt;
01:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)&lt;br /&gt;
02:00.0 VGA compatible controller: nVidia Corporation G72 [GeForce 7300 LE] (rev a1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Root/Root_-_konfiguracja_po_modernizacji_w_2008</id>
		<title>Root/Root - konfiguracja po modernizacji w 2008</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Root/Root_-_konfiguracja_po_modernizacji_w_2008"/>
				<updated>2012-02-05T13:21:41Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: aktualizacja linku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Garść szczegółów dot. sprzętowej i programowej '''konfiguracji [[root]]a''' po modernizacji przeprowadzonej w marcu 2008 r. Uwzględniono późniejsze, drobne modyfikacji sprzętowe (dysk) i programowe (aktualizacja systemu), aż do roku 2011 włącznie.&lt;br /&gt;
&lt;br /&gt;
=== Sprzęt ===&lt;br /&gt;
&lt;br /&gt;
* procesor: AMD Athlon64 X2 5000+ (2,6 GHz); OPN: [http://products.amd.com/en-us/DesktopCPUDetail.aspx?id=40 ADO5000DOBOX]; SN: X459172K70062&lt;br /&gt;
* płyta główna: [http://www.asus.com/Motherboards/AMD_AM2/M2NE/ Asus M2N-E]&lt;br /&gt;
** chipset: nVidia MCP55&lt;br /&gt;
** wbudowana karta sieciowa&lt;br /&gt;
** wbudowana karta dźwiękowa&lt;br /&gt;
* pamięć: 2 GB ([http://www.ec.kingston.com/ecom/configurator_new/PartsInfo_disc.asp?root=us&amp;amp;LinkBack=http://www.kingston.com&amp;amp;ktcpartno=KVR800D2N5K2/2G KVR800D2N5K2/2G], 2 kości po 1GB, 800 MHz)&lt;br /&gt;
* &amp;lt;s&amp;gt;dysk /dev/hda: WDC WD800JB-00ETA0, 80 GB, IDE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;dysk WDC WD800JB-00JJA0, 80 GB, IDE&amp;lt;/s&amp;gt; pozostał niestety niepodłączony — nowa płyta miała tylko jedno gniazdo IDE&lt;br /&gt;
* dysk /dev/sda: WDC WD2500KS-00MJB0, 250 GB, SATA&lt;br /&gt;
* 31 grudnia 2008 doszedł nowy dysk: [[WD Caviar Blue|WD500AAKS]] 500 GB, SATA&lt;br /&gt;
* nagrywarka DVD: NEC DVD-RW ND-3500AG&lt;br /&gt;
* karta graficzna: Asus EN7300TC512 (nVidia Corporation GeForce 7300 LE (rev a1))&lt;br /&gt;
* karta sieciowa Air Live 10/100Mbps PCI Network Adapter, LFE-8139HTX (chipset: Realtek)&lt;br /&gt;
* zasilacz: Modecom Feel II-350 ATX (350W)&lt;br /&gt;
* wentylator na procku &amp;quot;boksowy&amp;quot;&lt;br /&gt;
* dodatkowy wentylator u góry obudowy&lt;br /&gt;
&lt;br /&gt;
Jeden z dysków IDE się nie załapał (brak gniazda na płycie). Potem pozbyłem się też drugiej osiemdziesiątki, ale nie pamiętam już, dlaczego. Przecież na jednym kablu IDE mogłem pociągnąć zarówno DVD, jak i dysk.&lt;br /&gt;
&lt;br /&gt;
=== Oprogramowanie ===&lt;br /&gt;
&lt;br /&gt;
Początkowo bez zmian, a więc:&lt;br /&gt;
* system: Debian Linux 4.0 &amp;quot;etch&amp;quot; (architektura: x86)&lt;br /&gt;
* jądro: 2.6.18-6-k7 #1 SMP (z dystrybucji Debiana)&lt;br /&gt;
&lt;br /&gt;
W styczniu 2011 r. system został zaktualizowany do nowszej wersji, zresztą na krótka przed tym, gdy pojawiła się jeszcze nowsza stabilna.&lt;br /&gt;
* system: Debial Linux 5.0 &amp;quot;lenny&amp;quot; (architektura: x86)&lt;br /&gt;
* jądro: 2.6.26-2-686 #1 SMP&lt;br /&gt;
&lt;br /&gt;
==== Sterowniki ====&lt;br /&gt;
&lt;br /&gt;
Sterowniki (wynotowane w 2008, jeszcze z czasów Debiana 4.0)&lt;br /&gt;
* dysk IDE: '''amd74xx'''&lt;br /&gt;
* dysk SATA: '''sata_nv'''&lt;br /&gt;
* wbudowany układ dźwiękowy obsługiwany jest przez driver '''snd-hda-intel'''&lt;br /&gt;
* wbudowana karta sieciowa: '''forcedeth'''&lt;br /&gt;
* karta sieciowa PCI: '''8139too'''&lt;br /&gt;
&lt;br /&gt;
=== Informacje ===&lt;br /&gt;
&lt;br /&gt;
* /proc/cpuinfo&lt;br /&gt;
 processor      : 0&lt;br /&gt;
 vendor_id      : AuthenticAMD&lt;br /&gt;
 cpu family     : 15&lt;br /&gt;
 model          : 107&lt;br /&gt;
 model name     : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+&lt;br /&gt;
 stepping       : 2&lt;br /&gt;
 cpu MHz        : 2612.137&lt;br /&gt;
 cache size     : 512 KB&lt;br /&gt;
 physical id    : 0&lt;br /&gt;
 siblings       : 2&lt;br /&gt;
 core id        : 0&lt;br /&gt;
 cpu cores      : 2&lt;br /&gt;
 fdiv_bug    ===    : no&lt;br /&gt;
 hlt_bug        : no&lt;br /&gt;
 f00f_bug       : no&lt;br /&gt;
 coma_bug       : no&lt;br /&gt;
 fpu            : yes&lt;br /&gt;
 fpu_exception  : yes&lt;br /&gt;
 cpuid level    : 1&lt;br /&gt;
 wp             : yes&lt;br /&gt;
 flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc [6]&lt;br /&gt;
 bogomips       : 5227.99&lt;br /&gt;
&lt;br /&gt;
 processor      : 1&lt;br /&gt;
 vendor_id      : AuthenticAMD&lt;br /&gt;
 cpu family     : 15&lt;br /&gt;
 model          : 107&lt;br /&gt;
 model name     : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+&lt;br /&gt;
 stepping       : 2&lt;br /&gt;
 cpu MHz        : 2612.137&lt;br /&gt;
 cache size     : 512 KB&lt;br /&gt;
 physical id    : 0&lt;br /&gt;
 siblings       : 2&lt;br /&gt;
 core id        : 1&lt;br /&gt;
 cpu cores      : 2&lt;br /&gt;
 fdiv_bug       : no&lt;br /&gt;
 hlt_bug        : no&lt;br /&gt;
 f00f_bug       : no&lt;br /&gt;
 coma_bug       : no&lt;br /&gt;
 fpu            : yes&lt;br /&gt;
 fpu_exception  : yes&lt;br /&gt;
 cpuid level    : 1&lt;br /&gt;
 wp             : yes&lt;br /&gt;
 flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc [6]&lt;br /&gt;
 bogomips       : 5224.15&lt;br /&gt;
&lt;br /&gt;
* lspci&lt;br /&gt;
 00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)&lt;br /&gt;
 00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)&lt;br /&gt;
 00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)&lt;br /&gt;
 00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)&lt;br /&gt;
 00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)&lt;br /&gt;
 00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)&lt;br /&gt;
 00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
 00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
 00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)&lt;br /&gt;
 00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)&lt;br /&gt;
 00:06.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2)&lt;br /&gt;
 00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)&lt;br /&gt;
 00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)&lt;br /&gt;
 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration&lt;br /&gt;
 00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map&lt;br /&gt;
 00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller&lt;br /&gt;
 00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control&lt;br /&gt;
 01:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)&lt;br /&gt;
 02:00.0 VGA compatible controller: nVidia Corporation GeForce 7300 LE (rev a1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[kategoria:sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/WD_Caviar_Green</id>
		<title>WD Caviar Green</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/WD_Caviar_Green"/>
				<updated>2012-02-04T20:23:22Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: konkretniejsze określenie czasu aniżeli &amp;quot;ostatnio&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;W styczniu bądź lutym 2012 r. nabyłem dwa dwuterabajtowe dyski '''WD Caviar Green''' model '''WD20EARX'''. Parę miesięcy temu, po jakimś kataklizmie na Dalekim Wschodzie, ceny dysków skoczyły w górę mniej więcej dwukrotnie; za te &amp;quot;griny&amp;quot; płaciłem po niemal 500 zł. Te dyski, włożone do zewnętrznej kieszeni [[Icy Box]], pracującej w trybie RAID-1, mają być przechowalnią moich rzadziej używanych danych. Podłączone będą najprawdopodobniej na stałe do [[root]]a.&lt;br /&gt;
&lt;br /&gt;
== Zobacz też: ==&lt;br /&gt;
* [http://wdc.com/en/products/products.aspx?id=120 Strona producenta] ([[media:WD_Caviar_Green_Spec_Sheet.pdf|Specyfikacja dysków serii Green, pdf, kopia lokalna]])&lt;br /&gt;
* [[WD Caviar Blue]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Nepomuk</id>
		<title>Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Nepomuk"/>
				<updated>2012-01-22T21:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: ref&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Nepomuk''' to indekser i wyszukiwarka plików z paroma dodatkowymi funkcjami, zintegrowana z [[KDE]] 4.4. W bełkotliwej nowomowie autorów projektu, program ów to podstawa ''social semantic desktop'' i wykonuje rozliczne, ważne i ezoteryczne funkcje (dzięki którym zapewne udało się wyrwać ładną kasę w ramach dofinansowania nowatorskich projektów przez Komisję Europejską&amp;lt;ref&amp;gt;http://en.wikipedia.org/w/index.php?title=NEPOMUK_(framework)&amp;amp;oldid=454446884&amp;lt;/ref&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ja co prawda tych wszystkich odkrywczych funkcjonalności nie dostrzegłem, za to upgradzie [[debian]]a z wersji 5 do 6 i związanej z tym aktualizacji KDE z wersji 3.5 do 4.4.5 szybko zauważyłem, że dyski rzężą, wentylator na procku kręci się jak oszalały, wolna pamięć kurczy się w zastraszającym tempie a swap puchnie.&lt;br /&gt;
&lt;br /&gt;
Po krótkiej inwestygacji odkryłem winowajcę: kilka procesów o dziwacznych nazwach w rodzaju nepomuk-cośtam czy virtuoso bezlitośnie pożerało zasoby [[root|mojego nienajmłodszego już przecież peceta]]. Poszukałem o tym całym nepomuku w [[google|guglu]]. Okazuje się, że rzesze userów pragną gorąco pozbyć się tego potwora, no ale autorzy wiele sobie z tego nie robią (nic dziwnego, w końcu wyrwali na to paraście baniek...). Trzeba więc sobie jakoś z tym poradzić.&lt;br /&gt;
&lt;br /&gt;
Początkowo postanowiłem dać temu ustrojstwu szansę: może, wbrew pozorom, będzie z tego jakiś pożytek? Chciałem jednak ograniczyć trochę zużycie zasobów oraz sprawić niejaką ulgę moim już paroletnim dyskom. Odszukałem w ustawieniach odpowiednią pozycję i zmieniłem z domyślnej indeksacji całego katalogu domowego na nieco przemyślniej dobrany zestaw katalogów. Można też ustawić rozmiar bazy danych nepomuka, było fabrycznie 50 MB, ale szybko się okazało, że to ustawienie jest ignorowane.&lt;br /&gt;
&lt;br /&gt;
Powyższe jednak to było za mało. Procesy nepomuka nadal puchły, szybko dochodząc pod 1 GB pamięci wirtualnej. Po paru próbach doszedłem do dość sensownego, jak mi się wydaje, rozwiązania, polegającego na podstawieniu jednej z binarek skryptem, w którym narzuciłem kilka ograniczeń. Ta binarka to był program nepomukservicestub. Co prawda bardziej obiecująco wyglądał program nepomukserver, będący parentem chyba wszystkich pozostałych. Jednak jego podmiana okazała się kłopotliwa, gdyż czasami odtwarzał się jako element KDE-owskiej sesji i wówczsa mój skrypt-zamiennik nie był uruchamiany. Ale sam &amp;quot;serwer&amp;quot; wiele zamieszania nie robił, więc skupiłem się na &amp;quot;serwisie&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Żeby zrobić to &amp;quot;jak trzeba&amp;quot; użyłem polecenia [[man:dpkg-divert(8)|dpkg-divert]] do przemianowania oryginalnego programu:&lt;br /&gt;
&lt;br /&gt;
 dpkg-divert --divert  /usr/bin/nepomukservicestub.real  --rename /usr/bin/nepomukservicestub&lt;br /&gt;
&lt;br /&gt;
a pod oryginalną nazwą umieściłem następujący skrypt:&lt;br /&gt;
&lt;br /&gt;
 #! /bin/bash&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;$0 $@&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
 set -x&lt;br /&gt;
 [[man:renice(1)|renice]] 19 $$&lt;br /&gt;
 [[man:chrt(1)|chrt]] -i -p 0 $$&lt;br /&gt;
 [[man:ionice(1)|ionice]] -c3 -p$$&lt;br /&gt;
 ulimit -v $((256 * 1024))&lt;br /&gt;
 sleep 1&lt;br /&gt;
 exec /usr/bin/nepomukservicestub.real &amp;quot;$@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(Przy okazji odkryłem polecenie [[chrt]], będące interfejsem do funkcji systemowych [[man:sched_setscheduler(2)|sched_setscheduler]] i [[man:sched_getscheduler(2)|sched_getscheduler]]; kilka lat temu sam musiałem na swoje potrzeby napisać tego rodzaju programik.)&lt;br /&gt;
&lt;br /&gt;
Co robi ten skrypcik? Po kolei:&lt;br /&gt;
* &amp;lt;tt&amp;gt;renice 19 $$&amp;lt;/tt&amp;gt; – ustawia najniższy uniksowy priorytem bieżącego procesu&lt;br /&gt;
* &amp;lt;tt&amp;gt;chrt -i -p 0 $$&amp;lt;/tt&amp;gt; – ustawia politykę schedulera dla bieżacego procesu na ''idle'', tzn. teoretycznie proces dostanie przydział czasu procesora tylko wtedy, gdy nie będzie niczego ciekawszego do roboty&lt;br /&gt;
* &amp;lt;tt&amp;gt;ionice -c3 -p$$&amp;lt;/tt&amp;gt; – ustawia scheduling I/O na ''idle'', co teoretycznie oznacza, że operacje wejścia/wyjścia procesu będą wykonywane tylko wówczas, kiedy nie będzie nic lepszego do roboty&lt;br /&gt;
* &amp;lt;tt&amp;gt;ulimit -v $((256 * 1024))&amp;lt;/tt&amp;gt; – ogranicza pamięć wirtualną (RAM + swap) przydzieloną procesowi do 256 MB&lt;br /&gt;
&lt;br /&gt;
A następnie uruchamia oryginalną binarkę /usr/bin/nepomukservicestub.real.&lt;br /&gt;
&lt;br /&gt;
Mimo to po jakimś czasie stwierdziłem, że wszystkie rzekome pożytki płynące z &amp;quot;semantycznych desktopów&amp;quot; nie rekompensują nadpobudliwego nepomuka i całej ferajny (strigi, virtuoso) i po prostu wyłączyłem w ustawieniach KDE całe to badziewie. Niestety, wyłączenie to obowiązuje dla konkretnego użytkownika. W moim przypadku nie jest to wielki problem, ale na wszelki wypadek pozostawiłem powyższy skrypt ograniczający zżeranie zasobów.  W efekcie chodzi mi tylko nepomukserver, zżera &amp;quot;tylko&amp;quot; 64 MB pamięci, na razie go zostawię, ale być może w przyszłości spróbuję bardziej stanowczo unieszkodliwić to semantyczne nieporozumienie. &lt;br /&gt;
&lt;br /&gt;
{{przypisy}}&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]][[kategoria:linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Ebooki</id>
		<title>Ebooki</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Ebooki"/>
				<updated>2012-01-08T23:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Polskie */ publio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:ebooki}}'''Ebooki''', jako alternatywę dla tradycyjnych książek, &amp;quot;odkryłem&amp;quot; zaledwie kilka miesięcy temu i od tego czasu bardzo mnie fascynują.&lt;br /&gt;
&lt;br /&gt;
== Serwisy tematyczne ==&lt;br /&gt;
&lt;br /&gt;
Najczęściej zaglądam na prowadzony przez Roberta Drózda [http://swiatczytnikow.pl/ Świat Czytników]&amp;lt;ref&amp;gt;''Świat Czytników'' dawniej nazywał się ''Świat Kindle'', ale że autor jest powiązany jakimś &amp;quot;programem partnerskim&amp;quot; z Amazonem, to musiał na życzenie tego ostatniego zmienić nazwę serwisu tak, by nie zawierała słowa ''kindle''&amp;lt;/ref&amp;gt;. Nie da się nie zauważyć silnego skrzywienia w stronę kindle'a, ale mimo to serwis jest użyteczny także dla użytkowników [[czytniki e-booków|innych urządzeń]]. Oprócz artykułów dotyczących technologii, autor informuje także o aktualnych promocjach. Od niedawna jest tam też bardzo obiecująca [http://ebooki.swiatczytnikow.pl porównywarka cen e-książek].&lt;br /&gt;
&lt;br /&gt;
Parę razy odwiedzałem też [http://www.eksiazki.org/ eksiążki.org] i prowadzony przez Justynę Zienkiewicz, studentkę specjalizacji &amp;quot;biblioteki cyfrowe&amp;quot;, [http://e-book.info.pl/ e-book.info.pl]. Aktywność tych stron jakby zamarła w marcu 2012 r.&lt;br /&gt;
&lt;br /&gt;
== Księgarnie ==&lt;br /&gt;
&lt;br /&gt;
=== Zagraniczne ===&lt;br /&gt;
&lt;br /&gt;
* [http://shop.oreilly.com/category/ebooks.do O'Reilly] - znane i zasłużone wydawnictwo publikuje ebooki bez DRM-ów i tego typu bzdetów. Godne polecenia. Książki głównie z zakresu informatyki i programowania.&lt;br /&gt;
&lt;br /&gt;
=== Polskie ===&lt;br /&gt;
&lt;br /&gt;
* [http://virtualo.pl/ebook/nd1c2/ Virtualo.pl] - sklep z ebookami należący do empiku. Wygląda całkiem do rzeczy. Dość szeroki, jak na krajowe warunki oczywiście, asortyment i słuszne kierunki rozwoju – najpierw namówił część wydawców na format Mobi bez DRM-ów ale ze &amp;quot;znakiem wodnym&amp;quot;, bynajmniej nie dlatego, że zrozumieli absurd drm-ów, ale dlatego, że chyba nie mogą tego zrobić z plikami dedykowanymi dla kindle'a (Amazon bodajże nie udostępnia innym swoich drm-ów). Potem nakłonił ich (przynajmniej niektórych) do publikowania także ePubów bez DRM-ów. Jednak wciąż większość pozycji w księgarni to splugawione DRM-ami epuby i pdf-y. Wprowadzili też coś, o co miałem się nawet upomnieć: checkbox &amp;quot;bez DRM&amp;quot; w wyszukiwarce :) Brawo!&lt;br /&gt;
* [http://ebook.pl ebook.pl]&lt;br /&gt;
* [[ebookpoint.pl]] ([http://ebookpoint.pl/ link]) - sklep Helionu, książki ze znakiem wodnym, głównie jakieś poradniki i takie tam&lt;br /&gt;
* [http://empik.com/ebooki empik] – i oni w końcu, w lutym bądź marcu 2012 r., po eksperymentach ze swoją spółką zależną prowadzącą sklep Virtualo, wstąpili do grona sprzedawców bezdeeremowych&lt;br /&gt;
* [http://www.nexto.pl/ebooki_c1015.xml?_order=-5 Nexto.pl]&lt;br /&gt;
* [http://bookoteka.pl/ebooki Bookoteka] - niewielki wybór raczej niszowych pozycji, znakowane.&lt;br /&gt;
* [http://publio.pl Publio] – otwarty w maju 2012 r. sklep Agory, spółki-właściciela Gazety Wybiórczej&lt;br /&gt;
&lt;br /&gt;
== Katalogi ==&lt;br /&gt;
&lt;br /&gt;
* [http://drmfree.calibre-ebook.com/ Calibre - Open Books] - katalog ebooków bez DRM na stronach związanych z narzędziem [http://calibre-ebook.com/ Calibre]&lt;br /&gt;
&lt;br /&gt;
== Darmowe książki ==&lt;br /&gt;
&lt;br /&gt;
W większej części to klasyka, do której prawa autorskie już wygasły. U nas na przykład powstała jakiś czas temu &amp;quot;Polska Biblioteka Internetowa&amp;quot;, która za jakieś gigantyczne pieniądze z budżetu zdigitalizowała trochę klasyki. Następie coś się tam oczywiście pokałapućkało, PBI raz jakby umierało, to znów zmartwychwstawało, w końcu zostało przejęte, o ile mnie pamięć nie myli, przez Bibliotekę Narodową. Tych ebooków nie można jednak sobie z jakiejś strony instytucjonalnej ściągnąć, są za to jako &amp;quot;wypełniacz&amp;quot; w ofercie komercyjnych księgarni, przy czym niektóre (nexto) próbują nawet pobierać jakieś drobne opłaty za nie.&lt;br /&gt;
&lt;br /&gt;
Po polsku:&lt;br /&gt;
Orzeszkowa itp.). &lt;br /&gt;
* [http://www.wolnelektury.pl/katalog/ Wolne Lektury]&lt;br /&gt;
* [http://ebook.empik.com/klasyka/ empik] – darmowa klasyka (trzeba jednak założyć konto i zalogować się)&lt;br /&gt;
* [http://virtualo.pl/darmowe/ebook/m6c2/ darmowe], głównie klasyka, do której prawa autorskie wygasły, plus trochę wydawniczego &amp;quot;śmiecia&amp;quot;. Niestety, żeby ściągnąć takie darmowe ebooki trzeba i tak założyć sobie konto i &amp;quot;kupić&amp;quot; w normalnym trybie.&lt;br /&gt;
* [http://www.nexto.pl/szukaj.xml?search-clause=bez+DRM&amp;amp;scid=1015&amp;amp;x=0&amp;amp;y=0 klasyka bez DRM]&lt;br /&gt;
* [http://www.nexto.pl/ebooki/darmowe_e-booki_c1219.xml darmowe]&lt;br /&gt;
* [http://www.gutenberg.org/browse/languages/pl po polsku] – nieliczne pozycje po polsku na stronach Projektu Gutenberg&lt;br /&gt;
&lt;br /&gt;
Po angielsku bądź jeszcze innemu:&lt;br /&gt;
* [http://www.gutenberg.org/ Project Gutenberg], czyli inicjatywa mająca na celu zdigitalizowanie światowego dziedzictwa literackiego, do którego prawa autorskie wygasły.&lt;br /&gt;
* [http://www.epubbooks.com/ epubBooks.com]&lt;br /&gt;
* [http://www.manybooks.net/ manyBooks.net]&lt;br /&gt;
* [http://www.feedbooks.com/publicdomain public domain books at feedbooks.com]&lt;br /&gt;
&lt;br /&gt;
== Moje przemyślenia ==&lt;br /&gt;
&lt;br /&gt;
* Dostępne obecnie [[czytniki e-booków]] nie są jeszcze zbyt wygodne: nieporęczne, kruche, z nienajlepszym kontrastem i ograniczoną funkcjonalnością. Niemniej jednak mają podstawową zaletę: można mieć pod ręką całą bibliotekę. I to – jak dla mnie – przeważa.&lt;br /&gt;
* Wydawcy, korzystając ze wczesnego etapu rozwoju rynku, usiłują wysmażyć sobie dodatkowe zarobki, a to próbując przywiązać właściciela czytnika do konkretnej księgarni, a to znowu sprzedając &amp;quot;zabezpieczone&amp;quot; różnymi DRM-ami czy innymi syfami książki. Choć za granicą niektórzy wyciągnęli wnioski z porażki idei DRM-ów w przypadku przemysłu muzycznego. U nas zaczęło się to zmieniać chyba dopiero od roku 2012.&lt;br /&gt;
* DRM to nonsens. Ogranicza prawa i utrudnia życie legalnym użytkownikom, jednocześnie każdy &amp;quot;pirat&amp;quot;, nawet techniczna noga, bez trudu znajdzie w sieci instrukcje, jak tego pseudozabezpieczenia się pozbyć. Odnoszę wrażenie, że wydawnictwa, nie orientując się za bardzo co-i-jak, owczym pędem idą w DRM-y, bo słyszały, że tak trzeba. Tym samym zniechęcają część nabywców, a jedyne podmioty, które na tym zarabiają, to firmy oferujące rozwiązania DRM (u nas głównie Adobe).&lt;br /&gt;
&lt;br /&gt;
=== Rynek w Polsce ===&lt;br /&gt;
&lt;br /&gt;
Rozwój rynku krajowego z punktu widzenia klienta i czytelnika obserwuję, co prawda niezbyt wnikliwie, począwszy od końcówki roku 2011 i muszę przyznać, że zachodzą na nim pozytywne zmiany. Początkowo ciężko było kupić cokolwiek niezabezpieczonego DRM-em (właściwie wyłącznie ADE, czyli ''Adobe Digital Editions''), ale chyba równie ciężko wydawcom było te cuda techniki sprzedawać. Musieli więc przestać koncentrować się na realnych i urojonych zagrożeniach dla swych praw autorskich, a zacząć myśleć o potrzebach i wygodzie klientów.&lt;br /&gt;
&lt;br /&gt;
Pierwszą jaskółką było wprowadzenie do oferty Virtualo formatu mobi ze znakiem wodnym. Zrobili to oczywiście z myślą o użytkownikach ponoć najbardziej u nas rozpowszechnionego czytnika, czyli kindle'a. Zagwozdzkę musieli mieć nielichą, no bo: 1) kindle nie obsługuje DRM-ów innych, niż własny Amazona; 2) Amazon chyba nie sprzedaje innym podmiotom oprogramowania do zabezpieczania książek w sposób czytelny dla kindle'a (a może sprzedaje, ale zbyt drogo? nie wiem). Chcąc więc dotrzeć ze swoją ofertą do kindlowców, wydawcy musieli zrezygnować z DRM-ów i zadowolić się tzw. znakiem wodnym.&lt;br /&gt;
&lt;br /&gt;
Początkowo można więc było w tej samej księgarni kupić na przykład znakowane mobi i zamknięty DRM-em epub, co było dość głupie, bo istnieją narzędzia do konwersji z tego pierwszego do drugiego. Sam korzystałem z [[calibre]] żeby przekonwertować znakowane mobi do lepiej przez mój czytnik obsługiwanych epubów&amp;lt;ref&amp;gt;Muszę jednak przyznać, że konwersja nie była bezbłędna, np. z niektórych książek znikały niektóre ilustracje.&amp;lt;/ref&amp;gt;. Na szczęście po dalszych kilku miesiącach nonsens tej sytuacji stał się oczywisty także dla wydawców, którzy zrezygnowali z DRM-ów także w innych formatach. Obecnie (maj 2012 r.) polskie książki są DRM-owane głównie w przypadku droższych i bardziej chodliwych pozycji, np. wydawnictwa prawnicze (jak wiadomo, prawo to nie to samo, co sprawiedliwość i pewnie także nie to, co uczciwość).&lt;br /&gt;
&lt;br /&gt;
Kolejną głupotą jest próba sprzedawania różnych formatów tej samej książki jako osobnych książek. Dochodziło wręcz do takich sytuacji, że książka np. w formacie mobi była tańsza (promocja) niż ta sama w jako epub a ktoś, chcący posiadać wszystkie trzy formaty&amp;lt;ref&amp;gt;Nie spotkałem w polskich księgarniach formatów innych niż epub, mobi i pdf.&amp;lt;/ref&amp;gt; musiałby przepłacić circa trzykrotnie... musiałby, gdyby nie to, że o wiele taniej było kupić jeden format i przekonwertować do innego. Niektórzy, jak helionowski niszowy ebookpoint.pl, od początku sprzedawali &amp;quot;wieloformatowo&amp;quot;. W kwietnie 2012 r. do takiego modelu doszło także [[Virtualo]], a to główny u nas gracz, więc jest już raczej tylko kwestią czasu, aż doszlusują doń pozostali.&lt;br /&gt;
&lt;br /&gt;
{{przypisy}}&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Root/config-2008-03</id>
		<title>Root/config-2008-03</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Root/config-2008-03"/>
				<updated>2012-01-06T10:43:11Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Oprogramowanie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Root]] od stycznia do marca 2008.&lt;br /&gt;
&lt;br /&gt;
=== Sprzęt ===&lt;br /&gt;
* procesor: AMD Athlon XP 1700+ (1473,5 MHz)&lt;br /&gt;
* płyta główna: nie wiem jaka, na chipsecie Via&lt;br /&gt;
** wbudowana karta sieciowa&lt;br /&gt;
** wbudowana karta dźwiękowa&lt;br /&gt;
* pamięć: 768 MB&lt;br /&gt;
* dysk 1: WDC WD800JB-00ETA0, 80 GB, IDE&lt;br /&gt;
* dysk 2: WDC WD800JB-00JJA0, 80 GB, IDE&lt;br /&gt;
* dysk 3: WDC WD2500KS-00MJB0, 250 GB, SATA&lt;br /&gt;
* nagrywarka DVD: NEC DVD-RW ND-3500AG&lt;br /&gt;
* karta graficzna: nVidia Corporation NV25 [GeForce4 Ti 4200] (rev a2)&lt;br /&gt;
* karta dźwiękowa: Creative Labs SB Live! EMU10k1 (rev 06)&lt;br /&gt;
* zasilacz: Colorsit ATX12V P4, 480 W&lt;br /&gt;
* wentylator na procku (chyba trzeba będzie wkrótce wymienić)&lt;br /&gt;
* dodatkowe wiatraki na obu bokach obudowy&lt;br /&gt;
* nagrywarka CD: Lite-on LTR-401252 — niezamontowana (z braku miejsca)&lt;br /&gt;
&lt;br /&gt;
=== Oprogramowanie ===&lt;br /&gt;
* system: [[Debian]] Linux 4.0 &amp;quot;etch&amp;quot; (architektura: x86)&lt;br /&gt;
* jądro: 2.6.18-5-k7 #1 SMP (z dystrybucji Debiana)&lt;br /&gt;
&lt;br /&gt;
=== Informacje ===&lt;br /&gt;
* /proc/cpuinfo:&lt;br /&gt;
 processor       : 0&lt;br /&gt;
 vendor_id       : AuthenticAMD&lt;br /&gt;
 cpu family      : 6&lt;br /&gt;
 model           : 6&lt;br /&gt;
 model name      : AMD Athlon(tm) XP 1700+&lt;br /&gt;
 stepping        : 2&lt;br /&gt;
 cpu MHz         : 1473.552&lt;br /&gt;
 cache size      : 256 KB&lt;br /&gt;
 fdiv_bug        : no&lt;br /&gt;
 hlt_bug         : no&lt;br /&gt;
 f00f_bug        : no&lt;br /&gt;
 coma_bug        : no&lt;br /&gt;
 fpu             : yes&lt;br /&gt;
 fpu_exception   : yes&lt;br /&gt;
 cpuid level     : 1&lt;br /&gt;
 wp              : yes&lt;br /&gt;
 flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up ts&lt;br /&gt;
 bogomips        : 2949.88&lt;br /&gt;
&lt;br /&gt;
* lspci:&lt;br /&gt;
 00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge (rev 80)&lt;br /&gt;
 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge&lt;br /&gt;
 00:0c.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)&lt;br /&gt;
 00:0c.1 Input device controller: Creative Labs SB Live! Game Port (rev 06)&lt;br /&gt;
 00:0d.0 FireWire (IEEE 1394): Agere Systems FW323 (rev 04)&lt;br /&gt;
 00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80)&lt;br /&gt;
 00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)&lt;br /&gt;
 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)&lt;br /&gt;
 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)&lt;br /&gt;
 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)&lt;br /&gt;
 00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)&lt;br /&gt;
 00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)&lt;br /&gt;
 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]&lt;br /&gt;
 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60)&lt;br /&gt;
 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation NV25 [GeForce4 Ti 4200] (rev a2)&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/IPod</id>
		<title>IPod</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/IPod"/>
				<updated>2012-01-05T21:35:16Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Gtkpod, podejście drugie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:iPod}}&lt;br /&gt;
Od jakiegoś już czasu jestem średnio szczęśliwym posiadaczem urządzenia '''iPod nano 5G''', czyli odtwarzacza mp3 z dodatkowymi bajerami wyprodukowanego przez firmę Apple. Dlaczego tylko średnio szczęśliwym? Bo sprzętowo toto jest całkiem fajne, małe, zgrabne, solidne. Niestety, problem tkwi w oprogramowaniu. Co prawda można sobie podłączyć i widzieć te 16 GB jako usb-storage, ale nie można tak po prostu zgrać empetrójek i liczyć, że urządzenie je obsłuży, o nie. Apple bardzo stara się utrudnić życie wszystkim, którzy chcieliby ''nie'' korzystać z ichniej aplikacji iTunes, koszmarnej kobyły dostępnej jedynie dla Maca i Windows.&lt;br /&gt;
&lt;br /&gt;
W sieci można znaleźć jakieś rachityczne próby stworzenia alternatywnego, bardziej otwartego, oprogramowania dla ipoda. Starsze modele są podobno nawet obsługiwane przez niektóre aplikacje, jak amarok czy rhythmbox, ale nie znalazłem niczego dla mojego modelu.&lt;br /&gt;
&lt;br /&gt;
Cóż. Nasuwającym się wyjściem byłoby użycie maszyny wirtualnej, w niej [[Windows]]a i iTunes. Spróbowałem to właśnie zrobić przy użyciu [[kvm]]. Niestety, miałem problem z obsłużeniem usb. Próbując skonfigurować któreś urządzenie tak, by było widoczne pod kvm, dostawałem w syslogu komunikaty w rodzaju:&lt;br /&gt;
&lt;br /&gt;
 usb 2-9: usbfs: process 15825 (kvm) did not claim interface 1 before use&lt;br /&gt;
&lt;br /&gt;
Przypuszczałem, że to jakiś bug w kvm / [[qemu]], co było kolejną przesłanką do [[Root#Squeeze_2012|zaktualizowania systemu]] z przestarzałej od mniej więcej roku wersji 5.0 [[debian]]a.&lt;br /&gt;
&lt;br /&gt;
I rzeczywiście, po upgradzie ten problem zniknął, ale i tak nie udało mi się obsłużyć ipoda w programie itunes uruchomionym w maszynie wirtualnej. Chyba problemem jest nieobsługiwane USB 2.0, ale mogę się mylić.&lt;br /&gt;
&lt;br /&gt;
== Może VirtualBox pomoże ==&lt;br /&gt;
&lt;br /&gt;
A może VirtualBox pomoże? Mają obsługę usb 2.0, ale... Tu się sprawa komplikuje.&lt;br /&gt;
* VB &amp;lt; 4.0 występował w dwóch wariantach: OSE (open source edition) i pełny&lt;br /&gt;
* W debianie mam wersję 3.2, oczywiście OSE; USB 2.0 (jeśli było) to w wariancie pełnym&lt;br /&gt;
* Bieżącą wersją jest 4.1; od wersji 4 nie ma co prawda &amp;quot;OSE&amp;quot;, bazowy pakiet jest na GPL-u, ale usb 2.0 (i parę innych rzeczy) nadal tam nie występuje, trzeba dociągnąć jeszcze &amp;quot;extension pack&amp;quot;&lt;br /&gt;
* To mi się chce na chama instalować w ścieżkach systemowych, oczywiście z roota, co mnie bardo zniechęca...&lt;br /&gt;
&lt;br /&gt;
== Gtkpod, podejście drugie ==&lt;br /&gt;
&lt;br /&gt;
Hmm, czyżby jednak udało im się w końcu zaimplementować obsługę mojego modelu? :-) Poprzednie, nieudane podejście miało jeszcze pod porzednią wersją systemu; teraz (debian 6.0) mam gtkpod w wersji 0.99.13, korzystający z biblioteki libgpod4 w wersji 0.7.93 i... działa. Może nie wszystko, coś tam np. marudzi o braku katalogu &amp;quot;Photo&amp;quot;, ale parę audioksiążek udało mi się już wgrać.&lt;br /&gt;
&lt;br /&gt;
Coś tam się gryzło z plikami poprzedniej wersji, więc usunąłem katalog ~/.gtkpod, uruchomiłem, przy pomocy gtk-theme-switch2 poprawiłem nieco toporny wygląd aplikacji i zabrałem się za kopiowanie. Okazało się, że sukces był połowiczny - część wgranych plików &amp;quot;zawieruszyła&amp;quot; się na ipodzie i nie była dostępna w odtwarzaczu. Dało się je odnaleść odpowiednią opcją programu i potem pokasować - nie nadawały się do pozostawienia, gdyż były pozbawione metadanych. Próbuję ponownie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:linux]]&lt;br /&gt;
[[kategoria:sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Metadane_w_plikach_PDF</id>
		<title>Metadane w plikach PDF</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Metadane_w_plikach_PDF"/>
				<updated>2011-12-26T21:40:03Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;W plikach PDF znajdują się pewne metadane, m.in. autor i tytuł. Ich poprawne ustawienie może być istotne w przypadku używania pedeefów na [[czytniki e-booków|czytnikach ebooków]]. Pewnego razu, gdy naszła mnie chęć poprawienia tych metadanych w pewnym pliku, okazało się, że nie ma zbyt wielu [[Linux|linuksowych]] narzędzi to potrafiących:&lt;br /&gt;
&lt;br /&gt;
* pdftk [http://jkwiens.com/2010/01/04/changing-pdf-metadata-on-ubuntu/]&lt;br /&gt;
* pdfedit - ale tylko programowo, korzystając z API [http://comments.gmane.org/gmane.editors.pdfedit.user/590]&lt;br /&gt;
&lt;br /&gt;
Skorzystałem z pdftk. Żeby zrzucić metadane do pliku metadata.txt należy wpisać:&lt;br /&gt;
&lt;br /&gt;
 pdftk ''source.pdf'' dump_data output ''metadata.txt''&lt;br /&gt;
&lt;br /&gt;
Następnie trzeba przeedytować plik metadata.txt. Warto też usunąć niepotrzebne (tzn. niezmieniane) pary klucz-wartość, bo np. u mnie program miał problem z odtworzeniem atrybutów z datą utworzenia i modyfikacji. Ostatnim krokiem jest utworzenie wynikowego pliku pdf z nowymi metadanymi:&lt;br /&gt;
&lt;br /&gt;
 pdftk ''source.pdf'' update_info ''metadata.txt'' output ''output.pdf''&lt;br /&gt;
&lt;br /&gt;
Metadane można podejrzeć np. programem pdfinfo z pakietu [[xpdf]] (xpdf-utils w debianie).&lt;br /&gt;
&lt;br /&gt;
Niestety, choć niby coś tam się zmieniło, [[pocketbook|mój czytnik]] nie zareagował na to w żaden widoczny sposób :(&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:Linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Kpdf</id>
		<title>Kpdf</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Kpdf"/>
				<updated>2011-11-15T23:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: kde 4.5, okular&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:kpdf}}'''kpdf''' to przeglądarka plików pdf działająca w starszych wersjach środowiska [[KDE]] (np. 3.5). Oparta ponoć na programie xpdf. Przeglądarka jak przeglądarka, ale ma jedną bardzo przyjemną cechę: pozwala przedefiniować kolory, więc można sobie ustawić coś bardziej ergonomicznego aniżeli czarne litery na wyżerającym oczy superbiałym tle.&lt;br /&gt;
&lt;br /&gt;
[[grafika:kpdf_colors.jpg|center|400px]]&lt;br /&gt;
&lt;br /&gt;
W KDE 4.4 kpdf został zastąpiony przez program okular, będący uniwersalną przeglądarką dokumentów w różnych formatach. Okular też pozwala poprawić kolor tła pdf-ów.&lt;br /&gt;
&lt;br /&gt;
=== Zobacz też ===&lt;br /&gt;
* [[evince]]&lt;br /&gt;
* [[acroread]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:unix]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Czytniki_e-book%C3%B3w</id>
		<title>Czytniki e-booków</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Czytniki_e-book%C3%B3w"/>
				<updated>2011-11-12T00:47:40Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Przymiarki */ s/prettytable/wikitable/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zastanawiam się nad jakimś '''czytnikiem e-booków''', jak kindle albo coś w tym rodzaju.&lt;br /&gt;
&lt;br /&gt;
Jakich cech oczekiwałbym od tego rodzaju urządzenia?&lt;br /&gt;
&lt;br /&gt;
* Bardzo ważne:&lt;br /&gt;
** wyświetlacz typu &amp;quot;e-papier&amp;quot;, monochromoatyczny, ale ponoć nie męczy tak wzroku jak LCD&lt;br /&gt;
** ekran o przekątnej co najmniej 8&amp;quot;&amp;lt;ref&amp;gt;Początkowo założyłem tu sobie minimum 6&amp;quot;, ale po tym, jak zobaczyłem w praktyce taką ósemkę doszedłem do wniosku, że wcale nie jest zbyt duża, a nawet mogłaby być większa, więc podwyższyłem wymagania.&amp;lt;/ref&amp;gt;&lt;br /&gt;
** połączenie USB, obsługa protokołu USB Storage (żeby nie wymagało jakiegoś dedykowanego oprogramowania)&lt;br /&gt;
** obsługiwanie normalnych plików pdf oraz innych formatów&lt;br /&gt;
* Ważne:&lt;br /&gt;
** Gniazdo na kartę pamięci&lt;br /&gt;
&lt;br /&gt;
* Dodatkową zaletą byłoby:&lt;br /&gt;
** Wi-Fi&lt;br /&gt;
** ekran dotykowy&lt;br /&gt;
** terminarz, notatnik&lt;br /&gt;
** odtwarzanie muzyki, zwłaszcza ogg i mp3&lt;br /&gt;
** Linux na pokładzie&lt;br /&gt;
** elastyczność, zwłaszcza:&lt;br /&gt;
*** możliwość instalowania dodatkowego oprogramowania&lt;br /&gt;
*** możliwość korzystania z systemu operacyjnego np. przy pomocy shella&lt;br /&gt;
&lt;br /&gt;
== Przymiarki ==&lt;br /&gt;
Rozważane urządzenia:&lt;br /&gt;
* Kindle Touch [http://www.amazon.com/gp/product/B005890FN0/ref=twister_dp_update?ie=UTF8&amp;amp;psc=1]&lt;br /&gt;
* Kindle Keyboard [http://www.amazon.com/gp/product/B002Y27P3M/ref=twister_dp_update?ie=UTF8&amp;amp;psc=1]&lt;br /&gt;
* Pocket Book 602 [https://en.wikipedia.org/wiki/PocketBook_Reader#PocketBook_Pro_602]&lt;br /&gt;
* Pocket Book 360 Plus [https://en.wikipedia.org/wiki/PocketBook_Reader#PocketBook_360_Plus], co prawda 5&amp;quot; ale ponoć szybki&lt;br /&gt;
&lt;br /&gt;
Tabela&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! producent !! urządzenie     !! ekran     !! procesor  !! pamięć RAM !! pamięć flash !! karta pam.!! łączność      !! cena !! uwagi&lt;br /&gt;
|-&lt;br /&gt;
| Amazon    || Kindle Touch   || 6&amp;quot;        ||           ||            ||              ||     NIE   ||               || 100$ || potrzebny pośrednik do zakupu w USA&lt;br /&gt;
|-&lt;br /&gt;
| Amazon    || Kindle Keyboard|| 6&amp;quot;        ||           ||            ||              ||     NIE   ||               || 130$?||&lt;br /&gt;
|-&lt;br /&gt;
| PocketBook||PocketBook 602  || 6&amp;quot;        || ARM 533   || 256 MB     ||   4 GB ?     ||           ||               || 220$ ||&lt;br /&gt;
|-&lt;br /&gt;
| PocketBook|| PocketBook 360+|| 5&amp;quot; 800x600|| i.MX35 533|| 128 MB     ||   2 GB       || microSD   || miniUSB, WiFi || 133$ ||&lt;br /&gt;
|-&lt;br /&gt;
| Barnes&amp;amp;Noble|| Nook         ||           ||           ||            ||              ||           ||               ||      ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odrzucone urządzenia:&lt;br /&gt;
* Kindle 4 [http://www.amazon.com/gp/product/B00492CIC8/ref=twister_dp_update?ie=UTF8&amp;amp;psc=1], nowszy niż Kindle Keyboard ale to jakaś &amp;quot;osłabiona&amp;quot; i tańsza wersja, mniej pamięci, słabsze baterie&lt;br /&gt;
&lt;br /&gt;
== Decyzja ==&lt;br /&gt;
&lt;br /&gt;
Żeby nie przeciągać sprawy, znacząco ograniczyłem wybór. Amazonowski Kindle odpadł ze względu na zbyt sztywne przywiązanie do ichniego formatu i sklepu oraz słabą obsługę innych formatów. (Do tego ten ironiczny wypadek, kiedy to Amazon postanowił zdalnie wykasować użytkownikom nabyte przez nich egzemplarze &amp;quot;Roku 1984&amp;quot; George'a Orwella...) Ponadto, gdy w &amp;quot;realu&amp;quot; obejrzałem sobie czytnik 8-calowy to doszedłem do wniosku, że ekran wcale nie jest duży i cokolwiek mniejszego byłoby niewygodne do czytania. Po pobieżnym przeszukaniu sieci ograniczyłem wybór do dwóch modeli: [http://www.onyxboox.com/product_info.php?products_id=30|Onyx Boox M90] oraz [[PocketBook 902]]. Ceny obu są porywnywalne: 1400 zł Onyx, 1300 zł PocketBook. Ten pierwszy ma dotykowy ekran (reaguje na rysik, nie na paluchy); ten drugi nie. Niemniej jednak porównując na żywo Onyxa z 6-calową wersją PB szybko doszedłem do wniosku, że PB wygląda zdecydowanie solidniej. Tak więc ostatecznie stałem się właścicielem [[PocketBook 902|PocketBooka 902]].&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_e-book_readers Comparison of e-book readers] w Wikipedii&lt;br /&gt;
* [http://www.the-ebook-reader.com/ eBook Reader Reviews, eReader News and How To's]&lt;br /&gt;
* [http://wiki.mobileread.com/wiki/E-book_Reader_Matrix#6.22_Devices E-book Reader Matrix]&lt;br /&gt;
&lt;br /&gt;
{{przypisy}}&lt;br /&gt;
&lt;br /&gt;
[[kategoria:sprzęt]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/C%2B%2B0x</id>
		<title>C++0x</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/C%2B%2B0x"/>
				<updated>2011-11-11T18:46:56Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''C++0x''' (albo: '''C++11''') – nowa wersja standardu języka [[C++]], ogłoszona w 2011 r.&lt;br /&gt;
&lt;br /&gt;
Niektóre co ciekawsze dodatki i zmiany w języku:&lt;br /&gt;
* lambdas&lt;br /&gt;
* rvalue references, move semantics&lt;br /&gt;
* variable template parameters&lt;br /&gt;
* standard library extensions, including:&lt;br /&gt;
** threads&lt;br /&gt;
** smart pointer&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [http://pizer.wordpress.com/2009/04/13/c0x-do-people-understand-rvalue-references/ C++0x: Do people understand rvalue references?]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:programowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Quilt</id>
		<title>Quilt</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Quilt"/>
				<updated>2011-11-04T09:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: o quilcie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''quilt''' to narzędzie do zarządzania [[patch]]ami nakładanymi na kod źródłowy. Patche można nakładać, zdejmować, definiowanać zależności między nimi oraz wykonywać szereg innych operacji.&lt;br /&gt;
&lt;br /&gt;
Na quilcie wzorowane są [[Mercurial Queues]], czyli rozszerzenie [[Mercurial]]a. Wydaje się, że quilt jest nieco bardziej elastyczny (np. operacja ''refresh'' nie musi dotyczyć ostatniego patcha). Z drugiej strony, MQ jest w miarę zgrabnie zintegrowane z [[system kontroli wersji|systemem kontroli wersji]], co jest bardzo wygodne.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Odmiana_w_MediaWiki</id>
		<title>Odmiana w MediaWiki</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Odmiana_w_MediaWiki"/>
				<updated>2011-11-01T20:43:51Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instalując [[MediaWiki]] nadajemy jej nazwę poprzez ustawienie odpowiedniej zmiennej w LocalSettings.php:&lt;br /&gt;
:&amp;lt;code&amp;gt;$wgSitename = &amp;quot;Najlepszy Serwis Ogłoszeniowy Świata&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Szybko zauważymy, że nazwa naszej wiki nie jest odmieniana tam, gdzie powinna. Na przykład: &amp;quot;O Najlepszy Serwis Ogłoszeniowy Świata&amp;quot;, &amp;quot;W Najlepszy Serwis Ogłoszeniowy Świata ograniczono możliwość tworzenia nowych stron&amp;quot; itp. Można próbować podmieniać odpowiednie komunikaty systemowe, ale właściwym podejściem jest zdefiniowanie w LocalSettings.php zestawu form fleksyjnych dla poszczególnych przypadków.&lt;br /&gt;
&lt;br /&gt;
W polskiej wersji językowej mogłoby to wyglądać następująco:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgGrammarForms['pl']['M.lp'] [$wgSitename] = &amp;quot;Najlepszy Serwis Ogłoszeniowy Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['D.lp'] [$wgSitename] = &amp;quot;Najlepszego Serwisu Ogłoszeniowego Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['C.lp'] [$wgSitename] = &amp;quot;Najlepszemu Serwisowi Ogłoszeniowemu Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['B.lp'] [$wgSitename] = &amp;quot;Najlepszy Serwis Ogłoszeniowy Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['MS.lp'][$wgSitename] = &amp;quot;Najlepszym Serwisie Ogłoszeniowym Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['N.lp'] [$wgSitename] = &amp;quot;Najlepszym Serwisem Ogłoszeniowym Świata&amp;quot;;&lt;br /&gt;
$wgGrammarForms['pl']['W.lp'] [$wgSitename] = &amp;quot;Najlepszy Serwisie Ogłoszeniowy Świata!&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Czyli pierwszy indeks tablicy to kod języka (pl), drugi - skrótowe określenie przypadku dla danego języka, trzeci - podstawowa forma komunikatu. Używa się czegoś takiego poprzez makro &amp;lt;nowiki&amp;gt;{{GRAMMAR}}&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{GRAMMAR:MS.lp|{{SITENAME}}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
co powinno się rozwinąć do:&lt;br /&gt;
:&amp;lt;code&amp;gt;Najlepszym Serwisie Ogłoszeniowym Świata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[kategoria:MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Boost</id>
		<title>Boost</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Boost"/>
				<updated>2011-10-28T23:53:36Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Boost 1.49 */ ~ nie działa, w każdym razie nie wszędzie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Jak żem sobie '''[http://www.boost.org/ boosta]''' budował...&lt;br /&gt;
&lt;br /&gt;
W [[Debian]]ie wszystko jest za stare, więc i [[gcc|giecek]], i boost też. Tak więc razu pewnego zechciałem sobie zbudować giecka świeżego i boosta nowego. Boost ten to wersja 1.47.0. Niestety, nie obsługuje on DESTDIR ani niczego w tym rodzaju. A ja chciałem tradycjonalnie walnąć go [[stow]]em. No dobra, więc mu ustawiłem prefix do katalogu stowowanego (czyli przez stowa zarządzanego). A następnie komendą &amp;lt;code&amp;gt;stow -v boost_1_47_0&amp;lt;/code&amp;gt; zainstalowałem go tam, gdzie się naprawdę powinien znajdować.&lt;br /&gt;
&lt;br /&gt;
== Boost 1.49 ==&lt;br /&gt;
&lt;br /&gt;
Przyszła pora na kolejne boosta stawianie, tym razem będzie budowan pode [[gcc|gieckiem]] 1.49. Instrukcje budowania boost są jak dla mnie nieintuicyjne a w ogóle to niejednokrotnie już się zastanawiałem, jak trafić na [http://www.boost.org/doc/libs/1_49_0/more/getting_started/unix-variants.html tę stronę]... (Documentation / Getting started; ale jest też dołączana do paczki ze źródłami).&lt;br /&gt;
&lt;br /&gt;
No dobra. Zaczynamy.&lt;br /&gt;
&lt;br /&gt;
Zaczytać środowisko potrzbne dla niestandardowej instalacji giecka:&lt;br /&gt;
 . ~/opt/use-env.sh&lt;br /&gt;
&lt;br /&gt;
Konfiguracja (jak wyżej wyjaśniono, boost nie obsługuje DESTDIR ani niczego w tym rodzaju, stąd taki prefix):&lt;br /&gt;
 ./bootstrap.sh --prefix=$HOME/opt/stow/boost-1.49.0 &lt;br /&gt;
&lt;br /&gt;
Kompilacja i instalacja:&lt;br /&gt;
&lt;br /&gt;
 ./b2 install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Gcc</id>
		<title>Gcc</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Gcc"/>
				<updated>2011-10-25T08:12:17Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: zobacz też: boost&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:gcc}}Czasem muszę sobie zbudować jakieś '''[http://gcc.gnu.org/ gcc]''' na [[Linux|Linuksie]].&lt;br /&gt;
&lt;br /&gt;
== gcc 4.6.1 ==&lt;br /&gt;
&lt;br /&gt;
=== Środowisko ===&lt;br /&gt;
Ponieważ chcę to zainstalować &amp;quot;z boku&amp;quot;, a konkretnie w katalogu ~/opt, więc robię skrypt ''env.sh'' ustawiający odpowiednie zmienne środowiska:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export prefix=$HOME/opt&lt;br /&gt;
export destdir=$HOME/opt/stow&lt;br /&gt;
export PATH=$prefix/bin:$PATH&lt;br /&gt;
export LD_LIBRARY_PATH=$prefix/lib:$prefix/lib64${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH&lt;br /&gt;
export LIBRARY_PATH=$prefix/lib:$prefix/lib64${LIBRARY_PATH+:}$LIBRARY_PATH&lt;br /&gt;
export C_INCLUDE_PATH=$prefix/include${C_INCLUDE_PATH+:}$C_INCLUDE_PATH&lt;br /&gt;
export CPLUS_INCLUDE_PATH=$prefix/include${CPLUS_INCLUDE_PATH+:}$CPLUS_INCLUDE_PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
($prefix/lib64 dopisałem już po zbudowaniu całości, okazało się niezbędne, by poszło &amp;quot;make check&amp;quot; w jednej z bibliotek, których wymagał gcc.)&lt;br /&gt;
&lt;br /&gt;
Skrypt ten należy wciągnąć do bieżącego basha (. env.sh) przez przystąpieniem do budowania kompilatora oraz bibliotek, od których zależy, a potem, po zbudowaniu, prawdopodobnie też będzie trzeba ustawiać te zmienne by móc nowego kompilatora używać.&lt;br /&gt;
&lt;br /&gt;
=== Wymagania ===&lt;br /&gt;
&lt;br /&gt;
Wymagania opisane w pliku INSTALL/prerequisites.html [http://gcc.gnu.org/install/prerequisites.html], znajdującym się w paczce ze źródłami gcc.&lt;br /&gt;
&lt;br /&gt;
* gmp-4.3.2&lt;br /&gt;
 ./configure --prefix=$prefix --enable-cxx &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
* mpfr-2.4.2 lub nowszy (użyłęm 3.1.0)&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
* mpc-0.8.1 lub nowszy (użyłem 0.9)&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
* ppl-0.11 (uzyłem 0.11.2)&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp-prefix=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
* cloog-ppl 0.15 (użyłem 0.15.11; dopuszczalne jest też 0.16 ale z dodatkowymi opcjami)&lt;br /&gt;
 ./configure --prefix=$prefix --with-ppl=$prefix --with-gmp=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
&lt;br /&gt;
Oczywiście po zbudowaniu każdego z tych pakietów warto zapuścić testy modułowe (make check), aby się upewnić, że wszystko działa, jak należy.&lt;br /&gt;
&lt;br /&gt;
=== Kompilacja kompilatora ===&lt;br /&gt;
&lt;br /&gt;
 mkdir gcc-objdir&lt;br /&gt;
 cd gcc-objdir&lt;br /&gt;
 $gcc_srcdir/configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix --with-mpc=$prefix \&lt;br /&gt;
                       --with-ppl=$prefix --with-cloog=$prefix --without-local-prefix&lt;br /&gt;
&lt;br /&gt;
=== make check ===&lt;br /&gt;
Po zbudowaniu i zainstalowaniu, zabrałem się za wykonywanie testów modułowych. O ile poprzednia instalacja (bardzo zbliżona, o ile nie identyczna) na maszynie 32-bitowej przetestowała się bez zastrzeżeń, to tarez, na moim [[noisy|64-bitowym Debianie]] pojawiły się pewne błędy:&lt;br /&gt;
&lt;br /&gt;
* gmp-4.3.2&lt;br /&gt;
 rootrem.c:338: GNU MP assertion failed: bn &amp;gt;= qn&lt;br /&gt;
 /bin/sh: line 4: 32613 Przerwane               ${dir}$tst&lt;br /&gt;
 FAIL: reuse&lt;br /&gt;
 rootrem.c:338: GNU MP assertion failed: bn &amp;gt;= qn&lt;br /&gt;
 /bin/sh: line 4: 32638 Przerwane               ${dir}$tst&lt;br /&gt;
 FAIL: t-root&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
* gcc-4.6.1 - samego kompilatora nie przetestowałem, bo nie chciało mi się już ściągać i składać kolejnych paczek.[http://gcc.gnu.org/install/test.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gcc 4.7.0 ==&lt;br /&gt;
&lt;br /&gt;
W kwietniu 2012 r. postanowiłem zbudować gcc i boosta jeszcze raz. Nie żeby w wersji 4.7 zaszły jakieś znaczące dla mnie zmiany, ale poprzedni, 4.6.1, budowałem jeszcze przed aktualizacją [[root|syst]][[noisy|emów]], co, jak się obawiam, może źle wpłynąć na działanie programów zbudowanych poprzednim kompilatorem. Zresztą niedawno próbowałem użyć jednej z nowych konstrukcji [[c++]], bodajże uruchomienia wątku poprzez std::async i dostawałem jakieś wyjątki z tekstem &amp;quot;uknown error&amp;quot; czy coś w ten deseń. No coż, zobaczymy z 4.7. Do tego dojdzie jeszcze [[boost]] 1.49.&lt;br /&gt;
&lt;br /&gt;
Buduję na [[Debian]]ie 6.0 (&amp;quot;squeeze&amp;quot;) z kompilatorem gcc-4.4.5.&lt;br /&gt;
&lt;br /&gt;
=== Środowisko ===&lt;br /&gt;
&lt;br /&gt;
Mam zamiar posadzić go tam, gdzie był poprzedni, tzn. w katalogu ~/opt. Przy pomocy programu [[stow]] odinstalowałem poprzednie wersje gcc i boosta. Przez chwilę zastanawiałem się, czy nie pozostawić bibliotek potrzebnych do zbudowania gcc, bo wersje się zgadzają. Ale budowane były jeszcze przed aktualizacją systemu, starszą wersją kompilatora. Zdecydowałem, że nie ma co ryzykować – przynajmniej część z nich zawiera kod w c++ a tu zawsze mogą wypełznąć jakieś niezgodności. Tak więc przebuduję wszystko.&lt;br /&gt;
&lt;br /&gt;
Oto skrypt build-env.sh, ustawiający środowisko buildowe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export prefix=$HOME/opt&lt;br /&gt;
export destdir=$HOME/opt/stow&lt;br /&gt;
export PATH=$prefix/bin:$PATH&lt;br /&gt;
export LD_LIBRARY_PATH=$prefix/lib:$prefix/lib64${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH&lt;br /&gt;
export LIBRARY_PATH=$prefix/lib:$prefix/lib64${LIBRARY_PATH+:}$LIBRARY_PATH&lt;br /&gt;
export C_INCLUDE_PATH=$prefix/include${C_INCLUDE_PATH+:}$C_INCLUDE_PATH&lt;br /&gt;
export CPLUS_INCLUDE_PATH=$prefix/include${CPLUS_INCLUDE_PATH+:}$CPLUS_INCLUDE_PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wymagania ===&lt;br /&gt;
&lt;br /&gt;
Zgodnie z INSTALL/prerequisites.html.&lt;br /&gt;
&lt;br /&gt;
Uwaga. Używam programu [[stow]] do zarządzania instalowanymi pakietami, dlatego specyfikuję DESTDIR przy wywołaniu make install. Wymaga to jeszcze zwykłych czynności: przeniesienia zawartości DESTDIR/$prefix do DESTDIR oraz &amp;quot;instalacji&amp;quot;, wraz z rozwiązywaniem incydentalnuch konfliktów, ale w tym opisie pozwoliłem to sobie pominąć.&lt;br /&gt;
&lt;br /&gt;
; gmp-4.3.2 &lt;br /&gt;
[ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.gz (download)]&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$prefix --enable-cxx &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install DESTDIR=$destdir/gmp-4.3.2&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
; mpfr-2.4.2 lub nowszy; użyłem 3.1.0&lt;br /&gt;
[http://www.mpfr.org/mpfr-current/mpfr-3.1.0.tar.gz (download)]&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install DESTDIR=$destdir/mpfr-3.1.0&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
; mpc-0.8.1 lub nowszy; użyłem 0.9&lt;br /&gt;
[http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz (download)]&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; \&lt;br /&gt;
     make install DESTDIR=$destdir/mpc-0.9&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
; ppl-0.11 lub nowszy; użyłem 0.11.2&lt;br /&gt;
[http://bugseng.com/products/ppl/download/ftp/releases/0.11.2/ppl-0.11.2.tar.gz (download)]&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$prefix --with-gmp-prefix=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; \&lt;br /&gt;
     make install DESTDIR=$destdir/ppl-0.11.2&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
Uwaga: ''make check'' trwa bardzo długo, warto więc zostawić go sobie na później bądź puścić w tle.&lt;br /&gt;
&lt;br /&gt;
; cloog-ppl-0.15; użyłem 0.15.11; (dopuszczalne jest też 0.16 ale z dodatkowymi opcjami)&lt;br /&gt;
[ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-ppl-0.15.11.tar.gz (download)]&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$prefix --with-ppl=$prefix --with-gmp=$prefix &amp;amp;&amp;amp; make &amp;amp;&amp;amp; \&lt;br /&gt;
     make install DESTDIR=$destdir/cloog-ppl-0.15.11&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
=== Kompilacja kompilatora ===&lt;br /&gt;
&lt;br /&gt;
Z katalogu ze źródłami kompilatora (gcc-4.7.0):&lt;br /&gt;
&lt;br /&gt;
 mkdir ../gcc-objdir&lt;br /&gt;
 cd ../gcc-objdir&lt;br /&gt;
 ../gcc-4.7.0/configure --prefix=$prefix --with-gmp=$prefix --with-mpfr=$prefix --with-mpc=$prefix \&lt;br /&gt;
    --with-ppl=$prefix --with-cloog=$prefix --with-local-prefix=$prefix&amp;lt;ref&amp;gt;Nie jest bynajmniej dobrym pomysłem, by jako ''local prefix'' podać /dev/null.&amp;lt;/ref&amp;gt;&lt;br /&gt;
 make -j2&lt;br /&gt;
 make install DESTDIR=$destdir/gcc-4.7.0&lt;br /&gt;
&lt;br /&gt;
Miałem pełną paczkę dystrybucyjną gcc, razem z ''testsuite'', więc nie musiałem osobno ściągać testów [file:///home/jacek/tmp/build-gcc-4.7/gcc-4.7.0/INSTALL/test.html]]. Na [[root|pierwszym komputerze]] mogłem po prostu wpisać:&lt;br /&gt;
&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
i coś tam się zaczęło testować... '. Nie wszystkie testy przeszły pomyślnie; wyniki można obejrzeć w plikach *.sum porozrzucanych po katalogach buildowych.&lt;br /&gt;
&lt;br /&gt;
Na [[noisy|dugim kompie]] brakowało pakietu autogen, o czym zostałem poinformowany, oraz dejagnu, co zostało skrzętnie przemilczane, ale podejrzanie szybki czas ukończenia testów skłonił mnie do bliższego przyjrzenia się tonom śmiecia na ekranie. Po zaisntalowaniu obu puściłem testy i zostawiłem na dłużej.&lt;br /&gt;
&lt;br /&gt;
=== Użytkowanie ===&lt;br /&gt;
&lt;br /&gt;
Ponieważ kompilator zainstalowany jest w niestandardowym miejscu, trzeba ustawić odpowiednie zmienne środowiska, by go używać. Zmiennych tych pewnie potrzeba będzie mniej niż do budowania samego kompilatora. Zrobiłem osobny skrypt use-env.sh, który aktualnie wygląda tak:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tmp_prefix=$HOME/opt&lt;br /&gt;
export PATH=$tmp_prefix/bin:$PATH&lt;br /&gt;
export LD_LIBRARY_PATH=$tmp_prefix/lib:$tmp_prefix/lib64${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH&lt;br /&gt;
unset tmp_prefix&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[Boost]], który rutynowo już buduję wraz z gieckiem&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
* [http://gcc.gnu.org/gcc-4.7/changes.html Co nowego w gcc-4.7]&lt;br /&gt;
* [http://gcc.gnu.org/gcc-4.7/cxx0x_status.html Status c++11 w gcc]&lt;br /&gt;
* [http://gcc.gnu.org/wiki/HomePage GCC Wiki] zawiera też ciekawe informacje, na przykład o [http://gcc.gnu.org/wiki/Atomic atomikach]&lt;br /&gt;
&lt;br /&gt;
{{przypisy}}&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Ssh</id>
		<title>Ssh</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Ssh"/>
				<updated>2011-10-20T23:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;Redaktor: Nowa strona: '''ssh''' to niezwykle pożyteczne narzędzie. Kilka ciekawych rzeczy, które można z nim zrobić: * logowanie na zdalne konto, sesja interaktywna bądź nie, cała transmisja szyfrowa...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''ssh''' to niezwykle pożyteczne narzędzie. Kilka ciekawych rzeczy, które można z nim zrobić:&lt;br /&gt;
* logowanie na zdalne konto, sesja interaktywna bądź nie, cała transmisja szyfrowana&lt;br /&gt;
* zamiast pamiętać hasła na poszczególne konta, można użyć kluczy&lt;br /&gt;
* port forwarding (opcje -L i -R)&lt;br /&gt;
* ssh jako SOCKS proxy na zdalnym hoście (opcja -D) [http://embraceubuntu.com/2006/12/08/ssh-tunnel-socks-proxy-forwarding-secure-browsing/]&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [[man:ssh(1)]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:Unix]]&lt;/div&gt;</summary>
		<author><name>Redaktor</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Google</id>
		<title>Google</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Google"/>
				<updated>2011-10-17T00:54:20Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: google tips &amp;amp; tricks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google tips &amp;amp; tricks&lt;br /&gt;
&lt;br /&gt;
* http://google.com/ncr – żeby uniknąć przekierowania do wersji językowej wyznaczonej na podstawie adresu IP&lt;br /&gt;
* https://encrypted.google.com/ – z gugle można pogadać nie narażając się na [[retencja danych telekomunikacyjnych|wścibskie oczy i uszy]] przyłożone do kabla&lt;br /&gt;
* https://encrypted.google.com/?hl=pl – szyfrowane i po polsku&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[Scroogle Scrapper]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:serwisy WWW]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Omeka_i_Dreamhost</id>
		<title>Omeka i Dreamhost</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Omeka_i_Dreamhost"/>
				<updated>2011-10-16T09:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: drobpbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://omeka.org/ Omeka]''', platforma do tworzenia internetowych &amp;quot;wystaw&amp;quot; i publikowania kolekcji, jest dostępna w ramach &amp;quot;one-click installs&amp;quot; na [[Dreamhost|Dreamhoście]]. Jak często się zdarza, tamta wersja nie jest najświeższa. Bez praktycznie żadnych problemów można sobie ściągnąć aktualną (1.4.1) i zainstalować ręcznie.&lt;br /&gt;
&lt;br /&gt;
Omeka potrafi być całkiem estetyczna, jeśli idzie o wygląd, zwłaszcza kolorystykę. Niestety, domyślnie, taka estetyczna jest tylko część administracyjna, natomiast część dostępna publicznie ma dość nieciekawy, biały &amp;quot;temat&amp;quot;. Wśród standardowych zamienników też nie znalazłem nic ciekawego. Śmieszne to trochę, bo jeśli zrobili ładną część dla admina, mogli pomyśleć o zwykłym userze także.&lt;br /&gt;
&lt;br /&gt;
Uwagi i problemy.&lt;br /&gt;
* Pod [[Opera|Operą]] zdarza się czasami, że po wykonaniu jakiejś akcji tylko mignie załadowana strona a przeglądarka pokazuje pustą. Wystarczy wtedy cofnąć.&lt;br /&gt;
* Nie pozwala mi załadować plików pdf, mimo, że odpowiednie ustawienia (dot. rozszerzeń nazwy i mime-type) wyglądają na prawidłowe. Pomaga dopiero wyłączenie sprawdzania ładowanych plików (Settings / Security)&lt;br /&gt;
* PHP na DH ma limit chyba 7 MB uploadu. Żeby to zmienić, trzeba:&lt;br /&gt;
** przełączyć domenę z PHP5.2 na PHP5.3 (fastcgi)&lt;br /&gt;
** utworzyć plik ~/.php/5.3/phprc o następującej zawartości:&lt;br /&gt;
**: &amp;lt;code&amp;gt;upload_max_filesize = &amp;quot;100M&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
**: &amp;lt;code&amp;gt;post_max_size = &amp;quot;100M&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** pozabijać być może działające procesy php5.3.cgi&amp;lt;br /&amp;gt;&lt;br /&gt;
**: &amp;lt;code&amp;gt;killall -v php5.3.cgi&amp;lt;/code&amp;gt;&lt;br /&gt;
* Alternatywną metodą uploadu plików może być użycie rozszerzenia [http://omeka.org/add-ons/plugins/dropbox/ Dropbox]. Jeszcze tego nie próbowałem.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Piwigo</id>
		<title>Piwigo</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Piwigo"/>
				<updated>2011-10-07T01:20:05Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Co z tym zrobić */ przykład&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://piwigo.org/ Piwigo] (dawniej: PhpWebGallery) to kolejna aplikacja webowa typu album ze zdjęciami. Od jakiegoś czasu (powiedzmy, od ładnych paru lat) rozglądam się za czymś takim, by trzymać tam swoje fotki. No, może nie tyle rozglądam się, co czekam, aż mi coś wpadnie w oko. Testowałem już [[Gallery]] v2, które wydaje się przeładownae setkami opcji. Oglądałem też ZenPhoto, które na odwrót - jest do przesady uproszczone. Teraz próbuję Piwigo właśnie, które byłoby całkiem OK, ale ma poważną wadę, której nie mają inne skrypty: wymaga, by przynajmniej niektóre katalogi i pliki były zapisywalne przez wszystkich (o+rw)...&lt;br /&gt;
&lt;br /&gt;
Dotyczy to następujących podkatalogów wraz z zawartością:&lt;br /&gt;
* _data - bezwarunkowo&lt;br /&gt;
* upload, o ile chcemy upload'ować zdjęcia przez WWW&lt;br /&gt;
* i parę innych, zależnie od oczekiwanej funkcjonalności.&lt;br /&gt;
&lt;br /&gt;
Niestety, &amp;quot;by default&amp;quot; skrypt jest dość permisywny, że tak powiem, i dość obficie nawala uprawnieniami do zapisu. To jest jakaś niedoróba. Skoro inne skrypty radzą sobie bez ''world-writeable'' plików i katalogów, to i ten powinien.&lt;br /&gt;
&lt;br /&gt;
== Co z tym zrobić ==&lt;br /&gt;
&lt;br /&gt;
Testowane na wersji 2.3.0.&lt;br /&gt;
&lt;br /&gt;
* Po rozpakowaniu zipa zmienić uprawnienia plików i katalogów tak, by &amp;quot;others&amp;quot; nie mieli praw do zapisu. Pliki .php powinny być wykonywane w konteście użytkownika, więc nie potrzebują nawet upgrawnień do odczytu:&lt;br /&gt;
*: &amp;lt;code&amp;gt;chmod -R o-w .&amp;lt;/code&amp;gt;&lt;br /&gt;
*: &amp;lt;code&amp;gt;find . -name &amp;quot;*.php&amp;quot; -exec chmod o-rwx {} \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Po uploadzie zdjęć poprzez interfejs webowy piwigo ustawi jako zapisywalne dla wszystkich załadowane zdjęcia i katalogi albumów. Znajdują się one w podkatalogu upload. Od czasu do czasu przejrzeć i ewentualnie odebrać uprawnienia do zapisu:&lt;br /&gt;
*: &amp;lt;code&amp;gt;chmod -R o-w upload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Albumy ==&lt;br /&gt;
W piwigo są albumy &amp;quot;fizyczne&amp;quot; i &amp;quot;wirtualne&amp;quot;. Fizyczne to takie, które wgra się bezpośrednio na serwer i umieści w podkatalogu galleries. Ich układ odpowiada bezpośrednio strukturze podkatalogów w galleries. Albumy wirtualne z kolei są tworzene przez odpowiednie wpisy w bazie danych i powstają na przykład podczas uploadu zdjęć z interfejsu webowego (same zdjęcia trafiają do podkatalogu upload).&lt;br /&gt;
&lt;br /&gt;
Modyfikacje struktury katalogów albumów fizycznych spowoduje - oprócz konieczności wykonania synchronizacji - utratę metadanych. Zauważyłem, że zniknęły mi oceny wystawione dla paru zdjęć, ale przypuszczam, że dotyczy to także innych danych (np. komentarzy).&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
* [http://piwigo.org/forum/viewtopic.php?pid=117115#p117115 Post na forum] wyjaśniający, które katalogi muszą być zapisywalne dla wszystkich&lt;br /&gt;
* [http://piwigo.org/forum/viewtopic.php?pid=114211#p114211 Kolejny post] o uprawnieniach&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Mercurial_Queues</id>
		<title>Mercurial Queues</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Mercurial_Queues"/>
				<updated>2011-10-04T09:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Mercurial Queues''' (MQ) to dostępne z [[Mercurial]]em, rozproszonym [[system kontroli wersji|systemem kontroli wersji]], narzędzie do zarządzania kolejkami patchy, bazowane na samodzielnym toolu o nazwie [[quilt]]. Integracja polega na tym, że zaaplikowane patche widziane są jako changesety w repozytorium, dlatego można do nich stosować większość normalnych operacji na historii, a przy tym łatwo je &amp;quot;zdjąć&amp;quot; i, na przykład, przenieść w inne miejsce.&lt;br /&gt;
&lt;br /&gt;
Tutoriale i kupa informacji o MQ jest oczywiście dostępna w internecie. Tu chcę odnotować jedynie parę swoich uwag i spostrzeżen.&lt;br /&gt;
&lt;br /&gt;
* MQ dostęne jest jako rozszerzenie dostarczane razem z Mercurialem, ale nieaktywne; należy włączyć je w pliku konfiguracyjnym&lt;br /&gt;
* Do interaktywnego &amp;quot;nagrywania&amp;quot; patchy przyda się także rozszerzenie [[record]], dzięki któremu można będzie użyć komend ''qrecord'' i ''qnew --interactive''.&lt;br /&gt;
* Ostrożnie z komendą ''qrefresh'', potrafi ona działać dość nieintuicyjnie (jak na mój gust), gdy chcę zapisać w patchu zmiany tylko z niektórych plików. W szczególności:&lt;br /&gt;
** wskanie pliku (plików) spowoduje, że zapisane uprzednio zmiany z innych plików wylecą z patcha a pojawią się ponownie jako modyfikacja kopii roboczej&lt;br /&gt;
** opcja -e czy -l nie służy wyłącznie do modyfikacji &amp;quot;log message&amp;quot;, przy okazji wykonuje też odświeżenie patcha; jeśli chcesz zmienić komunikat, po prostu przeedytuj patch ręcznie&lt;br /&gt;
* Zdejmowanie patchy i ponowne ich nakładanie w innym miejscu (na przykład po dociągnięciu zmian z innego repozytorium) działa świetnie, dopóki nie pojawi się konflikt; wtedy tworzy pliki *.rej zawierające odrzucone zmiany i każe nam ręcznie rozwiązywać ten problem (czyli dokładnie tak, jak to się robiło przed wiekami przy użyciu prostych poleceń diff i patch). Na szczęście jest alternatywa: polecenie [[rebase]] obsługuje także zaaplikowane patche, więc gdy prosta aplikacja patchy się nie powiedzie można je zdjąć, zrobić ''update'' do porzedniej rewizji (tzn. tej, gdzie patche były poprzednio aplikowane), tam nałożyć patche i przy pomocy ''rebase'' nanieść je na docelowy commit, rozwiązując w zwykły sposób konflikty (zależnie od konfiguracji może to być interaktywne narzędzie typu [[kdiff3]]).&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [http://mercurial.selenic.com/wiki/HandlingRejects Handling Rejects] (Mercurial wiki)&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Git_jest_trudny</id>
		<title>Git jest trudny</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Git_jest_trudny"/>
				<updated>2011-09-24T16:52:16Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[System kontroli wersji]] o nazwie [[Git]] powstał gdzieś w 2005 roku jako garść skryptów stworzona naprędce przez [[Linus Torvalds|Linusa Torvaldsa]] do zarządzania kodem źródłowym [[Linux|Linuksa]]. Jak sam się przechwalał, pierwsza wersja nadająca się do użytku powstała w ciągu dwóch tygodni. Torvalds główny nacisk położył na wydajność. Nic dziwnego, że interfejs użytkownika, przyswajalność i spójność koncepcyjna nie mogły być najmocniejszą stroną Gita. Co prawda w ciągu tych kilku lat program się rozwinął, ale moim zdaniem wciąż nie pozbył się piętna tego grzechu pierworodnego. Git, choć prawidłowo spełnia swoje funkcji i jest zaawansowanym technicznie narzędziem, jest przy okazji trudny do opanowania. Przy tym trudność ta jest zupełnie niepotrzebna: rozproszony VCS nie jest czymś aż tak skomplikowanym; dowodzi tego chociażby [[Mercurial]]. Wystarczyło popracować trochę nad używalnością i przemyśleć, czego od narzędzia może oczekiwać grono użytkowników szersze niż Linus Torvalds.&lt;br /&gt;
&lt;br /&gt;
Oczywiście, fani Gita zaraz zakrzykną, że to nieprawda, że Git jest łatwy i intuicyjny, że to właśnie [[Mercurial]], [[Subversion]], [[CVS]] czy [[SourceSafe]] są trudne. Myślę jednak, że ktoś, kto obiektywnie i bez emocji spróbuje poużywać sobie kilku tego typu narzędzi, bez trudu wyrobi sobie własne zdanie.&lt;br /&gt;
&lt;br /&gt;
A tutaj zbieram wypowiedzi potwierdzające tę tezę, po to, by mieć kontrargument na popularną wśród zwolenników gita wymówkę, że trudność to kwestia gustu.&lt;br /&gt;
&lt;br /&gt;
* Torvalds nie ukrywa, że zawsze najważniejszą sprawą była wydajność: ''And by primary, I really mean primary. As in &amp;quot;more important than just about anything else&amp;quot;.''[http://www.spinics.net/lists/git/msg161479.html] Nic dziwnego, że ''usability'' też musiało zejść na dalszy plan.&lt;br /&gt;
&lt;br /&gt;
* Ben Lynn, autor podręcznika ''[http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic]'', uważa, że git jest [...] ''tricky to learn, let alone master.''[http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html]. Sam już tytuł daje do myślenia: Magia Gita? jaka znowu pieprzona magia? To ma być ''narzędzie'', czy czarodziejski artefakt?&lt;br /&gt;
&lt;br /&gt;
* Scott Chacon, autor książki ''[http://progit.org/book/ Pro Git. Professional Version Control]'', określający się jako “git evangelist”, wyznaje na swoim blogu: ''One of the topics that I didn't cover in depth in the Pro Git book is the reset command. Most of the reason for this, honestly, is that I never strongly understood the command beyond the handful of specific use cases that I needed it for.''[http://progit.org/2011/07/11/reset.html]. Jeśli ktoś taki potrzebuje lat na zrozumienie niuansów jednej tylko z licznych komend, to co ma zrobić &amp;quot;zwykły użytkownik&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
* Analiza, którą przeprowadzono w 2008 r. w Google zauważa: ''Git has a steeper learning curve than Mercurial due to a number of factors. Git has more commands and options, the volume of which can be intimidating to new users. Mercurial's documentation tends to be more complete and easier for novices to read. Mercurial's terminology and commands are also a closer to Subversion and CVS, making it familiar to people migrating from those systems.'' [http://code.google.com/p/support/wiki/DVCSAnalysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zastanawia mnie też występowanie zjawiska &amp;quot;ewangelistów&amp;quot;. Skąd się biorą ci ludzie? Dlaczego uważają, że takie czy inne narzędzie, jest aż tak wartościowe, że warto poświęcać swój czas na jego popularyzację, nauczanie czy - jak nierzadko się zdarza - trolling i rozpętywanie flame wars. Moja hipoteza jest następująca. Taki młody zapewne człowiek poświęca wiele miesięcy na poznanie arkanów gita i w końcu zaczyna z nim odczuwać więź emocjonalną. Później pewnie natyka się na sceptyków, którzy mówią, że na przykład mercurial robi w zasadzie to samo, a przy tym można opanować go w stopniu zaawansowanym w ciągu paru tygodni. Pojawia się dysonans poznawczy: Jak to? Jeśli tyle czasu musiałem poświęcić, żeby nauczyć się gita, to przecież on ''musi'' być lepszy! No i gość zostaje &amp;quot;ewangelistą gita&amp;quot; i jeszcze jest z tego dumny!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [[Git czy Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Info</id>
		<title>Info</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Info"/>
				<updated>2011-09-24T16:11:02Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: interpunkcja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zawsze miałem problemy z przeglądarką dokumentacji '''info''' (GNU info) ze względu na nietypowe (jak dla mnie) kobinacje klawiszy. Wolałem używać stron manuala (które jednak często zawierają o wiele mniej informacji) lub nakładki w postaci skryptu CGI [[info2www]].&lt;br /&gt;
&lt;br /&gt;
Ku pamięci postanowiłem sobie jednak tu odnotować najważniejsze klawisze sterujące oryginalną, terminalową przeglądarką ''info''.&lt;br /&gt;
&lt;br /&gt;
:n - next node&lt;br /&gt;
:p - prev node&lt;br /&gt;
:u - up&lt;br /&gt;
:l - last&lt;br /&gt;
:Ctrl-n - next line&lt;br /&gt;
:Ctrl-p - prev line&lt;br /&gt;
:q - quit&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [[man:info(1)]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Oprogramowanie]]&lt;br /&gt;
[[kategoria:Linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Alpine</id>
		<title>Alpine</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Alpine"/>
				<updated>2011-09-20T02:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: subiektywnie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.washington.edu/alpine/ Alpine]''' to następca starego, dobrego klienta poczty [[Pine]], stworzonego wieki temu na Uniwersytecie Waszyngtońskim. Alpine (podobnie jak wcześniej Pine) działa w terminalu, ale w przeciwieństwie do innych programów tego rodzaju, ma dość klarowny interfejs użytkownika i nie wymaga wyuczania się dziwacznych kombinacji klawiszy.&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:unix]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/GnuCash</id>
		<title>GnuCash</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/GnuCash"/>
				<updated>2011-09-18T20:04:29Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: gnucash - zapis bez kompresji&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.gnucash.org/ GnuCash]''' – program księgowy nadający się zarówno dla małej firmy, jak i prowadzenia domowego budżetu.&lt;br /&gt;
&lt;br /&gt;
Domyślnie XML-owe pliki generowane przez program są dodatkowo kompresowane [[gzip]]em. Pozwala to zaoszczędzić miejsce na dysku, jednak przeszkadza, gdy chcemy na przykład takie pliki objąć [[system kontroli wersji|systemem kontroli wersji]]. Na szczęście kompresję pliku danych można wyłączyć w preferencjach (''Edit / Preferences / General / Compress files'', lub (prawie) po polsku: ''Zmodyfikuj / Preferences / Ogólne / Compress files'').&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Oprogramowanie]]&lt;br /&gt;
[[kategoria:Linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Przej%C5%9Bcie_na_unicode</id>
		<title>Przejście na unicode</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Przej%C5%9Bcie_na_unicode"/>
				<updated>2011-08-15T18:12:04Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: przestawiłem częściowo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Może wreszcie, po kilku latach odkładania, zajmę się przejściem z kodowania lokalnego (iso8859-2) na unicode w [[root|jednym z moich systemów]]. (Chociaż z drugiej strony właściwie już postanowiłem się z nim pożegnać i postawić, nawet na tym samym sprzęcie, tylko z większymi dyskami, nowego, świeżego 64-bitowego [[Debian]]a...).&lt;br /&gt;
&lt;br /&gt;
Co trzeba zrobić - tego dopiero się dowiem. Na razie w pliku /etc/locale.gen dopisałem: &amp;lt;code&amp;gt;pl_PL.UTF-8 UTF-8&amp;lt;/code&amp;gt; i wygenerowałem unicode'owe locale poleceniem ''locale-gen''. Sprawdziłem, że ustawienie &amp;lt;code&amp;gt;LANG=pl_PL.UTF-8&amp;lt;/code&amp;gt;, a następnie odpalenie nowego okna pseudoterminala (xterm albo konsole) działa jak trzeba.&lt;br /&gt;
&lt;br /&gt;
Dobra, w końcu zdecydowałem się na ten krok. W pliku /etc/locale.gen dodałem definicje w kodowaniu UTF-8 dla języka angielskiego, polskiego i niemieckiego. Po odsianiu komentarzy jego zawartość wygląda tak:&lt;br /&gt;
 de_DE ISO-8859-1&lt;br /&gt;
 en_US ISO-8859-1&lt;br /&gt;
 pl_PL ISO-8859-2&lt;br /&gt;
 de_DE.UTF-8 UTF-8&lt;br /&gt;
 en_US.ISO-8859-15 ISO-8859-15&lt;br /&gt;
 en_US.UTF-8 UTF-8&lt;br /&gt;
 pl_PL.UTF-8 UTF-8&lt;br /&gt;
&lt;br /&gt;
Zmiany można wprowadzić korzystając z polecenia &amp;lt;code&amp;gt;dpkg-reconfigure locales&amp;lt;/code&amp;gt;, który potem woła jeszcze &amp;lt;code&amp;gt;locale-gen&amp;lt;/code&amp;gt; żeby wygenerować same locale oraz &amp;lt;code&amp;gt;update-locale&amp;lt;/code&amp;gt;, zapisujące globalne ustawienia w systemie (miałem dotąd nieustawione, więc było to &amp;quot;C&amp;quot;, teraz zmieniłem na &amp;quot;en_US.UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Następnie w skryptach startowych shella w katalogu użytkownika zmieniłem wiersz:&lt;br /&gt;
 export LANG=pl_PL&lt;br /&gt;
na:&lt;br /&gt;
 export LANG=pl_PL.UTF-8&lt;br /&gt;
&lt;br /&gt;
No i to wystarcza, żeby po restarcie wszystko ładnie przestawiło się na unikod w środowisku graficznym (X/KDE). Gorzej z konsolą, nad tym będę musiał jeszcze popracować.&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/System_kontroli_wersji</id>
		<title>System kontroli wersji</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/System_kontroli_wersji"/>
				<updated>2011-08-09T09:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Systemy kontroli wersji, z którymi miałem okazję się zetknąć, to (chronologicznie):&lt;br /&gt;
* [[RCS]], Revision Control System, w 1997 albo 1998 r.&lt;br /&gt;
* [[CVS]], Concurrent Versions System, trochę później&lt;br /&gt;
* [[VSS]], Visual SourceSafe, w 2000 r.&lt;br /&gt;
* [[SVN]], Subversion, w 2005.&lt;br /&gt;
* [[SVK]] w 2006.&lt;br /&gt;
* [[Mercurial]] (Hg) w 2011&lt;br /&gt;
* [[git]] także w 2011&lt;br /&gt;
&lt;br /&gt;
Pierwszym systemem wersjonowania, z jakim miałem do czynienia był [[RCS]] (''revision control system''). Nadawał on się do zarządzania pojedynczymi plikami – dla każdego tworzył &amp;quot;archiwum&amp;quot; w postaci pliku w podkatalogu RCS, przechowującego wszystkie wersje. Plik do edycji należało przy pomocy odpowiednich poleceń &amp;quot;wyczekautować&amp;quot; (''co'')), a potem &amp;quot;wczekinować&amp;quot; (''ci''). RCS stosowałem całkiem długo do kontroli zmian w plikach konfiguracyjnych w /etc, w skryptach shellowych i tego typu drobiazgach. Istniały co prawda polecenia próbujące grupowo traktować szereg plików RCS w jednym katalogu (jak chociażby rcs2log), nie dało się jednak nie zauważyć, że zarządzanie poszczególnymi plikami nie było wygodne ani praktyczne w przypadkach innych niż wersjonowanie niezależnych, pojednycznych plików.&lt;br /&gt;
&lt;br /&gt;
Potem poznałem [[CVS]] (''Concurrent Versions System''), który pozwalał operować na jednostkach składających się z wielu plików, katalogów, modułów czy projektów. W środku co prawda posługiwał się jednoplikowymi archiwami RCS, ale użytkownik nie musiał się tym przejmować a zamiast tego korzystać z komend cvs działających na większych jednostkach. Z kolei zaletą wykorzystania RCS-a było to, że można sobie było wejść do wnętrza takiego repozytorium i przy pomocy odpowiednich poleceń przeanalizować poszczególne pliki. Ale były też i wady, jak chociażby duplikownaie informacji typu ''log message'' w każdym pliku, brak jakiejkolwiek transakcyjności. Branche, które już w RCS-ie były trochę dziwaczne i polegały na zwiększaniu liczby komponentów numeru wersji pliku (np. r0.1, branch z niego: 0.1.1, pierwsza rewizja na tym branchu: 0.1.1.1), teraz, pod kontrolą CVS uzyskały zupełnie nowy wymiar udziwnienia, a przy tym ich tworzenie wiązało się z fizycznym kopiowaniem danych wewnątrz repozytorium, więc nie było szczególnie efektywne.&lt;br /&gt;
&lt;br /&gt;
Zatem do kontroli większych rzeczy, wieloplikowych, jak programy etc. zacząłem używać CVS-a, ale przy wersjonowanych plikach konfiguracyjnych i przynajmniej niektórych skryptach pozostałem przy RCS-ie, o ile pamiętam. W międzyczasie miałem nieprzyjemność zapoznania się z [[VSS]]-em, narzędziem używanym w świecie [[windows]]iarzy, ale o tym naprawdę szkoda gadać.&lt;br /&gt;
&lt;br /&gt;
No i wreszcie, był rok może 2005, nastało [[Subversion]]. To znaczy, nastało pewnie trochę wcześniej, ale ja akurat wtedy się z nim zapoznałem. Początkowo twórcy SVN reklamowali go jako &amp;quot;lepszy CVS&amp;quot;, &amp;quot;CVS zrobiony jak trzeba&amp;quot; albo podobnie (potem zrezygnowali z tego hasła). I rzeczywiście, SVN przyniósł kilka nowych, pozytywnych koncepcji w porównaniu do CVS, jak wersjonowanie repozytorium zamiast poszczególnych plików, śledzenie przenoszenia i zmian nazw plików i katalogów, błyskawiczne i tanie branche tworzone metodą ''copy-on-write'' i pewnie coś jeszcze, o czym akurat zapomniałem. Do tego kod był solidny a oprogramowanie stabilne.&lt;br /&gt;
&lt;br /&gt;
Niestety, twórcy Subversion nie uniknęli pewnych pomysłów kontrowersyjnych, albo przynajmniej nietypowych. Chodzi mi głównie o rezygnację z obiektów typu ''branch'' czy ''tag'' i sprowadzenie wszystkiego do wersjonowanego drzewa katalogów, którego pewne części umawiamy się traktować w sposób szczególny (zalecana, &amp;quot;kanoniczna&amp;quot; struktura katalogów: trunk, branches, tags). Ten nowatorski pomysł, choć początkowo mógł się wydawać atrakcyjny (po co mnożyć byty przez wprowadzanie tagów i branchy? po prostu kopiujmy katalogi!), z perspektywy czasu oceniam jako poważny błąd projektowy. Jego konsekwencje są takie, że tak naprawdę program nigdy nie wie, co właściwie wersjonuje; to znaczy, gdzie się zaczyna ''projekt'', czy cokolwiek chcemy wersjonować w takim repozytorium. Stąd wynika problem taki, że trudno jest traktować projekt jako całość, zwłaszcza, że w repozytorium mogą się znaleźć jakieś dodatkowo, mniej lub bardziej luźno związane z danym projektem hierarchie katalogów.&lt;br /&gt;
&lt;br /&gt;
Sprawy zupełnie się pogorszyły od wersji 1.5 SVN, kiedy to autorzy postanowili w końcu zaimplementować ''merge tracking'', czyli właściwość polegającą na rejestrowaniu rozgałęzień (branche) i złączeń (merge'owanie) historii projektu i wyciąganiu z tego wniosków mających ułatwiać pracę użytkownikom. Niestety, zupełnie sobie z tym nie poradzili. Po pierwsze ze względu na wspomnianą wyżej luźną strukturę repozytorium, nie narzucającą praktycznie żadnej sementatyki. Jak system ma śledzić branchowanie, skoro branchowanie jest tożsame z kopiowaniem, a przy tym nie musi obejmować dokładnie projektu (o którym oprogramowanie nic przecież nie wie), ale na przykład jakiś jego podzbiór, czy wręcz pojedynczy plik? A z drugiej strony, można sobie skopiować katalog nadrzędny nad tym, w którym sobie założyliśmy, że będziemy trzymać te niby-branche. Tak czy owak, praktyczny efekt na większych repozytoriach jest taki, że merge tracking w ogóle się nie nadaje do użytku i bardziej przeszkadza, niż pomaga, natomiast przykrym efektem ubocznym jest to, że jego ślady z czasem pojawiają sie w ''properties'' poszczególnych plików i katalogów w coraz większych ilościach, aż dochodzimy do absurdalnej sytuacji, że zmerge'owanie pojedynczego pliku potrafi wygenerować dziesiątki i setki modyfikacji ''properties'' w zupełnie na pozór niezwiązanych miejscach. A to praktycznie uniemożliwia śledzenie zmian w logach.&lt;br /&gt;
&lt;br /&gt;
W 2006 roku zrobiło się głośniej o DVCS-ach czy DSCM-ach, czyli rozproszonych systemach kontroli wersji, ale jakoś się tym bliżej nie zainteresowałem, może dlatego, że wciąż jeszcze byłem zadowolony z efektów, jakie przyniosło porzucenie CVS-a czy VSS-a na rzecz SVN-a. Owszem, pobawiłem się chwilkę [[SVK]], który był reklamowany jako rozproszony, no i może nawet był, ale wcale mnie do koncepcji nie zachęcił. Może dlatego, że w &amp;quot;bebechach&amp;quot; trzymał repozytorium Subversion i jego funkcjonalność była bardzo zbliżona, a w niektórych miejscach gorsza niż właśnie SVN-a. A może jego nieintuicyjna organizacja? Centralny &amp;quot;depot&amp;quot; w katalogu domowym, w nim 1 lub więcej repozytoriów SVN, każde zawierające katalog &amp;quot;mirror&amp;quot;, służący do synchronizacji ze zdalnym repozytorium (push i pull) oraz jego kopię &amp;quot;local&amp;quot;, służącą do edycji lokalnej (checkout i commit).&lt;br /&gt;
&lt;br /&gt;
Tak czy siak, trwałem przy Subversion, choć od czasu do czasu czytałem coś zachęcającego o systemach rozproszonych. Ale chyba tak naprawdę zaintrygował mnie tym Joel [[Joel on Software|na swoim blogu]] gdzieś na początku roku 2010. Musiał jednak minąć kolejny rok, bym się tym zajął poważniej i dopiero w 2011 przeczytałem do końca HgInit i zacząłem się bawić Mercurialem. Wkrótce pojawiło się pytanie: a może jednak Git? Który lepszy i dlaczego? Poznałem podstawy obu, raz się skłaniałem ku jednemu, raz ku drugiemu. Postanowiłem się skupić najpierw na Mercurialu, nauczyć się go używać w trochę większym niż podstawowy zakresie a Gita uczyć się przez porównanie, ewentualnie zagłębić się w niego później. Dopiero gdy lepiej poznam oba, będę mógł w miarę obiektywnie odpowiedzieć sobie na pytanie: [[Git czy Mercurial]]?&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
Interesujące linki związane z tematem.&lt;br /&gt;
* http://whygitisbetterthanx.com/ – strona próbująca dowieść wyższości gita nad wszystkim innym&lt;br /&gt;
* [http://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory Understanding Darcs: Patch theory]&lt;br /&gt;
* [http://stackoverflow.com/questions/372357/merging-vcproj-files-scms-hell Merging vcproj files - SCM's hell]&lt;br /&gt;
* [http://www.snuffybear.com/ucm_branch.htm UCM Central - Configuration Management Branching Strategy]&lt;br /&gt;
* [http://www.vance.com/steve/perforce/Branching_Strategies.html Advanced SCM Branching Strategies] by Stephen Vance, 1988, wraz ze [http://www.vance.com/steve/perforce/slideindex.html slajdami]&lt;br /&gt;
* [http://www.ericsink.com/scm/source_control.html Source Control HOWTO] by Eric Sink&lt;br /&gt;
* [http://www.ericsink.com/vcbe/index.html Version Control by Example] by Eric Sink&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Screen</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Screen"/>
				<updated>2011-08-08T05:43:56Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: screen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[screen]], czyli emulator i zarazem multiplekser terminala, jest niezwykle pożytecznym narzędziem, zwłaszcza w sytuacjach pracy zdalnej przez [[ssh]]: gdy połączenie zostanie zerwane, sesja będzie sobie dalej pracować pod kontrolą screena, a po ponownym zalogowaniu można isę będzie do niej przypiąć.&lt;br /&gt;
&lt;br /&gt;
Podczas pracy interaktywnej screen obsługuje kontrolne sekwencje klawiszy rozpoczynające się od klawisza ^A (ctlr-a). Można go też &amp;quot;zaprogramować&amp;quot; z pliku, podstawowe, pojedyncze polecenia wpisuje się po prostu w kolejnych wierszach, poprzedzając słowem 'screen' żeby otworzyć nowe okno. Gorzej z łączeniem kilku poleceń (pipe'y) - tego jeszcze do końca nie rozpracowałem...&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [[man:screen(1)|man screen(1)]]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:Unix]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Purge</id>
		<title>Purge</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Purge"/>
				<updated>2011-08-07T21:38:17Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: clean&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[purge]] to taki poręczny drobiazg do [[Mercurial]]a: usuwa niewersjonowane pliki z repozytorium. Zamiast pisać coś w rodzaju:&lt;br /&gt;
&lt;br /&gt;
 rm $(hg status | awk '/^?/ {print $2}')&lt;br /&gt;
&lt;br /&gt;
możemy więc zapisać:&lt;br /&gt;
&lt;br /&gt;
 hg purge&lt;br /&gt;
&lt;br /&gt;
co dodatkowo ma tę zaletę, że działa nawet pod [[windows]] ;)&lt;br /&gt;
&lt;br /&gt;
Zamiast ''purge'' można użyć komendy ''clean'' (jak w ''make clean'').&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Purge&amp;quot; należy do repertuaru standardowych rozszerzeń, więc by je włączyć wystarczy w pliku ~/.hgrc wpisać:&lt;br /&gt;
&lt;br /&gt;
 [extensions]&lt;br /&gt;
 purge =&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Pager</id>
		<title>Pager</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Pager"/>
				<updated>2011-08-07T08:11:03Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[pager]] to standardowe rozszerzenie [[Mercurial]]a przepuszczające standardowe wyjście poleceń przez &amp;quot;pager&amp;quot; - polecenie less, more czy inne tego typu. Dzięki włączeniu tego rozszerzenia:&lt;br /&gt;
&lt;br /&gt;
 [extensions]&lt;br /&gt;
 pager =&lt;br /&gt;
&lt;br /&gt;
 [pager]&lt;br /&gt;
 pager = less -FRSX&lt;br /&gt;
 attend = log, glog, help, diff, qdiff, incoming, outgoing&lt;br /&gt;
&lt;br /&gt;
oszczędzimy czas i palce, bo zamiast pisać, na przykład:&lt;br /&gt;
&lt;br /&gt;
 hg glog | less -S&lt;br /&gt;
&lt;br /&gt;
możemy napisać po prostu:&lt;br /&gt;
&lt;br /&gt;
 hg glog&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* http://mercurial.selenic.com/wiki/PagerExtension&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Color</id>
		<title>Color</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Color"/>
				<updated>2011-07-31T23:29:45Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: color | less&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Color]] to standardowe rozszerzenie [[Mercurial]]a, jak nietrudno zgadnąć, koloryzuje standardowe wyjście z niektórych poleceń (np. hg diff, hg log). Włączamy standardowo w ~/.hgrc:&lt;br /&gt;
 &lt;br /&gt;
 [extensions]&lt;br /&gt;
 color =&lt;br /&gt;
&lt;br /&gt;
Wszystko pięknie, ale takie ''hg diff'' przepuszczone przez pager ''less'' jest dalej czarno-białe... Co zrobić:&lt;br /&gt;
* pozwolić, by polecenie ''less'' przepuszczało znaki kontrolne ANSI (opcja -R)&lt;br /&gt;
* pozwolić, by hg kolorowało mimo wykrycia pipe'a (opcja --color=always); nie wiem jednak, czy da się to umieścić w ~/.hgrc.&lt;br /&gt;
&lt;br /&gt;
Przykład:&lt;br /&gt;
&lt;br /&gt;
 hg diff --color=always | less -SR&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [http://mercurial.selenic.com/wiki/ColorExtension Color Extension] na wiki Mercuriala&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Git_czy_Mercurial</id>
		<title>Git czy Mercurial</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Git_czy_Mercurial"/>
				<updated>2011-07-31T19:22:26Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* No to Git czy Mercurial? */ link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Git]] czy [[Mercurial]]?''' Pewnie nie ja jeden zadaję sobie takie pytanie. Dodatkowo zadaję je sobie z perspektywy osoby, która nigdy nie miała tak naprawdę do czynienia z rozproszonymi [[system kontroli wersji|systemami kontroli oprogramowania]], nie licząc bardzo przelotnej znajomości z [[SVK]]. Ta strona ma mi służyć do podsumowania &amp;quot;za&amp;quot; i &amp;quot;przeciw&amp;quot; obu systemów.&lt;br /&gt;
&lt;br /&gt;
== No to Git czy Mercurial? ==&lt;br /&gt;
&lt;br /&gt;
Jak na razie bardziej podoba mi się [[Mercurial]]. Interfejs użytkownika (wiersz poleceń) jest moim zdaniem bardziej intuicyjny, być może dlatego, że dość podobny do Subversion. Także implementowane koncepcje są łatwiej przyswajalne. Po krótkim czasie mogłem już wykonywać dość swobodnie podstawowe operacje. [[Git jest trudny|Zupełnie inaczej, niż w przypadku gita.]]&lt;br /&gt;
&lt;br /&gt;
=== Co mi się podoba w Gicie ===&lt;br /&gt;
&lt;br /&gt;
* Stworzony przez Linusa Torvaldsa, autora Linuksa, co jest jakby nie patrzeć jakąś rekomendacją.&lt;br /&gt;
* Aktywny development, spory ruch na liście dyskusyjnej.&lt;br /&gt;
* Git napisany jest w głównie w C (jak Subversion), a nie w jakichś pythonowych skryptach.&lt;br /&gt;
* GUI pod Windows. Sportowany TortoiseGit przypomina pierwowzór - TortoiseSVN - nie tylko z nazwy, jak to ma miejsce w przypadku TortoiseMercuriala. &lt;br /&gt;
&lt;br /&gt;
=== Co mi się podoba w Mercurialu ===&lt;br /&gt;
&lt;br /&gt;
* Interfejs command line. Mercurial, tak jak Subversion, pozwala na skracanie komend, niektóre mają też kilka intuicyjnych aliasów. Na przykład zamiast pisać &amp;quot;hg commit&amp;quot; czy &amp;quot;hg update&amp;quot;, wpisuję &amp;quot;hg ci&amp;quot; i &amp;quot;hg up&amp;quot;. Niby drobiazg, ale przy codziennym użytkowaniu konieczność wpisywania pełnych komend w gicie daje mi się we znaki. Nadto zestaw poleceń i opcji wygląda na bardziej przemyślany. Przykład: dlaczego gdy chcę skomitować parę zmian muszę pisać &amp;quot;git commit -a&amp;quot;? Dlaczego nagla pojawiają się jakieś dziwne ścieżki typu /remotes/origin/cośtam? Oczywiśćie, gdy poczytam co i jak, to się dowiem, ale to jest po prostu nieintuicyjne.&lt;br /&gt;
* Model. Anonimowe branche (''heads'') i powiązanie kopii roboczej z dowolną rewizją pozwalają uniezależnić operacje push/pull od update/commit. Bardziej mi to odpowiada niż pojedynczy gitowy HEAD (tak, wiem o ''detached heads'', ale to jest jakieś toporne rozwiązanie).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Convert</id>
		<title>Convert</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Convert"/>
				<updated>2011-07-30T10:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: kat. Mercurial zamiast Oprogramowanie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[convert]] to standardowe rozszerzenie [[mercurial]]a pozwalające na konwertowanie repozytoriów pomiędzy kilkoma formatami.&lt;br /&gt;
&lt;br /&gt;
Najpierw w pliku konfiguracyjnym należy aktywować wbudowane rozszerzenie ''convert'':&lt;br /&gt;
&lt;br /&gt;
 [extensions]&lt;br /&gt;
 convert =&lt;br /&gt;
&lt;br /&gt;
Następnie pobawić się poleceniem &amp;lt;code&amp;gt;hg convert&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Zobacz też:''' [http://mercurial.selenic.com/wiki/ConvertExtension Convert Extension]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/TortoiseHg</id>
		<title>TortoiseHg</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/TortoiseHg"/>
				<updated>2011-07-29T01:43:27Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: kat.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://tortoisehg.bitbucket.org/ TortoiseHg]''' to GUI do [[Mercurial]]a. Choć nazwa niedwuznacznie nawiązuje do [[TortoiseSVN]], to program działa i wygląda nieco inaczej. Pod [[Windows]] też się co prawda integruje z systemem jako &amp;quot;shell extension&amp;quot;, ale głównym narzędziem jest jednak wygodny Workbench, wyświetlający w jednym miejscu historię (wraz z grafem), listy plików, diffy i inne.&lt;br /&gt;
&lt;br /&gt;
W przeciewieństwie Do TortoiseSVN, który działa tylko na Windows, TortoiseHg, czy raczej jego elementy, mogą działać także na innych platformach. Ale zbudowanie tego na Linuksie nie należy do najłatwiejszych zadań. Przeszkadza fatalna dokumentacja, a raczej jej brak. Nie wiadomo, jakie są zależności, co i jak budować (albo nie). Chociaż ostatnio coś drgnęło jakby ku lepszemu, prawdopodobnie dzięki marudzeniu jednego gościa na liście dyskusyjnej mercuriala. Oczywiście nakrzyczano na niego, zwymyślano od trolli, ale na stronach TortoiseHg coś drgnęło - podano podstawowe instrukcje i zależności i powstały dodatkowe repozytoria...&lt;br /&gt;
&lt;br /&gt;
Nawiasem mówiąc, mają chyba najbardziej absurdalne wiki jakie widziałem. Oczywiście, każdy może edytować, ale żeby to zrobić, należy ściągnąć źródła stron poprzez sklonowanie repozytorium mercurialowego, pozmieniać a następnie wysłać patche na listę dyskusyjną... &lt;br /&gt;
&lt;br /&gt;
== TortoiseHg, thg, strony, projekty, wiki, repozytoria ==&lt;br /&gt;
&lt;br /&gt;
Jest tu pewien bajzel i chwilę mi zajęło zorientowanie się, o co chodzi. Więc wygląda to tak. Jest sobie project TortoiseHg:&lt;br /&gt;
: http://tortoisehg.bitbucket.org/&lt;br /&gt;
hostowany na bitbuckecie:&lt;br /&gt;
: https://bitbucket.org/tortoisehg/&lt;br /&gt;
i ma cały szereg repozytoriów:&lt;br /&gt;
: https://bitbucket.org/tortoisehg/thg/wiki/developers/repositories&lt;br /&gt;
z czego najważniejsze jest ''thg'':&lt;br /&gt;
: https://bitbucket.org/tortoisehg/thg/&lt;br /&gt;
Jest tam też niedawno powstałe repo ''thg-build'' zawierające subrepozytoria z, jak się wydaje, rzeczami potrzebnymi do zbudowania thg (oczywiście nie wszystkimi):&lt;br /&gt;
: https://bitbucket.org/tortoisehg/thg-build&lt;br /&gt;
Warto zwrócić uwagę, że ''thg'' to nie to samo co ''TortoiseHg'', w każdym razie nie w każdym kontekście... To drugie to aplikacje i ''shell extensions'' dla Windows. Natomiat thg ''[...] allows you to launch the TortoiseHg dialogs on any platform that supports Mercurial and PyQt. This is the easiest way to start using TortoiseHg on Linux and Mac OS X.&lt;br /&gt;
&lt;br /&gt;
== Budujemy ==&lt;br /&gt;
&lt;br /&gt;
OK, postanowiłem spróbować to jednak zbudować na [[Debian]]ie 5.0.8.&lt;br /&gt;
&lt;br /&gt;
=== Zależności ===&lt;br /&gt;
&lt;br /&gt;
Na początku ustawmy zmienne środowiskowe:&lt;br /&gt;
&lt;br /&gt;
 export thg=/usr/local/opt/thg&lt;br /&gt;
 export PATH=$thg/bin:$PATH&lt;br /&gt;
 export QTDIR=$thg&lt;br /&gt;
 export PYTHONPATH=$thg/lib/python2.5/site-packages&lt;br /&gt;
 &lt;br /&gt;
Najpierw ściągnąłem sobie bibliotekę Qt w wersji 4.7.3 [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.3.tar.gz]. Teraz próbuję ją zbudować.&lt;br /&gt;
&lt;br /&gt;
 tar xzvf qt-everywhere-opensource-src-4.7.3.tar.gz&lt;br /&gt;
 cd qt-everywhere-opensource-src-4.7.3&lt;br /&gt;
 ./configure --prefix=$thg&lt;br /&gt;
 make&lt;br /&gt;
 # I po niecałych trzech godzinach:&lt;br /&gt;
 make install&lt;br /&gt;
 cd ..&lt;br /&gt;
&lt;br /&gt;
W międzyczasie ściągnąłem sip-4.12.3 [http://www.riverbankcomputing.com/software/sip/download] i pyqt-4.8.4 [http://www.riverbankcomputing.com/software/pyqt/download].&lt;br /&gt;
&lt;br /&gt;
 tar xzvf sip-4.12.3.tar.gz&lt;br /&gt;
 cd sip-4.12.3&lt;br /&gt;
 python ./configure.py -b $thg/bin -d $thg/lib/python2.5/site-packages \&lt;br /&gt;
   -e $thg/include/python2.5 -v $thg/share/sip&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
 cd ..&lt;br /&gt;
&lt;br /&gt;
PyQt wymaga zarówno sipa, jak i Qt.&lt;br /&gt;
&lt;br /&gt;
 tar xzvf ../download/PyQt-x11-gpl-4.8.4.tar.gz&lt;br /&gt;
 cd PyQt-x11-gpl-4.8.4/&lt;br /&gt;
 python configure.py -b $thg/bin -d $thg/lib/python2.5/site-packages&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
I tu pojawił się błąd, bo Makefile z podkatalogu dbus usiłował mi zainstalować coś w /var/lib/python-support/python2.5/dbus/mainloop, gdzie oczywiście nie miałem dostępu. Zmodyfikowałem Makefile dopisując w nim:&lt;br /&gt;
 &lt;br /&gt;
 DESTDIR=$(thg)&lt;br /&gt;
&lt;br /&gt;
Ponowne ''make install'' zakończyło się sukcesem, chociaż pewnie to nie zadziała w ten sposób. Mam nadzieję, że dbus nie będzie mi niezbędny.&lt;br /&gt;
&lt;br /&gt;
Kolejnym niezbędnym komponentem jest QScintilla [http://www.riverbankcomputing.co.uk/software/qscintilla/download].&lt;br /&gt;
&lt;br /&gt;
 tar xzvf QScintilla-gpl-2.5.1.tar.gz&lt;br /&gt;
 cd QScintilla-gpl-2.5.1&lt;br /&gt;
 cd Qt4&lt;br /&gt;
 qmake qscintilla.pro&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
 &lt;br /&gt;
 cd ../Python&lt;br /&gt;
 python configure.py&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== THG ===&lt;br /&gt;
&lt;br /&gt;
Pora na samo thg. Autorzy zalecają pobranie poprzez sklonowanie repozytorium. Tutaj nie trzeba niczego instalować.&lt;br /&gt;
&lt;br /&gt;
 hg clone https://bitbucket.org/tortoisehg/thg&lt;br /&gt;
 cd thg&lt;br /&gt;
 hg update stable  # skoro mają branch ''stable'' to czemu go nie wykorzystać?&lt;br /&gt;
 ./thg&lt;br /&gt;
&lt;br /&gt;
Za pierwszym razem nie powiodło się, gdyż nie zainstalowałem pakietu QScintilla (dokumentacja nie wspominała o nim). Usupełniłem i... tada! sukces! Pojawił się długo wyczekiwany TortoiseHG Workbench :)&lt;br /&gt;
&lt;br /&gt;
[[grafika:thg.jpg|center|560px|TortoiseHg Workbench]]&lt;br /&gt;
&lt;br /&gt;
=== Skrypt startowy ===&lt;br /&gt;
&lt;br /&gt;
Ok. Pora na skrypt startowy z ustawieniami środowiska, bo instalowałem to wszystko w niestandardowych lokalizacjach.&lt;br /&gt;
&lt;br /&gt;
 #! /bin/sh&lt;br /&gt;
 thg_base=/usr/local/opt/thg&lt;br /&gt;
 thg_repo=$thg_base/thg&lt;br /&gt;
 thg_main=$thg_repo/thg&lt;br /&gt;
 QTDIR=$thg_base&lt;br /&gt;
 PATH=$thg_base/bin:$PATH&lt;br /&gt;
 LD_LIBRARY_PATH=$thg_base/lib${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH&lt;br /&gt;
 PYTHONPATH=$thg_base/lib/python2.5/site-packages${PYTHONPATH+:}$PYTHONPATH&lt;br /&gt;
 export QTDIR PATH LD_LIBRARY_PATH PYTHONPATH&lt;br /&gt;
 exec $thg_main &amp;quot;$@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Skrypt zapisałem jako /usr/local/bin/thg.&lt;br /&gt;
&lt;br /&gt;
=== GUI do diffów i merge'y ===&lt;br /&gt;
&lt;br /&gt;
Aplikacja używa zewnętrznych programów, przede wszystkim kdiff3 (załączone do windowsowej paczce instalacyjnej). Na Linuksie zalecają dopisać w pliku ~/.hgrc:&lt;br /&gt;
&lt;br /&gt;
 %include        /usr/local/opt/thg/thg/contrib/mergetools.rc&lt;br /&gt;
&lt;br /&gt;
Rzeczywiście, wizualne diffowanie zaczęło mi działać, gdy to zrobiłem.&lt;br /&gt;
&lt;br /&gt;
=== Uzupełnienia ===&lt;br /&gt;
&lt;br /&gt;
Uzupełniam o brakujące elementy, bez których z grubsza niby działa, ale jednak nie do końca ;)&lt;br /&gt;
Wszystko oczywiście z poprzednimi ustawieniami środowiska (PATH, LD_LIBRARY_PATH, QTDIR, PYTHONPATH). &lt;br /&gt;
&lt;br /&gt;
==== iniparse ====&lt;br /&gt;
&lt;br /&gt;
Iniparse jest potrzebny, żeby można było zmieniać preferencje w oknie dialogowym thg. Można sklonować następująco:&lt;br /&gt;
&lt;br /&gt;
 hg clone https://bitbucket.org/sborho/iniparse/&lt;br /&gt;
&lt;br /&gt;
Bądź pobrać ''thg-build'', gdzie będzie referowane jako podrepozytorium:&lt;br /&gt;
&lt;br /&gt;
 hg clone https://bitbucket.org/tortoisehg/thg-build&lt;br /&gt;
&lt;br /&gt;
(Muszę wspomnieć, że miałem pewne trudności z pobieraniem tego: raz się wysypał mercurial, potem się zwiesiło do timeoutu na połączeniu i za trzecim razem poszło).&lt;br /&gt;
&lt;br /&gt;
 cd iniparse/&lt;br /&gt;
 python setup.py build&lt;br /&gt;
 make&lt;br /&gt;
 python setup.py install --prefix=$thg&lt;br /&gt;
&lt;br /&gt;
== Wady ==&lt;br /&gt;
&lt;br /&gt;
Bardzo powolny, im większe repozytorium, tym gorzej. Na przykład przy netbeans (zob. obrazek wyżej) z niecałymi 200 tys. changesetów, czas reakcji na kliknięcie listę przekracza na moim sprzęcie 2 sekundy - masakra. Ale nawet przy małych repozytoriach czuć, że program jest taki ociężały.&lt;br /&gt;
&lt;br /&gt;
Algorytm rysowania grafów nie jest najlepszy [http://stackoverflow.com/questions/3879856/is-there-any-way-to-change-how-graphs-are-drawn-in-tortoisehg] i gdy szerokość rośnie staje się coraz mniej czytelny. Dodatkowo jest niestabilny w tym sensie, że nawet niewielka zmiana (commit, update itp) powoduje jego narysowanie od nowa, często w inny sposób niż dotychczas i z innymi kolorami przypisanymi do węzłów i łuków. Moim zdaniem znacznie lepiej wygląda graf w interfejsie webowym (hg serve).&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [http://tortoisehg.bitbucket.org/ Strona projektu TortoiseHg]&lt;br /&gt;
* [https://bitbucket.org/tortoisehg/thg/wiki/thg Instrukcja budowania ze źródeł]&lt;br /&gt;
&lt;br /&gt;
[[kategoria:Mercurial]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/SourceSafe</id>
		<title>SourceSafe</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/SourceSafe"/>
				<updated>2011-07-28T08:23:17Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: dopisek o problemach z czasem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[SourceSafe|Visual SourceSafe]] to beznadziejna namiastka [[system kontroli wersji|systemu kontroli wersji]] stworzona dawno temu przez firmę Microsoft. Jest to oczywiście system przeznaczony wyłącznie dla [[Windows]] i scentralizowany. Mimo to nie posiada serwera, a każdy klient musi mieć dostęp do współdzielonego dysku z repozytorium, co powoduje ciągłe problemy ze spójnością bazy.&lt;br /&gt;
&lt;br /&gt;
Jedną ze szczególnych cech tej niedoróby jest pobieranie czasu z maszyny klienta, a przy tym przyjęta najwyraźniej założenie o absolutnej prawidłowości tego czasu. Taki godny Microsoftu nonsens powodował, że spóźniąjący lub spieszący się zegar na komputerze użytkownika potrafił narobić niemałego zamieszania...&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;br /&gt;
[[kategoria:Windows]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Git</id>
		<title>Git</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Git"/>
				<updated>2011-07-14T05:42:18Z</updated>
		
		<summary type="html">&lt;p&gt;Anyone: /* Zobacz też */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:git}}&lt;br /&gt;
[http://git-scm.com/ '''git'''] – rozproszony system kontroli wersji stworzony przez Linusa Torvaldsa.&lt;br /&gt;
&lt;br /&gt;
Git i [[Mercurial]] wydają się dość podobne, choć jak na mój gust ten drugi ma lepszy interfejs użytkownika (chodzi oczywiście o command line, nie te dodatki GUI), jest bardziej intuicyjny i łatwiejszy do opanowania.&lt;br /&gt;
&lt;br /&gt;
== Dokumentacja ==&lt;br /&gt;
&lt;br /&gt;
Strony manuala są pakowane osobno, podobnie jak &amp;quot;htmldocs&amp;quot; (przekonwertowane srony manuala + dodatki). Należy je dociągnąć i rozpakować w odpowiednich katalogach:&lt;br /&gt;
* http://www.kernel.org/pub/software/scm/git/git-manpages-1.7.6.1.tar.bz2 &amp;amp;rarr; PREFIX/share/man/&lt;br /&gt;
* http://kernel.org/pub/software/scm/git/git-htmldocs-1.7.6.1.tar.bz2. &amp;amp;rarr; PREFIX/share/doc/git&lt;br /&gt;
&lt;br /&gt;
== Współpraca z Subversion ==&lt;br /&gt;
&lt;br /&gt;
Git ma wbudowany zestaw poleceń dedykowanych do współpracy z [[SVN]]. Jeszcze nie przetestowałem, czy to w praktyce zadziała na większym repozytorium. &lt;br /&gt;
&lt;br /&gt;
Żeby użyć gita jako swego rodzaju klienta Subversion należy utworzyć gitową kopię repozytorium svn:&lt;br /&gt;
&lt;br /&gt;
 mkdir REPO_DIR&lt;br /&gt;
 cd REPO_DIR&lt;br /&gt;
 git svn init [ OPCJE ] URL&lt;br /&gt;
 git fetch&lt;br /&gt;
&lt;br /&gt;
'''Więcej informacji:''' [http://www.kernel.org/pub/software/scm/git/docs/git-svn.html git-svn man page]&lt;br /&gt;
&lt;br /&gt;
Git w żaden sposób nie ułatwia życia użytkownikom SVN. Za przykład niech posłuży cytat:&lt;br /&gt;
&lt;br /&gt;
: ''The equivalent command for &amp;lt;code&amp;gt;svn revert&amp;lt;/code&amp;gt; in git is &amp;lt;code&amp;gt;git reset --hard HEAD^&amp;lt;/code&amp;gt;.'' [http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/]&lt;br /&gt;
&lt;br /&gt;
== Kto używa gita ==&lt;br /&gt;
&lt;br /&gt;
Ciekawe projekty używające gita:&lt;br /&gt;
&lt;br /&gt;
* [[Linux|Linux kernel]]&lt;br /&gt;
* [[KDE]] [http://techbase.kde.org/Development/Git]&lt;br /&gt;
* [[Tor]]&lt;br /&gt;
* [[Freenet]]&lt;br /&gt;
* No i oczywiście sam git.&lt;br /&gt;
&lt;br /&gt;
== Zobacz też ==&lt;br /&gt;
* [[Git czy Mercurial]]&lt;br /&gt;
* [[Git jest trudny]]&lt;br /&gt;
* [http://nvie.com/posts/a-successful-git-branching-model/ A successful Git branching model]&lt;br /&gt;
* [http://whygitisbetterthanx.com/ Why Git is Better than X] (część argumentów to bzdury, na przykład to o branchach)&lt;br /&gt;
&lt;br /&gt;
[[kategoria:oprogramowanie]]&lt;/div&gt;</summary>
		<author><name>Anyone</name></author>	</entry>

	<entry>
		<id>http://www.funus.net/wiki/index.php/Robocopy</id>
		<title>Robocopy</title>
		<link rel="alternate" type="text/html" href="http://www.funus.net/wiki/index.php/Robocopy"/>
				<updated>2011-05-12T16:57:05Z</updated>
		
		<summary type="html">&lt;p&gt;80.237.226.73: Nowa strona: {{DISPLAYTITLE:robocopy}} '''robocopy''' -- programik do kopiowania drzew katalogów, zrobiony przez Microsoft, może być bardzo przydatny pod Windows zwłaszcza wtedy, gdy są pro...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:robocopy}}&lt;br /&gt;
'''robocopy''' -- programik do kopiowania drzew katalogów, zrobiony przez Microsoft, może być bardzo przydatny pod [[Windows]] zwłaszcza wtedy, gdy są problemy z uprawnieniami w katalogach źródłowych. Przykład użycia:&lt;br /&gt;
&lt;br /&gt;
 robocopy SOURCE DEST /log+:robocopy.log /e /xj /np /b&lt;br /&gt;
&lt;br /&gt;
Znaczenie opcji:&lt;br /&gt;
; /log+:robocopy.log : wyjście dopisuje do pliku robocopy.log&lt;br /&gt;
; /e                 : kopiuj rekursywnie podkatalogi&lt;br /&gt;
; /xj                : zignoruj &amp;quot;junctions&amp;quot; (czyli chyba hardlinki do katalogów)&lt;br /&gt;
; /np                : ''no progress'', nie umieszczaj na wyjściu (w tym przypadku - w pliku robocopy.log) procentowego wskaźnika postępu&lt;br /&gt;
; /b                 : ''backup mode'', pozwala ominąć uprawnienia nie pozwalające normalnie na dostęp do plików i katalogów&lt;br /&gt;
&lt;br /&gt;
[[Category:Oprogramowanie]][[Category:Windows]]&lt;/div&gt;</summary>
		<author><name>80.237.226.73</name></author>	</entry>

	</feed>
