<?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; Publicystyka</title>
	<atom:link href="http://ferrante.pl/category/life/publicystyka/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>Tue, 27 Jul 2010 19:28:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pożycz 50zł</title>
		<link>http://ferrante.pl/2009/08/31/pozycz-50zl/</link>
		<comments>http://ferrante.pl/2009/08/31/pozycz-50zl/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 21:32:59 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Publicystyka]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=573</guid>
		<description><![CDATA[Ostatnio istną burzę wywołało na Wykopie ogłoszenie z forum internetowego Webhostingtalk. Poszukiwano niewo&#8230; tfu kogoś, kto zrobi silnik a la demotywatory.pl za bagatela 50zł. Temat dla mnie bardziej niż ciekawy z dwóch względów. Pierwszy to taki, że gdzieś tam w tle pojawiły się odwołania do mojego artykułu sprzed dwóch lat &#8211; &#8220;Mamo! Umiem PHP!&#8220;. Drugi, [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio istną <a href="http://www.wykop.pl/link/229300/silnik-ala-demotywatory-pl-za-50zl">burzę</a> wywołało na Wykopie ogłoszenie z forum internetowego <a href="http://webhostingtalk.pl">Webhostingtalk</a>. Poszukiwano niewo&#8230; tfu kogoś, kto zrobi silnik <em>a la</em> <a href="http://demotywatory.pl">demotywatory.pl</a> za bagatela 50zł. Temat dla mnie bardziej niż ciekawy z dwóch względów. Pierwszy to taki, że gdzieś tam w tle pojawiły się odwołania do mojego artykułu sprzed dwóch lat &#8211; &#8220;<a href="http://ferrante.pl/2007/07/07/mamo-umiem-php/">Mamo! Umiem PHP!</a>&#8220;. Drugi, że z tego wszystkiego wynikła dość ciekawa dyskusja, do której chciałbym dorzucić swoje 3 grosze.<span id="more-573"></span></p>
<p>Z komentarzy pod wykopem<a href="#przypis-1" class="hint"><sup>1</sup></a> i z postów na forum płyną dwa (no, może w porywach trzy) wnioski &#8211; tylko młodzież robi kompletne strony za przysłowiową flaszkę (lub paczkę fajek, jeśli to młodzież mniej buntownicza jest), za 50zł nie da się kupić dobrej whisky (tudzież palety sprawdzonego, niemieckiego Marlboro od Tomasza H.) oraz to, że żaden szanujący się programista nie spędzi dwóch tygodni, by zarobić stawkę, jaką może uzyskać za godzinę w dobrej firmie.</p>
<p>Przede wszystkim jednak &#8211; nie przesadzajmy i nie demonizujmy rzeczywistości. Natura, jak kiedyś mądrze powiedziano, lubi równowagę. Zawsze znajdzie się ktoś, kto zrobi serwis za grosze. Takie mamy prawa rynku &#8211; jeden potrzebuje na chleb, drugi na ferrari. Pewnych rzeczy niestety nie można zmienić, mimo że wszelka logika nakazuje, by było tak, a nie inaczej. Poza tym za małe pieniądze pracuje wielu młodych programistów. Bardzo często ktoś, coś tam, kiedyś zakodował, udało się, więc dlaczego nie przyjąć zlecenia? Jasna sprawa, sam tak robiłem. Jakie są jednak konsekwencje niskich cen i małego doświadczenia programistów?</p>
<p>Każda strona internetowa, choćby tylko z księgą gości, to określona funkcjonalność i masa zależności. O ile kiedyś nie doceniałem porównań z budową domu, tak teraz jest to dla mnie sztandarowa analogia. Dom można zbudować na kilka sposobów &#8211; użyć innych &#8211; droższych lub gorszych &#8211; materiałów. Zatrudnić bardziej bądź mniej wykwalifikowanych pracowników. Skorzystać z tańszej lub droższej ekipy budowlanej. I tak dalej. Identycznie jest z programowaniem &#8211; serwer (dzielony hosting, serwer dedykowany?), język (tani w utrzymaniu PHP, potężna JAVA?), baza (darmowy PostgreSQL czy drogi Oracle?). </p>
<p>Często wiele rzeczy można zrobić na kilka sposobów. Z reguły tylko doświadczeni (a więc drożsi i lepsi) programiści wiedzą, jaki wybrać sposób, bo spędzili mnóstwo czasu na kodowaniu i nauce, poznając różne techniki i rozwiązania wielu problemów. Nie od parady wymyślono na studiach specjalizację o dumnej nazwie <em>inżynieria oprogramowania</em>, a osobom, które tworzą programowanie daje się tytuł inżyniera, a potem magistra. Wracając do przykładu z budową domu, drogi kliencie &#8211; komu zleciłbyś coś, co ma Tobie służyć na lata (zapewne także Twoim potomkom)? Młokosom czy doświadczonym budowniczym?</p>
<p>Następny problem to spłycanie prestiżu własnych produktów. Zlecając wykonanie dość skomplikowanej strony za zaniżoną stawkę automatycznie godzimy się na to, że finalny efekt będzie na poziomie deski klozetowej. Jak w każdej branży, dobre usługi kosztują więcej od tych średnich i kompletnie słabych. Nie wiesz, czy można zaufać danej firmie? Spytaj specjalistę bądź znajomego, który ma o tym pojęcie!</p>
<p>Mimo wszystko, popyt na tanie usługi wciąż rośnie. Zawsze znajdą się osoby, które mało zapłacą oraz te, które z przyjemnością mało zarobią. Rodzą się pytania &#8211; jak można zminimalizować rujnowanie trudnego zawodu, jakim jest fach programisty? Czy czasem w głowach nam się nie poprzewracało bo tak naprawdę programowanie nie jest wcale ciężkie i drogie? Jaki wpływ mają tanie usługi na kondycję technologii na świecie (i stron internetowych, jeśli spłycamy problem tylko do webdevelopmentu)?</p>
<p>Odpowiedź na pierwsze pytanie jest łatwa, ale i mało przekonująca. Niestety, pieniądz zawsze wygra z ideami. Możemy ewangelizować, indoktrynować i pouczać. Z większymi lub mniejszymi &#8211; jak to bywa &#8211; skutkami. Czy aby jednak wystarczającymi, kiedy, bądźmy szczerzy, statystyczny klient odpowiada sobie głównie na jedno pytanie: <em>jak dużo mogę zyskać za jak najmniejszą kwotę?</em> Czy wystarczy mu wiadomość, że produkt za 50zł nadaje się do kosza? (<em>przecież działa!</em>). Nie jestem pewien, czy odpowiednią kampanią możemy kogoś przekonać, tym bardziej, że wiele osób kupuje za bezcen z premedytacją (jak bohater wykopowego wątku)! Może więc uderzyć w programistów? Ale co wtedy, kiedy jeden z drugim nie ma co wrzucić do gara? Może jest po prostu za słaby, <em>bo dobrze płatna praca w IT zawsze się znajdzie, a nie mają jej tylko miernoty</em>? Ekhm&#8230;</p>
<p>Ciekawa jest też sprawa gloryfikacji naszego zawodu. Na ten temat można spotkać wiele skrajnych opinii, jednak jako człowiek, który włożył w swoją edukację bardzo dużo wysiłku (oraz godzin przed monitorem i książkami) chciałbym stanowczo zaakcentować, że programista chłonie mnóstwo wiedzy, porównywalnie z lekarzem czy prawnikiem. W dodatku nieprzestanie używa swojego mózgu, wymyśla, kreuje, nie powiela ścieżek i wzorów, choć jak wszędzie, posługuje się pewnymi wzorcami projektowymi i algorytmami. Nasza praca nie polega jednak na banalnym dopasowywaniu elementów! W żadnym wypadku! To godziny żmudnej harówki, ciągłego rozwoju i mnóstwa wyrzeczeń &#8211; dobrze, że jeszcze weekendowych dyżurów nam nie dają&#8230; Programista to zawód ważny i trudny, choć obarczony relatywnie niską skalą ryzyka.</p>
<p>Bagatelizowanie problemu cen, a co za tym idzie powstawanie słabego oprogramowania oceniam jako zagrożenie, choć każdy jest kowalem własnego losu. Dziurawa strona może spowodować wyciek danych naszych klientów lub zablokowanie strony przez internetowych wandali (czy po prostu tzw. script-kiddies), a to tylko pierwsze z brzegu przykłady. Oprogramowanie słabej jakości nie skaluje się, nie można go szybko i tanio rozwijać. Źle napisane aplikacje są mało wydajne, wymagają większych nakładów na sprzęt i utrzymanie. Po prostu nie działają! Sprawiają tylko wrażenie działających!</p>
<p>Wypada poruszyć także temat tych, którzy sprzedają swoje usługi za bezcen. Jak powiedziano, są to w większości młodzi programiści, którzy łączą przyjemne z pożytecznym &#8211; naukę i zarobek. Trzeba sobie powiedzieć jasno, nie da się w 2 lata zdobyć wystarczającej wiedzy (choć pal licho wiedzę, tutaj, przyrzekam, najważniejsze jest doświadczenie i tysiące linijek kodu &#8220;w palcach&#8221;). Jasne, młody programista może stworzyć coś, co działa, nie ma jednak pewnego dystansu do tworzonego przez siebie kodu, nie poznał zbyt wielu technologii i technik, w efekcie jego kod jest generalnie nieefektywny i mało elastyczny, a to tylko dwa z kilkunastu przymiotników, jakie miałem uszykowanych na tę okazję.</p>
<p>Co 16-latek wie np. o <em>Dependency Injection?</em> Uwierzcie, z każdym miesiącem rzeczy, które wcześniej były zbyt skomplikowane stają się banalne, a kod, który napisaliście wcześniej okazuje się zupełnie do kitu. Oczywiście potrzebna jest ciągła praktyka i stosowna edukacja (<em>stety-niestety</em> uczelnia, paradoksalnie, bardzo pomaga w rozwoju programisty, choćby forsując dotąd nieznany przez Ciebie język, który okazuje się strzałem w dziesiątkę!). Z czasem skomplikowaną tablicę nazwiemy dojrzale strukturą danych, a dane podejście wzorcem projektowym. Bez doświadczenia to tylko &#8220;<em>ee no, Ty, jakoś podziałałem tym set_array() i forem i wyszło, hehe, a teraz idę na real, elo</em>&#8220;.</p>
<p>Ciężko jest mi jednoznacznie ocenić, czy nie powinno się brać zleceń w młodym wieku, bo sam takie brałem, mając dziś świadomość, że kod nie był najlepszej jakości. Jednak to, co wyniosłem z moich, nazwijmy to, &#8220;programistycznych przygód&#8221; bardzo doceniam, bo wiem, że dało mi niesamowite podstawy, mimo że &#8211; można by rzec &#8211; bawiłem się w programowanie. Może powinniśmy jednak przenieść w czasie pobieranie pieniędzy za naszą twórczość, skupiając się na oprogramowaniu open source bądź własnych, szkolnych projektach? No właśnie. Czy szkoły poza olimpiadami i zawodami oferują jakiekolwiek możliwości do polepszenia swoich praktycznych umiejętności? Czy młodzież woli dostać dyplom i uznanie, czy też 50 złotowy banknot? Może to już tak musi być, że najpierw młodzi piszą słabe programowanie, które potem poprawia kolejny nowicjusz, kiedy pierwotny autor zahaczył się już o dobrą posadę głównego programisty w dobrym banku? </p>
<p>Czy eliminując problem niskich cen, nie narazilibyśmy się na poniższą zależność?</p>
<blockquote><p>Mało ofert dla słabo doświadczonych programistów -> nikłe możliwości ich rozwoju -> słabi programiści</p></blockquote>
<p>Z kolei teraz, mam wrażenie, wygląda to tak:</p>
<blockquote><p>Niskie ceny -> mierna jakość produktów -> &#8230; -> &#8230; -> dobrzy programiści</p></blockquote>
<p>Pytanie, jak wyglądają proporcje i ilu słabych programistów zostaje wyprodukowanych na końcu tego procesu? Takich pytań jest więcej.</p>
<p>Dyskusja na temat jakości oprogramowania za niską cenę, paradoksalnie, niesie ze sobą wiele aspektów &#8211; finansowych, edukacyjnych, ale i &#8211; w pewnym sensie &#8211; społecznych. Z pewnością nadal będziemy mieć do czynienia z ofertami, podobnymi do tej wymienionej we wstępie. Myślę jednak, że padło na tyle dużo pytań, by więcej nie bagatelizować poruszonego tutaj problemu i odpowiedzieć na nie każdy osobno.</p>
<hr />
<ol id="notes">
<li id="przypis-1">Swoją drogą widać jak na dłoni popularność Wykopu. Obecnie bardzo rzadko pojawiają się (a przynajmniej mam takie wrażenie) wpisy zahaczające o <em>web</em>, nie mówiąc już o polskiej blogosferze technicznej (choć tutaj nie narzekałbym &#8211; wykopywanie trupa to zadanie mało przyjemne). Macie jakiś plan ratunkowy? ;-)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/08/31/pozycz-50zl/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Narodowy spis front-endowców &#8211; podsumowanie!</title>
		<link>http://ferrante.pl/2009/06/14/narodowy-spis-front-endowcow-podsumowanie/</link>
		<comments>http://ferrante.pl/2009/06/14/narodowy-spis-front-endowcow-podsumowanie/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 13:56:23 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[W sieci...]]></category>
		<category><![CDATA[ferrante.pl]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=475</guid>
		<description><![CDATA[Najwyższy czas podsumować nasz mały (zwany też narodowym) spis front-endowców. Po blisko dwóch miesiącach zbierania odpowiedzi ankietę wypełniły 162 osoby. Z całą stanowczością stwierdzam, że przedsięwzięcie to okazało się bardzo trafne &#8211; dało mi nie tylko potrzebną wiedzę o Czytelnikach tego bloga, ale także bardzo ciekawe wyniki rzutujące na całą polską branżę jako taką.
Płeć

W gronie [...]]]></description>
			<content:encoded><![CDATA[<p>Najwyższy czas podsumować nasz mały (zwany też narodowym) spis front-endowców. Po blisko dwóch miesiącach zbierania odpowiedzi ankietę wypełniły 162 osoby. Z całą stanowczością stwierdzam, że przedsięwzięcie to okazało się bardzo trafne &#8211; dało mi nie tylko potrzebną wiedzę o Czytelnikach tego bloga, ale także bardzo ciekawe wyniki rzutujące na całą polską branżę jako taką.<span id="more-475"></span></p>
<h3>Płeć</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/1.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/1.jpg" alt="1" title="1" width="310" height="86" class="alignnone size-full wp-image-477" /></a></p>
<p>W gronie respondentów znalazła się tylko jedna kobieta. To dość interesujące, ponieważ spodziewałem się, mimo wszystko, nieco większej liczby reprezentantek płci pięknej &#8211; serwisy społecznościowe typu GoldenLine, według moich obserwacji, posiadają dość obszerną bazę kobiet, które pracują we front-endzie. Cóż, sfeminizowanym targetu mojego bloga bym nie nazwał.</p>
<h3>Wiek</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/2.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/2.jpg" alt="2" title="2" width="310" height="156" class="alignnone size-full wp-image-478" /></a></p>
<p>Ku mojej uciesze, ponad 80% badanych to osoby dorosłe (szczególnie mocno rzutuje to na wiarygodność pozostałych odpowiedzi, na przykład o zarobkach czy stosunku do wykształcenia wyższego). Co tu dużo mówić, jestem zadowolony. Jak widać jest tylko jedno miejsce dla idoli młodzieży w blogosferze technicznej.</p>
<h3>Wykształcenie</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/3.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/3.jpg" alt="3" title="3" width="317" height="99" class="alignnone size-full wp-image-479" /></a></p>
<p>Mała przewaga średniego nad wyższym. Bez większej historii, aczkolwiek dalej spróbujemy porównać jego przełożenie na zarobki i ogólny pogląd na temat posiadania wyższego wykształcenia.</p>
<h3>Czy według Ciebie studia są przydatne?</h4>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/4.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/4.jpg" alt="4" title="4" width="313" height="97" class="alignnone size-full wp-image-480" /></a></p>
<p>Większość z Was jest zdania, że tak. I słusznie (być może niedługo będzie o tym jakiś artykuł). Z drugiej strony, znalazło się 11,11% badanych, którzy studia rzucili. Ciekawe ile teraz zarabiają &#8211; sprawdzimy niżej.</p>
<h3>Pracujesz na etacie?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/5.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/5.jpg" alt="5" title="5" width="304" height="76" class="alignnone size-full wp-image-481" /></a></p>
<p>Prawie <em>fifty-fifty</em>. Na tak dobry wynik dla <em>nie</em> zapracowali uczniowie, aczkolwiek nie można pominąć freelancerów z wyboru.</p>
<h3>Twój roczny dochód brutto:</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/6.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/6.jpg" alt="6" title="6" width="374" height="139" class="alignnone size-full wp-image-482" /></a></p>
<p>Kontrowersyjne pytanie, bo kto niby lubi dzielić się informacjami o swoich zarobkach? Dlatego też nie było wymogu podania odpowiedzi. Niemniej większość z Was zaznaczyła którąś z opcji. Biorąc pod uwagę 77% odpowiedzi, zarabiamy dość mało, przynajmniej w porównaniu ze stawkami zagranicznymi i średnimi płacami w IT w Polsce. Z drugiej strony, rola front-endu w wielu firmach jest marginalizowana, co przekłada się na stosunkowo niskie zarobki. Temat rzeka, z pewnością wart dłuższego artykułu (choć nie bronię dyskusji w komentarzach).</p>
<h3>W jak dużej firmie pracujesz?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/7.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/7.jpg" alt="7" title="7" width="363" height="205" class="alignnone size-full wp-image-483" /></a></p>
<p>Pracujemy w małych i średnich firmach. Część z Was to <em>one-man-army</em>.</p>
<h3>Lata doświadczenia zawodowego:</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/8.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/8.jpg" alt="8" title="8" width="314" height="198" class="alignnone size-full wp-image-484" /></a></p>
<p>Większość z Was dysponuje doświadczeniem nie przekraczającym trzech lat, co jest znakiem dla mnie, że warto pisać o sprawach, które mogą wydawać się oczywiste, aczkolwiek, czego dowodzą wyniki, nie każdy mógł się z nimi spotkać.</p>
<h3>Jesteś zadowolony ze swojej pracy?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/9.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/9.jpg" alt="9" title="9" width="292" height="67" class="alignnone size-full wp-image-485" /></a></p>
<p>Mimo że nie zarabiamy kroci, jesteśmy zadowoleni. I chyba o to w tym wszystkim chodzi, prawda? Muszę też przyznać, że spodziewałem się nieco większej reprezentacji malkontentów &#8211; jak widać polscy front-endowcy potrafią wyzbyć się jednej z najgorszych cech narodowych &#8211; ciągłego narzekania.</p>
<h3>Czy Twoja praca pomaga Ci się rozwijać?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/10.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/10.jpg" alt="10" title="10" width="337" height="73" class="alignnone size-full wp-image-486" /></a></p>
<p>Cóż, nieszczęśliwej dziewiętnastce radzę pomyśleć nad zmianami.</p>
<h3>Co zmieniłbyś w swojej pracy?</h3>
<p>Większość z nas jest zadowolona ze swojej pracy, jednak równolegle chcielibyśmy coś zmienić &#8211; lista jest dość pokaźna:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/11.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/11-624x1024.jpg" alt="11" title="11" width="624" height="1024" class="alignnone size-large wp-image-487" /></a></p>
<h3>Pracowałeś kiedykolwiek jako freelancer?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/12.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/12.jpg" alt="12" title="12" width="457" height="99" class="alignnone size-full wp-image-488" /></a></p>
<p>Większość z nas miała do czynienia z <em>frilansem</em>. W sumie to niedziwne &#8211; prace front-endowe są, w większości, wręcz stworzone do freelance&#8217;u &#8211; to potnij, to złóż, machnij jakieś CSSy na poniedziałek &#8211; życie.</p>
<h3>Uczestniczysz w zagranicznych konferencjach poświęconych front-endowi?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/13.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/13.jpg" alt="13" title="13" width="835" height="692" class="alignnone size-full wp-image-489" /></a></p>
<p>77,77% nie uczestniczy w zagranicznych konferencjach. A szkoda. Mogę tylko powiedzieć, że firmy inwestujące w zagraniczne konferencje i szkolenia podejmują bardzo dobrą decyzję. Warto zastanowić się nad problemem, tym bardziej, że niektóre konferencje okazują się dość tanie, a wiedza, którą się z nich wynosi jest z reguły bardzo wartościowa.</p>
<h3>Uczestniczysz w lokalnych spotkaniach branżowych typu Bootstrap, Aula, Barcamp itd.?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/14.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/14.jpg" alt="14" title="14" width="835" height="692" class="alignnone size-full wp-image-490" /></a></p>
<p>Cóż, nie ma wśród moich Czytelników wielu miłośników tego typu zabaw. Jeszcze niedawno i ja należałem do tej grupy &#8211; poczytajcie wpis o Bootstrapie, warto przyjrzeć się takim spotkaniom i skonfrontować poglądy z rzeczywistością.</p>
<h3>Masz swój startup, dzięki któremu zarobisz miliony?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/15.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/15.jpg" alt="15" title="15" width="421" height="73" class="alignnone size-full wp-image-491" /></a></p>
<p>Wynik mówi jedno &#8211; nie ma sensu pisać o startupach na ferrante.pl, choć miałem takie plany (głównie by sobie ponarzekać). No nic, przekonaliście mnie do wpisów o gołych babach.</p>
<h3>Jak oceniłbyś swoją wiedzę i umiejętności branżowe?</h3>
<p><a href="http://ferrante.pl/wp-content/uploads/2009/06/16.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/16.jpg" alt="16" title="16" width="992" height="263" class="alignnone size-full wp-image-492" /></a></p>
<p>Jedna z najciekawszych tabelek. Daje do zrozumienia, że wchodzi się tutaj po informacje o JavaScript. I bardzo dobrze. Jednocześnie płynie z niej wniosek, by nie pisać o HTML i CSS2 &#8211; racja, to dość oklepane tematy, tym bardziej, że znacie się na nich doskonale, jak widać. Moją niszą będzie więc twórczość na temat CSS3 i HTML5. Co zaskakuje, wielu z badanych zna bardzo dobrze tajniki programowania obiektowego. Nie jestem co do tego taki pewien &#8211; z doświadczenia wiem, że jest z tym dość krucho. No nic, pozostaje Wam uwierzyć na słowo, choć ten temat będzie jednym z bardziej wiodących w przyszłości. Użyteczność, dostępność i typografia wypadły dość blado &#8211; szczerze powiedziawszy nie wiem, jak ustosunkować się do tych wyników &#8211; można znać i można znać ze słyszenia. Wygląda na to, że przydałoby się więcej artykułów, choć uwierzcie mi &#8211; nie lubię o tym pisać.</p>
<h3>Jakie frameworki JS znasz i umiesz w nich kodować</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/17.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/17.jpg" alt="17" title="17" width="725" height="368" class="alignnone size-full wp-image-493" /></a></p>
<p>I tak ma być, chociaż pamiętajmy, że znajomość tylko jednego frameworka to w dzisiejszych czasach za mało.</p>
<h3>Używasz frameworków CSS?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/18.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/18.jpg" alt="18" title="18" width="320" height="77" class="alignnone size-full wp-image-494" /></a></p>
<p>Pozdrowienia dla naszej czternastki!</p>
<h3>Jakich narzędzi webdeveloperskich używasz? (np. Firebug itd.)</h3>
<p>Długa lista &#8211; powiększenie wskazane:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/191.gif"><img src="http://ferrante.pl/wp-content/uploads/2009/06/191-87x300.gif" alt="19" title="19" width="87" height="300" class="alignnone size-medium wp-image-513" /></a></p>
<p>Firebug zdominował stawkę, aczkolwiek wypada się przyjrzeć, czego używają koledzy &#8211; być może znajdzie się jakaś perełka.</p>
<h3>Kodowałeś kiedyś back-end?</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/20.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/20-300x43.jpg" alt="20" title="20" width="300" height="43" class="alignnone size-medium wp-image-496" /></a></p>
<p>77,77% kodowało back-end. Z jednej strony to dobrze &#8211; nie zwalamy, jakby co, na brak doświadczenia w prawdziwym programowaniu, z drugiej &#8211; tylko 22,22% <em>to hardkorzy</em>, jak zwykło się mówić ostatnio w okolicach pierwszego piętra.</p>
<h3>Stosunek wykształcenia do zarobków</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_pd.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_pd.jpg" alt="wyksztalcenie_vs_zarobki_pd" title="wyksztalcenie_vs_zarobki_pd" width="370" height="243" class="alignnone size-full wp-image-514" /></a></p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_sr.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_sr.jpg" alt="wyksztalcenie_vs_zarobki_sr" title="wyksztalcenie_vs_zarobki_sr" width="370" height="237" class="alignnone size-full wp-image-515" /></a></p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_wy.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_zarobki_wy.jpg" alt="wyksztalcenie_vs_zarobki_wy" title="wyksztalcenie_vs_zarobki_wy" width="370" height="235" class="alignnone size-full wp-image-516" /></a></p>
<p>Cóż, nie znajdziecie tutaj żadnej sensacji &#8211; wraz ze wzrostem wykształcenia rosną nasze zarobki. Co również ciekawe &#8211; rzuceniem studiów cieszą się osoby zaradne, na co wskazują relatywnie duże zarobki:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/rzucilemstudia_vs_zarobki.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/rzucilemstudia_vs_zarobki.jpg" alt="rzucilemstudia_vs_zarobki" title="rzucilemstudia_vs_zarobki" width="382" height="320" class="alignnone size-full wp-image-499" /></a></p>
<h3>Zarobki na etacie</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/etat_vs_zarobki.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/etat_vs_zarobki.jpg" alt="etat_vs_zarobki" title="etat_vs_zarobki" width="364" height="225" class="alignnone size-full wp-image-497" /></a></p>
<p>Cóż, co etat to etat! Zarabiacie tutaj najwięcej. Co innego freelancerzy:</p>
<h3>Zarobki na frilansie</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/freelance_vs_zarobki.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/freelance_vs_zarobki.jpg" alt="freelance_vs_zarobki" title="freelance_vs_zarobki" width="460" height="255" class="alignnone size-full wp-image-498" /></a></p>
<p>Trochę gorzej, czyż nie? Z drugiej strony freelance robią dość młodzi ludzie:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/wiek_freelance.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/wiek_freelance.jpg" alt="wiek_freelance" title="wiek_freelance" width="279" height="155" class="alignnone size-full wp-image-508" /></a></p>
<p>Z kolei zobaczmy, jak to wygląda u bardziej doświadczonych kolegów:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/exp_freelance_zarobki.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/exp_freelance_zarobki.jpg" alt="exp_freelance_zarobki" title="exp_freelance_zarobki" width="394" height="409" class="alignnone size-full wp-image-509" /></a></p>
<p>Nieźle, prawda?</p>
<h3>Magistrzy i inżynierowie o studiach:</h3>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_edukacja.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/wyksztalcenie_vs_edukacja.jpg" alt="wyksztalcenie_vs_edukacja" title="wyksztalcenie_vs_edukacja" width="301" height="201" class="alignnone size-full wp-image-500" /></a></p>
<p>Ci, którzy poczuli na własnej skórze, czym są studia wyższe, są podzieleni. To jeden z tematów, na które będzie tyle opinii, co studentów.</p>
<h3>Zarobki vs. umiejętności i doświadczenie</h3>
<p>Na koniec wypada zobaczyć, jakie umiejętności posiadają ci, którzy zarabiają najwięcej:</p>
<p class="p"><a href="http://ferrante.pl/wp-content/uploads/2009/06/zarobki_vs_wiedza.jpg"><img src="http://ferrante.pl/wp-content/uploads/2009/06/zarobki_vs_wiedza.jpg" alt="zarobki_vs_wiedza" title="zarobki_vs_wiedza" width="921" height="700" class="alignnone size-full wp-image-504" /></a></p>
<h3>Podsumowanie podsumowania</h3>
<p>Jeszcze raz chcę podkreślić, że jestem bardzo zadowolony z przeprowadzonej ankiety. Również serwis <a href="http://ankietka.pl">Ankietka.pl</a> zasługuje na słowa pochwały &#8211; wszystko przebiegło bez zakłóceń. Celowo nie analizowałem wyników, dotyczących mojej osoby i tego bloga &#8211; chciałbym jednak podziękować za to, że tak wylewnie dzieliliście się swoimi uwagami &#8211; na pewno wszystkie je przeczytam i wyciągnę stosowne wnioski.</p>
<p>Obiecałem też, że wyniki zostaną udostępnione do Waszego wglądu. <a href="http://www.ankietka.pl/wyniki-badania/23752/narodowy-spis-front-endowcow-ferrantepl.html">Znajdziecie je tutaj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/06/14/narodowy-spis-front-endowcow-podsumowanie/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Na Bootstrapie byłem</title>
		<link>http://ferrante.pl/2009/05/10/na-bootstrapie-bylem/</link>
		<comments>http://ferrante.pl/2009/05/10/na-bootstrapie-bylem/#comments</comments>
		<pubDate>Sun, 10 May 2009 21:10:16 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Publicystyka]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=465</guid>
		<description><![CDATA[Umówmy się &#8211; spotkania typu Boostrap uważałem do tej pory za posiadówki gadających głów. Dla osoby postronnej wyglądało to tak, że zbierają się kolesie, którzy nic wielkiego nie osiągnęli, a próbują ewangelizować innych, tworząc przy okazji jakieś zamknięte, hermetyczne grono cool ludzi. Nic bardziej mylnego!
Powyższa, stereotypowa opinia zapewne nie wykluła się bez podstaw &#8211; jest [...]]]></description>
			<content:encoded><![CDATA[<p>Umówmy się &#8211; spotkania typu <a href="http://bootstrap.pl">Boostrap</a> uważałem do tej pory za posiadówki gadających głów. Dla osoby postronnej wyglądało to tak, że zbierają się kolesie, którzy nic wielkiego nie osiągnęli, a próbują ewangelizować innych, tworząc przy okazji jakieś zamknięte, hermetyczne grono <em>cool</em> ludzi. Nic bardziej mylnego!<span id="more-465"></span></p>
<p>Powyższa, stereotypowa opinia zapewne nie wykluła się bez podstaw &#8211; jest (choć trend ten zanika wraz z coraz mniejszą liczbą polskich blogerów) trochę osób, którym wydaje się po takich spotkaniach, że sięgnęli nieba. Również ton w jakim pisuje się o Aulach, Barcampach itd. nie zachwyca &#8211; jest buńczuczny i pełen patosu. Razi to szczególnie, kiedy <em>event</em> poświęcony jest sprawom oczywistym i końcowe wnioski nie zachwycają niczym szczególnym.</p>
<p>Niemniej postanowiłem dać szansę Boostrapowi. <a href="http://bootstrap.pl/2009/05/02/majowy-bootstrap/">Majowa edycja</a> odbyła się, jak zawsze, w klimatycznej kawiarni przy ulicy Chłodnej 25 w Warszawie 9. maja. Miejsce niezwykle urokliwe, choć jak to w stolicy bywa &#8211; leżące wręcz na pograniczu PRLowskich kamienic na Woli i wielkiego, biurowcowego biznesu. Bardzo sympatyczna atmosfera wewnątrz była więc dobrym prognostykiem przed właściwym tego dnia głównym punktem programu.</p>
<p>Zaplanowany na 12:00 start odbył się jednak z małym poślizgiem. Przyczyną był, zwyczajowo że tak powiem, sprzęt Apple, a konkretnie niekompatybilny z rzutnikiem laptop ichniej firmy. [Tutaj miejsce na mały flame]. Co jeszcze zaskoczyło to zmiana kolejności prezentacji. Rozumiem, że Bootstrapowi bliżej do spotkań nieformalnych, jednak tego typu zagrywka nie powinna mieć miejsca, tym bardziej zakładając, że ktoś chciał posłuchać tylko pierwszej, planowej prezentacji.</p>
<p>W efekcie, Bootstrap zaczął <strong>Artur Kuć</strong> z <a href="http://salesguru.pl">SalesGuru.pl</a>. Było o tym, jak freelancerzy powinni komunikować się z klientami. O ile Artur nie sprzedawał słuchaczom jakichś trudno dostępnych nowinek, tak w mądry sposób zebrał i przedstawił wszelkie wytyczne dot. komunikacji, które, do czego również się przyznaje, czasem bagatelizujemy. Brakowało mi jednak najważniejszego &#8211; kim Ty człowieku jesteś i jakie masz osiągnięcia. Kiedy i jak zastosowałeś (bądź Twoi klienci zastosowali) swe porady w praktyce? To w zasadzie małe wady prezentacji, która wypadła bardzo pozytywnie. Zawsze jednak mogło być lepiej.</p>
<p>Po Arturze zaczęła przemawiać <strong>Helena Pryłowska</strong> z <a href="http://helen.pl">helen.pl</a>. Helen opowiedziała, jak powinniśmy rozmawiać z designerami. Przy okazji dowiedzieliśmy się trochę o jej stylu pracy (zgaduje, że tyczy się on przynajmniej większości profesjonalnych grafików). W zasadzie nie mam do czego się przyczepić &#8211; prezentacja była solidna, wnioski również, choć raczej gruntowały wiedzę osób, które wykonały już kilka projektów we współpracy z grafikiem. Dla nowicjuszy mogła być to cenna lekcja. Irytowała natomiast rozmowa, która zrodziła się po tej prezentacji. Ktoś z publiczności próbował stanowczo przeintelektualizować podejście do designu, pytając o&#8230; sam nie wiem co. W każdym razie padło coś na temat prostota versus złożoność. Pytanie jednak było tak niezgrabnie postawione, że radziłbym autorowi pójście na kurs prostoty. Nie designu, lecz wypowiedzi.</p>
<p>Ostatnim punktem programu była <em>winda na boostrap</em> &#8211; czyli dwa, pięciominutowe wystąpienia chętnych osób. I tak, <strong>Michał Śliwiński</strong> z <a href="http://nozbe.com">nozbe.com</a> szuka biura (bądź kawiarni) na Bemowie i okolicach(?), w którym mógłby popracować parę godzin i wrócić szybko do domu. Przy okazji możecie skontaktować się z Michałem, jeśli poszukujecie pracy jako PHPowiec i programista jQuery. </p>
<p>Następnie wystąpił <strong>Jacek Szczap</strong> z <a href="http://przystanekpraga.pl">przystanku Praga</a>, stając się, w moim mniemaniu, gwiazdą tej edycji Boostrapa. Wyliczył on, że zarobi 60 milionów złotych na serwisach lokalnych (typu wspomniany przystanek czy też <a href="http://portel.pl">portel.pl</a>) innych miast. Oczywiście, od razu z widowni padły kontrargumenty (obecność i konkurencja wielkich portali, wyliczenia z kosmosu, hurraoptymizm), świadczące o bezsensowności tego pomysłu. Niemniej jednak, to co mnie uderzyło, to nieprawdopodobna pasja i swego rodzaju romantyzm. W zasadzie prezenter (Pan w okolicach 50-tki) zbył wszystkie docinki Pana od <em>trudności z wyrażaniem myśli</em> tym, że to nie pieniądze zdecydują o sukcesie, a klimat wokół serwisu i pewne poczucie <em>własnego miejsca</em> w internecie mieszkańców dzielnic czy osiedli. O ile więc od wszystkiego bił, trzeba przyznać, jakiś wielki, bezzasadny optymizm, tak z mojej perspektywy kibicuję z całego serca tej inicjatywie, ponieważ&#8230; ten człowiek był najbardziej wiarygodny z całej czwórki! Oto przyszedł normalny mężczyzna rodem z warszawskiej Pragi, jakby zupełnie oderwany od <em>trendseterskiej</em> kasty <em>Wielkich Twórców Startupów z Macami na Kolanach i 1000 Subskrybowanych Blogów, Wiedzących Wszystko</em>. Nie było tutaj ni krzty cwaniactwa czy owijania w bawełnę. Przyszedł człowiek z marzeniami na ustach. Oczywiście, może się nie udać, lecz zawsze warto próbować, tym bardziej, jeśli nie uzależniamy od projektu swojego być albo nie być. Myślę, że teza ta mogłaby stać się <em>eo ipso</em> mottem sobotniego spotkania. Z ciekawości sprawdziłem, kim dokładnie jest Jacek Szczap i oto, co znalazłem w Google:</p>
<blockquote><p>W mediach i w marketingu od poczatku lat 90-tych. Specjalista w zakresie marketingu internetowego i promocji sprzedaży. Pracował w największych polskich redakcjach (Gazeta Wyborcza, Prószyński i S-ka, Super Express) &#8211; zajmując się grami, konkursami i działaniami promocyjnymi dla gazet, magazynów, radia, audioteksu i stron internetowych. Był m.in.redaktorem naczelnym pisma &#8220;Manager&#8221; a także dyrektorem marketingu w &#8220;Rzeczpospolitej&#8221;. </p>
<p>W 1998 &#8211; założyciel i prezes Family Games &#8211; pierwszej polskiej firmy specjalizującej się wyłącznie w konkursach i grach promocyjnych. Obecnie prowadzi Media Games &#8211; firmę zajmującą się marketingiem interaktywnym (gry, konkursy, marketing w Internecie, one-to-one marketing, marketing prasy), promocją sprzedaży i szkoleniami marketingowymi. Ceniony również jako konsultant i szkoleniowiec. </p>
<p>Twórca wielu konkursów i gier. Pracował m.in. dla takich firm i marek jak Tesco, SMG/KRC, Hager, Polar, Heineken, WSIP, Eidipresse, Agora, Kostrzyn Paper i wielu innych. </p>
<p>Autor licznych artykułów o tematyce marketingowej w prasie branżowej (Marketing W praktyce, Impact, Manager i in) a także w prasie codziennej (Gazeta Wyborcza). </p>
<p>Wykładał na wielu seminariach i konferencjach o tematyce marketingowej i przeprowadził wiele szkolen marketingowych współpracjując m.in. z takimi firmami szkoleniwymi jak Midwest, Eskadra, Infor Training </p>
<p>Prywatnie mąż, ojciec dwóch synów, miłośnik łamigłówek, gier, gór, kung-fu i tai-chi.</p></blockquote>
<p>Jeśli Pan Jacek w marketingu jest tak samo skuteczny, jak w zjednywaniu sobie ludzi, wróżę jego projektowi wiele sukcesów.</p>
<p>Podsumowując, odsunąłem w kąt wszelkie stereotypowe myślenie na temat Boostrapa. Nie zastałem tam żadnego pieniactwa, poczucia wyższości czy czegoś w tym rodzaju (może dlatego, że nie było Artura Kurasińskiego? He he.) Z drugiej strony, czasami zbyt luźna atmosfera nie każdemu może się spodobać, choć jest to, zważywszy na całokształt imprezy, pigułka całkowicie do przełknięcia.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/05/10/na-bootstrapie-bylem/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Jak zrobić przypisy boczne w CSS i jQuery</title>
		<link>http://ferrante.pl/2009/04/19/jak-zrobic-przypisy-boczne-w-css-i-jquery/</link>
		<comments>http://ferrante.pl/2009/04/19/jak-zrobic-przypisy-boczne-w-css-i-jquery/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 17:04:13 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=428</guid>
		<description><![CDATA[Podczas kodowania nowego designu wpadłem w pewną pułapkę &#8212; umieszczałem przypisy boczne w kodzie po lub przed danym akapitem. W efekcie, czytając artykuł w czytniku RSS można było poczuć niemałą dezorientację, kiedy ni stąd ni zowąd pojawiała się niespójna logicznie treść. Postanowiłem rozwiązać ten problem, przy okazji publikując i omawiając zastosowane przeze mnie rozwiązanie.
Naszym celem [...]]]></description>
			<content:encoded><![CDATA[<p>Podczas kodowania nowego designu wpadłem w pewną pułapkę &mdash; umieszczałem przypisy boczne w kodzie po lub przed danym akapitem. W efekcie, czytając artykuł w czytniku RSS można było poczuć niemałą dezorientację, kiedy ni stąd ni zowąd pojawiała się niespójna logicznie treść. Postanowiłem rozwiązać ten problem, przy okazji publikując i omawiając zastosowane przeze mnie rozwiązanie.<span id="more-428"></span></p>
<p>Naszym celem jest stworzenie przypisów dolnych tak, aby wyglądały jako boczne, zupełnie jak na tym blogu. Jeśli w jakimś akapicie znajdzie się odnośnik do przypisu, jego treść powinnna pojawić się z prawej strony akapitu (tagu <span class="f">&lt;p /&gt;</span>). Zacznijmy od semantycznego szablonu:</p>
<pre><code>&lt;div class="article"&gt;
	&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus massa. Fusce sed erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse auctor neque id purus. Ut dignissim felis et velit suscipit fringilla. Aenean et est et lacus interdum rutrum.&lt;a href="#przypis-1" class="hint"&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; Nam iaculis ipsum vel neque blandit placerat. Cras dui elit, varius at, gravida a, consectetur ut, elit. Donec turpis. Fusce quis sapien ac nisl lobortis eleifend. Morbi posuere, massa vel fermentum commodo, arcu quam fermentum turpis, vel tincidunt ante odio at arcu. Sed vitae purus.&lt;/p&gt;
	&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus massa. Fusce sed erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse auctor neque id purus. Ut dignissim felis et velit suscipit fringilla. Aenean et est et lacus interdum rutrum. Nam iaculis ipsum vel neque blandit placerat. Cras dui elit, varius at, gravida a, consectetur ut, elit. Donec turpis. Fusce quis sapien ac nisl&lt;a href="#przypis-2" class="hint"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;lobortis eleifend. Morbi posuere, massa vel fermentum commodo, arcu quam fermentum turpis, vel tincidunt ante odio at arcu. Sed vitae purus.&lt;/p&gt;
	&lt;hr /&gt;
	&lt;ol id="notes"&gt;
		&lt;li id="przypis-1"&gt;First note&lt;/li&gt;
		&lt;li id="przypis-2"&gt;Second note&lt;/li&gt;
	&lt;/ol&gt;
&lt;/div&gt;</code></pre>
<p>Jak widać, kontenerem dla artykułu jest <span class="f">.article</span>, odnośnikami do przypisów są linki <span class="f">.hint</span>. Domyślne przypisy dolne tworzy lista <span class="f">#notes</span>.</p>
<p>Pora na trochę podstawowych CSSów. Wypozycjonujmy treść, nadajmy odpowiednie typy fontów i tak dalej:</p>
<pre><code>* {
	padding: 0;
	margin: 0;
}
a {
	text-decoration:none;
	color: #7EBB1F;
	font-weight: bold;
}
a:hover {
	background-color: #7EBB1F;
	color: #fff;
}
.article {
	width: 960px;
	margin: auto;
	font: normal 14px 'Lucida Sans Unicode', Arial, Helvetica, sans-serif;
}
.article p {
	margin-bottom: 20px;
	line-height: 20px;
	width: 680px;
}</code></pre>
<p>Generalnie, cel jest następujący &#8211; jeśli mamy włączony JavaScript usuwamy listę numerowaną <span class="f">&lt;ol#notes /&gt;</span>, a jej elementy zmieniamy na <span class="f">&lt;p /&gt;</span> i umieszczamy pomiędzy stosownymi akapitami artykułu. To teoretyczny opis. W praktyce będzie to zrobione nieco inaczej.</p>
<p>Poszukamy akapitów, które linkują do określonych przypisów. Jeśli dany akapit zawiera link <span class="f">.hint</span> to dodajemy zaraz po nim stosowny przypis. Treść przypisu pobierzemy na podstawie identyfikatora, który znajduje się po hashu (#) w linku-odnośniku.</p>
<p>Najpierw jednak zajmijmy się sytuacją, kiedy mamy wyłączony JavaScript:</p>
<pre><code>.article hr {
	border: none;
	border-top: 1px solid #7EBB1F;
	width: 680px;
	float: left;
	margin-bottom: 10px;
}
.article #notes {
	clear: left;
}
#notes li {
	font-size: 11px;
	width: 680px;
	margin-bottom: 3px;
	line-height: 15px;
	font-style: italic;
}</code></pre>
<p><a href="http://ferrante.pl/examples/jquery/przypisy/przypis1.html">Powyższym ostylowaliśmy przypisy dolne</a> &#8211; w końcu jeśli JavaScript będzie wyłączony, to będzie trzeba jakoś je zaprezentować. Warto sprawdzić efekt.</p>
<p>Fajnie jednak byłoby, gdyby jakiś aktywny przypis (tzn. ten, w który kliknęliśmy) został nieco wyróżniony. Zrobić możemy to dzięki selektorowi <span class="f">:target</span>:</p>
<pre><code>#notes li:target {
	font-weight: bold;
}</code></pre>
<p>Oznacza to, że jeśli w linku pojawi się identyfikator jakiegoś tagu <span class="f">&lt;li /&gt;</span> np. <em>przypis1.html#przypis-2</em> to treść tego tagu (tutaj: <span class="f">&lt; li id=&#8221;przypis-2&#8243; /&gt;</span>) zostanie wyboldowana. Wynika na to, że <a href="http://ferrante.pl/examples/jquery/przypisy/przypis2.html">załatwiliśmy problem wyłączonego JavaScriptu</a>.</p>
<p>Zajmijmy się teraz odpowiednimi skryptami, które przeniosą elementy z listy <span class="f">#notes</span> pod stosowne akapity. Skorzystamy w tym celu z <a href="http://jquery.com">jQuery</a>.</p>
<p>Najpierw należy poszukać wszystkich linków <span class="f">.hint</span> w obrębie artykułu <span class="f">.article</span>:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {</code></pre>
<p>Dzięki funkcji <span class="f">each</span> przeiterujemy się przez wszystkie znalezione odnośniki do przypisów. Pierwsze, co powinniśmy zrobić, to znaleźć akapit, który jest rodzicem danego linku:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');</code></pre>
<p>Następnie pobieramy adres linku, by uzyskać identyfikator przypisu, do którego się on odnosi:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');
		var id = $(element).attr('href');</pre>
<p></code></p>
<p>Tym sposobem pod zmienną <span class="f">id</span> będą następujące wartości:</p>
<ul>
<li>#przypis-1</li>
<li>#przypis-2</li>
<li>itd.</li>
</ul>
<p>Pora pobrać treść przypisu na podstawie jego <em>ID</em> i uformować nowy akapit z przypisem:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');
		var id = $(element).attr('href');

		var note = $(id).html();

		var newNote = $('&lt;p class="note"&gt;&lt;sup id="'+id.replace(/#/g, '')+'"&gt;'+(i+1)+'&lt;/sup&gt;'+note+'&lt;/p&gt;');</code></pre>
<p>Szczególnie istotna jest tutaj 8. linijka:</p>
<pre><code>var newNote = $('&lt;p class="note"&gt;&lt;sup id="'+id+'"&gt;'+(i+1)+'&lt;/sup&gt;'+note+'&lt;/p&gt;');</code></pre>
<p>Otóż dzięki niej tworzymy nowy tag drzewa DOM jakim jest <span class="f">&lt;p /&gt;</span>. Oczywiście ubieramy go w stosowne wdzianko - nadajmy <em>class="note"</em> - tak, by potem można było ostylować przypis boczny. W nowym przypisie umieszczamy również indeks w <span class="f">&lt;sup /&gt;</span>, korzystając ze zmiennej <span class="f">i</span> z pętli <em>each</em> - jej wartość zaczyna się standardowo od zera, więc należy dodać jeden, by otrzymać zwykłe odliczanie od 1. Znacznik sup musi mieć dobry identyfikator bez hasha na początku. Wyrzucamy więc "#" przez <em>id.replace(/#/g, '')</em>.</p>
<p>Trzeba jeszcze zająć się pozycjonowaniem przypisu tak, by był wertykalnie nieco bliżej jego odnośnika <span class="f">.hint</span>. Spróbujemy ustawić tak dobrany, <strong>ujemny</strong> <span class="f">margin-top</span>, by nie było zbytnich przerw pomiędzy wspomnianym linkiem i akapitem z przypisem.</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');
		var id = $(element).attr('href');

		var note = $(id).html();

		var newNote = $('&lt;p class="note"&gt;&lt;sup id="'+id.replace(/#/g, '')+'"&gt;'+(i+1)+&lt;/sup&gt;'+note+'&lt;/p&gt;');

		newNote.css('margin-top', (parseInt($(parent).css('margin-bottom')) + ($(parent).height() + $(parent).offset().top) - $(element).offset().top) * -1);</code></pre>
<p>Stosowny <em>margines górny</em> ustawiamy na podstawie prostego wyliczenia. Sumujemy wysokość i odległość od początku strony całego akapitu, a następnie od tej sumy odejmujemy odległość linku od początku strony. Odległość od początku strony możemy pobrać przez jQuery'owe <span class="f">offset().top</span>, a wysokość przez <span class="f">height()</span>. Do wszystkiego dodajemy jeszcze margines dolny akapitu, w którym mieści się link. Wszystko mnożymy razy minus jeden, by uzyskać ujemny margines dla naszego przypisu. Oto rysunek poglądowy, jak wyliczamy margines:</p>
<p><img src="http://ferrante.pl/wp-content/uploads/2009/04/przypisy.jpg" alt="przypisy" title="przypisy" width="448" height="195" class="alignnone size-full wp-image-433" /></p>
<p>Pora dodać nowy przypis pod stosowny akapit i zakończyć pętlę <em>each</em>:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');
		var id = $(element).attr('href');

		var note = $(id).html();

		var newNote = $('&lt;p class="note"&gt;&lt;sup id="'+id.replace(/#/g, '')+'"&gt;'+(i+1)+'&lt;/sup&gt;'+note+'&lt;/p&gt;');

		newNote.css('margin-top', (parseInt($(parent).css('margin-bottom')) + ($(parent).height() + $(parent).offset().top) - $(element).offset().top) * -1);

		newNote.insertAfter(parent);

});</code></pre>
<p>Na koniec musimy jeszcze usunąć przypisy dolne, które nie są już nam potrzebne:</p>
<pre><code>$().ready(function() {
	$('.article .hint').each(function(i, element) {

		var parent = $(element).parent('p');
		var id = $(element).attr('href');

		var note = $(id).html();

		var newNote = $('&lt;p class="note"&gt;&lt;sup id="'+id.replace(/#/g, '')+'"&gt;'+(i+1)+&lt;/sup&gt;'+note+'&lt;/p&gt;');

		newNote.css('margin-top', (parseInt($(parent).css('margin-bottom')) + ($(parent).height() + $(parent).offset().top) - $(element).offset().top) * -1);

		newNote.insertAfter(parent);

	});

	$('#notes').prev('hr').remove();
	$('#notes').remove();
});</code></pre>
<p><a href="http://ferrante.pl/examples/jquery/przypisy/przypis3.html">Wynik naszej zabawy nie wygląda jednak zbyt atrakcyjnie</a>.</p>
<p>Pora dodać stosowne style dla <span class="f">.note</span>:</p>
<pre><code>.article .note {
	float: right;
	background-color: #FBF1AB;
	border: 1px solid #ECD42B;
	width: 162px;
	padding: 4px;
	overflow: hidden;
	font-size: 12px;
}
.article .note sup {
	float:left;
	font-size:20px;
	vertical-align: bottom;
	margin-right: 5px;
	text-align: center;
	width: 30px;
}
.article .note sup:target {
	background: #FBEA71;
}</code></pre>
<p>Jest całkiem nieźle!</p>
<p>Można by co prawda zwiększyć widoczność odnośników do przypisów:</p>
<pre><code>.article .hint {
	margin-right: 10px;
}
.article .hint sup {
	font-size: 14px;
}</code></pre>
<p><a href="http://ferrante.pl/examples/jquery/przypisy/przypisy.html">Działa wyśmienicie</a>!</p>
<p>Zastosowane tutaj rozwiązanie ma w zasadzie tylko jedną wadę - nie należy nadużywać przypisów w jednym akapicie, ponieważ mogą one na siebie nachodzić, tworząc dość nieprzyjemny efekt. Oczywiście możemy nie stosować pozycjonowania względem odnośnika, usuwając linijkę odpowiedzialną za ustawianie górnego marginesu. Wtedy możemy stawiać przypisy gdziekolwiek i w jakiej ilości chcemy.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/04/19/jak-zrobic-przypisy-boczne-w-css-i-jquery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zostań lepszym programistą front-endu &#8211; fakty i mity</title>
		<link>http://ferrante.pl/2009/03/17/zostan-lepszym-programista-front-endu-fakty-i-mity/</link>
		<comments>http://ferrante.pl/2009/03/17/zostan-lepszym-programista-front-endu-fakty-i-mity/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 19:52:46 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[W sieci...]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=215</guid>
		<description><![CDATA[Zastanawiałem się ostatnio, co tak naprawdę czyni nas dobrymi programistami front-endu. Abstrahując od tego, że cały czas uczę się i nigdy nie będę mógł powiedzieć o sobie, że jestem w czymś doskonały, postanowiłem zebrać do kupy kilka wskazówek, które wywarły ogromny wpływ na moją karierę.
Pokora to jedna z największych cnót
Szafowanie szeroką gamą branżowych terminów nie [...]]]></description>
			<content:encoded><![CDATA[<p>Zastanawiałem się ostatnio, co tak naprawdę czyni nas dobrymi programistami front-endu. Abstrahując od tego, że cały czas uczę się i nigdy nie będę mógł powiedzieć o sobie, że jestem w czymś doskonały, postanowiłem zebrać do kupy kilka wskazówek, które wywarły ogromny wpływ na moją karierę.<span id="more-215"></span></p>
<h3>Pokora to jedna z największych cnót</h3>
<p>Szafowanie szeroką gamą branżowych terminów nie czyni z Ciebie specjalisty. Spotykałem osoby, które twierdziły, że wiedzą, co to dostępność, użyteczność i inne takie&#8230; No, zresztą, sami dobrze wiecie&#8230; Większość z nich, zapytana o szczegóły, rzucała jednak podstawowymi określeniami, które można bez trudu znaleźć po 30 sekundach wyszukiwania w sieci.</p>
<p>Bardzo często ktoś, coś tam słyszał, jednak nie przypomina sobie szczegółów. <a href="http://www.useit.com/">Nielsen</a>, <a href="http://www.sensible.com/">Don&#8217;t let me think</a>. A! I o niepełnosprawnych coś było! Prawie jak na lekcji biologii&#8230; Problem w tym, że tak jak lekarz podczas operacji nie sięga po podręczniki, by dowiedzieć się, gdzie mieści się serce, tak programista front-end nie myśli dwie godziny nad tym, jak działa, dajmy na to, hierarchia nagłówków.</p>
<p>Dlatego też o wiele bardziej cenię ludzi pokornych, którzy owszem, w trakcie boomu na użyteczność słyszeli kilka podstawowych haseł, aczkolwiek otwarcie przyznają, że nie wiedzą zbyt wiele i chcieliby poszerzyć horyzonty.</p>
<p>Poza tym, gro osób spod znaku <span class="f">doskonała znajomość HTML, XHTML, CSS oraz standardów W3C, WAI</span> tak naprawdę, co komiczne, ma w swoim portfolio strony, które przeczą współczesnym standardom. Co więcej, pewnikiem wszyscy zrobiliśmy kiedyś jakiegoś potworka. W związku z tym, sto razy bardziej docenię osobę, która jest świadoma tego faktu, niż tę, która stwierdzi, że wszystko jest w porządku, a jej kwalifikacjami powinna zająć się najlepiej komisja złożona ze <a href="http://www.joelonsoftware.com/">Spolsky&#8217;ego</a>, <a href="http://meyerweb.com/">Meyer&#8217;a</a>, <a href="http://www.zeldman.com/">Zeldmana</a> i innych.</p>
<h3>To nadal jest programowanie!</h3>
<p>Jeśli chodzi o JavaScript, zważ, że to nie tylko <a href="http://jquery.com">jQuery</a>. Wielu programistów uważa czysty JavaScript za zupełnie zbędny, kiedy jest to podejście pozbawione sensu. Chciałbym wiedzieć, ile do powiedzenia na temat optymalizacji, closures czy programowania obiektowego mają osoby, które w swoim portfolio oceniają JavaScript na &#8220;doskonały&#8221;. Sam łapałem się na tym wielokrotnie &#8211; udało mi się napisać to i owo, dlatego myślałem, że jestem w danej dziedzinie ekspertem. Nic bardziej mylnego, języki programowania to żywy twór, który z każdym dniem odsłania nowe obszary.</p>
<p>Kiedyś o eventach w JavaScript wiedziałem tylko tyle, że trzeba pobrać odnośnik do <a href="https://developer.mozilla.org/en/DOM">DOM</a> i przypiąć stosowną funkcję. Dziś o ból głowy (z zachwytu nad rozwiązaniami) przyprawiają mnie problemy wycieków pamięci lub zdarzeń bąbelkowych. </p>
<p>A gdzie mi tu Panie do zaawansowanego użycia <a href="https://developer.mozilla.org/En/Drawing_Graphics_with_Canvas">Canvas</a>, w którym zrobiłem bardzo mało rzeczy, aczkolwiek mam świadomość, jak to działa i wiem, że gdybym poświęcił swój czas na konkretny projekt, na pewno bym go zrobił. O ile z czystym sumieniem mogę więc stwierdzić, że nie jestem specjalistą z tej dziedziny, tak wiele osób napisałoby na <a href="http://goldenline.pl">Goldenline</a> czy gdziekolwiek indziej, że Canvas wciąga uchem, kiedy tak naprawdę używała jedynie jakiegoś widgetu z <a href="http://ajaxian.com">Ajaxian.com</a>.</p>
<p>Poznawanie zagadnień od podstaw jest bardzo ważne. Prędzej czy później trafimy na problem, któremu nie będziemy mogli podołać przez nasze zaniedbania. Pierwszy przykład z brzegu &#8211; miałem swego czasu zoptymalizować system walidacji formularzy faktur. Pozycji było ponad 30, każda z nich miała po pięć sprawdzanych informacji. Pętli były dziesiątki (setki?) tysięcy, a czas wykonywania skryptu oscylował wokół 15 sekund. Wszystko oparte było o jQuery i <a href="http://docs.jquery.com/Plugins/Validation">jQuery Validation</a>. Dla każdego walidowanego pola frywolnie używano selektorów jak poniżej:</p>
<pre><code>$('input[name^=xxx][name$=xxx]');</code></pre>
<p>Przyjmując, że jQuery musi sprytnie przefiltrować wszystkie inputy, dopasowując je do podanych dwóch wyrażeń regularnych, mamy 30*5*2*600 iteracji (w dokumencie było około 600 inputów). Ciekaw jestem, co powiedziałaby osoba bez jakiejkolwiek wiedzy analityczno-algorytmicznej (choćby jak działają selektory w jQuery). Że o podstawach JavaScript nie wspomnę.</p>
<p>Pomyśl też, co stałoby się, gdybyś musiał napisać coś w <a href="http://mootools.net/">MooTools</a> lub <a href="http://www.prototypejs.org/">Prototype</a>?</p>
<h3>Staranność</h3>
<p>Nie rób w kodzie bałaganu, pod żadnym pozorem. Nieważne, czy zaczynasz duży czy mały projekt. Nazywaj klasy i identyfikatory zgodnie z przyjętą przez Ciebie konwencją. Żadnych <em>test3</em>, <em>somethingExampleHehe</em> i innych potworków. Nie pisz skryptów na szybko, bez dobrego formatowania i logicznego nazewnictwa zmiennych. Utrzymuj porządek w sekcji <em>head</em> dokumentów, jak i w folderach z plikami źródłowymi. Przyjmij konwencje nazw katalogów, w których trzymasz pliki css, js i obrazki.</p>
<p>Otaczaj skrypty JS anonimowymi funkcjami, tak, by nikt nie nadpisał Twojego kodu:</p>
<pre><code>(function() {
// Twoj kod...
})();</code></pre>
<p>Niestety, programowanie stron niesie ze sobą wiele pułapek, a jedną z nich jest skłonność do powstawania bałaganu. Wielokrotnie widziałem zdublowany kod, puste deklaracje w CSSach i wiele innych niedoróbek. Znając życie, większość pochodzi z czystego pośpiechu. Osobiście, często robiłem coś na szybko, dodawałem style inline, by sprawdzić, jak coś się zachowa, mimo że miałem do dyspozycji debugger. CSS i JS są bardzo czułe na fuszerkę, dlatego unikaj kompromitacji, nawet, gdyby praca miała potrwać 10 minut dłużej.</p>
<p>Zdarza się również, że mozolnie szukamy rozwiązania, dajmy na to pod IE, dopisując coś i skreślając w kodzie, a także pisząc na szybko różne nazwy zmiennych, typu <em>some</em>, <em>x</em>, <em>aaa</em> itd. Gdy dochodzimy do celu, zapominamy o sprawie, skoro &#8220;<em>jest zrobione</em>&#8220;. W efekcie w kodzie pozostaje bubel, który będzie nielogiczny dla programistów edytujących kod w przyszłości. Zmusi ich to prawdopodobnie do kontynuowania złej konwencji i dalszego brudzenia, bo <em>przecież nie będę się doczytywał, o co temu kolesiowi chodziło.</em>. Nie zostawiaj po sobie kodu, którego sam nie zrozumiesz za miesiąc.</p>
<p>Debugger i dobre narzędzia wspomagające to świętość! Dowiedz się, co to Firebug, WebDeveloper, Live Headers, Pixel Perfect, IE Tab, HTML Validator, czy Firecookie. Przeglądaj często <a href="https://addons.mozilla.org/en-US/firefox/browse/type:1/cat:4">stronę z rozszerzeniami do Firefoxa</a>. A nuż wyjdzie coś interesującego!</p>
<p>Frameworki CSS to nie do końca trafiony pomysł, jednak przydatny w pewnych okolicznościach. Przeanalizuj dokładnie wady i zalety takiego rozwiązania, zainteresuj się <a href="http://meyerweb.com/eric/tools/css/reset/">resetami CSS</a> czy też projektami typu <a href="http://960.gs">960 grid system</a>.</p>
<p>Typografia <a href="http://www.webtypography.net/">potrafi być ciekawa</a>, a <a href="http://ferrante.pl/2008/05/17/uzywanie-html4-a-profesjonalizm/">XHTML ma wady</a>, więc bądź ostrożny.</p>
<h3>Rozwój osobisty</h3>
<p>Nikt nie jest alfą i omegą. Nie zniechęcaj się tym, że wielokrotnie podczas pracy używasz Google. Zapamiętywanie hacków, czy też bugów przeglądarek jest pomocne, lecz nie jest to najważniejsze. Wystarczy, że znasz i kojarzysz problem. Rozwiązanie to tylko kwestia doboru środków.</p>
<p>Czytaj książki. O sieci pisze się tyle ciekawych rzeczy! Nie przeczytasz ich na żadnej stronie internetowej. Luke Wroblewski, Joel Spolsky, Eric Meyer, Jakob Nielsen, Louis Rosenfeld, Dean Clarke to tylko czubek góry lodowej nazwisk, które szanujący się developer powinien znać. Czytanie zagranicznych pozycji to nie moda, lans czy cokolwiek innego &#8211; to polepszanie swoich kwalifikacji. Biorąc pod uwagę, że w sieci są prawdopodobnie tysiące koderów z szablonu (CSS, HTML, JS), zatrudniłbym kogoś, kto po prostu wie więcej.</p>
<p>Jeśli nie znasz z kolei jakiejś pozycji, przyznaj to otwarcie, zamiast szukać okrężnej drogi w swoich tłumaczeniach. Nie znać &#8220;X&#8221; czy &#8220;Y&#8221; to nie wstyd, acz argument do dalszej nauki i sztuki poznania. Osobę, która próbuje podjąć dyskusję na temat, o którym nie ma żadnego pojęcia, z reguły można rozpoznać po kilku sekundach. Pamiętaj o tym.</p>
<p>Staraj się czytać blogi, choć zważ na to, że nie jest to żaden wyznacznik Twojej wiedzy, o czym nieliczni próbują przekonywać. Jeśli blogi, to nie tylko polskie (tym bardziej, że bardzo mało jest tych wartościowych). O JavaScript absolutnie fantastyczne rzeczy tworzy <a href="http://ejohn.org">John Resig</a> (twórca jQuery), jest genialny <a href="http://dean.edwards.name/weblog/">Dean Edwards</a>, <a href="http://paulbakaus.com/">Paul Bakaus</a>, <a href="http://mootools.net/blog/">Valerio Proietti</a>. To tylko kilka nazwisk, bo o JS i CSS piszą tysiące osób. Bardzo pomocne są też serwisy typu <a href="http://alistapart.com">A List Apart</a> czy też <a href="http://ajaxian.com">Ajaxian.com</a>, gdzie zgromadzone są najnowsze wiadomości i projekty z branży.</p>
<p>Zauważ, że posiadanie sprzętu Apple lub pisanie Twittera/Blipa nie czyni Cię specjalistą. Wiedz, że na Macu nie zobaczysz 64-bitowej palety kolorów, a to że Zeldman twitteruje nie robi Cię jego kumplem od wódki. Jeśli mimo wszystko stawiasz powyższy fakt za swoje ewidentne zalety, powinieneś zaznajomić się ze znaczeniami ekshibicjonizmu i jego pochodnymi.</p>
<p>Ucz się języka obcego, najlepiej angielskiego. Większość ważnych rzeczy mówi się tutaj w języku Szekspira. W prestiżowych firmach komunikacja z klientem bardzo często odbywa się po angielsku. Z kolei, jeśli Twoje aspiracje sięgają naprawdę wysoko, raczej nie dosięgniesz nieba w Polsce. Niestety, pierwsza liga front-endu gra za granicą. Sam fakt, jak mało mają tam do powiedzenia Polacy, świadczy o tym, że możemy traktować nasz kraj jako branżowy zaścianek.</p>
<p>Bądź krytyczny i szczery w swoich osądach, nie bój się wyrażać własnych opinii. Jeśli projekt dyskutowany jest pod kątem dziedziny, w której jesteś ekspertem, narzuć swoje zdanie i przede wszystkim przedstaw stosowne argumenty. Broń swojej wiedzy! Kto ma wiedzieć cokolwiek o dostępności, jak nie specjalista front-end? Oczywiście, sugestie innych osób są cenne, jednak ostateczne zdanie powinno należeć do Ciebie. </p>
<p>Fajne rzeczy o rozwoju osobistym <a href="http://alexba.eu/">pisze Alex Barszczewski</a>.</p>
<h3>Użyteczność</h3>
<p>Sądzę też przekornie, że <a href="http://pl.wikipedia.org/wiki/Użyteczność_(web-usability)">użyteczność</a> to jedna z największych pułapek, jakie wyprodukował webdevelopment w ostatnich latach. Podstawowe terminy użyteczności stron www są jak najbardziej zasadne, jednak im dalej w las, tym więcej drzew. Tak naprawdę, wiele aspektów użyteczności jest sprawą dyskusyjną i to, dlaczego, przyjmijmy umownie, link jest czerwony, a nie niebieski, w gruncie rzeczy determinuje kontekst, zamierzony cel i dziesięć innych czynników, których nie znajdziemy w szablonowych książkach o usability.</p>
<p>Jest to działka, w której najwięcej mają do powiedzenia krzykacze. Ubzdurało im się, że znają się na użyteczności, bo przeczytali kilka mądrych książek. Większość sporów o usability danego elementu na stronie można podważyć &#8220;pierwszą lepszą&#8221; publikacją książkową. Dlatego też najgorsze argumenty, jakie możesz użyć w dyskusji o usability, tyczą się fanatycznego powoływania na konkretnego autora i rzekomego specjalisty od użyteczności. Nikt jeszcze nie wymyślił złotego środka, a książki o usability wskazują jedynie na najpopularniejsze problemy!</p>
<p>Przede wszystkim radzę myśleć! Użyteczność to nie proste regułki. To nie wersety z książek, które często powielają banały lub które są po prostu słabe (vide publikacje Kasperskiego). Nie idź na łatwiznę. Dopatruj się kontekstu, przeprowadzaj testy z użytkownikami, dyskutuj z kolegami po fachu! Nie ma nic bardziej zbawiennego, niż solidna burza mózgów, poparta konkretnymi argumentami merytorycznymi. Wiele publikacji aspiruje do bycia tak uniwersalnym, jak tylko sie da. Nie daj się nabrać, tym bardziej, że jest to ostatnio niezwykle chwytliwy temat. Specjalistów od użyteczności przybywa niczym cinkciarzy pod Pewexem, dlatego powtórzę jeszcze raz &#8211; myśl!</p>
<h3>Prototypowanie</h3>
<p>Doceń prototypy i testy z użytkownikami. Muszę stwierdzić, że wcześniej rzadko korzystałem z papierowych bądź elektronicznych prototypów. Designy od początku do końca projektował dla mnie grafik, zgodnie ze słownymi wytycznymi. Jakież to amatorskie podejście! Profesjonalny projekt powstaje stopniowo. Najpierw pracuje się nad wymaganiami, potem wkracza front-endowiec, który ma za zadanie przedstawić prototyp funkcjonalności strony. Nie projektuje on designu, ale ustala layout, rozmieszczenie buttonów, warstw, menu i wszystkiego, co tyczy się www. Przy okazji projektuje on większość aspektów użyteczności strony. Prototyp ułatwia pracę wszystkim &#8211; klientowi, designerowi, back-endowi i Tobie oczywiście. To na etapie prototypu powinny być wyjaśniane wszystkie wątpliwości. Tutaj ustalany jest ostateczny, podkreślmy to, kształt aplikacji. Wszystko po to, by potem zająć się tylko i wyłącznie kodowaniem oraz testowaniem.</p>
<p>Profesjonalne prototypy można tworzyć np. w <a href="http://axure.com">Axure</a>.</p>
<p>Prawdopodobnie to nie wszystko, co można by napisać na ten temat. Uczymy się jednak na błędach, a kolejne akapity dopisze życie, z pewnością&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/03/17/zostan-lepszym-programista-front-endu-fakty-i-mity/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Jak to z polskimi specami od web2.0 jest&#8230; &#8211; dwa lata Ferrante.pl!</title>
		<link>http://ferrante.pl/2009/02/28/jak-to-z-polskimi-specami-od-web20-jest-dwa-lata-ferrantepl/</link>
		<comments>http://ferrante.pl/2009/02/28/jak-to-z-polskimi-specami-od-web20-jest-dwa-lata-ferrantepl/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 20:32:18 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[ferrante.pl]]></category>

		<guid isPermaLink="false">http://ferrante.pl/?p=117</guid>
		<description><![CDATA[Mawiał Piotr Skarga, że wraz z tonącym okrętem na dno idzie również jego załoga. Blog ten samotnie dryfował na niespokojnym morzu przez pół roku (nie mam zamiaru liczyć ile dokładnie, głównie dla świętego spokoju) i wydawało się, że jedyne, co po nim pozostało, to niedopite butelki rumu w kajucie kapitana. Długo szukałem przyjaznego kawałka ziemi, [...]]]></description>
			<content:encoded><![CDATA[<p>Mawiał Piotr Skarga, że wraz z tonącym okrętem na dno idzie również jego załoga. Blog ten samotnie dryfował na niespokojnym morzu przez pół roku (nie mam zamiaru liczyć ile dokładnie, głównie dla świętego spokoju) i wydawało się, że jedyne, co po nim pozostało, to niedopite butelki rumu w kajucie kapitana. Długo szukałem przyjaznego kawałka ziemi, przy którym można by odetchnąć i przygotować się do kolejnej wyprawy. Wydaje się jednak, że zacumowałem w odpowiedniej zatoce.<span id="more-117"></span></p>
<p>Nieprzypadkowo przywołuje motyw samotnej żeglugi i pustych (prawie) butelek po rumie &#8211; przez długi czas to miejsce wyglądało na zupełnie opuszczone, a jedyne, co jako tako ratowało tę nędzę, to zebrane dotąd artykuły (prawie jak &#8220;wiadomość w butelce&#8221;!) i design, który wciąż mnie inspiruje.</p>
<p>Tłumaczą się tylko winni, ale wychodzę z założenia, że należy się Wam kilka słów wyjaśnienia. Przede wszystkim moje zasoby czasowe zostały znacząco uszczuplone przez pracę na pełen etat. Poza tym doszło kilka innych problemów, o których nie wypada tutaj wspominać. Do dzisiaj zastanawiam się, kto miał największy wpływ na moją opieszałość w publikowaniu. Lenistwo, czy zmęczenie. Strzelam, że to &#8220;coś&#8221; po środku.</p>
<p>W każdym razie &#8211; nie mam zamiaru kolejny raz usprawiedliwiać się i obiecywać przyszłego powrotu. Tym razem wracam definitywnie, aczkolwiek punkt widzenia zależy od punktu siedzenia i tym razem też tak będzie.</p>
<p>Uznałem bowiem, że o ile nie mam żadnych zastrzeżeń do jakości zgromadzonych tutaj treści, tak kierunek w którym idę (w zasadzie szedłem&#8230;) jest dla mnie rujnujący. Jestem z natury człowiekiem solidnym. Nie lubię fuszerki podpisanej swoim nazwiskiem (stąd też między innymi zamiast krótkiego &#8220;wracam&#8221; dłuższa notka). Niemało Czytelników na pewno zauważyło, że gros materiałów ma ponadprzeciętną długość. Wymagam jednak od siebie wyczerpania tematu w każdej z podejmowanych przeze mnie kwestii. Dlatego też teksty są przeważne bardzo obszerne i co za tym idzie włożony został w nie duży wysiłek. Tak od początku nakazywała konwencja tego bloga &#8211; jak najprościej, jak najjaśniej, jak najobszerniej!</p>
<p>Pora zamknąć pewien rozdział. Ferrante.pl nie będzie już skupiać się na absolutnych podstawach programowania w JS. Uznaje, że obecny materiał porusza większość podstawowych zagadnień. Od dziś skupimy się na rzeczach bardziej mi bliskich &#8211; zaawansowanym JavaScript’cie, CSS’ie itd. Dotąd funkcjonowaliśmy, przyznacie, od artykułu do artykułu, a przerwy między nimi potrafiły oscylować w granicach miesiąca. To się zmieni.</p>
<p>Zakładam, że ferrante.pl powinien być czytany jako dobry, programistyczny pamiętnik, a nie jako zbiór artykułów, gdzie każdy traktuje o czymś innym. Będzie o wiele więcej prywaty i publicystycznego charakteru bloga. </p>
<p>Wybieram też bardziej różnorodną treść. Postaram się oczywiście nawiązywać do front-endowej tematyki w każdym z postów, aczkolwiek nie mam zamiaru kontynuować polityki, która zrobiła z tego bloga prawie że wortal o JS. Zapewne początki nie będą wymarzone, ale przeżyłem naprawdę duży deficyt weny, bombardowany przez permanentny brak czasu. W skrócie &#8211; inna forma, jakość ta sama!</p>
<h3>Idzie nowe</h3>
<p>Abstrahując od przeszłych problemów, na horyzoncie widać bardzo ciekawe rzeczy. Pracuję intensywnie nad nowym projektem (tematyka? CSS!), którego jeszcze w Polsce nie było. Jeśli o innowacje chodzi nie rzucam słów na wiatr. Wkrótce powinno się więcej wyklarować, na razie postawiliśmy pierwsze, standardowe kroki &#8211; domena, wstępny koncept.</p>
<p>Ostatnio wiele czasu poświęcam na programowanie w JAVA. Zapewne usłyszycie ode mnie o tym języku jeszcze nie raz. Być może, po małym retuszu, opublikuje też prostą w użyciu bibliotekę formularzy w PHP. Szczerze powiedziawszy, bardzo zdystansowałem się od tego języka, dostrzegając wady, na widok których wcześniej przymykałem oczy.</p>
<p>Z prywatnych spraw zamierzam też nauczyć się języka hiszpańskiego (Argentyna!) oraz wejść nieco głębiej w temat fotografii. Odkładam te rzeczy na później średnio co tydzień, także jak na dłoni widać, że wolny czas nie jest moją dobrą stroną (między innymi z tego powodu zacząłem coraz mocniej interesować się technikami zarządzania czasem, którymi swego czasu nieco gardziłem).</p>
<h3>Co tam Panie w polityce?</h3>
<p>Mimo wszystko nie przestałem czytywać polskich blogów. Trzeba jednak szczerze przyznać, że bardzo mało się tutaj dzieje. No, wyłączając może ich coraz częstsze zamknięcia. Większość rodzimych blogów jest nudna, jak flaki z olejem. Brakuje nawet porządnych flame&#8217;ów. Z tego wszystkiego zacząłem odwiedzać częściej blogi fotograficzne.</p>
<p>Mówiąc jednak poważnie &#8211; pokażcie mi ciekawy blog o front-endzie w języku polskim. Można spamować w komentarzach. Z chęcią przekonam się, czy się mylę, ale wydaje się, że w Polsce nie ma już nikogo (ostatni był chyba Riddle), kto potrafiłby napisać coś ponad tłumaczeniami nowych usług w Google lub API w jQuery. Co prawda współdziałający równolegle z blogosferą ruch spotkań startup’owych typu Barcamp ma się całkiem dobrze, ale to zupełnie nie tłumaczy zastoju. Podpisuje się zresztą pod opinią, którą znalazłem bodaj u <a href="http://ja.rafi.pl">RAFiego</a>:</p>
<blockquote><p>shpyo:</p>
<p>Wiecie jak to z polskimi specami od web20 jest. Nie udało im się odpalić czegoś fajnego, to zostali krytykami ;&gt;</p></blockquote>
<p>Krytyka, krytyką, trzeba jednak przyznać, że koncepcja blogów zaczyna się wypalać. Oczywiście do filtra jeszcze daleko, ale sytuacja nie jest zbyt zachęcająca. Długoletni bloggerzy niechętnie wymieniają stalówki swoich piór (choć tacy, jak &#8211; żeby długo nie szukać &#8211; <a href="http://costa.kofeina.net/">CoSta</a>, trzymają się mocno), a świeża krew ma problem z wypromowaniem się lub też świeżej krwi w ogóle w polskiej blogosferze nie ma. Pokażcie się! Nie ukrywam, że będę starał się poruszyć jeszcze ten temat. Ba, jeden z moich projektów jest z tym ściśle związany.</p>
<p>Tymczasem Ferrante.pl obchodziło cztery dni temu drugą rocznicę powstania. Sam fakt, że wspominam o tym dopiero teraz mówi wiele na temat mojej pisarskiej kondycji. Założenia urodzinowe nie są już tak ambitne, jak rok temu. Czasem, niestety, ambicja potrafi zagłuszyć zdrowy rozsądek, dlatego obecnie chcę po prostu&#8230; pisać. Regularnie i dobrze. Zapraszam do kibicowania.</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2009/02/28/jak-to-z-polskimi-specami-od-web20-jest-dwa-lata-ferrantepl/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>BlogDay 2008</title>
		<link>http://ferrante.pl/2008/08/31/blogday-2008/</link>
		<comments>http://ferrante.pl/2008/08/31/blogday-2008/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 11:41:29 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[W sieci...]]></category>
		<category><![CDATA[blogday2008]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2008/08/31/blogday-2008/</guid>
		<description><![CDATA[Wiedzcie, że na blogu nie ma blogrolla z prostego powodu &#8211; nie czytam systematycznie wielu blogów, wybieram raczej konkretne posty, które mnie zaciekawią. Może i trochę egoistyczne podejście, ale staram się czasem nadrobić to linkując w postach. Dziś natomiast rozgrzeszyć spróbuje mnie BlogDay 2008.
W skrócie jest to akcja, która zakłada, że każdy blogger podzieli się [...]]]></description>
			<content:encoded><![CDATA[<p>Wiedzcie, że na blogu nie ma blogrolla z prostego powodu &#8211; nie czytam systematycznie wielu blogów, wybieram raczej konkretne posty, które mnie zaciekawią. Może i trochę egoistyczne podejście, ale staram się czasem nadrobić to linkując w postach. Dziś natomiast rozgrzeszyć spróbuje mnie <a href="http://www.blogday.org/pl.htm">BlogDay 2008</a>.<span id="more-112"></span></p>
<p>W skrócie jest to akcja, która zakłada, że każdy blogger podzieli się listą pięciu ciekawych blogów, które nie uchodzą za wielce popularne i nie każdy je zna. Po pełen opis odsyłam <a href="http://www.blogday.org/pl.htm">do strony projektu</a>.</p>
<p>Osobiście, zgodnie z moim kredo czytania blogów, wyróżnię konkretne strony w większości za pojedyncze i wartościowe notki. </p>
<ul>
<li><a href="http://blog.eldoras.com">blog.eldoras.com</a> &#8211; świetnie opisany proces rekrutacyjny do Google. Autor pełną garścią buduje niesamowite napięcie, mimo że jest to.. no właśnie, tylko i wyłącznie opis jego rekrutacji do światowego potentata. Warto przeczytać, ja po lekturze serii artykułów nabrałem nieco dystansu do Google.</p>
<p>Co mnie jedynie razi to pojawiające się od niedawna socjologiczne chwyty autora (sensacyjne nagłówki, masa pogrubień niekoniecznie kluczowych wyrazów itd.), mające na celu zwabić jak najwięcej czytelników.
</li>
<li><a href="http://blog.dziudek.pl">Dziudek blog</a> &#8211; <strong>fantastyczna robota</strong> i fantastyczne artykuły o MooTools! Już za wkład pracy (pro bono) Dziudka należy się masa wyróżnień i pochwał. Jeśli chcesz zacząć programować w MT, jest to pozycja wręcz obowiązkowa. Wszystko o MT 1.2 i 1.1!</li>
<li><a href="http://7pl.pl/">Adriano blog &#8211; Web is brutal</a> &#8211; masa przydatnych artykułów na temat bezpiecznych i user-friendly rozwiązań webowych. Można dowiedzieć się wiele o potencjalnych atakach na strony internetowe (m.in. na przykładzie Wykopu) i nie tylko.</li>
<li><a href="http://blog.dywicki.pl/">Splatch blog</a> &#8211; guru, jeśli chodzi o PHP oraz bardzo dobry programista JAVA. Dobre teksty na wysokim poziomie zaawansowania wiedzy.</li>
<li><a href="http://costa.kofeina.net">CoSTa&#8217;s Family Page</a> &#8211; CoSTa i wszystko jasne! Pewnie najbardziej znany blog w stawce, nie mogłem go nie wyróżnić. Świetne pióro tytułowego bloggera, mimo że tak naprawdę CoSTa pisze o wszystkim &#8211; o życiu &#8211; swoim i tym wokół. Jest rodzinnie, o grach, o Apple, o muzyce i polityce. Dla każdego coś miłego, a optymizm i humor autora wręcz uzależnia.</li>
</ul>
<p>Do powyższej listy spokojnie mógłbym jeszcze dołączyć kilkanaście <a href="http://jogger.pl">blogów joggerowych</a>. Muszę przyznać, że jeśli miałbym zakładać bloga, nie mając własnego serwera &#8211; byłby to zdecydowanie <a href="http://jogger.pl">Jogger.pl</a>. Wyjątkowa społeczność, bardzo ciekawi i zdolni ludzie, a przede wszystkim niesamowita atmosfera. Techblog, z bardzo ciekawymi wpisami technicznymi. Od Assemblera do CSS! Kilkadziesiąt komentarzy pod wartościowymi notkami to standard. Aż chce się pisać i uczestniczyć w całym przedsięwzięciu! Co prawda, jak to bywa w tak dużych zbiorowościach &#8211; znajdą się i flame&#8217;y, i zwykły trolling. Doświadczony czytelnik Joggera potrafi jednak skutecznie omijać pewne miejsca pod tym kątem. Kiedyś nawet myślałem o migracji. Może kiedyś?</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2008/08/31/blogday-2008/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wzorzec MVC w PHP</title>
		<link>http://ferrante.pl/2008/08/30/wzorzec-mvc-w-php/</link>
		<comments>http://ferrante.pl/2008/08/30/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 na [...]]]></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/2008/08/30/wzorzec-mvc-w-php/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Frontend</title>
		<link>http://ferrante.pl/2008/06/21/frontend/</link>
		<comments>http://ferrante.pl/2008/06/21/frontend/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 12:16:25 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Publicystyka]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2008/06/21/frontend/</guid>
		<description><![CDATA[Któż z nas nie przeglądał choć raz branżowych ofert pracy, gdzie w ogłoszeniach dla tzw. frontendowców padają z reguły trzy magiczne słowa: Wymagana znajomość technologii XHTML, CSS, JavaScript. Czy aby na pewno powyższe trio miało sens?
Utrwaliło się dość mocno w świadomości pracodawców i wszelakich branżowych decydentów, że Pan od wyglądu zewnętrznego aplikacji powinien znać także [...]]]></description>
			<content:encoded><![CDATA[<p>Któż z nas nie przeglądał choć raz branżowych ofert pracy, gdzie w ogłoszeniach dla tzw. <em>frontendowców</em> padają z reguły trzy magiczne słowa: <em>Wymagana znajomość technologii <strong>XHTML</strong>, <strong>CSS</strong>, <strong>JavaScript</strong></em>. Czy aby na pewno powyższe trio miało sens?<span id="more-81"></span></p>
<p>Utrwaliło się dość mocno w świadomości pracodawców i wszelakich branżowych decydentów, że Pan od wyglądu zewnętrznego aplikacji powinien znać także JavaScript. W swojej 6-letniej karierze webdevelopera jako takiego, wykonywałem prace <em>frontendowca</em>, jak i <em>backendowca</em>. I znacząco twierdzę, że obecny podział ról jest czasem (podkreślmy &#8211; czasem) dość rujnujący.</p>
<p>Doświadczenie nakazuje mi sądzić, że zrzucanie na <em>frontendowca</em> obowiązków, związanych z JavaScript nie jest zawsze słuszne. Prowadzi to często do dość drastycznych nieporozumień. Do wzajemnej irytacji dochodzi w momencie, kiedy backendowiec wchodzi na grunt <em>frontendowca</em>. Ma to miejsce w kilku punktach zapalnych, jak np. przy okazji implementacji przez backend wszelakich skryptów <em>autosearch</em>, <em>autocomplete</em> itd. i innych, całkiem już niecodziennych sytuacjach, przeważnie jednak wtedy, kiedy należy pobrać coś via AJAX i dodać różne efekty.</p>
<p>Nie każdy, kto zna CSS&#038;HTML, ma też zmysł programistyczny. Nie ukrywajmy, że implementacja różnych animacji i bardziej skomplikowanych efektów wymaga dobrego przemyślenia problemu. <span class="f">jQuery</span>, które przyszło na świat, zbawiając wielu koderów CSS, w większości nie pomoże, gdy przyjdzie zakodować coś bardziej innowacyjnego. Czy ktoś, kto posiada zmysł artystyczny i estetyczny, zakoduje, w miarę sensownie, małą webaplikację, o którą proszą się od miesięcy <em>backendowcy</em> dla ich CMSa?</p>
<p>Osobiście znam kilku świetnych koderów CSS, którzy z JS są na bakier, przyznając jednocześnie, że to ich boli i stawia w trudnej roli na rynku pracy:</p>
<blockquote><p>Po prostu nie mam smykałki do tego &#8211; mam okrutnie schematyczny mózg. HTML i CSS maja swoje reguły, które łatwo pojąc, JS nie ogranicza nic i to mnie właśnie przeraża.
</p></blockquote>
<p>Są oni za to świetnymi grafikami, co z kolei nie zawsze idzie w parze z naszym kochanym, <em>frontendowym </em>trio (CSS, JS, HTML). Wypada znaleźć alfę i omegę, prawda?</p>
<p>W zasadzie można by wyróżnić trzy profile <em>frontendowca</em>:</p>
<ul>
<li>design www, css, html, js, seo, usability, doświadczenie z php &#8211; tzw. <em>alfa i omega</em> i <em>teoretycznie</em> najlepszy kandydat</li>
<li>css, html, js, biegła znajomość Photoshopa w zakresie cięcia grafiki i jej obróbki, seo, usability &#8211; tzw. <em>złoty środek</em> &#8211; człowiek nie zna się na grafice, co pozwala domniemywać, że do czynienia mamy z umysłem ścisłym i dobrym programistą JS</li>
<li>design www, css, html, seo, usability &#8211; tzw. <em>pożyteczny grafik</em>, po prostu</li>
</ul>
<p>Oczywiście najlepszym wyborem jest pierwsza opcja. Zna się na programowaniu, ma zmysł graficzny. W swoim życiu spotkałem tylko jedną, no, może dwie takie osoby, w dodatku jedna z nich, z tego, co wiem, absolutnie oddała się teraz kodowaniu. Trudnodostępny okaz, potwierdzający regułę, że umie się wszystko i nic. Połączenie tych funkcji doprowadziłoby do eksploatacji jego chęci i entuzjazmu do pracy na miarę kopalni węgla w Wałbrzychu.</p>
<p>Druga opcja to dobry wybór, jeśli mamy w zespole grafika, który zajmuje się tylko i wyłącznie&#8230; grafiką. Z reguły duet ten sprawdza się świetnie i jest najpopularniejszym rozwiązaniem &#8211; mamy w zespole artystów pędzla i klawiatury. Trzeci typ to także popularna konfiguracja, która nastręcza jednak dużo problemów, ze względu na nieznajomość JavaScript. Pytanie, co zrobić? Nauczyć się JS albo zginąć? Odpowiedź jest dwuznaczna &#8211; rynek jest bezlitosny i znajdzie się niejeden, kto nie wyobraża sobie zatrudnienia osoby bez znajomości JS, całkiem słusznie zresztą. W takim razie, w okolicznościach kompletnej i permanentnej niechęci do programowania, wypada zainwestować w grafikę bądź&#8230; liczyć na pracodawców, którzy preferują rozdzielenie funkcji na kodera JS i kodera CSS&#038;HTML. Takich spotkałem za granicą, a w Polsce, paradoksalnie, w Gronie&#8230;</p>
<p>Aktualnie pracujemy nad nową wersją <a href="http://drawter.com">Drawtera</a>, gdzie możemy pozwolić sobie na duży rozrzut obowiązków. Jedna osoba zajmuje się tylko i wyłącznie ergonomicznym designem, druga tworzy semantyczny kod CSS&#038;HTML, a trzecia zajmuje się JS i sprawami <em>backend</em>. Nie wyobrażam sobie stresu i nawału pracy, jaki spotkałby kodera, łączącego te dwie pierwsze funkcje, a już na pewno nie wszystkie na raz. W przypadku małych serwisów może by się to udało, jeśli chodzi zaś o większe &#8211; uważam to za katorgę.</p>
<p>Moja konkluzja jest następująca &#8211; najbardziej wydajnym eksperymentem jest rozdzielnie funkcji na programistę JS oraz CSS&#038;HTML, ale tylko wtedy, jeśli to ma rzeczywisty sens projektowy &#8211; tzn. wtedy, kiedy koder JS będzie miał dwa razy więcej pracy, niż normalnie. Nielogiczne byłoby rozdzielnie tych obowiązków w obliczu <em>klepania</em> skryptów accordion.</p>
<p>Jeśli zaś chodzi o normalne warunki pracy <em>frontend</em> &#8211; warto, by programiści <em>backend</em> znali dobrze JS &#8211; pozwala to uniknąć kilku nieporozumień. Co z koderami CSS bez znajomości JS? Czy skazani są na grafikę bądź <em>nowoczesnych</em> pracodawców, mających dla nich zbawienny etat? Z chęcią poznam Wasze opinie!</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2008/06/21/frontend/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>odzywayo pe el</title>
		<link>http://ferrante.pl/2008/06/01/odzywayo-pe-el/</link>
		<comments>http://ferrante.pl/2008/06/01/odzywayo-pe-el/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 11:40:42 +0000</pubDate>
		<dc:creator>ferrante</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Publicystyka]]></category>

		<guid isPermaLink="false">http://ferrante.pl/2008/06/01/odzywayo-pe-el/</guid>
		<description><![CDATA[Historia ta miala miejsce kilka dni temu&#8230; ostatni raz widzialem ja wsiadajaca do tramwaju lini 34 :( wtedy tak slodko i cudownie, jednak po raz ostatni usmiechnela sie do mnie&#8230; Nigdy nie zapomne tego spojrzenia, i Jej pieknego usmiechu&#8230; Pozostalo we mnie wyjatkowe wspomnienie lecz rowniez i zal ze nie zrobilem nic aby ja zatrzymac. [...]]]></description>
			<content:encoded><![CDATA[<p><em>Historia ta miala miejsce kilka dni temu&#8230; ostatni raz widzialem ja wsiadajaca do tramwaju lini 34 :( wtedy tak slodko i cudownie, jednak po raz ostatni usmiechnela sie do mnie&#8230; Nigdy nie zapomne tego spojrzenia, i Jej pieknego usmiechu&#8230; Pozostalo we mnie wyjatkowe wspomnienie lecz rowniez i zal ze nie zrobilem nic aby ja zatrzymac. Zakochalem sie od pierwszego wejrzenia, teraz juz to wiem gdy noce i dnie spedzam na rozmyslaniu o NIej&#8230; prosze odezwij sie</em><span id="more-100"></span></p>
<p>Nie, to nie jest <em>lead</em> wywiadu z Januszem L. Wiśniewskim. Przypadkowo buszując po tabloidach Gazety.pl trafiłem na, nazwijmy to modnie, startup <a href="http://odezwijsie.pl">odezwijsie.pl</a>, skąd zapożyczyłem tenże ekscentryczny wstęp. </p>
<p>Pomijając fakt, że strona jest zrobiona na odwal się, a podobną grafikę widzieliśmy już w 100 innych miejsach webeo dwaeo zereo, to coś w tym pomyśle niewątpliwie jest. Do tego stopnia, że radziłbym Panom z <a href="http://fotka.pl">fotka.pl</a>, <a href="http://nasza-klasa.pl">naszej-klasy.pl</a>, bądź <a href="http://groon.net">grono.net</a> mocno zainteresować się taką funkcją w ich serwisach. Jako oddzielny twór coś takiego to raczej chybiony pomysł (trolling, faking, spamming), jednak jako część dużego wortalu społecznościowego &#8211; cud, miód, malina &#8211; dużo klikania, jeszcze więcej czytania bzdur o kimś innym. Isn&#8217;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://ferrante.pl/2008/06/01/odzywayo-pe-el/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
