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

<channel>
	<title>&#60;?blog &#187; Różności</title>
	<atom:link href="http://blog.visionsoftware.pl/kategoria/roznosci/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.visionsoftware.pl</link>
	<description>...nie tylko o programowaniu</description>
	<lastBuildDate>Sun, 23 Mar 2014 19:23:43 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>GIT i patche: tworzenie i ładowanie</title>
		<link>http://blog.visionsoftware.pl/roznosci/git-i-patche-tworzenie-i-ladowanie.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/git-i-patche-tworzenie-i-ladowanie.html#comments</comments>
		<pubDate>Sat, 14 Dec 2013 18:17:41 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[cherry-pick]]></category>
		<category><![CDATA[format-patch]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[repozytorium]]></category>
		<category><![CDATA[wersjonowanie]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=631</guid>
		<description><![CDATA[Zdarza się czasem, że potrzebujemy do aplikacji z użyciem GITa dodać jakąś funkcjonalność, jednak z pewnych powodów nie możemy posłużyć się normalnym commitem. Być może nie chcemy komuś przyznać prawa zapisu w repozytorium, lub nakładamy poprawkę na zewnętrzną aplikację, będącą pod kontrolą systemu wersjonowania. W takim przypadku pomocne będzie stworzenie patcha, a następnie załadowanie go do aplikacji. Tworzenie patcha Tworzenie patcha w GIT jest niezwykle proste. Powiedzmy, że chcemy wprowadzić pewną zmianę w działającą, zewnętrzną [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Zdarza się czasem, że potrzebujemy do aplikacji z użyciem GITa dodać jakąś funkcjonalność, jednak z pewnych powodów nie możemy posłużyć się normalnym commitem. Być może nie chcemy komuś przyznać prawa zapisu w repozytorium, lub nakładamy poprawkę na zewnętrzną aplikację, będącą pod kontrolą systemu wersjonowania. W takim przypadku pomocne będzie stworzenie patcha, a następnie załadowanie go do aplikacji.<span id="more-631"></span></p>
<h1>Tworzenie patcha</h1>
<p>Tworzenie patcha w GIT jest niezwykle proste. Powiedzmy, że chcemy wprowadzić pewną zmianę w działającą, zewnętrzną aplikację, a następnie przesłać te zmiany innemu programiście. Na początek powinniśmy stworzyć osobny branch na nasze zmiany:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git checkout -b fix-example master
</pre>
<p>Powyższe polecenie stworzy nowy branch o nazwie fix-example na podstawie gałęzi master i przełączy się na nią.</p>
<p>Następnie wprowadzamy wymagane poprawki i wykonujemy commit:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git add .
git commit -m &quot;My fixes&quot;
</pre>
<p>Teraz pozostaje już tylko wygenerowanie patcha z naszymi zmianami:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git format-patch master --stdout &gt; fix-example.patch
</pre>
<p>Powyższe polecenie wygeneruje plik z wszystkimi zmianami w stosunku do gałęzi master.</p>
<h1>Tworzenie patcha dla pojedynczego commita</h1>
<p>Jeśli chcemy stworzyć osobne patche dla każdego commita, możemy to zrobić w następujący sposób:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git format-patch -2 0c4b265151e8de7416d16d447d7ac89043c75481
</pre>
<p>Pierwszy parametr oznacza, ile patchy chcemy stworzyć, a drugi początkowego commita,. Poszczególne pliki zostaną nazwane na podstawie opisu commita, np:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
0001-My-fix-example.patch
0002-My-fix-examlple-2.patch
</pre>
<h1>Załadowanie patcha</h1>
<p>Ładowanie patcha jest równie proste, co jego tworzenie. Na początek możemy sprawdzić, co nowego wnosi przygotowana poprawka:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git apply --stat fix-example.patch
</pre>
<p>Wynikiem tego działania będzie lista wszystkich plików wraz z podsumowaniem zmian:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
myfile1.php | 4
myfile2.php | 2
2 files changed, 3 insertions(+), 3 deletions(-)
</pre>
<p>W następnym kroku warto sprawdzić, czy załadowanie patcha uda się przeprowadzić bez konfliktów. W końcu w aplikacji mogły się już pojawić jakieś zmiany dokonane przez inne osoby:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git apply --check fix-example.patch
</pre>
<p>W przypadku konfliktów, zostaną one wyświetlone na liście, na przykład:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
error: patch failed: myfile1.php:29
error: myfile1.php: patch does not apply
</pre>
<p>Natomiast w przypadku, gdy wszystko będzie możliwe do załadowania, nie powinniśmy zobaczyć żadnego komunikatu. W takim przypadku pozostaje już tylko faktyczne załadowanie naszej poprawki. Można to zrobić przy pomocy dwóch komend: git apply oraz git am. Druga z nich będzie jednak lepsza, gdyż umożliwia podpisanie patcha przez osobę, która go zaaplikowała:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git am --signoff &lt; fix-example.patch
</pre>
<p>Po zakończeniu operacji zostanie wyświetlona lista commitów, jakie zostały wprowadzone w patchu:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
Applying: my fix example
</pre>
<p>Przeglądając historię, będziemy mogli łatwo odnaleźć informację zarówno o autorze jak i osobie, która ją załadowała do repozytorium:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
$ git log
commit 01ed141f907ffafea6f3f0c9947c9b78dba1bb45
Author: Marcin Fliszta &lt;marcin.fliszta@...&gt;
Date: Sat Nov 30 13:13:40 2013 +0100

my fix example

Signed-off-by: Marcin Fliszta &lt;marcin.fliszta@...&gt;
</pre>
<h1>Wycofanie patcha</h1>
<p>Gdy podczas ładowania patcha coś pójdzie nie tak jak się spodziewaliśmy, możemy łatwo go wycofać. Tryb rozwiązywania problemów jest podobny do tego, z którym mamy do czynienia podczas konfliktów.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
$ git am --signoff &lt; 0001-My-fix-example.patch
Applying: myfile1.php update
error: patch failed: myfile1.php:1
error: myfile1.php: patch does not apply
Patch failed at 0001 myfile1 update
The copy of the patch that failed is found in:
/var/www/patchexample/.git/rebase-apply/patch
When you have resolved this problem, run &quot;git am --resolved&quot;.
If you prefer to skip this patch, run &quot;git am --skip&quot; instead.
To restore the original branch and stop patching, run &quot;git am --abort&quot;.
</pre>
<p>W celu wycofania naszego patcha wystarczy zastosować komendę wymienioną na końcu informacji o niepowodzeniu:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git am --abort
</pre>
<h1>Przenoszenie commitów pomiędzy branchami</h1>
<p>Jeśli widzisz dodatkowe zastosowanie opisanych tutaj rozwiązań w przypadku przenoszenia wybranych commitów pomiedzy lokalnymi branchami, to nie warto zawracać sobie tym głowy. Do tego celu GIT posiada znacznie lepsze polecenie, jakim jest <a title="Dokumentacja GIT: cherry-pick" href="http://git-scm.com/docs/git-cherry-pick" target="_blank">cherry-pick</a>.</p>
<p>Jego składnia i działanie są banalnie proste i może wyglądać następująco:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
git cherry-pick 01ed141f907ffafea6f3f0c9947c9b78dba1bb45
</pre>
<p>Powyższe wywołanie spowoduje wstawienie wybranego po hashu commita do bieżącego brancha. Nie musimy oczywiście wskazywać z jakiego brancha ma być on załadowany, gdyż hash jest unikalny dla całego repozytorium. Dostępne są oczywiście różne opcje tego polecenia, można zapoznać się z nimi w dokumentacji GITa.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/git-i-patche-tworzenie-i-ladowanie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMS Made Simple i edycja plików z Template Externalizer</title>
		<link>http://blog.visionsoftware.pl/roznosci/cms-made-simple-i-edycja-plikow-z-template-externalizer.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/cms-made-simple-i-edycja-plikow-z-template-externalizer.html#comments</comments>
		<pubDate>Tue, 28 Feb 2012 22:07:53 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[CMS Made Simple]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[Template Externalizer]]></category>
		<category><![CDATA[wtyczki]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=515</guid>
		<description><![CDATA[Tworzenie stron www z użyciem jakiegokolwiek CMSa może być uciążliwe ze względu na sposób edycji plików. Podczas modyfikacji szablonów lub plików CSS, w przypadku przechowywania ich w bazie danych mamy najczęściej do dyspozycji pole textarea, w najlepszym wypadku kolorujące składnię. Podobnie jest w CMS Made Simple, istnieje jednak świetna wtyczka, umożliwiająca użycie swojego ulubionego edytora. Jak działa Template Externalizer? Sposób działania wtyczki Template Externalizer jest bardzo prosty: umożliwia ona eksport szablonów oraz innych danych przechowywanych [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tworzenie stron www z użyciem jakiegokolwiek CMSa może być uciążliwe ze względu na sposób edycji plików. Podczas modyfikacji szablonów lub plików CSS, w przypadku przechowywania ich w bazie danych mamy najczęściej do dyspozycji pole textarea, w najlepszym wypadku kolorujące składnię. Podobnie jest w CMS Made Simple, istnieje jednak świetna wtyczka, umożliwiająca użycie swojego ulubionego edytora.<span id="more-515"></span></p>
<h3>Jak działa Template Externalizer?</h3>
<p>Sposób działania wtyczki <a href="http://dev.cmsmadesimple.org/projects/externalizer">Template Externalizer</a> jest bardzo prosty: umożliwia ona eksport szablonów oraz innych danych przechowywanych w bazie do tymczasowych płków w wybranym katalogu. Dzięki temu można użyć swojego ulubionego edytora do ich modyfikacji (poprzez FTP), a pliki będą automatycznie synchronizowane z danymi w bazie.</p>
<h3>Możliwości Template Externalizer</h3>
<p>Wtyczka umożliwia eksport następujących elementów:</p>
<ul>
<li>szablony stron</li>
<li>szablony wtyczek</li>
<li>arkusze CSS</li>
<li>globalne bliki HTML</li>
<li>niektóre systemowe strony (szablon &#8222;przerwa techniczna&#8221;, metadata, standardowy szablon stron)</li>
</ul>
<h3>Konfiguracja wtyczki</h3>
<p>Plugin posiada bardzo proste możliwości konfiguracji. Po jego instalacji w menu &#8222;Wygląd&#8221; pojawia się niewielka możliwość ustawień:</p>
<ul>
<li>włączenie i wyłączenie funkcjonalności</li>
<li>katalog, w którym przechowywane są pliki tymczasowe (musi posiadać prawa do zapisu)</li>
<li>czas działania wtyczki</li>
</ul>
<p>Dzięki ostatniemu parametrowi możemy ustawić niejako czas trwania sesji działania wtyczki. Gdy minie, pliki tymczasowe zostaną automatycznie usunięte. Oczywiście możemy w każdej chwili sprawdzić ile czasu pozostało do zakończenia oraz go zresetować.</p>
<h3>Możliwe problemy przy konfiguracji katalogu roboczego</h3>
<p>Template Externalizer w wersji 2.0.6 posiada pewną niemiłą przypadłość. W przypadku pomyłki w nazwie katalogu, w którym będą przechowywane wyeksportowane pliki, CMS Made Simple przestanie działać. Zarówno strona jak i panel administracyjny będą niedostępne z powodu błędu. Wystarczy wtedy zalogować się do bazy danych i w tabeli cms_siteprefs zmodyfikować zmienną TemplateExternalizer_mapi_pref_cache_path. Określa ona wspomniany katalog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/cms-made-simple-i-edycja-plikow-z-template-externalizer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pierwsze urodziny mojego bloga :)</title>
		<link>http://blog.visionsoftware.pl/roznosci/pierwsze-urodziny-mojego-bloga.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/pierwsze-urodziny-mojego-bloga.html#comments</comments>
		<pubDate>Mon, 12 Dec 2011 22:07:14 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[rocznica]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=450</guid>
		<description><![CDATA[Dziś mija dokładnie rok od momentu, gdy napisałem na tym blogu pierwszego posta. Nie powstało ich zbyt wiele, ale mam nadzieję, że informacje jakie na nim dotychczas przedstawiłem, okazały się pomocne. W kolejnym roku postaram się, aby wpisów było więcej i stanowiły jeszcze lepsze źródło wiedzy dotyczące programowania i nie tylko. Dziękuję wszystkim, którzy dotychczas odwiedzili ten blog i przekazali swoje uwagi oraz opinie. Zapraszam do czytania kolejnych postów, które powinny się pojawić już niebawem.]]></description>
				<content:encoded><![CDATA[<p>Dziś mija dokładnie rok od momentu, gdy napisałem na tym blogu pierwszego posta. Nie powstało ich zbyt wiele, ale mam nadzieję, że informacje jakie na nim dotychczas przedstawiłem, okazały się pomocne. W kolejnym roku postaram się, aby wpisów było więcej i stanowiły jeszcze lepsze źródło wiedzy dotyczące programowania i nie tylko. Dziękuję wszystkim, którzy dotychczas odwiedzili ten blog i przekazali swoje uwagi oraz opinie. Zapraszam do czytania kolejnych postów, które powinny się pojawić już niebawem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/pierwsze-urodziny-mojego-bloga.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Czym jest QR Code?</title>
		<link>http://blog.visionsoftware.pl/roznosci/czym-jest-qr-code.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/czym-jest-qr-code.html#comments</comments>
		<pubDate>Tue, 30 Aug 2011 21:13:46 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[QR Code]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=326</guid>
		<description><![CDATA[Kody QR można coraz częściej znaleźć na stronach internetowych, różnego rodzaju drukowanych materiałach oraz w wielu innych miejscach. Mogą mieć wiele zastosowań, dzięki którym możemy uprościć nasze codzienne zadania. Warto więc zapoznać się z ich możliwościami. Podstawowe informacje Jak podaje Wikipedia, QR Code to &#8222;alfanumeryczny, dwuwymiarowy, matrycowy, kwadratowy kod kreskowy wynaleziony przez japońską firmę Denso-Wave w 1994 roku&#8221;. Samo QR jest skrótem od angielskiego Quick Response, czyli &#8222;szybka odpowiedź&#8221;. QR Code jest młodszym bratem zwykłych [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Kody QR można coraz częściej znaleźć na stronach internetowych, różnego rodzaju drukowanych materiałach oraz w wielu innych miejscach. Mogą mieć wiele zastosowań, dzięki którym możemy uprościć nasze codzienne zadania. Warto więc zapoznać się z ich możliwościami.<span id="more-326"></span></p>
<h3>Podstawowe informacje</h3>
<p>Jak podaje Wikipedia, QR Code to &#8222;alfanumeryczny, dwuwymiarowy, matrycowy, kwadratowy kod kreskowy wynaleziony przez japońską firmę Denso-Wave w 1994 roku&#8221;. Samo QR jest skrótem od angielskiego Quick Response, czyli &#8222;szybka odpowiedź&#8221;.</p>
<p>QR Code jest młodszym bratem zwykłych kodów kreskowych, które możemy spotkać dziś na każdym kroku. Posiada jednak nad nim dużą przewagę &#8211; jest znacznie pojemniejszy. Może przechowywać do 7089 znaków numerycznych lub 4296 alfanumerycznych. Stwarza to ogromne możliwości, gdyż w ten sposób możemy kodować nie tylko krótkie numery jak w przypadku kodów kreskowych, lecz znacznie dłuższe treści. Mogą to być także adresy www, numery telefonów lub inne dane, które  spowodują na skanującym urządzeniu określoną akcję.</p>
<p>Aby odczytywać QR Cody, wystarczy praktycznie jakiekolwiek urządzenie z aparatem fotograficznym &#8211; np. telefon komórkowy lub tablet. Nowoczesne smartfony posiadają bardzo często zainstalowaną odpowiednią aplikację do tego celu. Jeśli tak nie jest, możemy skorzystać z jednego z wielu (także darmowych) narzędzi, np. BeeTagg, Kaywa Reader, I-nigma, OptiScan, itd. Dostępne są one także na starsze modele telefonów, wystarczy poszukać w internecie.</p>
<p>Można także spotkać inne standardy kodów dwuwymiarowych, takie jak Data Matrix oraz Aztec Code. Istnieje także minimalistyczna wersja Micro QR Code, która służy do przechowywania mniejszych ilości danych.</p>
<p>Tworzyć kody QR możemy bardzo prosto, wykorzystując dostępne w sieci generatory on-line. Różne języki programowania posiadają odpowiednie biblioteki, które umożliwią ich uzyskanie w naszych własnych aplikacjach.</p>
<h3>Przykłady zastosowań</h3>
<p>Informacje, jakie mogą zawierać kody QR, mogą być bardzo zróżnicowane. Poniżej przedstawiono wybrane przykłady wraz z ich możliwymi zastosowaniami.</p>
<p><img class="size-full wp-image-328 alignnone" title="QR Code - Tekst" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_text.png" alt="" width="150" height="150" /></p>
<p>Tekst – odczytanie telefonem (lub innym urządzeniem) spowoduje jego wyświetlenie na ekranie. Możemy tę funkcjonalność wykorzystać jak w zwykłym kodzie kreskowym do umieszczania różnego rodzaju symboli na dokumentach, paragonach, formularzach zamówień, paczkach itp. Z uwagi na większą pojemność świetnie nadaje się we wszystkich procesach logistycznych. Taki QR Code umożliwi także stworzenie ciekawej reklamy, której zakodowaną treść odczytają użytkownicy, mogą otrzymać także dzięki temu kupon rabatowy.</p>
<p><img class="alignnone size-full wp-image-333" title="QR Code - adres www" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_url.png" alt="" width="150" height="150" /></p>
<p>Adres www – po zeskanowaniu nasz telefon zapyta, czy chcemy odwiedzić zawarty w kodzie URL. Taki QR Code nadają się więc świetnie na wszelkie &#8222;papierowe&#8221; materiały reklamowe, dzięki czemu uprościmy użytkownikom wejście z urządzeń mobilnych na naszą stronę www. W przypadku serwisów internetowych z aplikacjami na telefony, użytkownik z wykorzystaniem takiego QR Code będzie mógł szybko pobrać wybrany program nie męcząc się z przepisywaniem URLa. Biorąc pod uwagę możliwości niektórych serwisów www, możemy w ten sposób pokazać komuś określoną lokację (poprzez link do Google Maps), polubić coś na Facebooku lub dodawać treść na Twitterze. W przypadku stworzenia swojej aplikacji lub usługi we własnym serwisie  www, możemy dać użytkownikom możliwość wykonywania specyficznych akcji. Wszystko zależy od naszej pomysłowości.</p>
<p><img class="size-full wp-image-332 alignnone" title="QR Code - numer telefonu" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_phone.png" alt="" width="150" height="150" /></p>
<p>Numer telefonu – zeskanowanie takiego kodu umożliwia wykonanie połączenia telefonicznego lub zapisanie kontaktu bez przepisywania cyferek. Jeśli chodzi o zastosowanie w praktyce, lepsze będzie jednak wykorzystanie bardziej rozbudowanego kontaktu, o którym będzie mowa w dalszej części artykułu.</p>
<p><img class="alignnone size-full wp-image-334" title="QR Code - wiadomość SMS" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_sms.png" alt="" width="150" height="150" /></p>
<p>SMS – odczytanie kodu spowoduje utworzenie SMS z podaną treścią oraz wpisanym numerem telefonu i wyświetlenie prośby o potwierdzenie wysłania. Świetny sposób dla serwisów z płatnościami SMS na uproszczenie całej procedury. Użytkownik zamiast wpisywać odpowiedni kod i wybierać numer telefonu, może po prostu zeskanować QR Code i kliknąć &#8222;Wyślij&#8221;.</p>
<p><img class="alignnone size-full wp-image-336" title="QR Code - email" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_mail.png" alt="" width="200" height="200" /></p>
<p>Email – zachowanie podobne do opisanego powyżej, ale dotyczy wysłania wiadomości elektronicznej na podany adres.</p>
<p><img class="alignnone size-full wp-image-337" title="QR Code - wizytówka meCard" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qrcode_mecard.png" alt="" width="250" height="250" /><br />
Wizytówka – może być zapisana w różnym formacie, np. vCard lub meCard. Po zeskanowaniu nasze urządzenie będzie mogło dodać odpowiednie informacje do listy kontaktów. Ich rodzaj jest uzależniony od formatu, może to być między innymi imię, nazwisko, stanowisko, numer telefonu, adres, mail, strona www i inne. Świetnie nadaje się na papierowe wizytówki lub inne materiały informacyjne, upraszczając znacząco dodawanie nowego kontaktu do telefonu. Podobnie można je wykorzystać w serwisach internetowych prezentujących dane teleadresowe firm.</p>
<h3>Ciekawe wykorzystanie QR Code</h3>
<p>Przedstawione powyżej zastosowania kodów to tylko podstawa. Wszystko zależy od zapotrzebowania i kreatywności osoby, która chce je wykorzystać. Świetnym przykładem może być tutaj kampania koreańskiej sieci Home Plus, należącej do Tesco. Biorąc pod uwagę specyfikę robienia zakupów w tym kraju i ciągły brak czasu jego obywateli, postawiono wyjść ze sklepem do ludzi. W stacjach metra umieszczono na ścianach plakaty przedstawiające półki z towarami, przy których umieszczono kody QR. Podczas oczekiwania na pociąg można więc skanowac kody, co powoduje dodanie określonego produktu do wirtualnego koszyka. Po skompletowaniu całego, wybieramy sposób zapłaty, miejsce dostawy i&#8230; zakupy zrobione. Koniec z kolejkami przy kasach i traceniem czasu. Na poniższym filmiku możemy zobaczyć realizację tego wyśmienitego pomysłu.</p>
<p><iframe src="http://www.youtube.com/embed/fGaVFRzTTP4" frameborder="0" width="420" height="345"></iframe></p>
<p>Znacznie bardziej kontrowersyjnym (chyba nie tylko dla mnie) przykładem wykorzystania kodów QR są&#8230; tablice nagrobne. Japońska firma Ishinokoe w roku 2008 wprowadziła usługę umieszczania ich na nagrobkach, aby można było przedstawić więcej informacji o zmarłej osobie. Zeskanowanie kodu powoduje przejście na specjalnie przygotowaną stronę www, na którą rodzina i przyjaciele zmarłego mogą umieścić jego historię, wspomnienia, zdjęcia itp. Kod QR będzie odpowiednio zabezpieczony (hasłem lub kluczem), aby mogły go zeskanować tylko wybrane osoby.</p>
<p><img class="alignnone size-full wp-image-327" title="QR Code na nagrobku" src="http://blog.visionsoftware.pl/wp-content/uploads/2011/08/qr_code_grave.jpg" alt="" width="540" height="360" /></p>
<h3>Dodatkowe uwagi przy tworzeniu kodów</h3>
<p>Aby wygenerowane kody można było bez problemu odczytać na jak największej liczbie urządzeń, najlepiej stosować czarno-białe kolory. Niski kontrast może utrudnić poprawne skanowanie.</p>
<p>Wokół kodu najlepiej pozostawić białą ramkę, dzięki czemu zostanie on łatwo wykryty. Cały kod nie pewien też być zbyt duży, gdyż umieszczając go na mniejszym obszarze wielkość poszczególnych kwadratów może być zbyt mała. Przez to część urządzeń ze słabszym aparatem fotograficznym będzie miała problem z poprawnym odczytem. Dlatego lepiej nie umieszczać zbyt wielu informacji w jednym QR Code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/czym-jest-qr-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projektowanie aplikacji z MockFlow</title>
		<link>http://blog.visionsoftware.pl/roznosci/projektowanie-aplikacji-z-mockflow.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/projektowanie-aplikacji-z-mockflow.html#comments</comments>
		<pubDate>Wed, 29 Jun 2011 20:09:13 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[mockflow]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[projektowanie]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=294</guid>
		<description><![CDATA[Podczas tworzenia strony www lub aplikacji, jednym z pierwszych kroków jest zaprojektowanie interfejsu. Niektórym wystarcza do tego celu kartka papieru i długopis, inni wolą specjalistyczne programy typu Axure lub Balsamiq, graficy wybiorą Photoshopa lub inne narzędzie. Można także skorzystać z ciekawej aplikacji on-line jaką jest MockFlow. Na wstępie tego artykułu muszę zaznaczyć, że nie używałem wcześniej oprogramowania do tworzenia mockupów (wystarczała mi kartka papieru i długopis). Z tego względu nie mam rozeznania wśród tego typu [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Podczas tworzenia strony www lub aplikacji, jednym z pierwszych kroków jest zaprojektowanie interfejsu. Niektórym wystarcza do tego celu kartka papieru i długopis, inni wolą specjalistyczne programy typu Axure lub Balsamiq, graficy wybiorą Photoshopa lub inne narzędzie. Można także skorzystać z ciekawej aplikacji on-line jaką jest MockFlow.<span id="more-294"></span></p>
<p>Na wstępie tego artykułu muszę zaznaczyć, że nie używałem wcześniej oprogramowania do tworzenia mockupów (wystarczała mi kartka papieru i długopis). Z tego względu nie mam rozeznania wśród tego typu narzędzi. Ostatnio postanowiłem jednak to zmienić, aby szybciej tworzyć wstępne projekty serwisów www. Po krótkim używaniu MockFlow bardzo przypadł mi do gustu i myślę, że warto na niego zwrócić uwagę.</p>
<p>MockFlow można wykorzystać do tworzenia różnego rodzaju makiet: serwisów internetowych, aplikacji mobilnych oraz desktopowych. Używanie jest niezwykle proste, składamy po prostu projektowany interfejs z gotowych elementów graficznych oraz symboli. Biorąc pod uwagę ich ilość i możliwość konfiguracji, nie powinniśmy mieć problemów z ich doborem. Podstawowy zbiór możemy powiększyć o własne elementy oraz tworzone przez innych użytkowników.</p>
<p>Aplikacja jest dostępna w dwóch wariantach:</p>
<ul>
<li> on-line &#8211; pod adresem  mockflow.com</li>
<li> desktopowej &#8211; dla Windows oraz Maca</li>
<li> mobilnej – dla Apple iOS (iPhone, iPod Touch, iPad) oraz Android (minimum 2.3)</li>
</ul>
<p>Wersja desktopowa posiada pełną funkcjonalność i możemy jej używać bez połączenie z internetem. Wszystkie nasze zmiany mogą być w dowolnym momencie zsynchronizowane z kontem w serwisie.</p>
<p>Dużą zaletą MockFlow jest możliwość darmowego użytkowania. Oczywiście wiąże się to z ograniczeniami, jednak dla osób, które korzystać będą z aplikacji niezbyt intensywnie, powinno to wystarczyć. Na darmowym koncie można tworzyć jednocześnie maksymalnie 1 projekt z 4 stronami i dzielić go z dwoma współpracownikami. Na przechowywanie naszych danych otrzymamy 10 MB, a drukowane raporty będą zawierały znak wodny. Płatna wersja nie posiada żadnych z wymienionych ograniczeń, a jej koszt to 69 USD za rok, więc nie jest astronomicznie wysoki. Oprócz tego posiada kilka innych udogodnień, których zabraknie w wersji darmowej.</p>
<p>Aby zacząć korzystać z darmowej wersji MockFlow wystarczy podać imię, mail oraz wybrać hasło lub skorzystać z logowania przez konto Google. Po rejestracji możemy od razu przystąpić do projektowania naszej aplikacji.</p>
<p>Tworząc nowy projekt, możemy zacząć od pustego ekranu, wybrać prosty szablon, skorzystać z ułatwień dla aplikacji mobilnych lub edytować standardowy szablon Drupal, Joomla oraz WordPress. Z bibliotek udostępnianych przez innych użytkowników możemy wybrać wiele innych przygotowanych przez nich układów.</p>
<p>Projektowanie jest niezwykle proste. Wystarczy przeciągnąć odpowiedni element na obszar roboczy oraz ewentualnie dodatkowo go skonfigurować. Wybór jest bardzo duży, m.in. wszelkiego rodzaju wielokąty, formularze, przyciski, menu, wykresy, listy, panele, okienka, linie oraz inne najróżniejsze elementy interfejsu. W przypadku, gdy jakiegoś nam brakuje, możemy przejrzeć rozszerzone biblioteki innych użytkowników, lub wgrać swoje własne.</p>
<p>W obszarze roboczym możemy wyświetlić siatkę pomocniczą w różnych układach. Dodatkowo wszystkie elementy bardzo sprawnie przyciągają się do powstających w układzie linii. Obiekty możemy grupować, dzięki łatwo przemieścimy je razem w inne miejsce.</p>
<p>Gotowy, stworzony projekt możemy wyeksportować do PDF, PNG, Prezentacji Power Pointa, Excela, Worda lub HTML 5. Z projektu może korzystać więcej niż jedna osoba, pomiędzy którym możemy uruchomić chat.</p>
<p>Po kilku dniach korzystania z opisanej aplikacji jak na razie jestem pod bardzo dużym wrażeniem jej możliwości. Być może mój entuzjazm podupadnie za jakiś czas wraz z rosnącymi potrzebami. Jednak mogę z czystym sumieniem polecić go wszystkim, którzy potrzebują przygotować szybko mockup.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/projektowanie-aplikacji-z-mockflow.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przydatne możliwości .htaccess</title>
		<link>http://blog.visionsoftware.pl/roznosci/przydatne-mozliwosci-htaccess.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/przydatne-mozliwosci-htaccess.html#comments</comments>
		<pubDate>Thu, 17 Mar 2011 21:51:49 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[autoryzacja]]></category>
		<category><![CDATA[hotlinkowanie]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[htgroup]]></category>
		<category><![CDATA[htpasswd]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[przekierowanie]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=224</guid>
		<description><![CDATA[Dzięki plikowi .htaccess możemy skorzystać z wielu dodatkowych możliwości serwera Apache. Zapisane w nim reguły modyfikują globalną konfigurację, oraz wprowadzają własne ustawienia. W niniejszym artykule przedstawię kilka przydatnych dyrektyw, które pomogą w przekierowaniu ruchu, blokadzie hotlinkowania obrazków, dostępu do katalogu, umożliwią poinformowanie użytkowników o przerwie technicznej itp. Przerwa techniczna W przypadku dokonywania modyfikacji w serwisie www nie chcemy, aby korzystali z niego w tym momencie użytkownicy. Nie powinni oni zauważyć ewentualnych błędów lub efektów naszych [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dzięki plikowi .htaccess możemy skorzystać z wielu dodatkowych możliwości serwera Apache. Zapisane w nim reguły modyfikują globalną konfigurację, oraz wprowadzają własne ustawienia. W niniejszym artykule przedstawię kilka przydatnych dyrektyw, które pomogą w przekierowaniu ruchu, blokadzie hotlinkowania obrazków, dostępu do katalogu, umożliwią poinformowanie użytkowników o przerwie technicznej itp.<br />
<span id="more-224"></span></p>
<h3>Przerwa techniczna</h3>
<p>W przypadku dokonywania modyfikacji w serwisie www nie chcemy, aby korzystali z niego w tym momencie użytkownicy. Nie powinni oni zauważyć ewentualnych błędów lub efektów naszych prac przed ich zakończeniem. W tym celu najprościej przekierować wszystkie osoby oprócz nas na stronę informującą o przerwie technicznej. Możemy to wykonać rozpoznając adres IP przy pomocy poniższych reguł:</p>
<pre class="brush: plain; title: ; notranslate">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444
RewriteCond %{REQUEST_URI} !maintenance.html$ [NC]
RewriteRule .* /katalog/maintenance.html [R=302,L]
&lt;/IfModule&gt;
</pre>
<p>W skrócie: jeśli adres IP jest inny niż 111.222.333.444, a bieżący dokument to nie maintenance.html, nastąpi przekierowanie użytkownika na stronę informującą o przerwie technicznej. Brak drugiej reguły doprowadzi do błędu serwera z powodu zapętlenia (ciągła próba przekierowania).</p>
<h3>Przekierowanie adresu &#8222;z www&#8221; na &#8222;bez www&#8221;</h3>
<p>Do celów SEO lepiej, jeśli wyszukiwarki internetowe widzą naszą stronę pod jednym adresem: &#8222;z www&#8221; lub &#8222;bez www&#8221;. W przypadku Google można to ustawić korzystając z Narzędzi dla webmasterów, jednak bardzo prosto można to także osiągnąć w pliku .htaccess. Gdy chcemy, aby nasza strona była dostępna tylko pod adresem &#8222;posiadającym www&#8221;, należy zastosować regułę:</p>
<pre class="brush: plain; title: ; notranslate">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteCond %{HTTP_HOST} ^nasza-strona.pl$ [NC] 
RewriteRule ^(.*)$ http://www.nasza-strona.pl/$1 [R=301,L]
&lt;/IfModule&gt;
</pre>
<p>W celu przekierowania w drugą stronę ( tj. z „bez www” na „z www”), należy dokonać małej modyfikacji:</p>
<pre class="brush: plain; title: ; notranslate">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.nasza-strona.pl$ [NC]
RewriteRule ^(.*)$ http://nasza-strona.pl/$1 [R=301,L]
&lt;/IfModule&gt;
</pre>
<h3>Strony błędów</h3>
<p>Plik .htaccess umożliwia także włączenie własnych stron błędów. Wystarczy zastosować następujące reguły:</p>
<pre class="brush: plain; title: ; notranslate">
ErrorDocument 404 &quot;Błąd: nie ma takiego dokumentu&quot;
ErrorDocument 403 /katalog/error403.html
</pre>
<p>Wynikiem wywołania pierwszej reguły będzie wyświetlenie podanego tekstu. W drugim przypadku nastąpi przekierowanie na dokument HTML zawierający odpowiednie informacje.</p>
<h3>Blokada dostępu do katalogu</h3>
<p>Przy pomocy .htaccess można także zablokować dla nieporządnych użytkowników dostęp do określonego katalogu. Bez podania loginu i hasła nie będzie możliwe przeglądanie jego zawartości. Można tego dokonać, stosując poniższy kod:</p>
<pre class="brush: plain; title: ; notranslate">
AuthType Basic
AuthName &quot;Podaj login i hasło&quot;
AuthUserFile /katalog/.htpasswd
Require user uzytkownik1 uzytkownik2 uzytkownik3
</pre>
<p>Nakłada on blokadę dostępu na katalog, w którym znajduje się plik .htaccess. Uprawnionych do korzystania użytkowników podano w regule Require user.  Poszczególne loginy i zaszyfrowane hasła powinny znajdować się w pliku .htpasswd w formacie  login:hasło. Z punktu widzenia bezpieczeństwa plik ten nie powinien być umieszczony w ogólnodostępnym katalogu www. Do jego wygenerowania możemy wykorzystać program htpasswd rozpowszechniany z Apache lub jeden z wielu generatorów dostępny on-line.</p>
<p>Gdy użytkowników jest więcej, możemy skorzystać z grup. Wystarczy zmodyfikować w następujący sposób plik .htaccess:</p>
<pre class="brush: plain; title: ; notranslate">
AuthType Basic
AuthName &quot;Podaj login i hasło&quot;
AuthUserFile /katalog/.htpasswd
AuthGroupFile /katalog/.htgroup
Require group grupa1 grupa2
</pre>
<p>Należy dodatkowo utworzyć plik .htgroup, zawierający nazwy grup oraz przypisanych im użytkowników. Przykładowo może on wyglądać w następujący sposób:</p>
<pre class="brush: plain; title: ; notranslate">
grupa1: uzytkownik1 uzytkownik2
grupa2: uzytkownik3 uzytkownik4 uzytkownik5
grupa3: uzytkownik6
</pre>
<p>W tym przypadku, oprócz sprawdzania poprawności nazwy użytkownika i hasła, weryfikowana jest przynależność do wymaganej grupy.</p>
<h3>Blokada hotlinkowania</h3>
<p>Hotlinkowanie polega na wstawianiu na obcych stronach www zdjęć lub innych obiektów, które są wczytywane z naszej witryny internetowej. Przez to nieuczciwy użytkownik może zaoszczędzić transfer na swoim serwerze, oraz obciążyć nasz.</p>
<p>Dzięki regułom w .htaccess możemy jednak pozbyć się tego problemu:</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?nasza-strona\.pl [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [L]
</pre>
<p>Warunek sprawdza, czy wywołanie pochodzi z nasze strony lub jest puste. W przeciwnym razie zablokuje dostęp do plików o rozszerzeniach jpg, jpeg, png, gif. Listę można rozszerzyć o inne, niekoniecznie graficzne, np. pdf, doc, xls, itd.</p>
<p>Zamiast blokować hotlinkowanie, możemy przekierować ruch na inny adres. W ten sposób postąpił kiedyś pewien sprzedawca internetowy, którego grafiki były hotlinkowane przez innego handlarza na Allegro. Zdjęcia, które pojawiły się zamiast tych przedstawiających wystawione przedmioty były dość obsceniczne, przez co ich właściciel dość mocno odegrał się na złodzieju transferu.</p>
<p>Przekierowanie na inny adres w wyniku hotlinkowania plików można osiągnąć przez modyfikację jednej z reguł w zaprezentowanym powyżej przykładzie.</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?nasza-strona\.pl [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://adres/obrazek.gif [L]
</pre>
<p>Należy pamiętać, że przy takim przekierowaniu następuje wyświetlenie obrazka, co zużywa nasz transfer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/przydatne-mozliwosci-htaccess.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wtyczki w Firefoxie dla webmastera</title>
		<link>http://blog.visionsoftware.pl/roznosci/wtyczki-w-firefoxie-dla-webmastera.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/wtyczki-w-firefoxie-dla-webmastera.html#comments</comments>
		<pubDate>Sun, 12 Dec 2010 22:08:57 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[wtyczki]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=41</guid>
		<description><![CDATA[Kolejny standardowy artykuł o przydatnych webmasterowi wtyczkach do Firefoxa. Postanowiłem opisać te, które sam wykorzystuję. Może na tej liście znajdziesz taką, której jeszcze nie znasz a może ci się przydać?Web Developer Prawdziwy kombajn, zawierający kilkadziesiąt różnych opcji. Obowiązkowa pozycja dla każdej osoby tworzącej strony i aplikacje WWW. Liczba opcji jest ogromna, niektóre z nich to: zarządzanie ciasteczkami, plikami CSS (np. pogląd zdefiniowanych styli dla klikniętego elementu strony), formularzami, obrazkami, wyświetlanie rozmiaru dokumentu, linijka mierząca elementy [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Kolejny standardowy artykuł o przydatnych webmasterowi wtyczkach do Firefoxa. Postanowiłem opisać te, które sam wykorzystuję. Może na tej liście znajdziesz taką, której jeszcze nie znasz a może ci się przydać?<span id="more-41"></span><a href="https://addons.mozilla.org/pl/firefox/addon/60/" target="_blank">Web Developer</a></p>
<p>Prawdziwy kombajn, zawierający kilkadziesiąt różnych opcji. Obowiązkowa pozycja dla każdej osoby tworzącej strony i aplikacje WWW. Liczba opcji jest ogromna, niektóre z nich to: zarządzanie ciasteczkami, plikami CSS (np. pogląd zdefiniowanych styli dla klikniętego elementu strony), formularzami, obrazkami, wyświetlanie rozmiaru dokumentu, linijka mierząca elementy na stronie, skalowanie strony do wybranej, walidacja itd.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/1843/" target="_blank">Firebug </a></p>
<p>Kolejny niezastąpiony dodatek. Dzięki niemu mamy możliwość sprawdzenia wywołań AJAX, analizować kod oraz monitorować CSS, HTML i JavaScript, sprawdzać szybkość ładowania strony (w rozbiciu na poszczególne elementy) i wiele innych.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/1146/" target="_blank">Screengrab</a></p>
<p>Prosta wtyczka, umożliwiająca zapisanie do jpg lub png obszaru strony www. Są trzy możliwości do wyboru: cała strona, aktualnie widoczna część lub zaznaczony przez nas obszar.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/321/" target="_blank">SerachStatus</a></p>
<p>Służy głównie do szybkiego sprawdzania wskaźników PageRank i Alexa. Oprócz tego posiada kilka innych opcji, jak na przykład mierzenie gęstości występowanie słów kluczowych, pokazywanie ilości linków zwrotnych oraz zaindeksowanych stron w poszczególnych wyszukiwarkach, wyświetlanie meta tagów, sitemapek, sprawdzanie danych w bazie whois itd.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/271/" target="_blank">ColorZilla</a></p>
<p>Określa kolor klikniętego na stronie pixela, zwraca go w kilku możliwych formatach. Umożliwia także przeglądanie pełnej palety kolorów.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/3899/" target="_blank">HackBar</a></p>
<p>Wtyczka pomagająca przeprowadzać testy bezpieczeństwa stron internetowych, wyszukiwać luki, w tym podatności na ataki typu SQL Injection oraz XSS.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/2077/" target="_blank">Regular Expressions Tester</a></p>
<p>Jak mówi sama nazwa, można w prosty sposób testować tworzone wyrażenia regularne.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/655/" target="_blank">View Source Chart</a></p>
<p>Wyświetla źródło strony w postaci graficznej, tzn. każdy element HTML/XHTML zostaje pokazany jako kolorowy prostokąt. Przydatne w przypadku, gdy chcemy rozeznać się w zagnieżdżeniach poszczególnych elementów kodu naszej strony.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/5817/" target="_blank">SQLite Manager </a></p>
<p>Cóż tu więcej pisać? Panel do zarządzania bazami SQLite. Zakładanie i modyfikowanie baz w bardzo lekkiej wtyczce, która wystarczy w zupełności do wykonywania podstawowych zadań.</p>
<p><a href="https://addons.mozilla.org/pl/firefox/addon/2464/" target="_blank">FoxyProxy</a></p>
<p>Ciekawe narzędzie, umożliwiające szybkie przełączanie się pomiędzy serwerami Proxy. Wystarczy utworzyć sobie ich listę, a następnie podczas przeglądania stron zmieniać je poprzez wybór z listy umieszczonej na pasku. Szybko, łatwo i przyjemnie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/wtyczki-w-firefoxie-dla-webmastera.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mój pierwszy post</title>
		<link>http://blog.visionsoftware.pl/roznosci/witaj-swiecie.html</link>
		<comments>http://blog.visionsoftware.pl/roznosci/witaj-swiecie.html#comments</comments>
		<pubDate>Sun, 12 Dec 2010 18:14:59 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[Różności]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=1</guid>
		<description><![CDATA[No i w końcu się udało napisać pierwszego posta. Do utworzenia tego bloga zbierałem się długo, ale mam nadzieję, że teraz pójdzie już z górki. Po co w ogóle zaczynam go prowadzić?Po pierwsze lubię robić notatki, do których mogę później wrócić. Czytając artykuł lub książkę zapisuję wiele rzeczy a potem, jak to z kartkami&#8230; gubią się gdzieś w stosie innych papierów. Tu będzie mam nadzieję wygodniej. Po drugie jeśli już coś ciekawego się znajdzie, można [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>No i w końcu się udało napisać pierwszego posta. Do utworzenia tego bloga zbierałem się długo, ale mam nadzieję, że teraz pójdzie już z górki. Po co w ogóle zaczynam go prowadzić?<span id="more-1"></span>Po pierwsze lubię robić notatki, do których mogę później wrócić. Czytając artykuł lub książkę zapisuję wiele rzeczy a potem, jak to z kartkami&#8230; gubią się gdzieś w stosie innych papierów. Tu będzie mam nadzieję wygodniej.</p>
<p>Po drugie jeśli już coś ciekawego się znajdzie, można się podzielić z innymi. Mam nadzieje, że treści zamieszczanych tu tekstów Wam się przydadzą.</p>
<p>Na blogu będę pisał o różnych rzeczach, którymi się zajmuję i interesuję: programowaniu, designie, bazach danych, pozycjonowaniu, marketingu i innych. Liczę na Wasze opinie, dzięki nim będą mógł rozwijać ten serwis w dobrym kierunku.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/roznosci/witaj-swiecie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
