<?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>Ferrante.pl - simplicity of web programming &#187; PHP</title>
	<atom:link href="http://ferrante.pl/category/tech/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ferrante.pl</link>
	<description>Technologie internetowe, PHP5, Python, Javascript. Publicystyka i kursy w najlepszym wydaniu.</description>
	<lastBuildDate>Thu, 02 Feb 2012 11:27:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Programiści back-end i front-end poszukiwani!</title>
		<link>http://ferrante.pl/frontend/javascript/programista-back-end-i-front-end-poszukiwany/</link>
		<comments>http://ferrante.pl/frontend/javascript/programista-back-end-i-front-end-poszukiwany/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 02:02:30 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=1820</guid>
		<description><![CDATA[Ostatnio mam przyjemność pełnić funkcję doradczą w projekcie, który zrewolucjonizuje segment internetu dla kobiet (tak, sprawdziłem to zdanie 5 razy, rzeczywiście pokażemy, jak to się powinno robić). Sam pomysł jeszcze przed realizacją zyskał polskiego inwestora i jest poparty solidnym biznesplanem. Moim zadaniem jest skomplementować zespół, który potwierdzi nasze duże aspiracje. Premiera na pewno odbije się [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio mam przyjemność pełnić funkcję doradczą w projekcie, który zrewolucjonizuje segment internetu dla kobiet (tak, sprawdziłem to zdanie 5 razy, rzeczywiście pokażemy, jak to się powinno robić). Sam pomysł jeszcze przed realizacją zyskał polskiego inwestora i jest poparty solidnym biznesplanem. Moim zadaniem jest skomplementować zespół, który potwierdzi nasze duże aspiracje. Premiera na pewno odbije się szerokim echem, szczególnie, jeśli chodzi o damską część internautów!</p>
<p>Jak to bywa w takich projektach, <strong>poszukujemy programisty back-end i front-end</strong>, którzy będą stanowić trzon zespołu. Będą oni współpracować ściśle ze mną, więc jeśli czytasz tego bloga i go lubisz, z pewnością będziemy mieć kupę funu. Z chęcią wymienię się poglądami nt. jQuery, CoffeeScript i Rubyego. ;-) Jeśli chciałbyś jednak porozmawiać o COBOLu, zadzwonię do mojego dziadka i spytam, co da się zrobić.</p>
<p>Praca zdalna, preferowani kandydaci z Poznania, gdzie znajduje się siedziba, aczkolwiek jeśli jesteś z innej części Polski nie ma problemu &#8211; mamy doświadczenie w pracy na odległość wspartej odpowiednimi narzędziami. Jeśli zajdzie potrzeba spotkania, wsadzimy Cię do samolotu i umieścimy w komfortowym hotelu. Oprócz tego, oferujemy wejściówki na <a href="http://front-trends.com">Front-Trends</a>, <a href="http://falsyvalues.com">Falsy Values</a> oraz inną wskazaną przez Ciebie konferencję w Polsce.</p>
<p><strong>Od programisty back-end oczekujemy:<br />
</strong></p>
<ul>
<li>znajomości PHP lub Ruby lub Python</li>
<li>znajomości MVC w programowaniu serwerowym</li>
<li>zrealizowania przynajmniej jednego dużego projektu (serwis powyżej 5 tysięcy użytkowników dziennie)</li>
<li>doświadczenia w operacjach na plikach graficznych &#8211; różnego rodzaju resize, crop zdjęć, łączenie kilku obrazków w jeden &#8211; wszystko po stronie serwera
<li>najchętniej bardzo dobrej znajomości Apache, protokołu HTTP, SSL, POP3, IMAP &#8211; szukamy ludzi, którzy potrafią np. postawić serwer Apache (bądź inny) z konkretnymi modułami i hostami wirtualnymi bez zaglądania do tutoriala</li>
<li>dobrej znajomości UNIX &#8211; liczymy na to, że wiesz co to terminal/konsola &#8211; a umiejętność szybkiego dodania hosta, skonfigurowania zmiennych systemowych i szybkiego zareagowania, jeśli aplikacja będzie rzucać błędami nie jest dla Ciebie czarną magią</li>
<li>znajomości tematyki baz danych &#8211; jeszcze nie zdecydowaliśmy czy chcemy noSQL czy jakąś relacyjną bazę danych &#8211; Twój głos &#8211; poparty doświadczeniem &#8211; może okazać się decydujący</li>
<li>brak syndromu not invented here &#8211; liczymy, że jeśli dane narzędzie istnieje i jest dostatecznie rozwinięte, to go wykorzystasz :-)</li>
<li>znajomości systemu wersji Git</li>
</ul>
<p><strong>Od programisty front-end oczekujemy:<br />
</strong></p>
<ul>
<li>znakomitej znajomości CSS i HTML &#8211; <span class="f">&lt;br class=&#8221;clear&#8221;&gt;</span> to dla Ciebie powód do wyłączenia strony i miesięcznej depresji, wiesz na czym polega semantyka kodu, nie nadużywasz atrybutów &#8222;id&#8221; oraz wiesz, jak układać nagłówki w dokumencie, by &#8222;się walidowało&#8221;</li>
<li>dobrej znajomości JavaScript (wiesz co to <span class="f">.prototype</span>, znasz różnice między ES3 i ES5, i potrafisz wymienić choć kilka, wiesz dlaczego <span class="f">new Array</span> jest złe oraz jakie wady ma jQuery)</li>
<li>aktualnej wiedzy o CSS3 &#8211; jeśli animację w JS da się zastąpić CSS transitions bądź CSS animations &#8211; zrobisz to natychmiast, podobnie z gradientami czy specjalnymi kształtami</li>
<li>wiedzy nt. css sprites</li>
<li>znajomości &#8211; niekoniecznie praktycznej &#8211; nowości w HTML5</li>
<li>wiedzy, jaka jest różnica pomiędzy tym, jeśli wsadzisz pliki .js do <span class="f">&lt;head/&gt;</span> a do <span class="f">&lt;body/&gt;</span></li>
<li>że nie musi lubić, ale wie, co to responsive design</li>
<li>znajomości systemu wersji Git</li>
</ul>
<p>Rozliczamy się na umowę o dzieło/fakturę.</p>
<p>Zainteresowany? Daj znać pod <span class="f"><a href="mailto:kontakt@ferrante.pl">kontakt@ferrante.pl</a></span>. W pierwszej kolejności rozpatrzymy projekty na GitHubie, a potem linki do innych zrealizowanych projektów i CV.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/programista-back-end-i-front-end-poszukiwany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Front-Trends: Call for volunteers</title>
		<link>http://ferrante.pl/frontend/javascript/znasz-html5-css3-i-wordpressa-zdobadz-wejsciowke-na-front-trends/</link>
		<comments>http://ferrante.pl/frontend/javascript/znasz-html5-css3-i-wordpressa-zdobadz-wejsciowke-na-front-trends/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 23:49:42 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=1675</guid>
		<description><![CDATA[Dear Front-Enders, Front-Trends conferences are hobby-driven events organized for the community. They cost a lot of money and time, and are not organized for profit. For these reasons we need your help with organizing this amazing event. If you become a volunteer, you will get a free Front-Trends ticket! Today we&#8217;re asking for your help [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Front-Enders,</p>
<p>Front-Trends conferences are hobby-driven events organized for the community. They cost a lot of money and time, and are not organized for profit.</p>
<p>For these reasons we need your help with organizing this amazing event. If you become a volunteer, you will get a free Front-Trends ticket!</p>
<p>Today we&#8217;re asking for your help with the FT new website design implementation. If you&#8217;re good in HTML5 and CSS3, know how to prepare a WordPress theme, and have some free time in the upcoming weeks &#8212; drop us a line at <a href="mailto:contact@front-trends.com">contact@front-trends.com</a>!</p>
<p><strong>In Polish:</strong></p>
<p>Wspólnie z <a href="http://czerski.info">Pawłem Czerskim</a> chcielibyśmy, aby <a href="http://lanyrd.com/2012/ft2012/">następna edycja konferencji Front-Trends</a> powstała też w jakiejś mierze dzięki pomocy zainteresowanych losami community front-end developerów, gotowych wesprzeć nas (konferencję organizujemy w wolnym czasie i nie mamy z niej żadnych profitów finansowych) i całą polską społeczność front-end, jak to ma miejsce przy okazji innych tego typu konferencji.</p>
<p>Jedną z okazji, by nam pomóc i bezpłatnie dostać się na <a href="http://lanyrd.com/2012/ft2012/">Front-Trends 2012</a> może być złożenie nowego designu FT przy pomocy HTML5 i CSS3 i zrobienie z niego theme&#8217;a w WordPressie. Jeśli jesteś dyspozycyjny (chcielibyśmy, by całość zajęła Ci maksymalnie kilka dni), znasz się na semantycznym kodzie i wiesz do czego służą CSS3 Animations, a na <span class="f">&lt;br class=&#8221;clear&#8221; /&gt;</span> reagujesz śmiechem, to jest to dobra okazja, byś zgarnął miano wolontariusza Front-Trends i cieszył się dwoma świetnie spędzonymi dniami konferencji wśród najlepszych front-end developerów i designerów. Przeglądarki, na których ma działać strona to najnowszy Firefox, Chrome, Safari oraz IE9+.</p>
<p>Zgłoszenia przyjmujemy pod adresem <a href="mailto:contact@front-trends.com">contact@front-trends.com</a>. Podrzućcie swoje świeże portfolio!</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/znasz-html5-css3-i-wordpressa-zdobadz-wejsciowke-na-front-trends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ludzie Front-Endu w Polsce</title>
		<link>http://ferrante.pl/frontend/javascript/ludzie-frontendu/</link>
		<comments>http://ferrante.pl/frontend/javascript/ludzie-frontendu/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 13:39:41 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ludzie Front-Endu]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=1060</guid>
		<description><![CDATA[Będąc w dużym stopniu zainspirowany cyklem wywiadów Chrisa Heilmanna pt. People of HTML5 postanowiłem zrobić coś podobnego w Polsce. Uważam, że mamy kilkanaście, a może kilkadziesiąt ciekawych postaci, które zasługują na przybliżenie ich sylwetek, tego co robią i co myślą. Kto może zainspirować m.in. początkujących webdeveloperów, jak nie ludzie, którzy coś osiągnęli, aktywnie działają, a [...]]]></description>
			<content:encoded><![CDATA[<p>Będąc w dużym stopniu zainspirowany cyklem wywiadów <a href="http://www.wait-till-i.com/">Chrisa Heilmanna</a> pt. <a href="http://hacks.mozilla.org/category/people-of-html5/">People of HTML5</a> postanowiłem zrobić coś podobnego w Polsce. Uważam, że mamy kilkanaście, a może kilkadziesiąt ciekawych postaci, które zasługują na przybliżenie ich sylwetek, tego co robią i co myślą. Kto może zainspirować m.in. początkujących webdeveloperów, jak nie ludzie, którzy coś osiągnęli, aktywnie działają, a z ich opinią nie liczy się wyłącznie ich szef, ale i światowe/polskie community?</p>
<p>Ludzie Front-Endu w Polsce będą więc przedstawiać ludzi ciekawych, nieszablonowych, ale mających na pewno dużą wiedzę i dar inspirowania innych. Wierzę, że cykl ten przekona Was, że w Polsce tkwi nieodkryty potencjał. Ponadto, co jeszcze ważniejsze, w dobie HTML5 ponownie standardy sieciowe stają się nadrzędnym hasłem, spinającym cały front-end klamrą. Warto wiedzieć, co nas czeka.</p>
<p>Forma wywiadów cały czas się kształtuje, niewykluczone że finalnie będzie to video/audio.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/ludzie-frontendu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Front-Trends 2010 &#8211; konferencja, jakiej w Polsce nie było</title>
		<link>http://ferrante.pl/frontend/javascript/front-trends-2010-konferencja-jakiej-w-polsce-nie-bylo/</link>
		<comments>http://ferrante.pl/frontend/javascript/front-trends-2010-konferencja-jakiej-w-polsce-nie-bylo/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 08:39:27 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[W sieci...]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=736</guid>
		<description><![CDATA[Wielkie wydarzenie w świecie polskiego i wschodnioeuropejskiego front-endu. Z inicjatywy Pawła Czerskiego i Damiana Wielgosika oraz firmy Frontend Force, 21-22 października br. w Warszawie odbędzie się konferencja Front-Trends 2010. Największe światowe gwiazdy JavaScript, CSS3 i HTML5 przyjadą do stolicy Polski podzielić się swoją wiedzą i doświadczeniem. Wśród nich między innymi Douglas Crockford, Peter-Paul Koch, Paul [...]]]></description>
			<content:encoded><![CDATA[<p>Wielkie wydarzenie w świecie polskiego i wschodnioeuropejskiego front-endu. Z inicjatywy Pawła Czerskiego i Damiana Wielgosika oraz firmy <a href="http://frontendforce.com">Frontend Force</a>, <strong>21-22 października br. w Warszawie</strong> odbędzie się konferencja <a href="http://front-trends.com">Front-Trends 2010</a>. Największe światowe gwiazdy JavaScript, CSS3 i HTML5 przyjadą do stolicy Polski podzielić się swoją wiedzą i doświadczeniem. Wśród nich między innymi <strong>Douglas Crockford, Peter-Paul Koch, Paul Bakaus,</strong> czy <strong>Dmitry Baranovskiy</strong>.</p>
<p>Można powiedzieć, że marzenia się spełniają. Długo zapowiadana niespodzianka stała się faktem. Szykuje się <strong>największe w tej części Europy</strong> święto dla wszystkich ludzi odpowiedzialnych za kształt Internetu.</p>
<p>Niniejszym zapraszam na stronę informacyjną konferencji &#8211; <a href="http://front-trends.com">Front-Trends.com</a>. Jak dotąd, udało się nam zebrać samą śmietankę w postaci <strong>naukowców</strong>, <strong>ewangelizatorów</strong> i <strong>twórców popularnych frameworków</strong>. Ludzi, którzy kreują światowy web. Już wkrótce kolejne, równie gorące nazwiska!</p>
<p>Oficjalna strona wydarzenia ma obecnie charakter wyłącznie informacyjny. Identyfikacja wizualna wraz logo i pełną wersją strony (w tym płatnościami) pojawią się <strong>już niedługo</strong>. Jednocześnie zapraszamy na <a href="http://twitter.com/fronttrends">Twittera</a> oraz <a href="http://fronttrends.blip.pl">Blip</a> po najnowsze wiadomości.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/front-trends-2010-konferencja-jakiej-w-polsce-nie-bylo/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Wzorzec MVC w PHP</title>
		<link>http://ferrante.pl/frontend/php/wzorzec-mvc-w-php/</link>
		<comments>http://ferrante.pl/frontend/php/wzorzec-mvc-w-php/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 18:24:54 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2008/08/30/wzorzec-mvc-w-php/</guid>
		<description><![CDATA[Prędzej czy później, podczas przygody z programowaniem stron WWW natkniemy się na hasło MVC. Co to znaczy, o co chodzi? Odpowiedzmy sobie na te i kilka innych pytań na podstawie PHP. MVC to nic innego, jak skrót od Model View Controller. Jest to wzorzec projektowy (a więc zbiór pewnych reguł, według których budowane są aplikacje [...]]]></description>
			<content:encoded><![CDATA[<p>Prędzej czy później, podczas przygody z programowaniem stron WWW natkniemy się na hasło MVC. Co to znaczy, o co chodzi? Odpowiedzmy sobie na te i kilka innych pytań na podstawie PHP.<span id="more-107"></span></p>
<p>MVC to nic innego, jak skrót od <strong>Model View Controller</strong>. Jest to wzorzec projektowy (a więc zbiór pewnych reguł, według których budowane są aplikacje na całym świecie), który cieszy się bardzo dużą popularnością wśród webdeveloperów.</p>
<p>Nie wiem, jak dotąd projektowałeś swoje aplikacje PHP. Jeśli robiłeś to strukturalnie, w oparciu o funkcje, ten artykuł raczej nie jest dla Ciebie &#8211; co prawda można użyć MVC w podejściu strukturalnym, byłaby to jednak w pewnym sensie kpina ze sztuki. Kod strukturalny w PHP jest, może już to gdzieś słyszałeś, niczym źle przyrządzone spaghetti &#8211; wygląda, jak nie wiadomo co i w dodatku ucieka z talerza.</p>
<p>Jeśli z kolei znasz i wiesz na czym polega programowanie obiektowe, mamy o czym ze sobą rozmawiać. Zacznijmy od teorii.</p>
<p>Z reguły proste aplikacje w PHP wyglądają tak, że sprawdzany jest adres wpisany do przeglądarki (na podstawie <span class="f">$_GET</span>, bądź innych właściwości z <span class="f">$_SERVER</span>), potem <em>includowane</em> są potrzebne pliki w zależności od pozyskanych danych. Absolutne podstawy podstaw.</p>
<p>Stosując MVC nie możemy opierać się, jak to zwykle bywa w tradycyjnym podejściu, tylko  na jednym pliku, np. <em>index.php</em>, w którym mieszamy kod prezentacji (np. HTML) i logikę biznesową (dane np. z MySQL). </p>
<p>Działa to  zupełnie inaczej, a mianowicie mamy 3 główne elementy aplikacji, gdzie każda odpowiedzialna jest tylko za jedną rzecz. Są nimi:</p>
<ul>
<li><strong>Controller</strong> steruje wszystkim tym, co dzieje się podczas uruchamiania danej akcji. Np. podczas wywołania <em><strong>index.php?controller=news&#038;id=55</strong></em>. </p>
<p>Przykładowo, jeśli dodasz np. nowego usera do bazy, to kontroler zdecyduje, że po tej czynności przeniesiony zostaniesz np. do edycji profilu. Kontroler to mózg sterujący całym wywołaniem strony. W pliku kontrolera wybierasz, z którego modelu (a więc pliku odpowiedzialnego za pobieranie danych &#8211; może to być baza danych, plik, cokolwiek) weźmiesz treść dla strony, a także jak ją wyświetlisz (czyli który widok Cię interesuje).</li>
<li><strong>Model</strong> zajmuje się tylko i wyłącznie pracą na danych. </li>
<li><strong>Widok (View)</strong> zajmuje się tylko i wyłącznie wyświetlaniem danych. </li>
</ul>
<p>I tak, dobrą praktyką jest umieszczanie kontrolerów w folderze np. <em>/controllers</em>, widoków w <em>/views</em>, a modeli w <em>/models</em>. W ten sposób mamy <strong>jasny i prosty</strong> podział naszej aplikacji.</p>
<p>Jeśli więc uruchomimy przykładowo stronę <strong><em>index.php?controller=news&#038;param=55</em></strong>, według MVC powinny dziać się następujące rzeczy:</p>
<ul>
<li>
<div class="i">Dzięki takiemu parsowaniu adresów możemy łatwo zarządzać i dołączać kontrolery, które będą stanowić serce aplikacji. Po co stosować <em>switch</em> czy <em>if</em> do sprawdzania, co zostało wpisane w pole adresu, skoro możemy od razu, jeśli takowy istnieje, dołączyć stosowny plik.</div>
<p>Funkcja/Klasa odpowiedzialna za parsowanie adresu (np. Router) pobiera go i na podstawie konfiguracji stwierdza, które słowo/zmienna w adresie oznacza kontroler, a które parametry doń przekazywane. Posiłkując się powyższym URL, kontrolerem będzie słówko <span class="f">news</span>, a parametrem <span class="f">55</span>.</p>
<p>Następnie, na podstawie uzyskanych danych, <em>includujemy</em> potrzebne pliki. Jak już się przekonaliśmy, potrzebny nam jest kontroler. Sprawdzamy więc, czy w folderze, który umownie wybraliśmy (<em>controllers</em>) znajduje się plik news.php (tak, <em>news</em> pochodzi z adresu strony).</li>
<li>Następnie, mając załadowany kontroler, uruchamiamy jego <em>defaultową</em> metodę/funkcję, bo oprócz nazwy kontrolera nie mamy niestety nazwy żadnej jego akcji, którą moglibyśmy wywołać (gdyby adres miał postać <em><strong>index.php?controller=news&#038;action=delete&#038;id=55</strong></em>, można by posłużyć się zmienną <em>$_GET['action']</em> i uruchomić coś takiego: <span class="f">$controller->$_GET['action']($_GET['id'])</span>. W takim razie używamy $controller->index(), bądź coś podobnego &#8211; wszystko zależy od konfiguracji.
<p>Nie muszę chyba też przypominać, że dane $_GET należy przefiltrować pod kątem złośliwych ataków. Z reguły robi to klasa odpowiedzialna za parsowanie adresu, bądź specjalna klasa obsługująca dany request (wywołanie adresu) pod kątem danych przekazanych przez użytkownika.</li>
</ul>
<p>Od strony kodu, przykładowe wywołanie MVC wygląda następująco:</p>
<pre><code>
//<strong>index.php</strong>

$controller = Router::getController();
$controller = new $controller;
$action = Router::getAction();

$controller->$action(Router::getParams());</code></pre>
<pre><code>//<strong>controllers/news.php</strong>

class news_Controller extends Controller
{
	public function index($params)
	{
		$model = Router::getModel(); // // pobierze Model
		$model = new $model;

		$view = Router::getView(); // pobierze Widok
		$view = new $view; 

		$data = $model->getData($params); // pobiera dane z Modelu
		$view->setData($data); // przekazuje dane do Widoku, by ten mógł je wyświetlić
		$view->Render(); // wyświetli stronę
	}
}
</code></pre>
<p>Zalety MVC:</p>
<ul>
<li>Oddzielenie logiki biznesowej od warstwy prezentacji. Nie mieszamy znaczników HTML z zapytaniami SQL czy innymi konstrukcjami, nie mającymi ze sobą nic wspólnego.</li>
<li>Przejrzystość aplikacji</li>
<li>Łatwość rozbudowy</li>
<li>Duża konfigurowalność</li>
<li>MVC narzuca określony styl kodowania, ze strukturą katalogów włącznie, co w przypadku PHP ma duże znaczenie</li>
<li>Łatwość utrzymania aplikacji</li>
<li>i wiele innych</li>
</ul>
<p>Artykuł ten to tylko zalążek tego, co można by powiedzieć o MVC. Postanowiłem przedstawić temat powierzchownie, ale na tyle wystarczająco, aby można było łatwo dowiedzieć się, z czym to, przysłowiowo, się je.</p>
<p>Kto wie, jeśli zainteresowanie tematem będzie duże, spróbuję rozbudować materiał, tworząc tutorial, <em>jak zbudować framework oparty o MVC</em>. Decyzja należy do Was.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/php/wzorzec-mvc-w-php/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Nieznośne boty a logowanie</title>
		<link>http://ferrante.pl/frontend/php/nieznosne-boty-a-logowanie/</link>
		<comments>http://ferrante.pl/frontend/php/nieznosne-boty-a-logowanie/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 22:14:18 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2008/06/21/nieznosne-boty-a-logowanie/</guid>
		<description><![CDATA[Jakiś czas temu zostałem zapytany, jak zabezpieczać się przed atakami botów. Chodziło konkretnie o notorycznie nękany przez nie skrypt logowania, istota problemu związana jest jednak nie tylko z nim, dlatego postanowiłem podsumować kilka przydatnych faktów. Przede wszystkim, wszelkie formularze powinny być uczulone na odpalanie ich z zewnątrz. Sprawdzenie zmiennej $_SERVER['HTTP_REFERER'] przy weryfikacji danych pochodzących z [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu zostałem zapytany, jak zabezpieczać się przed atakami botów. Chodziło konkretnie o notorycznie nękany przez nie skrypt logowania, istota problemu związana jest jednak nie tylko z nim, dlatego postanowiłem podsumować kilka przydatnych faktów.<span id="more-106"></span></p>
<p>Przede wszystkim, wszelkie formularze powinny być uczulone na odpalanie ich z zewnątrz. Sprawdzenie zmiennej <span class="f">$_SERVER['HTTP_REFERER']</span> przy weryfikacji danych pochodzących z formularzy powinno być jednym z pierwszych naszych kroków. Chodzi bowiem o to, aby właściwość ta była zawsze niepusta i równa adresowi strony, z której wysyłany jest formularz:</p>
<pre><code>if (isset($_SERVER['HTTP_REFERER']) &#038;&#038; 'domena.com/login' == str_replace(array('http://', 'www.', 'https://'), '', $_SERVER['HTTP_REFERER'])) { echo 'Wszystko gra'; };</code></pre>
<p>Podobny kod odsieje domorosłych autorów botów i skryptów &#8222;hakujących co się da!!!!1111jeden&#8217;, nie załatwi jednak na poważnie problemu, bowiem nagłówek <em>referer</em> można łatwo zmodyfikować przy requeście HTTP. Idziemy dalej.</p>
<p>Nim dopuścimy do porównania danych zawartych w bazie z tymi z formularza, sprawdźmy, czy dany, potencjalny bot obsługuje system sesji. Zakładając, że mamy stronę <em>login.php</em> (zawierająca formularz), stwórzmy zmienną sesji i zapiszmy ją w ukrytym elemencie formularza:</p>
<pre><code>$_SESSION['hidden_value'] = rand(0, 100);</code></pre>
<pre><code>&lt;input type="hidden" name="something" value="&lt;?=$_SESSION['hidden_value']?&gt;" /&gt;</code></pre>
<p>Sprawdźmy teraz, po wysłaniu danych formularza, czy zmienne sesyjne będą równać się danym z tablicy <span class="f">$_POST</span>:</p>
<pre><code>if ($_SESSION['hidden_value'] == $_POST['something']) { echo 'Droga wolna'; }</code></pre>
<p>Ukryte elementy formularza można zastosować także nieco inaczej. Osobiście bardzo sobie cenię ten sposób, ponieważ pozwala odsiać w zasadzie wszystkie boty, o ile nie prowadzimy witryny pokroju <a href="http://yahoo.com" title="Microsoft gotchaaaaaa u!">yahoo.com</a> ;-). Cała zabawa polega na ustawieniu w pliku z formularzem dodatkowego pola typu <span class="f">text</span> z pustą wartością:</p>
<pre><code>&lt;input type="text" name="something_other" value="" /&gt;</code></pre>
<p>Dodatkowo ukrywamy takie pole CSSem, stosując <em>display: none;</em>.</p>
<p>Jak wiemy, większość botów wypełnia automatycznie wszystkie pola formularza i natychmiastowo wysyła dane. Boty to komputery, dla niektórych &#8211; niestety, nie mają oczu i nie umawiają się na randki. Dlatego też bot nie zauważy, paradoksalnie, że dane pole jest ukryte przez CSS i potraktuje je jako zwykły element formularza, który trzeba wypełnić ofertą powiększenia tego i owego. Wystarczy więc sprawdzić, czy dane pole zostało wypełnione &#8211; jeśli tak, mamy do czynienia z botem bądź użytkownikiem przeglądarki tesktowej (bez CSS), który także zobaczy dodatkowe pole:</p>
<pre><code>if (!empty($_POST['something_other'])) { exit(); die(); }</code></pre>
<p>Od razu możemy wychwycić IP takiego delikwenta i na wszelki wypadek zapisać go do bazy, dzięki czemu, w większości będziemy mieć kompetentną listę botów, które należy zbanować.</p>
<p>Co więcej, tego typu puste pola możemy generować losowo, tak, by bot nie rozszyfrował nas, poznając stały atrybut <em>name</em>. Można więc losować <em>name</em> elementu <em>text</em> i zapisać go do sesji. Wtedy mamy o wiele więcej pewności, że bot nie pozna za szybko naszych intencji.</p>
<p>To tylko kilka przykładów, jak można zrobić detekcję botów. Na widnokręgu zagadnienia są: sprawdzanie włączonego JS (tutaj z kolei ryzykujemy użytkownikami z wyłączoną obsługą tego języka), odpowiednie <em>chmody</em> dla plików, autoryzacja HTTP, SSL, i wszelkiego rodzaju CAPTCHA (przy dodawaniu kontentu w miarę sprawne, choć do logowania bezużyteczne i wkurzające). Inna sprawa to także bezpieczna walidacja danych, temat ten jednak wypada omówić nieco szerzej, w bardziej rozległym kontekście. Z chęcią poznam też Wasze sposoby na tego typu ataki.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/php/nieznosne-boty-a-logowanie/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Mamo! Umiem PHP!</title>
		<link>http://ferrante.pl/frontend/php/mamo-umiem-php/</link>
		<comments>http://ferrante.pl/frontend/php/mamo-umiem-php/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 21:16:56 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2007/07/07/mamo-umiem-php/</guid>
		<description><![CDATA[Język PHP jest stosunkowo łatwy i pozwala dość szybko osiągnąć pożądane efekty. Napiszemy w nim prawie każdą aplikację webową, a bogata oferta hostingu na świecie, jak i w Polsce, obsługującego ten język, bez problemu pozwoli nam publikować w Internecie nasze aplikacje. PHP jest najbardziej rozpowszechnionym językiem, w którym klepiemy swoje strony, co za tym idzie [...]]]></description>
			<content:encoded><![CDATA[<p>Język PHP jest stosunkowo łatwy i pozwala dość szybko osiągnąć pożądane efekty. Napiszemy w nim prawie każdą aplikację webową, a bogata oferta hostingu na świecie, jak i w Polsce, obsługującego ten język, bez problemu pozwoli nam publikować w Internecie nasze aplikacje. PHP jest najbardziej rozpowszechnionym językiem, w którym <em>klepiemy</em> swoje strony, co za tym idzie wykształciły się różne subkultury piszących w PHP.<span id="more-52"></span></p>
<h3>It&#8217;s a kind of magic</h3>
<p>Początkujący, z reguły 12-14 latek, który zaczynał pracę w tym biznesie, tworząc stronę internetową swojego gimnazjum/podstawówki. Początkującego możemy poznać po podobnym kodzie:</p>
<pre><code>&lt;?php

// pobieramy do zmiennej $strona zawartość z tablicy $_GET [rys. 20]
$strona = $_GET['strona'];

if ($strona == "news")
{
	print ("&lt;html&gt;&lt;body&gt;");
	header_wklej();
	include ("".$strona."php");
	print("&lt;table&gt;&lt;tr&gt;&lt;td&gt;All rights reserved!&lt;/td&gt;&lt;td&gt;Copyright 2007&lt;/td&gt;&lt;td&gt;Webmaster: Zenek12, Powered By PHP Zenek CMS&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;");
}
function header_wklej()
{
	print("&lt;head&gt;&lt;title&gt;Strona Zenka&lt;/title&gt;&lt;/head&gt;");
}
?&gt;</code></pre>
<p>Jak widać panuje tutaj pełna dowolność, ale i świadomość prestiżu, tak więc nie dziwi wykonana w dość ergonomiczny sposób stopka. Konieczne jest też nazwanie swojego kodu CMSem, bo to ostatnio dość popularne słowo. Kto nie ma CMS&#8217;a, jest zacofany i musi dużo nadrobić, by odzyskać szacunek prawdziwych webmasterów w branży.</p>
<p>Złote dziecko polskiej informatyki z reguły, po napisaniu swojego pierwszego skryptu, idzie na jakieś forum, bądź listę dyskusyjną. Z reguły też zostaje zbanowane, bądź ostrzegane przez adminów 2 godziny po zaprezentowaniu swoich niebanalnych umiejętności. Przygoda dobiega końca, kiedy ktoś wytknie jakiś błąd, bądź lukę. Wtedy najczęściej <a href="http://forum.php.pl/index.php?s=&#038;showtopic=71955&#038;view=findpost&#038;p=374010">uwidacznia się</a> lekkie zdenerwowanie, wszak rozmówcy nie wiedzą jeszcze, że mają do czynienia z przyszłym Billem Gatesem.</p>
<h3>PHP master</h3>
<p>Lata mijają, a kursy ze stronek znalezionych w Googlach już nie satysfakcjonują. Trzeba kupić jakąś książkę, aczkolwiek PHP masterowi nie chce się za bardzo czytać recenzji (przecież ma dyslekcję!), więc kupuje pierwszą lepszą z <em>PHP</em> w tytule. W <a href="http://helion.pl">helionie</a> akurat jest promocja na wszystkie książki o PHP, a najbardziej <em>sexy</em> okazała się <span class="f">PHP &#8211; programowanie gier</span>. PHP master to człowiek obyty i na poziomie, więc wie w co gra się aktualnie na podwórku, a jak ludzie z dzielni dowiedzą się, że robi gierki w PHP, tak, tak, tym PHP, to już w ogóle <em>kosmos</em>.</p>
<p>Książka przyszła do domu, a rodzina zdębiała. <em>Zenek kupił sobie książkę, no bój się Boga, ale niech dziecko czyta, byleby przed tym komputerem tak nie siedziało&#8230;</em> &#8211; dało się zasłyszeć w domowych czeluściach. Zenek jednak nic nie zrozumiał z publikacji, w dodatku nie napisali o grafice, więc dbając o ład i elegancję pokoju, wsadził pod biurko wielki jak kloc podręcznik do PHP.</p>
<p>Na szczęście, tu się zagadało, tam się zagadało, na Gie-Gie się było, z tym i tym się rozmawiało, <em>to i skill przyszedł</em>. Czas na upgrade strony domowej Zenka!</p>
<pre><code>&lt;?php

	$strona = $_GET['strona'];

	if ($strona == 'news')
	{
		mysql_connect('localhost', 'root', 'root');
		mysql_select_db('niusy');

		$query = "SELECT * FROM ".$strona." ;";
		$result = mysql_query($query);
		while ($row = mysql_fetch_array($result))
		{
			print("&lt;H4&gt;".$row['tytulnewsa']."&lt;/H4&gt;&lt;P&gt;".$row['trescnewsa']."&lt;/P&gt;");
		}
		print("&lt;table&gt;&lt;tr&gt;&lt;Td&gt;Homepage by Zenek&lt;/td&gt;&lt;td&gt;PHP powered, MySQL in&lt;/td&gt;&lt;td&gt;stronę wygenerowano w 0,00001".rand(1, 10)."sek&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;");
	}
?&gt;
</code></pre>
<p>MySQL wrzucony na ruszt, ale jak widać najpiękniejszy jest minimalizm, więc po co używać go w nadmiarze. Poza tym, warto wspomnieć o szybkości wygenerowania strony. Zenek robił testy odpalając stoper na komórce i generalnie wynik oscylował wokół 0,00001 sekundy, więc jak widać skrypt pędzi jak Robert Kubica na szybkim okrążeniu.</p>
<h3>Profil informatyczny</h3>
<p>Na czas 3. klasy gimnazjum PHP rzucamy ewidentnie do kosza. Musimy się dostać do wymarzonego liceum, a żeby to zrobić nie wystarczy napisać na teście gimnazjalnym <span class="f">exit();</span>. Po jako takim zakończeniu roku przychodzi wreszcie czas na działalność w branży. Od kumpla Zenek dostaje kilka adresów blogasków, szczególnie podoba mu się blog <a href="http://room-303.com/blog">Patrysa</a>, bo koleś ma fajną chustę i twierdzi, że teraz programuje w Pythonie, bo PHP jest dla lamerów. Na Zenku deklaracja ta robi kolosalne wrażenie. Odtąd czyta tego bloga namiętnie, chociaż nic nie rozumie.</p>
<p>Wakacje to także czas na zarobek. W <em>Wiadomościach</em> zestawili pensje i wychodzi z tego, że informatyk zarabia najwięcej. Zenek stwierdza z ulgą, że jego wybór ścieżki życiowej był słuszny. Teraz trzeba zarobić co nieco na nowego kompa. Ale kto by tam szukał czegoś na mieście? Na Webhelpie jakieś K2 szuka webdeveloperów z doświadczeniem. Zenon ma trochę obaw, bo nie wie co to SVN i OOP, ale 3-letnie doświadczenie zawodowe powinno zrobić wrażenie na włodarzach firmy. Nie zrobiło, młodziak czekał 3 tygodnie na e-maila, ale nic z tego. Cóż, nie załamujmy się! Ojciec mówił niedawno, że jego znajomy chciałby stronkę&#8230;</p>
<h3>Życie jest nowelą</h3>
<p>Po studium informatycznym, Zenon znalazł robotę jako informatyk w Urzędzie Gminy. Planuje co prawda otworzyć własną firmę wykonującą aplikacje WWW, ale to melodia przyszłości. W końcu dobrze pracuje się na <em>frilansie</em> i aktualizuje swojego blogaska na <a href="http://jogger.pl">joggerze</a>&#8230;</p>
<p>W międzyczasie Zenon dostaje zlecenie od bardzo znanej instytucji zajmującej się wirtualną rozrywką. Szykuje się ostra kasa, bo zdążył sobie przez te kilka lat wyrobić renomę, robi też trochę w grafice, więc zawsze to dodatkowy skill. Po miesiącu ostrego klepania w wolnym czasie, Zenon skasował kilka tysiaków i kupił sobie to i tamto. No i kredyt spłacił. Teraz jego strony wyglądają tak:</p>
<pre><code>
&lt;?php
if ($url_0 == 'galeria' &#038;&#038; is_numeric($url_1)) {

mysql_query("UPDATE `gallery` SET `gallery_views` = `gallery_views` + 1 WHERE `gallery_id` = '$url_1'");
$galeria_sql = mysql_fetch_array(mysql_query("SELECT * FROM `gallery` WHERE `gallery_id` = '$url_1'"));

$start = $galeria_sql['gallery_name_start'];
$koniec_wlas = $galeria_sql['gallery_name_stop'];
$ile = $koniec_wlas-$start+1;
$koniec = $koniec_wlas;

print '&lt;div class="tekst"&gt;
&lt;h4&gt;&lt;span class="floatr"&gt;&lt;img src="'.$obrazki.'/plus3.gif" alt="photos" width="5" height="5" class="plus" /&gt; '.$lang['zdjec'].': '.$ile.'&lt;/span&gt;&lt;img src="'.$obrazki.'/ikony/mpg.gif" alt="Galeria" /&gt; &lt;a href="'.$link_glowy.'galeria/'.$galeria_sql['gallery_id'].'/"&gt;'.$galeria_sql['gallery_title'].'&lt;/a&gt;&lt;/h4&gt;
&lt;div class="tresc"&gt;
&lt;table border="0" width="400px" align="center" style="border:1px solid #cccccc" frame="vsides"&gt;&lt;tr&gt;&lt;ul class="zdjecia"&gt;'."\n";
//width="'.($rozmiar[0]).'" height="'.($rozmiar[1]).'" $rozmiar = getimagesize($galeria_sql['gallery_url'].$i.'m.jpg');
for ($i=$start; $i&lt;=$koniec; $i++) {
echo '&lt;td width="100px" align="center" style="padding:5px"&gt;&lt;a href="'.$galeria_sql['gallery_url'].$i.'.jpg" rel="lightbox" title="#'.$i.'" class="slideshow"&gt;&lt;img src="'.$galeria_sql['gallery_url'].$i.'m.jpg" alt="#'.$i.'" /&gt;&lt;/a&gt;&lt;/td&gt;';
if (empty($i%3)) { echo "&lt;/tr&gt;&lt;tr&gt;"; }
}

print '&lt;/table&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;';

if (autoryzacja()) {
if (strstr($uzytkownik_poziom_dostep, 'a')) {
print '&lt;div&gt;&lt;a href="'.$link_glowy.'administracja/galerie/edytuj/'.$galeria_sql['gallery_id'].'/"&gt;&lt;img src="'.$obrazki.'/edytuj.gif" width="15" height="15" alt="Edytuj" /&gt;&lt;/a&gt; &lt;span class="szary"&gt;WyÂ¶wietleń galerii: '.$galeria_sql['gallery_views'].'&lt;/span&gt;&lt;/div&gt;';
}
}
?&gt;</code></pre>
<h3>PHP &#8211; nie dla idiotów!</h3>
<p>Powyższa anegdotka nie jest przypadkiem. Otóż ostatnio zostałem poproszony o poprawki w powyższym skrypcie. To, co ujrzałem, przeszło moje najśmielsze oczekiwania. Musicie wiedzieć bowiem, że ten kawałek kodu pochodzi z bardzo popularnej strony zajmującej się elektroniczną rozrywką. Pan, który to zrobił, a któremu nie chcę psuć renomy, wyciągnął za to pewnie dość spory kawałek banknotów&#8230; Dziś strona co jakiś czas pada, mimo że działa na serwerze dedykowanym z dobrą konfiguracją sprzętową. </p>
<p>A czy Ty zatrudniłbyś Zenka?</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/php/mamo-umiem-php/feed/</wfw:commentRss>
		<slash:comments>67</slash:comments>
		</item>
		<item>
		<title>EditPlus</title>
		<link>http://ferrante.pl/frontend/javascript/27/</link>
		<comments>http://ferrante.pl/frontend/javascript/27/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 16:03:20 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2007/03/11/27/</guid>
		<description><![CDATA[Jak powiadają, są gusta i guściki. Prawda ta objawia się szczególnie, kiedy przychodzi do wskazania najlepszego edytora plików HTML, PHP i innych. Każdy z developerów posiada własne przyzwyczajenia i tym samym naprawdę trudno wyróżnić absolutnie najlepszy program z tej kategorii. Osobiście również nie zamierzam zachwalać w niebiosa produktu wymienionego w tytule, aczkolwiek spróbuje go zarekomendować [...]]]></description>
			<content:encoded><![CDATA[<p>Jak powiadają, są <em>gusta i guściki</em>. Prawda ta objawia się szczególnie, kiedy przychodzi do wskazania najlepszego edytora plików HTML, PHP i innych. Każdy z developerów posiada własne przyzwyczajenia i tym samym naprawdę trudno wyróżnić absolutnie najlepszy program z tej kategorii. Osobiście również nie zamierzam zachwalać w niebiosa produktu wymienionego w tytule, aczkolwiek spróbuje go zarekomendować w sposób, na jaki według mnie zasługuje. Lata obustronnej współpracy zobowiązują.<span id="more-27"></span></p>
<p>EditPlus, to, trzeba powiedzieć jasno, program dla bardziej zaawansowanych koderów. Nie znajdziecie w nim wielu gotowych snippetów, tak, jak to miało miejsce w <a href="http://ferrante.pl/2007/03/03/coreeditor/">CoreEditor</a>. Dostępne są za to absolutnie podstawowe, takie jak wstawianie szablonów &lt;script&gt; i tym podobnych. Dobrą wiadomością jest to, że takowe można dodać własnoręcznie. Warto też wspomnieć, że EP nie oferuje edytora WYSIWYG pozwalającego <em>rysować</em> nasze strony.</p>
<p>Biorąc pod uwagę inne edytory, EP wygląda przy nich, jak biedny krewny z Kazachstanu. I, myślę, że o to właśnie tutaj chodzi. EditPlus jest szybki i wydajny. Pozwala zapisać dokumenty w UTF, również z nagłówkiem. EditPlus to fajne formatowanie tekstu &#8211; można zmieniać wielkości liter, zmieniać spacje na tabulatory i odwrotnie. Także kolorowanie składni jest w pełni edytowalne. Można zwijać prosto kod, dzięki <em>code folding</em>. Łatwo odróżnimy taby od spacji, a skróty klawiszowe pozwolą nam szybciej poruszać się po dokumencie i dostępnych opcjach.</p>
<p>Kiedy mówisz <span class="f">szybka edycja kodu</span>, myślisz <span class="f">EditPlus</span>! Program pozwala kompleksowo i błyskawicznie dostać się do konkretnych linii kodu, a jego przejrzystość i, paradoksalnie, archaiczny wygląd stawiają go obok NotePada+ na piedestale prostych i bardzo funkcjonalnych edytorów HTML, CSS, JS, a nawet, używając lekkiego nadużycia, PHP.</p>
<p>EditPlus jest programem płatnym, aczkolwiek warto wypróbować jego 30dniową wersję próbną.</p>
<p>&#8211;> <a href="http://editplus.com">EditPlus</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/27/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>CoreEditor</title>
		<link>http://ferrante.pl/frontend/javascript/coreeditor/</link>
		<comments>http://ferrante.pl/frontend/javascript/coreeditor/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 20:52:19 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2007/03/03/coreeditor/</guid>
		<description><![CDATA[Dawno temu, kiedy stawiałem swoje pierwsze kroki w świecie kodowania stron internetowych, używałem w głównej mierze programu EdHTML. Jak na moje wymagania, był to całkiem sprawny edytor HTML i PHP. Oferował przede wszystkim dość fajne kolorowanie i formatowanie składni, co było dla mnie nieocenionym plusem. Jego wady, jakimi były pamięciożerność i dość niski stosunek efektywności [...]]]></description>
			<content:encoded><![CDATA[<p>Dawno temu, kiedy stawiałem swoje pierwsze kroki w świecie kodowania stron internetowych, używałem w głównej mierze programu <a href="http://pl.wikipedia.org/wiki/EdHTML">EdHTML</a>. Jak na moje wymagania, był to całkiem sprawny edytor HTML i PHP. Oferował przede wszystkim dość fajne kolorowanie i formatowanie składni, co było dla mnie nieocenionym plusem. Jego wady, jakimi były pamięciożerność i dość niski stosunek efektywności do ilości włożonej pracy spowodowały, że całkowicie zapomniałem o programie Karola Wierzchołowskiego. Od tej pory życie umilał mi Edit Plus. Ostatnimi czasy natrafiłem jednak przypadkowo na nowy edytor autora EdHTML &#8211; CoreEditor.<span id="more-19"></span></p>
<p>Kiedy jakiś program zainteresuje mnie czymkolwiek, staram się go przetestować choć przez chwilę. Leniwa ze mnie bestia i z reguły tego typu zabawy kończą się w przeciągu 2-3 minut. Człowiek kliknie tu i tam, by zobaczyć, że nie ma nic nowego i kasuje program z twardego dysku. Z CoreEditor także nie wiązałem większych nadziei, byłem tylko ciekawy, głównie z sentymentu do EdHTML, co takiego oferuje jego oficjalny następca. Tym razem moje <em>&#8222;testy&#8221;</em> zakończyły się po 10 minutach, co jest wręcz niewyobrażalnym wynikiem, jeśli chodzi o moją osobę. Co prawda nie warto się spodziewać długiej listy pochwał, aczkolwiek należy wyróżnić CoreEditor pod paroma względami. </p>
<p>Pamiętam, że w swojej karierze, kiedy jeszcze XHTML był mgnieniem przyszłości, używałem w większości tagów pisanych wersalikami. Po rewolucji, w związku z którą porzucono tego typu pisownię, miałem niemały kłopot z przekonwertowaniem kodu na małe litery. Co prawda mogłem napisać program robiący to za mnie, ale jakoś nigdy do tego nie doszło, przez co większość stron z tamtego okresu pozostawała w swojej archaicznej postaci. Wielka szkoda, że nie było przy mnie CodeEditora. Między innymi właśnie zmiana tagów na xhtmlowe przykuła moją uwagę na dłużej. CoreEditor robi to bardzo sprawnie, jednym kliknięciem możemy poprawić skutki niewiedzy naszych współpracowników, którzy o XHTML nigdy nie słyszeli.</p>
<p>Co jeszcze utkwiło mi w pamięci z okazji kontaktu z edytorem to możliwość zmiany tego typu potworków: <span class="f">align=&#8221;left&#8221;</span> na <span class="f">style=&#8221;text-align: left;&#8221;</span>. Moduł ten jest w wersji beta, więc nie działa jeszcze sprawnie, aczkolwiek sprawił mi miłą niespodziankę.</p>
<p>Poza tym, CoreEditor jest, ku mojemu zdziwieniu, dość &#8222;lekki&#8221; i nie zabiera dużej ilości pamięci. Nie miałem okazji wypróbować go przy pracy z kilkunastoma zakładkami, bo zabraniała tego wersja demo, aczkolwiek przy mniejszej ich ilości było całkiem sympatycznie.</p>
<p>Standardowo, program Karola zawiera mnóstwo snippetów do wielu języków: <em>php, html, js, czy mysql</em>. Dołączone są też manuale i kursy. Plusem jest też domyślnie, świetne kolorowanie składni. Szczególnie w wypadku PHP. Przynajmniej jeśli o mnie chodzi, bardzo mi się podoba. Gdybym zaczynał, miałbym z pewnością słabe pojęcie o zmianie kolorowania składni, więc zaproponowane, defaultowe rozwiązanie tego problemu byłoby mi na rękę.</p>
<p>Myślę, że dla początkujących CoreEditor to świetny kombajn, pozwalający tworzyć dokumenty w wielu rozszerzeniach i systemach kodowania (utf8 ready!). Co prawda jest to program płatny, przez co liczba potencjalnych użytkowników zniwelowała się na starcie o połowę, ale z racji zawodu warto go okiełznać.</p>
<p>&#8211;> <a href="http://coreeditor.pl">CoreEditor</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/frontend/javascript/coreeditor/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

