<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dariusz [LocK] Łuksza &#187; linux</title>
	<atom:link href="http://luksza.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://luksza.org</link>
	<description>myśli luźno zebrane ... ja i moja jaźń w intenecie</description>
	<lastBuildDate>Fri, 30 Jul 2010 01:22:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>

   <image>
    <title>Dariusz [LocK] Łuksza</title>
    <url>http://0.gravatar.com/avatar/ed2d261ca5db36a17e690dc736dcd9ef?s=48&amp;d=http%3A%2F%2Fluksza.org%2Fwp-includes%2Fimages%2F</url>
    <link>http://luksza.org</link>
   </image>
		<item>
		<title>Linux freak &#8230;</title>
		<link>http://luksza.org/2010/04/13/linux-freak/</link>
		<comments>http://luksza.org/2010/04/13/linux-freak/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 18:38:29 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[różne]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[mpc]]></category>
		<category><![CDATA[rockbox]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=542</guid>
		<description><![CDATA[W sumie od dawana wiedziałem, że nie jestem normalny. Daaaawno temu pożegnałem się z Windows&#8217;em i jako głównego systemu operacyjnego od tamtej pory używam Linuksa. Dziś za to dopadła mnie dość refleksyjna myśl &#8230; na co dzień używam 4 urządzeń elektronicznych: macbook&#8217;a komputera w pracy telefonu odtwarzacza MP3 (a właściwie to MPC, nie MP3) Na [...]]]></description>
			<content:encoded><![CDATA[<p>W sumie od dawana wiedziałem, że nie <em>jestem normalny</em>. Daaaawno temu pożegnałem się z Windows&#8217;em i jako głównego systemu operacyjnego od tamtej pory używam Linuksa. Dziś za to dopadła mnie dość refleksyjna myśl &#8230; na co dzień używam 4 urządzeń elektronicznych:</p>
<ul>
<li>macbook&#8217;a</li>
<li>komputera w pracy</li>
<li>telefonu</li>
<li>odtwarzacza MP3 (a właściwie to MPC, nie MP3)</li>
</ul>
<p>Na wszystkich tych urządzeniach nie podzielnie króluje Linux:</p>
<ul>
<li>macbook&#8217;a skolonizowało Gentoo</li>
<li>komp w pracy też nie ugiął się przed naporem Gentoo</li>
<li>telefon jest obsługiwany przez Android&#8217;a który bazuje na Linuksie</li>
<li>na odtwarzaczu działa RockBox (po to żeby odtwarzać MPC SV8)</li>
</ul>
<p>Możliwe, że nie jestem zwyczajnym użytkownikiem &#8230; ale jak widać żyję i mam się całkiem dobrze <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Odpowiadając od razu na wścibskie pytania: nie, nie zamierzam instalować pingwinka na mikrofalówce czy też pralce <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=542" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/04/13/linux-freak/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Gitosis dodanie repo</title>
		<link>http://luksza.org/2010/03/03/gitosis-dodanie-repo/</link>
		<comments>http://luksza.org/2010/03/03/gitosis-dodanie-repo/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:52:34 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=482</guid>
		<description><![CDATA[Prace nad programem do inżynierki zaszły już tak &#8222;daleko&#8221;, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (1, 2) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty. Początkowo zadanie wydawało [...]]]></description>
			<content:encoded><![CDATA[<p>Prace nad programem do inżynierki <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAxMC8wMy8wMi9pbnp5bmllcmthLXYwLTEv" target=\"_blank\">zaszły już tak &#8222;daleko&#8221;</a>, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (<a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMS8yOS9wcnl3YXRuZS1yZXBvLWdpdGEtY3otMS8=" target=\"_blank\">1</a>, <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMi8wMi9wcnl3YXRuZS1yZXBvLWdpdCVlMiU4MCU5OWEtY3otMi8=" target=\"_blank\">2</a>) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty.</p>
<p>Początkowo zadanie wydawało się bardzo banalne &#8230; dodać repozytorium do <em>gitosis</em> i wszystko powinno się zrobić automatycznie &#8230; cóż tak niestety <strong>nie było</strong>. Dla potomności (oraz mojej często wątpliwej pamięci) postanowiłem opisać całą procedurę.</p>
<p>Będzie do tego potrzebna nam konfiguracja <em>gitosis</em>. Jako że jest ona przetrzymywana jako jedno z repozytoriów nie powinno być żadnych problemów z jej uzyskaniem. Tak więc jeżeli nie mamy już jakiejś kopi na dysku wywołujemy komendę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin.git</pre></div></div>

<p>Następnie edytujemy plik gitosis.conf w którym odajemy nowe repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>repo nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
description = opis</pre></div></div>

<p>No i niby wygląda na to, że to wszystko &#8230; niestety nie jest tak łatwo, z tego co doświadczyłem to  <em>gitosis</em> wymaga, żeby każde repo posiadało osobną grupę o tej samej nazwie (możliwe, że można to jakoś przekonfigurować ale ja nie znalazłem takich informacji). Więc nie pozostaje nam nic innego jak dodać kolejną grupę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>group nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
writable = nazwa-nowego-repo
members = joe</pre></div></div>

<p>Zapisujemy zmiany i za pomocą <em>git push</em> wypychamy je na serwer &#8230; no to konfiguracje gitosis mamy za sobą. Teraz zostało nam jeszcze utworzyć repo ;&gt;</p>
<p>Tak więc w lokalnym systemie tworzymy sobie nowy katalog albo wchodzimy do katalogu projektu który chcemy wrzucić do repo, w środku wywołujemy <em>git init</em>, następnie przy użyciu <em>git add</em> dodajemy wszystkie pliki do commit&#8217;a. Potem commit&#8217;ujemy zmiany do lokalnego repo (<em>git commit -m &#8222;initial commit&#8221;</em>) &#8230; no i teraz najważniejsze, dodajemy nasze zdalne repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git remote add dowolna-nazwa-repo <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>nazwa-nowego-repo.git</pre></div></div>

<p>i tryumfalnie wypychamy wszystko na serwer</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git push dowolna-nazwa-repo <span style="color: #660033;">--all</span></pre></div></div>

<p>To tyle, wszystko powinno działać &#8230; przynajmniej na razie u mnie działa ;&gt;</p>
<p><del>Dziś</del> lub <del>jutro</del> dodam wpis odnośnie aktualnego stanu wtyczki dodającej obsługę git&#8217;a dla Eclipse <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  będzie to bardzo szybkie overview funkcjonalności których do tej pory użyłem/używałem.</p>
<p>UPDATE:<br />
Wpis o git&#8217;cie i eclipse jest prawie gotowy, zostało mi jeszcze opisać <del>branche&#8217;owanie</del>, merge&#8217;owanie, <del>push&#8217;owanie</del> oraz <del>pull&#8217;owanie</del> i wstawić screenshot&#8217;y <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>UPDATE2:<br />
Dziś git też mnie pokonał <img src='http://luksza.org/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' />  &#8230; okazało się, że aktualnie plugin nie wspiera merge&#8217;owania branche&#8217;y, a push&#8217;owanie i fetch&#8217;owanie jest zbyt skomplikowane żeby opisywać je w jednym wpisie (zwłaszcza jeżeli nie ma się z tym zbyt wiele doświadczenia). Postaram się skończyć wpis jutro (zapamiętać: <em>jutro</em> nigdy nie umiera <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) i <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2h0dHA6Ly9sdWtzemEub3JnLzIwMTAvMDMvMDUvamdpdC1lZ2l0LWVjbGlwc2UtZ2l0LXN1cHBvcnQv">go opublikować</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=482" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/03/03/gitosis-dodanie-repo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MacBook &#8211; destrukcja</title>
		<link>http://luksza.org/2010/02/28/macbook-destrukcja/</link>
		<comments>http://luksza.org/2010/02/28/macbook-destrukcja/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 12:59:00 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[macbook]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[różne]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=475</guid>
		<description><![CDATA[Tak oto wygląda MacBook po tym jak dorwała się do niego para informatyków &#8230; osobiście starałem się trzymać w miarę z dala od destrukcji, ale nie odmówiłem sobie wyrwania układu karty graficznej ;&#62; Na powyższym zdjęciu brakuje kilku istotnych elementów  &#60;!&#8211; @page { margin: 0.79in } P { margin-bottom: 0.08in } &#8211;&#62;konstrukcyjnych, takich jak: matryca [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvd3AtY29udGVudC91cGxvYWRzLzIwMTAvMDIvZGVzdHJveWVkLW1hYy5qcGc=" target=\"_blank\"><img class="aligncenter size-medium wp-image-476" title="destroyed-mac" src="http://luksza.org/wp-content/uploads/2010/02/destroyed-mac-300x220.jpg" alt="" width="300" height="220" /></a></p>
<p>Tak oto wygląda MacBook po tym jak dorwała się do niego para informatyków &#8230; osobiście starałem się trzymać w miarę z dala od destrukcji, ale nie odmówiłem sobie wyrwania układu karty graficznej ;&gt;</p>
<p>Na powyższym zdjęciu brakuje kilku istotnych elementów    	 	 	 	 	&lt;!&#8211; 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	&#8211;&gt;konstrukcyjnych, takich jak:</p>
<ul>
<li>matryca LCD</li>
<li>klawisze z klawiatury (teoretycznie zachowałem je sobie w razie &#8222;W&#8221;)</li>
<li>procesor (został wyrwany w celu zrobienia &#8222;wisiorka&#8221;)</li>
<li>układ karty graficznej (podzielił los procesora)</li>
<li>karty WiFi (myślałem, że układ Aheros&#8217;a który znajdował się w tym mac&#8217;u będzie dobrym zamiennikiem dla mojego Broadcom&#8217;a; niestety jak się przekonałem natywne wsparcie postaci ath5k dostarcza mniej funkcjonalności niż para bcm + ndiswrapper)</li>
</ul>
<p>BTW. Dla ścisłości to nie jest mój mac &#8230; mój sprzęt ma się dobrze <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->konstrukcyjnych</p>
</div>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=475" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/02/28/macbook-destrukcja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prywatne repo git’a cz.2</title>
		<link>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/</link>
		<comments>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 21:38:08 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=436</guid>
		<description><![CDATA[W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko lighttpd które to później będzie nam potrzebne do uruchomienia cgit&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis. Czym jest gitosis i o czego będzie nam potrzebne? Cóż, [...]]]></description>
			<content:encoded><![CDATA[<p>W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko <em>lighttpd</em> które to później będzie nam potrzebne do uruchomienia <em>cgit</em>&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis.</p>
<p>Czym jest gitosis i o czego będzie nam potrzebne?</p>
<p>Cóż, podobnie jak sam git, gitosis jest zestawem skryptów ułatwiającym prace z repozytorium. Zestaw tych skryptów odpowiedzialny jest za kontrolę dostępu do repo jak i za sam dostęp do niego.</p>
<p>Jak działa gitosis?</p>
<p>&#8222;Integruje&#8221; się ono z serwerem SSH, &#8222;integruje się&#8221; to za wiele powiedziane, bo <em>sshd</em> wykorzystywane jest tylko do autoryzacji użytkowników oraz transferu danych z i do repo. Samo gitosis nie uruchamia dodatkowego daemona, jak już wspomniałem korzysta z <em>sshd</em>.</p>
<p>Jak przebiega proces autoryzacji ?</p>
<p>Podobnie jak w <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20v" target=\"_blank\">GitHub</a>&#8216;ie najpierw trzeba dodać nasz klucz publiczny, żebyśmy mogli zostać z autoryzowani, następnie przy każdej próbie połączenia z repo będzie on wykorzystywany do przeprowadzenia autoryzacji &#8230; nie ma w tym żadnej wielkiej filozofii, dorzycamy nasz klucz i wszystko po prostu działa.</p>
<p>Ok, więc może w końcu do sedna &#8230; zaczynamy od zainstalowania pakietu <em>gitosis</em> w systemie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gitosis</pre></div></div>

<p>Proces instalacji sam utworzy w systemie konto użytkownika (standardowy login to <em>gitosis</em>), założy mu katalog domowy (standardowo: <em>/srv/gitosis</em>). Jeżeli bardzo chcemy to możemy to zmienić korzystając ze standardowej komendy <em>usermod</em> dla uproszczenia ja będę się posługiwał standardową nazwą użytkownika. Pozostaje nam tylko inicjalizacja i konfiguracja:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-H</span> <span style="color: #660033;">-u</span> gitosis gitosis-init <span style="color: #000000; font-weight: bold;">&lt;</span> id_rsa.pub</pre></div></div>

<p>Gdzie <em>id_rsa.pub</em> jest naszym kluczem publicznym używanym przez naszego klienta ssh &#8230; fajnie to brzmi ale co to właściwie jest ? <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Dokładny opis jak taki klucz sobie wygenerować (i co z nim zrobić) znajduje się <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2hlbHAuZ2l0aHViLmNvbS9rZXktc2V0dXAtcmVkaXJlY3Q=" target=\"_blank\">tutaj</a>. Generalnie powinien być to klucz który będzie identyfikował naszą maszynę z której będziemy się łączyć do repozytorium (tj. klucz prywatny i publiczny powinny być zapisane w katalogu <em>~/.ssh</em> na twoim desktopie/laptopie, tylko klucz publiczny w celu instalacji go w konfiguracji gitosis powinieneś skopiować na serwer na którym instalujesz repozytorium). Powyższa komęda powinna zainicjalizować repozytorium git/gitosis oraz dodać wskazany klucz publiczny jako klucz administratora. Jeżeli mamy szczęście to po wykonaniu poniżeszej komędy na naszym desktopie/laptopie (tj. na tym na którym znajduje się para <em>~/.ssh/id_rsa</em> i <em>~/.ssh/id_rsa.pub</em>):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone gitosis<span style="color: #000000; font-weight: bold;">@</span>adres_serwera:gitosis-admin.git</pre></div></div>

<p>Jeżeli powyższa komenda nie wykona się poprawnie (jak to było w moim przypadku) zmuszeni jesteśmy skonfigurować gitosis ręcznie. W tym celu udajemy musimy przeedytować plik <em>/srv/gitosis/.ssh/authorized_keys</em> (tak wiem, że nie powinno się go edytować &#8230; ale co nam pozostaje ?) i zmienić &#8222;domyślny&#8221; login na identyczny z tym podanym w komentarzu do naszego klucza prywatnego (to jest to co podaliśmy za przełącznikiem <em>-C</em> podczas jego tworzenia), wartość klucza publicznego (to jest ten dziwny ciąg znaków za <em>ssh-rsa</em>) oraz na samym końcu ponownie wstawiamy wartość z naszego komentarza. Po wykonaniu tych zmian i ich zapisaniu ponownie próbujemy sklonować repozytorium z konfiguracją (czyli jeszcze raz wydajemy poprzednią komendę) &#8230; jeżeli znowu nie wykona się poprawnie &#8230; cóż czasem trzeba sobie radzić samemu <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ok, zakładam że w końcu uda się pobrać z serwera konfigurację z serwera &#8230; tak, na prawdę gitosis przechowuje swoją konfigurację w formie jednego z repozytoriów. Jest to dość wygodne, gdyż nie wymusza na nas logowania się na serwer celem zmiany konfiguracji (w wypadku dodania użytkownika repozytorium, czy też nowego projektu). W każdej chwili możemy sobie ta konfigurację pobrać, zmodyfikować, &#8222;wepchnąć&#8221; z powrotem i usunąć <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  jak dla mnie bomba <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Co do samej konfiguracji to składa się ona z 2 rzeczy:</p>
<ul>
<li>pliku z konfiguracją (znajdują się tam definicje repozytoriów, grup i praw dostępu)</li>
<li>katalogu z kluczami publicznymi użytkowników</li>
</ul>
<p>W katalogu <em>keydir/</em> znajdują się klucze publiczne użytkowników, w postaci:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">uzywany_login.pub</pre></div></div>

<p>najczęściej login ma postać adresu email, więc przykładowy plik dla użytkownika <em>wlodek@luksza.org</em> będzie się nazywał<em> wlodek@luksza.org.pub</em> &#8230; jest to niezmiernie skomplikowane, nieprawdaż <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W przypadku kiedy chcemy dodać nowego użytkownika bądź repozytorium musimy przeedytować plik <em>gitosis.conf</em>, jego opis można znaleźć <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VhZ2Fpbi5uZXQvZ2l0d2ViLz9wPWdpdG9zaXMuZ2l0O2E9YmxvYl9wbGFpbjtmPWV4YW1wbGUuY29uZjtoYj1IRUFE" target=\"_blank\">tutaj</a>. W przypadku użytkowników należy pamiętać o zgodności nawy użytkownika z nazwą pliku zawierającą jego klucz publiczny. Dodatkowo warto wspomnieć o tym, że dla każdego repozytorium możemy zdefiniować właściciela (parametr <em>owner</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) oraz opis (<em>description</em>), są to przydatne parametry zwłaszcza podczas eksploracji repozytorium przy użyciu <em>cgit</em>&#8216;a czy też <em>gitweb</em>&#8216;a.</p>
<p>Kiedy już wykonamy wszystkie zmiany commit&#8217;ujemy je do lokalnego repo, a potem wypychamy do głównego:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git commit <span style="color: #660033;">-a</span>
git push</pre></div></div>

<p>W ten prosty sposób administrujemy repozytorium git&#8217;a zarządzanym przez <em>gitosis</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>BTW. Chyba szykuje się nam zmiana na miejscu domyślnego repo Eclipse Fundation możliwe, że nowe repo będzie obsługiwane przez git&#8217;a, &#8222;pierwsze&#8221; takie przesłanki można znaleźć <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Rldi5lY2xpcHNlLm9yZy9ibG9ncy93YXluZS8yMDA5LzEyLzAxL2dpdC1hdC1lY2xpcHNlLw==" target=\"_blank\">tutaj</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=436" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prywatne repo git&#8217;a cz.1</title>
		<link>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/</link>
		<comments>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 22:09:21 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[cgit]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=417</guid>
		<description><![CDATA[Jakiś czas temu pisałem jak za pomocą git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje GitHub; mają też rozwiązanie płatne w którym [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu pisałem jak za pomocą <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8wNC8yNC93bGFzbmUtemFwYXNvd2UtcmVwb3p5dG9yaXVtLWdpdC8=" target=\"_blank\">git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu</a>. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20v" target=\"_blank\">GitHub</a>; mają też rozwiązanie płatne w którym to możemy mieć  prywatne repo, ale ja wole mieć je u siebie <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Moje oczekiwania od takiego repo są następujące:</p>
<ul>
<li>dostępność do repo z każdego zakątka świata (czyli serwer musi być dostępny szeroko pojętej sieci)</li>
<li>możliwość dostępu do repo tylko dla wybranych użytkowników</li>
<li>możliwość przeglądania repo z poziomu www</li>
<li>bezpieczeństwo stosowanego rozwiązania (https, ssh)</li>
</ul>
<p>Jakie wybrałem oprogramowanie ?</p>
<ul>
<li>systemem bazowym będzie Debian (znany, <em>lubiany</em> i standardowy linux)</li>
<li>gitosis (prosty soft do hostowania repozytorium git&#8217;a z równie prostą kontrolą dostępu, IMO rozwiązanie w sam raz do moich potrzeb)</li>
<li><a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5saWdodHRwZC5uZXQv" target=\"_blank\">lighttpd</a> (mały i szybki httpd)</li>
<li>mod_ssl oraz mod_auth do wyżej wymienionego httpd</li>
<li><a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2hqZW1saS5uZXQvZ2l0L2NnaXQv" target=\"_blank\">cgit</a> odpowiednik gitweb&#8217;a ale moim zdaniem ładniejszy i bardziej przejrzysty</li>
</ul>
<p>We własnym zakresie trzeba zadbać o system bazowy, oraz jego konfigurację <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Zakładam, że Debian jest już zainstalowany, skonfigurowany, <em>zabezpieczony</em> oraz podpięty do sieci.</p>
<p>Zaczynamy od instalacji i konfiguracji <em>lighttpd</em></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> lighttpd apache2-utils</pre></div></div>

<p>Pakiet <em>apache2-utils</em> będzie nam potrzebny do wygenerowania <em>hash</em>&#8216;a hasła potrzebnego do <em>mod_auth</em> (swoją drogą system pakietowania debiana coraz bardziej mnie zadziwia &#8230; nie rozumiem po co w zależnościach do tego pakietu znajduje się libmysqlclient &#8230;). Po zainstalowaniu włączamy dwa interesujące nas moduły:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lighttpd-enable-mod auth
lighttpd-enable-mod ssl</pre></div></div>

<p>Oraz przechodzimy do konfiguracji zarówno httpd jak i modułów. Zaczniemy od <em>mod_auth</em>, czyli edytujemy pliczek <em>/etc/lighttpd/conf-enabled/05-auth.conf</em>, w którym to wybieramy backend (czyli algorytm szyfrowania haseł oraz miejsce ich zapisu) oraz konfigurujemy miejsca do których dostęp będzie strzeżony hasłem. Po modyfikacjach plik konfiguracyjny powinien wyglądać mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## Authentication for lighttpd</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/authentication.txt.gz</span>
<span style="color: #666666; font-style: italic;">##                http://www.lighttpd.net/documentation/authentication.html</span>
server.modules                += <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;mod_auth&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;"># htdigest jest najmocniejszym dostepnym &quot;algorytmem&quot; szyfrujacym</span>
auth.backend                   = <span style="color: #ff0000;">&quot;htdigest&quot;</span>
auth.backend.htdigest.userfile = <span style="color: #ff0000;">&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;</span>
&nbsp;
auth.require                 = <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;/&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span>
                                     <span style="color: #7a0874; font-weight: bold;">&#40;</span>
                                       <span style="color: #ff0000;">&quot;method&quot;</span>  =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;digest&quot;</span>,
                                       <span style="color: #ff0000;">&quot;realm&quot;</span>   =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;secure content&quot;</span>,
                                       <span style="color: #ff0000;">&quot;require&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;valid-user&quot;</span>
                                      <span style="color: #7a0874; font-weight: bold;">&#41;</span>
                                <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Opcja <em>auth.require</em> zawiera tylko jeden element, którym jest root serwera httpd, czyli dostęp do dowolnego pliku na serwerze będzie chroniony hasłem. Warto tutaj wspomnieć, że hash hasła zostanie <em>posolony</em> wartością w <em>realm</em>, dzięki temu uzyskujemy prosty mechanizm kontroli dostępu (tj. gdybyśmy mieli dwa zasoby z różnymi wartościami w <em>realm</em>, każdego użytkownika który powinien posiadać dostęp do obu powinniśmy dodać osobno). Teraz wystarczy tylko dodać użytkownika:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">htdigest <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>lighttpd<span style="color: #000000; font-weight: bold;">/</span>lighttpd-htdigest.user <span style="color: #ff0000;">'secure content'</span> user_name</pre></div></div>

<p>Po wydaniu tej komendy zostaniemy poproszeni o podanie oraz potwierdzenie hasła dla tego użytkownika.</p>
<p>Po skonfigurowaniu <em>mod_auth</em> przechodzimy do konfiguracji <em>mod_ssl</em>, w tym celu edytujemy <em>/etc/lighttpd/conf-enabled/10-ssl.conf</em>. Ja zdecydowałem się udostępniać usługę http tylko na porcie 443 z szyfrowaniem (czyli popularny https <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), więc w konfiguracji <em>mod_ssl</em> wskazałem na którym dokładnie adresie IP oraz na jakim porcie ma nasłuchiwać daemon; plik konfiguracyjny wygląda mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## lighttpd support for SSLv2 and SSLv3</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt</span>
<span style="color: #666666; font-style: italic;">##      http://www.lighttpd.net/documentation/ssl.html</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#### SSL engine</span>
<span style="color: #007800;">$SERVER</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;socket&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> == <span style="color: #ff0000;">&quot;111.222.3.4:443&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
ssl.engine                  = <span style="color: #ff0000;">&quot;enable&quot;</span>
ssl.pemfile                 = <span style="color: #ff0000;">&quot;/etc/lighttpd/server.pem&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>następnie generujemy certyfikat <em>self-signed</em> dla naszego serwera:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-x509</span> <span style="color: #660033;">-keyout</span> server.pem <span style="color: #660033;">-out</span> server.pem <span style="color: #660033;">-days</span> <span style="color: #000000;">365</span> <span style="color: #660033;">-nodes</span></pre></div></div>

<p>Który to kopujemy do <em>/etc/lighttpd/server.pem</em>.</p>
<p>Ostatnią częścią konfiguracji lighttpd będzie ogólna konfiguracja serwera, czyli edytujemy plik<br />
<em>/etc/lighttpd/lihttpd.conf.</em> W którym to odkomentowujemy tylko linie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">server.bind = <span style="color: #ff0000;">&quot;localhost&quot;</span></pre></div></div>

<p>Spowoduje to, że port 80 zostanie otwarty tylko na interfejsie <em>loopback</em>, co w konsekwencji prowadzi do tego, że wszystkie połączenia (z sieci) do portu 80 będą odrzucane (za to akceptowane będą połączenia do portu 443, zgodnie z konfiguracją w pliku <em>10-ssl.conf</em>).</p>
<p>Na razie to wszystko w kwestii konfiguracji lighttpd, wrócimy jeszcze do niej podczas konfiguracji cgit&#8217;a. W następnej części zajmiemy się konfiguracją gitosis.</p>
<p>PS. Tutaj jest <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2x1a3N6YS5vcmcvMjAwOS8xMi8wMi9wcnl3YXRuZS1yZXBvLWdpdCVlMiU4MCU5OWEtY3otMi8=" target=\"_self\">część druga</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=417" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Awesome WM i InteliJ IDEA</title>
		<link>http://luksza.org/2009/10/18/awesome-wm-i-intelij-idea/</link>
		<comments>http://luksza.org/2009/10/18/awesome-wm-i-intelij-idea/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 15:17:43 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[InteliJ]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=397</guid>
		<description><![CDATA[Kilka dni temu JetBrains udostępniło okrojona wersje (ładnie nazwaną Community Edition) swojego IDE dla Javy. Jako że nigdy nie miałem do czynienia z InteliJ postanowiłem zassać ową darmową wersję i sprawdzić jak się spisuje. Niestety, używam dość egzotycznego window managera który zwie się Awesome. Posiada on funkcjonalność auto organizacji okien na pulpicie co jak się okazuje [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka dni temu JetBrains <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5qZXRicmFpbnMub3JnL2Rpc3BsYXkvSUpPUy9Ib21l" target=\"_blank\">udostępniło</a> <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5qZXRicmFpbnMuY29tL2lkZWEvbmV4dHZlcnNpb24vZWRpdGlvbnNfY29tcGFyaXNvbl9tYXRyaXguaHRtbD91dG1fc291cmNlPWpldGJyYWlucy5vcmcmYW1wO3V0bV9tZWRpdW09Q29tcGFyaXNvbiZhbXA7dXRtX2NhbXBhaWduPUlERUE5X0NF" target=\"_blank\"><strong>okrojona wersje</strong></a> (ładnie nazwaną <em>Community Edition</em>) swojego IDE dla Javy. Jako że nigdy nie miałem do czynienia z InteliJ postanowiłem zassać ową darmową wersję i sprawdzić jak się spisuje.</p>
<p>Niestety, używam dość egzotycznego window managera który zwie się <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2F3ZXNvbWUubmFxdWFkYWgub3JnLw==" target=\"_blank\">Awesome</a>. Posiada on funkcjonalność auto organizacji okien na pulpicie co jak się okazuje nie podoba się Javie 1.5 wzwyż. Winę za to ponosi zmieniony w JRE 1.5 backend do komunikacji z X-Window, JRE do wersji 1.4 korzystało z <em>Motif</em>, natomiast w późniejszych z <em>Xtoolkit/XAWT </em>które to nie jest kompatybilne z <em>ICCCM</em> (cokolwiek to znaczy <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Warto tutaj wspomnieć ze pośrednio może tutaj tez być winne JetBrains gdyż ciągle korzystają z <em>AWT</em>, a nie <em>Swing</em>&#8216;a …</p>
<p><strong>Rozwiązania ?</strong><br />
Są dwa. Pierwsze bardziej drastyczne uruchamiać <em>InteliJ</em> z wykorzystaniem JRE <strong>1.4</strong> – tego nie próbowałem ale teoretycznie powinno zadziałać. Drugie rozwiązanie posiada pewien haczyk, gdyż (jak się domyślam) 64-bitowa wersja Javy nie posiada wsparcia dla <em>Motif;</em> osoby posiadające 64-bitowe maszyny i systemy operacyjne z 64bitowa maszyna wirtualna ustawiona jako domyślną muszą dodatkowo zassać i gdzieś umieścić wersje <strong>32-bitowa</strong> JDK/JRE. Oprócz 32-bitowej maszyny wirtualnej musimy dodać zmienna środowiskową <strong>AWT_TOOLKIT</strong> ustawiona na <strong>MToolkit</strong>. Ja zmodyfikowałem sobie plik <em>bin/idea.sh</em> dodając w linii 59 taki oto fragment:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># fixes for Awesome WM</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">AWT_TOOLKIT</span>=<span style="color: #ff0000;">&quot;MToolkit&quot;</span>
<span style="color: #007800;">IDEA_JDK</span>=<span style="color: #ff0000;">&quot;/ścieżka/do/jdk-x86&quot;</span></pre></div></div>

 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=397" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/10/18/awesome-wm-i-intelij-idea/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jak zmusić Debiana do korzystania z zewnętrznego MTA</title>
		<link>http://luksza.org/2009/10/15/jak-zmusic-debiana-do-korzystania-z-zewnetrznego-mta/</link>
		<comments>http://luksza.org/2009/10/15/jak-zmusic-debiana-do-korzystania-z-zewnetrznego-mta/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:24:02 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mta]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=384</guid>
		<description><![CDATA[Cala historia zaczęła się parę dni temu, kiedy to zapragnąłem sobie mieć prywatny serwerek do hostowania własnych nie publicznych projektów (do publicznych używam już github&#8216;a). Jako, że serwer jest dostępny publicznie, a hostować ma nie publiczne projekty przydało by się go trochę zabezpieczyć &#8230; z administrowaniem serwerami nie miałem wiele wspólnego, ale od czego jest Google [...]]]></description>
			<content:encoded><![CDATA[<p>Cala historia zaczęła się parę dni temu, kiedy to zapragnąłem sobie mieć prywatny serwerek do hostowania własnych <strong>nie</strong> publicznych projektów (do publicznych używam już <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20vbG9jaw==" target=\"_blank\">github</a>&#8216;a).</p>
<p>Jako, że serwer jest dostępny publicznie, a hostować ma <strong>nie publiczne </strong>projekty przydało by się go trochę zabezpieczyć &#8230; z administrowaniem serwerami nie miałem wiele wspólnego, ale od czego jest Google <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W sieci znajduje się kilka opisów co można poprawić w standardowym Debianie żeby zwiększyć jego bezpieczeństwo. Oprócz samych zabezpiczeń warto tez być na bierząco informowanym o stanie systemu.  Informacje takie możne nam dostarczyć program <em>logcheck</em> (wraz z <em>logcheck-database</em>), tylko ze jakoś te informacje muszą do nas trafić, tutaj z pomocą przychodzi &#8230; poczta elektroniczna, czyli popularne e-maile <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Wszystko było by fajnie gdyby nie to, że w momencie wysyłania wiadomości Debian usilnie korzysta z lokalnego MTA (tj. mail transport aget &#8230; domyślnie jest to <em>exim4</em>), co nie do końca jest fajne (jest to osobny daemon, dodatkowe otwarte porty itp.) zwłaszcza jeżeli tuz obok stoi dedykowany serwer pocztowy.</p>
<p>W tej sytuacji instalujemy  <em>heirloom-mailx</em>, programik ten (po odpowiednim skonfigurowaniu) pozwala używać dowolnego zewnętrznego serwera pocztowego podczas wywoływania systemowej komendy <em>/usr/bin/mail</em>. Potrzebna konfiguracje umieszczamy na końcu pliku <em>/etc/nail.rc</em> (nie mylić z <em>/etc/<strong>m</strong>ail.rc</em>) &#8230; kiedy chcemy żeby dany użytkownik posiadał odrębną konfiguracje, to musimy wymedytować plik <em>~/mail.rc</em></p>
<pre>set smtp-use-starttls
set from=user@jakis.host.org
set smtp=smtp.jakis.host.org
set smtp-auth-user=user@jakis.host.org
set auth-login=user@jakis.host.org
set smtp-auth-password=supertrudneitajnehaslo
set ssl-verify=ignore</pre>
<p>Teraz możemy przetestować nasza konfiguracje wywołując:</p>
<pre>mail nasz-adres@nasz-server.org</pre>
<p>Jeżeli coś nie działa to zostaniemy o tym poinformowani stosownym komunikatem &#8230; BTW. jeżeli chcemy sobie debugować możemy wykorzystać przełącznik <em>-d</em> (jak debug <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) , z tym ze należy tutaj wspomnieć, że dodanie tego przełącznika powoduje wypisanie na ekran wiadomości i &#8230; nie powoduje jej wysyłania (sic!).</p>
<p>Dlaczego o tym pisze ? Bo dziś zmarnowałem ładnych parę godzin(sic!) żeby  się do tego dogooglac &#8230; najpierw żeby znaleźć ta paczkę, potem zęby odpowiednio skonfigurować (tutaj szczególne podziękowania należą się przełącznikowi <em>-d</em> &#8230;).</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=384" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/10/15/jak-zmusic-debiana-do-korzystania-z-zewnetrznego-mta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Własne zapasowe repozytorium GIT</title>
		<link>http://luksza.org/2009/04/24/wlasne-zapasowe-repozytorium-git/</link>
		<comments>http://luksza.org/2009/04/24/wlasne-zapasowe-repozytorium-git/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 21:58:18 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gsoc09]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=300</guid>
		<description><![CDATA[Oto prosty sposób na przeniesienie repozytorium GIT na pendrive, czy inną przenośna pamięć. Dla uproszczenia dodamy sobie nasze wymienne repozytorium do pliku /etc/fstab w tym celu: ls -l /dev/disk/by-uuid # odnajdujemy na liście nasz urządzenie, w moim przypadku sdb1 mkdir /mnt/git-gsoc # tworzymy odpowiedni katalog do montowania chown lock:lock /mnt/git-gsoc # zmieniamy właściciela przy użyciu [...]]]></description>
			<content:encoded><![CDATA[<p>Oto prosty sposób na przeniesienie repozytorium GIT na pendrive, czy inną przenośna pamięć.</p>
<ol>
<li>Dla uproszczenia dodamy sobie nasze <em>wymienne repozytorium</em> do pliku /etc/fstab w tym celu:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>disk<span style="color: #000000; font-weight: bold;">/</span>by-uuid <span style="color: #666666; font-style: italic;"># odnajdujemy na liście nasz urządzenie,</span>
<span style="color: #c20cb9; font-weight: bold;">w</span> moim przypadku sdb1
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc <span style="color: #666666; font-style: italic;"># tworzymy odpowiedni katalog do montowania</span>
<span style="color: #c20cb9; font-weight: bold;">chown</span> lock:lock <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc <span style="color: #666666; font-style: italic;"># zmieniamy właściciela</span></pre></div></div>

<p>przy użyciu ulubionego edytora edytujemy /etc/fstab. Dodajemy następującą linie:</p>
<pre>UUID=&lt;uuid z pierszego polecenia&gt; /mnt/git-gsoc	&lt;system plików&gt; user,rw,noauto 0 0</pre>
</li>
<li>Teraz przydało by się zawartość naszego obecnego repo przenieść do nowego &#8230;  wystarczy skopiować główny katalog repozytorium <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (prostota git&#8217;a)</li>
</ol>
<p>Mając już sklonowane repozytorium przydał by się jeszcze jakiś skrypt który za nas wykona zbędne rzeczy (tj. podmontuje pamięć, odpali <em>git-deamon</em>, a potem po sobie posprząta <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /usr/bin/bash</span>
<span style="color: #666666; font-style: italic;"># Copyrighted, 2009</span>
<span style="color: #666666; font-style: italic;"># Developed by Dariusz Luksza &amp;lt;dariusz[at]luksza[dot]org&amp;gt;</span>
<span style="color: #666666; font-style: italic;"># License: GPL v2</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
connect<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> Montuje urzadzenie ...
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #000000; font-weight: bold;">if</span>  <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> <span style="color: #660033;">-eq</span> <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; DONE.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> Startuje git gaemona ...
		git daemon <span style="color: #660033;">--export-all</span> <span style="color: #660033;">--base-path</span>=<span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>backup <span style="color: #660033;">--detach</span> \
			<span style="color: #660033;">--pid-file</span>=<span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>git-daemon.pid <span style="color: #660033;">--enable</span>=receive-pack <span style="color: #660033;">--listen</span>=localhost
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; DONE.&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">else</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> Wystapil blad podczas montowania, sprawdz urzadzenie<span style="color: #000000; font-weight: bold;">!</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">fi</span>
	<span style="color: #000000; font-weight: bold;">;;</span>
disconnect<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>git-daemon.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> Zatrzymuje git daemona ...
<span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>git-daemon.pid<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>git-daemon.pid
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; DONE.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> Odmontowuje urzadzenie ...
<span style="color: #c20cb9; font-weight: bold;">sync</span>
		<span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>git-gsoc<span style="color: #000000; font-weight: bold;">/</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; DONE.&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">else</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> Daemon nie zostal uruchomiany
		<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">fi</span>
	<span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> Uzycie:
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;    &quot;</span> $<span style="color: #000000;">0</span> <span style="color: #ff0000;">&quot;[connect|disconnect]&quot;</span>
	<span style="color: #000000; font-weight: bold;">;;</span></pre></div></div>

<p>Oczywiście każdy sam musi sobie dostosować ścieżki dostępu <img src='http://luksza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Kiedy mamy już wszystko poustawiane warto by sprawdzić czy wszytko działa poprawnie tj. uruchamiamy powyższy skrypt z parametrem <em>connect</em> i po chwili powinniśmy mieć uruchomionego daemona GITa. Teraz wystarczy do naszego <em>lokalnego</em> repozytorium dodać to które właśnie utworzyliśmy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git remote add backup git:<span style="color: #000000; font-weight: bold;">//</span>localhost<span style="color: #000000; font-weight: bold;">/&amp;</span>lt;nazwa repo<span style="color: #000000; font-weight: bold;">&amp;</span>gt;</pre></div></div>

<p>i używać <em>uchwytu</em> backup <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Miłej zabawy ;&gt;</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=300" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/04/24/wlasne-zapasowe-repozytorium-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zmiana środowiska graficznego</title>
		<link>http://luksza.org/2009/04/02/zmiana-srodowiska-graficznego/</link>
		<comments>http://luksza.org/2009/04/02/zmiana-srodowiska-graficznego/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 16:48:53 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[fvwm-crystal]]></category>
		<category><![CDATA[wm]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=246</guid>
		<description><![CDATA[Chyba nadeszła ta chwila kiedy to w końcu trzeba zmienić środowisko graficzne &#8230; po prawie pięciu latach spędzonych na Fvwm-Crystal nadeszła chyba pora na zmianę. Jakie są przyczyny ? Osobiścnie nie narzekam na Crystala jest: mały szybki poręczny (jeżeli się już nauczy podstawowych skrótów) Ale posiada jedną bardzo wielką wadę &#8230; wszystko było by OK [...]]]></description>
			<content:encoded><![CDATA[<p>Chyba nadeszła ta chwila kiedy to w końcu trzeba zmienić środowisko graficzne &#8230; po prawie pięciu latach spędzonych na <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mdndtLWNyeXN0YWwub3JnLw==" target=\"_blank\">Fvwm-Crystal</a> nadeszła chyba pora na zmianę.</p>
<p>Jakie są przyczyny ? Osobiścnie nie narzekam na Crystala jest:</p>
<ul>
<li>mały</li>
<li>szybki</li>
<li>poręczny (jeżeli się już nauczy podstawowych skrótów)</li>
</ul>
<p>Ale posiada jedną bardzo wielką wadę &#8230; wszystko było by OK gdyby nie to, że zachciało się mi podłączyć zewnętrzny monitor. W tym momencie Crystal (konkretniej mówiąc pages czyli przestrzenie robocze) wariuje, wyświetlane jest jednocześnie &#8222;półtorej&#8221; przestrzeni roboczej (tj. cała aktywa i kawałek następnej). Próbowałem nawet restartować i przeładowywać recepturełale to jeszcze pogorszyło efekt &#8230;</p>
<p>Tak więc staję znowu przed pytaniem &#8222;jakiego WMa wybrać&#8221;. Nie jest to dla mnie pytanie proste &#8230; bo szczerze mówiąc nie znam nic innego <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Jedno wiem na pewno, nie będzie to ani KDE ani Gnome.</p>
<p>Dla ścisłości &#8230; jakie wytyczne musi spełniać nowe środowisko:</p>
<ul>
<li>możliwość konfiguracji do 12 przestrzeni roboczych i przełączanie się między nimi przez &lt;alt&gt;+F[1-12] (lub &lt;win&gt;+F[1-12])</li>
<li>możliwość przełączenia się pomiędzy dwoma sąsiadującymi przestrzeniami przy pomocy &lt;alt&gt;+[ i &lt;alt&gt;+]</li>
<li>możliwość przełączenia się pomiędzy dwoma ostatnio używanymi przestrzeniami za pomocą &lt;alt&gt;+&lt;esc&gt;</li>
<li>możliwość ciągłego podglądu wszystkich przestrzeni roboczych tj. tego co jest na nich odpalone (w Crystalu mam na prawej krawędzi pasek który reprezentuje wszystkie przestrzenie robocze oraz aplikacje na nich odpalone oczywiście umożliwia on również przełączanie pomiędzy przestrzeniami)</li>
<li>brak żadnych pasków zadań i menu (jedno menu &#8222;ekranowe&#8221; tj. po kliknięciu LMB w pulpit)</li>
<li>możliwość zdefiniowania aplikacji które mają się odpalać automatycznie</li>
<li>możliwość maksymalizacji okna poprzez &lt;alt&gt;+=</li>
<li>możliwość zdefiniowania od jakiego rozmiaru ma być zmaksymalizowane okno</li>
<li>nie powinno się rozjeżdżać po podłączeniu zewnętrznego monitora</li>
</ul>
<p>oczywiście wszystkie te funkcjonalności nie muszą być od razu dostępne ale dane środowisko powinno być na tyle konfigurowalne żeby umożliwić mi ustawienie wszystkich tych opcji ale też nie chcę tonąć w plikach i skryptach konfiguracyjnych &#8230;</p>
<p>Cóż, poszukiwania czas zacząć &#8230; może ktoś pod powie parę ciekawych środowisk ? ;&gt;</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=246" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/04/02/zmiana-srodowiska-graficznego/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>cda2mpc</title>
		<link>http://luksza.org/2009/03/01/cda2mpc/</link>
		<comments>http://luksza.org/2009/03/01/cda2mpc/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 13:19:02 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[cda2mpc]]></category>
		<category><![CDATA[mpc]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=233</guid>
		<description><![CDATA[Parę dni temu postanowiłem zgrać moją skromną kolekcję płyt audio do formatu MPC. Nie chcąc marnować czasu (i zaśmiecać systemu zbędnym softem), postanowiłem napisać sobie mały i prosty skrycik w Python&#8217;ie. Założenia prostota automatyczność (wkładam płytę odpalam skrypt i zapominam &#8230; ) zapis wyjściowych plików w pewnym ustalonym schemacie katalogów (wykonawca, nazwa albumu i utworu [...]]]></description>
			<content:encoded><![CDATA[<p>Parę dni temu postanowiłem zgrać moją skromną kolekcję płyt audio do formatu <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3BsLndpa2lwZWRpYS5vcmcvd2lraS9NdXNlcGFjaw==" target=\"_blank\">MPC</a>. Nie chcąc marnować czasu (i zaśmiecać systemu zbędnym softem), postanowiłem napisać sobie mały i prosty skrycik w Python&#8217;ie. Założenia</p>
<ul>
<li>prostota</li>
<li>automatyczność (wkładam płytę odpalam skrypt i zapominam &#8230; <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</li>
<li>zapis wyjściowych plików w pewnym ustalonym schemacie katalogów (wykonawca, nazwa albumu i utworu pisana camel case&#8217;em dodatkowo nazwa utworu poprzedzona jego numerem oraz praw dostępu: 400 (dla utworów_ i 500 (albumu))</li>
<li>automatyczne pobieranie informacji o utworach bez konieczności ich przepisywania (tj. wykorzystanie <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DZGRi" target=\"_blank\">CDDB</a>, a konkretnie <a href="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9jZGRiLXB5Lw==" target=\"_blank\">cddb-py</a>)</li>
</ul>
<p>Oto efekt (należy pamiętać żeby podmienić <strong>baseDir</strong> !):</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/python</span>
&nbsp;
<span style="color: #483d8b;">&quot;&quot;&quot;
cda2mpc, Copyrighted, 2009
Ripps directly from CD audio to musepack (mpc) format.
Developed by Dariusz Luksza 
License: GPL v2
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> CDDB, DiscID, <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">sys</span> <span style="color: #ff7700;font-weight:bold;">import</span> stdout
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">string</span> <span style="color: #ff7700;font-weight:bold;">import</span> capitalize
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">os</span> <span style="color: #ff7700;font-weight:bold;">import</span> chmod, makedirs <span style="color: #ff7700;font-weight:bold;">as</span> mkdir
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">subprocess</span> <span style="color: #ff7700;font-weight:bold;">import</span> Popen, PIPE, call
&nbsp;
baseDir = <span style="color: #483d8b;">'/home/lock/muzyka/'</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> camelCase<span style="color: black;">&#40;</span>value<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;&quot;</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>capitalize<span style="color: black;">&#40;</span>w<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> w <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;[ _]?&quot;</span><span style="color: black;">&#41;</span>, value<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Getting CDDB info ...'</span>,
stdout.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
cdrom = DiscID.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
discId = DiscID.<span style="color: black;">disc_id</span><span style="color: black;">&#40;</span>cdrom<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: black;">&#40;</span>queryStatus, queryInfo<span style="color: black;">&#41;</span> = CDDB.<span style="color: black;">query</span><span style="color: black;">&#40;</span>discId<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>queryInfo, <span style="color: #008000;">list</span><span style="color: black;">&#41;</span>:
	queryInfo = queryInfo<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: black;">&#40;</span>readStatus, readInfo<span style="color: black;">&#41;</span> = CDDB.<span style="color: black;">read</span><span style="color: black;">&#40;</span>queryInfo<span style="color: black;">&#91;</span><span style="color: #483d8b;">'category'</span><span style="color: black;">&#93;</span>, queryInfo<span style="color: black;">&#91;</span><span style="color: #483d8b;">'disc_id'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
album = queryInfo<span style="color: black;">&#91;</span><span style="color: #483d8b;">'title'</span><span style="color: black;">&#93;</span>
splitAt = album.<span style="color: black;">index</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/'</span><span style="color: black;">&#41;</span>
&nbsp;
artist = album<span style="color: black;">&#91;</span>:splitAt - <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
album = album<span style="color: black;">&#91;</span>splitAt + <span style="color: #ff4500;">2</span>:<span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">' DONE.'</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Starting to encoding:'</span>, artist, <span style="color: #483d8b;">'-'</span>, album
&nbsp;
saveDir = baseDir + camelCase<span style="color: black;">&#40;</span>artist<span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'/'</span> + camelCase<span style="color: black;">&#40;</span>album<span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'/'</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
	mkdir<span style="color: black;">&#40;</span>saveDir, 0700<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">OSError</span>:
	<span style="color: #ff7700;font-weight:bold;">pass</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>discId<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>:
	title = readInfo<span style="color: black;">&#91;</span><span style="color: #483d8b;">'TTITLE'</span> + <span style="color: #66cc66;">`</span>i<span style="color: #66cc66;">`</span><span style="color: black;">&#93;</span>
	wavTrack = saveDir + <span style="color: #483d8b;">'track.wav'</span>
	fileName = saveDir + <span style="color: #66cc66;">`</span>i + <span style="color: #ff4500;">1</span><span style="color: #66cc66;">`</span> + <span style="color: #483d8b;">'-'</span> +camelCase<span style="color: black;">&#40;</span>title<span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'.mpc'</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\t</span>Encode track:'</span>, title , <span style="color: #483d8b;">' ('</span>, <span style="color: #66cc66;">`</span>i+<span style="color: #ff4500;">1</span><span style="color: #66cc66;">`</span>, <span style="color: #483d8b;">'/'</span>, discId<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">')'</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>Stage 1 (wave) ...'</span>,
	stdout.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	p = Popen<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'cdparanoia'</span>, <span style="color: #483d8b;">'-q'</span>, <span style="color: #66cc66;">`</span>i + <span style="color: #ff4500;">1</span><span style="color: #66cc66;">`</span>, wavTrack<span style="color: black;">&#93;</span>, stdout=PIPE<span style="color: black;">&#41;</span>
	p.<span style="color: black;">wait</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> p.<span style="color: black;">returncode</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff4500;">0</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">' ERROR!!'</span>
		<span style="color: #ff7700;font-weight:bold;">continue</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">' DONE.'</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>Stage 2 (mpc) ...'</span>,
&nbsp;
	stdout.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	mpcCmd = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'mppenc'</span>, <span style="color: #483d8b;">'--deleteinput'</span>, <span style="color: #483d8b;">'--xtreme'</span>, <span style="color: #483d8b;">'--silent'</span>, <span style="color: #483d8b;">'--artist'</span>,
			artist, <span style="color: #483d8b;">'--album'</span>, album, <span style="color: #483d8b;">'--title'</span>, title, wavTrack, fileName<span style="color: black;">&#93;</span>
	p = Popen<span style="color: black;">&#40;</span>mpcCmd, stdout=PIPE, stderr=PIPE<span style="color: black;">&#41;</span>
	p.<span style="color: black;">wait</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> p.<span style="color: black;">returncode</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff4500;">0</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">' ERROR!'</span>
		<span style="color: #ff7700;font-weight:bold;">continue</span>
	chmod<span style="color: black;">&#40;</span>fileName, 0400<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot; DONE.<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>COMPLETED.&quot;</span>
&nbsp;
chmod<span style="color: black;">&#40;</span>saveDir, <span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'COMPLETED.'</span>
call<span style="color: black;">&#40;</span><span style="color: #483d8b;">'eject'</span><span style="color: black;">&#41;</span></pre></div></div>

 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=233" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/03/01/cda2mpc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
