<?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>Lazy webdeveloper &#38; admin &#187; Linux</title>
	<atom:link href="http://www.chyl.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chyl.org</link>
	<description></description>
	<lastBuildDate>Tue, 30 Aug 2011 08:52:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Sphinx 2 w systemie Debian &#8211; budowanie paczki ze źródeł</title>
		<link>http://www.chyl.org/2011/06/sphinx-2-w-systemie-debian-budowanie-paczki-ze-zrodel/</link>
		<comments>http://www.chyl.org/2011/06/sphinx-2-w-systemie-debian-budowanie-paczki-ze-zrodel/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 18:43:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Sphinx]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[dh_make]]></category>
		<category><![CDATA[dpkg-buildpackage]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[wyszukiwanie]]></category>
		<category><![CDATA[ZendFramework]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2843</guid>
		<description><![CDATA[Przy budowaniu niewielkich serwisów obsługujących niewielką ilość dokumentów(artykuły, wpisy, komentarze, etc) zaprzęganie dedykowanych serwerów do przeszukiwania mija się z celem. Swoje projekty w dużej mierze buduję w oparciu o świetny phpowy framework Zend, który posiada bibliotekę Zend_Search_Lucene bardzo łatwo przyswajalną do budowy własnego mechanizmu wyszukiwania opartego na dokumentach. Jak się okazuje to zendowskie Lucene nie [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: right;" src="http://www.chyl.org/wp-content/uploads/2011/06/sphinx.jpg" alt="" width="200" height="51" />Przy budowaniu niewielkich serwisów obsługujących niewielką ilość dokumentów(artykuły, wpisy, komentarze, etc) zaprzęganie dedykowanych serwerów do przeszukiwania mija się z celem.  Swoje projekty w dużej mierze buduję w oparciu o świetny phpowy <a href="http://framework.zend.com/">framework Zend</a>, który posiada bibliotekę <a href="http://framework.zend.com/manual/en/zend.search.lucene.html">Zend_Search_Lucene</a> bardzo łatwo przyswajalną do budowy własnego mechanizmu wyszukiwania opartego na dokumentach.</p>
<p>Jak się okazuje to zendowskie Lucene nie jest wcale takie dobre, kiedy liczba dokumentów zacznie przekraczać kilkadziesiąt tysięcy. Najgorsze i najbardziej skomplikowane zapytania do indeksu(<a href="http://framework.zend.com/manual/en/zend.search.lucene.best-practice.html#zend.search.lucene.best-practice.indexing-performance">zoptymalizowanego</a> oczywiście) trwały mi po 4 &#8211; 6 sekund i więcej! Niestety takie rozwiązanie nie może zostać przyjęte przez żaden chcący nawet szanować się serwis. Szukając zatem jakiegoś lepszego rozwiązania trafiłem na otwarto źródłowy serwer przeszukiwania <a href="http://sphinxsearch.com/">Sphinx</a>.</p>
<p>Sphinx jest w całości napisany w C++ i posiada wygodne <a href="http://sphinxsearch.com/docs/2.0.1/api-reference.html">API</a>, które jest dostępne w większości popularnych języków do tworzenia aplikacji internetowych(tylko takie mnie interesują na chwilę obecną <img src='http://www.chyl.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). W oficjalnym serwisie <a href="http://sphinxsearch.com/about/sphinx/">chwalą się twórcy osiągnięciami wydajnościowymi</a> swojego produktu i muszę przyznać, że są one naprawdę imponujące. Sam po wstępnych testach serwera(a teraz już w <a href="http://hipermarket-new.pl/search?q=Logitech">produkcji</a>) muszę przyznać, że tak piekielnie szybkiego rozwiązania do przeszukiwania to jeszcze nie miałem <img src='http://www.chyl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>Chyba wystarczająco dużo już posmarowałem Sphinxowi, czyli teraz czas przejść do konkretów &#8211; instalacji. Po przejściu w podstronę <a href="http://sphinxsearch.com/downloads/">pobierania</a> serwera widzimy, że mamy dostępnych kilka wersji serwera. Od razu co przyszło mi na myśl to pominięcie tych archaicznych wersji 0.XX i skupienie się na najnowszej, chociaż ciągle w fazie beta, wersji 2.XX. Widząc, że nie ma tam paczki dla Debiana(ani w repozytoriach) z najnowszą wersją doszedłem do wniosku, że sam sobie ją zbuduję, a co?! <img src='http://www.chyl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Proces produkcji takowej paczki jest bardzo prosty i sprowadza się do kilku ruchów klawiaturą w konsoli <img src='http://www.chyl.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>1. <a href="http://sphinxsearch.com/files/sphinx-2.0.1-beta.tar.gz">Pobieramy źródła</a> ze strony producenta do katalogu /usr/src i tam je rozpakowujemy:<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre># cd /usr/src<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></pre>
<pre># wget ﻿http://sphinxsearch.com/files/sphinx-2.0.1-beta.tar.gz<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></pre>
<pre># tar zxvf sphinx-2.0.1-beta.tar.gz</pre>
<p>2. Instalujemy wymagane paczki do budowania pakietów Debiana:<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre>﻿# apt-get install ﻿build-essential fakeroot dpkg-dev dh-make</pre>
<p>Wchodzimy następnie do katalogu ze źródłami i przygotowujemy je do zbudowania pakietu:<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre># cd <span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;">
sphinx-2.0.1-beta
</span><span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></pre>
<p><span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span><span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre style="display: inline !important;"># dh_make -f /usr/src/﻿ sphinx-2.0.1-beta.tar.gz</pre>
<p>&nbsp;</p>
<p>Tutaj na pytanie o tym paczki odpowiadamy &#8220;s&#8221;(single binary), przy następnym pytaniu wciskamy ENTER i powinien naszym oczom ukazać się komunikat, że przygotowanie źródeł oryginalnych do specyfiki źródeł debiana powiodły się.<span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<p>Opcja &#8220;-f&#8221; w tym przypadku mówi aplikacji <strong>dh_make</strong> aby jako archiwum źródeł oryginalnych wykorzystać te, które ściągnęliśmy na początku procesu budowy paczki.</p>
<p>Po przygotowaniu źródeł do budowy pakietu Debiana możemy wyedytować plik debian/control i wstawić tam swoje dane. Po czym przechodzimy do budowy paczki:</p>
<pre># dpkg-buildpackage -rfakeroot</pre>
<p>Jeśli budowanie pakietu jest przeprowadzane na maszynie wielordzeniowej lub wieloprocesorowej to można w tym miejscu użyć opcji -jX(np.: -j8), gdzie X to liczba rdzenie, wątków lub procesorów, które posiadamy. Opcja ta jest analogiczna do tej, którą można spotkać w programie <strong>make</strong>.</p>
<p>W ostatnim etapie budowania pakietu dostałem błąd z &#8220;uber testa&#8221;, kombinować za dużo mi się nie chciało i żeby się go w miarę szybko pozbyć edytowałem plik ubertest.php:</p>
<pre># vim text/ubertest.php</pre>
<p>i na samym początku skryptu dałem wyjście ze statusem 0</p>
<p><span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre style="display: inline !important;">1 &lt;?php</pre>
<p><span style="font-family: 'Times New Roman'; line-height: normal; font-size: medium;"> </span></p>
<pre style="display: inline !important;">2 <strong>exit(0);</strong></pre>
<p>&nbsp;</p>
<pre>3 //</pre>
<pre>4 // $Id: ubertest.php 2765 2011-04-08 13:07:32Z klirichek $</pre>
<pre>5 //</pre>
<pre>6</pre>
<pre>7 $sd_managed_searchd = false;</pre>
<pre>8 $sd_skip_indexer = false;</pre>
<pre>9 $g_ignore_weights = false;</pre>
<p>Po czym odpaliłem ponownie budowanie pakietu i tym razem proces budowania paczki przeszedł bez żadnych problemów do samego końca. W katalogu wyżej od teraz dostępny mam teraz przed momentem zbudowany pakiet z rozszerzeniem .deb, który przy pomocy dpkg można zainstalować i przejść do konfiguracji swojego serwera wyszukiwania.</p>
<p>Przykładem takiej konfiguracji może podzielę się kolejnym razem <img src='http://www.chyl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
Number of Views :616]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2011/06/sphinx-2-w-systemie-debian-budowanie-paczki-ze-zrodel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filesystem notification initialization error — contact your mail administrator (check for configuration errors with the FAM/Gamin library)</title>
		<link>http://www.chyl.org/2011/05/filesystem-notification-initialization-error-%e2%80%94-contact-your-mail-administrator-check-for-configuration-errors-with-the-famgamin-library/</link>
		<comments>http://www.chyl.org/2011/05/filesystem-notification-initialization-error-%e2%80%94-contact-your-mail-administrator-check-for-configuration-errors-with-the-famgamin-library/#comments</comments>
		<pubDate>Tue, 17 May 2011 08:01:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[courier]]></category>
		<category><![CDATA[fam]]></category>
		<category><![CDATA[gamin]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2820</guid>
		<description><![CDATA[Błąd Filesystem notification initialization error — contact your mail administrator (check for configuration errors with the FAM/Gamin library) pojawia się w programach pocztowych i najczęściej powodowany jest przez serwer pocztowy Courier. Aby go naprawić w systemach Debiano-podobnych należy zainstalować paczkę gamin # apt-get install gamin podczas instalacji w systemie Debian Squeezy manager pakietów usunie paczkę libfam0 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.chyl.org/wp-content/uploads/2011/05/courier-imap.png"><img class="alignright size-full wp-image-2825" title="courier-imap" src="http://www.chyl.org/wp-content/uploads/2011/05/courier-imap.png" alt="" width="163" height="62" /></a>Błąd <em>Filesystem notification initialization error — contact your mail administrator (check for configuration errors with the FAM/Gamin library)</em> pojawia się w programach pocztowych i najczęściej powodowany jest przez <a href="http://www.courier-mta.org/">serwer pocztowy Courier</a>. Aby go naprawić w systemach Debiano-podobnych należy zainstalować paczkę <strong>gamin</strong></p>
<pre># apt-get install gamin</pre>
<p>podczas instalacji w systemie Debian Squeezy manager pakietów usunie paczkę <strong>libfam0</strong> i zgłosi problem z zależnościami, który należy sobie olać.</p>
<pre>dpkg: libfam0: dependency problems, but removing anyway as you requested:  
 courier-base depends on libfam0. 
 courier-imap depends on libfam0.</pre>
<p>Po instalacji pozostaje zrestartować wszystkie serwisy couriera.</p>
<pre>for serwis in /etc/init.d/*courier*; do $serwis restart; done</pre>
<p>Od teraz błąd w programach pocztowych powinien przestać się pojawiać.</p>
Number of Views :822]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2011/05/filesystem-notification-initialization-error-%e2%80%94-contact-your-mail-administrator-check-for-configuration-errors-with-the-famgamin-library/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zmiana domyślnego mechanizmu składowania danych(storage engine) w serwerze MySQL</title>
		<link>http://www.chyl.org/2011/01/zmiana-domyslnego-mechanizmu-skladowania-danychstorage-engine-w-serwerze-mysql/</link>
		<comments>http://www.chyl.org/2011/01/zmiana-domyslnego-mechanizmu-skladowania-danychstorage-engine-w-serwerze-mysql/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 22:20:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[myisam]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[storage engine]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2588</guid>
		<description><![CDATA[Baza MySQL oferuje dostęp do kilku mechanizmów składowania danych(ang. storage engines). Domyślnie serwer ustawiony jest na myisam. Niestety nie pozwala on na wykorzystanie dobrodziejstw relacji dla przykładu(pełna lista cech każdego z mechanizmów w dokumentacji &#8211; Storage Engines v5.1). Tę konkretną funkcję udostępnia InnoDB. Narzędzia do modelowania typu Power Architect nie dają możliwości ustawienia mechanizmu składowania [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.chyl.org/wp-content/uploads/2011/01/Mysql_logo.png"><img class="alignleft size-full wp-image-2591" style="margin-left: 5px; margin-right: 5px;" title="Mysql_logo" src="http://www.chyl.org/wp-content/uploads/2011/01/Mysql_logo.png" alt="" width="291" height="152" /></a>Baza MySQL oferuje dostęp do kilku mechanizmów składowania danych(ang. storage engines). Domyślnie serwer ustawiony jest na myisam. Niestety nie pozwala on na wykorzystanie dobrodziejstw relacji dla przykładu(pełna lista cech każdego z mechanizmów w <a href="http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html">dokumentacji &#8211; Storage Engines</a> v5.1). Tę konkretną funkcję udostępnia <a href="http://www.innodb.com/products/innodb/">InnoDB</a>.</p>
<p>Narzędzia do modelowania typu <a href="http://www.sqlpower.ca/page/architect">Power Architect</a> nie dają możliwości ustawienia mechanizmu składowania dla tabel, więc jedynym rozwiązaniem jest zmiana domyślnego w konfiguracji serwera.</p>
<p>Całość zabiegu jest bardzo prosta bo wystarczy edytować główny plik konfiguracyjny <strong>my.cnf</strong>. Dla dystrybucji debiano-podobnych znajduje się on w <strong>/etc/mysql/my.cnf</strong>.</p>
<p>Zmiana domyślnych ustawień polega na dodaniu w sekcji <strong>[mysqld] </strong>opcji:</p>
<pre>default-storage-engine = innodb</pre>
<p>Aby wprowadzone zmiany zaczęły działać należy przeładować ustawienia serwera MySQL.</p>
Number of Views :967]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2011/01/zmiana-domyslnego-mechanizmu-skladowania-danychstorage-engine-w-serwerze-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przekierowanie permanentne w NGINX(301) &#8211; lub jak kto woli z www na host bez-www</title>
		<link>http://www.chyl.org/2010/12/przekierowanie-permanentne-w-nginx301-lub-jak-kto-woli-z-www-na-host-bez-www/</link>
		<comments>http://www.chyl.org/2010/12/przekierowanie-permanentne-w-nginx301-lub-jak-kto-woli-z-www-na-host-bez-www/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 20:25:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[nginx]]></category>
		<category><![CDATA[redirect 301]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2494</guid>
		<description><![CDATA[Sporo ostatnio dłubię przy nginx&#8217;ie i nie kryjąc swojej sympatii do tego serwera zacząłem dostawać pytania odnośnie jego konfiguracji. Tematem dosyć częstych pytań jakie się pojawiają są przekierowania permanentne(kod 301). Sprawa jest wyjaśniona w dokumentacji nginx&#8217;a, ale dla leniwych zdecydowałem się podać tutaj gotową konfigurację. W bloku server { &#8230; } należy umieścić if ($host [...]]]></description>
			<content:encoded><![CDATA[<p>Sporo ostatnio dłubię przy nginx&#8217;ie i nie kryjąc swojej sympatii do tego serwera zacząłem dostawać pytania odnośnie jego konfiguracji. Tematem dosyć częstych pytań jakie się pojawiają są przekierowania permanentne(kod 301). Sprawa jest wyjaśniona w <a href="http://wiki.nginx.org/HttpRewriteModule#rewrite">dokumentacji nginx&#8217;a</a>, ale dla leniwych zdecydowałem się podać tutaj gotową konfigurację.</p>
<p>W bloku server { &#8230; } należy umieścić</p>
<pre>if ($host = 'www.twojadomena.pl' ) {
   rewrite ^/(.*)$ http://twojadomena.pl/$1 permanent;
}</pre>
<p>Bardzo ważne jest umieszczenie dyrektywy permanent na końcu, ponieważ odpowiada ona za kod 301 w przekierowaniu. Dodatkowo należy pamiętać o umieszczeniu hosta z www w opcji <a href="http://wiki.nginx.org/HttpCoreModule#server_name">server_name</a>:</p>
<pre>server_name www.twojadomena.pl twojadomena.pl;</pre>
<p>Oczywiście można rozbić jedną sekcję server na dwie dzięki czemu uzyskamy bardziej przejrzystą konfigurację:</p>
<pre>server {
   listen 80;
   server_name www.twojadomena.pl;
   rewrite ^/(.*)$ http://twojadomena.pl/$1 permanent;
}</pre>
Number of Views :1225]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2010/12/przekierowanie-permanentne-w-nginx301-lub-jak-kto-woli-z-www-na-host-bez-www/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moduł dla apache2 mod_pagespeed od Google</title>
		<link>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/</link>
		<comments>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 19:21:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mod_pagespeed]]></category>
		<category><![CDATA[optymalizacja]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2388</guid>
		<description><![CDATA[Page Speed to zestaw narzędzi OpenSource od Google, które mają pomóc webmasterom w optymalizacji ich witryn. Ostatnio upubliczniony został moduł dla Apache2 o nazwie mod_pagespeed, który za pomocą szeregu filtrów modyfikuje odpowiedź mającą trafić do klienta. 1. Instalacja Na maszynie z już zainstalowanym apache2 instalacja mod_pagespeed z paczek d﻿ostępnych na stronie projektu jest banalnie prosta. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://goo.gl/kln47">Page Speed</a> to zestaw narzędzi OpenSource od Google, które mają pomóc webmasterom w optymalizacji ich witryn. Ostatnio upubliczniony został moduł dla Apache2 o nazwie mod_pagespeed, który za pomocą szeregu filtrów modyfikuje odpowiedź mającą trafić do klienta.</p>
<h2>1. Instalacja</h2>
<p>Na maszynie z już zainstalowanym apache2 instalacja mod_pagespeed z paczek <a href="http://goo.gl/KXSlE">d﻿ostępnych na stronie projektu</a> jest banalnie prosta. W sekcji mod_pagespeed odnajdujemy naszą platformę, w moim przypadku jest to Debian 64-bit, <a href="http://goo.gl/ZWkcU">pobieramy paczkę z modułem</a>, następnie otwieramy konsolę i z poziomu super-użytkownika przechodzimy do lokalizacji, gdzie zapisaliśmy pakiet. Instalujemy paczkę:</p>
<pre>socjopata# dpkg -i mod-pagespeed-beta_current_amd64.deb
Zaznaczenie poprzednio niezaznaczonego pakietu mod-pagespeed-beta.
(Odczytywanie bazy danych ... 212669 files and directories currently installed.)
Rozpakowanie mod-pagespeed-beta (z mod-pagespeed-beta_current_amd64.deb) ...
Konfigurowanie mod-pagespeed-beta (0.9.1.1-r171) ...
Enabling module pagespeed.
Run '/etc/init.d/apache2 restart' to activate new configuration!</pre>
<p>Jak widać w powyższym raporcie moduł został poprawnie zainstalowany i można go aktywować przez ponowne uruchomienie serwera apache. Można tego dokonać również przez jego przeładowanie:</p>
<pre>/etc/init.d/apache2 reload</pre>
<p>Gdyby wystąpiły problemy z niespełnionymi zależnościami dla modułu należy je uzupełnić:</p>
<pre>apt-get -f install</pre>
<h2>2. Konfiguracja</h2>
<p>Jednak przed przeładowaniem serwera zerknijmy do konfiguracji modułu, znajduje się ona w pliku ﻿<strong>/etc/apache2/mods-available/pagespeed.conf</strong>. Każda dyrektywa konfiguracyjna jest szczegółowo opisana w pliku konfiguracyjnym, więc nie ma sensu rozwodzić się nad nimi, aczkolwiek kilka z nich jest bardzo istotnych i należy im się przyjrzeć. Pierwszą jest</p>
<pre>ModPagespeedDisableFilters</pre>
<p>Ta dyrektywa globalnie wyłącza pewne filtry. Zdarzyć się może sytuacja, gdzie pewien filtr jest filtrem wysokiego ryzyka i psuje odpowiedź wysyłaną do klienta w takim stopniu, że nie jest możliwe poprawne wyświetlenie zawartości strony przez przeglądarkę, w takim wypadku należy globalnie wyłączyć filtr i spokojnie czekać na poprawki do niego.</p>
<p>Drugą z bardzo istotnych instrukcji konfiguracyjnych jest:</p>
<pre>ModPagespeedEnableFilters</pre>
<p>Jak w przypadku wyżej po dyrektywie podajemy po przecinkach filtry, które w tym wypadku mają zostać włączone. Dla przykładu, aktywacja filtra collapse_whitespace będzie wyglądała następująco:</p>
<pre>ModPagespeedEnableFilters collapse_whitespace</pre>
<p>Aktywacja kilku filtrów wygląda następująco:</p>
<pre>ModPagespeedEnableFilters collapse_whitespace,elide_attributes</pre>
<p>Resztę ustawień spokojnie można pozostawić w domyślnej formie.</p>
<h2>3. Wnioski</h2>
<p>Przy włączonych filtrach collapse_whitespace, elide_attributes, remove_comments, combine_css, rewrite_javascript, move_css_to_head, remove_quotes znacząco spada ilość danych transferowanych z serwera do przeglądarki co na przykładzie kilku wywołań prezentuje tabela:</p>
<table cellspacing="0" cellpadding="4" width="100%">
<colgroup>
<col width="128*"></col>
<col width="128*"></col>
</colgroup>
<tbody>
<tr valign="TOP">
<td width="50%">Bez mod_pagespeed</td>
<td width="50%">Włączony mod_pagespeed</td>
</tr>
<tr valign="TOP">
<td width="50%">15,73</td>
<td width="50%">12,06</td>
</tr>
<tr valign="TOP">
<td width="50%">14,52</td>
<td width="50%">12,05</td>
</tr>
<tr valign="TOP">
<td width="50%">14,35</td>
<td width="50%">11,56</td>
</tr>
<tr valign="TOP">
<td width="50%">14,36</td>
<td width="50%">11,72</td>
</tr>
<tr valign="TOP">
<td width="50%">22,83</td>
<td width="50%">17,21</td>
</tr>
<tr valign="TOP">
<td width="50%">23,00</td>
<td width="50%">17,03</td>
</tr>
</tbody>
</table>
<p>Oczywiście wszystko zależy od tego w jaki sposób jest generowany HTML przez aplikację. W moim przypadku jest to ładnie sformatowany kod, także zysk na ilości danych jest spory.</p>
<p>Mod_pagespeed posiada również kilka filtrów do zmniejszenia zapytań o pliki css, js i grafiki. Są nimi odpowiednio <a href="http://goo.gl/99JZG">Combine CSS</a>, <a href="http://goo.gl/yD4Ep">Inline JavaScript</a> i <a href="http://goo.gl/i5U4y">Optimize Images</a>. Na końcu każdej podstrony dokumentacji filtra znajduje się informacja o ryzyku stosowania, przy czym większość filtrów wykazuje małe ryzyko.</p>
<p>Na końcu pliku konfiguracyjnego znajduje się sekcja Location /mod_pagespeed_statistics, gdzie znajdują się statystyki modułu. W tym miejscu możemy podejrzeć statystyki skuteczności modułu w naszym przypadku.</p>
<p>Na zakończenie kilka słów o tym jak bardzo moduł spowalnia obsługę żądań. Kilka poglądowych wyników bez włączonego modułu:</p>
<pre>127.0.0.1 [11/Nov/2010:19:54:44 +0100] 119305 GET / HTTP/1.1 4076
127.0.0.1 [11/Nov/2010:19:54:48 +0100] 92647 GET /oferta-uslugowa/obsluga-techniczna-konferencji HTTP/1.1 4441
127.0.0.1 [11/Nov/2010:19:54:49 +0100] 77898 GET /oferta-uslugowa/obsluga-techniczna-eventow HTTP/1.1 4286
127.0.0.1 [11/Nov/2010:19:54:51 +0100] 93597 GET /oferta-uslugowa/wypozyczenia-sprzetu-multimedialnego HTTP/1.1 4237
127.0.0.1 [11/Nov/2010:19:54:53 +0100] 73639 GET /oferta-uslugowa/projektowanie-sal HTTP/1.1 3631
127.0.0.1 [11/Nov/2010:19:54:57 +0100] 101097 GET /oferta-handlowa/samsung HTTP/1.1 4560
127.0.0.1 [11/Nov/2010:19:54:59 +0100] 78023 GET /produkt/monitor-p42h-2 HTTP/1.1 4411
127.0.0.1 [11/Nov/2010:19:55:03 +0100] 381492 GET /firma/kontakt HTTP/1.1 4469</pre>
<div>i dla włączonego modułu pagespeed:</div>
<div>
<pre>127.0.0.1 [11/Nov/2010:19:57:10 +0100] 100126 GET / HTTP/1.1 3526
127.0.0.1 [11/Nov/2010:19:57:15 +0100] 87732 GET /oferta-uslugowa/obsluga-techniczna-konferencji HTTP/1.1 4192
127.0.0.1 [11/Nov/2010:19:57:18 +0100] 82464 GET /oferta-uslugowa/obsluga-techniczna-eventow HTTP/1.1 3996
127.0.0.1 [11/Nov/2010:19:57:19 +0100] 80766 GET /oferta-uslugowa/wypozyczenia-sprzetu-multimedialnego HTTP/1.1 4038
127.0.0.1 [11/Nov/2010:19:57:21 +0100] 87320 GET /oferta-uslugowa/projektowanie-sal HTTP/1.1 3515
127.0.0.1 [11/Nov/2010:19:57:26 +0100] 97538 GET /oferta-handlowa/samsung HTTP/1.1 4351
127.0.0.1 [11/Nov/2010:19:57:29 +0100] 83227 GET /produkt/monitor-p42h-2 HTTP/1.1 4278
127.0.0.1 [11/Nov/2010:19:57:34 +0100] 112691 GET /firma/kontakt HTTP/1.1 4277</pre>
</div>
<p>Istotna jest kolumna przed metodą wywołania(GET). Podane czasy są w milisekundach. Testy nie były prowadzone na maszynie produkcyjnej.</p>
<div>
<p>Wniosek z moich pomiarów, powyżej tylko część wyników, jest taki, że moduł nie wpływa w znaczący sposób na czas generowania odpowiedzi na żądanie. Mogę pokusić się nawet o stwierdzenie, że nie ma żadnego wpływu, przy znaczącej redukcji ilości danych, które są wysyłane z serwera.</p>
<p>Przy optymalizacji witryny jeśli weźmiemy wiele drobnych szczegółów i zyskując na każdym kilka kilobajtów lub milisekund szybko będziemy mogli się przekonać, że prostymi krokami zredukowaliśmy ruch oraz zmniejszyliśmy zauważalne opóźnienie przy wczytywaniu się stron w naszej aplikacji. 100 ms jest zauważalnym dla człowieka opóźnieniem, każde kolejne milisekundy coraz bardziej irytują, moim zdaniem trzeba dążyć do tego, aby mieć jak najmniej wzburzonych użytkowników <img src='http://www.chyl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>
Number of Views :1936]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aktualizacja Google Chrome do wersji 6.0.472.11 dev</title>
		<link>http://www.chyl.org/2010/07/aktualizacja-google-chrome-do-wersji-6-0-472-11-dev/</link>
		<comments>http://www.chyl.org/2010/07/aktualizacja-google-chrome-do-wersji-6-0-472-11-dev/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 18:11:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[/dev/random]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[6.0.472.11 dev]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[narzędzia dla programistów]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2085</guid>
		<description><![CDATA[Pojawiła się aktualizacja do przeglądarki Google Chrome (wersja 6.0.472.11 dev), w której poprawionych zostało sporo błędów. Dla mnie najważniejsza poprawka to przywrócenia poprawnego działania narzędzia dla programistów. We wcześniejszej wersji nie działał podgląd elementów strony (zbadaj element). Ciągle nie działa podgląd dokumentów PDF (w Linuksie i Macu) to jednak da się to obejść importując dokument do [...]]]></description>
			<content:encoded><![CDATA[<p>Pojawiła się aktualizacja do przeglądarki <a href="http://www.google.pl/chrome/">Google Chrome</a> (wersja 6.0.472.11 dev), w której poprawionych zostało sporo błędów. Dla mnie najważniejsza poprawka to przywrócenia poprawnego działania narzędzia dla programistów. We wcześniejszej wersji nie działał podgląd elementów strony (zbadaj element).</p>
<p>Ciągle nie działa <a href="http://code.google.com/p/chromium/issues/detail?id=49702">podgląd dokumentów PDF</a> (w Linuksie i Macu) to jednak da się to obejść importując dokument do podglądu w Google Docs. Wystarczy dokleić adres dokumentu PDF do ciągu:</p>
<pre>http://docs.google.com/viewer?url=</pre>
<p>i żądany plik zostanie wyświetlony w narzędziu potentata z Mountain View.</p>
Number of Views :521]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2010/07/aktualizacja-google-chrome-do-wersji-6-0-472-11-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wine i uTorrent 1.8.5</title>
		<link>http://www.chyl.org/2010/07/wine-i-utorrent-1-8-5/</link>
		<comments>http://www.chyl.org/2010/07/wine-i-utorrent-1-8-5/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 10:00:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[utorrent]]></category>
		<category><![CDATA[utorrent 1.85]]></category>
		<category><![CDATA[wine]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2022</guid>
		<description><![CDATA[Ostatnimi dniami zadzwonił do mnie przyjaciel i poprosił mnie o odpalenie uTorrenta 1.8.5 na jego serwerze shellowym. Aktualna wersja tego oprogramowania to 2.0.2, a że jego współpraca z wine nie układa się za dobrze, trzeba było podmienić wersje. Okazało się to zadaniem nieco trudniejszym niż mogłoby się wydawać, więc sporządziłem krótką instrukcję postępowania i zamieszczam [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnimi dniami zadzwonił do mnie przyjaciel i poprosił mnie o odpalenie uTorrenta 1.8.5 na jego serwerze shellowym. Aktualna wersja tego oprogramowania to 2.0.2, a że jego współpraca z wine nie układa się za dobrze, trzeba było podmienić wersje. Okazało się to zadaniem nieco trudniejszym niż mogłoby się wydawać, więc sporządziłem krótką instrukcję postępowania i zamieszczam ją poniżej. Myślę, że podmiana z innych numerków będzie przebiegała analogicznie.</p>
<p>Jak za mocno nie wk****ć się podczas próby odpalenia uTorrenta 1.8.5 na wine?</p>
<p>1. Idziemy do kolegi, który ma korzenie w carskiej rosji i prosimy go<br />
o kanke z bimbrem.<br />
2. Po drodze do domu kupujemy trochę boczku (ze skórką &#8211; przyda się na<br />
przygładzenie włosów) i owijamy go w gazetę.<br />
3. Siadamy przed komputerem i logujemy się na shella.<br />
4. Instalujemy wersję aktualną 2.0.2.<br />
5. Pociągamy z lubością pierwszy łyk bimbru.<br />
6. Wyglądamy przez okno czy nie czai się gdzieś policja (bimber jest nielegalny)<br />
7. Pociągamy kolejny łyk bimbru i zagryzamy boczkiem<br />
8. Kopiujemy katalog<br />
/home/NAZWA_TWOJEGO_UZYTKOWNIKA/.wine/drive_c/windows/profiles/NAZWA_TWOJEGO_UZYTKOWNIKA/Dane<br />
aplikacji/uTorrent do /home/NAZWA_TWOJEGO_UZYTKOWNIKA/.wine/drive_c/Program Files/<br />
9. Pijemy siwuchę<br />
10. Ściągamy uTorrenta 1.8.5 i jeśli jesteśmy jeszcze w stanie widzieć<br />
cokolwiek pijemy resztę bimbru<br />
11 Kopiujemy ściągnięty (nie instalujemy!!!) utorrent.exe do Program<br />
Files/uTorrent i zmieniamy mu nazwę na uTorrent.exe (ja zmieniłem i od<br />
razu zaczęło działać, nie wiem czy bez tego będzie działać, zwykła<br />
logika, producent dał mu nazwę uTorrent to pewnie będzie działać pod<br />
nazwą uTorrent.exe). Teraz uTorrent działa w wersji 1.8.5 &#8211; jak<br />
zresztą widać.<br />
12. Księżycówka się skończyła, więc można odkapslować sobie piwo (np.<br />
Żywiec) i je wypić. Dobranoc!</p>
Number of Views :341]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2010/07/wine-i-utorrent-1-8-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian 6.0 Codename: Squeeze</title>
		<link>http://www.chyl.org/2009/11/debian-6-0-codename-squeeze/</link>
		<comments>http://www.chyl.org/2009/11/debian-6-0-codename-squeeze/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 22:51:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[debconf]]></category>
		<category><![CDATA[debian 6.0]]></category>
		<category><![CDATA[squeeze]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=1160</guid>
		<description><![CDATA[Jak donosi ogłoszenie na developerskiej liście dyskusyjnej Debiana w marcu 2010 roku ma zostać zamrożona dystrybucja testowa i przed konferencją DebConf ma wyjść nowa stabilna wersja Debiana. Manager projektu Steve McIntyre chce zakończyć proces nowego wydania przed konferencją, aby mieć wolną głowę, otwartą jedynie na przyszłość dystrybucji. It would be nice to have things done [...]]]></description>
			<content:encoded><![CDATA[<p>Jak donosi ogłoszenie na <a href="http://lists.debian.org/debian-devel-announce/2009/10/msg00002.html" target="_blank">developerskiej liście dyskusyjnej Debiana</a> w marcu 2010 roku ma zostać zamrożona dystrybucja testowa i przed konferencją <a href="http://www.debconf.org/" target="_blank">DebConf</a> ma wyjść nowa stabilna wersja Debiana.</p>
<p>Manager projektu Steve McIntyre chce zakończyć proces nowego wydania przed konferencją, aby mieć wolną głowę, otwartą jedynie na przyszłość dystrybucji.</p>
<blockquote><p>It would be nice to have things done before we head off to New York for DebConf in July, so that we&#8217;re free of the release work while we discuss future plans</p></blockquote>
<p><a href="http://www.itwire.com/content/view/29541/1090/" target="_blank">ITWire</a></p>
Number of Views :297]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2009/11/debian-6-0-codename-squeeze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now listening &#8211; Amarok + Pidgin</title>
		<link>http://www.chyl.org/2009/07/now-listening-amarok-pidgin/</link>
		<comments>http://www.chyl.org/2009/07/now-listening-amarok-pidgin/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 15:53:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pidgin]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=721</guid>
		<description><![CDATA[Poniżej opis jak spiąć Amaroka z Pidginem, aby pokazywał czego słuchamy w statusie. Instalujemy amaroka: # apt-get install amarok Instalujemy plugina do pidgina pidgin-musictracker(unstable), w tym celu udajemy się na http://packages.debian.org/sid/pidgin-musictracker wybieramy mirrora ściągamy paczkę deb, uzupełniamy zależności i dajemy(aktualna wersja) # dpkg -i pidgin-musictracker_0.4.18-1_amd64.deb Jeśli mamy sida to wystarczy zainstalować pakiet prosto z repozytoriów: [...]]]></description>
			<content:encoded><![CDATA[<p>Poniżej opis jak spiąć Amaroka z Pidginem, aby pokazywał czego słuchamy w statusie.</p>
<p>Instalujemy amaroka:</p>
<p><code># apt-get install amarok</code></p>
<p>Instalujemy plugina do pidgina <a href="http://packages.debian.org/sid/pidgin-musictracker">pidgin-musictracker</a>(unstable), w tym celu udajemy się na <a href="http://packages.debian.org/sid/pidgin-musictracker">http://packages.debian.org/sid/pidgin-musictracker</a> wybieramy mirrora ściągamy paczkę deb, uzupełniamy zależności i dajemy(aktualna wersja)</p>
<p><code># dpkg -i pidgin-musictracker_0.4.18-1_amd64.deb</code></p>
<p>Jeśli mamy sida to wystarczy zainstalować pakiet prosto z repozytoriów:</p>
<p><code># apt-get install pidgin-musictracker</code></p>
<p>odpalamy Pidgina -&gt; Plugins szukamy plugina musictracker uaktywniamy go i przechodzimy do konfiguracji, tam wybieramy format opisu close close i gotowe. Opisy podczas słuchania muzyki w Amaroku będą od tego momentu same zmieniały.</p>
Number of Views :253]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2009/07/now-listening-amarok-pidgin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Błąd przy uruchamianiu MOC (music on console)</title>
		<link>http://www.chyl.org/2009/05/blad-przy-uruchamianiu-moc-music-on-console/</link>
		<comments>http://www.chyl.org/2009/05/blad-przy-uruchamianiu-moc-music-on-console/#comments</comments>
		<pubDate>Wed, 20 May 2009 12:29:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fatal error]]></category>
		<category><![CDATA[moc]]></category>
		<category><![CDATA[mocp]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=570</guid>
		<description><![CDATA[Podczas uruchamiania MOC(music on console) otrzymywałem następujący błąd: FATAL_ERROR: Can't receive value from the server. Rozwiązaniem problemu okazało się wyczyszczenie ~/.moc/cache (przy okazji usunąłem sobie również playlistę rm -fr ~/.moc/cache/* Przy ponownym uruchomieniu (mocp) MOC wystartował normalnie. Number of Views :359]]></description>
			<content:encoded><![CDATA[<p>Podczas uruchamiania MOC(music on console) otrzymywałem następujący błąd:<br />
<code>FATAL_ERROR: Can't receive value from the server.</code></p>
<p>Rozwiązaniem problemu okazało się wyczyszczenie ~/.moc/cache (przy okazji usunąłem sobie również playlistę <img src='http://www.chyl.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>rm -fr ~/.moc/cache/*</pre>
<p>Przy ponownym uruchomieniu (mocp) MOC wystartował normalnie.</p>
Number of Views :359]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2009/05/blad-przy-uruchamianiu-moc-music-on-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

