<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0INRng-eCp7ImA9WhVbEkw.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949</id><updated>2012-05-28T15:26:37.650+02:00</updated><category term="linia komend" /><category term="Python" /><category term="kurs programowania" /><category term="Matlab" /><category term="C" /><category term="GCOTD" /><category term="nieprogramistycznie" /><category term="OCaml" /><category term="formularze" /><category term="Opera Mini" /><category term="SI" /><category term="programowanie" /><category term="linkowanie" /><category term="ślub" /><category term="C++" /><category term="nk.pl" /><category term="praca" /><category term="git" /><category term="internet" /><category term="tedxwroclaw" /><category term="Oława" /><category term="video" /><category term="Wrocław" /><category term="sexy bookmarks" /><category term="irfan view" /><category term="cron" /><category term="git gc" /><category term="opera" /><category term="tedx" /><category term="każdy kiedyś zaczynał" /><category term="focus" /><category term="CLI" /><category term="krzysztofszumny.pl" /><category term="liczby pseudolosowe" /><category term="cygwin" /><category term="cookies" /><category term="recenzje" /><category term="ted" /><category term="angielski" /><category term="dotnetomaniak" /><category term="kompilacja" /><category term="Haskell" /><category term="kindle" /><category term="historia" /><category term="ankieta" /><category term="develway" /><category term="android" /><category term="blogger" /><category term="nauka" /><category term="Opera Mobile" /><category term="alert" /><category term="Linux" /><category term="wakacje" /><category term="książki" /><category term="Ubuntu" /><category term="budowanie" /><category term="pomysł" /><category term="gmail" /><category term="ekundelek.pl" /><category term="google" /><category term="życzenia" /><category term="Erlang" /><title>Blog.KrzysztofSzumny.pl</title><subtitle type="html">noisy - coder</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.krzysztofszumny.pl/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Noisy-Coder" /><feedburner:info uri="noisy-coder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0MGR3s8cCp7ImA9WhVbEUg.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-8865124764197075542</id><published>2012-05-27T22:14:00.000+02:00</published><updated>2012-05-27T22:43:46.578+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-27T22:43:46.578+02:00</app:edited><title>Ten post jest z błendami... poniewasz jest correct.li :)</title><content type="html">Pojawił się świerzutki serwis w internecie. Jego głuwnym celem jest danie urzytkownikom morzliwości poprawiania bykuf na stronie internetowej.&lt;br /&gt;
&lt;br /&gt;
Wszystkim radzę zajrzeć na&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.wykop.pl/link/1151373/stworzylem-narzedzie-do-poprawiania-bledow-na-stronach/"&gt;http://www.wykop.pl/link/1151373/stworzylem-narzedzie-do-poprawiania-bledow-na-stronach/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
gdzie znajdziecie informacje o:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://correct.li/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="76" src="http://correct.li/images/logo.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;




Instalacja w Bloggerze:&lt;/h3&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Wklejamy kod (najłatwiej poprzez Układ &amp;gt; Dodaj Gadżet &amp;gt; HTML/JavaScript). Jak próbowałem wg zaleceń zaraz przed znakiem  to otrzymywałem błąd:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px; text-align: left;"&gt;Błąd podczas analizowania pliku XML, wiersz 1973, kolumna 83: The reference to entity "language" must end with the ';' delimiter."&lt;/span&gt;
&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;







Korzystanie&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zaznaczasz dany wyraz.. i czekasz na chmurkę:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-YIC7A2VVSg0/T8KLlDAmdiI/AAAAAAAAA4Q/OYc9mVaU80I/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-YIC7A2VVSg0/T8KLlDAmdiI/AAAAAAAAA4Q/OYc9mVaU80I/s1600/1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Poprawiasz...&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-v3JO9AeVn8o/T8KMCBtva8I/AAAAAAAAA4g/SdGg-EkXUDM/s1600/2.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-v3JO9AeVn8o/T8KMCBtva8I/AAAAAAAAA4g/SdGg-EkXUDM/s1600/2.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Enter&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-rLCRSYdVKdI/T8KJqmzYLzI/AAAAAAAAA38/5YDLpdarXuw/s1600/submited.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-rLCRSYdVKdI/T8KJqmzYLzI/AAAAAAAAA38/5YDLpdarXuw/s1600/submited.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I w tym momencie ja już mam w panelu takie oto informacje:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ObAchqkk1zI/T8KMJVHmxSI/AAAAAAAAA4o/IrAFQWh15uE/s1600/panel2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://3.bp.blogspot.com/-ObAchqkk1zI/T8KMJVHmxSI/AAAAAAAAA4o/IrAFQWh15uE/s320/panel2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h3&gt;



Podsumowanie&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Mam nadzieję, że wybaczycie mi te parę byków z początku postu.. ale to dla Was, byście mogli sobie poćwiczyć :)&lt;br /&gt;
&lt;br /&gt;
Jak napisał mi autor, projekt jest dopiero w początkowej fazie, więc może zawierać różne błędy. Zauważyłem, że obecnie nie mogę dodać więcej niż jednej strony. Na drugiej występuje błąd z wysyłaniem poprawek. No cóż... zobaczymy :)&lt;br /&gt;
&lt;br /&gt;
Tak czy inaczej, jest to kolejny powód... bym zaczął myśleć o blogowaniu w dwóch językach :) Zawsze się bałem byków... teraz przynajmniej będę mógł dać użytkownikom narzędzie do ich wskazywania :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;EDIT:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Jak się okazało, skrypt może czasami nie działać, jeżeli obsługujemy dwie domeny, tj.&amp;nbsp;&lt;a href="http://ekundelek.pl/"&gt;eKundelek.pl&lt;/a&gt;&amp;nbsp;i &lt;a href="http://www.ekundelek.pl/"&gt;www.eKundelek.pl&lt;/a&gt;. Jak się okazało w moim przypadku, musiałem zmienić w panelu adres na drugi, by wszystko zaczęło działać.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-8865124764197075542?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9W6Hzr8ISQYYGYgK-qcLnqALBk8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9W6Hzr8ISQYYGYgK-qcLnqALBk8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9W6Hzr8ISQYYGYgK-qcLnqALBk8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9W6Hzr8ISQYYGYgK-qcLnqALBk8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=p3nFyXTaRkc:Hn0U_VV1G2o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=p3nFyXTaRkc:Hn0U_VV1G2o:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=p3nFyXTaRkc:Hn0U_VV1G2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=p3nFyXTaRkc:Hn0U_VV1G2o:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/p3nFyXTaRkc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/8865124764197075542/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2012/05/ten-post-jest-z-bendami-poniewasz-jest.html#comment-form" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8865124764197075542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8865124764197075542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/p3nFyXTaRkc/ten-post-jest-z-bendami-poniewasz-jest.html" title="Ten post jest z błendami... poniewasz jest correct.li :)" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-YIC7A2VVSg0/T8KLlDAmdiI/AAAAAAAAA4Q/OYc9mVaU80I/s72-c/1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2012/05/ten-post-jest-z-bendami-poniewasz-jest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGQXk6eSp7ImA9WhVRF0k.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-4017398381771037596</id><published>2012-03-25T22:08:00.001+02:00</published><updated>2012-03-26T09:13:40.711+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-26T09:13:40.711+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ekundelek.pl" /><category scheme="http://www.blogger.com/atom/ns#" term="kindle" /><title>eKundelek - czyli nowy blog o Kindle</title><content type="html">Długo się z tym zbierałem, jednak ostatnio w końcu napisałem parę tekstów o czytniku Kindle, którego zakupiłem w listopadzie zeszłego roku.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Początkowo planowałem pisać tutaj, tym bardziej, że teksty jakimi chciałem się dzielić byłyby powiązane z dotychczasową tematyką bloga, tj. około-programistyczną. Zdarzyło mi się bowiem swojego Kindla używać w trochę bardziej niż standardowy sposób, jailbreakując go, wgrywając dodatkowe oprogramowanie, zdejmując standardowe zabezpieczenia, kompilując nawet na niego przykładowe programy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Sądziłem więc, że fajnie byłoby się tym podzielić. W między czasie jednak zauważyłem, że tematyka e-czytników wychodzi z&amp;nbsp;podziemia geeków i staje się (jakże zasłużenie) czymś zdobywającym coraz większe uznanie i zainteresowanie przeciętnych obywateli.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Postanowiłem więc na początek założyć bloga dla osób, niekoniecznie cechujących się zamiłowaniem do języków programowania. Stwierdzam jednak z całą stanowczością, że wszystkie osoby programowaniem zainteresowane, z racji świadomości, że bycie dobrym informatykiem (jakiegokolwiek rodzaju) wymaga ciągłego dokształcania... powinny pod adres &lt;a href="http://ekundelek.pl/"&gt;eKundelek.pl&lt;/a&gt; zajrzeć. Stwierdzam, że jest to co najmniej bardzo dobre narzędzie do nauki i zdobywania wiedzy.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Nie zdziwiłbym się, jeżeli jednak pokuszę się o zamieszczenie postów bardziej techniczny na temat Kindla także (a może tylko) tutaj.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://ekundelek.pl/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-5GM-OLM4AwM/T294ElkCbwI/AAAAAAAAAs4/OinceTqnOZI/s1600/zrzut_ekranu.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Nazwa może i trochę śmieszna, ale mam nadzieje, że zapadająca w pamięci. W Internecie nie jedna osoba pieszczotliwie nazywa swój czytnik kundelkiem. Z racji, że cała sprawa dotyczy e-papieru, stąd też owo e na początku :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Uzbierało się już trochę artykułów:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ekundelek.pl/2012/03/amazon-kindle-czyli-moj-kundelek.html"&gt;Amazon Kindle - czyli mój Kundelek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ekundelek.pl/2012/03/kindle-special-offers-czyli-wersja.html"&gt;Kindle Special Offers, czyli wersja Kindle z reklamami&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ekundelek.pl/2012/03/e-czytnik-nie-tylko-dla-modych.html"&gt;E-czytnik nie tylko dla młodych!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ekundelek.pl/2012/03/dlaczego-elektronika-o-may-wos-nie.html"&gt;Dlaczego elektronika o mały włos nie zabiła sztuki czytania...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ekundelek.pl/2012/03/kindle-3-keyboard-wi-fi-recenzja.html"&gt;Kindle 3 Keyboard Wi-Fi - Recenzja&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Strona dorobiła się już swojego &lt;a href="http://www.facebook.com/eKundelek"&gt;FanPage&lt;/a&gt;'a i profilu na &lt;a href="https://plus.google.com/b/104359560176503663578/"&gt;Google+&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Zapraszam wszystkich do czytania, subskrybowania, polubienia i powiadomienia znajomych o eKundelku :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-4017398381771037596?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NLRKvyE9AW-whUwdP5zaqUuB3so/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NLRKvyE9AW-whUwdP5zaqUuB3so/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NLRKvyE9AW-whUwdP5zaqUuB3so/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NLRKvyE9AW-whUwdP5zaqUuB3so/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W1QqzuKXWkM:3_Pe5qgRWaM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=W1QqzuKXWkM:3_Pe5qgRWaM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W1QqzuKXWkM:3_Pe5qgRWaM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W1QqzuKXWkM:3_Pe5qgRWaM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/W1QqzuKXWkM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/4017398381771037596/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2012/03/ekundelek-czyli-nowy-blog-o-kindle.html#comment-form" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4017398381771037596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4017398381771037596?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/W1QqzuKXWkM/ekundelek-czyli-nowy-blog-o-kindle.html" title="eKundelek - czyli nowy blog o Kindle" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5GM-OLM4AwM/T294ElkCbwI/AAAAAAAAAs4/OinceTqnOZI/s72-c/zrzut_ekranu.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2012/03/ekundelek-czyli-nowy-blog-o-kindle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4BQnY8fip7ImA9WhRbFUs.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-4013667736471531189</id><published>2012-02-06T22:12:00.002+01:00</published><updated>2012-02-06T22:15:53.876+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T22:15:53.876+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ted" /><category scheme="http://www.blogger.com/atom/ns#" term="tedxwroclaw" /><category scheme="http://www.blogger.com/atom/ns#" term="tedx" /><category scheme="http://www.blogger.com/atom/ns#" term="pomysł" /><title>TEDxWrocław nadchodzi, już 2 marca!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://profile.ak.fbcdn.net/hprofile-ak-snc4/373207_206844972723839_497758965_n.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://profile.ak.fbcdn.net/hprofile-ak-snc4/373207_206844972723839_497758965_n.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;TED (jak &lt;a href="http://pl.wikipedia.org/wiki/TED_(konferencja)"&gt;głosi polska Wikipedia&lt;/a&gt;) to:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: &amp;quot;Georgia&amp;quot;, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;i&gt;... konferencja naukowa organizowana przez amerykańską fundację non-profit Sapling Foundation. Jej celem jest popularyzacja – jak głosi motto – "idei wartych rozpowszechniania".&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By najlepiej zrozumieć ową definicję, najlepiej obejrzeć kilka filmików z przemówieniami prelegentów. A naprawdę &lt;a href="http://www.ted.com/talks/tags"&gt;wybór poruszanych tematów jest ogromny&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
Poniżej możecie zobaczyć film: The thrilling potential of SixthSense technology (dostępny z napisami).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object height="374" width="526"&gt; &lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2009I/Blank/PranavMistry_2009I-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/PranavMistry-2009I.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=685&amp;lang=pl&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=pranav_mistry_the_thrilling_potential_of_sixthsense_tec;year=2009;theme=tales_of_invention;theme=the_creative_spark;theme=what_s_next_in_tech;theme=design_like_you_give_a_damn;theme=ted_under_30;event=TEDIndia+2009;tag=demo;tag=design;tag=open-source;tag=technology;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="526" height="374" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2009I/Blank/PranavMistry_2009I-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/PranavMistry-2009I.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=685&amp;lang=pl&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=pranav_mistry_the_thrilling_potential_of_sixthsense_tec;year=2009;theme=tales_of_invention;theme=the_creative_spark;theme=what_s_next_in_tech;theme=design_like_you_give_a_damn;theme=ted_under_30;event=TEDIndia+2009;tag=demo;tag=design;tag=open-source;tag=technology;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;A czymże jest TEDx?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Są to konferencje organizowane pod patronatem TEDa w &lt;a href="http://www.ted.com/tedx"&gt;kilkudziesięciu&lt;/a&gt; miastach na świecie. Zasady są podobne, jednakże owe konferencje są organizowane przez społeczność, na wniosek społeczności.&lt;br /&gt;
&lt;br /&gt;
W Polsce były już organizowane &lt;a href="http://tedxwarsaw.com/"&gt;TEDxWarsaw&lt;/a&gt;, &lt;a href="http://tedxgdynia.com/"&gt;TEDxGdynia&lt;/a&gt;, &lt;a href="http://tedxlodz.pl/"&gt;TEDxŁódź&lt;/a&gt;, &lt;a href="http://tedxkrakow.com/"&gt;TEDxKraków&lt;/a&gt;. A już&lt;strong&gt; 2 marca&lt;/strong&gt; będzie organizowane &lt;a href="http://tedxwroclaw.pl/"&gt;TEDxWrocław&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
By jednak w niej wziąć udział, należy się &lt;a href="http://tedxwroclaw.pl/en/registration"&gt;zarejestrować na stronie&lt;/a&gt;, gdyż liczba dostępnych miejsc jest ograniczona do 100. Należy tutaj wspomnieć, że liczy się podobno nie czas zgłoszenia, lecz jego treść i jakość. Podobno preferowane są zgłoszenia w języku angielskim.&lt;br /&gt;
&lt;br /&gt;
Sama konferencja także będzie prowadzona w języku angielskim. Jest to ukłon, w stronę społeczności TED, gdyż po całej konferencji filmy z wystąpieniami są umieszczane na &lt;a href="http://tedxtalks.ted.com/"&gt;http://tedxtalks.ted.com/&lt;/a&gt; oraz &lt;a href="http://www.youtube.com/user/TEDxTalks"&gt;http://www.youtube.com/user/TEDxTalks&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Tymczasem czekając na datę 2 marca, organizatorzy TEDxWrocław naszykowali małą rozgrzewkę dla lokalnej społeczności w postaci minikonferencji TEDxWrocławCinema. Nazwa sugeruje, czym charakteryzują się tego typu spotkania. Na dwóch spotkaniach tego typu, które już miały miejsce (20.12.2012, 31.01.2012 - oba w sali 329 (DKF) budynku A-1 Politechniki Wrocławskiej), wyświetlane były co ciekawsze filmy z innych konferencji. W przerwie pomiędzy filmami &lt;a href="http://tedxwroclaw.pl/pl/kontakt"&gt;Michał Kasprzyk&lt;/a&gt; (główny koordynator TEDxWrocław), opowiadał o tym jak będzie wyglądał docelowy marcowy TEDx, jak się zapisać, na czym polega cała idea spotkań, itd :)&lt;br /&gt;
&lt;br /&gt;
Podczas jednej z dłuższych przerw każdy miał możliwość porozmawiać i zapytać się o szczegóły. W tym samym czasie, reszta widzów (a na oko sądzę, że było ich kilkudziesięciu), częstowała się kawą, herbatą, ciasteczkami :)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Po co o tym wszystkim piszę?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Uważam, że cała idea jaka stoi za TEDem może stanowić świetną inspirację. Już dawno stwierdziłem, że zdanie "Jeśli mogłem sięgnąć wzrokiem dalej niż inni, to dlatego, że stanąłem na ramionach olbrzymów", nie musi się odnosić tylko do wiedzy naukowców i uczonych, ale także do idei stojącymi za wszelkimi ich osiągnięciami.&lt;br /&gt;
&lt;br /&gt;
Według mnie bardzo często sukces naukowy polega przecież na "połączeniu kropek", połączeniu kilku znanych faktów z różnych dziedzin... w nowy, innowacyjny sposób.&lt;br /&gt;
&lt;br /&gt;
Zapraszam wszystkich na najbliższą konferencję TEDxWrocław, bo sądzę że na tej konferencji stężenie pomysłów na metr kwadratowy będzie co najmniej niecodzienne :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-4013667736471531189?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DvPDCE5JbCb7L4VwBigc2PFBc-U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DvPDCE5JbCb7L4VwBigc2PFBc-U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DvPDCE5JbCb7L4VwBigc2PFBc-U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DvPDCE5JbCb7L4VwBigc2PFBc-U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5PWGZH7mjZc:Qr87XQLkcPk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=5PWGZH7mjZc:Qr87XQLkcPk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5PWGZH7mjZc:Qr87XQLkcPk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5PWGZH7mjZc:Qr87XQLkcPk:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/5PWGZH7mjZc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/4013667736471531189/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2012/02/tedxwrocaw-nadchodzi.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4013667736471531189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4013667736471531189?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/5PWGZH7mjZc/tedxwrocaw-nadchodzi.html" title="TEDxWrocław nadchodzi, już 2 marca!" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2012/02/tedxwrocaw-nadchodzi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04HR3c4cCp7ImA9WhRWE0k.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-5514366413191735852</id><published>2011-12-31T15:27:00.001+01:00</published><updated>2011-12-31T15:32:16.938+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T15:32:16.938+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="życzenia" /><category scheme="http://www.blogger.com/atom/ns#" term="nieprogramistycznie" /><title>Ogon programisty</title><content type="html">Co niektórzy blogerzy na koniec roku publikują podsumowania dotyczące poczytności swojego bloga. Ten wpis nie będzie o tym, gdyż takiego podsumowania nie chcę mi się po prostu robić :P&lt;br /&gt;
&lt;br /&gt;
Zdecydowałem się jednak coś napisać, gdyż podobno istnieją jakieś pogańskie przesądy jakoby to co się zrobi ostatniego dnia roku, często będzie miało też miejsce w roku kolejnym...&lt;br /&gt;
&lt;br /&gt;
Innym często praktykowanym zwyczajem jest tworzenie sobie listy celów do osiągnięcia na następne 12 miesięcy. Zdarzało mi się takie listy tworzyć, jednakże zazwyczaj dotyczyły one raczej sfer osobistych.&lt;br /&gt;
&lt;br /&gt;
Na 2012 rok moje cele te programistyczne jak i osobiste definiują się trochę inaczej... przede wszystkim, chcę zadbać o ...&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Niedokończone sprawy...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bloga prowadzę od jakiegoś czasu, ale jakoś nie widać tutaj zbyt wielu efektów, moich programistycznych prac, w postaci postów o tychże właśnie projektach. To jest wręcz dziwne, gdyż każdy kto mnie lepiej zna, wie że w ciągu roku średnio mam kilkanaście różnych pomysłów na różne projekty i projekciki...&lt;br /&gt;
&lt;br /&gt;
Większość z nich nigdy jednak nie wchodzi w fazę końcową. Brakuje mi cierpliwości i determinacji, by do końca skupić uwagę właśnie na tym danym projekcie. Zanim dokończę jeden, już nowy pomysł wydaje mi się dużo ciekawszy.&lt;br /&gt;
&lt;br /&gt;
Konsekwencją tego wszystkiego jest to, że obecnie chcąc wziąć się za wykańczanie tychże projektów, trudno jest nawet ocenić za co się zabrać.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Życzenia...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
W tym nowym nadchodzącym roku, chciałbym więc życzyć Ci przede wszystkim determinacji a także jasności umysłu, która powinna pomóc w podejmowaniu decyzji oraz - cytując moją najdroższą żonę - &amp;nbsp;"aby ten ogon niedokończonych spraw nie ciągnął się tak za Tobą, bo to czasami przeszkadza w przekroczeniu kolejnych progów na Twojej drodze."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-5514366413191735852?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w1J1TCP3dJ6EMQsHEkhzxaeS88I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w1J1TCP3dJ6EMQsHEkhzxaeS88I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w1J1TCP3dJ6EMQsHEkhzxaeS88I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w1J1TCP3dJ6EMQsHEkhzxaeS88I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=BFHOfYU74V4:xMYxHt6iUOw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=BFHOfYU74V4:xMYxHt6iUOw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=BFHOfYU74V4:xMYxHt6iUOw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=BFHOfYU74V4:xMYxHt6iUOw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/BFHOfYU74V4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/5514366413191735852/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/12/ogon-programisty.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/5514366413191735852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/5514366413191735852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/BFHOfYU74V4/ogon-programisty.html" title="Ogon programisty" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/12/ogon-programisty.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHo7eCp7ImA9WhRRE00.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-9106121978213094649</id><published>2011-11-25T18:44:00.001+01:00</published><updated>2011-11-26T12:55:01.400+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-26T12:55:01.400+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><title>Dlaczego warto zostać programistą?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Vk7ymXDGLT8/Ts_TbIJ-I8I/AAAAAAAAAmo/5gL4-cdDUnE/s1600/keyboard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://3.bp.blogspot.com/-Vk7ymXDGLT8/Ts_TbIJ-I8I/AAAAAAAAAmo/5gL4-cdDUnE/s200/keyboard.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Początkowo ten artykuł miał być czymś w rodzaju listy, która miała przedstawiać atuty tego zawodu względem innych. Od jakiegoś czasu, gdy przyszło mi coś do głowy, starałem się notować sobie "plusy pracy w tym zawodzie".&lt;br /&gt;
&lt;br /&gt;
Lista ta nie zawierała kilkudziesięciu pozycji, raczej kilka-kilkanaście. Podczas przygotowywania tej notki, czytając te punkty nie czułem jednak by to one przekonały mnie niegdyś do ukierunkowania swojej przyszłości.&lt;br /&gt;
&lt;br /&gt;
Teraz wiem, że sprzyjające okoliczności przyczyniły się do tego, że obecnie typowy przedstawiciel tego zawodu nie za bardzo musi się obawiać o pracę. Jeżeli mamy szczęście, nasz pracodawca również może być informatykiem lub ściślej - programistą. To ważne, bo gdy tak się dzieje, on rozumie nasze potrzeby. Często więc np. zdaje on sobie sprawę, że jego pracownicy pracują najwydajniej o różnych porach dnia, tak więc nie zawsze musimy stawiać się w biurze punkt dziewiąta ;) Zdarza się też nie rzadko, że ów pracodawca w pełni jest w stanie zrozumieć, że np. pewne czynności możemy danego dnia zrobić zdalnie, z domu.&lt;br /&gt;
&lt;br /&gt;
Kiedyś było inaczej, programistów postrzegano nierzadko jako wynaturzonych dziwaków. Społeczeństwo jeszcze 20-30 lat temu nie rozumiało, jak można całymi dniami siedzieć przed monitorem a to wszystko tylko po to by stukać w plastikową klawiaturę drukując na ekranie znaczki, które tworzyły jakiś "nudny kod"... W dzisiejszych czasach chyba każdemu z nas zdarzyło się choć raz zatracić w komputerowym/wirtualny/internetowym świecie. To co osiągnęła ludzkość w dziedzinie informatyki jest efektem pracy ale i przede wszystkim wizji osób, które uwierzyły, że to będzie możliwe, już dekady temu.&lt;br /&gt;
&lt;br /&gt;
Obecnie programista postrzegany jest zgoła odmiennie. Nierzadko postrzegany jest on już jako ktoś szczególny. Filmów, gdzie programista jest głównym bohaterem też powstało ostatnio nie mało: &lt;a href="http://www.youtube.com/watch?v=cCk82oMBGF8"&gt;Matrix (I, II, III)&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=74eyod1Tq2Q"&gt;Kod Dostępu&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=53OUHupfqws"&gt;The Social Network&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=980O_QpbIbI"&gt;Szklana Pułapka 4&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=P78pl1FUXfA"&gt;Tron - Legacy&lt;/a&gt;. Gdyby wliczać filmy o tematyce około komputerowej, to lista jeszcze bardziej by się wydłużyła m.in. o &lt;a href="http://www.youtube.com/watch?v=_wkqo_Rd3_Q"&gt;Eagle Eye&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=AoNT6u3mQew"&gt;Wroga publicznego&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=s0f3JeDVeEo"&gt;I Robot&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=XnwmUZuF5OY"&gt;Transformers (I, II, III)&lt;/a&gt;, itd. Z resztą po co wymieniać? Istnieje cały spis owych filmów na &lt;a href="http://en.wikipedia.org/wiki/List_of_films_about_computers"&gt;Wikipedii&lt;/a&gt;(&lt;a href="http://en.wikipedia.org/wiki/List_of_films_about_computers"&gt;List_of_films_about_computers&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Komputery stały się popularne. Widzimy, że odgrywają one ogromną role w naszym życiu. Zaskakujące jest to, że to co jeszcze do nie dawna było dla nas gadżeciarskim Science Fiction, obecnie często przybiera realną formę. Wydawanie komend głosowych komputerowi w naturalnym języku, jeszcze 5 lat temu było zupełnie nieprawdopodobne, dzisiaj produkt to oferujący, jako swoją główną zaletę podaje właśnie to. Oglądając nie jeden nowoczesny film podziwialiśmy, samosterujące się auta. A prawda jest też taka, że one już jeżdżą po niektórych ulicach USA (jeszcze w fazie testów, co nie zmienia faktu, że już jeżdżą!)&lt;br /&gt;
&lt;br /&gt;
Co to ma do programowania? A to, że bez programistów żaden z tych tworów by nie powstał. Co ciekawe, ludzie zaczynają nawet sami to rozumieć, jaka ważna jest ich rola, oraz to, że maczaliśmy palce w aucie którym dojeżdżasz do pracy, urządzeniu z pomocą którego kupujesz bilet autobusowy, w Twoim telefonie, nowej plaźmie ze ściany, robocie kuchennym, budziku, radiu, odtwarzaczu muzyki a nawet w Twojej szczoteczce do zębów. To są tylko urządzenia w których "żyją" programy napisane przez programistów. A gdyby zastanowić się co nie powstałoby, gdyby nie została oprogramowana ta czy inna taśma produkcyjna, to wychodzi na to, że w domu nie mielibyśmy prawie niczego :)&lt;br /&gt;
&lt;br /&gt;
Czy zatem programistą warto zostać dlatego, że być może będzie miało się okazje oprogramowywać ekspres do kawy? Nie, a przynajmniej mną nigdy to nie kierowało ;)&lt;br /&gt;
&lt;br /&gt;
Od małego dziecka lubiłem komputery, jednak pierwszy swój program napisałem dopiero w pierwszej klasie liceum. I wiecie co wtedy poczułem? Moc!&lt;br /&gt;
&lt;br /&gt;
Okazało się, że oto odkryła się przede mną możliwość wymyślania rzeczy, &amp;nbsp;szczegółowego projektowania a następnie ostatecznego ich tworzenia! Jeżeli kiedyś bawiłeś się Lego, to na pewna znasz tu uczucie satysfakcji, gdy kończyłeś budować swoją wymyślną konstrukcję! Była stworzona przez Ciebie klocek po klocku, dzięki czemu była wyrazem Twojej twórczości i oryginalności, była niepowtarzalna i wyjątkowa.... chyba, że....zabrakło Ci kilku klocków.&lt;br /&gt;
&lt;br /&gt;
Chyba każdy, kto bawił się Lego nie zbudował choć jednej wymarzonej konstrukcji, dlatego że liczba jego klocków była ograniczona. A co gdyby mieć klocków więcej lub nawet nieograniczoną ilość?&lt;br /&gt;
&lt;br /&gt;
Jeżeli choć odrobinę się wczułeś, to być może zrozumiałeś to, jak może czuć się programista każdego dnia. On do dyspozycji ma wszystkie klocki w nieograniczonej ilości! On nie ma też problemów, że jakiegoś klocka w ogóle nie posiada. Języki programowania są tak skonstruowane, że brakujące "klocki" zawsze można stworzyć z już istniejących.&lt;br /&gt;
&lt;br /&gt;
Gdy uczyłem się programowania z początku uczyłem się reguł jak "dopasowywać klocki do siebie". Dość szybko przyszła pora na poznanie tajników programowania obiektowego. I to było dla mnie kolejne wielkie wydarzenie. Zrozumiałem, ze od tej pory wszelkie odzwierciedlanie tego co chciałbym stworzyć będzie dla mnie łatwiejsze! Wiecie jakie było moje pierwsze wrażenie gdy poznałem zasadę i cele klas? "Dajcie mi trochę czasu, a napiszę wam drugiego Matrixa!" :)&lt;br /&gt;
&lt;br /&gt;
Teraz wiem, że najpewniej sam mógłbym nie wyrobić się w odpowiedniej liczbie osobogodzin, by skończyć go przed śmiercią ;) Jednak wiem, że na pewno nie byłem sam z myślą, że praktycznie cały świat dałoby się odwzorować wirtualnie. Ktoś przecież musiał wpaść na ten koncept Matrixa!&lt;br /&gt;
&lt;br /&gt;
Szybki komputer, dwa monitory, stały dostęp do internetu, nie rzadko jakiś fajny pakiet socjalny i nie najgorsza pensja...to są tylko przykłady atutów, które mogłyby przekonać nie jedną osobę, że warto wyuczyć się na programistę. Jednakże istnieje nie mały procent osób, które postanowiły kształcić się w tym kierunku nie myśląc o tym... one po prostu kiedyś zaczęły programować i zdały sobie sprawę, że odtąd mogą tworzyć niemalże wszystko, co tylko będą w stanie wystarczająco dokładnie opisać!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-9106121978213094649?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JU1u-OWBl-VZe_6pipgeUdAuyEY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JU1u-OWBl-VZe_6pipgeUdAuyEY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JU1u-OWBl-VZe_6pipgeUdAuyEY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JU1u-OWBl-VZe_6pipgeUdAuyEY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=KYJA_Ve-svM:pZMEPuXWjlM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=KYJA_Ve-svM:pZMEPuXWjlM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=KYJA_Ve-svM:pZMEPuXWjlM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=KYJA_Ve-svM:pZMEPuXWjlM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/KYJA_Ve-svM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/9106121978213094649/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/11/dlaczego-warto-zostac-programista.html#comment-form" title="Komentarze (25)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/9106121978213094649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/9106121978213094649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/KYJA_Ve-svM/dlaczego-warto-zostac-programista.html" title="Dlaczego warto zostać programistą?" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Vk7ymXDGLT8/Ts_TbIJ-I8I/AAAAAAAAAmo/5gL4-cdDUnE/s72-c/keyboard.jpg" height="72" width="72" /><thr:total>25</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/11/dlaczego-warto-zostac-programista.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMHRnw4fSp7ImA9WhRSGUs.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-7531562830584112973</id><published>2011-11-22T12:58:00.003+01:00</published><updated>2011-11-22T13:20:37.235+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T13:20:37.235+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="GCOTD" /><category scheme="http://www.blogger.com/atom/ns#" term="git gc" /><category scheme="http://www.blogger.com/atom/ns#" term="cron" /><title>Jak przyśpieszyć git'a?</title><content type="html">Na pewno sposobów jest wiele, jednak jednym z nich jest regularne odpalanie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git gc&lt;/span&gt; (garbage collector).&lt;br /&gt;
&lt;br /&gt;
Pamięć jednak jest zawodna, dlatego najlepszym pomysłem jest zautomatyzowanie procesu i ustawienie cyklicznego wywoływania procesu.&lt;br /&gt;
&lt;br /&gt;
Do tego wystarczy pojedynczy wiersz w &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cron&lt;/span&gt;ie. Jednakże jeżeli na co dzień uzywamy wielu repozytoriów, tych wpisów musiałoby być w &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cron&lt;/span&gt;ie więcej.&lt;br /&gt;
&lt;br /&gt;
By zachować w nim porządek chciałbym zaproponować inne podejście:&lt;br /&gt;
&lt;br /&gt;
Tworzymy sobie plik &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;~/.gitrepos&lt;/span&gt;, do którego wpisujemy ścieżki projektów, które chcemy "utrzymać w czystości"&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/media/truecrypt1/workspace/current/project_A/
/media/truecrypt1/workspace/current/project_B/
/media/truecrypt1/workspace/old/project_C/
/media/truecrypt1/workspace/another/project_D/
&lt;/pre&gt;&lt;br /&gt;
Potem już tylko &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;crontab -e&lt;/span&gt; i wklejamy:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;30 2 * * * cat ~/.gitrepos | xargs -I {} git --work-tree={} --git-dir={}.git gc&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Taki wpis, codziennie w nocy o 2:30 będzie odpalał &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git gc&lt;/span&gt; dla każdego repozytorium z zapisanych katalogów. Użycie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;--work-tree&lt;/span&gt; oraz &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;--git-dir&lt;/span&gt; jest konieczne, dlatego że domyślnie polecenie z &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cron&lt;/span&gt;a jest odpalane w katalogu domowym.&lt;br /&gt;
&lt;br /&gt;
PS. jeżeli nie lubisz/nie chcesz używać &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cron&lt;/span&gt;a &amp;nbsp;w tradycyjny/trudniejszy sposób, zainstaluj sobie nakładkę graficzną&amp;nbsp;&lt;a href="http://www.ubuntugeek.com/schedule-tasks-using-gnome-schedule-a-cron-at-gui-in-ubuntu.html"&gt;gnome-schedule&lt;/a&gt; (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;sudo apt-get install gnome-schedule&lt;/span&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-7531562830584112973?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4ujwt6xiK7EsJs2AYOnhQ6PfYLk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ujwt6xiK7EsJs2AYOnhQ6PfYLk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4ujwt6xiK7EsJs2AYOnhQ6PfYLk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ujwt6xiK7EsJs2AYOnhQ6PfYLk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=sLS9uiQgRI0:a7XwuS1YPPM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=sLS9uiQgRI0:a7XwuS1YPPM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=sLS9uiQgRI0:a7XwuS1YPPM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=sLS9uiQgRI0:a7XwuS1YPPM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/sLS9uiQgRI0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/7531562830584112973/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/11/jak-przyspieszyc-gita.html#comment-form" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7531562830584112973?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7531562830584112973?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/sLS9uiQgRI0/jak-przyspieszyc-gita.html" title="Jak przyśpieszyć git'a?" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/11/jak-przyspieszyc-gita.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMERno-fCp7ImA9WhdWGEQ.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-2600154021362713537</id><published>2011-09-12T11:24:00.004+02:00</published><updated>2011-09-13T07:56:47.454+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T07:56:47.454+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ślub" /><category scheme="http://www.blogger.com/atom/ns#" term="Oława" /><category scheme="http://www.blogger.com/atom/ns#" term="Wrocław" /><title>Krzysiek się żeni!</title><content type="html">&lt;span style="font-size: xx-small;"&gt;Uwaga... niniejszy tekst jest przeznaczony tylko dla osób ze "skrzywieniem" okołoinformatyczny!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Stało się!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wszelkie programistki powinny przestać mieć złudzenia! Kolejny dobrze wypozycjonowany programista przestał bowiem być publicznie dostępny. Otóż na mocy pewnej umowy, Krzysztof mniej lub bardziej znany jako noisy, został objęty własnościową licencją "&lt;a href="http://pl.wikipedia.org/wiki/%C5%9Alub"&gt;Marriage 2.0/Good&lt;/a&gt;".&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jak dowiedziały się media, podobno już od kwietnia ów koder przestrzegał postanowień cywilnej wersji licencji "Marriage 1.0". RoadMap noisy'ego podobno jednak od początku przewidywał organizację okolicznościowej imprezy integracyjnej dopiero z okazji migracji na drugą wersję licencji. Główna różnica pomiędzy wspomnianymi licencjami polega na tym, że ver. 2 uniemożliwia jakiekolwiek migrację, innymi słowy jest wieczysta.  Programiści chcący przejść na wersję drugą licencji przepisywani są do projektu w której Project Managerem jest programista-guru o pseudonimie Good. Samo podpisywanie stosownych dokumentów musi mieć miejsce w jednej z jego &lt;a href="http://pl.wikipedia.org/wiki/Ko%C5%9Bci%C3%B3%C5%82_(budynek)"&gt;kwater&lt;/a&gt; (noisy i jego wybranka wybrali tą o współrzędnych &lt;a href="http://maps.google.pl/maps?client=opera&amp;amp;rls=en&amp;amp;q=51.10251,+17.085993&amp;amp;oe=utf-8&amp;amp;channel=suggest&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;hq=&amp;amp;hnear=0x470fc2a021267ddd:0x58e8ba7067228fc,%2B51%C2%B0+6'+8.16%22,+%2B17%C2%B0+5'+8.90%22&amp;amp;gl=pl&amp;amp;ei=U8ptToz3D8S5hAelx4Ub&amp;amp;sa=X&amp;amp;oi=geocode_result&amp;amp;ct=title&amp;amp;resnum=1&amp;amp;ved=0CBcQ8gEwAA"&gt;51.10251, 17.085993&lt;/a&gt;). Podczas uroczystości migracji do licencji "Marriage 2.0" na Krzysztofie i jego wybrance - Magdalenie zostały przeprowadzone kroki dość tajemniczego algorytmu. W kluczowym momencie podali sobie dłonie, po czym z pomocą klucza szyfrującego w formacie &lt;a href="http://pl.wikipedia.org/wiki/Stu%C5%82a"&gt;STUŁA&lt;/a&gt;, został pomiędzy nimi nawiązany specjalny szyfrowany tunel komunikacyjny w protokole na owej specjalnej licencji. Od tej pory newralgiczne dla ich systemów decyzje muszą przejść proces podwójnej autoryzacji.&lt;br /&gt;
&lt;br /&gt;
Zostały im także wręczone specjalne, podpisane cyfrowo nadajniki GPS wykonane z cennego kruszcu, które są teraz przez nich noszone na serdecznym palcu prawej ręki.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-l8MNtXCaN_w/Tm3MTtIhfKI/AAAAAAAAAlU/dnbFsrxdjPQ/s1600/ring-gps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-l8MNtXCaN_w/Tm3MTtIhfKI/AAAAAAAAAlU/dnbFsrxdjPQ/s1600/ring-gps.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Należy pamiętać, że tego rodzaju nadajnik wręczony programiście jest jednocześnie certyfikatem świadczącym o jego wysokich kwalifikacjach interpersonalnych.&lt;br /&gt;
&lt;br /&gt;
Cała procedura przebiegła dość sprawnie. Dość ciekawym wydarzeniem był natomiast pewien &lt;a href="http://slubowisko.pl/files/productphoto/thumbs456x684/3998.jpg"&gt;kwiatkowo-płatkowy atak DDoS&lt;/a&gt; jaki miał miejsce zaraz po wyjściu Magdaleny i Krzysztofa z kwatery Good'a. Jak się jednak okazało, jest to typowe w takich okolicznościach.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A co się działo później? Późniejsza impreza integracyjna była dość zaskakująca dla osób mających w pamięci stereotyp informatyka jako samotnego osobnika w okularkach ubranego we flanelową koszulę. Okazało się bowiem, że każdy programista, koder czy inny pracownik IT przyszedł w towarzystwie osoby płci przeciwnej!&lt;br /&gt;
&lt;br /&gt;
Ale to nie koniec!... pomimo, że na sali był komputer klasy PC, to jednak nikt nie rwał się tego dnia do programowania(sic!). Cała sala zgodnie pozwoliła użyć tego sprzętu jako panelu konfiguracyjnego, na potrzeby administratora sali o pseudonimie &lt;a href="http://djlocky.pl/"&gt;DJ Locky&lt;/a&gt;, dzięki czemu wszyscy mogli bawić się przy świetnej muzyce.&lt;br /&gt;
&lt;br /&gt;
Impreza przebiegła dość sprawnie. Pomimo częstego ładowania trunków do buforów gardłowych, nie wystąpił żaden StackOverflowException ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kolejne wieczory po tej imprezie, Krzysztof i Magdalena spędzają już w swoim wspólnym gniazdku w Oławie. Krzysztof bowiem jakiś czas temu przeprowadził się z Wrocławia do ich wspólnego "M". Co prawda teraz musi wstawać trochę wcześniej, by dojechać do pracy... no ale cóż... nikt mu nie obiecywał, że będzie ze wszystkim łatwo :)&lt;br /&gt;
&lt;br /&gt;
PS.&lt;br /&gt;
Krzysiek wraz Magdaleną postanowili stworzyć swoją stronę ślubną - &lt;a href="http://szumni.pl/"&gt;szumni.pl&lt;/a&gt;. Podobno gościom bardzo się przydała i spodobała :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-2600154021362713537?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S4jTJVfsNsQaTOnwEZPEIU0-ziE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S4jTJVfsNsQaTOnwEZPEIU0-ziE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S4jTJVfsNsQaTOnwEZPEIU0-ziE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S4jTJVfsNsQaTOnwEZPEIU0-ziE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W0NBjbdZFf8:4JOe7WJHrFI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=W0NBjbdZFf8:4JOe7WJHrFI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W0NBjbdZFf8:4JOe7WJHrFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=W0NBjbdZFf8:4JOe7WJHrFI:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/W0NBjbdZFf8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/2600154021362713537/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/09/krzysiek-sie-zeni.html#comment-form" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2600154021362713537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2600154021362713537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/W0NBjbdZFf8/krzysiek-sie-zeni.html" title="Krzysiek się żeni!" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-l8MNtXCaN_w/Tm3MTtIhfKI/AAAAAAAAAlU/dnbFsrxdjPQ/s72-c/ring-gps.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/09/krzysiek-sie-zeni.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcFRX07fip7ImA9WhdTFUg.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-7841766627321377986</id><published>2011-07-12T10:00:00.027+02:00</published><updated>2011-07-13T12:30:14.306+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T12:30:14.306+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Opera Mini" /><category scheme="http://www.blogger.com/atom/ns#" term="wakacje" /><category scheme="http://www.blogger.com/atom/ns#" term="opera" /><category scheme="http://www.blogger.com/atom/ns#" term="nk.pl" /><title>Pocztówka z wakacji</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ChVJpz6eGsE/Thsrl_tySpI/AAAAAAAAAkQ/wwub8fUgYH4/s1600/tablica_z_poczt%25C3%25B3wk%25C4%25852.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-ChVJpz6eGsE/Thsrl_tySpI/AAAAAAAAAkQ/wwub8fUgYH4/s200/tablica_z_poczt%25C3%25B3wk%25C4%25852.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Owszem, ktoś pojechał na wakacje, ale tym razem nie byłem to ja. Na wakacje pojechała sobie &lt;b&gt;&lt;span style="color: red;"&gt;Opera&lt;/span&gt; Mini&lt;/b&gt; razem z portalem nk.pl, na skutek kampanii którą razem z moim kolegą &lt;a href="http://my.opera.com/slaweks/blog/"&gt;Sławkiem Sochajem&lt;/a&gt; i ekipą nk.pl przygotowaliśmy dla Was!&lt;br /&gt;
&lt;br /&gt;
Postanowiliśmy przypomnieć naszym użytkownikom, że z Opery Mini można korzystać &lt;b&gt;wszędzie&lt;/b&gt; korzystając praktycznie z &lt;b&gt;każdego telefonu&lt;/b&gt;! W okresie wakacyjnym nie ma więc potrzeby rozstawać się z największym portalem społecznościowym o polskich korzeniach :)&lt;br /&gt;
&lt;br /&gt;
Jeżeli jeszcze nie miałeś okazji korzystać z Opery Mini, masz teraz szansę wypróbować ją, bez konieczności instalacji korzystając ze strony &lt;a href="http://nk.pl/nawakacjach"&gt;http://nk.pl/nawakacjach&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Sprawdź jak działa, pobaw się nią i zobacz jaką daję to frajdę!&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://nk.pl/nawakacjach" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="127" src="http://4.bp.blogspot.com/-wm90D2kA0ns/ThsuHc7ZcTI/AAAAAAAAAkY/jGDRATv6ezM/s200/nk2.png" width="200" /&gt;&amp;nbsp;&lt;img border="0" height="124" src="http://1.bp.blogspot.com/-Y1QMNd0a8iQ/ThsuIckdh5I/AAAAAAAAAkc/EquFIv2Jaw0/s200/nk3.png" width="200" /&gt;&amp;nbsp;&lt;img border="0" height="127" src="http://1.bp.blogspot.com/-mkP7heQjCFg/ThsuFWS_-UI/AAAAAAAAAkU/XiYOoTrfkIE/s200/nk1.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS.&lt;br /&gt;
&lt;br /&gt;
Muszę wam przyznać, że przygotowywanie takiej wakacyjnej Mini-wyprawy zajęło mi ostatnio trochę czasu, jednak nie widzę powodu by teraz nie nadgonić swoich redakcyjno-blogowych obowiązków. Obiecałem wam przecież kilka postów na konkretne tematy ;)&lt;br /&gt;
&lt;br /&gt;
PS. 2.&lt;br /&gt;
&lt;br /&gt;
Nie, ten blog nie stanie się blogiem pracownika Opery namiętnie reklamującym każdą jej funkcjonalność. To że ostatnio zdarza mi się coś na ten temat pisać jest spowodowane tylko tym, że uczestniczyłem w bardzo ciekawych projektach, których wynikami końcowymi chciałem się wam pochwalić ;) To chyba naturalne :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;piszą o tym inni:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://nk.pl/#blog/portal/wpis/666?tv=1"&gt;http://nk.pl/#blog/portal/wpis/666?tv=1&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.chip.pl/news/oprogramowanie/programy-narzedziowe/2011/07/mobilna-nk-na-wszystkich-platformach"&gt;http://www.chip.pl/news/oprogramowanie/programy-narzedziowe/2011/07/mobilna-nk-na-wszystkich-platformach&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://webhosting.pl/Mobilna.NK.na.wszystkich.platformach"&gt;http://webhosting.pl/Mobilna.NK.na.wszystkich.platformach&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://gospodarka.gazeta.pl/gospodarka/1,55402,9928973,Mobilna_NK_na_wszystkich_platformach.html"&gt;http://gospodarka.gazeta.pl/gospodarka/1,55402,9928973,Mobilna_NK_na_wszystkich_platformach.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.telecompaper.com/news/nk-offers-opera-mini-online-simulator"&gt;http://www.telecompaper.com/news/nk-offers-opera-mini-online-simulator&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.komputerswiat.pl/nowosci/internet/2011/28/nk-jak-facebook-dostepna-juz-w-wersji-na-kazda-komorke.aspx"&gt;http://www.komputerswiat.pl/nowosci/internet/2011/28/nk-jak-facebook-dostepna-juz-w-wersji-na-kazda-komorke.aspx&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://news.softpedia.com/news/Opera-Mini-Keeps-Users-Connected-to-NK-This-Summer-211017.shtml"&gt;http://news.softpedia.com/news/Opera-Mini-Keeps-Users-Connected-to-NK-This-Summer-211017.shtml&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.telix.pl/artykul/symulator-opery-mini-na-nk-3,42094.html"&gt;http://www.telix.pl/artykul/symulator-opery-mini-na-nk-3,42094.html&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://mobility.com.pl/wspolna-akcja-opery-i-nk-zwiazana-z-mobilnym-internetem.html"&gt;http://mobility.com.pl/wspolna-akcja-opery-i-nk-zwiazana-z-mobilnym-internetem.html&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://mobile.re.pl/artykul/38202.html"&gt;http://mobile.re.pl/artykul/38202.html&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.wirtualnemedia.pl/artykul/nk-pl-w-wersjach-nokia-touch-i-android"&gt;http://www.wirtualnemedia.pl/artykul/nk-pl-w-wersjach-nokia-touch-i-android&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.webinfo.net.pl/index.php/mobilna-nk-na-wszystkich-platformach/"&gt;http://www.webinfo.net.pl/index.php/mobilna-nk-na-wszystkich-platformach/&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.gsmmaniak.pl/49049/opera-nk/"&gt;http://www.gsmmaniak.pl/49049/opera-nk/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.gsmservice.pl/6370,Mobilna_NK_na_wszystkich_platformach,news.html"&gt;http://www.gsmservice.pl/6370,Mobilna_NK_na_wszystkich_platformach,news.html&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://mbrokers.pl/marketing/informacje/mobilna-nk-na-wszystkich-platformach"&gt;http://mbrokers.pl/marketing/informacje/mobilna-nk-na-wszystkich-platformach&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;blogują o tym:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://justamp.blogspot.com/2011/07/break-on-through-to-mobile-side.html"&gt;http://justamp.blogspot.com/2011/07/break-on-through-to-mobile-side.html&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.ilkda.com/wordpress/2011/07/12/break-on-through-to-the-mobile-side/"&gt;http://www.ilkda.com/wordpress/2011/07/12/break-on-through-to-the-mobile-side/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;piszemy o tym my:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.wykop.pl/link/809419/ciekawa-kampania-nk-pl-i-opery-mini-a-jak-ty-korzystasz-z-internetu-w-wakacje/"&gt;http://www.wykop.pl/link/809419/ciekawa-kampania-nk-pl-i-opery-mini-a-jak-ty-korzystasz-z-internetu-w-wakacje/&lt;/a&gt; &amp;nbsp;&amp;lt;--- ten link można wykopać ;)&lt;/span&gt;&lt;/li&gt;
&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.opera.com/press/releases/2011/07/12/"&gt;http://www.opera.com/press/releases/2011/07/12/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://my.opera.com/operawpolsce/blog/2011/07/12/przejdz-na-mobilna-strone-mocy"&gt;http://my.opera.com/operawpolsce/blog/2011/07/12/przejdz-na-mobilna-strone-mocy&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Jesteśmy też oczywiście na stronie głównej nk.pl :)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3ezNt5VMmGk/Thx4P2779EI/AAAAAAAAAks/b1w1PF8J4IE/s1600/wpis3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://3.bp.blogspot.com/-3ezNt5VMmGk/Thx4P2779EI/AAAAAAAAAks/b1w1PF8J4IE/s400/wpis3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-7841766627321377986?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GXxHffP1RDHraXW1MH28eInKuZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GXxHffP1RDHraXW1MH28eInKuZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GXxHffP1RDHraXW1MH28eInKuZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GXxHffP1RDHraXW1MH28eInKuZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wACfXYpb6nE:RFi_vxhgOBU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=wACfXYpb6nE:RFi_vxhgOBU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wACfXYpb6nE:RFi_vxhgOBU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wACfXYpb6nE:RFi_vxhgOBU:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/wACfXYpb6nE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/7841766627321377986/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/07/pocztowka-z-wakacji.html#comment-form" title="Komentarze (3)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7841766627321377986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7841766627321377986?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/wACfXYpb6nE/pocztowka-z-wakacji.html" title="Pocztówka z wakacji" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ChVJpz6eGsE/Thsrl_tySpI/AAAAAAAAAkQ/wwub8fUgYH4/s72-c/tablica_z_poczt%25C3%25B3wk%25C4%25852.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/07/pocztowka-z-wakacji.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUERno4cCp7ImA9WhdTEU4.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-4637100758301674648</id><published>2011-07-01T00:33:00.009+02:00</published><updated>2011-07-08T15:03:27.438+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-08T15:03:27.438+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google+</title><content type="html">Zamiast czytania, proponuję dziś obejrzeć filmik:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;br /&gt;
&lt;object allowfullscreen="true" data="http://www.youtube.com/v/xwnJ5Bl4kLI" flashvars="fs=1&amp;amp;rel=0&amp;amp;color1=0xFFFFFF&amp;amp;color2=0xFFFFFF&amp;amp;showinfo=0&amp;amp;showsearch=0" height="390" scale="showall" type="application/x-shockwave-flash" width="480"&gt;          &lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="AllowScriptAccess" value="always" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="wmode" value="opaque" /&gt;&lt;param name="movie" value="http://www.youtube.com/v/xwnJ5Bl4kLI"/&gt;&lt;param name="flashvars" value="fs=1&amp;amp;rel=0&amp;amp;color1=0xFFFFFF&amp;amp;color2=0xFFFFFF&amp;showinfo=0&amp;showsearch=0" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
Chce ktoś zaproszenie? :)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;(Chętni mogą podesłać swój e-mail na adres noisy.pl@gmail.com)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Idea "kręgów" wydaje się dość ciekawa. Można by mieć krąg "czytelników" bloga ale także maniaków kodowania. Wszystkie informacje docierały by do właściwych osób. Ciekawe jak to się będzie sprawdzać w praktycę :)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Edit:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Z tego co zauważyłem nie każdy ma bezpośredni dostęp do możliwości wysyłania zaproszeń do innych. Da się jednak sprawę obejść. Obecnie dodaję daną osobę do kręgu (np. roboczo nazwanego "Zapraszani") za pomocą jej adresu email.&lt;br /&gt;
&lt;br /&gt;
Następnie publikuję coś na swojej "ścianie/tablicy" zaznaczając, że udostępniam to właśnie owej grupie. Wyskakuje tam checkbox, pytający czy zaprosić osobę, która jest w owym kręgu, ale nie posiada jeszcze konta. Ten sposób wydaje się działać :)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Edit2:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Chyba niestety ów sposób na zapraszanie znajomych został na razie zablokowany. Gdyby coś się zmieniło, dam znać.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;Edit3:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
No i coś się zmieniło. Chłopaki z forum xda-developers napisali skrypcik, który wysyła zaproszenia na podany e-mail:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
więcej szczegółów tutaj: &lt;a href="http://forum.xda-developers.com/showthread.php?t=1147688"&gt;http://forum.xda-developers.com/showthread.php?t=1147688&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Czy skrypt działa, można sprawdzić tutaj:&lt;br /&gt;
&lt;a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0ApU5sMQpUTOhdHdwLUZOTmlOWHNvbzR0M19iSTNzdmc&amp;amp;hl=en_GB#gid=0"&gt;https://spreadsheets.google.com/spreadsheet/ccc?key=0ApU5sMQpUTOhdHdwLUZOTmlOWHNvbzR0M19iSTNzdmc&amp;amp;hl=en_GB#gid=0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-4637100758301674648?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9zYFKU17Jz89Svma2BvJKXC_I3o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9zYFKU17Jz89Svma2BvJKXC_I3o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9zYFKU17Jz89Svma2BvJKXC_I3o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9zYFKU17Jz89Svma2BvJKXC_I3o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=JJ3bhABFdRU:TPahHtCaHvg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=JJ3bhABFdRU:TPahHtCaHvg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=JJ3bhABFdRU:TPahHtCaHvg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=JJ3bhABFdRU:TPahHtCaHvg:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/JJ3bhABFdRU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/4637100758301674648/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/07/google.html#comment-form" title="Komentarze (5)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4637100758301674648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4637100758301674648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/JJ3bhABFdRU/google.html" title="Google+" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/07/google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcESXg6cSp7ImA9WhZUE0w.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-8223285725988994864</id><published>2011-06-05T23:30:00.003+02:00</published><updated>2011-06-06T00:13:28.619+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T00:13:28.619+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="budowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="linkowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="kompilacja" /><title>Optymalizacja czasu budowania projektu.</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0cKiWtI5smo/Tev2e322gFI/AAAAAAAAAZ8/VS3OqHJ8JZY/s1600/binary-clock.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://3.bp.blogspot.com/-0cKiWtI5smo/Tev2e322gFI/AAAAAAAAAZ8/VS3OqHJ8JZY/s200/binary-clock.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-WXDVILuWvdI/Tev17clCZII/AAAAAAAAAZ4/Bk7TPXDqOBI/s1600/binary-clock.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
Planowałem na ten temat napisać spory artykuł. Od dłuższego czasu wszakże zbieram informacje, którymi chciałbym się z wami podzielić. Temat optymalizacji czasu budowania projektu jest naprawdę szeroki ;)&lt;br /&gt;
&lt;br /&gt;
Postanowiłem przeprowadzić pewne badania, które pozwolą mi określić jak wygląda "typowe" środowisko programistyczne. W tym celu bardzo prosiłbym Cię mój czytelniku o wypełnienie &lt;a href="https://spreadsheets.google.com/spreadsheet/viewform?formkey=dFgyZkU4ZENYenVPUHRKTGNRVlJ1Z2c6MQ"&gt;tej&lt;/a&gt; krótkiej ankiety.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-8223285725988994864?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KdOx8d3TIsnS6V8ZKtODGJEAzFQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KdOx8d3TIsnS6V8ZKtODGJEAzFQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KdOx8d3TIsnS6V8ZKtODGJEAzFQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KdOx8d3TIsnS6V8ZKtODGJEAzFQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Au1e93J0O-k:zs4i2DHksl4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=Au1e93J0O-k:zs4i2DHksl4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Au1e93J0O-k:zs4i2DHksl4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Au1e93J0O-k:zs4i2DHksl4:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/Au1e93J0O-k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/8223285725988994864/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/06/optymalizacja-czasu-budowania-projektu.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8223285725988994864?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8223285725988994864?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/Au1e93J0O-k/optymalizacja-czasu-budowania-projektu.html" title="Optymalizacja czasu budowania projektu." /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-0cKiWtI5smo/Tev2e322gFI/AAAAAAAAAZ8/VS3OqHJ8JZY/s72-c/binary-clock.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/06/optymalizacja-czasu-budowania-projektu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGQXw5fip7ImA9WhdTFE0.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-6193576510081027380</id><published>2011-03-22T09:31:00.005+01:00</published><updated>2011-07-11T19:33:40.226+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-11T19:33:40.226+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Opera Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="opera" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Być częścią sukcesu? Opera Mobile 11 dla Androida!</title><content type="html">&lt;a href="http://www.devblogi.pl/2009/09/jedna-rzecz-o-ktorej-powinien-wiedziec.html"&gt;Podobno&lt;/a&gt; każdy programista oprócz zdolności koderskich powinien także posiadać trochę zdolności marketingowych, by ostatecznie, to co zostało przez niego stworzone, mogło "zostać docenione przez lud".&lt;br /&gt;
&lt;br /&gt;
Zatem... ten post to nie jest jakaś cicha autopromocja, to nie jest nawet kryptoreklama, to jest moje jawne szkolenie się w tej dziedzinie i jawna głośna reklama tego, w czego produkcji maczałem palce :)&lt;br /&gt;
&lt;br /&gt;
Dlatego niniejszym chciałbym Wam przedstawić produkt nad którym pracował zespół, którego mam przyjemność być członkiem, produkt, który zostawia konkurencje daleko w tyle, produkt który sprawia, że używanie Internetu w urządzeniach mobilnych staje się czystą przyjemnością, produkt dla najdynamiczniej rozwijającego się systemu dla urządzeń mobilnych - Androida, produkt o nazwie:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Arial&amp;quot;, &amp;quot;Helvetica&amp;quot;, sans-serif;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Opera&lt;/span&gt; Mobile 11&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-clR4GG0dY9w/TYeDCOqsqBI/AAAAAAAAAWY/fN7ecK0CBkc/s1600/Opera_Mobile_for_Android.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="https://lh4.googleusercontent.com/-clR4GG0dY9w/TYeDCOqsqBI/AAAAAAAAAWY/fN7ecK0CBkc/s320/Opera_Mobile_for_Android.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Czy spodziewany przeze mnie sukces naprawdę okażę się sukcesem? To okazuje się dosłownie teraz, gdy stworzony przez nas program trafia w ręce milionów użytkowników. O 5:00 naszego czasu,&amp;nbsp;drugiego dnia wiosny Opera Mobile 11 trafiła do Android Market.&lt;br /&gt;
&lt;br /&gt;
Jeżeli chodzi o mnie to pierwszy raz mam okazję pracować w zespole wypuszczającym produkt na tak szeroki rynek globalny. Dotychczas były to mniejsze projekty, przeznaczone głównie dla danego kraju czy też konkretnego operatora komórkowego.&lt;br /&gt;
&lt;br /&gt;
Dosyć jednak o mnie! Dzisiaj bohaterem jest cudowna, niesamowita i pachnąca świeżością &lt;span style="color: red;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Arial&amp;quot;, &amp;quot;Helvetica&amp;quot;, sans-serif;"&gt;&lt;b&gt;Opera&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Arial&amp;quot;, &amp;quot;Helvetica&amp;quot;, sans-serif;"&gt;&lt;b&gt; Mobile 11&lt;/b&gt;&lt;/span&gt; :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chciałbym jednak podkreślić, że dzisiaj Opera wydała nowe wersje produktów Mini i Mobile na niemalże &lt;a href="http://www.opera.com/mobile/download/"&gt;wszystkie mobilne platformy&lt;/a&gt;! Ten wpis jednak poświęcę specjalnie Operze Mobile dla Androida, która jest w pełni funkcjonalną przeglądarką na urządzenia mobilne.&lt;br /&gt;
&lt;br /&gt;
a co w niej mamy najlepszego?&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Szybkość!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Gdy redaktorzy piszą o szybkości przeglądarek bardzo często przedstawiają garść wykresów, na których to widać ile milisekund przewagi w obsłudze JavaScriptu ma jedna przeglądarka nad drugą. Ja pominę ten punkt, lecz nie dlatego, że Opera nie ma się tutaj czym pochwalić, oj ma, ma ;) Lecz dlatego, że uważam, że dla użytkownika ważne są również inne kwestie, takie jak łatwość nawigowania się po stronie.&lt;br /&gt;
&lt;br /&gt;
Jeżeli korzystałeś wcześniej z mobilnych przeglądarek możesz kojarzyć "szachownicę", która pojawiała się np. podczas szybkiego przewijania stron.&lt;br /&gt;
&lt;br /&gt;
Efekt ten występuje obecnie choćby w mobilnym Firefoxie (4.0RC), czy w Safari na najnowszym iPhonie 4.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;b&gt;Jednak w Operze Mobile już nigdy więcej!&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-x9fZxVNUbIA/TYe6MkpcMzI/AAAAAAAAAXE/eDfd_cPbmIU/s1600/chessboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="614" src="https://lh6.googleusercontent.com/-x9fZxVNUbIA/TYe6MkpcMzI/AAAAAAAAAXE/eDfd_cPbmIU/s640/chessboard.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-3X3HIPQGB7g/TYeJqHKdsCI/AAAAAAAAAWc/U0irgt9sBto/s1600/firefox-szachownica2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Domyślna Androidowa przeglądarka, którą jest WebKit (zazwyczaj ukrywająca się pod ikonką ze słowem Browser lub Internet), szachownicy nie wyświetla, ale jak tylko nie nadąża z wyświetlaniem strony np. przy jej szybkim przewijaniu po prostu się przycina i zaczyna renderować stronę skokowo.. (spróbujcie np. na stronie pudelek.pl ;) )&lt;br /&gt;
&lt;br /&gt;
Z wersją 11. mobilnej Opery możesz zapomnieć o takich niedogodnościach! Śmigamy na wszystkich telefonach, począwszy od Androida 1.6 aż do najnowszej!&lt;br /&gt;
&lt;br /&gt;
co jeszcze mamy nowego?&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Flash!&lt;/span&gt;&lt;span style="font-size: x-large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tak! Mając na swoim Androidzie zainstalowanego z AndroidMarketu FlashPlayer'a firmy Adobe, będziesz mógł cieszyć się w pełni multimedialnymi stronami w swojej mobilnej przeglądarce!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-z96Oqsedgks/TYetp-LUxiI/AAAAAAAAAWw/fVL8UEwrJ0k/s1600/flash_combine_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="577" src="https://lh3.googleusercontent.com/-z96Oqsedgks/TYetp-LUxiI/AAAAAAAAAWw/fVL8UEwrJ0k/s640/flash_combine_1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Oglądanie filmów na stronie lub w trybie pełnego ekranu, prezentuje się o klasę wyżej niż u konkurencji i to wam mogę zagwarantować, gdyż o to osobiście zadbało dwóch moich kolegów z biurek obok ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Super, od teraz możemy się cieszyć serwisami takimi jak youtube, jednak ktoś mógłby powiedzieć, "ale Flash, to też przecież głupie reklamy na stronach..".&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Mając ale i na to mamy rozwiązanie:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Odtwarzaj po kliknięciu!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Mechanizm ClickToPlay, to recepta na szybki internet z Flashem na żądanie. To użytkownik decyduje co i kiedy chce oglądać. Jak? Zwykłym kliknięciem:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-YL1XrkYvQFM/TYevsTsHKJI/AAAAAAAAAW0/4I_X2zlKzkI/s1600/joe_click2play.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh4.googleusercontent.com/-YL1XrkYvQFM/TYevsTsHKJI/AAAAAAAAAW0/4I_X2zlKzkI/s320/joe_click2play.png" width="192" /&gt;&lt;/a&gt;&lt;a href="https://lh3.googleusercontent.com/--2lNUPI0L_U/TYevvielexI/AAAAAAAAAW4/Bh5nKgkfeEI/s1600/joe_click2play_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh3.googleusercontent.com/--2lNUPI0L_U/TYevvielexI/AAAAAAAAAW4/Bh5nKgkfeEI/s320/joe_click2play_2.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Rzecz całkowicie konfigurowalna, tak byś Ty mógł zdecydować, czy Flasha chcesz mieć zawsze, czasem lub praktycznie nigdy:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-XWWOwbov5Pc/TYeyZDEw6VI/AAAAAAAAAW8/Yqub-YFhiMQ/s1600/click_to_play.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="https://lh4.googleusercontent.com/-XWWOwbov5Pc/TYeyZDEw6VI/AAAAAAAAAW8/Yqub-YFhiMQ/s400/click_to_play.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Tak gdybyście przypadkiem nie wiedzieli, to tradycyjna &lt;a href="http://www.opera.com/browser/"&gt;Opera&lt;/a&gt; również posiada taką funkcjonalność, którą można włączyć w:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Menu -&amp;gt; Ustawienia -&amp;gt; Preferencje -&amp;gt; Zaawansowane -&amp;gt; Zawartość -&amp;gt; Włącz Obsługę wtyczek tylko na żądanie&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Uszczypnij by przybliżyć&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Odkąd Apple zaprezentował ów pomysł w 2007 roku, pinch-to-zoom jest jedną z funkcjonalności, którą musi mieć każda aplikacja chcąca zwojować serca użytkowników. Opera udoskonaliła ten mechanizm w swojej przeglądarce, by móc zapewniać niezwykle "gładkie" przejścia pomiędzy kolejnymi stopniami przybliżenia strony, w jakich nie sposób się zakochać. Ową funkcjonalnością mogą się cieszyć wszyscy posiadacze telefonów wspierających technologie multitouch.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;i oglądaj stronę w optymalnej formie&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Szerokość paragrafu z tekstem w bardzo dynamiczny sposób dostosowuje się do bieżącego rozmiaru strony:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-2dBnDG7gWDg/TYebSdUcSVI/AAAAAAAAAWg/CH4DnNtTZ1U/s1600/zoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="https://lh5.googleusercontent.com/-2dBnDG7gWDg/TYebSdUcSVI/AAAAAAAAAWg/CH4DnNtTZ1U/s640/zoom.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
a to pozwala cieszyć się zawartością strony i wygodnie ją przeglądać w każdej sytuacji.&lt;br /&gt;
&lt;br /&gt;
Pomimo, że ta funkcjonalność na co dzień jest niezwykle przydatna, to udostępniliśmy możliwość szybkiej jej wyłączenia, na wypadek, gdyby owo zachowanie nie było pożądane w przypadku niektórych stron:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-7mg-XoGJ840/TYedcfhHAbI/AAAAAAAAAWk/WpQxA3l6jmo/s1600/wrapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="https://lh4.googleusercontent.com/-7mg-XoGJ840/TYedcfhHAbI/AAAAAAAAAWk/WpQxA3l6jmo/s400/wrapping.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Skocz do miejsca w którym chcesz się znaleźć, migiem!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opera nie jeden raz wprowadzała funkcjonalności, które potem stawały się standardem wśród nowoczesnych przeglądarek, jak choćby przeglądanie w kartach czy speed-dial. Po raz kolejny Opera wyznacza standardy wprowadzając coś funkcjonalnego, pięknego i genialnego w swojej prostocie.&lt;br /&gt;
&lt;br /&gt;
Oto przed wami inteligentne przyciski "skocz do początku/końca strony" :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-5z6DZu7kY6g/TYekflzgJKI/AAAAAAAAAWo/y-uZEskzFO0/s1600/page_up_down.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="524" src="https://lh6.googleusercontent.com/-5z6DZu7kY6g/TYekflzgJKI/AAAAAAAAAWo/y-uZEskzFO0/s640/page_up_down.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Przy bardzo długich stronach (a takich w Internecie jest coraz więcej), czasami chcemy błyskawicznie znaleźć się na jednym z jej krańców. W komputerach pomocne w takich sytuacjach są klawisze Home i End:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-m4BiKI9iIUg/TYel4CZYkSI/AAAAAAAAAWs/pitq3Ca0e3Q/s1600/home_end.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-m4BiKI9iIUg/TYel4CZYkSI/AAAAAAAAAWs/pitq3Ca0e3Q/s1600/home_end.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Gdy Opera wykryje, że dynamizm Twojego ruchu wskazuje na to, że chcesz szybko przedostać się &amp;nbsp;w inny rejon strony, Opera przyjdzie Ci z pomocą. Inteligencja tego mechanizmu zagwarantuje Ci, że owe przyciski pojawiać się będą tylko wówczas gdy możesz zechcieć ich użyć. A gdy już zechcesz to zrobić, to będziesz się zastanawiał jak mogłeś żyć bez tego!&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Nie musisz mieć palców jak patyczki by klikać celnie w linki ;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Z Operą możesz śmiało próbować klikać w linki nawet gdy strony nie zdążyłeś jeszcze przybliżyć. Jeżeli Ci się nie uda, Opera Ci pomoże :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-zpBZzgDig9c/TYfCgHyrkHI/AAAAAAAAAXI/u-3blBrq3tY/s1600/links.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-2HJPDnbUvWs/TYfCkd2Sg7I/AAAAAAAAAXM/2sCcB3yb7Qw/s1600/linki.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="500" src="https://lh3.googleusercontent.com/-2HJPDnbUvWs/TYfCkd2Sg7I/AAAAAAAAAXM/2sCcB3yb7Qw/s640/linki.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
To jeden z malutkich dodatków, które naprawdę potrafią umilić życie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Usprawniona Geolokacja&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-79uDHPlaitw/TYfFeDPckII/AAAAAAAAAXU/RvT6g5Ln6uw/s1600/geo_per.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh4.googleusercontent.com/-79uDHPlaitw/TYfFeDPckII/AAAAAAAAAXU/RvT6g5Ln6uw/s400/geo_per.png" width="240" /&gt;&lt;/a&gt;&lt;a href="https://lh4.googleusercontent.com/-rBKgvsFY1Ys/TYfDXURXxyI/AAAAAAAAAXQ/d9tc5wkkh_s/s1600/geolocation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh4.googleusercontent.com/-rBKgvsFY1Ys/TYfDXURXxyI/AAAAAAAAAXQ/d9tc5wkkh_s/s400/geolocation.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Zgodnie z duchem HTML5, Opera wspiera także Geolokację, od teraz już w całkowicie. A funkcjonalność ta jest niezwykle ważna z kilku powodów, a główny to ten, że geolokację robiłem &lt;b&gt;ja&lt;/b&gt; :) Od Wersji Opery 11. geolokacja (w zależności od ustawień w telefonie) może odbywać się za pomocą danych udostępnianych przez połączenia WiFi, GPS lub także z pomocą sygnałów z wież operatorów komórkowych. Geolokacja odbywa wyłącznie gdy użytkownik wyrazi na to zgodę oraz gdy globalne ustawienia telefonu na to pozwalają.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Podsumowanie&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Na koniec nie pozostaje mi nic innego jak tylko przedstawić wam filmik prezentujący owe dzieło w pełnej krasie:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/aKdp9JY57h8" title="YouTube video player" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Posiadaczy Androida odsyłam do &lt;a href="https://market.android.com/details?id=com.opera.browser"&gt;strony Opery Mobile w Android Markecie&lt;/a&gt;. A wszystkich czytelników zapraszam do wyrażania opinii... zarówno tych pozytywnych jak i negatywnych (wówczas tylko prosiłbym o konstruktywne wypowiedzi ;) )&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[EDIT]:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Portal dobreprogramy.pl opublikował właśnie bardzo fajny filmik przedstawiający trochę szerzej całą paletę nowych mobilnych przeglądarek Opery:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" bgcolor="#000000" flashvars="file=http://storage.dobreprogramy.pl/video/Demo-OperaMiniMobile-360p.mp4&amp;amp;image=http://www.dobreprogramy.pl/ImageProxy.ashx?file=Video/20110321194034.jpg&amp;amp;provider=http&amp;amp;plugins=hd-1,gapro-1&amp;amp;hd.file=http://storage.dobreprogramy.pl/video/Demo-OperaMiniMobile-720p.mp4&amp;amp;gapro.accountid=UA-3114185-1&amp;amp;gapro.idstring=Demo-OperaMiniMobile-360p.mp4" height="294" id="ply" name="ply" quality="high" src="http://storage.dobreprogramy.pl/video/player/player.swf" type="application/x-shockwave-flash" width="480"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-6193576510081027380?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dm_tHtl4et_MPOx14AVEtKecJOw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dm_tHtl4et_MPOx14AVEtKecJOw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dm_tHtl4et_MPOx14AVEtKecJOw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dm_tHtl4et_MPOx14AVEtKecJOw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=L8K_ErOWNMw:_MNZRnZtwIA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=L8K_ErOWNMw:_MNZRnZtwIA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=L8K_ErOWNMw:_MNZRnZtwIA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=L8K_ErOWNMw:_MNZRnZtwIA:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/L8K_ErOWNMw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/6193576510081027380/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/03/byc-czescia-sukcesu-opera-mobile-11-dla.html#comment-form" title="Komentarze (12)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/6193576510081027380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/6193576510081027380?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/L8K_ErOWNMw/byc-czescia-sukcesu-opera-mobile-11-dla.html" title="Być częścią sukcesu? Opera Mobile 11 dla Androida!" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-clR4GG0dY9w/TYeDCOqsqBI/AAAAAAAAAWY/fN7ecK0CBkc/s72-c/Opera_Mobile_for_Android.jpg" height="72" width="72" /><thr:total>12</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/03/byc-czescia-sukcesu-opera-mobile-11-dla.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMCQnY9eyp7ImA9WhZTE0g.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-6157234918388029000</id><published>2011-03-17T11:07:00.000+01:00</published><updated>2011-03-17T11:07:43.863+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T11:07:43.863+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="GCOTD" /><title>Show git branches by date</title><content type="html">Zapragnąłem mieć taką funkcjonalność, git jednak takiej nie dostarcza.&lt;br /&gt;
&lt;br /&gt;
Poszukałem i okazało się, że ponownie &lt;a href="http://www.commandlinefu.com/commands/view/2345/show-git-branches-by-date-useful-for-showing-active-branches"&gt;commandlinefu&lt;/a&gt; proponuje całkiem niezłe rozwiązanie, dające w efekcie:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GFeYuRGbNXU/TYHcLRv_uXI/AAAAAAAAAWQ/12eYo8vdrpc/s1600/git%2Bbranch%2Bshow%2Bby%2Bdate.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-GFeYuRGbNXU/TYHcLRv_uXI/AAAAAAAAAWQ/12eYo8vdrpc/s1600/git%2Bbranch%2Bshow%2Bby%2Bdate.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A to kod potrafiący robić takie cudeńko:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash;gutter: false;"&gt;for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k|head -n 1`\\t$k;done|sort -r
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-6157234918388029000?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D65Lk8Wm9AbyR-mnhF7KxKvhl4Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D65Lk8Wm9AbyR-mnhF7KxKvhl4Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D65Lk8Wm9AbyR-mnhF7KxKvhl4Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D65Lk8Wm9AbyR-mnhF7KxKvhl4Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uBbBQLn9i5w:3N_pJKpUEgw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=uBbBQLn9i5w:3N_pJKpUEgw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uBbBQLn9i5w:3N_pJKpUEgw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uBbBQLn9i5w:3N_pJKpUEgw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/uBbBQLn9i5w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/6157234918388029000/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/03/show-git-branches-by-date.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/6157234918388029000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/6157234918388029000?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/uBbBQLn9i5w/show-git-branches-by-date.html" title="Show git branches by date" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-GFeYuRGbNXU/TYHcLRv_uXI/AAAAAAAAAWQ/12eYo8vdrpc/s72-c/git%2Bbranch%2Bshow%2Bby%2Bdate.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/03/show-git-branches-by-date.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AEQHw6eSp7ImA9Wx9aGUs.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-3389648421272274861</id><published>2011-03-12T08:03:00.004+01:00</published><updated>2011-03-12T22:35:01.211+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-12T22:35:01.211+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="każdy kiedyś zaczynał" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><category scheme="http://www.blogger.com/atom/ns#" term="liczby pseudolosowe" /><title>"Kazdy kiedyś zaczynał" - symulator losowania lotto</title><content type="html">Pierwszy wpis z serii "&lt;a href="http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-czyli-jak-nie.html"&gt;każdy kiedyś zaczynał&lt;/a&gt;" o której pisałem ostatnio, zostanie poświęcony na omówienie krótkiego programiku, który miał symulować maszynę losującą Dużego Lotka. Postaram się w nim wytknąć SOBIE wszystkie błędy jakie popełniłem w niedzielę, 15 lutego 2004 roku o godzinie 15:16, uznając ten program za skończony (data ostatniej modyfikacji pliku ;) )&lt;br /&gt;
&lt;br /&gt;
Kod źródłowy owego programu przedstawia się jak niżej. Chciałbym zaznaczyć, że jest to oryginalny kod, niemodyfikowany na potrzeby tego wpisu.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#include&amp;lt;iostream.h&amp;gt;
#include&amp;lt;conio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;

int i,j,tab[6],k=0,il;
void main()
{
clrscr();
cout&amp;lt;&amp;lt;"To jest program nasladujacy losowania Duzego Lotka.\n";
cout&amp;lt;&amp;lt;"Jaka liczbe losowan wykonac: ";
cin&amp;gt;&amp;gt;il;
randomize();
do{
i=0;
do{
tab[i]=random(50);j=0;
  while(j!=i||tab[i]==0)
  {if(tab[i]==tab[j]||tab[i]==0)
       {i--;j=i-1;}
       j++;
  }
  i++;
  }
while(i!=6);
i=0;
cout&amp;lt;&amp;lt;" Losowanie nr "&amp;lt;&amp;lt;k+1&amp;lt;&amp;lt;":";
do{
cout&amp;lt;&amp;lt;"\t\b\b"&amp;lt;&amp;lt;tab[i]&amp;lt;&amp;lt;",";
  i++;
  }
while (i!=6);
cout&amp;lt;&amp;lt;endl;
k++;}
while (k!=il);
getch();
}
&lt;/pre&gt;&lt;br /&gt;
Jeżeli chciałbyś nauczyć się czegoś z tego wpisu, to prosiłbym Cię teraz, byś przed przeczytaniem dalszej części posta zastanowił się chwilę i sam się postarał wyłapać wszystkie błędy merytoryczne, składniowe i logiczne.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Zanim przejdę do omawiania błędów, chciałbym napisać co błędem nie jest (a raczej nie było, jak pisałem ów program)...&lt;br /&gt;
&lt;br /&gt;
Na samym początku programu włączam biblioteki:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#include&amp;lt;iostream.h&amp;gt;
#include&amp;lt;conio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;span style="color: red;"&gt;Tych bibliotek w dzisiejszych czasach NIE należy stosować!&lt;/span&gt; Biblioteki &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;iostream.h&lt;/span&gt; oraz &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;stdlib.h&lt;/span&gt; mają swoje nowsze, ustandaryzowane odpowiedniki (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;iostream&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cstdlib&lt;/span&gt;), które dostarczają takie same funkcje, lecz m.in. opakowują całość w przestrzeń nazw (namespace) &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;std&lt;/span&gt;. Standard C++ wszedł w życie w 98r, sam kompilator w którym pisałem kod pochodził z 92r, więc zastosowanie ich przeze mnie, wówczas było w pełni uzasadnione. Biblioteka &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;conio.h&lt;/span&gt; była pomocna przy tworzeniu tekstowego interfejsu użytkownika w systemach takich jak MS-DOS. Nie jest ona obecnie częścią żadnego standardu. W latach 90-tych była jednak dość popularna.&lt;br /&gt;
&lt;br /&gt;
Wywołania takich funkcji jak &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;clrscr&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;getch&lt;/span&gt; w śodowisku w jakim uruchamiałem program również były uzasadnione, ale o tym później.&lt;br /&gt;
&lt;br /&gt;
W dzisiejszym poście błędy będę tylko wytykać. Nie przedstawię jednak dzisiaj prawidłowego rozwiązania. Podczas pisania tego wpisu doszedłem do wniosku, że całość była by zdecydowanie za długa. Chciałbym Was zmotywować, byście spróbowali sami coś stworzyć mając na uwadze wszystkie poniższe wskazówki.&lt;br /&gt;
&lt;br /&gt;
Na początek błędy, które rzucają się od razu w oczy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Ten kod jest brzydki!&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Początkującym programistom bardzo ciężko wytłumaczyć, co to znaczy &lt;i&gt;ładny kod&lt;/i&gt;. By wyrobić sobie ten "zmysł" potrzeba odrobiny doświadczenia. By go nabyć, należy dużo samemu pisać, czasami spojrzeć na obcy kod (i na ten ładny i ten brzydki ;) ). Jednak uważam, że mój stary kod nie wygląda tragicznie. Pomimo, że wcięcia są nieprawidłowe i stosowane są nie konsekwentnie, to jednak samo nawiasowanie jest nie najgorsze. Nawias klamrowy zazwyczaj znajduje się w tym samej kolumnie co drugi jemu odpowiadający (zazwyczaj, ale nie zawsze...).&lt;br /&gt;
&lt;br /&gt;
Nie bez powodu rozpocząłem właśnie od tego "błędu". Przez początkujących programistów jest on lekceważony, bo "&lt;i&gt;przecież nieważne jak program wygląda, skoro działa&lt;/i&gt;". Wielokrotnie spotykałem się właśnie z taką argumentacją np. udzielając korepetycji. Prawda jest taka, że pisząc "ładny kod", chronisz siebie, przed popełnianiem kolejnych błędów, dlatego (uwierz mi proszę!), gdy osoba, której pokazujesz kod, mówi Ci, że jest brzydko napisany lub źle sformatowany, to nie robi tego dlatego, że inny styl jej się wygodniej czyta, lecz dlatego by uchronić Cię przed naprawdę głupimi i trudnymi do wykrycia błędami.&lt;br /&gt;
&lt;br /&gt;
Jakie konkretniej błędy są tutaj popełnione? Funkcja &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main&lt;/span&gt;, pomimo, że jest wyjątkowa, ciągle jest jednak tylko funkcją. Ciało funkcji zawsze powinno być wcięte (zwyczajowo albo o jeden znak tabulacji, albo o kilka znaków spacji (najczęściej 4)).&lt;br /&gt;
&lt;br /&gt;
zatem źle jest:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int nazwaFunkcji(double liczba)
{
cout&amp;lt;&amp;lt;"jakis tekst\n";
return liczba + 0.5;
}
&lt;/pre&gt;&lt;br /&gt;
gdyż powinno być raczej (tzw. formatowanie Allman-ANSII):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int nazwaFunkcji(double liczba)
{
    cout&amp;lt;&amp;lt;"jakis tekst\n";
    return liczba + 0.5;
}
&lt;/pre&gt;&lt;br /&gt;
lub ewentualnie (formatowanie K&amp;amp;R)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int nazwaFunkcji(double liczba) {
    cout&amp;lt;&amp;lt;"jakis tekst\n";
    return liczba + 0.5;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Analizujmy dalej. W linijkach 17-21 aż roi się od błędów:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 17"&gt;while(j!=i||tab[i]==0)
  {if(tab[i]==tab[j]||tab[i]==0)
       {i--;j=i-1;}
       j++;
  }
&lt;/pre&gt;&lt;br /&gt;
Jeżeli już koniecznie chcemy &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;if&lt;/span&gt; umieścić zaraz pod &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt;, by nie marnować miejsca na pustą linijkę, to powinniśmy wówczas jednak stosować konwencje&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 17"&gt;while(j!=i||tab[i]==0) {
  


}
&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;if&lt;/span&gt; powinien być wcięty względem &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt;, czyli powinno być  raczej tak:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 17"&gt;while(j!=i||tab[i]==0)
{
    if(tab[i]==tab[j]||tab[i]==0)
        {i--;j=i-1;}
        j++;
}
&lt;/pre&gt;&lt;br /&gt;
Jest lepiej, jednak w powyższym kodzie, tak jak i w oryginalnym ciągle istnieje bardzo błędogenny zapis, a mianowicie&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 19"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(tab[i]==tab[j]||tab[i]==0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{i--;j=i-1;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j++;
&lt;/pre&gt;&lt;br /&gt;
Zwróćmy uwagę na to, że obie linijki są wcięte (co mogło by sugerować, że obie wcięte linijki wykonają się tylko wówczas gdy warunek z instrukcji &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;if&lt;/span&gt; zostanie spełniony. Tak mogłoby to być odczytane gdyż powszechnie stosuje się właśnie zasadę: "względem if powinien być wcięty tylko ten kod, który jest od zależny".&lt;br /&gt;
&lt;br /&gt;
Kwestią dyskusyjną jest fakt, czy w ogóle dopuszczalne jest zapisywanie dwóch poleceń w jednej linii. Pewne jest natomiast to, że istnieje duża grupa osób, które mówią, że tak nie należy robić, gdyż może to później utrudniać ewentualne debugowanie (które jest robione przecież linijka, po linijce)&lt;br /&gt;
&lt;br /&gt;
zatem zdecydowanie lepszym kodem byłoby:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 17"&gt;while(j!=i||tab[i]==0)
{
    if(tab[i]==tab[j]||tab[i]==0)
    {
        i--;
        j=i-1;
    }
    
    j++;
}
&lt;/pre&gt;&lt;br /&gt;
lub stosując bardziej zwięzłą konwencje K&amp;amp;R:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 17"&gt;while(j!=i||tab[i]==0) {
    if(tab[i]==tab[j]||tab[i]==0) {
        i--;
        j=i-1;
    }
    
    j++;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Oczywiście piszę że tak było by lepiej, co jednak nie oznacza, że tak było by dobrze ;) Mam nadzieję, że co niektórzy zauważyli, że część tej pętli jest tutaj w ogóle nie potrzebna! Wrócimy do tego później ;)&lt;br /&gt;
&lt;br /&gt;
Wiele rzeczy można też powiedzieć na temat następnej pętli z linijek 27-31:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 27"&gt;do{
cout&amp;lt;&amp;lt;"\t\b\b"&amp;lt;&amp;lt;tab[i]&amp;lt;&amp;lt;",";
  i++;
  }
while (i!=6);
&lt;/pre&gt;&lt;br /&gt;
Zawartość tej pętli &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;do{}while();&lt;/span&gt; powinna być wcięta w obu linijkach (zarówno &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cout&lt;/span&gt; jak i &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i++&lt;/span&gt;). W pierwotnym kodzie lekko przesunięty nawias w linijce nr 30 zapewne swoje miejsca znalazł właśnie tam, by być dokładnie pod swoim odpowiednikiem z lini 27. Jest w tym pewna logika, jednak raczej częściej się stosuje zapis:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 27"&gt;do
{
    cout&amp;lt;&amp;lt;"\t\b\b"&amp;lt;&amp;lt;tab[i]&amp;lt;&amp;lt;",";
    i++;
} 
while (i!=6);
&lt;/pre&gt;&lt;br /&gt;
lub krócej&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 27"&gt;do 
{
    cout&amp;lt;&amp;lt;"\t\b\b"&amp;lt;&amp;lt;tab[i]&amp;lt;&amp;lt;",";
    i++;
} while (i!=6);
&lt;/pre&gt;&lt;br /&gt;
Dobra... idziemy dalej.&lt;br /&gt;
&lt;br /&gt;
Jeżeli patrząc na linijkę 33 wiesz (i jesteś od razu pewny), jaki obszar domyka zamykający nawias klamrowy, to jesteś naprawdę niezły ;) &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 6;highlight: [33]"&gt;void main()
{
clrscr();
cout&amp;lt;&amp;lt;"To jest program nasladujacy losowania Duzego Lotka.\n";
cout&amp;lt;&amp;lt;"Jaka liczbe losowan wykonac: ";
cin&amp;gt;&amp;gt;il;
randomize();
do{
i=0;
do{
tab[i]=random(50);j=0;
  while(j!=i||tab[i]==0)
  {if(tab[i]==tab[j]||tab[i]==0)
       {i--;j=i-1;}
       j++;
  }
  i++;
  }
while(i!=6);
i=0;
cout&amp;lt;&amp;lt;" Losowanie nr "&amp;lt;&amp;lt;k+1&amp;lt;&amp;lt;":";
do{
cout&amp;lt;&amp;lt;"\t\b\b"&amp;lt;&amp;lt;tab[i]&amp;lt;&amp;lt;",";
  i++;
  }
while (i!=6);
cout&amp;lt;&amp;lt;endl;
k++;}
while (k!=il);
getch();
}
&lt;/pre&gt;&lt;br /&gt;
Szukając odpowiedzi na to pytanie, nasz wzrok podąża do góry. Napotyka na słowo kluczowe &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt; z linijki 31. Czytając kod pobieżnie można by wysunąć wniosek, że to właśnie tę pętle zamykał owy nawias, co jak się okazuje prawdą nie jest!&lt;br /&gt;
&lt;br /&gt;
Średnik znajdujący się za słowem &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt;, może nam sugerować, że jest to pętla &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;do{}while( );&lt;/span&gt; a nie pętla &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt;, tak jest właśnie i w tym przypadku. Po głębszej analizie okazuje się, że nawias z 33 linijki zamyka obszar rozpoczęty w linijce 13. Kto jest zdziwiony? :) Nawet ja, czyli autor kodu ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Formatowanie kodu, to naprawdę temat rzeka. Jest to również często temat lekceważony przez początkujących adeptów sztuki programowania. &lt;b&gt;Nie istnieje idealny styl formatowania&lt;/b&gt;, jednak ludzkość dorobiła się kilku takich, które mają stosunkowo mało wad i dość dużą liczbę zalet. Postaraj się zatem używać formatowania z większą liczba zalet ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Nazwy zmiennych oraz zmienne globalne&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Zacznijmy omawianie błędów merytorycznych. Jak widzimy w linijce 5, na raz poza obszarem funkcji &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main &lt;/span&gt;deklaruję 4 zmienne typu &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;int&lt;/span&gt; oraz jedną 6 elementową tablicę tego samego typu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 3;highlight: [5]"&gt;#include&amp;lt;stdlib.h&amp;gt;

int i,j,tab[6],k=0,il;
void main()
&lt;/pre&gt;&lt;br /&gt;
Czy to jest błąd? Nie do końca, ale tak nie wyglądałby idealny kod. Jeżeli zadajesz sobie pytanie, dlaczego umieściłem je kiedyś właśnie akurat tam, to muszę Ci powiedzieć, że na szczęście pamiętam uzasadnienie mojej decyzji. Zmienne deklarowane jako globalne (poza zakresem jakiejś funkcji) są inicjalizowane zerami ([TODO]potrzebny cytat ze standardu). Prawda jest taka, że kiedyś o tym fakcie dowiedziałem się w liceum od swojego nauczyciela informatyki. Chyba starałem się używać tego sposobu, by samemu nie zapominać o zerowaniu zmiennych. Choć w tym tłumaczeniu nie pasuje jeden fakt... to po co w takim razie zerowałem tam zmienną &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;k&lt;/span&gt;? :) Nie potrafię tego wyjaśnić ;)&lt;br /&gt;
&lt;br /&gt;
Nazwy zmiennych &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;j&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;k&lt;/span&gt; zostały wbrew pozorom dobrane całkiem nieźle. Tymi nazwami zwykle się obdarza zmienne służące za liczniki w pętlach. Patrząc na cały program można stwierdzić, że właśnie taką rolę odgrywają te trzy &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;int&lt;/span&gt;y, pomagając liczyć kolejne obiegi poszczególnych pętli. Jednak skoro doskonale zdawałem sobie sprawę z ich roli, to powinienem też się postarać, by ich deklaracja była blisko miejsca ich użytkowania. Dużo czytelniejszym rozwiązaniem było by deklarowanie ich tuż przed konkretną pętlą (a nawet tak jakby w jej części... bo prawda jest taka, że lepiej było by tutaj zastosować pętle &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;for&lt;/span&gt;, która umożliwia deklaracje zmiennych w pierwszym "obszarze").&lt;br /&gt;
&lt;br /&gt;
Nazwa zmiennej &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;il&lt;/span&gt; powinna być dobrana lepiej. W tym programie do tej zmiennej będzie wczytywana wartość mająca oznaczać żądaną liczbę losowań do wykonania, zatem naprawdę nie ma zbyt wielu powodów, dla których nie należałoby tej zmiennej po prostu nazwać np. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;liczba_losowan&lt;/span&gt;. Długie nazwy nie są takie złe. Łatwiej odgadnąć znaczenie takich zmiennych, gdy ich nazwa niesie ze sobą jakąś informację.&lt;br /&gt;
&lt;br /&gt;
Zauważyłem jednak że we wszystkich swoich wcześniejszych programach miałem tendencję to używania bardzo krótkich nazw. Nie jestem tego teraz pewien dlaczego, ale być może robiłem to ze względu na to, że przy krótkich nazwach zmiennych, trudniej mi było robić literówki. Jeżeli tak było, to mój "sposób" (czyli nadawanie krótkich nazw) był tylko niepotrzebnym obejściem problemu. Znacznie wygodniej jest korzystać bowiem z podpowiadania nazw zmiennych, które zapewniają najpopularniejsze IDE (o tym napiszę chyba kiedyś innego posta ;) )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Funkcja &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To że coś działa, nie znaczy że jest poprawne i będzie działać zawsze i wszędzie. W linijce 6. mamy tego przykład. Wykonywanie programu zaczyna się od wywołania funkcji &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 6;"&gt;void main()
&lt;/pre&gt;&lt;br /&gt;
Mógłbym się bronić, że wszystko jest ok, ponieważ mój kompilator jakiego używałem nie zgłaszał żadnych rozczeń , jednak nowsze kompilatory, czegoś takiego by mi nie przepuściły bez słowa i z pewnością przypomniały by mi, że funkcja main, powinna zwracać wartość typu int, a dokładniej wartość 0 w przypadku bezproblemowego zakończenia z programu, oraz wartość błędu w innym przypadku.&lt;br /&gt;
&lt;br /&gt;
Obecnie zatem prawidłowy szkielet mógłby wyglądać tak:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int main()
{
    return 0;
}
&lt;/pre&gt;&lt;br /&gt;
ale o tym, jakie są również inne sposoby poprawnego zapisu funkcji &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main&lt;/span&gt;&amp;nbsp;oraz parę ciekawostek na jej temat napiszę w innym wpisie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Funkcje&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;clrscr&lt;/span&gt; oraz &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
W liniach nr 8 i 12 wywoływałem wspomniane już funkcje.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 6;highlight: [8, 12];"&gt;void main()
{
clrscr();
cout&amp;lt;&amp;lt;"To jest program nasladujacy losowania Duzego Lotka.\n";
cout&amp;lt;&amp;lt;"Jaka liczbe losowan wykonac: ";
cin&amp;gt;&amp;gt;il;
randomize();
&lt;/pre&gt;&lt;br /&gt;
Popatrzmy co na ich temat mówił help mojego ówczesnego kompilatora:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-Ec3WdqNLKEU/TXr_YdfvbRI/AAAAAAAAAWA/0oXz1CkhIms/s1600/clrscr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-Ec3WdqNLKEU/TXr_YdfvbRI/AAAAAAAAAWA/0oXz1CkhIms/s1600/clrscr.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Funkcja &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;clrscr&lt;/span&gt;, czyści cały ekran i umieszcza kursor w lewym górnym rogu ekranu. Wywołanie tej funkcji było poprawne, jednak w dzisiejszych czasach chcąc osiągnąć podobny efekt lepiej wywołać np:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;system("cls"); //dla systemów z rodziny Windows
&lt;/pre&gt;oraz&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;system("clear"); //dla systemów z rodziny Unix
&lt;/pre&gt;&lt;br /&gt;
Okazuje się, że druga funkcja &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize &lt;/span&gt;wcale funkcją być nie musi. Mój ulubiony help pisał o niej tak:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-C0pOhFjddrE/TXsCIlAt2uI/AAAAAAAAAWE/tKG_mhgeurE/s1600/randomize.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-C0pOhFjddrE/TXsCIlAt2uI/AAAAAAAAAWE/tKG_mhgeurE/s1600/randomize.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Wywołanie tej funkcji to tak jakby "rozkręcenie maszyny losującej", potrzebne by funkcja losująca faktycznie zwracała względnie losowe wartości. Z pomocy kompilatora Borland dowiadujemy się, że &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize &lt;/span&gt;to tak naprawdę macro (co jak sprawdziłem, też nie zawsze jest prawdą :P ). Ponadto okazuje się, że program w ogóle nie powinien mi działać, gdyż zgodnie z instrukcją nie dołączyłem &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;#include&amp;lt;time.h&amp;gt;&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Skoro &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize &lt;/span&gt;nie jest ani funkcją ani makrem, to czym jest? Okazuje się że czasem funkcją a czasem makrem. Oto fragment pliku &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;STDLIB.H&lt;/span&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 184;highlight: [184, 189, 191, 193, 197];"&gt;#ifdef __cplusplus
inline int _Cdecl random(int __num)
                 { return(int)(((long)rand()*__num)/(RAND_MAX+1)); }
/* need prototype of time() for C++ () */
extern "C" long _Cdecl _FARFUNC time(long _FAR *);
inline void _Cdecl randomize(void) { srand((unsigned) time(NULL)); }
inline int  _Cdecl atoi(const char _FAR *__s) { return (int) atol(__s); }
#else
#define random(num)(int)(((long)rand()*(num))/(RAND_MAX+1))
#define randomize()     srand((unsigned)time(NULL))
#define max(a,b)    (((a) &amp;gt; (b)) ? (a) : (b))
#define min(a,b)    (((a) &amp;lt; (b)) ? (a) : (b))
#define atoi(s)     ((int) atol(s))
#endif
&lt;/pre&gt;&lt;br /&gt;
W zależności od tego, czy program był pisany w języku C lub C++ &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize &lt;/span&gt;przybierał postać funkcji lub makra. W tym konkretnym przypadku mieliśmy do czynienia z funkcją. Tak czy inaczej powinienem w swoim programie dołączać plik nagłówkowy &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;time.h&lt;/span&gt;, czego nie robiłem. Nie do końca jestem pewien, dlaczego zatem cały program w ogóle się kompiluje. Zakładam, że któraś z innych bibliotek dołącza ją przy okazji. Żaden programista nie powinien liczyć na takie "przy okazji", gdyż bardzo by się zdziwił, gdyby po usunięciu innego wydawałoby się niepotrzebnego &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;include&lt;/span&gt;'a, nagle wszystko przestało by działać.&lt;br /&gt;
&lt;br /&gt;
Jeżeli chodzi o dwa polecenia &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cout&lt;/span&gt; z linijki 9 i 10 zawierające się pomiędzy wywołaniami &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;clrscr&lt;/span&gt; i &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;randomize&lt;/span&gt;, nie czepiam się ich.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Liczby (pseudo)losowe&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A teraz czas na mój ulubiony fragment tego programu, a mianowicie:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; first-line: 16;"&gt;tab[i]=random(50);j=0;
  while(j!=i||tab[i]==0)
  {if(tab[i]==tab[j]||tab[i]==0)
       {i--;j=i-1;}
       j++;
  }
  i++;
  }
&lt;/pre&gt;&lt;br /&gt;
Najpierw krótki omówienie genezy tego kodu. W losowaniach Dużego Lotka (w 2009r zmieniła się nazwa, na Lotek) losowanych jest 6 liczb z zakresu od 1 do 49. Funkcja &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;random&lt;/span&gt;, której używam w linijce 16. przyjmuje jeden argument, który stanowić ma górne ograniczenie dla zwracanych liczb.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-oVDTP9ixATc/TXsL4bGPJ6I/AAAAAAAAAWI/CdLIcQ3Mt_o/s1600/random.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-oVDTP9ixATc/TXsL4bGPJ6I/AAAAAAAAAWI/CdLIcQ3Mt_o/s1600/random.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Należało tutaj zwrócić uwagę, że liczba podana w argumencie sama nigdy nie zostanie wylosowana. Największą możliwą liczbą do wylosowania będzie natomiast liczba o jeden mniejsza. Innymi słowy, &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;random(100)&lt;/span&gt;, może zwracać wartości od 0 do 99, a &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;random(50)&lt;/span&gt; od 0 do 49.&lt;br /&gt;
&lt;br /&gt;
Wartość 49, była mi potrzebna, więc wydawało mi się, że jednym wyjściem było podanie zakresu górnego jako 50. Ciekawe jest to, że zorientowałem się, jakie skutki to ze sobą będzie niosło. Tym sposobem mogłem w którymś losowaniu otrzymać liczbę 0. W Dużym Lotku taka liczba była nielegalna. By ustrzec się tej liczby, w liniach 17. i 18. pojawiał się zapis &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;tab[i]==0&lt;/span&gt; mający wykryć jej wylosowanie i mający zmusić cały mechanizm do powtórnego losowania &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i&lt;/span&gt;-tej liczby.&lt;br /&gt;
&lt;br /&gt;
Pętla &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;while&lt;/span&gt; zaczynająca się w linii 17. służy temu, by nie dopuścić do sytuacji w której w jednym losowaniu wybrano dwie takie same liczby. Losując &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i&lt;/span&gt;-tą liczbę sprawdzałem, czy wszystkie poprzednie (wskazywane indeksem za pomocą zmiennej &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;j&lt;/span&gt;) są różne. Jeżeli, któraś z liczb się powtórzyła, mechanizm miał wylosować &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i&lt;/span&gt;-tą liczbę ponownie. Właśnie po to w linii 19. było &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i--&lt;/span&gt;, by niejako zredukować skutki inkrementacji z linii 22., która zwiększając zmienną &lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;i&lt;/span&gt; miała gwarantować przechodzenie do losowania kolejnej liczby.&lt;br /&gt;
&lt;br /&gt;
Co tutaj jest zbędnego? Parę rzeczy, jednak chciałbym się skupić na jednej. By uchronić się przed wylosowaniem zera, pracowicie po każdym losowaniu sprawdzałem, czy to zero nie wystąpiło. W tym przypadku wylosowanie zera było dość mało prawdopodobne (2%), jednak program pomimo tego musiał tak pracowicie to sprawdzać.&lt;br /&gt;
&lt;br /&gt;
Mam pytanie, czy uważasz, że gdybyśmy mieli w innym programie za zadanie losować  parzyste liczby z zakresu 0-99, to dobrym pomysłem było by każdorazowe sprawdzanie, czy liczba jest nieparzysta i jeżeli tak, to powtórzenie losowania? Prawdopodobieństwo tego, że każde losowanie miało by być powtórzone wynosiło by wówczas 50%. Innymi słowy, losując 1 000 000 liczb parzystych musielibyśmy wykonać ok. 1 500 000, z czego pół miliona było by zupełnie niepotrzebne! O wiele lepszym rozwiązaniem było by coś takiego:  &lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int liczbaParzysta = random(50) * 2; //liczba parzysta z zakresu od 0 do 98
&lt;/pre&gt;&lt;br /&gt;
Mam nadzieję, że zaczyna coś u Ciebie świtać :) Losując liczby, nie powinniśmy myśleć o ich konkretnych wartościach, lecz o szerokości przedziału jaki potrzebujemy. W przypadku losowań liczb parzystych ten przedział został rozszerzony. W przypadku losowania liczb Dużego Lotka ten przedział możemy natomiast przesunąć:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int wynikLosowania = random(49) + 1; //liczba z zakresu od 1 do 49
&lt;/pre&gt;&lt;br /&gt;
Gdy już człowiek przywyknie do takich operacji, okazuje się że losowanie z dowolnego zakresu nie jest już żadnym problemem.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Podsumowanie&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Program miał dużo, a nawet bardzo dużo błędów, jednak spoglądając na to wszystko nawet teraz jestem z niego dumny. Popełnianie błędów to naturalny proces uczenia się. Najlepszą strategią jest oczywiście uczenie się na cudzych błędach, dlatego właśnie dla Was udostępniam swoje powyższe opracowanie. Jeżeli jesteś początkującym programistą, nie zrażaj się trudnościami przy tworzeniu swoich pierwszych programów. Na początku zawsze jest najtrudniej!&lt;br /&gt;
&lt;br /&gt;
Dam wam teraz troszkę czasu byście mieli okazję sami napisać jak najprostszą wersję tego programu. Leniuszkom jednak gwarantuję, że sam opublikuje w najbliższym czasie swoją poprawioną wersję.&lt;br /&gt;
&lt;br /&gt;
Już wkrótce zamieszczę też omówienie kolejnego programu, dlatego wszystkim, którym spodobał się ten wpis chciałbym polecić kanał &lt;a href="http://feeds.feedburner.com/Noisy-Coder"&gt;RSS&lt;/a&gt; mojego bloga.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Bonus&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tak wyglądał ten kod w środowisku w którym powstał:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://lh4.googleusercontent.com/-DCmpVNePyvE/TXsdSupWdAI/AAAAAAAAAWM/HKZzUK9FTyI/s1600/symulator_losowania_lotto-org.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="https://lh4.googleusercontent.com/-DCmpVNePyvE/TXsdSupWdAI/AAAAAAAAAWM/HKZzUK9FTyI/s200/symulator_losowania_lotto-org.jpg" width="100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Zagadka&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Do czego może służyć zaprezentowana dzisiaj funkcja:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp; gutter: false;"&gt;int nazwaFunkcji(double liczba)
{
    cout&amp;lt;&amp;lt;"jakis tekst\n";
    return liczba + 0.5;
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-3389648421272274861?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/phd3uzKOygdqD1PdeUJLiYvLjJo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/phd3uzKOygdqD1PdeUJLiYvLjJo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/phd3uzKOygdqD1PdeUJLiYvLjJo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/phd3uzKOygdqD1PdeUJLiYvLjJo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=iC0pRhE1MQc:2K5mAT3FV1k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=iC0pRhE1MQc:2K5mAT3FV1k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=iC0pRhE1MQc:2K5mAT3FV1k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=iC0pRhE1MQc:2K5mAT3FV1k:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/iC0pRhE1MQc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/3389648421272274861/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-symulator.html#comment-form" title="Komentarze (5)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/3389648421272274861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/3389648421272274861?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/iC0pRhE1MQc/kazdy-kiedys-zaczyna-symulator.html" title="&quot;Kazdy kiedyś zaczynał&quot; - symulator losowania lotto" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-Ec3WdqNLKEU/TXr_YdfvbRI/AAAAAAAAAWA/0oXz1CkhIms/s72-c/clrscr.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-symulator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUADQ384cCp7ImA9Wx9aGUw.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-8667098238336767195</id><published>2011-03-02T03:00:00.002+01:00</published><updated>2011-03-12T08:09:32.138+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-12T08:09:32.138+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="każdy kiedyś zaczynał" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>"Każdy kiedyś zaczynał" - czyli jak nie programować w C++</title><content type="html">Nikt nie urodził się programistą. Każdy z nas stawiał kiedyś swoje pierwsze kroki w dziedzinie programowania. Każdy kiedyś zmagał się z dziwaczną wówczas dla niego składnią i jeszcze dziwniejszymi nazwami funkcji. Jednak niektórzy z nas pomimo licznych niepowodzeń przebrnęli przez ten najśmieszniejszy etap swojego programistycznego rozwoju. A komedia to była iście w stylu Monty Pythona... czasami nie wiadomo było czy się śmiać, czy płakać.&lt;br /&gt;
&lt;br /&gt;
Programować chciałem zawsze... lecz ubzdurałem sobie, że to jakaś czarna magia, która jest nie do ogarnięcia. Jestem zawodowym programistą, więc chyba coś tam w końcu opanowałem. Jednak gdy teraz patrzę na to co pisałem 7 lat temu, pewien jestem, że jednak jakaś magia mi wówczas pomagała, bo spoglądam na swój kod i zadaje sobie pytanie: "&lt;i&gt;jak kod wyglądający w ten sposób mógł w ogóle się uruchamiać&lt;/i&gt;"?&lt;br /&gt;
&lt;br /&gt;
Wszystkie moje pierwsze programy były dla mnie bardzo cenne. Pamiętam, jak kiedyś w pewnym momencie podjąłem decyzję, by postarać się zachować wszystkie listingi na zawsze, by później móc się z nich śmiać... i oto chciałbym ogłosić, że nadeszły czasy w których chętnie pośmieję się z nich razem z wami :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lata 2003 i 2004 były to dla mnie czasy spędzone z kompilatorem firmy Borland w wersji 3.1. Sam kompilator pochodził z 1992 roku, więc z czasów wręcz zamierzchłych, jednak taki kompilator dostałem od swojego nauczyciela, na takim się uczyłem (aż się łezka w oku kręci...).&lt;br /&gt;
&lt;br /&gt;
Kodów źródłowych z tamtych czasów pozostało mi kilkadziesiąt, z czego co najmniej kilkanaście potrafię teraz odczytać i zinterpretować to, co przecież kiedyś wydawało się dla mnie "takie jasne"... :)&lt;br /&gt;
&lt;br /&gt;
W najbliższym czasie, okresowo będę starał się publikować omówienia owych tych "moich starych dziejów", analizując swoje ówczesne programy, zastanawiając się dlaczego wówczas właśnie tak a nie inaczej to napisałem. Sądzę, że z takiego omówienia mogą skorzystać wszystkie osoby, które same mają nadal styczność z początkującymi adeptami sztuki programowania.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jednocześnie chciałbym was już teraz zachęcić do subskrypcji kanału &lt;a href="http://feeds.feedburner.com/Noisy-Coder"&gt;RSS&lt;/a&gt;, gdyż gwarantuje Wam, że wówczas nie minie Was doskonała okazja by podbudować mniemanie o swoich programistycznych zdolnościach patrząc m.in. na taki kod:&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-utql2n3ao0o/TW2awR96pCI/AAAAAAAAAVc/zFePLMjOC9A/s1600/redox.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-utql2n3ao0o/TW2awR96pCI/AAAAAAAAAVc/zFePLMjOC9A/s1600/redox.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-bgjD-_RfLwI/TW2bCQygi0I/AAAAAAAAAVg/MIQ4ai8IB64/s1600/data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-bgjD-_RfLwI/TW2bCQygi0I/AAAAAAAAAVg/MIQ4ai8IB64/s1600/data.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-ZZd-TP9SGX4/TW2blZ4ByEI/AAAAAAAAAVo/usvjSVBzqiY/s1600/trojkat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-ZZd-TP9SGX4/TW2blZ4ByEI/AAAAAAAAAVo/usvjSVBzqiY/s1600/trojkat.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-aYEI-eEWSG4/TW2bNDFG8lI/AAAAAAAAAVk/qAbXAVbyvsw/s1600/trojkat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;Podczas tych nadchodzących omówień wszyscy wspólnie będziemy mogli się też zastanowić jakim to cudem mogły powstać z kolei programy prezentowane poniżej, jeżeli pisząc je nie znałem nawet pojęcia programowania obiektowego, a programowanie proceduralne ograniczało się dla mnie do wypełnienia ciała tylko jednej funkcji, funkcji &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;main&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-aMh35zp4ikk/TW2cPsEkCkI/AAAAAAAAAVs/l-iyRWf2dsw/s1600/totek.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-aMh35zp4ikk/TW2cPsEkCkI/AAAAAAAAAVs/l-iyRWf2dsw/s1600/totek.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-YdrnnZCxD30/TW2cWvNojWI/AAAAAAAAAVw/Yyjw8z4qCLw/s1600/hurt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-YdrnnZCxD30/TW2cWvNojWI/AAAAAAAAAVw/Yyjw8z4qCLw/s1600/hurt.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-KY5sdx9rjn4/TW2ccjK2QLI/AAAAAAAAAV0/hwdc6MaV5RM/s1600/biznes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-KY5sdx9rjn4/TW2ccjK2QLI/AAAAAAAAAV0/hwdc6MaV5RM/s1600/biznes.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Przy okazji tego cyklu może uda mi się natchnąć inne osoby do podobnych refleksji i analiz starych kodów źródłowych. Bardzo jestem ciekaw, czy tylko moje początki były tak głupstwami przepełnione. Pamiętacie swoje najgorsze, najśmieszniejsze błędy? :)&lt;br /&gt;
&lt;br /&gt;
więcej szczegółów i pikantnych kodów źródłowych już wkrótce ;)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[EDIT]&lt;/b&gt;&lt;br /&gt;
dostępne wpisy z serii:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-symulator.html"&gt;"Kazdy kiedyś zaczynał" - symulator losowania lotto&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-8667098238336767195?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cXvQZEd6NRLgdJd4z8uKPInNPuU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cXvQZEd6NRLgdJd4z8uKPInNPuU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cXvQZEd6NRLgdJd4z8uKPInNPuU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cXvQZEd6NRLgdJd4z8uKPInNPuU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=eOXfVDKX7Nw:9y2Ze8n6jxc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=eOXfVDKX7Nw:9y2Ze8n6jxc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=eOXfVDKX7Nw:9y2Ze8n6jxc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=eOXfVDKX7Nw:9y2Ze8n6jxc:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/eOXfVDKX7Nw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/8667098238336767195/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-czyli-jak-nie.html#comment-form" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8667098238336767195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8667098238336767195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/eOXfVDKX7Nw/kazdy-kiedys-zaczyna-czyli-jak-nie.html" title="&quot;Każdy kiedyś zaczynał&quot; - czyli jak nie programować w C++" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-utql2n3ao0o/TW2awR96pCI/AAAAAAAAAVc/zFePLMjOC9A/s72-c/redox.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/03/kazdy-kiedys-zaczyna-czyli-jak-nie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFQ3wzeip7ImA9Wx9bEEo.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-676231640687294537</id><published>2011-02-19T01:39:00.007+01:00</published><updated>2011-02-19T02:03:32.282+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T02:03:32.282+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="irfan view" /><title>Masowe przetwarzanie dużej liczby zdjęć</title><content type="html">Dzisiaj w trochę innej niż zazwyczaj formie. Mam nadzieję, że komuś się to przyda ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;br /&gt;
&lt;object allowfullscreen="true" data="http://www.youtube.com/v/9y1GQ3b1L4Y" flashvars="fs=1&amp;amp;rel=0&amp;amp;color1=0xFFFFFF&amp;amp;color2=0xFFFFFF&amp;amp;showinfo=0&amp;amp;showsearch=0" height="390" scale="showall" type="application/x-shockwave-flash" width="480"&gt;          &lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="AllowScriptAccess" value="always" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="wmode" value="opaque" /&gt;&lt;param name="movie" value="http://www.youtube.com/v/9y1GQ3b1L4Y"/&gt;&lt;param name="flashvars" value="fs=1&amp;amp;rel=0&amp;amp;color1=0xFFFFFF&amp;amp;color2=0xFFFFFF&amp;showinfo=0&amp;showsearch=0" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Na tę okazję posprzątałem swój pulpit, więc doceńcie mój gest :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-676231640687294537?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fZWblJnslQeAk_5qAtEkmEKcNDI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fZWblJnslQeAk_5qAtEkmEKcNDI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fZWblJnslQeAk_5qAtEkmEKcNDI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fZWblJnslQeAk_5qAtEkmEKcNDI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=xWG3QarHiu4:MPk-GBBuqAM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=xWG3QarHiu4:MPk-GBBuqAM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=xWG3QarHiu4:MPk-GBBuqAM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=xWG3QarHiu4:MPk-GBBuqAM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/xWG3QarHiu4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/676231640687294537/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/02/masowe-przetwarzanie-duzej-liczby-zdjec.html#comment-form" title="Komentarze (3)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/676231640687294537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/676231640687294537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/xWG3QarHiu4/masowe-przetwarzanie-duzej-liczby-zdjec.html" title="Masowe przetwarzanie dużej liczby zdjęć" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/02/masowe-przetwarzanie-duzej-liczby-zdjec.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBRnc8cCp7ImA9Wx9VE00.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-1036620500115738619</id><published>2011-01-29T14:04:00.001+01:00</published><updated>2011-01-29T14:09:17.978+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-29T14:09:17.978+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SI" /><category scheme="http://www.blogger.com/atom/ns#" term="pomysł" /><title>O internecie, ADHD i głowie pełnej pomysłów</title><content type="html">Jeżeli by opierać się na badaniach o których w &lt;a href="http://www.youtube.com/watch?v=zDZFcDGpL4U#t=3m37s"&gt;swoim wystąpieniu&lt;/a&gt; wspomina Sir Ken Robinson, można by mu przyznać rację, że w dzisiejszych czasach zadziwiająca liczba osób może u siebie stwierdzić występowanie kilku objawów ADHD, które zazwyczaj zaliczają się do trzech grup: nadmierna impulsywność, nadmierna ruchliwość i zaburzenia uwagi.&lt;br /&gt;
&lt;br /&gt;
Ale co to wszystko ma wspólnego z Internetem?&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Jak mówi wikipedia, Attention deficit hyperactivity disorder, czyli zespół nadpobudliwości psychoruchowej z deficytem uwagi (a raczej jego objawy) zostały po raz pierwszy opisane ok roku 1798 przez Alexandra Crichtona - szkockiego doktora.&lt;br /&gt;
&lt;br /&gt;
Jak wyglądał świat w 1798 roku? Pozwolę sobie zwrócić uwagę na pewien fakt, który można wyczytać z poniższego wykresu:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-y8v2S8HMEw/TUQE5X0EK2I/AAAAAAAAAUw/mu4cx7qpN6E/s1600/Illiteracy_france.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="494" src="http://4.bp.blogspot.com/_-y8v2S8HMEw/TUQE5X0EK2I/AAAAAAAAAUw/mu4cx7qpN6E/s640/Illiteracy_france.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
który to obrazuje procentowy udział analfabetów w społeczeństwie Francji &amp;nbsp;w XVIII i XIX wieku (podobnych danych o szkocji (skąd pochodził doktor) nie udało mi się znaleźć, ale zakładam że wyglądały podobnie).&lt;br /&gt;
&lt;br /&gt;
Do czego zmierzam? Spróbujmy sobie wyobrazić jak wyglądał wówczas zasób źródeł z których to ówcześni Europejczycy mogliby czerpać informacje i wiedzę. Co prawda Gutenberg wynalazł druk już w XV wieku, jednak ówczesny analfabetyzm nie pozwalał na szybkie szerzenie się informacji rozpowszechnianej za pomocą druku. Skąd ludzie czerpali wówczas jakiekolwiek informacje o bierzącym świecie? Z plotek ;)&lt;br /&gt;
&lt;br /&gt;
Generalnie chciałbym zauważyć, że obecnie ludzie są informacjami przeładowani i najzwyczajniej w świecie nie wszyscy potrafią sobie z tym radzić, czego skutkiem często są trudności ze skupieniem swojej uwagi. W XVIII wieku dziecko biegające po domu, bawiące się na zmianę wszystkim co popadnie mogło faktycznie wzbudzać niepokój. Obecnie jednak take zachowanie jest u dziecka normą (byłbym wdzięczny, gdyby jacyś młodzi rodzice donieśli mi, że jednak czegoś takiego da się uniknąć!!). Człowiek z natury jest istotą ciekawską i ostatecznie chciałby poświęcić swoją uwagę rzeczy najciekawszej. Uważam, że to właśnie dlatego rodzice w pewnym momencie nie mają już sił i sadzają (choćby nawet mając wcześniej o tym złe zdanie) dziecko przed telewizorem, by dać sobie odrobinę czasu na oddech. Człowiek a tymbardziej dziecko oczekuje rzeczy najciekawszych z ciekawych, a że każdemu rodzicowi pomysły na zabawy kiedyś się kończą, to ucieka się do pomocy telewizji (a potem już tak zostaje).&lt;br /&gt;
&lt;br /&gt;
No dobra, dziecko bazuje na uczuciach, których niekoniecznie jest nawet świadome. Co jednak z dorosłymi? Powinniśmy umieć podzielić rzeczy na: mniej ważne ale bardziej ciekawe, ważne ale niestety mniej ciekawe. Nasze czyny powinny bazować na tym podziale, gdyż wiemy i potrafimy dowieść, że najczęściej wykonywanie rzeczy ważnych przynosi nam więcej korzyści. Niech pierwszy rzuci kamień, ten kto nie ma z tym trudności ;)&lt;br /&gt;
&lt;br /&gt;
Obecnie żyjemy w świecie takim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-y8v2S8HMEw/TUDL9LzehuI/AAAAAAAAAUk/hYBObASA_JI/s1600/internauts.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-y8v2S8HMEw/TUDL9LzehuI/AAAAAAAAAUk/hYBObASA_JI/s1600/internauts.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
W Europie czytanie jest umiejętnością powszechną, a nawet jeżeliby tak nie było, to wiele by to nie pomogło w czasach, gdy procentowy podział światowego ruchu w internecie z rozróżnieniem na usługi przedstawia się następująco:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-y8v2S8HMEw/TUQLDhnLlUI/AAAAAAAAAU4/cotxyabxQZk/s1600/internet-percent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-y8v2S8HMEw/TUQLDhnLlUI/AAAAAAAAAU4/cotxyabxQZk/s1600/internet-percent.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
czyli video i treści multimedialne ogłupiają nas do reszty. Nie chcę tutaj głosić treści, że telewizja/video są złe, bo dostarczają nam nieprawdziwych informacji. Kiedyś może to i było prawdą, lecz obecnie mając tyle mediów do wyboru sam mogę decydować co chcę uważać za najmojszą najprawdziwszą prawdę. Chodzi mi tutaj o wybór... a raczej jego mnogość. Możliwość wyboru jest dobra, jednak nie jesteśmy intelektualnie zdolni do tego by umieć w perfekcyjny sposób zarządzać wszystkimi informacjami.&lt;br /&gt;
&lt;br /&gt;
Wg mnie sytuacja będzie się pogarszać. W dalszym ciągu coraz większą popularność zdobywają serwisy typu twitter czy facebook. Czy jest jakiś ratunek? Mam nadzieję, że tak i powiem szczerze widzę go tylko i wyłącznie w tzw. sztucznej inteligencji.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Sztuczna inteligencja może być ratunkiem&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Wg mnie problemy jakie obecnie próbuje się rozwiązać za pomocą SI można podzielić na dwie kategorie:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Problemy, które sami potrafimy świetnie rozwiązywać lecz z jakichś powodów chcemy by umiał to robić to komputer (czyli chelibyśmy by komputer wykorzystał tutaj swoją moc obliczeniową i zrobił to szybciej). Analiza obrazu, tekstu, głosu... automatyzacja tego stwarza tak wiele możliwości&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Problemy, które potrafimy rozwiązywać sami, jednak dla których w pewnych przypadkach brakuje innych zasobów, takich jak pamięć (innymi słowy umiejętność operowania na dużym zbiorze danych jednocześnie)&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;Dla mnie o wiele ciekawsze są problemy z drugiej grupy, do której można by było przyporządkować segregowanie i porządkowanie otaczających nas danych. Chciałbym mieć w przyszłości elektronicznego osobistego asystenta, który na przykład na tydzień przed moją rocznicą ślubu zapytałby mnie czy powinien zakupić na przyszłym allegro w moim imieniu prezent dla mojej przyszłej żony, by potrafił mi w tym doradzić, by w dodatku sam wpadł na to, że w związku z tym, że byłaby to okrągła rocznica należałoby mi zasugerować zarezerwowanie miejsca w naszej ulubionej restauracji oraz który wiedziałby, że w związku z powyższym powinienem szybciej odebrać swój nowy garnitur od krawca.&lt;br /&gt;
&lt;br /&gt;
Posiadanie takiego osobistego elektronicznego asystenta, który podpowiadałby mi najbardziej oczywiste propozycje zachowań było by niezwykle przydatne... ale na to musimy narazie poczekać. Tymczasem należy się zastanowić jak sobie radzić na początku XXI wieku z brakiem umiejętności skupienia swojej uwagi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Notes pomysłów&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-y8v2S8HMEw/TUQQRzKoy1I/AAAAAAAAAU8/TocARa72_gc/s1600/old_book.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://2.bp.blogspot.com/_-y8v2S8HMEw/TUQQRzKoy1I/AAAAAAAAAU8/TocARa72_gc/s200/old_book.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Dla mnie najgorsze rozpraszacze pochodzą nie z zewnątrz, lecz z mojej własnej głowy. Czasami samoistnie po przetworzeniu jakiejś informacji lub po otrzymaniu przypadkowego impulsu do głowy nagle wpada mi jakiś "genialny" pomysł! Generalnie pomysłów na "złoty interes życia" mam średnio jeden na miesiąc. Kilka razy na tydzień na ciekawe projekty informatyczne, a kilka razy dziennie na jeszcze inne super ulepszacze. Jeżeli myśli które mnie rozkojarzają podpowiadają mi: "wejdź na facebooka, sprawdź, czy ktoś nie napisał coś ciekawego", to z taką myślą jeszcze jakoś potrafię walczyć, jeżeli zdaję sobie sprawę, że ze względu na ważność właśnie wykonywanej czynności nie powinienem jej przerywać. Problem jest wtedy, kiedy naprawdę mam coś ważnego do roboty, a tu przychodzi mi super pomysł, na interes, posta na blogu, algorytm czy prezent dla mojej narzeczonej. Bardzo często stwierdzam, że powinienem jak najszybciej zrobić przynajmniej rozeznanie, by przynajmniej wiedzieć, czy pomysł jest faktycznie taki dobry i czy jest możliwy do zrealizowania. Dotychczas zazwyczaj ulegałem takim pokusom, głównie dlatego, że wielokrotnie doświadczyłem równie szybkiej amnezji dotyczącej "genialnego" pomysłu co przebłysku podczas jego narodzin. Tym sposobem pomimo tego, że genialny pomysł na prezent na urodziny mojej narzeczonej wpadł mi na około 2 miesiące przed terminem, to dlatego, że od razu nie poszedłem tym tropem, 2 tygodnie przed urodzinami okazało się, że to za mało czasu by ów prezent załatwić. Chyba łapiecie w czym rzecz...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jakiś czas temu wpadł mi do głowy pomysł jak sobie radzić z nagłym i szybkim przypływem genialnych idei, które potrafią nam tak naprawdę przeszkadzać, ale których ostatecznie się pozbywać przecież nie chcemy. Pomysłowość wszakże jest tak ceniona w dzisiejszych czasach.&lt;br /&gt;
&lt;br /&gt;
Moim pomysłem był wspomniany już wyżej &lt;b&gt;notes pomysłów&lt;/b&gt; :)&lt;br /&gt;
&lt;br /&gt;
Jeżeli do głowy przychodzi mi jakiś pomysł, to staram się nie podążać za chęcią sprawdzenia możliwości jego realizacji itd, lecz po prostu biorę ów notes i zapisuję swoją myśl rysując obok mały rysunek żaróweczki (mówię wam, największą frajdę zawsze mi sprawia rysowanie owej żarówki ;) ). Jeżeli pomysł dotyczy np. jakiegoś programu/strony, to czasami zdarza mi się na szybko narysować szkic jakiegoś GUI.&lt;br /&gt;
&lt;br /&gt;
Po pewnym czasie staram się wrócić do owego pomysłu. Często dzieje się to po kilku dniach. Spojrzenie na chłodno na taki pomysł pozwala z dużo większą łatwością określić czy pomysł faktycznie ma sens, czy może jednak jest głupi i wpadł mi do głowy tylko ze względu na jakiś kontekst w którym to wcześniej się znajdowałem. Czasami wpadają nam pomysły, co do których jesteśmy pewni, że nie będziemy w stanie ich zrealizować przez jakiś czas. Okazuje się wówczas świetną praktyką spisywanie spostrzeżeń i kolejnych myśli na temat danego przedsięwzięcia. Zanim rozpoczniemy faktyczną pracę nad jakimś projektem, może się wówczas okazać, że mamy już gotową listę najważniejszych przemyśleń czy założeń.&lt;br /&gt;
&lt;br /&gt;
Przyznam szczerze, że jest jeszcze jedna rzecz, która bardzo mi się w tym wszystkim spodobała. Uważam, że jestem raczej pomysłową osobą (choć czasami to potrafią być naprawdę głupie pomysły ;) ) i dobrze się czuję z tym, że mogę spojrzeć na całość moich (pseudo i tych prawdziwych) genialnych pomysłów. Po kilkumiesięcznej praktyce spisywania rzeczy do takiego notesu postrzegam go jako swego rodzaju kwintesencje swoich przebłysków.&lt;br /&gt;
&lt;br /&gt;
Lubię sobie myśleć, że kiedyś zrealizuję któryś z tych pomysłów i w jakiś tam sposób stanę się znany jako swego rodzaju prekursor. Nawet jeżeli mnie już nie będzie to moje najlepsze notatki zostaną i być może ktoś, kiedyś będzie mógł z nich się czegoś nauczyć... tak jak nawet teraz my możemy nauczyć się czegoś z notatek Leonarda da Vinci (lub przynajmniej dostrzec jaką ten człowiek miał głowę pełną pomysłów projektując w swoich czasach broń, helikopter, spadochron, prasę czy pancerny czołg)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://blog.al.com/mhuebner/2008/09/large_leo%20codex.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://blog.al.com/mhuebner/2008/09/large_leo%20codex.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://www.audubonmagazine.org/webexclusives/images/daVinci-codex-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="143" src="http://www.audubonmagazine.org/webexclusives/images/daVinci-codex-2.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://www.insource.com/images/davinci_privacy.legal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://www.insource.com/images/davinci_privacy.legal.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://www.creativityandbeyond.com/leonardolive/image/davinci_design.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://www.creativityandbeyond.com/leonardolive/image/davinci_design.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://newsliteimgs.s3.amazonaws.com/080428_parachute.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://newsliteimgs.s3.amazonaws.com/080428_parachute.jpg" /&gt;&lt;/a&gt;&lt;a href="http://www.ripten.com/wp-content/uploads/2010/10/tank_image1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="http://www.ripten.com/wp-content/uploads/2010/10/tank_image1.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://www.history-science-technology.com/Notes/Hydraulic%20saw%20of%20di%20Giorgio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://www.history-science-technology.com/Notes/Hydraulic%20saw%20of%20di%20Giorgio.jpg" width="181" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-1036620500115738619?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O9Fw4gyEm1A8vGlt1jKWwLRVFX8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O9Fw4gyEm1A8vGlt1jKWwLRVFX8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O9Fw4gyEm1A8vGlt1jKWwLRVFX8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O9Fw4gyEm1A8vGlt1jKWwLRVFX8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=6JGHF5RM5Jw:lmxbu9XDGDs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=6JGHF5RM5Jw:lmxbu9XDGDs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=6JGHF5RM5Jw:lmxbu9XDGDs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=6JGHF5RM5Jw:lmxbu9XDGDs:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/6JGHF5RM5Jw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/1036620500115738619/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/01/o-internecie-adhd-i-gowie-penej-pomysow.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/1036620500115738619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/1036620500115738619?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/6JGHF5RM5Jw/o-internecie-adhd-i-gowie-penej-pomysow.html" title="O internecie, ADHD i głowie pełnej pomysłów" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_-y8v2S8HMEw/TUQE5X0EK2I/AAAAAAAAAUw/mu4cx7qpN6E/s72-c/Illiteracy_france.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/01/o-internecie-adhd-i-gowie-penej-pomysow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCQn8_eyp7ImA9Wx9WEU0.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-7514332779831732602</id><published>2011-01-15T16:09:00.003+01:00</published><updated>2011-01-15T16:24:23.143+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-15T16:24:23.143+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="develway" /><title>Łatwiejsze głosowanie na artykuł w serwisie develway z poziomu własnej strony</title><content type="html">Jakiś czas temu wysłałem propozycję wprowadzenia drobnej funkcjonalności w serwisie develway. Całość została nawet skomentowana na oficjalnym blogu ich serwisu, &lt;a href="http://blog.develway.pl/ikona-na-innej-stronie"&gt;tutaj&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Obiecali zrobić, tak też &lt;a href="http://www.develway.pl/dla-wlascicieli-stron-internetowych/"&gt;zrobili&lt;/a&gt;. Efekty ich pracy można teraz podziwiać w &lt;a href="http://www.develway.pl/dla-wlascicieli-stron-internetowych/"&gt;kąciku dla właścicieli stron&lt;/a&gt; a także od dzisiaj również na podstronach tego bloga (stwierdziłem, że nie chcę zanieczyszczać głównej strony, więc będąc na stronie głównej by zobaczyć efekt, musisz kliknąć na "czytaj więcej" troszkę niżej ;) )&lt;br /&gt;
&lt;br /&gt;
Pomyślałem, że skoro &lt;b&gt;blogger.com&lt;/b&gt; jest tak popularnym serwisem, to opiszę jak w szybki sposób wdrożyć ową ikonkę właśnie do jego systemu zarządzania treścią.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Należy przejść do panelu swojego bloga, następnie &lt;strong&gt;Projekt&lt;/strong&gt; -&amp;gt; &amp;nbsp;&lt;strong&gt;Edytuj kod HTML&lt;/strong&gt; -&amp;gt; &lt;strong&gt;[X] Rozszerz szablony widżetów&lt;/strong&gt;, znaleźć&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;div class='post-body entry-content'&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
oraz wkleić zaraz pod poniższy kod:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;div class="separator" style="clear: both; text-align: center;"&amp;gt;
&amp;lt;iframe border="0" expr:src=""http://www.develway.pl/widget-glosuj/?url=" + data:post.url + "&amp;amp;title=" + data:post.title +  "&amp;amp;lang=pl&amp;amp;type=normal"" frameborder="0" style="border: none; clear: right; float: right; height: 105px; margin-bottom: 1em; margin-left: 1em; overflow: hidden; padding: 0; width: 70px;"&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;

&lt;/pre&gt;&lt;br /&gt;
lub jeżeli (tak jak w przypadku mojej strony) chcecie, by licznik pokazywał się tylko na pod stronach:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;b:if cond="data:blog.url == data:post.url"&amp;gt;
&amp;lt;div class="separator" style="clear: both; text-align: center;"&amp;gt;
&amp;lt;iframe border="0" expr:src=""http://www.develway.pl/widget-glosuj/?url=" + data:post.url + "&amp;amp;title=" + data:post.title +  "&amp;amp;lang=pl&amp;amp;type=normal"" frameborder="0" style="border: none; clear: right; float: right; height: 105px; margin-bottom: 1em; margin-left: 1em; overflow: hidden; padding: 0; width: 70px;"&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/b:if&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Po wprowadzeniu owych zmian, wszystko zatwierdzamy i vuala!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-7514332779831732602?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V5iHaovOJ6w6SijkkIf8np706LM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V5iHaovOJ6w6SijkkIf8np706LM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V5iHaovOJ6w6SijkkIf8np706LM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V5iHaovOJ6w6SijkkIf8np706LM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uhuo9ymWWCY:M3uy7YqfuJk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=uhuo9ymWWCY:M3uy7YqfuJk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uhuo9ymWWCY:M3uy7YqfuJk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=uhuo9ymWWCY:M3uy7YqfuJk:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/uhuo9ymWWCY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/7514332779831732602/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/01/atwiejsze-gosowanie-na-artyku-w.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7514332779831732602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/7514332779831732602?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/uhuo9ymWWCY/atwiejsze-gosowanie-na-artyku-w.html" title="Łatwiejsze głosowanie na artykuł w serwisie develway z poziomu własnej strony" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/01/atwiejsze-gosowanie-na-artyku-w.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4CQ3Y9fSp7ImA9Wx9WEkg.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-4477370183759882642</id><published>2011-01-15T01:31:00.004+01:00</published><updated>2011-01-17T09:29:22.865+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-17T09:29:22.865+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="GCOTD" /><title>"Lustrzane odbicie" polecenia git add -p, czyli co mi pomogło po pewnym code review.</title><content type="html">Skończyłem w pracy robić pewne duże zadanie. Zrobiłem &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;commit&lt;/span&gt;a i &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;push&lt;/span&gt;a do odpowiedniego brancha do naszego &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git&lt;/span&gt;owego repozytorium . Potem przyszła pora na code review. Kolega z zespołu zauważył parę miejsc, w których należało by jeszcze coś dodać/zmienić/usunąć. Informacje o tych poprawkach wysłał mi na e-mail.&lt;br /&gt;
&lt;br /&gt;
dostałem mniej więcej taką listę:&lt;br /&gt;
&lt;br /&gt;
1. W przypadku dwóch statycznych pól klasy zastosowałeś przedrostek m_, zamiast s_. Dostosować do reszty.&lt;br /&gt;
2. Lepiej było by, aby funkcja Foo zwracała nie tylko informacje o błędzie, lecz najlepiej jeszcze określała typ błędu.&lt;br /&gt;
3. Niepotrzebne podwójne wywołanie funkcji inicjalizującej &amp;nbsp;w linii 250 i 253.&lt;br /&gt;
4. itd.&lt;br /&gt;
5. itd.&lt;br /&gt;
..&lt;br /&gt;
18. itd&lt;br /&gt;
&lt;br /&gt;
Rzeczy do poprawki były dość proste, lecz było ich jednak dość dużo. Wprowadziłem połowę i stwierdziłem, że sprawdzę, czy przypadkiem niczego w między czasie nie popsułem. Kompilacja przebiegła ok, instalacja - ok, uruchomienie - ok, nagle crash.&lt;br /&gt;
&lt;br /&gt;
No i teraz pytanie, która z moich zmian spowodowała błąd? Dlatego, że w ówczesnym czasie debugowanie w naszym projekcie było bardzo kłopotliwe a wręcz wówczas niemożliwe stwierdziłem, że najszybciej będzie usunąć zmiany i zacząć je wprowadzać po kolei, stopniowo, za każdym razem upewniając się, że wszystko jest w porządku.&lt;br /&gt;
&lt;br /&gt;
Jednak tych zmian było na tyle dużo, w tylu miejscach, że stwierdziłem, że wolałbym uniknąć usuwania tych zmian ręcznie, bądź wprowadzania ich od nowa. No i wybrnąłem z tej sytuacji, gdyż całą procedurę wykonałem praktycznie nie dotykając kodu za pośrednictwem mojego IDE. W tym wszystkim pomógł mi oczywiście GIT :)&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Żeby całość lepiej zobrazować, pozwolę się posłużyć przykładem innego pliku, duuużo mniejszego ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img560.imageshack.us/img560/2283/gitblog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img560.imageshack.us/img560/2283/gitblog1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Jak widzimy na powyższym screenie, polecenie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;ls&lt;/span&gt; mówi nam, że w katalogu znajduje się tylko &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;plik&lt;/span&gt;. Za pomocą polecenia &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cat plik&lt;/span&gt;, wyświetlamy jego zawartość (wiedza na temat tego co jest w nim zawarte przyda się na później). Polecenie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git status&lt;/span&gt;, w tym przypadku mówi, że katalog roboczy jest czysty pod względem zmian, tzn. nic nie jest zaindeksowane, a git śledzi wszystkie pliki znajdujące się w katalogu.&lt;br /&gt;
&lt;br /&gt;
Załóżmy teraz, że zmiany jakie wprowadzamy po naszym review wyglądają tak:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img341.imageshack.us/img341/8527/gitblog2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img341.imageshack.us/img341/8527/gitblog2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
albo przedstawiając innym diff-toolem:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img121.imageshack.us/img121/1557/gitblog3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img121.imageshack.us/img121/1557/gitblog3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Załóżmy, że któraż z tych czterech zmian powoduje coś złego. W jaki sposób wprowadzać je po kolei by kolejno sprawdzać która?&lt;br /&gt;
&lt;br /&gt;
Na początek zróbmy commit owego pliku lokalnie do repozytorium (spokojnie, git może modyfikować historie i my tutaj z tego będziemy namiętnie korzystać ;) )&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img375.imageshack.us/img375/6881/gitblog4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img375.imageshack.us/img375/6881/gitblog4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
a zaraz po tym zróbmy revert owej zmiany bez commitowania jej&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img838.imageshack.us/img838/2499/gitblog5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img838.imageshack.us/img838/2499/gitblog5.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
W kwestii przypomnienia, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git revert&lt;/span&gt; nie usuwa poprzednich zmian, lecz nakłada różnicę, tak aby dwa ostatnie commity łącznie "dawały zero". Polecenie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git revert&lt;/span&gt; domyślnie od razu robi commit owego odwrócenia zmian, chyba że tak jak w tym przypadku podkreślimy by tego nie robiło. Wówczas jednak owa zmiana jest od razu dodawana do indeksu. My jednak i tego nie chcemy, więc usuwamy go ręcznie za pomocą polecenia &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git reset HEAD plik&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
No i teraz generalnie zaczyna się zabawa...&lt;br /&gt;
&lt;br /&gt;
W tym momencie lokalnie na dysku mamy pliki w "dobrym stanie". "Złe zmiany" są wcommitowane i są obecnie na &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;HEAD&lt;/span&gt;zie, jednak są przykryte revertem, więc wszystko może działać. Możemy zrobić builda i wszystko powinno działać. Jak teraz szybko i bezboleśnie wprowadzić jedną z owych zmian, by móc sprawdzić jak ona wpływa na projekt?&lt;br /&gt;
&lt;br /&gt;
Polecenie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git checkout -- nazwa_pliku&lt;/span&gt; usuwa zmiany (a tak naprawdę robi checkout owego pliku z &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;HEAD&lt;/span&gt;a). To samo polecenie z parametrem &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;-p&lt;/span&gt; robi to samo tylko na częściach pliku wybieranych w interaktywny sposób. Skup się teraz i zastanów się co dzięki temu osiągniemy...&lt;br /&gt;
&lt;br /&gt;
Będziemy po kolei, w częściach &lt;b&gt;usuwać&lt;/b&gt; zmiany z lokalnie zmodyfikowanego pliku, a dlatego że owe zmiany są &lt;b&gt;revertem&lt;/b&gt;, to tak naprawdę będziemy &lt;b&gt;dodawać&lt;/b&gt; je względem stanu początkowego. Zgadza się? :)&lt;br /&gt;
&lt;br /&gt;
W praktyce wygląda to tak:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Git stara się podsuwać nam owe zmiany w częściach. Na danym kawałku zmiany możemy wykonać wiele akcji, które są symbolizowane skrótami &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;[y,n,q,a,d,/,s,e,?]&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;. Wystarczy wpisać &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;?&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; lub nacisnąć od razu enter, by pojawił nam się opis owych skrótów.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img710.imageshack.us/img710/9058/gitblog6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img710.imageshack.us/img710/9058/gitblog6.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Jeżeli dany kawałek jest za duży, by o nim w całości od razu zdecydować, powinniśmy go rozdzielić, co możemy zrobić za pomocą &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;split&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;a. Wpisując &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;s&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; dostajemy już tylko kawałek, w tym przypadku pierwszą linie.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img64.imageshack.us/img64/1020/gitblog7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img64.imageshack.us/img64/1020/gitblog7.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
By dodać kawałek (usunąć kawałek reverta), posługujemy się skrótem &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;y&lt;/span&gt;, a następnie wychodzimy z trybu interaktywnego za pomocą &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;q&lt;/span&gt; (gdyż mamy przecież po każdym wprowadzeniu małej zmiany sprawdzać czy wszystko jest ok).&lt;br /&gt;
&lt;br /&gt;
Zatem w tym momencie puszczamy builda, wgrywamy, uruchamiamy, testujemy. Jeżeli wszystko gra, to znowu odpalamy&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;git checkout -p -- plik&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;, (&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;split&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;ujemy jeżeli trzeba), za pomocą &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;y&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; robimy discard na danym kawałku i znowu robimy builda itd. I tak aż do momentu aż znajdziemy zmianę, która była winna za początkowy crash.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
W tym momencie należy już ręcznie poprawić kod, usunąć crasha i zrobić w końcu commita, który zapisze całą naszą zabawę. Jednak, aby to wszystko nie wyglądało dziwnie w historii, powinniśmy połączyć bieżące zmiany z poprzednim commitem (modyfikując w ten sposób lokalna historię). A to wszystko jest bardzo proste...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://img713.imageshack.us/img713/2406/gitblog8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://img713.imageshack.us/img713/2406/gitblog8.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Całość może wygląda troszkę skomplikowanie, lecz w niektórych przypadkach stanowić będzie wg mnie algorytm o najmniejszym stopniu prawdopodobieństwa zepsucia czegoś jeszcze bardziej, podczas ręcznego usuwania zmian.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-4477370183759882642?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/F3Hb37UUAuEbZDGQ-3FhqBY0CXc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F3Hb37UUAuEbZDGQ-3FhqBY0CXc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/F3Hb37UUAuEbZDGQ-3FhqBY0CXc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F3Hb37UUAuEbZDGQ-3FhqBY0CXc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Yrq95zdIl9s:dLc_Y4uCLxQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=Yrq95zdIl9s:dLc_Y4uCLxQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Yrq95zdIl9s:dLc_Y4uCLxQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=Yrq95zdIl9s:dLc_Y4uCLxQ:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/Yrq95zdIl9s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/4477370183759882642/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/01/lustrzane-odbicie-polecenia-git-add-p.html#comment-form" title="Komentarze (9)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4477370183759882642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4477370183759882642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/Yrq95zdIl9s/lustrzane-odbicie-polecenia-git-add-p.html" title="&quot;Lustrzane odbicie&quot; polecenia git add -p, czyli co mi pomogło po pewnym code review." /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>9</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/01/lustrzane-odbicie-polecenia-git-add-p.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cHRHk6eSp7ImA9Wx9WEU0.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-8139391863983354894</id><published>2011-01-09T17:26:00.008+01:00</published><updated>2011-01-15T16:23:55.711+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-15T16:23:55.711+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="krzysztofszumny.pl" /><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="develway" /><category scheme="http://www.blogger.com/atom/ns#" term="dotnetomaniak" /><category scheme="http://www.blogger.com/atom/ns#" term="sexy bookmarks" /><title>SexyBookmarks i inne zmiany na blogu</title><content type="html">Bardzo wiele wejść na bloga odnotowuje z zewnętrznych serwisów. Prym wśród nich wiodą develway.pl oraz dotnetomaniak.pl (kolejność przypadkowa).&lt;br /&gt;
&lt;br /&gt;
Postanowiłem, więc bardziej "otworzyć" się na te serwisy, a przy okazji jeszcze na parę innych. A to wszystko za pomocą tak zwanych...&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Sexy Bookmarks&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-y8v2S8HMEw/TQ4KFj5mCGI/AAAAAAAAATg/ggqJ4Mx1eVo/s1600/screen-shot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="2" src="http://2.bp.blogspot.com/_-y8v2S8HMEw/TQ4KFj5mCGI/AAAAAAAAATg/ggqJ4Mx1eVo/s1600/screen-shot.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Dzięki nim każdy użytkownik w łatwy sposób może podzielić się ze światem wiadomością o jakimś poście z danego bloga. Gorąco zachęcam do wypróbowania na przykład na dotnetomaniaku lub develwayu ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
W kwestii czysto formalnej, to nie ja wymyśliłem tą nazwę, tak samo jak nie ja jestem autorem tego cudeńka ;) Cały mechanizm dostarczany jest, za pomocą odpowiednich wpisów CSS oraz jednej bitmapy, na której umieszczone są wszystkie sprite'y.&lt;br /&gt;
&lt;br /&gt;
Moim zadaniem było tylko przygotowanie odpowiednich ikon oraz spreparowanie linków dla konkretnych serwisów. Zintegrowanie całości z bloggerem było dość proste i ograniczało się do podążania za wskazówkami ze strony: &lt;a href="http://www.cssreflex.com/2009/08/sexybookmarks-v2-for-blogger.html"&gt;http://www.cssreflex.com/2009/08/sexybookmarks-v2-for-blogger.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ogólnie starałem się dostosować owe bookmarki do polskich realiów. O ile facebook u nas już się w miarę przyjął o tyle linkowanie do digg.com chyba trochę mija się z celem.&lt;br /&gt;
&lt;br /&gt;
Na moim celowniku znalazły się więc serwisy/funkcjonalności:&lt;br /&gt;
&lt;br /&gt;
- facebook&lt;br /&gt;
- twitter&lt;br /&gt;
- śledzik&lt;br /&gt;
- develway&lt;br /&gt;
- dotnetomaniak&lt;br /&gt;
- wykop&lt;br /&gt;
- google bookmarks&lt;br /&gt;
- rss&lt;br /&gt;
&lt;br /&gt;
Poszperałem jeszcze i dowiedziałem się, że podobno(?) dużo ludzi w Polsce używa też:&lt;br /&gt;
&lt;br /&gt;
- grono.net&lt;br /&gt;
- flacker&lt;br /&gt;
- blip&lt;br /&gt;
- spinacz&lt;br /&gt;
- pinger&lt;br /&gt;
- moblo&lt;br /&gt;
&lt;br /&gt;
Może później będę miał chwilę, by dostosować sexyBookmarks do tych wszystkich serwisów, tworząc coś na wzór polskiego szablonu ;)&lt;br /&gt;
&lt;br /&gt;
Googlując znalazłem też serwis (http://hehehe.pl/), który korzysta z możliwości ustawiania za pomocą owych zakładek statusu w najnowszym gadu-gadu. Ciekawa opcja. &lt;b&gt;Przychodzą wam na myśl jeszcze jakieś inne?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Na razie dla chętnych oto link do grafiki, której należy użyć zamiast oryginalnej:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://img139.imageshack.us/img139/3131/sexysprite.png"&gt;http://img139.imageshack.us/img139/3131/sexysprite.png&lt;/a&gt;&lt;br /&gt;
(prosiłbym tylko o jej skopiowanie na własny serwer a nie linkowanie do mojej ;) )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oraz trochę kodu html, który również należy podmienić względem owego sugerowanego ze wspomnianego artykułu:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;div class="sexy-bookmarks sexy-bookmarks-expand" style="clear: both !important; display: block !important; height: 29px; margin: 20px 0 0 0 !important; padding: 25px 0 0 10px !important;"&amp;gt;
 &amp;lt;ul class="socials"&amp;gt;
  &amp;lt;li class="sexy-facebook"&amp;gt;&amp;lt;a class="external" expr:href=""http://www.facebook.com/share.php?u="+ data:post.url + "&amp;amp;title=" + data:post.title" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Share this on Facebook"&amp;gt;Share this on Facebook&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-twitter"&amp;gt;&amp;lt;a class="external" expr:href=""http://twitter.com/home?status=Reading: " + data:blog.title + " - " + data:post.url + " (@NAME)"" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Tweet This!"&amp;gt;Tweet This!&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-sledzik"&amp;gt;&amp;lt;a class="external" expr:href=""http://www.sledzik.pl/share.php?u="+ data:post.url + "&amp;amp;title=" + data:post.title" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Share this on sledzik"&amp;gt;Share this on Sledzik&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-develway"&amp;gt;&amp;lt;a class="external" expr:href=""http://www.develway.pl/dodaj/?title=" + data:post.title + "&amp;amp;url=" + data:post.url" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Share this on develway"&amp;gt;Share this on develway&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-dotnet"&amp;gt;&amp;lt;a class="external" expr:href=""http://dotnetomaniak.pl/Submit?title=" + data:post.title + "&amp;amp;url=" + data:post.url" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Share this on dotnetomaniak"&amp;gt;Share this on dotnetomaniak&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-wykop"&amp;gt;&amp;lt;a class="external" expr:href=""http://www.wykop.pl/dodaj?url="+ data:post.url + "&amp;amp;title=" + data:post.title + "&amp;amp;desc=" + data:post.body" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Share this on wykop"&amp;gt;Share this on wykop&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
  &amp;lt;li class="sexy-google"&amp;gt;&amp;lt;a class="external" expr:href=""http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk="+ data:post.url + "&amp;amp;title=" + data:post.title" href="http://www.blogger.com/post-edit.g?blogID=4645914242670363949&amp;amp;postID=8139391863983354894" rel="nofollow" title="Add this to Google Bookmarks"&amp;gt;Add this to Google Bookmarks&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
oraz dodatkowe wpisy do arkusza stylów uwzględniający koordynaty:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: css"&gt;.sexy-facebook{background-position:-0px bottom !important}
 .sexy-facebook:hover{background-position:-0px top !important}
 
 .sexy-twitter{background-position:-70px bottom !important}
 .sexy-twitter:hover{background-position:-70px top !important}

 .sexy-sledzik{background-position:-140px bottom !important}
 .sexy-sledzik:hover{background-position:-140px top !important}

 .sexy-develway{background-position:-210px bottom !important}
 .sexy-develway:hover{background-position:-210px top !important}
 
 .sexy-dotnet{background-position:-280px bottom !important}
 .sexy-dotnet:hover{background-position:-280px top !important}
 
 .sexy-wykop{background-position:-350px bottom !important}
 .sexy-wykop:hover{background-position:-350px top !important} 
 
 .sexy-google{background-position:-420px bottom !important}
 .sexy-google:hover{background-position:-420px top !important}
 
 .sexy-comfeed{background-position:-490px bottom !important}
 .sexy-comfeed:hover{background-position:-490px top !important}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Wyjście z podziemia&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Kolejną zmianą na blogu jest jego nowy adres, który ujawnia trochę więcej mnie: KrzysztofSzumny.pl .&lt;br /&gt;
&lt;br /&gt;
Stwierdziłem, że już pora wykupić ten adres zanim ktoś sprzątnie mi go sprzed nosa (a wiem że istnieją co najmniej dwie osoby, które mogłyby być tym zainteresowane (inna sprawa, że podobno jedna z tych osób też jest programistą;) )). Moja zachłanność poszła tak daleko, że postanowiłem również wykupić tożsamą domenę z końcówką .com. Oczywiście stary adres jest i przez jakiś czas będzie aktywny, jednak zachęcam do aktualizacji np. feedów RSS. Nie wykluczone jest przecież, że za jakiś czas przesiądę się np. na WordPressa, wówczas bloggerowy link przestałby działać.&lt;br /&gt;
&lt;br /&gt;
Muszę Wam przyznać, że blogowanie pod własnym imieniem i nazwiskiem w moim odczuciu znacząco różni się od blogowania pod pseudonimem. Teraz każdy mój współpracownik/przełożony może szybko się zorientować, że za to wszystko co się tutaj dzieje jestem odpowiedzialny właśnie ja. Na swój sposób jest to nawet motywujące :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-8139391863983354894?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DUM99jM6VSf5OhXHcVLQHho5Stw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DUM99jM6VSf5OhXHcVLQHho5Stw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DUM99jM6VSf5OhXHcVLQHho5Stw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DUM99jM6VSf5OhXHcVLQHho5Stw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=SFDWZ4jEnH8:kI81Gly5s-8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=SFDWZ4jEnH8:kI81Gly5s-8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=SFDWZ4jEnH8:kI81Gly5s-8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=SFDWZ4jEnH8:kI81Gly5s-8:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/SFDWZ4jEnH8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/8139391863983354894/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2011/01/sexybookmarks-i-inne-zmiany-na-blogu.html#comment-form" title="Komentarze (6)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8139391863983354894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8139391863983354894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/SFDWZ4jEnH8/sexybookmarks-i-inne-zmiany-na-blogu.html" title="SexyBookmarks i inne zmiany na blogu" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_-y8v2S8HMEw/TQ4KFj5mCGI/AAAAAAAAATg/ggqJ4Mx1eVo/s72-c/screen-shot.jpg" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2011/01/sexybookmarks-i-inne-zmiany-na-blogu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ERXc-fCp7ImA9Wx9REUQ.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-4541937118586322918</id><published>2010-12-06T23:51:00.003+01:00</published><updated>2010-12-13T01:06:44.954+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-13T01:06:44.954+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="pomysł" /><category scheme="http://www.blogger.com/atom/ns#" term="nauka" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><title>Programowanie na żywo, w parach oraz programistyczny Truman Show</title><content type="html">Czy byłeś kiedyś świadkiem tworzenia jakiegoś oprogramowania? Chodzi mi o coś w rodzaju spoglądania przez ramię na klepiącego kod programistę. Można się tak dużo nauczyć. Jednak jeżeli dziedzina rozwiązywanego problemu jest dla jednej osoby zbyt obca, to również i kod na jej oczach powstający może stanowić dużą abstrakcje. Proces powstawania znanych, lecz trudnych algorytmów również może być bardzo ciężki do zrozumienia bez ciągłych objaśnień autora, na temat tego co wyraża dany kod.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Raz na jakiś czas (czyli w praktyce codziennie :)) przychodzi nam zmierzyć się z kodem napisanym przez kogoś innego, gdyż musimy np. naprawić jakiegoś buga. Zabawne w tym jest to, że z kwintesencji myśli - jaką jest kod źródłowy, musimy starać się na nowo całą myśl odtworzyć, by w pełni zrozumieć cały kod i zamierzenia pierwotnego autora.&lt;br /&gt;
&lt;br /&gt;
Można rzec, że czytanie kodu to wręcz sztuka odtwarzania myśli autora na podstawie pozostawionych przez niego poszlak. Nauka programowania zatem nie może polegać na czytaniu kodu źródłowego, gdyż jest to czynność odwrotna.&lt;br /&gt;
&lt;br /&gt;
Pytanie, które można tutaj postawić: skoro nie należy uczyć się programowania poprzez czytanie kodu, to jak? Jedna z odpowiedzi to: pisać, pisać, pisać. To jest wskazówka dla uczących się. A co ze wskazówką dla uczących innych? Wg mnie należy przede wszystkim pokazywać młodym adeptom sztuki programowania jak myśli powinny zamieniać się w kod. Każdy programista powinien zdawać sobie sprawę, że istnieje masę mini-wzorców, które codziennie stosujemy, a które dla świeżaka mogą być trudne do wymyślenia. Dobry programista języka C wie, że z połączenia switcha, wskaźników na funkcje, tablicy owych wskaźników można zrobić nie najgorsze menu gry, oprogramowujące coś takiego jak poniżej:&lt;br /&gt;
&lt;br /&gt;
1. Nowa Gra&lt;br /&gt;
2. Lista wyników&lt;br /&gt;
3. Ustawienia&lt;br /&gt;
&lt;div id="__ImgTipPopup__" style="background-color: white; border-bottom-color: #000000; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: #000000; border-left-style: solid; border-left-width: 1px; border-right-color: #000000; border-right-style: solid; border-right-width: 1px; border-top-color: #000000; border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: solid; border-top-width: 1px; box-shadow: 2px 2px 15px; display: none; opacity: 0.5; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: fixed; z-index: 1000000;"&gt;&lt;img /&gt;&lt;/div&gt;&lt;div id="__ImgTipPopup__" style="background-color: white; border-bottom-color: #000000; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: #000000; border-left-style: solid; border-left-width: 1px; border-right-color: #000000; border-right-style: solid; border-right-width: 1px; border-top-color: #000000; border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: solid; border-top-width: 1px; box-shadow: 2px 2px 15px; display: none; opacity: 0.5; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: fixed; z-index: 1000000;"&gt;&lt;img /&gt;&lt;/div&gt;4. Wyjście&lt;br /&gt;
&lt;br /&gt;
Dobry programista języka obiektowego patrząc na coś takiego od razu widzi klasę agregującą &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;Menu&lt;/span&gt; oraz klasę &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;MenuItem&lt;/span&gt; a także parę ich pól i metod tychże klas. Młody programista widzi co najwyżej listę stringów.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Programowanie w parach.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-y8v2S8HMEw/TQVi9WQMonI/AAAAAAAAATc/mpGZh4BRHSU/s1600/xp-chair.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/_-y8v2S8HMEw/TQVi9WQMonI/AAAAAAAAATc/mpGZh4BRHSU/s320/xp-chair.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Mieliście kiedyś okazję programować w parzę? Dla naprawdę dobrej zabawy potrzebna jest osoba (na mniej więcej tym samym poziomie jak Ty), jeden problem (który oboje rozumiecie), jeden komputer oraz jedna klawiatura. Krzesło takie, jak te obok nie jest wymagane ;) Jedna osoba pisze kod, mówi na bieżąco co robi, dlaczego i po co. Druga parafrazuje to co słyszy, patrzy na kod szuka drobnych błędów, szuka corner-case'ów w zapisywanym algorytmie i robi wiele innych rzeczy o których osoba pisząca w danej chwili nawet nie byłaby w stanie myśleć.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uczą się wówczas dwie osoby. Pisząca, na bieżąca ma zwracaną uwagę, dzięki czemu uczy się zauważać problem we właściwym momencie, nie pisze złego kodu dzięki czemu nie utrwala złych nawyków. Siedząco-czytająco-poprawiająca uczy się czytać kod, gdyż na bieżąco może pytać, czy dobrze rozumie danych kilka linii. Uczy się także wyłapywać szczególiki. Oczywiście podczas programowania w parach po jakimś czasie następuje zamiana, by obie osoby mogły szkolić się we wszystkich aspektach.&lt;br /&gt;
&lt;br /&gt;
Niestety rzeczywistość jest taka, że trudno jest znaleźć dobra osobę do takiej zabawy, prezentującą odpowiedni (nie za niski, nie za wysoki) poziom umiejętności, posiadającą odpowiedni stopień zainteresowania danym tematem, dysponującą czasem wolnym w podobnym terminie a także mieszkającej w podobnej lokalizacji.&lt;br /&gt;
&lt;br /&gt;
Jeżeli zwrócimy uwagę na ostatni aspekt, to łatwo nam może przyjść do głowy, że w ostatnim dziesięcioleciu masę problemów, które borykały się z brakiem odpowiedniej lokalizacji zostało rozwiązanych dzięki medium jakim jest Internet. Może by i tym razem iść podobną ścieżką?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wyobraź sobie taki scenariusz...&lt;br /&gt;
&lt;br /&gt;
Wchodzisz na pewien Portal, wybierasz kategorie oprogramowania jakie chcesz stworzyć. Wybierasz technologie z którymi jesteś zaznajomiony, oznaczasz w jakim stopniu władasz jakimś językiem programowania. Tworzysz opis projektu, który chciałbyś stworzyć. Portal po pewnym czasie wysyła Ci powiadomienie o innej osobie, która chciałaby zrobić coś podobnego. Nawiązujecie współpracę, tworzycie razem ostateczny szkic projektu. Zanim przystąpicie do pracy instalujecie każdy na swoim komputerze oprogramowanie, który tworzy wam "sandboxa" dla waszego projektu, oraz zapewnia komunikację typu klient/server programem, który pilnuje, by kopia programu na waszych komputerach prezentowała różny stan (gdy u jednego program głównie nadaje, drugi głównie odbiera transmisję). Transmisją byłby przede wszystkim obraz video pochodzący z pulpitu komputera. Użytkownik programu użytkownika bardziej pasywnego posiadałby dodatkowy kursor, który byłby widoczny na komputerze użytkownika bardziej aktywnego. Tym kursorem (którym mógłby tylko wskazywać) użytkownik drugi pokazywałby dane kawałki kodu pierwszemu. Oprócz komunikacji video powinna również odbywać się komunikacja audio, w tym przypadku w obie strony.&lt;br /&gt;
&lt;br /&gt;
Program pochodzący z Portalu pilnuje też tego, by po zdefiniowanym przez ową parę śmiałków czasie, zamienić ich rolami. Całe środowisko pracy, zostaje w bardzo szybki sposób przeniesione na stanowisko drugiej osoby, tak by chwile później to ona mogła przejąć kodowanie a druga by mogła skupić się na "zwracaniu uwagi".&lt;br /&gt;
&lt;br /&gt;
Teoretycznie wszystko to da się już osiągnąć, bez jakichkolwiek portali, stosując narzędzia takie jak VNC, Skype, VirtualMachine (oraz klient VPN w razie potrzeby). Znacie jednak kogoś, kto próbował czegoś takiego? Pomysł wydaje się trochę szalony, jednak, gdyby powstało jedno narzędzie umożliwiające to wszystko, podejrzewam, że znalazło by się wielu, którzy zechcieliby to wypróbować ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;Programistyczny Truman-show&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Jednak jeżeli ktoś nie lubi roli podpowiadacza i woli rolę aktywnego programisty, to sądzę, że już teraz łatwo może zrealizować następujący scenariusz:&lt;br /&gt;
&lt;br /&gt;
Załóż stronę projektu, repo (wystarczy read-only), bug trackera, bloga, czat. Zainstaluj jakiś program typu CamStudio, czy Camtasia i jakiś inny broadcaster do nadawania video (justin.tv) i po prostu włącz wszystko i nagrywaj, transmituj to co robisz. Pokaż jak konfigurujesz środowisko, jak zaczynasz tworzyć projekt... a najlepiej gadaj przy tym ile wlezie - tak do siebie i mikrofonu, tłumacząc co robisz.&lt;br /&gt;
&lt;br /&gt;
Sądzę, że jeżeli by coś takiego rozreklamować, to znalazła by się cała masą widzów, którzy zechcieliby spoglądać jak krok po kroku tworzysz coś od podstaw (nie koniecznie od początku wiedząc jak coś zrobić w całości). Znalazła by się masa ludzi, którzy by Tobie podpowiadali jaki możesz zrobić następny krok. Naprawdę mógłbyś poznać mnóstwo osób, którzy byliby chętni pomóc.... a Ty mógłbyś stać się sławny :) Musiałbyś tylko dzielić się z nimi nie tylko wynikami swojej pracy, ale wszystkimi przemyśleniami podczas programowania.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jest jednak jeden minus tego przedsięwzięcia. Zapewne pisząc kod nie raz "zawiesisz się" na rzeczach banalnych, które może i nawet doskonale umiesz ale które jednak trochę zapomniałeś. Być może cały świat spostrzeże też, że nie znasz jakiejś podstawy i wszyscy mogą się dziwić.. "to on za taki projekt się bierze, a nie wie takich podstaw?". Jakiś czas po owym programie możesz na rozmowach kwalifikacyjnych słyszeć: "widzieliśmy jak Pan programuje, bierzemy Pana!" lecz równie dobrze: "robi Pan dość dużo głupich błędów, my tutaj cenimy dokładność".&lt;br /&gt;
&lt;br /&gt;
Czy byłbyś na tyle odważny by stać się programistycznym Trumanem?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-4541937118586322918?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wQtODk8O6N7W63kHLsJ0to_gDPc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wQtODk8O6N7W63kHLsJ0to_gDPc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wQtODk8O6N7W63kHLsJ0to_gDPc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wQtODk8O6N7W63kHLsJ0to_gDPc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=DWhTN717GgU:HrAQXn5hiPQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=DWhTN717GgU:HrAQXn5hiPQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=DWhTN717GgU:HrAQXn5hiPQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=DWhTN717GgU:HrAQXn5hiPQ:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/DWhTN717GgU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/4541937118586322918/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/12/programowanie-na-zywo-w-parach-oraz.html#comment-form" title="Komentarze (7)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4541937118586322918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/4541937118586322918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/DWhTN717GgU/programowanie-na-zywo-w-parach-oraz.html" title="Programowanie na żywo, w parach oraz programistyczny Truman Show" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_-y8v2S8HMEw/TQVi9WQMonI/AAAAAAAAATc/mpGZh4BRHSU/s72-c/xp-chair.jpg" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/12/programowanie-na-zywo-w-parach-oraz.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcARno5eyp7ImA9Wx9RF0U.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-681270282982949028</id><published>2010-10-15T22:30:00.005+02:00</published><updated>2010-12-19T18:34:07.423+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-19T18:34:07.423+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="Erlang" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><category scheme="http://www.blogger.com/atom/ns#" term="OCaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Haskell" /><title>Być wszechstronnym multikoderem...</title><content type="html">Rozpoczął się dla mnie bardzo pracowity semestr. Każdy poprzedni też był wymagający, niemniej jednak ten nr 9 ma w sobie to coś, co prawdziwe informatyczne tygrysy lubią najbardziej :) Programowanie, programowanie, programowanie! To nie jest tak, że w poprzednich latach programowaliśmy mało. Raczej chodzi o to, że programowaliśmy &lt;u&gt;zazwyczaj&lt;/u&gt; w bardzo typowy - &lt;a href="http://pl.wikipedia.org/wiki/Programowanie_imperatywne"&gt;imperatywny sposób&lt;/a&gt;. Co prawda na pierwszym roku mieliśmy nawet odrobinę &lt;a href="http://pl.wikipedia.org/wiki/Programowanie_logiczne"&gt;programowania w logice&lt;/a&gt; za pomocą &lt;a href="http://pl.wikipedia.org/wiki/Prolog_(j%C4%99zyk_programowania)"&gt;prologa&lt;/a&gt;, lecz wówczas jakoś nie zachwycił mnie ten język.&lt;br /&gt;
&lt;br /&gt;
Jak do tej pory mogę powiedzieć, że w stopniu dobrym lub bardzo dobrym opanowałem języki C/C++/C#/Java. Zdarza/zdarzyło mi się "od potrzeby" pisać coś w Asemblerze/Fortranie/Pascalu/Delphi/Perlu/JavaScripcie/PHP/Matlabie/Bashu. Fajnie, nieprawdaż?&lt;br /&gt;
&lt;br /&gt;
No właśnie nie...&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Języki z drugiej grupy znam naprawdę pobieżnie. Obecnie nawet nie wiem, czy chciałbym je wpisywać do CV. Co z tego, że wypisałbym sobie tam 14 języków programowania, skoro można by mnie było zagiąć pytaniem o podstawy większości z nich (inna sprawa, że pracodawca zazwyczaj nie szuka multikodera, lecz osoby która potrafiła zgłębić pewien (być może nawet i wąski) zakres wiedzy, jednak na poziomie eksperckim). W moim przypadku programy, które pisałem w językach z grupy drugiej pisałem głównie na podstawie analogii do znanych mi języków z grupy pierwszej. Zazwyczaj to wystarczało. Więc mówienie, że znam np. Fortrana/Pythona/Asemblera było by po prostu przesadą.&lt;br /&gt;
&lt;br /&gt;
Ktoś mógłby powiedzieć:&lt;br /&gt;
&lt;br /&gt;
"No dobra noisy, no ale przecież nie jest źle, a nawet jest całkiem nieźle! Powiedziałeś, że w dobrym stopniu opanowałeś aż 4 języki".&lt;br /&gt;
&lt;br /&gt;
Mógłbym przyznać temu argumentowi rację, ale jako "programista z zamiłowania", nie potrafię! Pierwszą rzeczą jaką mam sobie do zarzucenia jest to, że co prawda może to i są 4 języki, ale tak naprawdę wszystkie wywodzą się od C, wszystkie mają podobną składnie i zasady. Gdy zacząłem pracować i musiałem nagle zmodyfikować jakiś skrypt np. napisany w pythonie, to naprawdę męczyłem się z tym niemiłosiernie. Prawda jest taka, że wszechstronny programista (tzn. taki który nie sra w gacie, kiedy musi nagle napisać coś w języku, o którym być może nawet nie słyszał) nie musi znać wszystkich najpopularniejszych języków programowania, lecz jednak dobrze by było aby:&lt;br /&gt;
&lt;br /&gt;
- potrafił programować w językach różnego stylu/składni (np. nie tylko w tych językach z "wąsami")&lt;br /&gt;
- potrafił programować w językach różnych paradygmatów programowania.&lt;br /&gt;
&lt;br /&gt;
Nie mogę z czystym sumieniem stwierdzić, że spełniam pierwsze kryterium.. a co dopiero miałbym się rozwodzić na temat drugiego...&lt;br /&gt;
&lt;br /&gt;
Jednak jak wspomniałem na początku tego wpisu... ten semestr będzie miał w sobie duuużo programowania. To właśnie w tym semestrze przyszło mi się zapisać na kurs "Języki i paradygmaty programowania". Prawda jest taka, że tego kursu nie było (sic!) w naszym 5-letnim programie studiów magisterskich. Na szczęście jednak, na PWR można brać przedmioty z innych kierónków/lat/wydziałów :)&lt;br /&gt;
&lt;br /&gt;
W ramach tego kursu będziemy pisać w takich językach jak: Python, Erlang, OCaml, Haskell. W technologiach webowych z kolei realizuję inny, wybrany przez nas projekt w ramach innego kursu w tym semestrze. Kurs "Sztuczna inteligencja" to z kolei kolejna szansa by łaskawym okiem spojrzeć na Prologa. No i oczywiście pozostaje jeszcze praca, która ciągle zapewne będzie rozpieszczać mnie za pomocą C, C++, Javy i JavyScript :)&lt;br /&gt;
&lt;br /&gt;
Zastanawia mnie jeszcze tylko jedno... czy mi się w głowie to wszystko nie zacznie mieszać, jeżeli będę się tego wszystkiego uczył na raz w takim tempie? Czy ktoś z was próbował uczyć się równolegle niejako od podstaw dwóch (lub więcej) różnych od siebie, kompletnie nie znanych języków programowania? Będę wdzięczny za jakiś feedback z Waszej strony... ciekaw jestem, jak kształtowała się wasza wszechstronność.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-681270282982949028?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iR-Sc9QwAmqduxyXcRYHWJgCqFA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iR-Sc9QwAmqduxyXcRYHWJgCqFA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iR-Sc9QwAmqduxyXcRYHWJgCqFA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iR-Sc9QwAmqduxyXcRYHWJgCqFA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=erWYmIO7FOc:e-jQaP1Rb9I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=erWYmIO7FOc:e-jQaP1Rb9I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=erWYmIO7FOc:e-jQaP1Rb9I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=erWYmIO7FOc:e-jQaP1Rb9I:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/erWYmIO7FOc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/681270282982949028/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/10/byc-wszechstronnym-multikoderem.html#comment-form" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/681270282982949028?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/681270282982949028?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/erWYmIO7FOc/byc-wszechstronnym-multikoderem.html" title="Być wszechstronnym multikoderem..." /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/10/byc-wszechstronnym-multikoderem.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkICQn0zfSp7ImA9Wx9WEko.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-2801299463141180377</id><published>2010-10-12T11:56:00.012+02:00</published><updated>2011-01-17T16:36:03.385+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-17T16:36:03.385+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="focus" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="linia komend" /><category scheme="http://www.blogger.com/atom/ns#" term="CLI" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="alert" /><title>notify &amp; autofocus window</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-y8v2S8HMEw/TLQhnIemN5I/AAAAAAAAAR8/FfFPTS6icvA/s1600/C:%5Cfakepath%5Cmake+all+-+crop.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_-y8v2S8HMEw/TLQhnIemN5I/AAAAAAAAAR8/FfFPTS6icvA/s320/C:%5Cfakepath%5Cmake+all+-+crop.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Bardzo często jestem zmuszony czekać na zakończenie jakiegoś polecenia wydanego w konsoli. Czasami to trwa tak długo, że zabieram się za coś innego. Zaraz po zakończeniu owego zadania chciałbym powrócić do pracy. Jednak nie zawsze jestem w stanie dostrzec, że coś się skończyło, skoro od 5 minut czytam jakiegoś bloga :)&lt;br /&gt;
&lt;br /&gt;
na dzisiaj mam dla Was dwa według mnie mnie godne uwagi polecenia.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
By osiągnąć efekt taki jak widać na załączonym obrazku wystarczy zdefiniować sobie:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: #bb7977; font-weight: 700;"&gt;alias&lt;/span&gt; alert&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'notify-send -t 15000 -i /usr/share/icons/gnome/32x32/apps/gnome-terminal.png &lt;/span&gt;&lt;span style="color: #0000e6;"&gt;"[$?] $(history|tail -n1|sed -e '&lt;/span&gt;&lt;span style="color: #0f69ff;"&gt;\'&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'&lt;/span&gt;&lt;span style="color: maroon; font-weight: 700;"&gt;s&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: #808030;"&gt;^&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;\s&lt;/span&gt;&lt;span style="color: #808030;"&gt;*&lt;/span&gt;&lt;span style="color: #808030;"&gt;[&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;0&lt;/span&gt;&lt;span style="color: #808030;"&gt;-&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;9&lt;/span&gt;&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: #0f69ff;"&gt;\+&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;\s&lt;/span&gt;&lt;span style="color: #808030;"&gt;*&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;span style="color: maroon; font-weight: 700;"&gt;s&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;;&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;\s&lt;/span&gt;&lt;span style="color: #808030;"&gt;*&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;alert&lt;/span&gt;&lt;span style="color: #808030;"&gt;$&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;/&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'&lt;/span&gt;&lt;span style="color: #0f69ff;"&gt;\'&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;')"'&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
i później już tylko wywołać sobie:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;make all -j4; alert
&lt;/pre&gt;&lt;br /&gt;
&lt;div&gt;co spowoduje wyświetlenie notyfikacji o zakończonym poleceniu poprzedzającym nasz alert.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Natomiast poniższa funkcja (wklejona np. do ~/.bashrc, lub generalnie wklejona do konsoli) przywoła nam okno konsoli po zakończeniu danego zadania.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: 700;"&gt;function&lt;/span&gt; focus&lt;span style="color: purple;"&gt;(&lt;/span&gt;&lt;span style="color: purple;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
   winID&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="background-attachment: scroll; background-color: #ffffe8; background-image: none; background-position: 0% 0%; background-repeat: repeat; color: black;"&gt;`xprop -root &lt;/span&gt;&lt;span style="background-attachment: scroll; background-color: #ffffe8; background-image: none; background-position: 0% 0%; background-repeat: repeat; color: #e34adc;"&gt;|&lt;/span&gt;&lt;span style="background-attachment: scroll; background-color: #ffffe8; background-image: none; background-position: 0% 0%; background-repeat: repeat; color: black;"&gt;awk &lt;/span&gt;&lt;span style="background-attachment: scroll; background-color: #ffffe8; background-image: none; background-position: 0% 0%; background-repeat: repeat; color: #0000e6;"&gt;'/_NET_ACTIVE_WINDOW/ {print $5; exit;}'&lt;/span&gt;&lt;span style="background-attachment: scroll; background-color: #ffffe8; background-image: none; background-position: 0% 0%; background-repeat: repeat; color: black;"&gt;`&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
   $@&lt;span style="color: purple;"&gt;;&lt;/span&gt;
   wmctrl -i &lt;span style="color: #44aadd;"&gt;-a&lt;/span&gt; $winID&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: purple;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;sposób użycia (analogiczny jak polecenie &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;time&lt;/span&gt; - bez średnika):&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;focus make all -j4 
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
PS.&lt;br /&gt;
Podobny temat był omawiany na devPytaniach w wątku &lt;a href="http://devpytania.pl/questions/3824/wielozadaniowosc-programisty-czyli-jak-sobie-radzic-z-5-10-minutowymi-przerwami"&gt;Wielozadaniowość programisty. Czyli jak sobie radzić z 5-10 minutowymi “przerwami”?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;[EDIT] (17.01.2011):&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
na proźbę, która została wyrażona w komentarzu tutaj jest jeszcze kod, który przywołuje alerta tylko wtedy, jeżeli nasze okno nie miało focusa :)&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: 700;"&gt;function&lt;/span&gt; alert_if_hidden&lt;span style="color: purple;"&gt;(&lt;/span&gt;&lt;span style="color: purple;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
   winID&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;`xprop -root &lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: #e34adc;"&gt;|&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;awk &lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: #0000e6;"&gt;'/_NET_ACTIVE_WINDOW/ {print $5; exit;}'&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;`&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
   $@&lt;span style="color: purple;"&gt;;&lt;/span&gt;
   winID_new&lt;span style="color: #808030;"&gt;=&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;`xprop -root &lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: #e34adc;"&gt;|&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;awk &lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: #0000e6;"&gt;'/_NET_ACTIVE_WINDOW/ {print $5; exit;}'&lt;/span&gt;&lt;span style="background-attachment: scroll; background-clip: border-box; background-color: #ffffe8; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; color: black;"&gt;`&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;

   &lt;span style="color: maroon; font-weight: 700;"&gt;if&lt;/span&gt; &lt;span style="color: #808030;"&gt;[&lt;/span&gt; $winID &lt;span style="color: #44aadd;"&gt;!=&lt;/span&gt; $winID_new &lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
   &lt;span style="color: maroon; font-weight: 700;"&gt;then&lt;/span&gt;
     alert&lt;span style="color: purple;"&gt;;&lt;/span&gt;  
   &lt;span style="color: maroon; font-weight: 700;"&gt;fi&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
sposób użycia:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;alert_if_hidden make all -j4
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-2801299463141180377?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sye6tkiAJ_1nb83grY1OZNS3_tE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sye6tkiAJ_1nb83grY1OZNS3_tE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sye6tkiAJ_1nb83grY1OZNS3_tE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sye6tkiAJ_1nb83grY1OZNS3_tE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=if8AYMCYc7k:2gOQ6uewlzs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=if8AYMCYc7k:2gOQ6uewlzs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=if8AYMCYc7k:2gOQ6uewlzs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=if8AYMCYc7k:2gOQ6uewlzs:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/if8AYMCYc7k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/2801299463141180377/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/10/autofocus-window.html#comment-form" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2801299463141180377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2801299463141180377?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/if8AYMCYc7k/autofocus-window.html" title="notify &amp; autofocus window" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_-y8v2S8HMEw/TLQhnIemN5I/AAAAAAAAAR8/FfFPTS6icvA/s72-c/C:%5Cfakepath%5Cmake+all+-+crop.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/10/autofocus-window.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUDQ3gzcSp7ImA9Wx9RF0U.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-5286060842834557434</id><published>2010-09-26T22:42:00.004+02:00</published><updated>2010-12-19T18:37:52.689+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-19T18:37:52.689+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="historia" /><category scheme="http://www.blogger.com/atom/ns#" term="linia komend" /><category scheme="http://www.blogger.com/atom/ns#" term="CLI" /><title>noisy-coder@blogspot.com: ~ $ cat mędrcy_linii_komend</title><content type="html">&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Zacznę nietypowo:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;sudo !!&lt;/span&gt;, &amp;nbsp;wykonuje poprzednie polecenie jednak w trybie &lt;i&gt;super user&lt;/i&gt;, nie wymagając jego przepisywania&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;ipconfig /displaydns&lt;/span&gt;, możemy sprawdzić listę ostatnio resolvowanych adresów internetowych (żaden private mode nie pomoże)&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;telnet towel.blinkenlights.nl&lt;/span&gt;, wyświetli Ci film Stars Wars w konsoli&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;cd -&lt;/span&gt;,&amp;nbsp; (na Linuksie) przenosi nas do katalogu w którym byliśmy poprzednio. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;To tylko parę bardzo ciekawych poleceń, o których jeszcze nie dawno nie miałem zielonego pojęcia. Konsola to potężne narzędzie niosące ze sobą wielkie możliwości. Nie od razu jednak takim narzędziem się stała. Długo ewoluowała, a historia jej powstania oraz jej początki w Polskiej rzeczywistości na pewno niektórych zaskoczą.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Jeżeliby zacząć szukać przyczyny z powodu której systemy operacyjne spod znaku pingwina nie zawojowały jeszcze świata, dość szybko spotkalibyśmy się z argumentem, że w Linuksach nie wszystko da się wyklikać. Bardzo wiele rzeczy trzeba robić w konsoli tekstowej. Co prawda sytuacja ta ciągle się poprawia i z wersji na wersje (opierając się na przykładzie Ubuntu) widać, że bez konsoli da się zrobić coraz więcej.&lt;br /&gt;
&lt;br /&gt;
Jednak jak wszyscy wiemy(lub się dowiemy), konsola wcale nie jest wadą Linuksa, lecz jedną z jego największych zalet. Prawda jest taka, że jest to artefakt pochodzący z zamierzchłych czasów, a dokładniej z lat 50. ubiegłego wieku. Na długo przed powstaniem znanych nam dzisiaj systemów operacyjnych, wiersz poleceń zaczął podbijać świat komputerów. Pierwszy raz użyto go jako interfejsu do komunikacji z dalekopisem (&lt;b&gt;T&lt;/b&gt;ele&lt;b&gt;TY&lt;/b&gt;pe/&lt;b&gt;T&lt;/b&gt;ele&lt;b&gt;TY&lt;/b&gt;pewriter/&lt;b&gt;TTY&lt;/b&gt; ) . Od tamtych czasów stawał się coraz bardziej popularnym sposobem komunikacji z komputerami. Jego rozwój nie był jednak oszałamiająco szybki. Wyobraźmy sobie, że dopiero pod koniec lat 60. na potrzeby maszyny &lt;a href="http://en.wikipedia.org/wiki/SDS_940"&gt;SDS940&lt;/a&gt; zaimplementowano mechanizm znany dziś jako &lt;a href="http://en.wikipedia.org/wiki/Command_line_completion"&gt;command line completition&lt;/a&gt;. Dopiero dekadę później, w 1978 r. zaprezentowano światu konsole zdolną przechowywać &lt;a href="http://en.wikipedia.org/wiki/Command_history"&gt;historię wpisanych komend&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
To jednak nie przeszkodziło temu interfejsowi zrobić oszałamiającej kariery. W połowie lat 70. powstał projekt wykorzystania tego interfejsu w mediach na szeroką skalę. Projekt odniósł wielki sukces i z rokiem 1989 dotarł nawet do Polski. O linii komend krążą plotki, że jest trudna w użyciu. Jednak ten pogląd należy konfrontować z faktem, że z tego interfejsu nauczyła się korzystać niemalże każda polska babcia. Bo czymże jest, jak nie konsolą tekstową doskonale nam znana telegazeta? :)&lt;br /&gt;
&lt;br /&gt;
Gdy już mamy przedstawiony dowód na to, że dla każdej babci linia komend to "pryszcz" (więc i Ty jesteś w stanie nauczyć się z niej korzystać), czas bym spróbował przekonać Cię, że w tym (często monochromatycznym) magicznym tekstowym prostokącie kryje się tajemna moc.&lt;br /&gt;
&lt;br /&gt;
Na czym polega przewaga konsoli tekstowej nad GUI? Czasem dostępu do poszczególnej funkcji systemu. Przewaga ta staje się jednak dopiero widoczna, przy liczbie funkcji, która nie pozwala na ergonomiczne rozmieszczenie odpowiednich przycisków i pozycji w menu. Jeżeli mnie pamięć nie myli, za pomocą telegazety można było się dostać do 899 stron (100-999). Nie da się stworzyć interfejsu, który z tyloma przyciskami byłby czytelny. Oczywiście, największa wada interfejsu konsolowego to potrzeba pamiętania poleceń. Tylko gdy znamy polecenia konsola może być narzędziem szybkiego dostępu. No ale jak już raz się nauczyliśmy, że telegazeta "dwójki" pod numerem 200 posiada(ła?) spis stron związanych ze sportem, pod numerem 210, spis stron związanych z piłką nożną, 211 - bieżącą kolejką ekstraklasy, 212 - tabelą ekstraklasy, a pod numerami 301-304 program emisji na dzień bieżący, to nagle się okazywało, że jest to najwygodniejszy i najszybszy dostęp do informacji. Nawet dekoracja &lt;a href="http://en.wikipedia.org/wiki/Command-line_interface#Command_prompt"&gt;prompta&lt;/a&gt; jest tak przydatna, że do tej pory ciągle niektórzy tak sprawdzają aktualną godzinę.&lt;br /&gt;
&lt;br /&gt;
Kolejną jego zaletą są niskie wymagania sprzętowe. Mogło by się wydawać, że w dzisiejszych czasach nie musimy już oszczędzać bitów i liczyć każdej operacji, gdyż komputery i tak sobie z tym poradzą. Zawsze jednak jakoś znajduje się sytuacja, że nie chcemy/nie możemy wykorzystać więcej mocy obliczeniowej. Czasami trzeba ubić jakiś proces, innym razem trzeba łączyć się zdalnie z danym komputerem, a łącze nie rozpieszcza nas transferem byśmy mogli marnować na rozwiązania typu zdalny pulpit.&lt;br /&gt;
&lt;br /&gt;
Największą jednak zaletą jest możliwość automatyzacji wszelkich działań za pomocą różnego rodzaju skryptów. To jest jednak temat na inny wpis.&lt;br /&gt;
&lt;br /&gt;
Ten wpis jednak nie powstał po to, by wychwalać konsolę. Chciałbym tutaj zwrócić uwagę na jego największą wadę. Potrzebę znania poleceń i ich możliwości. Przeciętny system operacyjny zawiera zbyt wiele komend, by było możliwe nauczenie się ich, poprzez czytanie ułożonego alfabetycznie spisu. Tym bardziej, że człowiek zazwyczaj nabiera wprawy w używaniu danego polecenia, dopiero po parokrotnym jego zastosowaniu. Jak zatem zacząć uczyć się korzystania z linii komend? Na początek wystarczy chyba znać podstawy jak choćby takie komendy jak cd, dir/ls, by móc sprawnie poruszać się po katalogach systemu plików. Później wystarczy już tylko wiedzieć, że możemy dowiedzieć się o szczegóły każdego nam znanego polecenia wywołując dla niego helpa, czy podręcznik manuala.&lt;br /&gt;
&lt;br /&gt;
na Windowsach&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;nazwa_polecenia &lt;b&gt;/?&lt;/b&gt;&lt;/span&gt; - wyświetla pomoc dla zadanego polecenia&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
na Linuksach&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;&lt;b&gt;man&lt;/b&gt; nazwa_polecenia&lt;/span&gt; - wyświetla stronę manuala&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;nazwa_polecenia &lt;b&gt;--help&lt;/b&gt; &lt;/span&gt;- wyświetla pomoc dla danego polecenia (zazwyczaj o innej &amp;nbsp;treści i formacie niż &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, &amp;quot;Courier&amp;quot;, monospace;"&gt;man&lt;/span&gt;&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;A skąd się dowiedzieć o tych najciekawszych poleceniach, jak te ze zwiastunu? Ostatnimi czasu subskrybuję swoim czytnikiem RSSa serwis &lt;a href="http://www.commandlinefu.com/"&gt;http://www.commandlinefu.com/&lt;/a&gt;. Można tam znaleźć najciekawsze "jednolinijkowce". Na pierwszy rzut oka, dla kogoś niewprawionego serwis jest średnio przydatny. Wszakże przeciętny jednolinijkowiec jest przecież rozwiązaniem dla zaledwie jednego (i bardzo często) dość specyficznego problemu. To prawda, lecz najczęściej dany jednolinijkowiec składa się nie z jednego polecenia, lecz kombinacji kilku. Części z nich możemy nie znać, ale dzięki takim zbiorom, możemy się przyjrzeć do jakich zastosowań (oprócz tych nam znanych) przydają się innym. Jeżeli interesują nas zastosowania jednego konkretnego polecenia, to z pewnością znajdziemy je w tagach.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;img border="0" src="http://1.bp.blogspot.com/_-y8v2S8HMEw/TJ-rkuOVN7I/AAAAAAAAARU/QzRiG-W9tFs/s1600/clf.jpg" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Każdy jednolinijkowiec jest oceniany przez użytkowników serwisu. Łatwo jest więc ocenić, na który ze znalezionych okazów warto rzucić dokładniej okiem. Sortując po ilości głosów wszystkie wpisy można podziwiać prawdziwe perełki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jeżeli Wy znaleźliście jakiś inny dobry sposób na naukę nowych komend konsoli, to z chęcią poznam Wasze rady :)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; color: black; font-size: small; font-weight: bold; text-decoration: none;"&gt;noisy-coder@blogspot.com: ~ $ cat feeds&lt;br /&gt;
&lt;span style="font-weight: normal;"&gt;&amp;nbsp;rss/atom - &lt;a href="http://feeds.feedburner.com/noisy-coder" style="background-color: white; color: black;"&gt;http://feeds.feedburner.com/noisy-coder&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
noisy-coder@blogspot.com: ~ $_&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-5286060842834557434?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z5WNC5bEqLuyzAPaaUt9wsrw-Vk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z5WNC5bEqLuyzAPaaUt9wsrw-Vk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z5WNC5bEqLuyzAPaaUt9wsrw-Vk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z5WNC5bEqLuyzAPaaUt9wsrw-Vk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=bUKrGOXloas:2nFvqqFRYUw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=bUKrGOXloas:2nFvqqFRYUw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=bUKrGOXloas:2nFvqqFRYUw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=bUKrGOXloas:2nFvqqFRYUw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/bUKrGOXloas" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/5286060842834557434/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/09/noisy-coderblogspotcom-cat.html#comment-form" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/5286060842834557434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/5286060842834557434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/bUKrGOXloas/noisy-coderblogspotcom-cat.html" title="&lt;div style=&quot;background-color: white; color: black;  font-size:small; font-weight:bold; text-decoration:none;&quot;&gt;noisy-coder@blogspot.com: ~ $ cat mędrcy_linii_komend&lt;br/&gt;&lt;/div&gt;" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_-y8v2S8HMEw/TJ-rkuOVN7I/AAAAAAAAARU/QzRiG-W9tFs/s72-c/clf.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/09/noisy-coderblogspotcom-cat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMQH05fCp7ImA9Wx9RF0U.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-8892923557613911704</id><published>2010-09-01T10:57:00.001+02:00</published><updated>2010-12-19T18:39:41.324+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-19T18:39:41.324+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="ankieta" /><title>Rozwój GITa - ankieta</title><content type="html">Krótki wpis.&lt;br /&gt;
&lt;br /&gt;
Jeżeli jesteś zainteresowany rozwojem gita, chciałbyś mieć na niego wpływ i jesteś w stanie poświęcić swoje cenne 5 minut, wypełnij proszę poniższą ankietę:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.survs.com/survey/MUPYR8UJ4B"&gt;https://www.survs.com/survey/MUPYR8UJ4B&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
więcej informacji na stronie: &lt;a href="https://git.wiki.kernel.org/index.php/GitSurvey2010"&gt;https://git.wiki.kernel.org/index.php/GitSurvey2010&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-8892923557613911704?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yDIvwdtqxEefxQd1IQQH5-pMM64/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yDIvwdtqxEefxQd1IQQH5-pMM64/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yDIvwdtqxEefxQd1IQQH5-pMM64/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yDIvwdtqxEefxQd1IQQH5-pMM64/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wmBPbdHC_NI:XhNVWjivMI0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=wmBPbdHC_NI:XhNVWjivMI0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wmBPbdHC_NI:XhNVWjivMI0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=wmBPbdHC_NI:XhNVWjivMI0:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/wmBPbdHC_NI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/8892923557613911704/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/09/rozwoj-gita-ankieta.html#comment-form" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8892923557613911704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/8892923557613911704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/wmBPbdHC_NI/rozwoj-gita-ankieta.html" title="Rozwój GITa - ankieta" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/09/rozwoj-gita-ankieta.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcASXw5eCp7ImA9Wx9RF0o.&quot;"><id>tag:blogger.com,1999:blog-4645914242670363949.post-2650008432457815825</id><published>2010-08-27T23:34:00.003+02:00</published><updated>2010-12-19T17:44:08.220+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-19T17:44:08.220+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C" /><category scheme="http://www.blogger.com/atom/ns#" term="programowanie" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Zagadka z C++</title><content type="html">Zagadka jest prosta. Co zwróci dany fragment kodu C++:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;(int(),long(),char())["\a\r\t"]["9876543210"];
&lt;/pre&gt;&lt;br /&gt;
Przyznam szczerze, że sam tego nie wymyśliłem, lecz usłyszałem od kolegi z pracy. Zagadka spodobała mi się jednak tak bardzo, że postanowiłem się nią podzielić :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;FAQ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Czy ten kod się w ogóle skompiluje?&lt;/b&gt;&lt;br /&gt;
- tak, oczywiście :)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Wydaje mi się, że znam wynik, wstawić go do komentarza?&lt;/b&gt;&lt;br /&gt;
- &lt;b&gt;&lt;span style="color: red;"&gt;&lt;u&gt;nie&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;, lecz możesz napisać, czy zgadłeś wynik. A czy zgadłeś możesz sprawdzić kompilując kod.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Przyda mi się to do czegoś?&lt;/b&gt;&lt;br /&gt;
- nie :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4645914242670363949-2650008432457815825?l=blog.krzysztofszumny.pl' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d14TNTbdLgB6ga8VVYl5as3_Gh0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d14TNTbdLgB6ga8VVYl5as3_Gh0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d14TNTbdLgB6ga8VVYl5as3_Gh0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d14TNTbdLgB6ga8VVYl5as3_Gh0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5Obw9pN4yNg:XFgoHPyg_0I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?i=5Obw9pN4yNg:XFgoHPyg_0I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5Obw9pN4yNg:XFgoHPyg_0I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Noisy-Coder?a=5Obw9pN4yNg:XFgoHPyg_0I:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Noisy-Coder?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Noisy-Coder/~4/5Obw9pN4yNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.krzysztofszumny.pl/feeds/2650008432457815825/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://blog.krzysztofszumny.pl/2010/08/zagadka-z-c.html#comment-form" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2650008432457815825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4645914242670363949/posts/default/2650008432457815825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Noisy-Coder/~3/5Obw9pN4yNg/zagadka-z-c.html" title="Zagadka z C++" /><author><name>Krzysztof Szumny</name><uri>https://profiles.google.com/109206715160927454873</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-yLqEd8m9pCU/AAAAAAAAAAI/AAAAAAAAAgw/gtKlcOTkcqw/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://blog.krzysztofszumny.pl/2010/08/zagadka-z-c.html</feedburner:origLink></entry></feed>

