<?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>koras.pl - Orest Hrycyna portfolio &#38; blog &#187; projekty</title>
	<atom:link href="http://koras.pl/category/projekty/feed/" rel="self" type="application/rss+xml" />
	<link>http://koras.pl</link>
	<description></description>
	<lastBuildDate>Sat, 18 Feb 2012 22:17:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Visual Studio 2008 &#8211; Coding Style</title>
		<link>http://koras.pl/2010/11/03/visual-studio-2008-coding-style/</link>
		<comments>http://koras.pl/2010/11/03/visual-studio-2008-coding-style/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 11:26:49 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[websearch]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://koras.pl/?p=478</guid>
		<description><![CDATA[
Dzisiaj trochę bardziej techniczna notka. Programowanie w kilku narzędziach jednocześnie potrafi być czasem bardzo uciążliwe ze względu na różnice w standardach kodowania. W pracy korzystam z jednego IDE (ang. Integrated Development Environment), na uczelni z innego chociaż staram się jak najwięcej pisać w tym samym co w pracy. W domu natomiast przy pisaniu programu na [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://koras.pl/2010/11/03/visual-studio-…8-coding-style/" title="(9 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2010/11/code_3002.jpg" alt="Visual Studio 2008 - Coding Style" title="Visual Studio 2008 - Coding Style" width="590" height="281" class="centered size-full wp-image-479" /></a></p>
<p>Dzisiaj trochę bardziej techniczna notka. Programowanie w kilku narzędziach jednocześnie potrafi być czasem bardzo uciążliwe ze względu na różnice w <a href="http://koras.pl/blog/go.php?http://pl.wikipedia.org/wiki/Standardy_kodowania" title="(170 hits)">standardach kodowania</a>. W pracy korzystam z jednego <a href="http://koras.pl/blog/go.php?http://pl.wikipedia.org/wiki/Zintegrowane_środowisko_programistyczne" title="(9 hits)">IDE</a> (<em>ang. Integrated Development Environment</em>), na uczelni z innego chociaż staram się jak najwięcej pisać w tym samym co w pracy. W domu natomiast przy pisaniu programu na zaliczenie korzystam z trzeciego już IDE i w dodatku z kolejnego języka programowania.<br />
<span id="more-478"></span><br />
W domu korzystam z Microsoft Visual Studio 2008 i języka C#. Domyślny <a href="http://koras.pl/blog/go.php?http://en.wikipedia.org/wiki/Indent_style" title="(72 hits)">styl kodowania</a> (ang. coding style, indent style) przerażał mnie i powodował, że nie mogłem się odnaleźć w tym kodzie. Przyzwyczajony do zupełnie innego stylu pisania starałem się nadrabiać ręcznymi poprawkami, ale było to bardzo uciążliwe, w dodatku IDE samo z siebie robiło niektóre wcięcia i odstępy. Znalazłem jednak rozwiązanie.</p>
<h3>Tabulatory na spacje</h3>
<p>Visual Studio wszystkie tabulatory automatycznie zamienia na spację. Jest to zupełnie niepotrzebne. Możemy to wyłączyć korzystając z ustawień edytora. Włączamy ustawienia z menu: <em>Tool -> Options</em>, w lewym drzewie wybieramy: <em>Text Editor -> C# -> Tabs</em> i zaznaczamy opcję <strong>Keep Tabs</strong>. Gotowe.</p>
<h3>Wcięcia i odstępy</h3>
<p>Szukając wczoraj rozwiązania problemu, którego nie do końca potrafiłem nazwać natknąłem się na tę oto stronę <a href="http://koras.pl/blog/go.php?http://www.dalsoft.co.uk/blog/index.php/2010/06/04/visual-studio-2010-kr-coding-style-variant/" title="(76 hits)">Visual Studio 2010 – K&#038;R Coding Style Variant</a>. Okazuje się, że styl pisania kodu ma nawet swoją nazwę! I tak jak to jest opisane w artykule &#8211; w Visual Studio mamy styl <a href="http://koras.pl/blog/go.php?http://en.wikipedia.org/wiki/Indent_style#Allman_style_.28bsd_in_Emacs.29" title="(72 hits)">Allmana</a>, a chcielibyśmy mieć <a href="http://koras.pl/blog/go.php?http://en.wikipedia.org/wiki/Indent_style#K.26R_style" title="(72 hits)">K&#038;R</a>. </p>
<h4>Przykłady</h4>
<p><strong>K&#038;R</strong></p>
<pre class="brush: csharp">
		public class ClassName {
			public ClassName() {

			}

			public string MethodName() {
				if (variable1) {
					return "Method1";
				} else {
					return "Method2";
				}
			}
		}
</pre>
<p><strong>Allman</strong></p>
<pre class="brush: csharp">
		public class ClassName
		{
			public ClassName()
			{

			}

			public string MethodName()
			{
				if (variable1)
				{
					return "Method1";
				}
				else
				{
					return "Method2";
				}
			}
		}
</pre>
<p>Co więc robimy? Włączamy ustawienia z menu: <em>Tool -> Options</em>, w lewym drzewie wybieramy: <em>Text Editor -> C# -> Formatting -> New Lines</em> i odznaczamy wszystkie opcje dostępne w folderze <strong>New line options for braces</strong>. To wszystko. Teraz jeżeli chcemy przeformatować stary kod zaznaczamy go, wciskamy Ctrl + E, a następnie F.</p>
<p>Mam nadzieję, że komuś przydadzą się te informacje. Mnie uratowały one od oczopląsu ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/11/03/visual-studio-2008-coding-style/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JDoCelu &#8211; docelu.pl i Joomla!</title>
		<link>http://koras.pl/2010/04/20/jdocelu-docelu-pl-i-joomla/</link>
		<comments>http://koras.pl/2010/04/20/jdocelu-docelu-pl-i-joomla/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 22:58:57 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[joomla!]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[docelu.pl]]></category>
		<category><![CDATA[mapy]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://koras.pl/?p=346</guid>
		<description><![CDATA[Po wielu próbach udało mi się w końcu napisać wtyczkę do Joomli dzięki której można wstawić sobie mapę z docelu.pl korzystając z API &#8211; api.docelu.pl. W chwili obecnej jest to wersja inicjalna i posiada tylko podstawowe parametry, ale postaram się ją wkrótce rozwinąć nieco o dodatkowe możliwości szybkiej i łatwej konfiguracji poprzez panel administratora.
Główny problem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://koras.pl/2010/04/20/jdocelu-docelu-pl-i-joomla/" title="(111 hits)"><img style="padding: 5px;" title="JDoCelu - docelu.pl i Joomla!" src="http://koras.pl/blog/wp-content/uploads/2009/10/joomla_logo.png" alt="JDoCelu - docelu.pl i Joomla!" width="150" height="28" align="left" /></a>Po wielu próbach udało mi się w końcu napisać wtyczkę do Joomli dzięki której można wstawić sobie mapę z <a href="http://koras.pl/blog/go.php?http://docelu.pl" target="_blank" title="(138 hits)">docelu.pl</a> korzystając z API &#8211; <a href="http://koras.pl/blog/go.php?http://api.docelu.pl" target="_blank" title="(140 hits)">api.docelu.pl</a>. W chwili obecnej jest to wersja inicjalna i posiada tylko podstawowe parametry, ale postaram się ją wkrótce rozwinąć nieco o dodatkowe możliwości szybkiej i łatwej konfiguracji poprzez panel administratora.</p>
<p>Główny problem z wykorzystywaniem API docelu.pl polegał na tym, że Joomla! automatycznie wczytuje bibliotekę Mootools do obsługi JavaScripta i Ajaxa. Natomiast API korzysta z jQuery. Obie biblioteki &#8220;gryzły się&#8221; ze sobą. Rozwiązaniem było więc wyłączenie wspomnianych wcześniej Mootools&#8217;ów.</p>
<p><span id="more-346"></span></p>
<h2>Uwagi</h2>
<p><em>Moduł powoduje wyłączenie mootools.js oraz caption.js na stronach, na których jest włączony.</em></p>
<h2>Pobierz / Download</h2>
<p><a href="http://koras.pl/blog/go.php?http://koras.pl/blog/wp-content/uploads/2010/04/mod_jdocelu_1_0_1.zip" title="(49 hits)"><img class="alignnone size-full wp-image-265" title="Zapisz plik" src="http://koras.pl/blog/wp-content/uploads/2009/12/Save.png" alt="Zapisz plik" width="24" height="24" /> mod_jdocelu_1_0_1.zip</a></p>
<h2>Historia zmian / Changelog</h2>
<p>1.0.1<br />
- Poprawiona błędna nazwa katalogu</p>
<p>1.0.0<br />
- Wersja inicjalna.<br />
- Możliwość konfiguracji długości i szerokości geograficznej oraz zoomu<br />
- Możliwość wstawienia jednego punktu określonego strzałką<br />
- Możliwość dodania własnego kodu</p>
<h2>Plany na przyszłość</h2>
<p>- Możliwość definiowania map i wstawiania ich do treści artykułów (bot)<br />
- Rozszerzona konfiguracja modułu<br />
- Dodawanie map przez użykowników</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/04/20/jdocelu-docelu-pl-i-joomla/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Picasa API i tryby udostępniania galerii</title>
		<link>http://koras.pl/2010/03/03/picasa-api-i-tryby-udostepniania-galerii/</link>
		<comments>http://koras.pl/2010/03/03/picasa-api-i-tryby-udostepniania-galerii/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:20:50 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[websearch]]></category>
		<category><![CDATA[galeria]]></category>
		<category><![CDATA[google picasa]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://koras.pl/?p=312</guid>
		<description><![CDATA[Padł pomysł stworzenia galerii zdjęć. Jest sporo gotowych rozwiązań, ale jeżeli ma to być galeria niepowtarzalna i jedyna w swoim rodzaju, powinna być jednak zrobiona według indywidualnego uznania właściciela. Tak więc zabrałem się do pracy. Najpierw rozpoznanie przeciwnika &#8211; czyli przegląd tego co dają nam gotowe wtyczki galeriowe do jQuery &#8211; żeby było efektownie, efektywnie [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://koras.pl/blog/wp-content/uploads/2010/02/gdata-picasa-medium.png" alt="Google Picasa API" title="Google Picasa API" width="200" height="200" class="alignnone size-full wp-image-302" align="left" />Padł pomysł stworzenia galerii zdjęć. Jest sporo gotowych rozwiązań, ale jeżeli ma to być galeria niepowtarzalna i jedyna w swoim rodzaju, powinna być jednak zrobiona według indywidualnego uznania właściciela. Tak więc zabrałem się do pracy. Najpierw rozpoznanie przeciwnika &#8211; czyli przegląd tego co dają nam gotowe wtyczki galeriowe do jQuery &#8211; żeby było efektownie, efektywnie i przejrzyście. Kolejna sprawa dotyczyła serwera dla galerii. Jako, że sama galeria nie zajmuje zbyt dużo i nie potrzebuje jakoś specjalnie ani bazy danych, ani jakichś dodatkowych bibliotek postanowiłem, że umieszczę ją na swoim hostingu (na tym gdzie stoi ta strona). W tym momencie pojawił się kłopot &#8211; gdzie przetrzymywać zdjęcia, jak je tam uploadować i obrabiać. Pierwszy pomysł &#8211; <a href="http://koras.pl/blog/go.php?http://dropbox.com/" title="(116 hits)">dropbox.com/</a>. Niestety nie ma żadnego API, ani niczego z czego można by swobodnie skorzystać. Jeszcze kilka pokrętnych pomysłów, których już teraz do końca nie pamiętam i w końcu doszedłem do <a href="http://koras.pl/blog/go.php?http://picasaweb.google.com/" title="(102 hits)">Google Picasa</a>.<br />
<span id="more-312"></span><br />
<a href="http://koras.pl/blog/go.php?http://code.google.com/intl/pl/apis/picasaweb/overview.html" title="(160 hits)">Picasa Web Albums Data API</a> jest oparte o biblioteki Zend&#8217;a i bardzo intuicyjne. Praktycznie wszystkie informacje można wydobyć za pomocą jedynie kilku linijek kodu PHP lub Java. Problem pojawił się w momencie pozyskiwania dostępu do zdjęć. Jeżeli chcemy wyciągnąć informacje o zdjęciach z albumu publicznego, to nic nie stoi nam na przeszkodzie. Po co jednak wyświetlać zdjęcia publicznie dostępne w jednym serwisie również w drugim serwisie? Można więc zmienić sposób wyświetlania albumu na Picasa na ukryty, wtedy jednak musimy mieć do niego dostęp jako zalogowany użytkownik. Login i hasło zapisywane są w kodzie jako zmienne, hasło jest kodowane dopiero podczas wysyłania, ale co jeżeli nasz klient nie chce, aby dostęp do jego konta był komukolwiek znany? </p>
<p>Jest bardzo proste rozwiązanie &#8211; tworzymy specjalne konto tylko i wyłącznie na potrzeby naszej galerii. Dane dostępowe do konta umieszczamy w kodzie i już jesteśmy zalogowani. Kolejnym krokiem jest udostępnienie naszemu specjalnemu użytkownikowi galerii, które chcemy wyświetlać. Logujemy sie więc na nasze konto Picasa, wchodzimy do albumu ukrytego, Klikamy udostepnij i wpisujemy adres email naszego specjalnego użytkownika. Wszystko.<br />
Mamy normalny dostęp do galerii, której na Pisaca nie widać, a prezentujemy ją u siebie nie zapychając sobie serwera setką zdjęć. </p>
<p>Wkrótce zapraszam do odwiedzenia galerii przygotowanej właśnie w ten sposób, a także do pobrania skryptu umożliwiającego wyświetlanie zdjęć z Google Picasa w efektowny sposób.</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/03/03/picasa-api-i-tryby-udostepniania-galerii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kilka zmian na stronie</title>
		<link>http://koras.pl/2010/02/02/kilka-zmian-na-stronie/</link>
		<comments>http://koras.pl/2010/02/02/kilka-zmian-na-stronie/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 23:11:41 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[private]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[koras.pl]]></category>

		<guid isPermaLink="false">http://koras.pl/?p=294</guid>
		<description><![CDATA[ Ostatnio wprowadzone zostało kilka zmian i poprawek, ze względów wizualnych oraz użytkowych. Najważniejszą zmianą jest niewielka zmiana adresu. Do tej pory po wejściu na http://koras.pl użytkownik był przenoszony na http://koras.pl/blog/. Rozwiązanie to miało być chwilowe, lecz niestety po zmianie planów tak zostało i dopiero dzisiaj zostało poprawione na prawidłowe.
Dlatego też z góry chciałbym przeprosić [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://koras.pl/" title="(179 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2010/02/LOGOkolorPION.png" alt="koras.pl" title="koras.pl" width="261" height="163" class="alignnone size-full wp-image-295" align="left"/></a> Ostatnio wprowadzone zostało kilka zmian i poprawek, ze względów wizualnych oraz użytkowych. Najważniejszą zmianą jest niewielka zmiana adresu. Do tej pory po wejściu na <a href="http://koras.pl/blog/go.php?http://koras.pl" title="(195 hits)">http://koras.pl</a> użytkownik był przenoszony na http://koras.pl/blog/. Rozwiązanie to miało być chwilowe, lecz niestety po zmianie planów tak zostało i dopiero dzisiaj zostało poprawione na prawidłowe.</p>
<p>Dlatego też z góry chciałbym przeprosić wszystkich, którym przysporzy to problemów z dostępem do wpisów.</p>
<p>Uzupełniony treścią został dział &#8220;O mnie&#8221;, dodane zostały niewielkie motywy graficzne przy wpisach, poprawiony widok komentarzy, uporządkowany kod. Mam nadzieję, że zmiany wyjdą wszystkim na dobre.</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/02/02/kilka-zmian-na-stronie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zarządzanie treścią strony</title>
		<link>http://koras.pl/2010/01/30/zarzadzanie-trescia-strony/</link>
		<comments>http://koras.pl/2010/01/30/zarzadzanie-trescia-strony/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 00:33:33 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[joomla!]]></category>
		<category><![CDATA[praca]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[news editor]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=280</guid>
		<description><![CDATA[Wiele serwisów internetowych tworzonych jest przez zespół redakcyjny. Webdeveloper wytwarza stronę internetową, żeby spełniała wszystkie standardy, żeby była jak najlepsza pod względem SEO, żeby przyciągała użytkownika itp. Administrator dba o to, aby strona działała poprawnie 24 godziny na dobę, 7 dni w tygodniu. Po wszystkich możliwych poprawkach, sugestiach i ulepszeniach witryna ukazuje się dla publiczności. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://koras.pl/blog/2010/01/30/zarzadzanie-trescia-strony/" title="(182 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2010/01/business_by_newart_pic.jpg" alt="by Thomas Aigner" title="by Thomas Aigner" width="345" height="306" class="alignleft size-full wp-image-281" /></a>Wiele serwisów internetowych tworzonych jest przez zespół redakcyjny. Webdeveloper wytwarza stronę internetową, żeby spełniała wszystkie standardy, żeby była jak najlepsza pod względem SEO, żeby przyciągała użytkownika itp. Administrator dba o to, aby strona działała poprawnie 24 godziny na dobę, 7 dni w tygodniu. Po wszystkich możliwych poprawkach, sugestiach i ulepszeniach witryna ukazuje się dla publiczności. Sukces! A właściwie jego pierwsza część, bo kto tak naprawdę w dzisiejszych czasach zagląda na nieaktualizowane strony?</p>
<p>Kolejną ważną fazą jest więc utrzymanie serwisu i dbanie o to, aby był on uaktualniany w miarę regularnie, informacjami związanymi z treścią serwisu i ciekawymi dla odwiedzających. Co jednak zrobić w momencie gdy zespół redaktorów edytujących stronę niszczy ją od wewnątrz? Jednym z możliwych rozwiązań jest podzielenie redaktorów na autorów oraz moderatorów (Joomla! &#8211; wydawca). Przy takim podziale moderacją powinny zajmować się osoby znające podstawy HTML&#8217;a, budowę oraz politykę newsową serwisu oraz znające język w którym publikuje się informacje. Rozwiązanie można by rzec idealne. Nie do końca jednak. Co w momencie gdy nasz moderator nie ma potrzebnej wiedzy, albo niechętnie ją wykorzystuje? Co w momencie, gdy nagle żaden z moderatorów nie ma czasu, aby opublikować to co napisali autorzy? W tym momencie wkracza administrator serwisu z brzydkim słownictwem na ustach.</p>
<p><span id="more-280"></span></p>
<p>Każdy programista zdaje sobie sprawę, że porządek w kodzie idzie również w parze z porządkiem w plikach i katalogach &#8211; widzieliście kiedyś pulpit przeciętnego użytkownika? Koszmar. A teraz wyobraźcie sobie coś takiego w plikach na serwerze, gdzie specjalnie stworzona struktura katalogów tylko czeka aby z niej skorzystać. Niestety autorzy tego nie rozumieją. Prosty przykład:<br />
Artykuł na temat Czernobyla, kategoria Świat/Miejsca. Zdjęcie główne &#8211; cLDP234.jpg ląduje w katalogu root. 3 zdjęcia ilustrujące artykuł w zupełnie innym katalogu. Plik audio o nazwie c.mp3 ląduje akurat do właściwego katalogu, tylko dlatego, że nie ma innej możliwości, ale w treści newsa już jest podana nazwa czern.mp3 (dlaczego?).<br />
Po dwóch dniach takich newsów jest 5 &#8211; bałagan nie do okiełznania. Mamy trzy wyjścia &#8211; olać to i zmienić pracę ;), zacząć sprzątać na własną rękę, pójść i wymusić na autorach odpowiednie zmiany (co zwykle kończy się jeszcze większym bałaganem)</p>
<p>Rozumiem artystyczne dusze, wiele spraw na głowie, potrzeba szybkiej reakcji na bieżące informacje&#8230; Ale o ile łatwiejsze i milsze byłoby życie wszystkich związanych z danym projektem gdyby przynajmniej te 90% osób stosowało się do zasad nakreślonych na początku i dostępnych przez cały czas w dokumentacji. Mamy tu do czynienia z efektem domina &#8211; jedna osoba zrobi źle &#8211; reszta pójdzie jej śladem &#8211; administrator wyłysieje w wieku 25 lat ;)</p>
<p>Nie wiem, może to ja mam złe podejście. Ale dlaczego można wymagać ode mnie, a nie można od innych?</p>
<p>Zdjęcie: <a href="http://koras.pl/blog/go.php?http://www.sxc.hu/browse.phtml?f=profile&#038;l=NewArt_pic" title="(15 hits)">Thomas Aigner</a></p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/01/30/zarzadzanie-trescia-strony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obsługa czytnika kart w C#</title>
		<link>http://koras.pl/2010/01/07/obsluga-czytnika-kart-w-c/</link>
		<comments>http://koras.pl/2010/01/07/obsluga-czytnika-kart-w-c/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:56:47 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[studia]]></category>
		<category><![CDATA[smartcard]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=228</guid>
		<description><![CDATA[Poszukiwałem odpowiedniego rozwiązania problemu obsługi czytnika kart w C#, w przeciwieństwie niestety do Javy nie mamy do dyspozycji wbudowanej implementacji tego problemu. Na wielu angielskich stronach i blogach znalazłem jakieś kawałki kodu, nawet jakiś framework, ale niestety nic tak do końca nie chciało działać. W końcu z tego wszystkiego udało mi się uzyskać kawałek kodu, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://koras.pl/blog/2010/01/07/obsluga-czytnika-kart-w-c/" title="(147 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2010/01/smartcard.gif" alt="Obsługa czytnika kart w C#" title="Obsługa czytnika kart w C#" width="240" height="124" class="alignleft size-full wp-image-229" align="left" /></a>Poszukiwałem odpowiedniego rozwiązania problemu obsługi czytnika kart w C#, w przeciwieństwie niestety do Javy nie mamy do dyspozycji wbudowanej implementacji tego problemu. Na wielu angielskich stronach i blogach znalazłem jakieś kawałki kodu, nawet jakiś framework, ale niestety nic tak do końca nie chciało działać. W końcu z tego wszystkiego udało mi się uzyskać kawałek kodu, który zadziałał i może się komuś przyda. Zasada odczytu danych z karty jest dosyć prosta. Jedyne czego potrzebujemy to czytnik kart (oczywiście pod USB), kartę zbliżeniową bądź kontaktową oraz najważniejsze &#8211; specyfikację techniczną karty dzięki której poznamy komendy bitowe pozwalające na operacje na karcie. </p>
<p><span id="more-228"></span><br />
Pierwszym krokiem jest dodanie do projektu biblioteki GemCard: klikamy prawym przyciskiem na projekcie, <em>Add Reference&#8230;</em>, wybieramy plik dll z dysku.<br />
Następnie w klasie gdzie chcemy implementować bibliotekę dodajemy:</p>
<pre class="prettyprint lang-cs">
<span class="nocode">1:</span>        using GemCard;
</pre>
<p>Tworzymy obiekty potrzebne do obsługi czytnika i wydawania komend, dodajemy jeszcze stałe oznaczające odpowiedź zapytania. W naszym wypadku będą to stany prawidłowej odpowiedzi oraz &#8220;w trakcie&#8221;.</p>
<pre class="prettyprint lang-cs">
<span class="nocode">1:</span>        static APDUCommand apduSelectFileMF = new APDUCommand(0x00, 0xA4, 0x00, 0x0C, null, 0x02);
<span class="nocode">2:</span>        static APDUCommand apduReadRecord = new APDUCommand(0x00, 0xB0, 0xFF, 0xFF, null, 0xFF);
<span class="nocode">3:</span>        CardNative iCard = new CardNative();
<span class="nocode">4:</span>        APDUParam apduParam = new APDUParam();
<span class="nocode">5:</span>        APDUResponse apduResp;
<span class="nocode">6:</span>        const ushort SC_OK = 0x9000;
<span class="nocode">7:</span>        const byte SC_PENDING = 0x9F;
</pre>
<p>Kolejnym krokiem będzie napisanie kilku prostych metod:</p>
<pre class="prettyprint lang-cs">
<span class="nocode">1:</span>        /// <summary>
<span class="nocode">2:</span>        /// Pobiera liste podlaczonych czytnikow oraz laczy sie z pierwszym na listy
<span class="nocode">3:</span>        /// </summary>
<span class="nocode">4:</span>        public void initReader()
<span class="nocode">5:</span>        {
<span class="nocode">6:</span>            string[] readers = iCard.ListReaders();
<span class="nocode">7:</span>            iCard.Connect(readers[0], SHARE.Shared, PROTOCOL.T0orT1);
<span class="nocode">8:</span>        }
<span class="nocode">9:</span>
<span class="nocode">10:</span>        /// <summary>
<span class="nocode">11:</span>        /// Rozlacza czytnik kart
<span class="nocode">12:</span>        /// </summary>
<span class="nocode">13:</span>        public void disconnect()
<span class="nocode">14:</span>        {
<span class="nocode">15:</span>             iCard.Disconnect(DISCONNECT.Unpower);
<span class="nocode">16:</span>             iCard.StopCardEvents();
<span class="nocode">17:</span>        }
</pre>
<p>Pozostaje już tylko napisanie odpowiednich metod wykonujących np. operację wyboru pliku lub odpytujących kartę o dane:</p>
<pre class="prettyprint lang-cs">
<span class="nocode">1:</span>        public void selectFile()
<span class="nocode">2:</span>        {
<span class="nocode">3:</span>            apduParam.Data = new byte[] { 0x3F, 0x00 };
<span class="nocode">4:</span>            apduSelectFileMF.Update(apduParam);
<span class="nocode">5:</span>            apduResp = iCard.Transmit(apduSelectFileMF);
<span class="nocode">6:</span>            if (apduResp.Status != SC_OK &#038;&#038; apduResp.SW1 != SC_PENDING)
<span class="nocode">7:</span>                throw new Exception(apduResp.ToString());
<span class="nocode">8:</span>        }
<span class="nocode">9:</span>
<span class="nocode">10:</span>        public byte[] readRecord()
<span class="nocode">11:</span>        {
<span class="nocode">12:</span>            apduParam.Reset();
<span class="nocode">13:</span>            apduReadRecord.Update(apduParam);
<span class="nocode">14:</span>            apduResp = iCard.Transmit(apduReadRecord);
<span class="nocode">15:</span>            if (apduResp.Status != SC_OK)
<span class="nocode">16:</span>                throw new Exception(apduResp.ToString());
<span class="nocode">17:</span>
<span class="nocode">18:</span>            return apduResp.Data;
<span class="nocode">19:</span>        }
</pre>
<p>Gotowe! Wystarczy teraz tylko zabrać się za pisanie programów dających dostęp do komputera, systemów a może nawet pomieszczeń? Powodzenia.</p>
<p><a ><img src="http://koras.pl/blog/wp-content/uploads/2009/12/Save.png" alt="Zapisz plik" title="Zapisz plik" width="24" height="24" class="alignnone size-full wp-image-265" /> GemCard.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2010/01/07/obsluga-czytnika-kart-w-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Odgrzewane żółwie na święta</title>
		<link>http://koras.pl/2009/12/26/odgrzewane-zolwie-na-swieta/</link>
		<comments>http://koras.pl/2009/12/26/odgrzewane-zolwie-na-swieta/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 11:05:23 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[projekty]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[logo]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=181</guid>
		<description><![CDATA[Po kolejnym cichym okresie powracam do was z moim odgrzewanym na potrzeby UG projektem &#8211; Logosik. Jest to program umożliwiający powrót do korzeni nauki programowania &#8211; do języka AC Logo. Program napisany został dość dawno i teraz tylko odświeżony ze względów stylistycznych. Mam nadzieję,że komuś się przyda.
Paczka zawiera dokumentację wygenerowaną przez java-doc.
 logosik.zip
Program udostępniony na [...]]]></description>
			<content:encoded><![CDATA[<p>Po kolejnym cichym okresie powracam do was z moim odgrzewanym na potrzeby UG projektem &#8211; Logosik. Jest to program umożliwiający powrót do korzeni nauki programowania &#8211; do języka AC Logo. Program napisany został dość dawno i teraz tylko odświeżony ze względów stylistycznych. Mam nadzieję,że komuś się przyda.<br />
Paczka zawiera dokumentację wygenerowaną przez java-doc.</p>
<p><a href="http://koras.pl/blog/go.php?http://koras.pl/blog/wp-content/uploads/2009/12/logosik.zip" title="(114 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2009/12/Save.png" alt="Zapisz plik" title="Zapisz plik" width="24" height="24" class="alignnone size-full wp-image-265" /> logosik.zip</a></p>
<p>Program udostępniony na licencji: <br />
<a rel="license" href="http://koras.pl/blog/go.php?http://creativecommons.org/licenses/by-nc-sa/3.0/pl/" title="(138 hits)"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/pl/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/InteractiveResource" property="dc:title" rel="dc:type">Logosik</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://koras.pl/blog/go.php?http://koras.pl" property="cc:attributionName" rel="cc:attributionURL" title="(195 hits)">Orest Hrycyna</a> is licensed under a <a rel="license" href="http://koras.pl/blog/go.php?http://creativecommons.org/licenses/by-nc-sa/3.0/pl/" title="(138 hits)">Creative Commons Uznanie autorstwa-U&#380;ycie niekomercyjne-Na tych samych warunkach 3.0 Polska License</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2009/12/26/odgrzewane-zolwie-na-swieta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wreszcie jest! Nowe RadioSAR.pl</title>
		<link>http://koras.pl/2009/11/20/wreszcie-jest-nowe-radiosar-pl/</link>
		<comments>http://koras.pl/2009/11/20/wreszcie-jest-nowe-radiosar-pl/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 06:16:14 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[joomla!]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[desgin]]></category>
		<category><![CDATA[radiosar.pl]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=173</guid>
		<description><![CDATA[Po ponad dwóch miesiącach bardzo wzmożonej pracy, licznych problemach, wdrożeniu dodatkowych systemów wspomagających, w środę wieczorem w końcu pokazała się nowa wersja strony RadioSAR.pl. Nastąpiła całkowita zmiana systemu, począwszy od serwera a na CMS&#8217;ie skończywszy. Do tego doszła nowa grafika, nowe standardy prowadzenia strony i nowe funkcjonalności.
Pierwsze, co rzuca się w oczy to, to że [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koras.pl/blog/go.php?http://radiosar.pl" target="_blank" title="(342 hits)"><img src="http://koras.pl/blog/wp-content/uploads/2009/11/RadioSAR.pl-Studencka-Agencja-Radiowa_1258697163468.png" alt="RadioSAR.pl - Studencka Agencja Radiowa_1258697163468" title="RadioSAR.pl - Studencka Agencja Radiowa_1258697163468" width="165" height="225" class="alignleft size-full wp-image-175" align="left" /></a>Po ponad dwóch miesiącach bardzo wzmożonej pracy, licznych problemach, wdrożeniu dodatkowych systemów wspomagających, w środę wieczorem w końcu pokazała się nowa wersja strony <a href="http://koras.pl/blog/go.php?http://radiosar.pl" title="(342 hits)">RadioSAR.pl</a>. Nastąpiła całkowita zmiana systemu, począwszy od serwera a na CMS&#8217;ie skończywszy. Do tego doszła nowa grafika, nowe standardy prowadzenia strony i nowe funkcjonalności.<br />
Pierwsze, co rzuca się w oczy to, to że strona jest bardziej przejrzysta, troszkę mniej kolorowa, ale za to z większą ilością grafik. Ulepszono główną funkcjonalność strony, czyli newsy i artykuły pisane przez redaktorów.<br />
Z planowanych zadań, wkrótce mają pojawić się podcasty, może jakaś galeria, a w końcu możliwość komentowania i oceny artykułów.</p>
<p>Mam nadzieję na kilka pozytywnych komentarzy ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2009/11/20/wreszcie-jest-nowe-radiosar-pl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Po co wprowadzać systemy organizacyjne?</title>
		<link>http://koras.pl/2009/10/23/po-co-wprowadzac-systemy-organizacyjne/</link>
		<comments>http://koras.pl/2009/10/23/po-co-wprowadzac-systemy-organizacyjne/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:36:31 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[praca]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=168</guid>
		<description><![CDATA[Możnaby pokusić się o stwierdzenie, że systemy wspomagające organizację są tylko kolejnym stopniem biurokracji i wydłużają czas realizacji zadań. Z drugiej strony jednak gdy mamy do czynienia z grupą ponad 40 osób, podział pracy na 4 jednostki, krótko i długo okresowe zadania, to zrozumiałe jest wprowadzenie systemu, a nawet systemów do organizacji pracy.
Nawiązując do poprzedniego [...]]]></description>
			<content:encoded><![CDATA[<p>Możnaby pokusić się o stwierdzenie, że systemy wspomagające organizację są tylko kolejnym stopniem biurokracji i wydłużają czas realizacji zadań. Z drugiej strony jednak gdy mamy do czynienia z grupą ponad 40 osób, podział pracy na 4 jednostki, krótko i długo okresowe zadania, to zrozumiałe jest wprowadzenie systemu, a nawet systemów do organizacji pracy.</p>
<p>Nawiązując do poprzedniego wpisu, aby zapewnić szybką i łatwą strukturę możemy podzielić nasz system na 3 kategorie:</p>
<ol>
<li>Komunikacja</li>
<li>Dokumentacja</li>
<li>Podział pracy</li>
</ol>
<p>W momencie wdrożenia systemu powstaje bardzo duży problem, a mianowicie zmuszenie ludzi do korzystania z niego. Najprostszym rozwiązaniem jest zmodyfikowanie do tej pory istniejących metod zarządzania tak, aby korzystały z przygotowanego przez nas systemu i nie dopuszczanie innych metod dostępu. Przez początkowy okres na pewno napotkacie głosy sprzeciwu i niechęci, ale gdy system jest przygotowany właścwie i dobrze udokumentowany to czas przejścia od momentu wdrożenia do momentu pełnego wykorzystania funkcjonalności skraca się. </p>
<p>Konsekwentnie trzymając sie nowy procedur wykorzystujących zaawansowaną organizację pracy można w krótkim czasie przyspieszyć działania, które do tej pory zajmowały wiele cennego czasu. Dzieje sie to dlatego, że użytkownik sam przejmuje część pracy, która do tej pory wykonywaliśmy sami. Automatycznie zbierana dokumentacja i dokumenty w formie cyfrowej, łatwej do zarchiwizowania i przekazania następnym pokoleniom. Szybka platforma komunikacji pomiędzy poszczególnymi użytkownikami oraz całymi działami. To wszystko składa się na poprawę funkcjonowania organizacji i sprawia, że praca staje się przyjemniejsza :)</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2009/10/23/po-co-wprowadzac-systemy-organizacyjne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JKlocki, czyli pierwszy duży serwis na Joomla cz.1</title>
		<link>http://koras.pl/2009/10/16/jklocki-czyli-pierwszy-duzy-serwis-na-joomla-cz-1/</link>
		<comments>http://koras.pl/2009/10/16/jklocki-czyli-pierwszy-duzy-serwis-na-joomla-cz-1/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 16:15:37 +0000</pubDate>
		<dc:creator>Orest Hrycyna</dc:creator>
				<category><![CDATA[joomla!]]></category>
		<category><![CDATA[websearch]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://koras.pl/blog/?p=162</guid>
		<description><![CDATA[Początkowo budując, a dokładniej testując wszystko co się da na Joomla! nie mogłem odnaleźć się w panelu administracyjnym i strukturze plików. Szybko jednak powróciły wspomnienia z początków nauki PHP, gdzie rozkładałem na czynniki pierwsze takie twory jak PHP-Nuke. Później było już z górki, pozostało jeszcze dobrać odpowiednie komponenty, czyli tytułowe klocki.
Dodatków na Joomla! Extensions jest [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://koras.pl/blog/wp-content/uploads/2009/10/joomla_logo.png" alt="joomla_logo" title="joomla_logo" width="150" height="28" class="alignleft size-full wp-image-160"  align="left" />Początkowo budując, a dokładniej testując wszystko co się da na <a href="http://koras.pl/blog/go.php?http://www.joomla.org/" title="(148 hits)">Joomla!</a> nie mogłem odnaleźć się w panelu administracyjnym i strukturze plików. Szybko jednak powróciły wspomnienia z początków nauki PHP, gdzie rozkładałem na czynniki pierwsze takie twory jak <a href="http://koras.pl/blog/go.php?http://phpnuke.org/" title="(143 hits)">PHP-Nuke</a>. Później było już z górki, pozostało jeszcze dobrać odpowiednie komponenty, czyli tytułowe klocki.</p>
<p>Dodatków na <a href="http://koras.pl/blog/go.php?http://extensions.joomla.org/" title="(137 hits)">Joomla! Extensions</a> jest co nie miara. Podzielone na kategorie, w większości dobrze opisane i okomentowane przez użytkowników. Jednak jak znaleźć w tym gąszczu coś pożytecznego? Uprzejmie służę radą i pomocą&#8230;</p>
<p>Na początek komponenty ze stajni <a href="http://koras.pl/blog/go.php?http://www.gavick.com" title="(128 hits)">GavickPro</a>. Bardzo dobrze wykonane, ze znakomitą dokumentacją. Ze strony GavickPro, po uprzednim zarejestrowaniu się, możemy pobrać ostatnio bardzo popularne <a href="http://koras.pl/blog/go.php?http://tools.gavick.com/demo/photoslide-gk3" title="(167 hits)">PhotoSlider</a>, <a href="http://koras.pl/blog/go.php?http://tools.gavick.com/demo/tabsmanager-gk3" title="(279 hits)">TabManager</a> czy bardzo ciekawy moduł jakim jest <a href="http://koras.pl/blog/go.php?http://tools.gavick.com/demo/" title="(169 hits)">NewsShow</a>.</p>
<p>Godnym polecenia jest też template zaplecza, z możliwością rozszerzenia o specjalne pluginy oraz dodatki &#8211; <a href="http://koras.pl/blog/go.php?http://www.joomlapraise.com/" title="(149 hits)">AdminPraise Lite</a>. Można &#8220;przebudować&#8221; całkowicie wygląd zaplecza na bardziej funkcjonalny przy dużych stronach. Wymaga on jednak lekkiego grzebania w kodzie aby spolszczyć go całkowicie i dostosować do własnych wymagań.</p>
]]></content:encoded>
			<wfw:commentRss>http://koras.pl/2009/10/16/jklocki-czyli-pierwszy-duzy-serwis-na-joomla-cz-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

