<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>KeeQ</title>
	<atom:link href="http://keeq.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://keeq.wordpress.com</link>
	<description>If you&#039;re not prepared to be wrong, you&#039;ll never come up with anything original.</description>
	<lastBuildDate>Mon, 16 May 2011 10:20:15 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='keeq.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/e4785847e3afed13dcf3c6280a2293e5?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>KeeQ</title>
		<link>http://keeq.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://keeq.wordpress.com/osd.xml" title="KeeQ" />
	<atom:link rel='hub' href='http://keeq.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PERL: Referencje i dereferencje</title>
		<link>http://keeq.wordpress.com/2011/05/16/perl-referencje-i-dereferencje/</link>
		<comments>http://keeq.wordpress.com/2011/05/16/perl-referencje-i-dereferencje/#comments</comments>
		<pubDate>Mon, 16 May 2011 10:14:40 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[skrypty]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=348</guid>
		<description><![CDATA[Gdy skrypty w Perlu zaczynają się rozbudowywać, ilość zmiennych (np. konfiguracyjnych) zaczyna rosnąć. Czasem nie wiadomo też ile oraz jakie one będą. Na dużą ilość danych pomocne są tablice. Gdy duże tablice trzeba przekazać do funkcji ratują nas referencje. Gdy nie tylko danych mamy dużo ale i zmiennych, warto wesprzeć się również HASH-ami i ich [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=348&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gdy skrypty w Perlu zaczynają się rozbudowywać, ilość zmiennych (np. konfiguracyjnych) zaczyna rosnąć. Czasem nie wiadomo też ile oraz jakie one będą.<br />
Na dużą ilość danych pomocne są tablice.<br />
Gdy duże tablice trzeba przekazać do funkcji ratują nas referencje.<br />
Gdy nie tylko danych mamy dużo ale i zmiennych, warto wesprzeć się również HASH-ami i ich referencjami.</p>
<p><span id="more-348"></span><br />
Zwykła tablica:</p>
<pre>@array =  (“jeden”,”dwa”,”trzy”,”cztery”);</pre>
<p>Referencja do tej tablicy:</p>
<pre>$array_ref = \@array;</pre>
<p>W trakcie debug-owania dobrym pomysłem jest wypisywanie zawartości referencji w celu sprawdzenia czy dwie różne referencje (np. wewnątrz dwóch różnych funkcji) wskazują na tą samą tablicę:</p>
<pre>print "$array_ref";</pre>
<p>daje w efekcie:</p>
<pre>ARRAY(0x1a2b3c)</pre>
<p>można też sprawdzić adres tablicy przed utworzeniem referencji:</p>
<pre>print \@array."\n";</pre>
<p>&#8230; oraz przekazać tablicę przez referencję do funkcji: </p>
<pre>funkcja ( \@array );</pre>
<p>Odbierając wewnątrz funkcji referencję, by używać tablicy musimy stosować dereferencję, poprzez dodanie symbolu tablicy &#8216;@&#8217; przed zmienną:</p>
<pre>sub funkcja {
    my $new_array_ref = shift;
    pop @$new_array_ref;
}</pre>
<p>&#8230;Przekazanie do funkcji referencji tablicy pozwala nam zmieniać rzeczywiste wartości tej tablicy &#8211; zmiana będzie widoczna w programie po zakończeniu działania funkcji.</p>
<p>Można również utworzyć tablicę tablic.<br />
Zaczynamy od podtablic:</p>
<pre>@A = (1,2,3);
@B = (11,12,13);
@C = (31,32,33);</pre>
<p>I dalej łączymy je w jedną dużą tablicę.</p>
<pre>@Z = (\@A, \@B, \@C);</pre>
<p>Wydobyć zawartość takiej wielowymiarowej tablicy możemy na dwa sposoby:</p>
<ol>
<li>
<pre>$$array_ref[2]</pre>
</li>
<li>
<pre>$array_ref-&gt;[2]</pre>
</li>
</ol>
<p>W przypadku gdy wymiarów mamy jeszcze więcej, po strzałce (-&gt;) wybór elementu z każdego kolejnego możemy możemy dodawać w kolejnych nawiasach kwadratowych.</p>
<pre>$array_ref-&gt;[2][1][0]</pre>
<p>P.S.<br />
Podobnie postępujemy z HASH-ami. Należy pamiętać jedynie, że zamiast nawiasów kwadratowych stosuje klamrowe (&#8216;{&#8216; i &#8216;}&#8217;).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=348&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2011/05/16/perl-referencje-i-dereferencje/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>Wieloprzyciskowa myszka</title>
		<link>http://keeq.wordpress.com/2010/06/13/wieloprzyciskowa-myszka/</link>
		<comments>http://keeq.wordpress.com/2010/06/13/wieloprzyciskowa-myszka/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 22:11:28 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[myszka]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=303</guid>
		<description><![CDATA[Wieloprzyciskowa myszka pod Linux-em / pod X11 Zakupiłem sobie ostatnio nową myszkę &#8211; stara szybko już wysysała baterie i miała konektor, którego po odłączeniu od laptopa można było swobodnie używać jako maczugi. Duży problem jak się okazało, stanowi połączenie trzech cech myszki &#8211; bezprzewodowość, duży rozmiar (pod dużą łapę) oraz niewielki rozmiar konektora. Jak to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=303&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><u>Wieloprzyciskowa myszka pod Linux-em / pod X11</u></strong></p>
<p>Zakupiłem sobie ostatnio nową myszkę &#8211; stara szybko już wysysała baterie i miała konektor, którego po odłączeniu od laptopa można było swobodnie używać jako maczugi.<br />
Duży problem jak się okazało, stanowi połączenie trzech cech myszki &#8211; bezprzewodowość, duży rozmiar (pod dużą łapę) oraz niewielki rozmiar konektora. Jak to z trudnym łączeniem cech bywa, efekt jest drogi &#8211; bywa jednak również satysfakcjonujący. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Wybór padł na <em>Logitech Performance mouse MX</em>.</p>
<p>Podłączam ją do komputera&#8230; i działa &#8211; jakby mogła nie działać&#8230;<br />
Działa, ale apetyt robi się co raz większy i nagle oczy dostrzegają mnogość przycisków na powierzchni myszki &#8211; skoro są, nie powinny się zmarnować. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /><br />
Ich obsługa nie leży jednak w kanonie i nie została domyślnie skonfigurowana. Trzeba więc będzie się trochę pobawić.</p>
<p><b><u>Droga do celu</u></b><br />
Przede wszystkim trzeba zmienić definicję myszki w pliku konfiguracyjnym X11 &#8211; <em><strong>/etc/X11/xorg.conf</strong></em>. Dotychczasową definicję należy wykomentować (wstawić &#8216;<em>#</em>&#8216; na początku każdej linijki definicji), a następnie wrzucić coś takiego:<br />
<code><em>Section "InputDevice"<br />
&nbsp;	&nbsp; Identifier "Logitech Performance MX"<br />
&nbsp;	&nbsp; Driver "evdev"<br />
&nbsp;	&nbsp; Option "Protocol" "auto"<br />
&nbsp;	&nbsp; Option "Buttons" "11"<br />
&nbsp;	&nbsp; Option "CorePointer"<br />
EndSection</em><br />
</code></p>
<p>Czytając różne rozprawy w Sieci, natknąłem się na informację doradzającą stworzenie pliku <strong><em>~/.Xmodmap</em> </strong> w następującej postaci:<br />
<code><em> ! Reorder middle click, right click, Z and W axes<br />
 pointer = 1 2 3 4 5 6 7 8 9 10 11 12<br />
</em></code><br />
&#8230; Nie jestem pewien czy jest to potrzebne, ale z pewnością nie zaszkodziło w działaniu myszki (należy jedynie zwrócić uwagę, że zmienienie kolejności numerków, zmienia ich przyporządkowanie do klawiszy myszki &#8211; zmienienie ze sobą numerów 2 i 3 powoduje adekwatną zamianę funkcji klawiszy środkowego i prawego).<br />
Po restarcie środowiska graficznego (X11) należy dodać nowo utworzony <em>~/.Xmodmap </em> do aktywnych/używanych.</p>
<p>Następnie odpalamy w konsoli programik pod tytułem <em><strong>xev </strong> </em> i obserwujemy, wciskając kolejne klawisze myszki, jakie numerki wyskakują nam, w kolejnych opisach zdarzeń, koło słowa <em>button</em>.<br />
&#8230; Polecam spisać numerki na kartce &#8211; pamięć bywa złośliwa.</p>
<p>Jeżeli aktywnym menegerem okien jest compiz, w jego konfiguracji należy szukać możliwości zagospodarowania dodatkowych klawiszy myszki.<br />
Konfigurację włączamy wydając polecenie:<br />
<strong><em>/usr/bin/python2.6 /usr/bin/ccsm</em></strong></p>
<p>Wiele ciekawych operacji możliwych do skonfigurowania znajdziemy w plugin-ie <em>opcje ogólne</em>. Przełączanie okienek z kolei &#8211; na ten przycisk w podstawce pod kciukiem &#8211; możliwe jest do ustawienia w opcjach plugin-ów &#8222;<em>&#8230;&nbsp;przełączanie aplikacji</em>&#8222;.</p>
<p><strong><em>P.S.</em></strong><br />
Czasem nie da się ustawić konkretnego klawisza myszki z GUI konfiguratora compiz &#8211; należy wtedy ustawić którykolwiek, a potem odszukać odpowiedni plugin w drzewku compiz-a w edytorze rejestru Gnome-a.<br />
<strong><em>gconf-editor</em></strong><br />
Dla przykładu funkcja zamykania okna klawiszem myszki znajduje się pod adresem:<br />
<em>/apps/compiz/general/allscreens/options/close_window_button</em><br />
&#8230; Problem ten pojawia się często jeżeli próbujemy ustawić klawisz, którego numer jest większy niż 9.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=303&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2010/06/13/wieloprzyciskowa-myszka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>Po krótce o Regexp-ach</title>
		<link>http://keeq.wordpress.com/2008/12/16/po-krotce-o-regexp-ach/</link>
		<comments>http://keeq.wordpress.com/2008/12/16/po-krotce-o-regexp-ach/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 14:07:34 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=182</guid>
		<description><![CDATA[Na samym wstępie zaznaczyć trzeba, że zapisane poniżej treści nie odnoszą się do wszystkich implementacji wyrażeń regularnych. Jest to raczej spis skrótów, uwag i opisów tego czego najczęściej używam i tym samym najczęściej szukam. Znaki specjalne w wyrażeniach regularnych: ^&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Początek wiersza $ Koniec wiersza \b Granica słowa &#8211; może być stosowana zarówno przed jak [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=182&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na samym wstępie zaznaczyć trzeba, że zapisane poniżej treści nie odnoszą się do wszystkich implementacji wyrażeń regularnych.<br />
Jest to raczej spis skrótów, uwag i opisów tego czego najczęściej używam i tym samym najczęściej szukam. </p>
<h3>Znaki specjalne w wyrażeniach regularnych:</h3>
<table border="0">
<tbody>
<tr>
<td>^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>Początek wiersza</td>
</tr>
<tr>
<td>$</td>
<td>Koniec wiersza</td>
</tr>
<tr>
<td>\b</td>
<td>Granica słowa &#8211; może być stosowana zarówno przed jak i po słowie (np. &#8216;<strong>\b</strong>slowo<strong>\b</strong>&#8216;)</td>
</tr>
<tr>
<td>\</td>
<td>Escape char. &#8211; wyłącz specjalne znaczenie nast. znaku</td>
</tr>
<tr>
<td>[ ]</td>
<td>Dowolny znak z wskazanych z nawiasach lub gdy użyte z myślnikiem, znak z zakresu</td>
</tr>
<tr>
<td>[^ ]</td>
<td>Dowolny znak poza wskazanymi</td>
</tr>
<tr>
<td>.</td>
<td>Dowolny pojedyńczy znak, po za znakiem nowej linii</td>
</tr>
<tr>
<td>*</td>
<td>Dowolna ilość wystąpień poprzedzającego znaku</td>
</tr>
<tr>
<td>+</td>
<td>Dowolna (&gt;0) ilość wystąpień poprzedzającego znaku</td>
</tr>
<tr>
<td>?</td>
<td>Jedno lub zero wystąpień poprzedzającego znaku</td>
</tr>
<tr>
<td>{x,y}</td>
<td>Poprzedzający znak w ilości wystąpień od x do y</td>
</tr>
<tr>
<td>{x}</td>
<td>x wystąpień poprzedzającego znaku</td>
</tr>
<tr>
<td>{x,}</td>
<td>Poprzedzający znak w ilości wystąpień od x wzwyż</td>
</tr>
<tr>
<td>\d</td>
<td>Oznacza cyfrę (\D oznacza każdy znak poza cyfrą)</td>
</tr>
<tr>
<td>\s</td>
<td>Pasuje do każdego znaku białego(spacja, tabulacja, nowa linia) (\S odwraca znaczenie)</td>
</tr>
<tr>
<td>\w</td>
<td>Pasuje do każdego znaku w słowie(a-Z i 0-9) (\W odwraca znaczenie)</td>
</tr>
<tr>
<td>\A</td>
<td>Oznacza początek stringa (ma sens tylko w match-owaniu bez podziału na linie)</td>
</tr>
<tr>
<td>\Z</td>
<td>Oznacza koniec stringa (ma sens tylko w match-owaniu bez podziału na linie)</td>
</tr>
<tr>
<td>[:alpha:]</td>
<td> Any alphabetic character</td>
</tr>
<tr>
<td>[:lower:]</td>
<td> Any lowercase character</td>
</tr>
<tr>
<td>[:upper:]</td>
<td> Any uppercase character</td>
</tr>
<tr>
<td>[:digit:]</td>
<td> Any digit</td>
</tr>
<tr>
<td>[:alnum:]</td>
<td> Any alphanumeric character (alphabetic or digit)</td>
</tr>
<tr>
<td>[:space:]</td>
<td> Any white space character (space, tab, vertical tab)</td>
</tr>
<tr>
<td>[:graph:]</td>
<td> Any printable character, except space</td>
</tr>
<tr>
<td>[:print:]</td>
<td> Any printable character, including the space</td>
</tr>
<tr>
<td>[:punct:]</td>
<td> Any punctuation (i.e., a printable character that &#8230;</td>
</tr>
<tr>
<td>[:cntrl:]</td>
<td> Any nonprintable character </td>
</tr>
</tbody>
</table>
<p>\\ ToDo: Napisać jeszcze o nawiasach <strong>()</strong> i znaku lub <strong>|</strong></p>
<p><strong>Problemy z TAB em</strong><br />
By uniknąć problemów z TABem w skryptach <em>bash</em> i <em>ksh93</em> (zdarzają się rzadko, ale jak jak się zdarzą &#8211; dobrze jest wiedzieć jak wyjść z kłopotu) można użyć cytowania <strong>$&#8217;&#8230;&#8217;</strong>, wewnątrz którego używa się składni w stylu języka C (np. <strong>\t</strong>,<strong>\n</strong> &#8230;).</p>
<p><strong>SOLARIS</strong><br />
Standardowy &#8216;goły&#8217; <em>grep</em> w Solarisie ma bardzo uproszczoną obsługę zapytań.<br />
Obsługiwane elementy search pattern to: <strong>^ $ . [...] [^...] * \</strong><br />
Nieobsługiwane elementy to m.in.: zapis <strong>[[::]]</strong> (np. <strong>[[:alpha:]]</strong>), znak tabulacji (<strong>\t</strong>), jeden i więcej (<strong>+</strong>), zero lub jeden (<strong>?</strong>) itd.<br />
Są jeszcze oczywiście narzędzia dające większe możliwości: <i>egrep</i> oraz <i>/usr/xpg4/bin/grep</i> .</p>
<p><strong>Bibliografia</strong><br />
<a href="http://www.manucomp.com/solaris_tips/extending_grep.html">Solaris grep Tips&amp;Tricks</a> Stonka podaje kilka pomysłów jak można zwiększyć możliwości podstawowego grep&#8217;a na Solarisie<br />
<a href="http://docs.sun.com/app/docs/doc/806-7612/filesearch-99633">Chapter 4 Searching Files</a> Tekst na temat grep&#8217;a na stronach SUNa &#8211; nie powinno się wymagać od niego więcej niż tam opisane&#8230;<br />
Całkiem niezła stronka na temat wyrażeń regularnych: <a href="http://www.regular-expressions.info/">regular-expressions.info</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/182/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=182&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/12/16/po-krotce-o-regexp-ach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>Screen kradnie CTRL-a</title>
		<link>http://keeq.wordpress.com/2008/12/09/screen-kradnie-ctrl-a/</link>
		<comments>http://keeq.wordpress.com/2008/12/09/screen-kradnie-ctrl-a/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 22:09:19 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=232</guid>
		<description><![CDATA[Jestem zwolennikiem emacs&#8217;owego sposobu poruszania się po tekście, linijce etc. Znaczy to mniej więcej tyle, że np. nie używam HOME i END by przemieszczać się kursorem pomiędzy początkiem a końcem linii &#8211; zamiast tego używam kombinacji, odpowiednio CTRL-a i CTRL-e. Od dłuższego czasu weszło mi to w krew do tego stopnia, że nawet nie myślę [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=232&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jestem zwolennikiem emacs&#8217;owego sposobu poruszania się po tekście, linijce etc. Znaczy to mniej więcej tyle, że np. nie używam HOME i END by przemieszczać się kursorem pomiędzy początkiem a końcem linii &#8211; zamiast tego używam kombinacji, odpowiednio CTRL-a i CTRL-e.</p>
<p>Od dłuższego czasu weszło mi to w krew do tego stopnia, że nawet nie myślę o tym, gdy wydaje te komendy &#8211; kursor poprostu sam przemieszcza się tam gdzie akurat chciałbym go widzieć.<br />
Jakież było moje zdziwienie, gdy nagle przestał się przemieszczać. To trochę tak, jak idąc sobie spokojnie chodnikiem nagle odnosimy wrażenie, że nasza noga nie przesunęła się do przodu przy kolejnym kroku, tak jak zawsze to robiła &#8211; po chwili już wiemy, że to wystająca płyta chodnikowa zatrzymała ją po drodze, ale z początku jesteśmy w takim szoku, że niewiele brakuje by się wywrócić&#8230;</p>
<p>Wykonałem szybkie dochodzenie i już wiem !<br />
Głównym winowajcą okazała się komenda <em>screen</em> której zacząłem używać by nie tracić sesji jak zniknie mi okno (wolał bym nie wchodzić w szczegóły tego cyklicznego zdarzenia).</p>
<p>Po odpowiednim wygooglowaniu sprawy doszedłem do wniosku, że poniższa linijka powinna załatwić sprawę:</p>
<pre>
echo 'escape ^\\\' &gt;&gt; ~/.screenrc
</pre>
<p>Jest to dodanie linijki <em>escape ^\\\</em> do pliku konfiguracyjnego screena &#8211; <em>~/.screenrc</em>.<br />
Od tej pory wszystkie skróty w screennie będą zaczynały się od CTRL-\ zamiast CTRL-a.<br />
&#8230; Tym samym CTRL-a pozostaje przy swojej pierwotnej (&#8230; i jedynej słusznej) roli.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=232&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/12/09/screen-kradnie-ctrl-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8222;No space left on device&#8221;, od innej strony&#8230;</title>
		<link>http://keeq.wordpress.com/2008/11/11/no-space-left-on-device-od-innej-strony/</link>
		<comments>http://keeq.wordpress.com/2008/11/11/no-space-left-on-device-od-innej-strony/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 19:03:59 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[vm]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=223</guid>
		<description><![CDATA[Problem: Podczas instalacji Linuksa (Gentoo) na maszynie wirtualnej VirtualBox, podczas rozpakowywania portage-latest.tar.bz2 , zaczęły pojawiać się błędy związane z brakiem miejsca na dysku: tar: portage/(...)/metadata.xml: Cannot open: No such file or directory tar: Error exit delayed from previous errors emergelog(): [Errno 28] No space left on device: '/var/log/emerge.log' Dodatkowo, ilość wolnych MB na dysku jest [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=223&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Problem:<br />
Podczas instalacji Linuksa (Gentoo) na maszynie wirtualnej VirtualBox, podczas rozpakowywania portage-latest.tar.bz2 , zaczęły pojawiać się błędy związane z brakiem miejsca na dysku:</p>
<pre>tar: portage/(...)/metadata.xml: Cannot open: No such file or directory
tar: Error exit delayed from previous errors</pre>
<pre>emergelog(): [Errno 28] No space left on device: '/var/log/emerge.log'</pre>
<p>Dodatkowo, ilość wolnych MB na dysku jest oczywiście znacznie większa niż 0, 10, 100 czy nawet 1000. Skoro więc jest miejsce na dysku, to dlaczego go brakuje?</p>
<p>Problemem nie jest miejsce mierzone w MB, tylko w inode-ach. W inode-ach zapisywane są informacje o plikach, jeśli więc wszystkie inode-y są już zapełnione, nie można zapisać więcej plików mimo iż na dysku, fizycznie znalazło by się jeszcze miejsce.<br />
Ilość wszystkich inode-ów oraz ilość tych zajętych można poznać wydając polecenie:</p>
<pre>df -i</pre>
<p>W moim przypadku wynik był następujący:</p>
<pre>livecd usr # df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
tmpfs                  64076    1517   62559    3% /
/dev/sr0                   0       0       0    -  /mnt/cdrom
/dev/loop0            117204  117204       0  100% /mnt/livecd
udev                   64076     805   63271    2% /dev
tmpfs                  64076      41   64035    1% /mnt/livecd/lib/firmware
tmpfs                  64076       3   64073    1% /mnt/livecd/usr/portage
tmpfs                  64076       4   64072    1% /boot
/dev/sda3             147168  147168       0  100% /mnt/gentoo
/dev/sda1               4016      13    4003    1% /mnt/gentoo/boot</pre>
<p>&#8230; Jak widać przy <em>/dev/sda3</em> wykorzystany został już cały dostępny zasób inode-ów.<br />
Niestety ich ilość zmienić/ustawić można tylko w trakcie tworzenia filesystemu.</p>
<p>By w końcu zainstalować system, musiałem od nowa sformatować dysk.<br />
Do standardowej komendy dodałem argument: <i>-i 8192</i></p>
<pre>mkfs.ext2 -j -L ROOT -i 8192 /dev/sda3</pre>
<p>Zauważyłem, że problem pojawia się głównie po instalacji drzewa portów (portage), które to składa się z bardzo dużej ilości malutkich plików. Więc gdy po stworzeniu docelowego obrazu maszyny virtualnej, będę miał problemy z &#8222;miejscem&#8221;, pewnie je usunę.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=223&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/11/11/no-space-left-on-device-od-innej-strony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>PERL: Tips &amp; Tricks i ogólnie o czym warto pamiętać</title>
		<link>http://keeq.wordpress.com/2008/10/17/perl-tips-tricks-i-ogolnie-o-czym-warto-pamietac/</link>
		<comments>http://keeq.wordpress.com/2008/10/17/perl-tips-tricks-i-ogolnie-o-czym-warto-pamietac/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 10:38:35 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[skrypty]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=214</guid>
		<description><![CDATA[Usuwanie elementu z listy, tablicy @list = grep(!/$refid/,@list); Doświadczenie pokazuje, że nawet w ciasnej pętli jest to duuuża optymalizacja. Wielopoziomowa tablica hasująca %hash-&#62;{$2} = () unless ( %hash-&#62;{$2} ); %hash-&#62;{$2}-&#62;{$1} = () unless ( %hash-&#62;{$2}-&#62;{$1} ); %hash-&#62;{$2}-&#62;{$1}-&#62;{$klucz} = $wartosc; drukowanie w kolumnach printf OUT "\t%-9d\t%-12d\n", $zmiennaA, $zmiennaB; Wyłączanie buforowania na urządzenia wejścia i wyjścia select [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=214&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>Usuwanie elementu z listy, tablicy</strong>
<pre>@list = grep(!/$refid/,@list);</pre>
<p>Doświadczenie pokazuje, że nawet w ciasnej pętli jest to duuuża optymalizacja.</li>
<li><strong>Wielopoziomowa tablica hasująca</strong>
<pre>%hash-&gt;{$2} = ()     unless ( %hash-&gt;{$2} );
%hash-&gt;{$2}-&gt;{$1} = () unless ( %hash-&gt;{$2}-&gt;{$1} );
%hash-&gt;{$2}-&gt;{$1}-&gt;{$klucz}       = $wartosc;</pre>
</li>
<li><strong>drukowanie w kolumnach</strong>
<pre>printf OUT "\t%-9d\t%-12d\n", $zmiennaA, $zmiennaB;</pre>
</li>
<li><strong>Wyłączanie buforowania na urządzenia wejścia i wyjścia</strong>
<pre>select STDERR; $| = 1;
select STDOUT; $| = 1;</pre>
</li>
<li><strong>Rozmiary okienka konsoli</strong>
<pre>my ($rows,$cols) = split(/ /,`/bin/stty size`);</pre>
</li>
<li><strong>Numer błędu ostatnio wywołanej komendy</strong>
<pre>print $!;</pre>
</li>
<li><strong></strong>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=214&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/10/17/perl-tips-tricks-i-ogolnie-o-czym-warto-pamietac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>SSH &#8211; tunele, socks etc.</title>
		<link>http://keeq.wordpress.com/2008/09/26/ssh-tunele-socks-etc/</link>
		<comments>http://keeq.wordpress.com/2008/09/26/ssh-tunele-socks-etc/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 19:16:28 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[undone]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=170</guid>
		<description><![CDATA[Na temat tuneli SSH i ich przydatności napisano już wiele, ograniczę się więc do zebrania kilku przydatnych, soczystych linków i może skrótowego przedstawienia najczęściej &#8222;zapominanych&#8221; przeze mnie rozwiązań. Sztuczki z SSH SCP &#8211; Bezpieczne kopiowanie SSH bez hasła &#8211; generujemy klucze Wykonujemy polecenia na zdalnym systemie X11 forwarding &#8211; uruchamiamy zdalnie aplikacje graficzne SSHFS &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=170&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na temat tuneli SSH i ich przydatności napisano już wiele, ograniczę się więc do zebrania kilku przydatnych, soczystych linków i <span style="text-decoration:underline;">może</span> skrótowego przedstawienia najczęściej &#8222;zapominanych&#8221; przeze mnie rozwiązań.<br />
<span id="more-170"></span></p>
<ul>
<li><a href="http://jakilinux.org/aplikacje/sztuczki-z-SSH/">Sztuczki z SSH</a>
<ol>
<li>SCP &#8211; Bezpieczne kopiowanie</li>
<li>SSH bez hasła &#8211; generujemy klucze</li>
<li>Wykonujemy polecenia na zdalnym systemie</li>
<li>X11 forwarding &#8211; uruchamiamy zdalnie aplikacje graficzne</li>
<li>SSHFS &#8211; Montujemy zdalny katalog</li>
</ol>
</li>
<li><a href="http://jakilinux.org/aplikacje/sztuczki-z-ssh-2-tunele/">Sztuczki[2] z SSH</a>
<ol>
<li>Tunelowanie SSH (-L)</li>
<li>SSH jako SOCKS5</li>
<li>tsocks</li>
<li>corkscrew</li>
</ol>
</li>
</ul>
<p>Dodatkowo można oczywiście wykorzystywać putty, do tych samych celów co zwykłe konsolowe ssh.<br />
Przetestowałem, że można stworzyć w ten sposób w Windowsowym środowisku zarówno tunele jak i proxy.</p>
<p>Skróty później&#8230; <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=170&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/09/26/ssh-tunele-socks-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>Perl &#8211; (nie takie) krótkie przypomnienie</title>
		<link>http://keeq.wordpress.com/2008/09/24/perl-krotkie-przypomnienie/</link>
		<comments>http://keeq.wordpress.com/2008/09/24/perl-krotkie-przypomnienie/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 14:26:37 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[skrypty]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=142</guid>
		<description><![CDATA[Tutaj sprawa nie jest już taka prosta jak z Bash&#8217;em. Programiki w Perlu mają tendencję do przybierania całkiem sporych rozmiarów i co za tym idzie większego skomplikowania &#8211; Perla wykorzystuje się raczej tam gdzie Bash już nie wystarcza. &#8230; Nie starcza więc krótkie przypomnienie. Z tego też powodu zamieszczam tu kilka linków przydatnych w procesie [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=142&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Tutaj sprawa nie jest już taka prosta jak z Bash&#8217;em. Programiki w Perlu mają tendencję do przybierania całkiem sporych rozmiarów i co za tym idzie większego skomplikowania &#8211; Perla wykorzystuje się raczej tam gdzie Bash już nie wystarcza.</p>
<p><span id="more-142"></span></p>
<p style="text-align:justify;">&#8230; Nie starcza więc krótkie przypomnienie. Z tego też powodu zamieszczam tu kilka linków przydatnych w procesie zmiatania kurzu i udrażniania połączeń między zwojami w mózgownicy odpowiadającymi za obserwowanie świata w barwach Perla:</p>
<ul>
<li><strong><a href="http://perldoc.perl.org/perlintro.html">Perl Intro</a></strong> &#8211; szybko rozprawi się z podstawami</li>
<li><strong><a href="http://perldoc.perl.org/index-faq.html">PERL FAQ</a></strong> &#8211; bardzo przydatne odpowiedzi na wszelakie pytania</li>
<li><strong><a href="http://www.perl.org/books/beginning-perl/">Aktualny Tutorial <span style="font-size:.7em;">(podstrony w PDF)</span></a></strong> &#8211; niestety w dosyć ciężkim do czytania formacie</li>
<li><strong><a href="http://www.comp.leeds.ac.uk/Perl">Perl 4 Tutorial</a></strong> &#8211; lekko nieaktualny, ale za to <strong>klasyka</strong></li>
<li><strong><a href="http://www.perl.org/books/library.html">Biblioteka perl.org</a></strong> &#8211; dużo książek do czytania on-line</li>
<li><strong><a href="http://www.perl.org/">perl.org</a></strong> &#8211; źródło wszystkiego o Perl, z Perlem i w Perlu</li>
<li><strong><a href="http://www.cpan.org/">CPAN</a></strong> &#8211; nie mogło oczywiście zabraknąć bezkresnego źródła bibliotek</li>
<li><strong><a href="http://www.nntp.perl.org/group/">nntp.perl.org</a></strong> &#8211; usenet</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=142&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/09/24/perl-krotkie-przypomnienie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>zanotuj czas emerge</title>
		<link>http://keeq.wordpress.com/2008/09/23/spisz-czas-emerge/</link>
		<comments>http://keeq.wordpress.com/2008/09/23/spisz-czas-emerge/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 16:47:46 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[skrypty]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=121</guid>
		<description><![CDATA[checktime.sh Czasem chciało by się wiedzieć ile tak na prawdę czasu zajmuje skompilowanie ze źródła różnych programów. Prezentowany poniżej skrypcik ten daje taką możliwość. Uwaga ! Należy jednak zauważyć, że ów skrypcik ma jedną(przynajmniej) wadę &#8211; nie jest on w stanie zapisać czasów kompilacji poszczególnych programów kompilowanych przez emerge, a jedynie czas działania całego emerge-a. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=121&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>checktime.sh</h1>
<p>Czasem chciało by się wiedzieć ile tak na prawdę czasu zajmuje skompilowanie ze źródła różnych programów. Prezentowany poniżej skrypcik ten daje taką możliwość.</p>
<p><span id="more-121"></span><strong>Uwaga !</strong><br />
Należy jednak zauważyć, że ów skrypcik ma jedną<span style="color:#333333;">(przynajmniej)</span> wadę &#8211; nie jest on w stanie zapisać czasów kompilacji poszczególnych programów kompilowanych przez emerge, a jedynie czas działania całego emerge-a. Jeżeli więc program ma wiele &#8222;zależności&#8221; które będą kompilować się przed nim, polecam emerge-nąć je wcześniej, tak by nie zakłócały pomiarów dotyczących programu docelowego.</p>
<p><u><strong>Obsługa</strong></u><br />
Są dwie opcje:</p>
<ol>
<li>uruchamiamy emerge jak zwykle, tylko całą komendę poprzedzamy nazwą skryptu<br />
<code># checktime.sh emerge fasolka</code></li>
<li>tworzymy alias który pomoże nam zapisywać czas każdej kompilacji<br />
<code>alias emerge='checktime.sh emerge'</code><br />
&#8230; Alias ten możemy później dodać do <em>.bashrc</em> by działał również przy przyszłych logowaniach</li>
</ol>
<h3>checktime.sh</h3>
<pre><code>
#!/bin/bash

log_file="/var/log/compilation_times.txt";

if [ "$1" = "emerge" ] || [ "$1" = "emerge_with_indexing_for_cfg-update" ]
then

    if [ "$2" = '-pv' ]
    then
        echo -ne "\n\t--pretend option used. Not counting time !!\n";
        $*;
        exit $?;
    fi

    echo -ne "Should I note compilation time? [Y/N] ";
    read -n1 one;

    while [ $one != 'Y' ] &amp;&amp; [ $one != 'T' ] &amp;&amp; [ $one != 'N' ] &amp;&amp; [ $one != 'y' ] &amp;&amp; [ $one != 't' ] &amp;&amp; [ $one != 'n' ]
    do
    echo -ne "\n...Only N &amp; Y are allowed, what it will be then? [Y/N] "
    read -n1 one;
    done
    echo -ne "\n\n";

    if [ $one == 'N' ] || [ $one == 'n' ]
        then
        $*;
        exit $?;
    fi
fi

job="$*";
start=`date`;
$*;
rret=$?;
stop=`date`;

echo ;
echo "Job: $job";
echo "Started at: $start";
echo "Ended   at: $stop";

if (( $rret ))
then
    echo -ne "\n\n\tWarning !! The JOB has retured an ERROR !! ($rret)\n\n";
    echo "Job: $job   !! FAILED !!"          &gt;&gt; $log_file
else
    echo "Job: $job"          &gt;&gt; $log_file
fi
echo "Started at: $start" &gt;&gt; $log_file
echo "Ended   at: $stop"  &gt;&gt; $log_file
echo                      &gt;&gt; $log_file

exit $rret;

#EOF
</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=121&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/09/23/spisz-czas-emerge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
		<item>
		<title>Bash &#8211; krótka powtórka</title>
		<link>http://keeq.wordpress.com/2008/09/23/bash-krotka-powtorka/</link>
		<comments>http://keeq.wordpress.com/2008/09/23/bash-krotka-powtorka/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 14:37:04 +0000</pubDate>
		<dc:creator>Sherghan</dc:creator>
				<category><![CDATA[skrypty]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[undone]]></category>

		<guid isPermaLink="false">http://keeq.wordpress.com/?p=88</guid>
		<description><![CDATA[&#8230; czyli kilka rzeczy które zawsze zapominam # Na początek podstawa, czyli wywalanie wszystkiego do kosza: $ echo test &#38;&#62; /dev/null # Przekierowanie wyjścia błędów na wyjście standardowe &#8211; przydatne przy grep-owaniu $ echo test 2&#62;&#38;1 # Return value $cd /dada &#38;&#62; /dev/null $echo rv: $? # Operatory porównania na string-ach s1 = s2 s1 != [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=88&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><em>&#8230; czyli kilka rzeczy które zawsze zapominam</em></h2>
<ul>
<li> # Na początek podstawa, czyli wywalanie <strong>wszystk</strong>ieg<strong>o do kosza</strong>:
<pre><code>$ echo test &amp;&gt; /dev/null</code></pre>
</li>
<li> # Przekierowanie wyjścia błędów na wyjście standardowe &#8211; przydatne przy grep-owaniu
<pre><code>$ echo test 2&gt;&amp;1</code></pre>
</li>
<li> # <strong>Return value</strong><br />
<code> </code></p>
<pre>$cd /dada &amp;&gt; /dev/null
$echo rv: $?</pre>
</li>
<li> # <strong>Operatory porównania na string-ach</strong><br />
<code> </code></p>
<pre>s1 = s2
s1 != s2
s1 &lt; s2
s1 &gt; s2
-n s1
-z s1</pre>
<p>Przy czym należy pamiętać, że stringi warto &#8222;chować&#8221; w cudzysłowach &#8221; .<br />
Skrypt nie rozwala się wtedy gdy string jest pusty.</li>
<li> # <strong>Operatory porównania liczb</strong><span id="more-88"></span><br />
<code> </code></p>
<pre>-lt (&lt;)
-gt (&gt;)
-le (&lt;=)
-ge (&gt;=)
-eq (==)
-ne (!=)</pre>
</li>
<li> # <strong>Działania na liczbach</strong>
<pre><code>$ echo $((36*43))
1548
</code></pre>
<pre><code>$ echo 3/4 | bc -l
.75000000000000000000
</code></pre>
<pre><code>$ echo  "scale=2; 3/4" | bc -l
.75
</code></pre>
</li>
<li> # Formatowenie wyjscia w <strong>kolumny</strong><br />
Zamiast standardowo używanego <em>echo</em> nalezy użyć <em>printf</em> np. :</p>
<pre>printf "%4s %-18s" $zmienna_dlugosci_do_4_znakow $zmienna_dlugosci_do_18_znakow;</pre>
<p>Pierwsza zmienna będzie wyrównywana do prawej, druga zaś do lewej (ze względu na myślnik przed liczbą).
</li>
<li> # <strong>Zmienne lokalne</strong>
<pre><code>function hello {
  local HELLO=World
  echo $HELLO
}
</code></pre>
</li>
<li> # <strong>Debugging</strong><br />
<code> </code></p>
<pre>#!/bin/bash -x</pre>
</li>
<li> # <strong></strong></li>
</ul>
<p><em>#EOF</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/keeq.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/keeq.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/keeq.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=keeq.wordpress.com&amp;blog=4933266&amp;post=88&amp;subd=keeq&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://keeq.wordpress.com/2008/09/23/bash-krotka-powtorka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49a35ad2c836b5aa285e4113923da923?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sherghan</media:title>
		</media:content>
	</item>
	</channel>
</rss>
