<?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>TastyCode devblog &#187; Programowanie</title>
	<atom:link href="http://blog.tastycode.pl/category/programowanie/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tastycode.pl</link>
	<description>Just another devblog...</description>
	<lastBuildDate>Fri, 04 Jun 2010 15:52:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Własna strona błędu 404 w Kohanie</title>
		<link>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/</link>
		<comments>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:55:07 +0000</pubDate>
		<dc:creator>Informatic</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[KohanaPHP]]></category>
		<category><![CDATA[Komputery]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.tastycode.pl/?p=112</guid>
		<description><![CDATA[Ostatnio odkryłem prawdziwy "pałer" frameworków. Zacząłem od CodeIgnitera. Całkiem fajny, w większości miejsc daje wolną rękę programiście. Jednak nie wygląda na to, żeby miał być dalej tworzony. Spróbowałem Kohanę, jedną (to ona jest?  ) z jego forków.
Jako że dosłownie zakohałem się w Kohanie, będę co jakiś czas umieszczał tutaj jakieś porady.
Porada na dziś:
Własna strona [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio odkryłem prawdziwy "pałer" frameworków. Zacząłem od CodeIgnitera. Całkiem fajny, w większości miejsc daje wolną rękę programiście. Jednak nie wygląda na to, żeby miał być dalej tworzony. Spróbowałem Kohanę, jedną (to ona jest? <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) z jego forków.</p>
<p>Jako że dosłownie zakohałem się w Kohanie, będę co jakiś czas umieszczał tutaj jakieś porady.<br />
Porada na dziś:<br />
<b>Własna strona błędu 404 w Kohanie</b><br />
(docelowo pisane na Kohanę 2.3.4, ale na 2.4 też powinno działać)<br />
Wbrew pozorom nie jest to takie trudne! Kohana (tak jak CodeIgniter) ma zaimplementowany system tak zwanych Hooków/Eventów (zdarzeń). Mogę zmienić standardową funkcję obsługi błędu 404, i podmienić ja na moją własną.<br />
Na początku musimy się upewnić, czy mamy w naszej aplikacji włączone hooki. W tym celu otwieramy plik <b>application/config/config.php</b>, i prawdopodobnie <b>w linijce 75</b> będzie znajdować się poniższy kod:</p>
<pre class="brush: php;">$config['enable_hooks'] = FALSE;</pre>
<p>Zmieniamy FALSE na TRUE.<br />
Następnie tworzymy nowy plik <b>application/hooks/error_404.php</b>. Kohana automatycznie wykonuje wszystkie pliki z katalogu <b>application/hooks/</b>, więc nie musimy go jakoś specjalnie włączać <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
W tym pliku zadeklarujemy klasę przechwytywania błędu (error_404), oraz podmienimy standardową funkcję obsługi błędu 404, na naszą własną z klasy error_404. Nasza funkcja będzie uruchamiać inny, podany w stałej, kontroler.</p>
<pre class="brush: php;">&lt;?php
class error_404 {
	const error_controller = 'Error404'; // Nazwa kontrolera który chcemy wykonywać podczas błędu. (jeżeli mamy kontroler np. w pliku application/controllers/errors/Error404.php, wpisujemy tutaj errors/Error404)
	public static $page = '';

	public static function show_404() { // nasza funkcja przechwytująca błąd 404
		header(&quot;HTTP/1.0 404 Not Found&quot;); // wysyłamy nagłówek ze statusem Not Found.
		if(Router::$current_uri != self::error_controller) { // zabezpieczenie, przed zapętleniem się strony, gdy podany kontroler obsługi błędu nie zostanie znaleziony
			self::$page = Router::$current_uri; // zapisujemy adres brakującej strony, więc możemy w kontrolerze strony błędu wyświetlić jej adres
			Router::$current_uri = self::error_controller; // Przekierowujemy na nasz kontroler
			Router::setup(); // i ponownie inicjalizujemy klasę Router.
		} else {
			Kohana::show_404(self::$page); // gdy nasz kontroler obsługi błędu nie istnieje, wyświetlamy standardową tablicę z Kohany, z adresem strony wcześniej zapisanej do zmiennej $page.
		}
	}
}

Event::replace('system.404', array('Kohana', 'show_404'), array('error_404', 'show_404')); // Podmieniamy standardową funkcję obsługi eventu &quot;system.404&quot;, na naszą.
?&gt;</pre>
<p>Potem musimy zdefiniować nasz kontroler w pliku <b>application/controllers/Error404.php</b>. Nie będzie on się różnił specjalnie od innych, więc nie będę się tutaj specjalnie rozpisywał:</p>
<pre class="brush: php;">&lt;?php
class Error404_Controller extends Controller {
	public function index() {
		echo '&lt;html&gt;&lt;body&gt;&lt;b&gt;404 Not Found&lt;/b&gt;&lt;small&gt; - '.error_404::$page.'&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Powered by KohanaPHP&lt;/small&gt;&lt;/body&gt;&lt;/html&gt;';
	}
}
?&gt;</pre>
<p>Stay tuned, następne tutoriale już niedługo!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Using LED on N810 Tablets in Python</title>
		<link>http://blog.tastycode.pl/2009/11/21/using-led-on-n810-tablets-in-python/</link>
		<comments>http://blog.tastycode.pl/2009/11/21/using-led-on-n810-tablets-in-python/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 17:46:49 +0000</pubDate>
		<dc:creator>Informatic</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[LED]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[N810]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.tastycode.pl/?p=45</guid>
		<description><![CDATA[I think that in Poland we don't have much NIT developers, and... Here we go - first post in English 
I was looking for an API in Python for manipulating color (and brightness ofc  ) of builtin LED on my N810. I drilled through some sites, and i found that FlipClock (which is written [...]]]></description>
			<content:encoded><![CDATA[<p>I think that in Poland we don't have much NIT developers, and... Here we go - first post in English <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
I was looking for an API in Python for manipulating color (and brightness ofc <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) of builtin LED on my N810. I drilled through some sites, and i found that FlipClock (which is written in Python) uses LED in some cases. I downloaded it, and found that you can set color of LED with these two simple functions.<br />
Manipulating LEDs rely on writing to virtual files in /sys/ directory.</p>
<pre class="brush: python;">import time

# This function changes color of LED
def setLED(r,g,b):
 val = &quot;%X:%X:%X&quot; % (r, g, b)
 f = open('/sys/devices/platform/i2c_omap.2/i2c-0/0-0032/color', 'w')
 f.write(val)
 f.close()
# This functions sets LED mode (&quot;run&quot; - default mode. &quot;direct&quot; - in this mode you can change color of LED)
def setLEDMode(mode):
 f = open('/sys/devices/platform/i2c_omap.2/i2c-0/0-0032/', 'w')
 f.write(mode)
 f.close()

# using:
# 1. First we need to set mode to &quot;direct&quot;
setLEDMode('direct')
# 2. Now set color of LED
setLED(255, 255, 255) # no, it won't be really white, blue led is too strong, so it will be like lightblue =)

# Let it sleep for a while
time.sleep(5)

# 3. Set everything to 0, so next time we won't see ugly &quot;blink&quot; of last color.
setLED(0, 0, 0)
# 4. Return to &quot;default mode&quot; (run)
setLEDMode('run')
</pre>
<p>Let's do some fireworks on your N810! <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
I'm really sure, that it should work also on N800 and family (770 have led? <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>PS. I have just found out strange thing - when I close keyboard while LED is on it automagicaly turns off <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  I must try it <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
PS2. And also when i lock keypad... It's not a big deal, when you are just blinking LED, but when you must turn it on for a long time, you can set color and sleep for 0.5sec in loop instead of setting color and waiting Xsec. <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>Edit!</b><br />
Today I found out this post on some forum: http://forum.mobile-review.com/showpost.php?s=936a897dcf4ba22136a9fb1fc0904dd9&#038;p=2120483&#038;postcount=441<br />
So on N900 (Maemo 5) LED is controlled in similar way, expect thing, that path pattern is like this:<br />
<b>/sys/class/led/[some unique/unknown ID]/brightness</b><br />
I don't have N900, so i can't try it (and i don't know if my mother and GTranslate translated this post correctly <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )<br />
I think that it should work <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tastycode.pl/2009/11/21/using-led-on-n810-tablets-in-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Instalacja FlexSDK/mxmlc na Debianie/Ubuntu</title>
		<link>http://blog.tastycode.pl/2009/11/12/instalacja-flexsdkmxmlc-na-debianieubuntu/</link>
		<comments>http://blog.tastycode.pl/2009/11/12/instalacja-flexsdkmxmlc-na-debianieubuntu/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 09:02:39 +0000</pubDate>
		<dc:creator>Informatic</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.tastycode.pl/2009/11/12/instalacja-flexsdkmxmlc-na-debianieubuntu/</guid>
		<description><![CDATA[Po ściągnięciu FlexSDK na mój komputer, i uruchomieniu pliku mxmlc ujrzałem piękny "Segmentation Fault". Przypomnę że korzystam z Debiana (w przypadku Ubuntu będzie tak samo  )
mxmlc wymaga nowszej wersji Javy, niż tej którą mamy zainstalowaną. Wystarczyło doinstalowanie pakietu sun-java6-jdk komendą aptitude install sun-java6-jdk i wybranie w update-alternatives --config java opcji ze ścieżką /usr/lib/jvm/java-6-sun/jre/bin/java (w [...]]]></description>
			<content:encoded><![CDATA[<p>Po ściągnięciu FlexSDK na mój komputer, i uruchomieniu pliku mxmlc ujrzałem piękny "Segmentation Fault". Przypomnę że korzystam z Debiana (w przypadku Ubuntu będzie tak samo <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )<br />
mxmlc wymaga nowszej wersji Javy, niż tej którą mamy zainstalowaną. Wystarczyło doinstalowanie pakietu <b>sun-java6-jdk</b> komendą <b>aptitude install sun-java6-jdk</b> i wybranie w <b>update-alternatives --config java</b> opcji ze ścieżką <b>/usr/lib/jvm/java-6-sun/jre/bin/java</b> (w moim przypadku było to 3) aby mxmlc zaczął poprawnie działać.</p>
<p>Miłego Flex'owania! <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tastycode.pl/2009/11/12/instalacja-flexsdkmxmlc-na-debianieubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prace nad TastyCode</title>
		<link>http://blog.tastycode.pl/2009/11/06/prace-nad-tastycode/</link>
		<comments>http://blog.tastycode.pl/2009/11/06/prace-nad-tastycode/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 10:22:31 +0000</pubDate>
		<dc:creator>Informatic</dc:creator>
				<category><![CDATA[O TastyCode.pl]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Miniblog]]></category>
		<category><![CDATA[TastyCode]]></category>

		<guid isPermaLink="false">http://blog.tastycode.pl/2009/11/06/prace-nad-tastycode/</guid>
		<description><![CDATA[Właśnie rozpocząłem prace nad moim "flagowym" projektem (na który wykupiłem tę domenę  )
Pojawiła się informacja "Stay tuned" na stronie głównej, a niedługo (jak coś skodzę) zostaną otwarte beta-testy. Podstawowy "niby-framework" już napisałem. Będę korzystał z własnej klasy obsługi templatek (którą pewnie niedługo udostępnię  ) opartą bezpośrednio na plikach PHP (oddzielne pliki z kodem [...]]]></description>
			<content:encoded><![CDATA[<p>Właśnie rozpocząłem prace nad moim "flagowym" projektem (na który wykupiłem tę domenę <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )<br />
Pojawiła się informacja "Stay tuned" na stronie głównej, a niedługo (jak coś <i>skodzę</i>) zostaną otwarte beta-testy. Podstawowy "niby-framework" już napisałem. Będę korzystał z własnej klasy obsługi templatek (którą pewnie niedługo udostępnię <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) opartą bezpośrednio na plikach PHP (oddzielne pliki z kodem HTML i definicjami typu <?=$zmienna?>) - najprościej i najszybciej. Mod_rewrite oczywiście do tego.</p>
<p><b>TastyCode</b> ma być serwisem umożliwiającym użytkownikom wymienianie się ciekawymi kawałkami kodu (code-snippets?), jak i swego typu forum na którym każdy pomaga każdemu <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Tak więc powtórzę się - stay tuned! <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tastycode.pl/2009/11/06/prace-nad-tastycode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
