<?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>Net i Ja &#187; Programowanie</title>
	<atom:link href="http://netija.pl/wpis/category/programowanie/feed" rel="self" type="application/rss+xml" />
	<link>http://netija.pl</link>
	<description>Blog pewnego studenta informatyki ;)</description>
	<lastBuildDate>Sun, 11 Mar 2012 13:10:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Podział ekranu w vim</title>
		<link>http://netija.pl/wpis/180</link>
		<comments>http://netija.pl/wpis/180#comments</comments>
		<pubDate>Fri, 03 Dec 2010 09:30:59 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[kodowanie]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=180</guid>
		<description><![CDATA[Czasem przydatną opcją jest podział ekranu pracy na dwie części. Pionowy podział uzyskamy komendą: lub Przechodzimy między oknami:]]></description>
			<content:encoded><![CDATA[<p>Czasem przydatną opcją jest podział ekranu pracy na dwie części.</p>
<p>Pionowy podział uzyskamy komendą:</p>
<pre class="brush: plain; title: ; notranslate">(tryb komend) :new tab nazwa pliku</pre>
<p>lub</p>
<pre class="brush: plain; title: ; notranslate">(tryb komend):split</pre>
<p>Przechodzimy między oknami:</p>
<pre class="brush: plain; title: ; notranslate">(tryb komend)Ctrl+W+strzałka w zależności do którego okna chcemy przejść</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/180/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kolejna porcja komend dla vim-a ;)</title>
		<link>http://netija.pl/wpis/178</link>
		<comments>http://netija.pl/wpis/178#comments</comments>
		<pubDate>Fri, 26 Nov 2010 12:57:38 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[kodowanie]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=178</guid>
		<description><![CDATA[Duplikowanie linii w której znajduje się kursor: Usuwanie linii w której znajduje się kursor: Wyświetlenie pomocy kontekstowej]]></description>
			<content:encoded><![CDATA[<p>Duplikowanie linii w której znajduje się kursor:</p>
<pre class="brush: plain; title: ; notranslate">(tryb komend) yyp</pre>
<p>Usuwanie linii w której znajduje się kursor:</p>
<pre class="brush: plain; title: ; notranslate">(tryb komend) yyd</pre>
<p>Wyświetlenie pomocy kontekstowej</p>
<pre class="brush: plain; title: ; notranslate">(tryb edycji) Ctrl+N</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/178/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL + PHP = problem z kodowaniem</title>
		<link>http://netija.pl/wpis/172</link>
		<comments>http://netija.pl/wpis/172#comments</comments>
		<pubDate>Tue, 02 Nov 2010 12:49:54 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kodowanie]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=172</guid>
		<description><![CDATA[Mam plik zakodowany w UTF8 i bazę danych w MySQL która ma ustawione kodowanie tabel na utf8_polish_ci. Z pomocą php chcę ją wypełnić. Niestety mimo wielu prób otrzymywałem zamiast polskich liter krzaki&#8230; Rozwiązaniem by po nawiązaniu połączenia zadeklarowanie używanego kodowania, w taki sposób:]]></description>
			<content:encoded><![CDATA[<p>Mam plik zakodowany w UTF8 i bazę danych w MySQL która ma ustawione kodowanie tabel na utf8_polish_ci. Z pomocą php chcę ją wypełnić. Niestety mimo wielu prób otrzymywałem zamiast polskich liter krzaki&#8230;</p>
<p>Rozwiązaniem by po nawiązaniu połączenia zadeklarowanie używanego kodowania, w taki sposób:</p>
<pre class="brush: php; title: ; notranslate">

$dbh-&gt;query('SET NAMES &quot;utf8&quot;');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/172/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>create table as select where rownum, czyli o tworzeniu kopi tabeli z ograniczeniami</title>
		<link>http://netija.pl/wpis/169</link>
		<comments>http://netija.pl/wpis/169#comments</comments>
		<pubDate>Thu, 21 Oct 2010 06:32:30 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[create table]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[rownum]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=169</guid>
		<description><![CDATA[Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych. Kod stworzenia kopi tabeli, gdzie n jest [...]]]></description>
			<content:encoded><![CDATA[<p>Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych.</p>
<p>Kod stworzenia kopi tabeli, gdzie <strong>n</strong> jest zadaną ilością wierszy kopiowanych:</p>
<pre class="brush: sql; title: ; notranslate">

create table tablica_kopia as
 select * from tablica_orginalna
 where rownum &lt;=n;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select random, czyli jak wyciagnać z tabeli losowe rekordy</title>
		<link>http://netija.pl/wpis/167</link>
		<comments>http://netija.pl/wpis/167#comments</comments>
		<pubDate>Sat, 16 Oct 2010 08:57:47 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[dbms_random]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=167</guid>
		<description><![CDATA[Miałem problem jak wyciągnąć kilka tysięcy losowych rekordów z dość sporej tablicy i zapragnąłem znaleźć rozwiązanie w jednym zapytaniu do bazy danych. Oczywiście dzięki bibliotekom udostępnianym przez Oracle takie rozwiązanie jest możliwe. Skorzystałem z pomocy pakietu dbms_random. A oto kod gotowego zapytania wyciągającego n losowych rekordów z zadanej tabeli:]]></description>
			<content:encoded><![CDATA[<p>Miałem problem jak wyciągnąć kilka tysięcy losowych rekordów z dość sporej tablicy i zapragnąłem znaleźć rozwiązanie w jednym zapytaniu do bazy danych. Oczywiście dzięki bibliotekom udostępnianym przez Oracle takie rozwiązanie jest możliwe. Skorzystałem z pomocy pakietu dbms_random.</p>
<p>A oto kod gotowego zapytania wyciągającego n losowych rekordów z zadanej tabeli:</p>
<pre class="brush: sql; title: ; notranslate">

select * from table_name where row_id in (
select row_id from(
select row_id, dbms_random.value  from table_name order by 2)
where rownum&lt;=n);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gdy konfiguracja apache nie pozwala na &#8222;php_flag magic_quotes_gpc Off&#8221;</title>
		<link>http://netija.pl/wpis/137</link>
		<comments>http://netija.pl/wpis/137#comments</comments>
		<pubDate>Wed, 19 May 2010 16:30:46 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[kod]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=137</guid>
		<description><![CDATA[Na niektórych hostingach bywa tak,  że z pewnych względów poniższy kod nie zadziała, a wskutek tego np ckeditor też poprawnie nie będzie interpretowała tworzonych linków. Rozwiązanie problemu okazało się banalne:]]></description>
			<content:encoded><![CDATA[<p>Na niektórych hostingach bywa tak,  że z pewnych względów poniższy kod nie zadziała, a wskutek tego np ckeditor też poprawnie nie będzie interpretowała tworzonych linków.</p>
<pre class="brush: plain; title: ; notranslate">

php_flag magic_quotes_gpc Off
</pre>
<p>Rozwiązanie problemu okazało się banalne:</p>
<pre class="brush: plain; title: ; notranslate">

SetEnv MAGIC_QUOTES 0
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/137/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8222;ORA-06553: PLS-382: expression is of wrong type&#8221; i tablica dual</title>
		<link>http://netija.pl/wpis/125</link>
		<comments>http://netija.pl/wpis/125#comments</comments>
		<pubDate>Wed, 05 May 2010 08:17:50 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[PL/SQL]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=125</guid>
		<description><![CDATA[Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego skorzystać.</p>
<pre class="brush: sql; title: ; notranslate">

create or replace function czy_spelnione_wymagania(
 pesel IN varchar2,
 temat IN varchar2)
 return boolean
 is

....
</pre>
<p>Funkcja się skompilowała poprawnie, więc cały szczęśliwy chciałem ją przetestować korzystając z zabawnej tablicy DUAL.</p>
<pre class="brush: sql; title: ; notranslate">

SELECT czy_spelnione_wymagania('8089123243','Oaza Nowego Zycia 1') FROM DUAL;
</pre>
<p>I tu mnie spotkało niemiłe zaskoczenie:</p>
<pre class="brush: plain; title: ; notranslate">

ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-382: expression is of wrong type
</pre>
<p>Zasięgnąłem informacji o błędzie i byłem dość  zaskoczony tym co było przyczyną. A mianowicie poczciwy SQL nie obsługuje udostępnianego przez PL/SQL typu BOOLEAN! Więc trzeba to obejść jakoś ładnie i poniżej przedstawiam moją propozycje rozwiązania tego problemu za pomocą bloku PL/SQL.</p>
<pre class="brush: sql; title: ; notranslate">

DECLARE
VAR_BOOL BOOLEAN;
BEGIN
VAR_BOOL :=czy_spelnione_wymagania();
IF( VAR_BOOL = TRUE ) THEN
DBMS_OUTPUT.PUT_LINE( ‘TRUE’ );
END IF;
END;
</pre>
<p>Tak więc nie jesteśmy zmuszeniu do modyfikacji formatu zwracanych danych przez naszą funkcje składowaną, ale oczywiście jak ktoś bardzo lubi to może sobie przyjąć, że będzie zwracał int, gdzie FALSE = 0 a TRUE = 1.</p>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dostęp do bazy danych w Bootstrap-erze&#8230; i można ;)</title>
		<link>http://netija.pl/wpis/46</link>
		<comments>http://netija.pl/wpis/46#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:15:38 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend_Bootstrap]]></category>
		<category><![CDATA[Zend_Db]]></category>
		<category><![CDATA[Zend_Tool]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=46</guid>
		<description><![CDATA[Pisząc dziś projekt z Bezpieczeństwa Aplikacji Internetowych zatrzymał mnie na chwilkę pewien problem&#8230; Jak skorzystać z bazy danych już na poziomie bootstrapera? W domyślnie wygenerowanym projekcie za pomocą narzędzia Zend_Tool, czyli wpisujemy w konsoli tak: Oprócz fajnej struktury katalogów otrzymujemy plik konfiguracyjny naszego projektu w prezencie. Znajduje się on w .\application\configs\application.ini i wygladajakoś tak: Mając [...]]]></description>
			<content:encoded><![CDATA[<p>Pisząc dziś projekt z Bezpieczeństwa Aplikacji Internetowych zatrzymał mnie na chwilkę pewien problem&#8230;<br />
Jak skorzystać z bazy danych już na poziomie bootstrapera?</p>
<p>W domyślnie wygenerowanym projekcie za pomocą narzędzia Zend_Tool, czyli wpisujemy w konsoli tak:</p>
<pre class="brush: bash; title: ; notranslate">zf create project nazwa_projektu sciezka_projektu</pre>
<p>Oprócz fajnej struktury katalogów otrzymujemy plik konfiguracyjny naszego projektu w prezencie. Znajduje się on w .\application\configs\application.ini i wygladajakoś tak:</p>
<pre>
<pre class="brush: plain; title: ; notranslate">
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH &quot;/../library&quot;
bootstrap.path = APPLICATION_PATH &quot;/Bootstrap.php&quot;
bootstrap.class = &quot;Bootstrap&quot;
resources.frontController.controllerDirectory = APPLICATION_PATH &quot;/controllers&quot;

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
</pre>
<p>Mając taki ładny czysty projekt, każdy pewnie chce go wyposażyć w dostęp do bazy danych. I tu czeka nas miła, bo ustawienie adaptera do naszej bazy jest banalnie prosta i polega tylko na dodaniu małej wstawki w plik konfiguracyjny widoczny powyżej.</p>
<pre class="brush: plain; title: ; notranslate">
...
resources.frontController.controllerDirectory = APPLICATION_PATH &quot;/controllers&quot;
resources.db.adapter = PDO_MYSQL
resources.db.params.host = adres_bazy
resources.db.params.username = nazwa_konta
resources.db.params.password = haslo_dostepu
resources.db.params.dbname = nazwa_tablicy_w_bazie
[staging : production]
...
</pre>
<p>Powyższa czynność gwarantuje nam, bezproblemowy dostęp do tak skonfigurowanej bazy przy pomocy wszystkich klas z rodziny Zend_Db, w całym projekcie za wyjątkiem bootstrapera (.\application\Bootstrap.php). I tu właśnie się okazało, że w niektórych przypadkach i tam ten dostęp by był przydatny. Aby go uzyskać wystarczy przed naszym kodem korzystającym z dostępu do bazy ustawić domyślny adapter bazy danych, a raczej powiedzieć Zendowi gdzie leży jego konfiguracja. Pomoże nam w tym poniższy kawałek kodu:</p>
<pre class="brush: php; title: ; notranslate">
...
$config = new Zend_Config_Ini('../application/configs/application.ini', 'production');
$db = Zend_Db::factory($config-&gt;resources-&gt;db);
Zend_Db_Table::setDefaultAdapter($db);
...
</pre>
<p>I można już odpytywać bazę danych i tu <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prefixy nazw klas w Zend Framework</title>
		<link>http://netija.pl/wpis/36</link>
		<comments>http://netija.pl/wpis/36#comments</comments>
		<pubDate>Mon, 11 Jan 2010 00:18:59 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[tabelki]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=36</guid>
		<description><![CDATA[Zend jako dość porządny framework PHPowy wypracował sobie bardzo ciekawy sposób ładowanie klas, który wywodził się z banalnego pomysłu na autoloadera. Mianowicie nazwa klasy zawierała w sobie częściową ścieżkę do pliku zawierającą kod naszego obiektu. Kolejne nazwy folderów i na końcu również samego pliku z klasą były odseparowane od siebie podkreślikiem &#8222;_&#8221; (chyba tak to [...]]]></description>
			<content:encoded><![CDATA[<p>Zend jako dość porządny framework PHPowy wypracował sobie bardzo ciekawy sposób ładowanie klas, który wywodził się z banalnego pomysłu na autoloadera. Mianowicie nazwa klasy zawierała w sobie częściową ścieżkę do pliku zawierającą kod naszego obiektu. Kolejne nazwy folderów i na końcu również samego pliku z klasą były odseparowane od siebie podkreślikiem &#8222;_&#8221; (chyba tak to się nazywa <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), tak więc przykładowa nazwa klasy wyglądała tak:</p>
<p>Core_Db_Connector co przenosiło się bezpośrednio na lokację /Core/Db/Connector.php.</p>
<p>Pomysł stary i dość powszechnie stosowany choć przeciwników też ma. Programiści Zenda jednak zaadoptowali ten pomysł, lecz gdy zauważyli, że co programista to inna wizja rozłożenia standardowych elementów systemu po katalogach, to pomogli nam to również uporządkować. Dlatego właśnie powstały prefixy dla najważniejszych i często stosowanych elementów systemu.</p>
<p>Poniżej przedstawiam taką podręczną liste, która każdemu początkującemu programiście Zend Frameworka się przyda <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<table style="border: 1px solid #686868;">
<tbody>
<tr>
<td><strong>Katalog</strong></td>
<td><strong>Prefix</strong></td>
<td><strong>Przykład zastosowania</strong></td>
</tr>
<tr>
<td>api</td>
<td>Api_</td>
<td>Api_Resetuj</td>
</tr>
<tr>
<td>forms</td>
<td>Form_</td>
<td>Form_Dodaj</td>
</tr>
<tr>
<td>models</td>
<td>Model_</td>
<td>Model_Wpisy</td>
</tr>
<tr>
<td>models/DbTable</td>
<td>Model_DbTable_</td>
<td>Model_DbTable_Imiona</td>
</tr>
<tr>
<td>plugins</td>
<td>Plugin_</td>
<td>Plugin_Kolorowanie</td>
</tr>
</tbody>
</table>
<p>Ostatnimi czasy dłubie trochę przy pomocy tego rozwiązania, więc sądzę, że będzie tu więcej artykułów o Zendzie <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/36/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

