<?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>cojack blog</title>
	<atom:link href="http://www.cojack.pl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cojack.pl</link>
	<description>Programowanie oraz Open Source powodem do życia</description>
	<lastBuildDate>Sat, 26 Nov 2011 18:43:28 +0000</lastBuildDate>
	<language>PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Rejestracja achievementu na facebook</title>
		<link>http://www.cojack.pl/rejestracja-achievementu-na-facebook</link>
		<comments>http://www.cojack.pl/rejestracja-achievementu-na-facebook#comments</comments>
		<pubDate>Sat, 26 Nov 2011 18:39:13 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[achievement]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook api]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=570</guid>
		<description><![CDATA[Facebug i jego problemy natury betowej graph api z rejestracją acziwmentu.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gasthausauwirt.pl/themes/gast/images/facebook.jpg" alt="Facebook" /> Ostatnio zacząłem pracę nad API Facebooka i moim zadaniem było rozpracowanie tego api, takie tam. Ale doszło w reszcie do acziwmentów na facebugu. Jeden wpis w google how to, i wio ogień, jedziemy. Poszło łatwo, dokumentacja fajna, przejrzysta, wszystko ładnie opisane: <a href="https://developers.facebook.com/docs/achievements/" title="Achievements" target="_blank">link</a> no ale gdyby wszystko poszło bez problemu nie byłoby tego wpisu&#8230;</p>
<h3>Facebug</h3>
<p>Nie bez kozery w żargonie programistów ta nazwa nabiera coraz silniejszego znaczenia. Kto pracuje z API tego serwisu społecznościowego ten to rozumie. Facebook jest teraz w fazie wprowadzania nowego API o nazwie kodowej Graph (wow how f***g awesome it&#8217;s?!). Wracając do meritum sprawy, po wywołaniu rejestracyjnego linka z acziwmentem ni stąd ni zowąd dostawałem błąd: &#8222;(#3502) Object at achievement URL is not of type game.achievement&#8221;, o którym już pisałem wcześniej na forum php: <a href="http://forum.php.pl/Facebook_rejestracja_achievmentu_t188119.html" target="_blank">link</a>, niestety nikt chyba wcześniej nie miał problemu z tym (albo miał i się nie podzielił, who care?). Sytuacja doprowadzała mnie do frustracji, gdyż po użyciu debuggera: <a href="http://developers.facebook.com/tools/debug" target="_blank">link</a> nie zwracał mi żadnego błędu związanego z opengraph, a błąd mówił o czymś innym. Bądź tu mądry i pisz wiersze&#8230;</p>
<h3>Rozwiązanie problemu</h3>
<p>Otóż przypadkiem(?) parę razy udało mnie się zarejestrować te acziwmenty, zachodziłem w głowę jak ja to zrobiłem. Maluśka retrospekcja i olśniło mnie co takiego zrobiłem. Otóż proces jaki należy wykonać przed przystąpieniem do zarejestrowania acziwmentu jest taki:</p>
<p>Wchodzi na stronę debbugera: <a href="http://developers.facebook.com/tools/debug" target="_blank">link</a><br />
Wklepujemy link do naszego acziwmentu, klikamy debug (wow!), teraz na samym dole po poprawnej analizie naszego pliku powinna się znajdować sekcja: &#8222;Adresy URL&#8221; (tia mam po polskiemu) i jest sobie jakiś pierwszy link:<br />
<code>Graph API:	http://graph.facebook.com/blablabla</code><br />
klikamy na ten link, otworzy nam się stronka z wyplutym jsonem, i dawaj, po tym zabiegu możemy już wykonać poprawnie proces rejestracji acziwmentu bez żadnego problemu!</p>
<h3>Słów kilka na zakończenie</h3>
<p>3 dni się z tym ścierwem męczyłem&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/rejestracja-achievementu-na-facebook/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Widziałem Naziola!</title>
		<link>http://www.cojack.pl/widzialem-naziola</link>
		<comments>http://www.cojack.pl/widzialem-naziola#comments</comments>
		<pubDate>Tue, 15 Nov 2011 20:57:34 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=565</guid>
		<description><![CDATA[Każdy Polak powinien obejrzeć ten film!]]></description>
			<content:encoded><![CDATA[<p>Każdy Polak powinien obejrzeć ten film!</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/4iSwjKupCO0" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/widzialem-naziola/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KDevelop wykonywanie skryptów PHP</title>
		<link>http://www.cojack.pl/kdevelop-wykonywanie-skryptow-php</link>
		<comments>http://www.cojack.pl/kdevelop-wykonywanie-skryptow-php#comments</comments>
		<pubDate>Wed, 28 Sep 2011 17:36:51 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kdevelop]]></category>
		<category><![CDATA[skrypty php]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=540</guid>
		<description><![CDATA[
Aby wykonywać skrypt z KDevelop bezpośrednio należy wejść w menu do Run -> Configure Launchues
Następnie po lewej stronie mamy listę swoich projektów, wybieramy projekt który nas interesuje klikamy na zielony plusik pojawia się pod element naszego projektu: &#8222;New Native Application Configuration&#8221; albo coś podobnego, po wybraniu tego elementu (nie klikamy ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="KDevelop" src="http://cojack.os-cms.pl/wp-content/kdevelop.png" alt="" height="100" width="100"><br />
Aby wykonywać skrypt z KDevelop bezpośrednio należy wejść w menu do <strong>Run -> Configure Launchues</strong></p>
<p>Następnie po lewej stronie mamy listę swoich projektów, wybieramy projekt który nas interesuje klikamy na zielony plusik pojawia się pod element naszego projektu: &#8222;New Native Application Configuration&#8221; albo coś podobnego, po wybraniu tego elementu (nie klikamy w debug) po prawej stronie powinno pojawić się okno z wyborem paru elementów, w <strong>Executable</strong> wpisujemy <strong>php</strong> (chyba że chcesz podać bezwzględną ścieżkę do pliku wykonywalnego php. Poniżej mamy <strong>Behaviour</strong> w <strong>Arguments</strong> wpisujemy argumenty które chcemy podać do php czyli nazwa pliku php który ma się wykonać np: <strong>index.php</strong>. Jeszcze niżej jest <strong>Working Directory</strong>, tutaj wybieramy położenie naszego projektu w którym znajduje się powyżej wybrany plik jako argument. Jeszcze mamy environment, możemy zdefiniować stałe argumenty jakie chcemy przesyłać do php (ja tego nie  używam)</p>
<p>Zostaje wcisnąć <strong>Apply -> Ok</strong>, po zamknięciu okna, należy się upewnić jaki profil uruchamiania jest aktywny, by to zrobić przechodzimy w Menu do <strong>Run -> Current Launch Configuration</strong>, tam powinniśmy listę dostępnych konfiguracji, dobrym sposobem jest nazywanie ich (zmiana tego &#8222;New Native Application Configuration&#8221; w poprzednim oknie konfiguracji) jeżeli mamy taką potrzebę, lub też różne konfiguracje do testowania.</p>
<p>Skrót klawiaturowy do uruchomienia to <strong>Shit + F9</strong> lub też po prostu kliknąć <strong>Execute</strong> w oknie KDevelop.</p>
<p>Jak zrobić by KDevelop działał z Debug przy pomocy xdebug, jeszcze nie wiem, ale dev od kdevelop pracują nad tym <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/kdevelop-wykonywanie-skryptow-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KDE 4.7 Ikony</title>
		<link>http://www.cojack.pl/kde-4-7-ikony</link>
		<comments>http://www.cojack.pl/kde-4-7-ikony#comments</comments>
		<pubDate>Sat, 03 Sep 2011 08:36:03 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=556</guid>
		<description><![CDATA[Dobra, nie wiem kto wpadł na tak genialny pomysł jak ikony w kde w stylu gtk, ale mało się nie porzygałem przy śniadaniu jak włączyłem komputer po wieczornym upgrade.
Nie będę wylewał swojego żalu ale to była mocna przesada&#8230;
Na szczęście niejaki &#8222;csslayer&#8221; zrobił paczkę starych ikon i możemy spokojnie z powrotem ...]]></description>
			<content:encoded><![CDATA[<p>Dobra, nie wiem kto wpadł na tak genialny pomysł jak ikony w kde w stylu gtk, ale mało się nie porzygałem przy śniadaniu jak włączyłem komputer po wieczornym upgrade.</p>
<p>Nie będę wylewał swojego żalu ale to była mocna przesada&#8230;</p>
<p>Na szczęście niejaki &#8222;csslayer&#8221; zrobił paczkę starych ikon i możemy spokojnie z powrotem patrzeć bez odruchu wymiotnego na ikony w dolphinie.</p>
<p>Całość możemy zainstalować z Ustawienia Systemowe -> Wygląd programów -> Ikony  -> Pobierz nowy motyw</p>
<p>wpisujemy Oxygen Old, instalujemy, zastosuj i chwalmy git&#8217;a bo jego repozytoria nie znają granic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/kde-4-7-ikony/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Akonadi &#8211; obciążający sytem proces</title>
		<link>http://www.cojack.pl/akonadi-obciazajacy-sytem-proces</link>
		<comments>http://www.cojack.pl/akonadi-obciazajacy-sytem-proces#comments</comments>
		<pubDate>Wed, 08 Jun 2011 21:45:30 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[akonadi]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=537</guid>
		<description><![CDATA[Otóż od pewnego czasu akonadi i nepomuk są integralną cześcią KDE, tworząc pakiet KDE PIM, z którego korzysta chociażby Kmail, a bez poczty (w pracy) jak bez ręki. Ni stąd ni zowąd nagle po uruchomieniu kde procesor sięga swojego szczytu i rzeźbi 100% bez przerwy, patrzymy co tam w trawie ...]]></description>
			<content:encoded><![CDATA[<p>Otóż od pewnego czasu akonadi i nepomuk są integralną cześcią KDE, tworząc pakiet KDE PIM, z którego korzysta chociażby Kmail, a bez poczty (w pracy) jak bez ręki. Ni stąd ni zowąd nagle po uruchomieniu kde procesor sięga swojego szczytu i rzeźbi 100% bez przerwy, patrzymy co tam w trawie piszczy a tam 4 procesy akonadi* BUM! Krew człowieka zalewa, czemu to cholerstwo się wyburacza? Ponoć stara ver KDE PIM (aktualnie w buntu 4.4), w repo nie ma nowszej&#8230; I co zrobić? Jest na to lekarstwo, zatrzymujemy proces akonadi, czyli</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-aux</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> akonadi</pre></div></div>

<p>i lecimy killem -9 wszystkie PID&#8217;y albo</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ akonadictl stop</pre></div></div>

<p>Następnie (przenosimy) kasujemy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> ~<span style="color: #000000; font-weight: bold;">/</span>.config<span style="color: #000000; font-weight: bold;">/</span>akonadi</pre></div></div>

<p>I odpalamy ponownie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ akonadictl start</pre></div></div>

<p>Po problemie, skąd sie to bierze? Nie wiem. Dobrze że jest na to lekarstwo&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/akonadi-obciazajacy-sytem-proces/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireFox 4 wypuszczony na polowanie w sieci!</title>
		<link>http://www.cojack.pl/firefox-4-wypuszczony-na-polowanie-w-sieci</link>
		<comments>http://www.cojack.pl/firefox-4-wypuszczony-na-polowanie-w-sieci#comments</comments>
		<pubDate>Wed, 23 Mar 2011 13:29:29 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[Przeglądarki]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=534</guid>
		<description><![CDATA[Jeeeee! Wydano firefuksa 4, zajebiście wygląda, a jeszcze lepiej działa! Pod buntu instalacja:

$ sudo add-apt-repository ppa:mozillateam/firefox-stable &#38;&#38; sudo apt-get update &#38;&#38; sudo apt-get install firefox

Świętujmy i radujmy się z tej okazji! Ogromne podziękowania dla Mozilla Team!
]]></description>
			<content:encoded><![CDATA[<p>Jeeeee! Wydano firefuksa 4, zajebiście wygląda, a jeszcze lepiej działa! Pod buntu instalacja:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:mozillateam<span style="color: #000000; font-weight: bold;">/</span>firefox-stable <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> firefox</pre></div></div>

<p>Świętujmy i radujmy się z tej okazji! Ogromne podziękowania dla Mozilla Team!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/firefox-4-wypuszczony-na-polowanie-w-sieci/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BDT &#8211; skrypt instalacyjny</title>
		<link>http://www.cojack.pl/bdt-skrypt-instalacyjny</link>
		<comments>http://www.cojack.pl/bdt-skrypt-instalacyjny#comments</comments>
		<pubDate>Sat, 19 Mar 2011 19:30:47 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[BDT]]></category>
		<category><![CDATA[bdt]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=527</guid>
		<description><![CDATA[Gdyby ktoś, powtarzam GDYBY, korzystał jakimś cudem z mojego FW, w co wątpię   to napisałem sobie skrypt instalacyjny, który na podstawie plików index w katalogach data/sql/create, data/sql/delete, data/sql/insert/init, data/sql/insert/demo wykonuje odpowiednie operacje, pliki index to zwykłe pliki tekstowe, w których znajdują się względne ścieżki do plików *.sql z ...]]></description>
			<content:encoded><![CDATA[<p>Gdyby ktoś, powtarzam <strong>GDYBY</strong>, korzystał jakimś cudem z mojego FW, w co wątpię <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  to napisałem sobie skrypt instalacyjny, który na podstawie plików index w katalogach data/sql/create, data/sql/delete, data/sql/insert/init, data/sql/insert/demo wykonuje odpowiednie operacje, pliki index to zwykłe pliki tekstowe, w których znajdują się względne ścieżki do plików *.sql z treścią danych do wrzucenia do bazy danych. Względność ścieżek zależy od kontekstu, przykład pliku index w katalogu data/sql/create:</p>

<div class="wp_syntax"><div class="code"><pre class="plain" style="font-family:monospace;">#
# Dobra sprawa jest taka, że sami musimy zadbać o kolejność instalacji elementów xD
# 
user/table.sql
session/table.sql
module/table.sql
#
# Ok, mamy utworzone tabele to możemy teraz zrobić resztę, widoki i procedury
# Czasami procedury korzystają z widoków, czasami widoki z procedur, ale drugi przypadek jest częstszy
# także jedziemy widokami
#
user/view.sql
session/view.sql
module/view.sql
#
# I teraz z czystym sumieniem dorzucamy procedury
#
user/procedure.sql
session/procedure.sql
module/procedure.sql
#
# Kwestia constrainow, czasami jest taka potrzeba że nie mamy możliwości założyć constraina
# na tabele której jeszcze nie ma więc czasami trzeba dorobić kolejny plik w którym to dorzucimy ;)
# 
# np:
# 
# user/constraint.sql
#
# Jeżeli jesteśmy jacyś strasznie nerdowi to możemy sobie dorzucić komentarze
# Z tego co pamiętam to nie wiem czemu ale transakcje nie działają przy dodawaniu komentarzy oO
# 
# np:
# 
# user/comment.sql
# itd...
#</pre></div></div>

<p>A w nim dodatkowo parę innych informacji <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Instalatron kufa!</span>
<span style="color: #007800;">my_dir</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(pwd)</span>/data/sql&quot;</span>;
<span style="color: #007800;">user</span>=<span style="color: #ff0000;">''</span>;
<span style="color: #007800;">pass</span>=<span style="color: #ff0000;">''</span>;
<span style="color: #007800;">database</span>=<span style="color: #ff0000;">''</span>;
<span style="color: #007800;">demo</span>=<span style="color: #000000;">0</span>;
<span style="color: #007800;">backup</span>=<span style="color: #000000;">0</span>;
&nbsp;
usage<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
Użycie $0 [Opcje]
&nbsp;
Skrypt ten, wywołuje inne pliki tekstowe z bezpośrednim wpisem do bazy, operacja &quot;nieodwracalna&quot;.
&nbsp;
Wymagane ścieżki w katalogu:
&nbsp;
$(pwd)/
&nbsp;
to:
$(echo -e &quot;\t&quot;) ./data/sql/delete/index
$(echo -e &quot;\t&quot;) ./data/sql/create/index
$(echo -e &quot;\t&quot;) ./data/sql/insert/demo/index
$(echo -e &quot;\t&quot;) ./data/sql/insert/init/index
&nbsp;
Należy zachować kolejność utwaiania dropowania schematów odrwotną niż przy tworzeniu gdyż zależności pomiędzy tabelami nam nie pozwolą inaczej wykonać operacji.
&nbsp;
Pliki index, są to zwykłe pliki tekstowe, bez żadnego rozserzenia, przykład pliku ./data/sql/create/index:
&nbsp;
user/table.sql
session/table.sql
module/table.sql
&nbsp;
Gdzie odniesie jest do katalogu: ./data/sql/create/
&nbsp;
Opcje:
   -b      Backup, tworzy pierw backup
   -d      Nazwa bazy danych
   -u      Nazwa użytkownika
   -p      Hasło użytkownika
   -e      (Demo) Przykładowe dane
   -h      Wyświetla pomoc
EOF</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
setup_sql<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
   <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PGUSER</span>=<span style="color: #007800;">$1</span>
   <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PGPASSWORD</span>=<span style="color: #007800;">$2</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
backup_sql<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
   <span style="color: #007800;">backup_file</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(pwd)</span>/data/backup/<span style="color: #007800;">$(date +'%F|%T')</span>.tar&quot;</span>
   pg_dump <span style="color: #660033;">-F</span> <span style="color: #ff0000;">'tar'</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$backup_file</span>&quot;</span> <span style="color: #007800;">$1</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
run_sql<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;$1/index&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
   <span style="color: #000000; font-weight: bold;">then</span>
      <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Brak pliku $1&quot;</span>;
      <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">1</span>;
   <span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
   <span style="color: #007800;">files</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;$1/index&quot;</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-e</span> ^<span style="color: #7a0874; font-weight: bold;">&#91;</span>^<span style="color: #666666; font-style: italic;">#]);</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">for</span> x <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$files</span>
   <span style="color: #000000; font-weight: bold;">do</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;$1/<span style="color: #007800;">$x</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
      <span style="color: #000000; font-weight: bold;">then</span>
         <span style="color: #7a0874; font-weight: bold;">continue</span>
      <span style="color: #000000; font-weight: bold;">fi</span>;
      psql <span style="color: #660033;">--log-file</span> <span style="color: #ff0000;">&quot;./tmp/install.log&quot;</span> <span style="color: #660033;">--quiet</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$1/<span style="color: #007800;">$x</span>&quot;</span> <span style="color: #007800;">$2</span>
   <span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># hahaha to przez przypadek :D</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">getopts</span> <span style="color: #ff0000;">&quot;d:u:p:ebh&quot;</span> OPTION
<span style="color: #000000; font-weight: bold;">do</span>
   <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #007800;">$OPTION</span> <span style="color: #000000; font-weight: bold;">in</span>
      b<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         <span style="color: #007800;">backup</span>=<span style="color: #000000;">1</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      d<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         <span style="color: #007800;">database</span>=<span style="color: #007800;">$OPTARG</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      u<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         <span style="color: #007800;">user</span>=<span style="color: #007800;">$OPTARG</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      p<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         <span style="color: #007800;">pass</span>=<span style="color: #007800;">$OPTARG</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      e<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         <span style="color: #007800;">demo</span>=<span style="color: #000000;">1</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      h<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         usage
         <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
      ?<span style="color: #7a0874; font-weight: bold;">&#41;</span>
         usage
         <span style="color: #7a0874; font-weight: bold;">exit</span>
         <span style="color: #000000; font-weight: bold;">;;</span>
   <span style="color: #000000; font-weight: bold;">esac</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Wyczyścimy poprzednie logi z instalacji</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;./tmp/install.log&quot;</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#Inicjalizujemy sql'a</span>
setup_sql <span style="color: #007800;">$user</span> <span style="color: #007800;">$pass</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-n</span> <span style="color: #007800;">$backup</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
   backup_sql <span style="color: #007800;">$database</span>;
<span style="color: #000000; font-weight: bold;">fi</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#Kasujemy</span>
run_sql <span style="color: #ff0000;">&quot;<span style="color: #007800;">$my_dir</span>/delete/&quot;</span> <span style="color: #007800;">$database</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#Tworzymy</span>
run_sql <span style="color: #ff0000;">&quot;<span style="color: #007800;">$my_dir</span>/create/&quot;</span> <span style="color: #007800;">$database</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#Inicjalizujemy</span>
run_sql <span style="color: #ff0000;">&quot;<span style="color: #007800;">$my_dir</span>/insert/init/&quot;</span> <span style="color: #007800;">$database</span>;
&nbsp;
<span style="color: #666666; font-style: italic;">#A jak chcemy demo to je dodajemy ;)</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-n</span> <span style="color: #007800;">$demo</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
   run_sql <span style="color: #ff0000;">&quot;<span style="color: #007800;">$my_dir</span>/insert/demo/&quot;</span> <span style="color: #007800;">$database</span>;
<span style="color: #000000; font-weight: bold;">fi</span>;</pre></div></div>

<p>W sumie to tyle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/bdt-skrypt-instalacyjny/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>FirePHP &#8211; jako debugger? Czemu nie!</title>
		<link>http://www.cojack.pl/firephp-jako-debugger-czemu-nie</link>
		<comments>http://www.cojack.pl/firephp-jako-debugger-czemu-nie#comments</comments>
		<pubDate>Thu, 17 Mar 2011 19:50:19 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firephp]]></category>
		<category><![CDATA[skrypty php]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=517</guid>
		<description><![CDATA[ W dalszym ciągu pracuję nad swoim Frameworkiem, z tym że teraz przyszła pora na sprawdzenie potwora. Piszę sklep internetowy, który później udostępnię na licencji GPL. No to jak już piszę Front-end (nienawidzę&#8230;) to przydałoby się jakoś debugować zapytania sql, komunikaty błędów, żeby było widać co się tam w kodzie ...]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="100" class="alignleft" title="PHP" src="http://www.cojack.pl/wp-content/arch-php.png" alt="PHP"> W dalszym ciągu pracuję nad swoim Frameworkiem, z tym że teraz przyszła pora na sprawdzenie potwora. Piszę sklep internetowy, który później udostępnię na licencji GPL. No to jak już piszę Front-end (nienawidzę&#8230;) to przydałoby się jakoś debugować zapytania sql, komunikaty błędów, żeby było widać co się tam w kodzie dzieje, posty, gety, kókisy <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Pomysł stary jak świat, a w każdym przyzwoitym narzędziu typu Zend FW, Symfony, mamy je. Pomyślałem sobie to dlaczego niby ja nie mam mieć? No i się zaczęły poszukiwania, jak to zaprezentować, później całkowicie zwątpiłem w potrzebę takiego narzędzia.</p>
<h3>Dlaczego FirePHP?</h3>
<p>Nie miałem pomysłu, jak to zaprezentować, każdy FW miał swój sposób, a to pasek wyjeżdżający z dołu, a to z góry, a i tak cały czas używam FireBug&#8217;a do debugowania zapytań ajaxowych! Oświecenie, przecież jest FirePHP. Prosty w obsłudze, nie ma żadnych skomplikowanych milionów klas i interfejsów do obsługi narzędzia. Proste metody, dokumentacja przyjazna dla developera. </p>
<h3>A jak to wygląda?</h3>
<div class="wp-caption alignright" style="width: 165px;"><a href="http://i0.simplest-image-hosting.net/168bf183b2abe8bc9188aacc163dd507/plasma-desktoptn1806.jpg"><img title="FirePHP w natarciu" src="http://i0.simplest-image-hosting.net/168bf183b2abe8bc9188aacc163dd507/plasma-desktoptn1806.jpg" alt="FirePHP w natarciu" height="100" width="155"></a>
<p class="wp-caption-text">FirePHP w natarciu </p>
</div>
<p>  Po prawej mamy zrzut ekranu, jak wygląda taki wypluty przez FirePHP kawałek kodu. Jest przejrzyste, każde zapytanie ajaxowe widzimy w firedebug, to od razu z zapytaniem, dostaniemy odpowiedzi o zapytaniach sql, errorach, routingu, no wszystko co tylko chcemy.</p>
<h3>Słów kilka na zakończenie</h3>
<p>Tym wpisem chciałem zwrócić uwagę na dostępne narzędzia jakie my developerzy mamy pod ręką, nie należy wyważać otwartych drzwi (można by się przyczepić że ja to robię pisząc swojego FW, a to się czepiajcie <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ), ale gdy interfejs jest przyjazny, czas na zaimplementowanie takiego narzędzia nie kosztuje nas wiele, przy czym nie rwiemy sobie włosów z głowy magią, wystarczy poświęcić 3min na przejrzenie przykładów na stronie FirePHP. Także jeżeli ktoś nie ma pomysłu jak to zrobić u siebie, to polecam właśnie te, to, narzędzie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/firephp-jako-debugger-czemu-nie/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tablica PHP do Tablicy PostgreSQL</title>
		<link>http://www.cojack.pl/tablica-php-do-tablicy-postgresql</link>
		<comments>http://www.cojack.pl/tablica-php-do-tablicy-postgresql#comments</comments>
		<pubDate>Sun, 06 Mar 2011 14:37:43 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[PL/pgSQL]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[skrypty php]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=514</guid>
		<description><![CDATA[ Wczoraj pracowałem nad swoim Frameworkiem, miałem kłopot jakby sobie tu poradzić z parametrami przesyłanymi do procedur w funkcjach SQL, gdyż w każdym engine pl/sql mogą one różnie wyglądać, więc poszedłem po rozum do głowy użyłem pseudo Dekoratora działającego na małej fabryce, tylko zaś ten dekorator nie jest typową implementacją ...]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="100" class="alignleft" title="PHP" src="http://www.cojack.pl/wp-content/arch-php.png" alt="PHP"> Wczoraj pracowałem nad swoim Frameworkiem, miałem kłopot jakby sobie tu poradzić z parametrami przesyłanymi do procedur w funkcjach SQL, gdyż w każdym engine pl/sql mogą one różnie wyglądać, więc poszedłem po rozum do głowy użyłem pseudo Dekoratora działającego na małej fabryce, tylko zaś ten dekorator nie jest typową implementacją książkową. No ale dobra, do rzeczy. Problem był z utworzeniem tablicy PostgreSQL z tablicy PHP, i do jasnej cholery nie udało mi się rozwikłać tego problemu bez użycia rekurencji. Z tego powodu jestem bardzo niezadowolony, gdyż tak bardzo chciałem nie używać rekurencji w swoim kodzie, dobra stało się, może teraz słów kilka o tym typie tablicy w PostgreSQL?</p>
<h3>Array Postgresql</h3>
<p>Jak wiemy w php mamy tablice asocjacyjne, takich w postgresql nie ma, to jak sobie poradzić z danymi przesyłanymi do funkcji, by wiedzieć która wartość odpowiada któremu rekordowi w bazie? Trzeba przyjąć sobie jakiś schemat i się jego trzymać, nauczyłem się tego pracując wcześniejszej firmie, z czego jestem bardzo zadowolony i cenie sobie tą wiedzę do której doszedłem sam. Ale się nią z Wami podzielę.</p>
<p>Przykład tablicy w PostgreSQL: &#8216;{1234,325,513,1332}&#8217;, jest to zwykła tablica jednowymiarowa, w php zapisalibyśmy ją tak: $someArray = array(1234,325,513,1332); </p>
<p>Więcej tutaj: <a href="http://www.postgresql.org/docs/current/static/arrays.html">link</a></p>
<h3>Przykład z życia</h3>
<p>Proste oczywiste, nie stwarzającego żadnego problemu do odczytania. Z tym że takie tablice są rzadkością. Przeważnie operujemy na rekordach z tabeli, które posiadają unikatowy identyfikator w bazie, i właśnie on jest nam potrzebny. Jeżeli mamy pola wielokrotnego wyboru, np checkboxy, teoria, relacja jeden do wielu, jeden produkt może należeć do wielu kategorii w sklepie. No to przykład kawałka kodu html:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;label&gt;Jakaś kategoria&lt;/label&gt;
&lt;input type=&quot;checkbox&quot; name=&quot;categories[$incramentValue][id_category]&quot; value=&quot;$jakies_id_kategorii&quot; /&gt;
&lt;label&gt;Rabat dla kategorii tego produktu&lt;/label&gt;
&lt;input type=&quot;text&quot; name=&quot;categories[$incramentValue][discount]&quot; value=&quot;$jakas_wartosc_rabatu&quot; /&gt;</pre></div></div>

<p>To akurat jest trochę bardziej rozbudowany przykład niż ten o który mi chodziło ;d Gdyż gdybyśmy mieli tylko zwykłe przypisanie produktu do kategorii, to wystarczyło by naszej funkcji w sql 2 parametry, jeden to id produktu, a drugi to tablica z idkami kategorii, które wybraliśmy.<br />
No ale dobra, jeżeli chcemy operować czasami na paru tabelach w jednym widoku, to takie rozwiązanie jest jak najbardziej zrozumiałe, i teraz w naszej tablicy po przesłaniu do php będziemy mieli coś takiego:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
  <span style="color: #000088;">$incramentValue</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'id_category'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$jakies_id_kategorii</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'discount'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$jakas_wartosc_rabatu</span>
  <span style="color: #009900;">&#41;</span>
  <span style="color: #339933;">...</span> itd
<span style="color: #009900;">&#41;</span></pre></div></div>

<h3>Jak to ugryźć?</h3>
<p>No i dobra, teraz tak mamy identyfikator kategorii i rabat jaki chcemy nadać temu produktowi w tej kategorii, można by tam jeszcze dorzucić id klienta, taki pełny system b2b (business-to-business). Mamy to co mamy, teraz tak jak pisałem już wyżej, musimy sobie przyjąć jakiś standard w sql którym w danej funkcji będziemy operować na tych tablicach, widząc po kolejności argumentów w tablicy wiemy jak byśmy chcieli by wyglądała nasza tablica w SQL, o tak: &#8216;{{$jakies_id_kategorii,$jakas_wartosc_rabatu},{$jakies_id_kategorii2,$jakas_wartosc_rabatu2},{&#8230;}}&#8217; czyli np: &#8216;{{2,34.2},{5,12}}&#8217;. Po przesłaniu takiej tablicy do procedury w SQL musimy ją jeszcze tylko &#8222;przelecieć&#8221; i wstawić odpowiednie rekordy, a jak utworzyć taką tablicę?</p>
<h3>Utworzenie tablicy PostgreSQL z tablicy PHP</h3>
<p>Napisałem do tego funkcję:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">   <span style="color: #000000; font-weight: bold;">function</span> phpArrayToPg<span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span> <span style="color: #000088;">$phpArray</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inner_glue</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">','</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$phpArray</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$value</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$output</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;{&quot;</span><span style="color: #339933;">.</span>phpArrayToPg<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inner_glue</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;}&quot;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$value</span> <span style="color: #009900;">&#41;</span>
               <span style="color: #000088;">$output</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$value</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;'</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">else</span>
               <span style="color: #000088;">$output</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$inner_glue</span><span style="color: #339933;">,</span> <span style="color: #000088;">$output</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Która się nie podoba depeszowi ;d  Dlaczego? Pytał się mnie co z wartościami które będą posiadały w sobie jakieś nietypowe wartości, czyli np: &#8216;, \, / itp znaki escape, szczerze to mało mnie interesują takie wartości, dlaczego? Używam PDO do bindowania takich wartości, to że w stringu będzie &#8216; czy \ czy ¬ a nawet ¿ jest mi to totalnie obojętne, znaki te nie wyescepują zapytania i to jest najważniejsze, a jak strzelę gafę przy validacji podczas wprowadzania wartości przez użytkowników to jest już tylko i wyłącznie mój błąd a nie że funkcji która ma na celu tylko utworzenie tablic z tablicy.</p>
<p>Wywołanie:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;E'{&quot;</span><span style="color: #339933;">.</span>phpArrayToPg<span style="color: #009900;">&#40;</span><span style="color: #000088;">$someArray</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;}'&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Słów kilka na zakończenie</h3>
<p>Wiem wiem, znów chaos, znowu zagmatwałem&#8230; Ale chciałem tylko pokazać funkcję, która tworzy tablicę sql&#8217;ową z pehapowej.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/tablica-php-do-tablicy-postgresql/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Aktualizacja Prestashop do 1.3.6 z 1.3.1</title>
		<link>http://www.cojack.pl/aktualizacja-prestashop-do-1-3-6-z-1-3-1</link>
		<comments>http://www.cojack.pl/aktualizacja-prestashop-do-1-3-6-z-1-3-1#comments</comments>
		<pubDate>Sat, 05 Feb 2011 15:10:24 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[e-Commerce]]></category>
		<category><![CDATA[aktualizacja]]></category>
		<category><![CDATA[prestashop]]></category>
		<category><![CDATA[prestashop 1.3.6]]></category>

		<guid isPermaLink="false">http://www.cojack.pl/?p=502</guid>
		<description><![CDATA[ Dziś przyszło mi walczyć z prestashop, do pobrania z officialnego Polskiego wsparcia dla tego systemu mamy do dyspozycji ver 1.3.1 z tym że najnowsza wersja dostępna to 1.3.6 która wprowadza paręnaście poprawek, usuwa błędy, changelog . To pomyślałem sobie dlaczego by nie zaktualizować świeżo zainstalowany sklep do najnowszej ver? ...]]></description>
			<content:encoded><![CDATA[<p><img alt="Prestashop" src="http://www.cojack.pl/wp-content/prestashop-logo.jpg" title="Prestashop" class="alignleft"> Dziś przyszło mi walczyć z prestashop, do pobrania z officialnego Polskiego wsparcia dla tego systemu mamy do dyspozycji ver 1.3.1 z tym że najnowsza wersja dostępna to 1.3.6 która wprowadza paręnaście poprawek, usuwa błędy, <a href="http://www.prestashop.com/download/changelog_1.3.6.0.txt" rel="nofollow" target="_blank">changelog</a> . To pomyślałem sobie dlaczego by nie zaktualizować świeżo zainstalowany sklep do najnowszej ver? No to jazda!</p>
<h3>Proces aktualizacji</h3>
<p>Na oficialnej stronie prestashop <a href="http://www.prestashop.com/wiki/Installing_And_Updating_PrestaShop_Software/#Update_PrestaShop" rel="nofollow" target="_blank">link</a>, mamy tutorial jak powinniśmy postępować, krok po kroku przy aktualizacji&#8230; z tym że nie napisali że należy zachować plik settings.inc.php z katalogu config żeby nowa ver. presty wiedziała że chcemy zrobić upgrade. Także kroki jakie musimy podjąć by ryzyko zminimalizować do min to:</p>
<ol>
<li>Kopia bazy danych</li>
<li>Kopia wszystkich plików</li>
<li>Wykonać eksport języka polskiego</li>
</ol>
<p>Aktualizacja wiąże się z tym że w mamy w niej domyślnie 3 dostępne języki, nachodzi ten 3 na język polski w aktualnej ver 1.3.1 od Polskiego supportu. Ale nie ma co się martwić na zapas.</p>
<p>Po wykonaniu tych wszystkich kopii bezpieczeństwa, co prawda sklep jest świeżynka, więc nie ma co się martwić że stracimy jakieś dane. Pobieramy najnowszą ver sklepu z officialnego źródła, nadpisujemy wszystkie pliki na serwerze tymi nowymi i ponownie przechodzimy do instalacji sklepu, z tym że zamiast instalacji wybieramy <strong>Upgrade</strong>, wykona to parę modyfikacji na bazie danych.</p>
<p>Po szczęśliwym zakończeniu aktualizacji i przejściu na stronę główną sklepu będziemy mieli z00nka, wcięło język Polski&#8230;</p>
<h3>Przywrócenie języka</h3>
<p>Kasujemy folder <strong>install</strong> zmieniamy nazwę folderu <strong>admin</strong> bo inaczej presta nie pozwoli nam się zalogować do pa (panelu administratora), no to teraz po zalogowaniu  się przechodzimy do ostatniej zakładki <strong>Narzędzia</strong> i menu <strong>Tłumaczenia</strong> i importujemy wcześniej wyeksportowany język, gotowe! Z tym że teraz język hiszpański został podmieniony pod język polski <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Dobra, olać kwestię ich głupoty z ustawianiem sequenca na sztywno, ich sprawa. Żeby teraz wszystko wyglądało jak należy, musimy przywrócić flagę znajduje się w <strong>img/l/3.jpg</strong>, kopiujemy tą flagę z Polskiej dystrybucji presty, i wgrywamy, po czym przechodzimy do <strong>Ustawienia</strong> -> <strong>Obrazek</strong> i generujemy wszystkie obrazki na nowo, powinno to pomóc <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Dlaczego aktualizacja a nie instalacja najnowszej ver?</h3>
<p>Pobranie od Polskeigo supportu prestashop ich ver daje nam przy instalacji przetłumaczony proces na nasz język, poza tym po instalacji i przejściu do pa mamy przetłumaczone od razu cały panel, czego się tak łatwo z palca nie da zrobić po zainstalowaniu ver. z officialnego źródła.</p>
<h3>Słów kilka na zakończenie</h3>
<p>Teoretycznie nic nam się nie powinno wysypać, proces jest prosty i krótki, z tym że kopiowanie plików jest toporne, jak ktoś nie ma dostępu do serwera po ssh, bo tak to sobie nie wypakuje plików na serwerze za pomocą zipa tylko musi ponad 3k plików kopiować co jest mało wydajne. Praktycznie proces trwa około 20min z kopiowaniem plików, a teraz tylko czekać aż wyjdzie <strong>Prestashop 1.4</strong>, mam nadzieje że to już nie długo, bo nawet Michał Anioł jakby miał rzeźbić w gównie to by Dawida nie wyskrobał.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/aktualizacja-prestashop-do-1-3-6-z-1-3-1/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

