<?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>Tomasz Knaur</title>
	<atom:link href="http://knaur.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://knaur.net</link>
	<description>strona domowa - blog - itepe</description>
	<lastBuildDate>Sun, 01 May 2011 20:27:42 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Refleksje i cuksy cz. 7</title>
		<link>http://knaur.net/2011/05/01/refleksje-i-cuksy-cz-7/</link>
		<comments>http://knaur.net/2011/05/01/refleksje-i-cuksy-cz-7/#comments</comments>
		<pubDate>Sun, 01 May 2011 20:18:58 +0000</pubDate>
		<dc:creator>tomek</dc:creator>
				<category><![CDATA[trelleimorelle]]></category>
		<category><![CDATA[cuksy]]></category>

		<guid isPermaLink="false">http://knaur.net/?p=548</guid>
		<description><![CDATA[Nowe możliwości Rozmowa dwóch węży: - Wiesz Raf, odkąd poszedłem na studia czuję, że się rozwijam&#8230; Prognoza pogody &#8230; w ciągu dnia prędkość wiatru w podrywach może dochodzić do 80 km/h. W nocy spodziewamy się przelotnych opadów dreszczu szczególnie w dzielnicach centralnych, niewykluczone również poranne zamdlenia&#8230; Not responding - Co zrobić jeśli komputer przestanie odpowiadać? [...]]]></description>
			<content:encoded><![CDATA[<p><em>Nowe możliwości</em></p>
<p>Rozmowa dwóch węży:<br />
- Wiesz Raf, odkąd poszedłem na studia czuję, że się rozwijam&#8230;</p>
<p><em>Prognoza pogody</em></p>
<p> &#8230; w ciągu dnia prędkość wiatru w podrywach może dochodzić do 80 km/h. W nocy spodziewamy się przelotnych opadów dreszczu szczególnie w dzielnicach centralnych, niewykluczone również poranne zamdlenia&#8230;</p>
<p><em>Not responding</em></p>
<p>- Co zrobić jeśli komputer przestanie odpowiadać?<br />
- Przede wszystkim należy przestać do niego mówić.</p>
]]></content:encoded>
			<wfw:commentRss>http://knaur.net/2011/05/01/refleksje-i-cuksy-cz-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O Head JS słów kilka.</title>
		<link>http://knaur.net/2011/02/06/o-head-js-slow-kilka/</link>
		<comments>http://knaur.net/2011/02/06/o-head-js-slow-kilka/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 08:59:22 +0000</pubDate>
		<dc:creator>tomek</dc:creator>
				<category><![CDATA[HTML/CSS/JS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[loader]]></category>

		<guid isPermaLink="false">http://knaur.net/?p=537</guid>
		<description><![CDATA[Od czasu JavaScriptowego renesansu, chwili gdy światło dzienne ujrzał AJAX, kolejne frameworki oraz pluginy wyrastają jak grzyby po deszczu. Head JS, to na pierwszy rzut oka kolejna biblioteka. Jednak autorzy przekonują, że powinna być jedyną biblioteką dołączoną w sekcji head każdego serwisu. Dlaczego? Head JS to przede wszystkim loader bibliotek JS działający równolegle z procesem [...]]]></description>
			<content:encoded><![CDATA[<p>Od czasu JavaScriptowego renesansu, chwili gdy światło dzienne ujrzał AJAX, kolejne frameworki oraz pluginy wyrastają jak grzyby po deszczu. Head JS, to na pierwszy rzut oka kolejna biblioteka. Jednak autorzy przekonują, że powinna być jedyną biblioteką dołączoną w sekcji head każdego serwisu. Dlaczego?<br />
Head JS to przede wszystkim loader bibliotek JS działający równolegle z procesem ładowania strony. Różnica? Standardowo zewnętrzne pliki JS wczytywane są sekwencyjnie jeden po drugim, strona zanim zostanie wyrenderowana musi czekać na załadowanie  każdej  biblioteki po kolei. Head JS pozwala w pełni organizować ten proces. Potrafi m.in. ładować je  tak, jak elementy graficzne,  dzięki czemu cały nasz serwis nie jest blokowany i uruchamia się szybciej.<br />
Dodatkowo HeadJS oferuje: detekcję rozdzielczości ekranu, dodanie obsługi tagów ze specyfikacji HTML5, routing CSS i wiele innych funkcjonalności.</p>
<p>Podsumowując Head JS to jedna z najciekawszych bibliotek, jakie pojawiły się w ostatnim czasie. Potrafi znacząco przyśpieszyć czas ładowania strony. Na pewno będę z niej korzystał w swoich projektach.</p>
<p>Licencja: MIT<br />
Strona domowa: <a href="http://headjs.com/" title=""> Head JS </a></p>
]]></content:encoded>
			<wfw:commentRss>http://knaur.net/2011/02/06/o-head-js-slow-kilka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Java EE] Jak usuwać białe znaki z plików widoków?</title>
		<link>http://knaur.net/2011/01/20/java-ee-jak-usuwac-biale-znaki-z-plikow-widokow/</link>
		<comments>http://knaur.net/2011/01/20/java-ee-jak-usuwac-biale-znaki-z-plikow-widokow/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 21:07:35 +0000</pubDate>
		<dc:creator>tomek</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ant]]></category>

		<guid isPermaLink="false">http://knaur.net/?p=528</guid>
		<description><![CDATA[Zadanie na dzisiejszy wieczór brzmi dość trywialnie. Znaleźć sposób na usuwanie białych znaków z plików widoków. Czemu to ma służyć? Przede wszystkim zmniejszeniu rozmiarów plików, czyli w najogólniejszym skrócie szybszemu ładowaniu stron. Pierwsza myśl to skorzystanie z dyrektywy trimSpaces serwera Tomcat. Niestety włączenie tej opcji spowoduje usunięcie białych znaków tylko w obrębie tagów JSTL, jeśli [...]]]></description>
			<content:encoded><![CDATA[<p>Zadanie na dzisiejszy wieczór brzmi dość trywialnie. Znaleźć sposób na usuwanie białych znaków z plików widoków. Czemu to ma służyć? Przede wszystkim zmniejszeniu rozmiarów plików, czyli w najogólniejszym skrócie szybszemu ładowaniu stron.</p>
<p>Pierwsza myśl to skorzystanie z dyrektywy <em>trimSpaces</em> serwera Tomcat. Niestety włączenie tej opcji spowoduje usunięcie białych znaków tylko w obrębie tagów JSTL, jeśli w ogóle <a href="http://stackoverflow.com/questions/208736/strip-whitespace-from-jsp-output">zadziała</a>&#8230;</p>
<p>Można również skorzystać z odpowiednich filtrów do serwletów np. <a href="http://jtidy.sourceforge.net/multiproject/jtidyservlet/filter.html">JTidy</a></p>
<p>Ja chciałbym przedstawić rozwiązanie z wykorzystaniem Ant-a i taska: <a href="http://ant.apache.org/manual/Tasks/replaceregexp.html">replaceregexp</a> &#8211; służącego do zamiany znaków w pliku lub zbiorze, za pomocą wyrażeń regularnych.</p>
<p>Po kilkunastu minutach przeglądania dokumentacji Anta, dodałem do swojego pliku <em>build.xml</em> nowe zadanie:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;trim&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;echo</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;trim!&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;xhtml.fileset&quot;</span> <span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;${build.web.dir}&quot;</span> <span style="color: #000066;">includes</span>=<span style="color: #ff0000;">&quot;**/*.xhtml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;replaceregexp</span> <span style="color: #000066;">match</span>=<span style="color: #ff0000;">&quot;[\n\r]&quot;</span> <span style="color: #000066;">replace</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">flags</span>=<span style="color: #ff0000;">&quot;g&quot;</span> <span style="color: #000066;">byline</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;xhtml.fileset&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/replaceregexp<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;replaceregexp</span> <span style="color: #000066;">match</span>=<span style="color: #ff0000;">&quot;[\s+]&quot;</span> <span style="color: #000066;">replace</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">flags</span>=<span style="color: #ff0000;">&quot;g&quot;</span> <span style="color: #000066;">byline</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;fileset</span> <span style="color: #000066;">refid</span>=<span style="color: #ff0000;">&quot;xhtml.fileset&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/replaceregexp<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Na początku definiujemy zbiór plików, na którego elementach będziemy wykonywać operacje. Potem dwukrotnie korzystamy z  <em>replaceregexp</em> z odpowiednimi wyrażeniami regularnymi na określonym wcześniej zbiorze.</p>
<p>Jakie są zalety powyższego rozwiązania? Nie wymaga instalacji żadnych dodatkowych bibliotek. Po drugie nie angażujemy do tej operacji serwera. Po trzecie usuwanie znaków wykonujemy raz w momencie deployowania aplikacji na serwer. Na koniec oczywistość: nasze oryginalne pliki pozostają bez zmian.</p>
<p>PS. Regułki wyrażenia regularnego mogą nie być wyjątkowo optymalne, zależało mi przede wszystkim pokazaniu idei rozwiązania problemu.</p>
]]></content:encoded>
			<wfw:commentRss>http://knaur.net/2011/01/20/java-ee-jak-usuwac-biale-znaki-z-plikow-widokow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refleksje i cuksy cz. 6</title>
		<link>http://knaur.net/2011/01/15/refleksje-i-cuksy-cz-6/</link>
		<comments>http://knaur.net/2011/01/15/refleksje-i-cuksy-cz-6/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 21:14:52 +0000</pubDate>
		<dc:creator>tomek</dc:creator>
				<category><![CDATA[trelleimorelle]]></category>
		<category><![CDATA[cuksy]]></category>

		<guid isPermaLink="false">http://knaur.net/?p=517</guid>
		<description><![CDATA[Znane i&#8230; - Znam Springa, Seama, Play, Wicket, Strutsy&#8230; - A co Pan lubi robić? - Poznawać, mam nawet konto na Facebooku. Szał wirtualizacji - Ten model, który Pan wybrał posiada ekran 7 cali, rozdzielczość 1024 x 600 pikseli, aparat 5 MP, GPS, Wi-Fi, dołączone bogate oprogramowanie m.in. integracja z serwisami społecznościowymi, dwurdzeniowy procesor ARM&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Znane i&#8230;</em></p>
<p>- Znam Springa, Seama, Play, Wicket, Strutsy&#8230;<br />
- A co Pan lubi robić?<br />
- Poznawać, mam nawet konto na Facebooku.</p>
<p><em>Szał wirtualizacji</em></p>
<p>-  Ten model, który Pan wybrał  posiada ekran 7 cali, rozdzielczość  1024 x 600 pikseli, aparat 5 MP, GPS, Wi-Fi, dołączone bogate oprogramowanie m.in. integracja z serwisami społecznościowymi, dwurdzeniowy procesor ARM&#8230;<br />
- Dwurdzeniowy  procesor? To znaczy, że będę mógł na nim uruchomić wirtualną maszynę?<br />
- Hę?</p>
<p><em>Przesłuchanie 2.0</em></p>
<p>- Zatem twierdzi Pan, że nie było Pana na ulicy Południowej dnia 28.12.2010 roku, około godziny 22, czyli w czasie gdy popełniono morderstwo?<br />
- Tak.<br />
- Masz słabe alibi, przyciśniemy Cię mocniej i będziesz ćwierkał jak Twitter!<br />
- Panowie przesłuchujecie mnie już piątą godzinę. Zatem jeszcze raz powtórzę. Byłem wtedy na spotkaniu mojej szkoły, stosowne informacje znajdziecie na Naszej &#8211; klasie. Możecie również wejść na mój profil na Facebooku. Tam także znajdziecie wpis o tym spotkaniu wraz z linkiem do Google Maps, z lokalizacją restauracji oraz linki do filmików na YouTubie z tego eventu&#8230;</p>
<p><small>W XXI w. Sherlock Holmes prawdopodobnie nie musiałby wychodzić z domu a Dr Watson byłby specjalistą od szerokopasmowego Internetu.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://knaur.net/2011/01/15/refleksje-i-cuksy-cz-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dla kogo piszesz kod?</title>
		<link>http://knaur.net/2011/01/02/dla-kogo-piszesz-ten-kod/</link>
		<comments>http://knaur.net/2011/01/02/dla-kogo-piszesz-ten-kod/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 23:31:55 +0000</pubDate>
		<dc:creator>tomek</dc:creator>
				<category><![CDATA[informatyka itepe]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[teoria]]></category>

		<guid isPermaLink="false">http://knaur.net/?p=503</guid>
		<description><![CDATA[Wszyscy jesteśmy programistami, wszyscy jesteśmy partaczami &#8211; ja także. Uwielbiamy chodzić na skróty, stosować najprostsze rozwiązania, które wyglądają dorzecznie tylko w naszym, własnym rozumku. Wszyscy również ocieramy się o paleontologię, gdy czasem zajmujemy się dinozaurem, który dogorywa na OIOM-ie, zafascynowani &#8220;Parkiem jurajskim&#8221; liczymy na kolejny remake. Wszyscy kłamią a w szczególności programiści. Ile razy powtarzaliście [...]]]></description>
			<content:encoded><![CDATA[<p>Wszyscy jesteśmy programistami, wszyscy jesteśmy partaczami &#8211; ja także. Uwielbiamy chodzić na skróty, stosować najprostsze rozwiązania, które wyglądają dorzecznie tylko w naszym, własnym rozumku.<br />
Wszyscy również ocieramy się o paleontologię, gdy czasem zajmujemy się dinozaurem, który dogorywa na OIOM-ie, zafascynowani  &#8220;Parkiem jurajskim&#8221; liczymy na kolejny remake.<br />
Wszyscy kłamią a w szczególności programiści.  Ile razy powtarzaliście sobie, że będziecie pisać komentarze w kodzie, robić wcięcia, pisać dokumentację? I co? Piekło zamaraza, Bill Gates instaluje Debiana na swoim downloaderze torrentów a dokumentacji projektu dalej nie widać. </p>
<p>Czasem jednak piłka przelatuje na drugą stronę siatki. Powstało zatem oficjalne wytłumaczenie wszelkiego zła, które trafiło do projektu: &#8220;Brak czasu&#8221;. Całe szczęście dla ludzkości, że na takie wytłumaczenie nie wpadli piekarze, lekarze, badź inżynierowie projektujący samochody. Wyobrażacie sobie taką scenę: idziecie do salonu odebrać wasze nowe, piękne auto. Wsiadacie do niego, zapinacie pasy, uruchamiacie silnik, kręcicie kierownicą lecz koła nie skręcają&#8230;Pewnie jakiś inżynier śpieszył się na deadline.</p>
<p>Zdarzają się czasem chwile, gdy czytanie czyjegoś kodu kojarzy mi się z słuchaniem trash metalu na kacu. Przy odrobinie koncentracji wychwycę melodię, ale i tak przeważa łomot. Kac jak powszechnie wiadomo  skłania do refleksji. Coraz częściej nurtuje mnie pytanie dla kogo programiści piszą swój kod. Mam kilka koncepcji, oto one:</p>
<ul>
<li>Dla klienta &#8211;  w końcu to on decyduje co chce i oczekuje od nas realizacji swojej wizji. Co jeszcze ważniejsze na końcu płaci. Nie interesuje go jednak, czy nasz kod jest w pełni obiektowy, czy obiekty spełniają zasadę <em> Low Coupling</em>  a kod źródłowy posiada komentarze. Ma działać i już, po to przecież zaangażował profesjonalistów, prawda?</li>
<li>Dla siebie &#8211;  istnieje na tym świecie grupa zapaleńców, którzy codziennie robią coś super i prawdopodobnie tylko oni sami o tym wiedzą. Wszystko, co robią wygląda dorzecznie tylko w ich rozumku. Szkoda tylko, że czasem odchodzą z pracy a wraz z nimi kilometry doc-a zapisanego gdzieś pod czapką.</li>
<li>Dla innych programistów &#8211; kod programu, to taka ciągle niedokończona powieść, serial z ciągłymi zamówieniami na kolejne sezony. Do napisania kolejnych odcinków, wątków siadają różni autorzy. Pierwszą rzeczą, której powinni oczekiwać  &#8211; to wskazówki od poprzedników, choćby dlatego, aby nie ożenić brata z matką żony, teścia. (jakoś tak)
</li>
</ul>
<p>Kod źródłowy piszą programiści dla programistów pamiętajmy o tym. Aby nam wszystkim było łatwiej  powstają standardy, stworzono katalog wzorców projektowych, czy zalecenia odnośnie formatowania kodu. To w żadnym wypadku nie jest sztuka dla sztuki.</p>
<p>A Ty dla kogo piszesz swój kod?</p>
]]></content:encoded>
			<wfw:commentRss>http://knaur.net/2011/01/02/dla-kogo-piszesz-ten-kod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

