<?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>BBProject.net &#187; Webmastering</title>
	<atom:link href="http://www.bbproject.net/category/webmastering/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bbproject.net</link>
	<description>Programowanie, webmastering, informatyka</description>
	<lastBuildDate>Mon, 26 Jul 2010 08:03:47 +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>Pozycjonowanie a dobra treść</title>
		<link>http://www.bbproject.net/2010/05/pozycjonowanie-a-dobra-tresc/</link>
		<comments>http://www.bbproject.net/2010/05/pozycjonowanie-a-dobra-tresc/#comments</comments>
		<pubDate>Fri, 14 May 2010 08:15:20 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[backlink]]></category>
		<category><![CDATA[pozycjonowanie]]></category>
		<category><![CDATA[precel]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[wyszukiwarka]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=329</guid>
		<description><![CDATA[Jakiś czas temu natknąłem się na coś takiego jak „precel” w temacie pozycjonowania stron. Dla niewtajemniczonych, owy „precel” to strona www, na której umieszczane są artykuł wraz z linkami zwrotnymi do pozycjonowanej strony. Z reguły każdy może dodać taki artykuł aby podnieść pozycję swojej strony w wyszukiwarce. Zetknąłem się z tym po raz pierwszy i [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-330" title="SEO" src="http://www.bbproject.net/wp-content/uploads/2010/04/seo_graph-160x120.jpg" alt="" width="160" height="120" />Jakiś czas temu natknąłem się na coś takiego jak „precel” w temacie pozycjonowania stron. Dla niewtajemniczonych, owy „precel” to strona www, na której umieszczane są artykuł wraz z linkami zwrotnymi do pozycjonowanej strony. Z reguły każdy może dodać taki artykuł aby podnieść pozycję swojej strony w wyszukiwarce.</p>
<p>Zetknąłem się z tym po raz pierwszy i prawdę mówiąc zacząłem się zastanawiać, czy to już aby nie jest przesada? Rozumiem że na wrażliwych frazach jest ostra walkę o pozycję w wyszukiwarkach, ale przecież ludzie nie są idiotami! Załóżmy że ktoś osiągnie swój cel, i wyjdzie na pierwszą pozycję z stroną niekoniecznie pasująca do słów kluczowych. No przecież każdy kto nawet odwiedzi taką stronę szybko ją opuści jeśli się okażę że to nie to czego szukał.</p>
<p><span id="more-329"></span>Wydaje mi się że<strong> dobra treść, dobry produkt sam potrafi się obronić</strong> i nie potrzeba aż takich gimnastyk. Naturalnie powstające linki zwrotne załatwią sprawę. Oczywiście zakładam że strona jest dobrze napisana i zoptymalizowana w minimalnym stopniu pod kątem wyszukiwarek. Po prostu zaczyna mi to przypominać wciskanie kitu jak w telezakupach.</p>
<p>Wyjątek może tutaj chyba jedynie stanowić sytuacja w której na daną frazę istnieje produkt lub strona z całkowicie innej branży. Swego czasu spotkałem się zdaje się z silnikiem graficznym o nazwie <em>OOBE</em>. Spróbujcie sobie go znaleźć wpisując tę frazę. Skończycie na podróżach poza ciałem <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> . Oczywiście wiąże się to z tym że jednak zdecydowana większość wpisujących owe słowo kluczowe szuka czegoś innego niż silnika do gry. Dodanie słówka „engine” załatwia sprawę.</p>
<p>Nie będę ukrywał, nie jestem ekspertem w dziedzinie SEO. Orientuję się w temacie na tyle aby móc stworzyć przyzwoitą stroną pod tym względem. Nie mniej, moje poczucie dobrego smaku mówi mi że jest pewna granica której przekraczać nie można. Pamiętajcie, dobra treść obroni się sama!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/05/pozycjonowanie-a-dobra-tresc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AJAX w jQuery dla początkujących</title>
		<link>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/</link>
		<comments>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:10:40 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[load]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=288</guid>
		<description><![CDATA[Szybki i lekki kurs dla początkujących pod tytułem: AJAX w jQuery. Innymi słowy, jak przy pomocy tej biblioteki załadować dynamiczną treść bez przeładowania strony. Wszystko czego będziemy potrzebować to biblioteka jQuery, dobre chęci oraz szczypta zapału. Przechodzimy na stronę jquery.com i pobieramy najnowszą wersję skryptu. Ja na potrzeby tego wpisu stworzyłem sobie dwa pliki, pierwszy [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-289" title="jQuery" src="http://www.bbproject.net/wp-content/uploads/2010/03/jquery.png" alt="" width="235" height="73" />Szybki i lekki kurs dla początkujących pod tytułem: <a href="http://pl.wikipedia.org/wiki/AJAX">AJAX</a> w jQuery. Innymi słowy, jak przy pomocy tej biblioteki załadować dynamiczną treść bez przeładowania strony.</p>
<p>Wszystko czego będziemy potrzebować to biblioteka jQuery, dobre chęci oraz szczypta zapału. Przechodzimy na stronę <a href="http://jquery.com">jquery.com</a> i pobieramy najnowszą wersję skryptu.</p>
<p>Ja na potrzeby tego wpisu stworzyłem sobie dwa pliki, pierwszy będący główną stroną która będzie korzystać z techniki AJAX, oraz drugą zawierającą ładowane treści &#8211; obie jako skrypty PHP, aby nie było zbyt nudno. Ok, przechodzimy do działania.</p>
<p><span id="more-288"></span>Pierwszym krokiem będzie dołączenie do dokumenty biblioteki jQuery w sekcji <em>head</em> strony:</p>
<pre class="brush: xml">&lt;script type="text/javascript" src="jquery-1.4.2.min.js"&gt;&lt;/script&gt;
</pre>
<h4>Najprostszy przypadek</h4>
<p>Czyli zwyczajne załadowanie zawartości innego pliku html/php bez przeładowania strony.</p>
<p>Dodam do naszej strony dwie warstwy, jedną która będzie przyjmować ładowane treści, i drugą z przyciskiem wywołującym zdarzenie.</p>
<pre class="brush: xml">&lt;div id="box"&gt;&lt;/div&gt;
&lt;div&gt;&lt;input id="btn" type="button" value="Wyślij"&gt;&lt;/div&gt;
</pre>
<p>Teraz pozostaje nam już tylko dodanie akcji do przycisku.</p>
<pre class="brush: jscript">$(document).ready(function(){
  $('#btn').click(function(){
    $('#box').load('data.php');
  });
});
</pre>
<p>Może czas na wyjaśnienie powyższego kodu. Pierwsza linia przypisuje zdarzeniu załadowania strony funkcję w której określamy co ma się dziać. Jest to wymagane podczas używania jQuery (i nie tylko), aby mieć pewność że struktura dokumentu widziana przez przeglądarkę jest kompletna. Kolejno elementowi o identyfikatorze <em>btn</em> przypisujemy zdarzenie kliknięcia w którym do elementu <em>box</em> ładujemy przy pomocy funkcji <a href="http://api.jquery.com/load"><em>.load</em></a> dane z pliku <em>data.php</em>.</p>
<p>W <em>data.php</em> umieściłem zwyczajowy tekst, równie dobrze może to być plik html. Przy tak przygotowanym kodzie, kliknięcie przycisku „Wyślij” powinno skutkować pojawieniem się nad nim treści zawartej w zewnętrznym pliku.</p>
<p>Kompletny kod całego dokumentu wygląda następująco:</p>
<pre class="brush: xml">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
    &lt;script type="text/javascript" src="jquery-1.4.2.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript"&gt;
      $(document).ready(function(){
        $('#btn').click(function(){
          $('#box').load('data.php');
        });
      });
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id="box"&gt;&lt;/div&gt;
    &lt;div&gt;&lt;input id="btn" type="button" value="Wyślij"&gt;&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<h4>Przekazywanie parametrów</h4>
<p>Jeśli powyższy przypadek chcielibyśmy wzbogacić o przekazanie jakichś parametrów do wywoływanego pliku <em>data.php</em>, musimy rozbudować nieco funkcję <em>.load</em>.</p>
<pre class="brush: jscript">$('#box').load('data.php', {index: 4, str: 'abc'});
</pre>
<p>Drugi parametr określa tablicę par klucz: wartość. Dane te są przesyłane metodą POST, zatem mamy do nich łatwy dostęp w docelowym skrypcie php. Przykładowa zawartość <em>data.php</em>:</p>
<pre class="brush: php">Index: &lt;?php echo $_POST['index']; ?&gt;&lt;br&gt;
Ciąg znaków: &lt;?php echo $_POST['str']; ?&gt;
</pre>
<p>Tym sposobem możemy wpływać na to co ma zostać załadowane. Podawane dane możemy odczytać z pola tekstowe lub innych zmiennych &#8211; wszystko zależy od naszej inwencji oraz umiejętności pisania w JavaScript.</p>
<h4>Wysyłanie formularzy</h4>
<p>Ostatnim punktem będzie wysłanie formularza. Można by oczywiście skorzystać z powyższej metody kopiując zawartości pól formy, jednak było by to mało wygodne. My skorzystamy z funkcji <a href="http://api.jquery.com/serializeArray"><em>.serializeArray</em></a>.</p>
<p>Zmodyfikowałem zawartość dokumentu wzbogacając go o prosty formularz z dwoma polami:</p>
<pre class="brush: xml">&lt;div id="box"&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;form id="form"&gt;
    Pole 1: &lt;input type="text" name="pole1"&gt;&lt;br&gt;
    Pole 2: &lt;input type="text" name="pole2"&gt;&lt;br&gt;
    &lt;input id="btn" type="button" value="Wyślij"&gt;
  &lt;/form&gt;
&lt;/div&gt;
</pre>
<p>Kolejno modyfikujemy kod JavaScript:</p>
<pre class="brush: jscript">$('#box').load('data.php', $('#form').serializeArray());
</pre>
<p>Tym sposobem, do pliku <em>data.php</em> zostanie przekazana zawartość pól formularza o identyfikatorze <em>form</em>. Co z nimi zrobimy, zależy już od nas.</p>
<h4>Podsumowanie</h4>
<p>Mam nadzieję iż chociaż troszkę pomogłem osobą które po raz pierwszy próbowały użyć technologii AJAX przy pomocy jQuery. Bardziej zaawansowanym polecam zapoznanie się z resztą <a href="http://api.jquery.com/category/ajax">funkcji</a> dostępnych w jQuery, które dają większe możliwości manipulacji danymi i tym co się dzieje podczas wywołania asynchronicznego.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CAPTCHA bez dręczenia użytkownika</title>
		<link>http://www.bbproject.net/2010/04/captcha-bez-dreczenia-uzytkownika/</link>
		<comments>http://www.bbproject.net/2010/04/captcha-bez-dreczenia-uzytkownika/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 15:11:00 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[zabezpieczenia]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=275</guid>
		<description><![CDATA[CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) &#8211; rodzaj techniki stosowanej jako zabezpieczenie na stronach www, celem której jest dopuszczenie do przesłania danych tylko wypełnionych przez człowieka. Źródło: http://pl.wikipedia.org/wiki/CAPTCHA Zapewne nie raz spotkaliście się z kodami obrazkowymi które trudno było rozpoznać nawet człowiekowi. Widziałem już różne zabezpieczenia przeciw spam botom, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>CAPTCHA</strong> (Completely Automated Public Turing test to tell Computers and Humans Apart) &#8211; rodzaj techniki stosowanej jako zabezpieczenie na stronach www, celem której jest dopuszczenie do przesłania danych tylko wypełnionych przez człowieka.</p>
<p>Źródło: <a href="http://pl.wikipedia.org/wiki/CAPTCHA">http://pl.wikipedia.org/wiki/CAPTCHA</a></p></blockquote>
<p><img class="alignleft size-full wp-image-276" title="CAPTCHA" src="http://www.bbproject.net/wp-content/uploads/2010/03/captcha.png" alt="" width="167" height="60" />Zapewne nie raz spotkaliście się z kodami obrazkowymi które trudno było rozpoznać nawet człowiekowi. Widziałem już różne zabezpieczenia przeciw spam botom, mniej lub bardziej wymyślne, a nawet takie które spowodowały że sobie odpuściłem wysłanie formularza gdyż nie byłem w stanie ich pomyślnie przejść.</p>
<p>W tym wpisie pokaże Wam jak zrobić alternatywne metody weryfikacji człowieczeństwa bez denerwujących kodów obrazkowych czy innych mechanizmów utrudniających życie.</p>
<p><span id="more-275"></span>Być może to co opiszę ktoś już wynalazł i stosuje z powodzeniem, nie mniej, wymyśliłem to przy okazji jednego projektu gdzie po dziś dzień działa i spisuje się znakomicie &#8211; chyba że tą stronę omijają spam boty <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_wink.png' alt=';)' class='wp-smiley' /> .</p>
<h4>Idea</h4>
<p>Na czym polega ów metoda? <strong>Na dynamicznej zmianie formularza, przed jego wysłaniem.</strong> Kolejno, w skrypcie PHP obsługującym daną formę, sprawdzamy poprawność struktury.</p>
<p>Spam boty, przeczesując sieć, odczytują z kodu HTML dostępne pola i wysyłają żądanie <em>POST</em> do lokacji widniejącej w  parametrze <em>action</em>. Jeśli zmienimy formularz dynamicznie przy pomocy JavaScript&#8217;u, wtedy spam bot nie zobaczy tych zmian i wyśle pierwotną wersję &#8211; wyjątkiem było by tutaj gdyby bot działał jak przeglądarka i interpretował całą stronę, ale w to wątpię.</p>
<h4>Praktyka</h4>
<p>Jeśli powyższy opis nie jest zbyt jasny, to poniższy przykład rozwieje wszelkie wątpliwości.</p>
<p>Załóżmy że mamy prosty formularz z jednym polem tekstowym &#8211; na przykład do dodawania komentarzy na stronę.</p>
<pre class="brush: xml">&lt;form id="form" action="form.php" method="post"&gt;
  &lt;input type="text" name="comment"&gt;
  &lt;input type="submit" name="submit" value="Wyślij"&gt;
&lt;/form&gt;</pre>
<p>Po wysłaniu takiej formy i zrzuceniu w PHP zawartości tablicy <em>$_POST</em> otrzymamy:</p>
<pre class="brush: plain">array(2) {
  ["comment"]=&gt;
  string(14) "mój komentarz"
  ["submit"]=&gt;
  string(7) "Wyślij"
}</pre>
<p>I w ten sposób wyglądała by przesłana zawartość jeśli wysłał by ją spam bot. Teraz wprowadzimy kilka zmian, aby ta wysłana przez człowieka (tj. z tradycyjnej przeglądarki) różniła się od tej powyższej.</p>
<p>Skorzystam z biblioteki <a href="http://jquery.com">jQuery</a> w celu łatwiejszego manipulowania elementami dokumentu HTML.</p>
<pre class="brush: jscript">$(document).ready(function(){
  $('#form').append('&lt;input type="hidden" name="key" value="234786"&gt;');
  $('#form input[name="submit"]').removeAttr('name');
});</pre>
<p>Co zrobiłem? Tuż po załadowaniu całego dokumentu, dodałem nowe ukryte pole formularza o nazwie <em>key</em> i wartości <em>234786</em>. Kolejno, usunąłem atrybut <em>name</em> z przycisku <em>submit</em>. Po takim zabiegu, skrypt PHP widzi nasz formularz w następujący sposób:</p>
<pre class="brush: plain">array(2) {
  ["comment"]=&gt;
  string(14) "mój komentarz"
  ["key"]=&gt;
  string(6) "234786"
}</pre>
<p>Jak widać, nie występuje już w tablicy <em>$_POST</em> w ogóle przycisk <em>submit</em>, a dodatkowo doszło ukryte pole <em>key</em>.</p>
<p>Jeśli teraz wyczulimy skrypt przetwarzający formularz na te zmiany, możemy odróżnić bota od człowieka:</p>
<pre class="brush: php">if (( ! isset($_POST['submit'])) &amp;&amp; isset($_POST['key']) &amp;&amp; ($_POST['key'] == '234786'))
{
  echo 'jesteś człowiekiem :]';
}
else
{
  echo 'jesteś spam botem :[';
}</pre>
<h4>Zabezpieczenia</h4>
<p>Pokazane tutaj rozwiązanie, w postaci usunięcia atrybutu przycisku <em>submit</em>, oraz dodanie pola <em>hidden</em> są tylko przykładowe. Siła tego rozwiązania tkwi w unikalności metody, a tutaj mamy naprawdę spore pole do popisu.</p>
<p>Możemy dodawać i usuwać pola. Manipulować nazwą lub zawartością pól ukrytych, np.: jego wartość musi być sumą kontrolną z tego co wpisze użytkownik w innym polu (wymagane podpięcie się pod zdarzenie <em>onSubmit</em> w takim wypadku). Możemy dodać pole z nazwą przeglądarki, adresem IP i porównać w skrypcie PHP czy się zgadzają oba wpisy. Pole do popisu jest naprawdę ogromne &#8211; niech poniesie Was fantazja, grunt to dobrze namieszać <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> .</p>
<p>Sam kod JavaScript warto umieścić w zewnętrznym pliku oraz potraktować narzędziem typu <a href="http://www.minifyjavascript.com">kompresor JS</a>. To utrudni ew. rozgryzienie naszego przypadku.</p>
<h4>Uwagi</h4>
<p>Czy jest to rozwiązanie idealne? Oczywiście nie. Pierwsza wada to wymagana obsługa JavaScript u użytkownika. Druga to łatwość obejścia tego typu zabezpieczenia przez człowieka. I tutaj są dwa aspekty tej przypadłości.</p>
<p>Autor bota musiał by przejrzeć kod naszej strony i zorientować się co tam się dokładnie dzieje i zmodyfikować swój twór. Jeśli przyjmiemy że każdy webmaster zastosuje inny algorytm zabezpieczający, to mało komu będzie się chciało dostosowywać swojego szkodnika do każdej strony z osobna tylko po to by móc masowo spamować. Koszt tej operacji przewyższał by zyski z rozsyłanego spamu.</p>
<p>Czyli, zasadniczo da się prosto dojść do tego jak spreparować formularz (chociaż jeśli ktoś namiesza to wcale to takie łatwe być nie musi <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_wink.png' alt=';)' class='wp-smiley' /> ), jednak jest to z ekonomicznego punktu widzenia nieopłacalne dla spamera.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/04/captcha-bez-dreczenia-uzytkownika/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Przydatne sztuczki w AdTaily.pl</title>
		<link>http://www.bbproject.net/2010/04/przydatne-sztuczki-w-adtaily-pl/</link>
		<comments>http://www.bbproject.net/2010/04/przydatne-sztuczki-w-adtaily-pl/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 15:43:09 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[adtaily]]></category>
		<category><![CDATA[cpm]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[reklama]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=299</guid>
		<description><![CDATA[Wpis ten kieruje do wszystkich użytkowników sieci reklamowej AdTaily.pl, głównie rzec jasna wydawców, którzy umieszczają reklamy na swoich stronach. Mimo ciągłego rozwoju przez autorów (a właściwie autorki ) tego systemu reklamy, wciąż jest w nim kilka niedogodności które powiem jak ominąć bądź obejść. Mam tutaj na myśli rozszerzone personalizowanie wyglądu widgetu, jego umieszczanie na stronie [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adtaily.pl"><img class="alignleft size-thumbnail wp-image-300" title="AdTaily.pl" src="http://www.bbproject.net/wp-content/uploads/2010/04/adtaily-160x89.png" alt="" width="160" height="89" /></a>Wpis ten kieruje do wszystkich użytkowników sieci reklamowej <a href="http://www.adtaily.pl">AdTaily.pl</a>, głównie rzec jasna wydawców, którzy umieszczają reklamy na swoich stronach.</p>
<p>Mimo ciągłego rozwoju przez autorów (a właściwie autorki <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> ) tego systemu reklamy, wciąż jest w nim kilka niedogodności które powiem jak ominąć bądź obejść. Mam tutaj na myśli rozszerzone personalizowanie wyglądu widgetu, jego umieszczanie na stronie oraz przeliczanie stawek za dzień odsłony.</p>
<p>Korzystasz z AdTaily.pl i chcesz wycisnąć z niego siódme poty oraz zwiększyć przychody z reklamy? Zapraszam do dalszej części wpisu.</p>
<p><span id="more-299"></span>Cały wpis podzieliłem na dwa podrozdziały, jeden dotyczący wyglądu widgetu, oraz drugi na temat ustalania stawek za dzień odsłony.</p>
<h4>Widget</h4>
<p>Widget, czyli boks reklamowy jaki umieszczamy na swojej stronie. Mimo iż w panelu reklamowym możemy ustalić takie rzeczy jak tytuł czy kolor ramki oraz wypełnienia, to czasami jest to za mało.</p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/04/adtaily_widget_settings.png"><img class="alignnone size-large wp-image-304" title="AdTaily.pl - konfiguracja widgetu" src="http://www.bbproject.net/wp-content/uploads/2010/04/adtaily_widget_settings-512x449.png" alt="" width="512" height="449" /></a><br />
<em>Panel konfiguracji widgetu w serwisie AdTaily.pl</em></p>
<p>Pierwsza sytuacja, tytuł boksa. Nie można go usunąć, nawet wpisując pusty ciąg znaków. Czasami chcemy sami dodać nagłówek zgodny z wyglądem naszej strony. Druga sprawa, kolor wypełnienia, co jeśli tło naszej strony nie jest jednolite? Niestety nie możemy wybrać tła przeźroczystego.</p>
<p>Rozwiązanie? Nadpisanie stylów w arkuszu CSS:</p>
<pre class="brush: css">#AdTaily_Widget_Container div
{
  border: none !important;
  background-color: transparent !important;
}

#AdTaily_Widget_Container span
{
  display: none !important;
}</pre>
<p>Pierwszy fragment odpowiedzialny jest za usunięcie obramowania widgetu oraz ustawienie przeźroczystego koloru tła. Drugi natomiast za usunięcie nagłówka nad boksem.</p>
<p>Oczywiście możemy tutaj bardziej zaszaleć i dodać sobie przykładowo bardziej finezyjne obramowanie czy w inny sposób skonfigurować wygląd widgetu AdTaily.pl.</p>
<h5>Szerokość widgetu</h5>
<p>Drugą poważną wadą widgetu jest jego szerokość, która czasami przekracza realną na jaką jest zapotrzebowanie. Powoduje to, że mimo dostatecznej dostępnej szerokości na stronie gdzie znajduje się boks, mieści się w nim tylko jedna reklama w rzędzie, mimo iż na oko widać że weszły by tam dwie (dokładnie jak na tej stronie).</p>
<p>W tej sytuacji wystarczy że wrzucimy kod widgetu w warstwę której nadamy powiększoną szerokość i odpowiednio, relatywnie przesuniemy aby uzyskać optymalne położenie. Przykładowo:</p>
<pre class="brush: xml">&lt;div style="position: relative; top: 0px; left: -10px; width: 290px;"&gt;
  ... kod widgetu ...
&lt;/div&gt;</pre>
<p>Liczę że każdy kto bierze się za umieszczanie kodu na stronie ma na tyle rozwinięte umiejętności operowania HTML&#8217;em iż zrozumie powyższą ideę i dobierze odpowiednio parametry w zaprezentowanym kodzie.</p>
<h4>Cena</h4>
<p>Jeden z ważniejszych parametrów ekonomicznych naszej reklamy <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> . Cena jaką ustalamy w konfiguracji serwisu, jest to cena za dzień prezentowania reklamy. AdTaily.pl pobiera 30% prowizji od tego co płaci reklamodawca, a ustalana stawka jaką podajemy to pozostałe 70% jakie wpadnie do naszej kieszeni.</p>
<p>Cena jaka będzie widoczna w widgecie oraz katalogu AdTaily.pl wyraża się wzorem:</p>
<pre style="text-align: center;">Cena dla reklamodawcy = Cena podana / 0,7</pre>
<p>&#8230;analogicznie:</p>
<pre style="text-align: center;">Cena podana = Cena dla reklamodawcy * 0,7</pre>
<p>Po co te wzory? Gdyż czasami zachodzi potrzeba ustalenie tak ceny aby ta widoczna dla kupujących była na określonym poziomie &#8211; np.: jakaś równa kwota. Jeśli przykładowo chcemy aby cena na stronie była na poziomie równo 2zł to w panelu konfiguracyjnym musimy wpisać 1,40zł (2 / 0,7).</p>
<h5>CPM</h5>
<p>Koszt tysiąca odsłon reklamy. Jest to ważny czynnik przy ustalaniu ceny dziennej. Musimy pamiętać o tym aby nie przesadzić, gdyż po prostu nie zdobędziemy żadnego klienta. CPM określa nam realny koszt reklamy, bo co z tego jeśli mamy niską cenę per dzień skoro w przeliczeniu na odsłonę wychodzi drożej niż u tego który ma za dzień więcej?</p>
<p>I tutaj znów powstaje problem, jaką podać stawkę, aby po uwzględnieniu miesięcznych statystyk wyszedł pożądany przez nas wskaźnik CPM?</p>
<pre style="text-align: center;">Cena podana = (Miesięczna ilość odsłon * CPM * 0.7) / 30 000</pre>
<p>Zatem, jeśli nasz serwis zalicza przykładowo 20 000 odsłon w miesiącu, i chcemy aby CPM był na poziomie 0,40zł, to kwota jaką musimy podać za dzień wynosie 0,19zł.</p>
<p>Jeśli natomiast chcesz dowiedzieć się ile wyniesie CPM przy założonej cenie oraz miesięcznych statystykach odwiedzalności:</p>
<pre style="text-align: center;">CPM = (30 000 * Cena podana) / (Miesięczna ilość odsłon * 0,7)</pre>
<p>Dla przypomnienia, <em>cena podana</em> to kwota jaką wpisujemy w serwisie.</p>
<p>Bardzo szkoda że autorzy AdTaily.pl nie dali możliwości podawania stawki CPM zamiast dziennej. Było by to o wiele wygodniejsze i uwzględniało by wzrosty i spadki ilości wejść na stronę, dostosowując automatycznie cenę w dla reklamodawców.</p>
<h4>Podsumowanie</h4>
<p>Na <a href="http://blog.adtaily.pl">blogu</a> AdTaily.pl oraz <a href="http://www.goldenline.pl/forum/adtaily">forum</a>, możemy przeczytać iż trwają pracę nad nową wersją widgetu oraz innymi udogodnieniami. Miejmy nadzieję że znajdą się tam również te dotyczące CPM.</p>
<p>Liczę że opisane tutaj zagadnienia pozwolą na ujarzmienie boksa od AdTaily.pl i zwiększenie zysków na Waszych stronach. Jeśli potrzebujecie innych rad lub wyliczeń, piszcie śmiało!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/04/przydatne-sztuczki-w-adtaily-pl/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 6 &#8211; wspierać czy nie wspierać?</title>
		<link>http://www.bbproject.net/2010/03/internet-explorer-6-wspierac-czy-nie-wspierac/</link>
		<comments>http://www.bbproject.net/2010/03/internet-explorer-6-wspierac-czy-nie-wspierac/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 15:30:27 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[przeglądarka]]></category>
		<category><![CDATA[standardy]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=293</guid>
		<description><![CDATA[Jeszcze kilka lat temu wielu webmasterów miało dylemat czy porzucać wsparcie dla rozdzielczości ekranu 800&#215;600, robiąc strony o standardowej szerokości przekraczającej 800px. Było to w czasach kiedy dominującą rozdziałkom zaczynało być 1024&#215;768. Obserwowanie procentowego udziału na rynku ludzi z mniejszą rozdzielczością, było zwieńczone spadkiem tej wartości poniżej kilku procent, gdzie można było już ponieść stratę [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-294" title="Internet Explorer 6" src="http://www.bbproject.net/wp-content/uploads/2010/03/ie6-160x168.png" alt="" width="160" height="168" />Jeszcze kilka lat temu wielu webmasterów miało dylemat czy porzucać wsparcie dla rozdzielczości ekranu 800&#215;600, robiąc strony o standardowej szerokości przekraczającej 800px. Było to w czasach kiedy dominującą rozdziałkom zaczynało być 1024&#215;768.</p>
<p>Obserwowanie procentowego udziału na rynku ludzi z mniejszą rozdzielczością, było zwieńczone spadkiem tej wartości poniżej kilku procent, gdzie można było już ponieść stratę tych użytkowników. Dzisiaj 1024px jest niemal zapomniane w skutek popularyzacji monitorów LCD i matryc 1280x1024px oraz panoramicznych.</p>
<p>Nie o tym jednak jest ten wpis. Obecnie, analogicznie mamy do czynienia z sytuacją ciągłego spadku popularności przeglądarki Internet Explorer 6. Na dzień dzisiejszy, jej udział na polskim rynku wynosi <strong>5,81%</strong> (wg. serwisu <a href="http://ranking.pl/pl/rankings/web-browsers.html">ranking.pl</a>). Czy zatem można już ją sobie darować?</p>
<p><span id="more-293"></span>Microsoft Internet Explorer 6 jest już produktem archaicznym. Jego interpretacja kodu HTML jest bardziej wesołą twórczością artystyczną a niżeli standardem. To samo tyczy się arkuszy stylów kaskadowych i setki innych rzeczy, skończywszy na braku obsługi obrazów PNG z 8-bitowym kanał przeźroczystości. Każdy webmaster który musiał dostosowywać stronę specjalnie pod IE6 dokładnie wie o czym mówię.</p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/03/ie6_popularity.png"><img class="alignnone size-large wp-image-295" title="Internet Explorer 6 - popularność" src="http://www.bbproject.net/wp-content/uploads/2010/03/ie6_popularity-512x193.png" alt="" width="512" height="193" /></a><br />
<em>Udział Internet Explorer 6 na rynku przeglądarek</em></p>
<p>Czy zatem nadszedł już czas aby nie przejmować się użytkownikami tej przeglądarki? Odpowiem krótko, to zależy od procentowego udziału tej przeglądarki w przypadku konkretnej strony oraz jej charakteru (biznesowa czy prywatna). Przykładowo, dla tego bloga, IE6 stanowi zaledwie 1%, czyli sporo poniżej średniej wspomnianej na początku. Wynika to z treści tutaj zawartych i wyższej świadomości odwiedzających &#8211; tak jak mówiłem, charakter serwisu.</p>
<p>Sądzę że próg 5% jest już na tyle mały, że można sobie odpuścić „hackowanie” naszej strony specjalnie dla jednego programu. Jeśli ktoś ma wyrzuty sumienia z powodu tych 5%, zawsze może, i właściwe powinien, wyświetlić stosowny komunikat dla konserwatystów &#8211; przykład jak to zrobić + gotowiec, znajdziemy chociażby na stronie <a href="http://ie6.pl/join">ie6.pl</a>.</p>
<p>Ja osobiście „kibicuję” spadkowi Internet Explorer 6 i trzymam za niego kciuki <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_wink.png' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/internet-explorer-6-wspierac-czy-nie-wspierac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Klasyka PHP &#8211; licznik odwiedzin</title>
		<link>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/</link>
		<comments>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 08:27:37 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[file_get_contents]]></category>
		<category><![CDATA[file_put_contents]]></category>
		<category><![CDATA[licznik]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=209</guid>
		<description><![CDATA[Dlaczego klasyka? Gdyż to chyba jeden z najpopularniejszych skryptów o jakich myśli każdy początkujący programista PHP. Fakt faktem, że przy dzisiejszych usługach typu Google Analytics jest to mało komfortowe rozwiązanie i nie dostarcza wielu informacji, nie mniej na pewno dużo satysfakcji . Bez zbędnego przedłużania przechodzimy do sedna sprawy. Nasz licznik będzie maksymalnie uproszczony &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Dlaczego klasyka? Gdyż to chyba jeden z najpopularniejszych skryptów o jakich myśli każdy początkujący programista PHP. Fakt faktem, że przy dzisiejszych usługach typu Google Analytics jest to mało komfortowe rozwiązanie i nie dostarcza wielu informacji, nie mniej na pewno dużo satysfakcji <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> .</p>
<p>Bez zbędnego przedłużania przechodzimy do sedna sprawy. Nasz licznik będzie maksymalnie uproszczony &#8211; będzie zliczał każde przeładowanie strony. Aby zbytnio się nie napracować skorzystamy z funkcji <a href="http://pl.php.net/manual/en/function.file-get-contents.php"><em>file_get_contents</em></a> oraz <a href="http://pl.php.net/manual/en/function.file-put-contents.php"><em>file_put_content</em></a>s do przechowania aktualnego stanu licznika w pliku.</p>
<p><span id="more-209"></span>Jak działa zatem prosty licznik? Pobiera z pliku ilość odsłon, dodaje 1, zapisuje i wyświetla aktualny stan.</p>
<pre class="brush: php">$fn = 'data.txt';
$counter = (file_exists($fn) ? (int)file_get_contents($fn) : 0) + 1;
file_put_contents($fn, $counter);</pre>
<p>I to już w zasadzie wszystko. Pierwsza linia określa nazwę pliku danych licznika. Druga odczytuje jego aktualny stan, o ile plik istnieje. Ostatnia zapisuje ponownie ilość osłon do pliku. W zmiennej <em>$counter</em> znajduje się ich aktualna ilość którą możemy umiejscowić gdzieś na stronie:</p>
<pre class="brush: php">echo $counter;</pre>
<p>Nasz licznik jest już gotowy. Cały kod możesz pobrać <a href="http://www.bbproject.net/wp-content/uploads/2010/03/counter.zip">tutaj</a>.</p>
<h4>Dla ambitnych</h4>
<p>Jeśli nie chcesz aby licznik zliczał każdą pojedynczą odsłonę, a jedynie użytkowników, to musimy pokusić się o skorzystanie z cookies (ciasteczek) przeglądarki.</p>
<p>Podobnie jak w przykładzie wyżej, nie jest to jakiś skomplikowany mechanizm i łatwo go obejść, ale spełnia swoje zadanie w minimum jakie od niego wymagamy.</p>
<pre class="brush: php">$fn = 'data.txt';
$counter = file_exists($fn) ? (int)file_get_contents($fn) : 0;

$cookiename = 'simple_counter_d3v8';
if ( ! isset($_COOKIE[$cookiename]))
{
  file_put_contents($fn, ++$counter);
  setcookie($cookiename, '1', time()+60*60*24);
}</pre>
<p>Jeśli użytkownik odwiedzi stronę, zapisujemy w jego przeglądarce ciasteczko. Przy kolejnej odsłonie tylko wtedy podwyższamy wartość licznika jeśli owo ciasteczko <strong>nie</strong> istnieje. Po 24h, odsłona tego samego użytkownika jest ponownie zliczana &#8211; można to regulować zmieniając liczbę sekund w trzecim parametrze funkcji <a href="http://pl.php.net/manual/en/function.setcookie.php"><em>setcookie</em></a>.</p>
<p>Kompletny kod można pobrać <a href="http://www.bbproject.net/wp-content/uploads/2010/03/counterext.zip">tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/klasyka-php-licznik-odwiedzin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Co zrobić gdy reklama blokuje wyświetlanie strony?</title>
		<link>http://www.bbproject.net/2010/03/co-zrobic-gdy-reklama-blokuje-wyswietlanie-strony/</link>
		<comments>http://www.bbproject.net/2010/03/co-zrobic-gdy-reklama-blokuje-wyswietlanie-strony/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 06:07:39 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[absolute]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[optymalizacja]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[reklama]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=220</guid>
		<description><![CDATA[Otwieramy stronę internetową, widzimy nagłówek i czekamy&#8230; czekamy&#8230; po chwili pojawia się reklama a za nią interesująca nas treść. Brzmi znajomo? Zdecydowana większość systemów reklamowych opiera się na załączaniu zewnętrznego kodu JavaScript, który w przypadku wolnego serwera dostawcy reklam, może powodować niepotrzebne spowalnianie ładowania się naszej strony. O ile w sytuacji takich gigantów jak Google [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-224" title="Billboard" src="http://www.bbproject.net/wp-content/uploads/2010/02/billboard-160x122.jpg" alt="" width="160" height="122" />Otwieramy stronę internetową, widzimy nagłówek i czekamy&#8230; czekamy&#8230; po chwili pojawia się reklama a za nią interesująca nas treść. Brzmi znajomo?</p>
<p>Zdecydowana większość systemów reklamowych opiera się na załączaniu zewnętrznego kodu JavaScript, który w przypadku wolnego serwera dostawcy reklam, może powodować niepotrzebne spowalnianie ładowania się naszej strony. O ile w sytuacji takich gigantów jak <a href="https://www.google.com/adsense">Google AdSense</a> nie mamy się o co martwić, to przy korzystaniu z usług innych podmiotów czy też systemów pośredniczących (np.: <a href="http://www.openx.org">OpenX</a>), może warto zastanowić się jak pozbyć się tego problemu i nie opóźniać pokazania treści tylko przez reklamę. Zniecierpliwiony użytkownik naszej witryny może ją po prostu opuścić zanim zdąży cokolwiek zobaczyć.</p>
<p><span id="more-220"></span>Przedstawione rozwiązanie problemu jest stricte teoretyczne, gdyż docelowa implementacja zależy od konkretnego przypadku, a osoby które zajmują się tworzeniem stron internetowych na pewno będą wiedziały jak przenieść to na własny grunt.</p>
<p>Załóżmy hipotetyczną budowę naszej witryny w następującej postaci:</p>
<div style="margin: 10px auto; width: 300px;">
<div style="border: 2px solid #ff0000; padding: 10px; margin: 10px 0px; text-align: center;"><span style="color: #ff0000;">nagłówek</span></div>
<div style="border: 2px dotted #696969; padding: 10px; margin: 10px 0px; text-align: center;"><strong><span style="color: #696969;">reklama</span></strong></div>
<div style="border: 2px solid #1e90ff; padding: 10px; margin: 10px 0px; text-align: center;"><span style="color: #1e90ff;">treść</span></div>
</div>
<p>Przykładowy kod takiej witryny mógł by wyglądać w następujący sposób:</p>
<pre class="brush: xml">&lt;div id="header"&gt;&lt;/div&gt;
&lt;div id="advert"&gt;&lt;/div&gt;
&lt;div id="content"&gt;&lt;/div&gt;</pre>
<p>Jeśli nie chcemy aby warstwa reklamowa blokowała pojawienie się treści, wystarczy że przeniesiemy ją na sam koniec. Ktoś powie &#8211; ok, ale w tym wypadku reklama powędruje na dół strony. Musimy zatem zastosować pewną sztuczkę. Mianowicie, zwiększamy <strong>dolny margines</strong> warstwy nagłówka o wartość wysokości sekcji reklamowej, tak aby powstała pusta luka. Z kolei warstwę z reklamą, pozycjonujemy w sposób <strong>absolutny</strong> (<em>position: absolute;</em>) przy pomocy stylów, umieszczając ja w otrzymanej wnęcę.</p>
<pre class="brush: xml">&lt;div id="header" style="margin-bottom: 50px;"&gt;&lt;/div&gt;
&lt;div id="content"&gt;&lt;/div&gt;
&lt;div id="advert" style="position: absolute; top: 200px; height: 50px;"&gt;&lt;/div&gt;</pre>
<p>Tym sposobem, przeglądarka wyświetlając stronę, najpierw pokaże nagłówek, treść a dopiero na samym końcu reklamę &#8211; ale w odpowiednim miejscu. Jeśli ta z jakichś powodów nie będzie w stanie się wyświetlić (padnie serwer reklamy), to nie spowoduje to blokowania treści.</p>
<p>Oczywiście to co znajduje się pod reklamą, np.: stopka strony, nie pokaże się dopóki nie zostanie pobrana reklama, nie mniej, nie jest to tak istotny element w stosunku do treści po którą sięga odwiedzający witrynę.</p>
<p>Rozwiązania tego nie możemy zastosować w sytuacji w której odległość warstwy z reklamą jest zmienna w stosunku do początku strony, gdyż w tym momencie nie jesteśmy w stanie pozycjonować warstwy przy pomocy atrybutu <em>absolute</em>. Metodę tą stosuje z powodzeniem na dwóch swoich stronach i spisuje się znakomicie &#8211; <a href="http://www.cotozaplik.pl">cotozaplik.pl</a> oraz <a href="http://checksum.me">checksum.me</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/co-zrobic-gdy-reklama-blokuje-wyswietlanie-strony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wbudowane style PHP-Fusion 7</title>
		<link>http://www.bbproject.net/2010/03/wbudowane-style-php-fusion-7/</link>
		<comments>http://www.bbproject.net/2010/03/wbudowane-style-php-fusion-7/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 06:32:24 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[klasa]]></category>
		<category><![CDATA[php-fusion]]></category>
		<category><![CDATA[skróka]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=272</guid>
		<description><![CDATA[Wpis ten jest dość specyficzny, gdyż kierowany do osób tworzących/edytujących skórki dla PHP-Fusion 7. Każda skórka z reguły posiada swój własny arkusz stylów CSS. Jednakże, sam CMS również używa kilkunastu, które są zaszyte w plikach źródłowych. Chcąc dobrze dopasować nasz temat i określić wygląd wszystkich możliwych elementów musimy zdefiniować w arkuszu stylów również te klasy [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-274" title="PHP-Fusion" src="http://www.bbproject.net/wp-content/uploads/2010/03/php_fusion.png" alt="" width="218" height="83" />Wpis ten jest dość specyficzny, gdyż kierowany do osób tworzących/edytujących skórki dla <a href="http://www.php-fusion.co.uk">PHP-Fusion 7</a>. Każda skórka z reguły posiada swój własny arkusz stylów CSS. Jednakże, sam CMS również używa kilkunastu, które są zaszyte w plikach źródłowych.</p>
<p>Chcąc dobrze dopasować nasz temat i określić wygląd wszystkich możliwych elementów musimy zdefiniować w arkuszu stylów również te klasy których używa sam PHP-Fusion. I tutaj pojawia się problem, skąd wziąć ich listę?</p>
<p><span id="more-272"></span>Też kiedyś stanąłem przed tym problemem, i napisałem drobny skrypt PHP, który analizuje wszystkie pliki tego systemu zarządzania treścią i wyłuskuje wystąpienia definicji klasy stylu (<em>class=&#8217;&#8230;&#8217;</em>). Efekt tych poszukiwań prezentuje poniżej.</p>
<pre>admin-message
alt
article_idx_cat_name
bbcode
button
center
comment-name
comment_actions
comment_message
download_idx_cat_name
failed
faq_idx_cat_name
first-link
forum
forum-caption
forum_cat_name
forum_idx_table
forum_name
forum_table
forum_thread_table
forum_thread_title
forum_thread_user_name
forum_thread_userbar
full-header
news-category
pagenav
panelbutton
passed
photogallery_album_desc
photogallery_album_photo
photogallery_album_photo_info
photogallery_album_photo_link
photogallery_album_thumb
photogallery_photo
photogallery_photo_desc
photogallery_photo_link
poll
profile_user_avatar
profile_user_level
profile_user_name
quote
setuser_body
shoutbox
shoutboxdate
shoutboxname
side
side-hr
side-label
side-small
slink
small
small2
sub-header
tbl
tbl-border
tbl1
tbl2
textbox
</pre>
<p>Oczywiście nie trzeba deklarować wszystkich wypisanych klas, a jedynie te których wygląd chcemy doprecyzować.</p>
<p>Powyższa lista została sporządzona na bazie źródeł PHP-Fusion w wersji 7.00.07.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/wbudowane-style-php-fusion-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Na co zwrócić uwagę przy kupowaniu hostingu?</title>
		<link>http://www.bbproject.net/2010/03/na-co-zwrocic-uwage-przy-kupowaniu-hostingu/</link>
		<comments>http://www.bbproject.net/2010/03/na-co-zwrocic-uwage-przy-kupowaniu-hostingu/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 09:23:00 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Artykuły]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[uptime]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=198</guid>
		<description><![CDATA[Pojemność? Pakiet transferu? Ilość kont e-mail? Nie. Oczywiście są to ważne parametry, które podaje chyba każda firma świadcząca usługi hostingowe, nie mniej nie na to chciałem zwrócić uwagę. To wszystko co widzimy w ofertach serwerów wirtualnych chyba każdy webmaster potrafi samodzielnie ocenić, czy przydzielone gigabajty pomieszczą jego stronę i ile skrzynek pocztowych będzie mu potrzebnych. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-203" title="WWW" src="http://www.bbproject.net/wp-content/uploads/2010/01/www-160x119.jpg" alt="" width="160" height="119" />Pojemność? Pakiet transferu? Ilość kont e-mail? Nie. Oczywiście są to ważne parametry, które podaje chyba każda firma świadcząca usługi hostingowe, nie mniej nie na to chciałem zwrócić uwagę. To wszystko co widzimy w ofertach serwerów wirtualnych chyba każdy webmaster potrafi samodzielnie ocenić, czy przydzielone gigabajty pomieszczą jego stronę i ile skrzynek pocztowych będzie mu potrzebnych.</p>
<p>W tym wpisie chciałbym zwrócić uwagę na kwestie które są mniej atrakcyjne marketingowo, a co za tym rzadziej podawane, a mające duże przełożenie na jakość usługi. To właśnie spora część tych parametrów sprawia, że dwie firmy mające w ofercie w przybliżeniu ten sam pakiet, oferują go czasami pod skrajnie różnymi cenami.</p>
<p><span id="more-198"></span>Nie przedłużając zbytnio, zaczynajmy &#8211; na co zwrócić uwagę przy kupowaniu hostingu?</p>
<h4>Lokalizacja</h4>
<p><a href="http://www.bbproject.net/wp-content/uploads/2010/01/data_center.jpg"><img class="size-thumbnail wp-image-200 alignright" title="Data center" src="http://www.bbproject.net/wp-content/uploads/2010/01/data_center-160x80.jpg" alt="" width="160" height="80" /></a>Nie firmy, ale serwerowni. Jeśli kierujemy naszą ofertę na rynek polski, dobrze aby serwerownia również znajdowała się w naszym kraju. Dlaczego? Są co najmniej dwa powody. Pierwszy, wiemy że mamy do czynienia z poważną instytucją, która zainwestowała w infrastrukturę a nie tylko wykupiła pakiet resellera i dolicza swoją marżę. Drugi, znacznie lepsze połączenie do krajowych dostawców internetu. Z reguły dostawcy usług hostingowych chwalą się jeśli posiadają serwerownię w Polsce, jeśli nie podają tej informacji to niestety nie mamy możliwości zweryfikowania tego.</p>
<h4>Czas dostępu</h4>
<p>Popularny ping. Im mniejszy, tym lepszy. Jeśli dysponujecie normalnym łączem (tzn. nie podzieloną na 100 osób radiówką) możecie samodzielnie sprawdzić ten parametr, wydając komendę w wierszu poleceń:</p>
<pre class="brush: plain">ping www.strona_dostawcy_uslug.pl</pre>
<p>Niestety nie wszystkie serwery odpowiadają na ping&#8217;a. Czasami jest to podyktowana względami bezpieczeństwa. Co nam daje krótki czas opóźnienia? Na pewno szybsze ładowanie strony w momencie korzystania z wielu zasobów (szerzej omówiłem ten temat <a href="http://www.bbproject.net/2009/12/poprawa-szybkosci-wczytywania-grafik-przy-pomocy-stylow">tutaj</a>). Zwiększa to również komfort nawigowania po folderach serwera w trakcie sesji FTP.</p>
<p>Jaka wartość jest najlepsza? Poza idealną równą 0ms, czas opóźnienia poniżej <strong>25ms</strong> możemy uważać za bardzo dobry, 50ms również nie jest najgorszym wynikiem. Wystrzegajmy się hostingów dla których wartość ta przekracza 100ms. Poniżej zapis rezultatu komendy <em>ping</em> dla serwisu <em>onet.pl</em> &#8211; bardzo dobry czas odpowiedzi, dobry punkt odniesienia.</p>
<pre class="brush: plain">Badanie onet.pl [213.180.146.27] z użyciem 32 bajtów danych:

Odpowiedź z 213.180.146.27: bajtów=32 czas=13ms TTL=54
Odpowiedź z 213.180.146.27: bajtów=32 czas=12ms TTL=54
Odpowiedź z 213.180.146.27: bajtów=32 czas=12ms TTL=54
Odpowiedź z 213.180.146.27: bajtów=32 czas=12ms TTL=54

Statystyka badania ping dla 213.180.146.27:
    Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0 (0% straty),
Szacunkowy czas błądzenia pakietów w millisekundach:
    Minimum = 12 ms, Maksimum = 13 ms, Czas średni = 12 ms</pre>
<h4>Uptime</h4>
<p><a href="http://pl.wikipedia.org/wiki/Uptime">Uptime</a>, czyli czas przez jaki dostępna jest usługa w ciągu roku. Nie oszukujmy się, jesteśmy tylko ludźmi a powiedzenie „złośliwość rzeczy martwych” nie wzięło się znikąd. Uptime poniżej <strong>99,9%</strong> powinien zwrócić naszą czujność, jeśli nie chcemy oglądać co drugi dzień informacji o niedostępności strony.</p>
<p>Każda następna dziewiątka podnosi znacznie koszt usługi, i jeśli nie jest to strona najwyższej wagi nie ma sensu za to przepłacać. 99,9% oznacza brak dostępności do strony maksymalnie przez niecałe 9h w ciągu roku.</p>
<p>Bez względu na to czy wartość uptime znajdziemy w ofercie czy nie, warto zweryfikować ją w serwisie takim jak <a href="http://timetouptime.com">UpTime Monitoring</a>.</p>
<h4>Wersja PHP i MySQL</h4>
<p><img class="size-full wp-image-137 alignleft" title="MySQL" src="http://www.bbproject.net/wp-content/uploads/2010/01/mysql.png" alt="" width="121" height="79" />Aktualne wersje PHP i bazy danych MySQL to podstawa. Świadczą o tym że firma aktualizuje swoje oprogramowanie i co najważniejsze, umożliwia nam korzystanie z najnowszych rozwiązań. Dla PHP akceptowalna wersja to <strong>5.2.x</strong>, dla bazy danych MySQL: <strong>5.x</strong>.</p>
<p>Jeśli informacja o wersjach nie jest dostępna na stronie usługodawcy, warto zadać takie pytanie, przy okazji sprawdzimy czas reakcji na pytanie klienta &#8211; najlepiej w dni wolne, polecam niedzielę <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_wink.png' alt=';)' class='wp-smiley' /> .</p>
<h4>Rozszerzenia PHP</h4>
<p>Jeśli nie prowadzisz skomplikowanego serwisu, lub korzystasz z gotowych rozwiązań (np.: systemów zarządzania treścią), to nie musisz się zbytnio tym przejmować. Jeśli jednak samodzielnie piszesz kod w PHP, warto zwrócić uwagę na zainstalowane rozszerzenie dla tego parsera. Możemy to łatwo uczynić przy pomocy komendy <a href="http://pl.php.net/manual/en/function.phpinfo.php"><em>phpinfo</em></a>. Nie będę opisywał jak to dokładnie zrobić, gdyż osoby które powinny zwrócić na to uwagę doskonale wiedzą jak to zrobić, i jakich rozszerzeń potrzebują.</p>
<h4>Transfer danych</h4>
<p>Nie chodzi tutaj o jego ilość, która nawiasem mówiąc też jest ważna, ale raczej o procedury postępowania w sytuacji jego przekroczenia. Warto zorientować się czy w takiej sytuacji dostęp do naszej strony zostanie odcięty czy też może przyjdzie nam zapłacić za nadmiarowego dane, a jeśli tak to ile. Tego typu informację powinniśmy znaleźć w ofercie dostawcy usług bądź też w regulaminie.</p>
<h4>Podsumowanie</h4>
<p>Jeśli nie chcemy tracić niepotrzebnie nerwów, to radzę wystrzegać się ofert z Allegro gdzie w 1/10 ceny oferowane jest to co znajdziemy u firm profesjonalnie zajmujących się hostingiem. Z pozoru oferta może się niczym nie różnić, ale jeśli przyjrzyjmy się jej pod kątem w/w parametrów, to prawda wyjdzie na jaw.</p>
<p><img class="alignright size-thumbnail wp-image-201" title="RJ-45" src="http://www.bbproject.net/wp-content/uploads/2010/01/rj45-160x100.jpg" alt="" width="160" height="100" />Oczywiście nie tylko osoby oferujące tego typu usługi w serwisie Allegro będą nas kusić naciąganymi ofertami, tak samo również i tam znajdą się produkty wysokiej jakości.</p>
<p>Przedstawiona lista wynika z moich własnych doświadczeń z serwerami wirtualnymi oraz usługodawcami trudniącymi się tym fachem. Mam nadzieję, iż pomogłem wskazać z pozoru nieuzasadnione różnice cenowe między podobnymi ofertami, jak i rozwiałem wątpliwości osób wahających się przed zakupem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/03/na-co-zwrocic-uwage-przy-kupowaniu-hostingu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Master Post Advert &#8211; reklama na blogu</title>
		<link>http://www.bbproject.net/2010/02/master-post-advert-reklama-na-blogu/</link>
		<comments>http://www.bbproject.net/2010/02/master-post-advert-reklama-na-blogu/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 13:30:44 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[reklama]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wtyczka]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=239</guid>
		<description><![CDATA[Jeśli korzystasz w WordPress&#8217;a i chciałbyś w prosty sposób wyświetlić banner reklamowy między zajawką a rozwinięciem posta, to zapraszam do wypróbowania wtyczki mojego autorstwa &#8211; Master Post Advert. Dzięki niej w bardzo prosty sposób dodasz dowolną reklamę do swojego bloga. Wszystko co musisz zrobić to zainstalować wtyczkę, aktywować ją oraz skonfigurować w panelu administracyjnym bloga [...]]]></description>
			<content:encoded><![CDATA[<p>Jeśli korzystasz w WordPress&#8217;a i chciałbyś w prosty sposób wyświetlić banner reklamowy między zajawką a rozwinięciem posta, to zapraszam do wypróbowania wtyczki mojego autorstwa &#8211; <a href="http://www.bbproject.net/moje-projekty/inne/master-post-advert">Master Post Advert</a>. Dzięki niej w bardzo prosty sposób dodasz dowolną reklamę do swojego bloga.</p>
<p style="text-align: center;"><a href="http://www.bbproject.net/wp-content/uploads/2010/02/mpa_01.png"><img class="alignnone size-medium wp-image-240" title="Master Post Advert" src="http://www.bbproject.net/wp-content/uploads/2010/02/mpa_01-256x189.png" alt="" width="256" height="189" /></a> <a href="http://www.bbproject.net/wp-content/uploads/2010/02/mpa_02.png"><img class="alignnone size-medium wp-image-241" title="Master Post Advert" src="http://www.bbproject.net/wp-content/uploads/2010/02/mpa_02-256x189.png" alt="" width="256" height="189" /></a></p>
<p>Wszystko co musisz zrobić to zainstalować wtyczkę, aktywować ją oraz skonfigurować w panelu administracyjnym bloga &#8211; wystarczy skopiować kod reklamy w odpowiednie pole. Aby pobrać wtyczkę przejdź na <a href="http://www.bbproject.net/moje-projekty/inne/master-post-advert">podstronę</a> projektu.</p>
<p>Żywy przykład działania można zobaczyć na każdym poście tego bloga posiadającym rozwinięcie treści. To moje pierwsze, publicznie dostępne rozszerzenie dla WordPress&#8217;a, wszelkie uwagi oraz sugestię będą mile widziane <img src='http://www.bbproject.net/wp-includes/images/smilies/icon_smile.png' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/02/master-post-advert-reklama-na-blogu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
