<?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>adamczuk.net.pl &#187; js</title>
	<atom:link href="http://adamczuk.net.pl/tag/js/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamczuk.net.pl</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 20 Jul 2010 16:48:52 +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>myBlog &#8211; prosta platforma blogowa</title>
		<link>http://adamczuk.net.pl/2010/07/20/myblog-prosta-platforma-blogowa/</link>
		<comments>http://adamczuk.net.pl/2010/07/20/myblog-prosta-platforma-blogowa/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 16:21:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=328</guid>
		<description><![CDATA[Nieoficjalne przedstawienie prostej, autorskiej platformy blogowej.]]></description>
			<content:encoded><![CDATA[<p>Istnieje wiele platform blogowych. Część z nich to niezależne silniki jak <a href="http://wordpress.org/">WordPress</a>, czy <a href="http://www.movabletype.org/">MovableType</a>, a inne to produkty zintegrowane z konkretnymi serwisami, jak <a href="http://www.blogger.com/">Blogger</a> czy <a href="http://www.tumblr.com/">Tumblr</a>. Istnieje również wiele polskich serwisów, które pozwalają na szybkie stworzenie dziennika internetowego i bezstresowe blogowanie. Najpopularniejsze to <a href="http://jogger.pl/">Jogger</a> i <a href="http://www.blox.pl/">Blox</a>. Zdarza się, że powyższe rozwiązania nie spełniają naszych oczekiwań, co wówczas prowadzi do wyważania otwartych drzwi.<br />
<span id="more-328"></span></p>
<p>Tworzenie aplikacji internetowych to skomplikowany, czasochłonny i nie zawsze opłacalny proces.</p>
<p><quote>Dlaczego wielu programistów pisze własne aplikacje, frameworki, biblioteki i inne rozwiązania?</quote></p>
<p>Po prostu wychodzą z przekonania, że sami zrobią to lepiej. Czasami zdarza się, że dzięki temu podejściu rodzą się prawdziwe perełki. Często wielkie molochy tracą klientów, użytkownicy znajdują produkty skrojone na miarę ich potrzeb i każdy może być zadowolony.</p>
<p>Pozostałe przypadki to zmarnowany potencjał, czas i zasoby, bo projekt umiera, zanim rozpoczął żywot. Dopóki nie rozpoczniesz tworzenia nowej jakości nie będziesz, miał pewności co do swojej wartości.</p>
<h3>Właściwy wpis</h3>
<p>Często zastanawia mnie kształt moich wypowiedzi formułowanych w stanie, jak najbardziej trzeźwym. Jestem przecież człowiek technicznych, któremu nie obce powinno być prasowanie, ale już bogaty język podczas wszelkich wypowiedzi, co najmniej zadziwia.</p>
<p>Człowiek uczy się przez lata, choć nie zawsze ma na to czas i chęci. Najlepszym przykładem moich osiągnięć jest <a href="http://squarezone.pl/">SquareZone</a>. Prosty, ale funkcjonalny serwis, który przystępnie oferuje informacje użytkownikom. Tym razem przyszedł czas na nowy przykład.</p>
<p><strong>MyBlog</strong> &#8211; nazwa kodowa powinna być bardziej tajemnicza, ale projekt jest w zbyt wczesnym stadium, mimo wielomiesięcznej pracy przy jego tworzeniu. Otóż wspomniana aplikacja oferuje lub będzie oferowała w przyszłości funkcjonalności znane z popularnych systemów blogowych.</p>
<p>Architektura systemu po części czerpała ze znanego Wordpressa, jednak największym atutem omawianej aplikacji jest wydajność i zgodność ze standardami. Wszystkie testy i szczegóły zostaną przedstawione wkrótce. Niedługo postaram się przedstawić kolejne funkcjonalności oraz założenia rozwojowe.</p>
<p>Obecnie nie mam pewności czy kod źródłowy zostanie udostępniony publicznie, jednak wszelkie opinie na temat działania lub architektury są mile widziane.</p>
<p>Wersja demonstracyjna <a href="http://demo.ladamczuk.kei.pl">myBlog</a>dostępna jest w sieci.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2010/07/20/myblog-prosta-platforma-blogowa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nowe jQuery &#8211; nowe rozwiązania</title>
		<link>http://adamczuk.net.pl/2010/02/05/nowe-jquery-nowe-rozwiazania/</link>
		<comments>http://adamczuk.net.pl/2010/02/05/nowe-jquery-nowe-rozwiazania/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 10:43:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=265</guid>
		<description><![CDATA[Krótka notka na temat nowego wydania jQuery 1.4.]]></description>
			<content:encoded><![CDATA[<p><a href="http://adamczuk.net.pl/wp-content/uploads/2010/02/jquery-light.jpg"><img src="http://adamczuk.net.pl/wp-content/uploads/2010/02/jquery-light.jpg" alt="" title="jquery-light" width="200" height="75" class="left" /></a>Na początku roku wydano jQuery 1.4, które wprowadza nowe funkcjonalności i poprawia znane błędy. Wydanie nowej wersji trwało stało się dla twórców powodem do wielkiego świętowania, czemu poświęcili osobną <a href="http://jquery14.com/">stronę</a>.</p>
<p>W ciągu 14 dni twórcy biblioteki opowiadali o zmianach jakie wprowadzili do nowej wersji. Szczególnie interesujący był <a href="http://jquery14.com/day-03/internal-changes-in-jquery-14-2">podcast</a>, w którym John Resig przedstawił zmiany w rdzeniu biblioteki. Zmniejszenie rozmiaru, wzrost wydajności i większa zgodność z przeglądarkami.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2010/02/05/nowe-jquery-nowe-rozwiazania/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Drawter</title>
		<link>http://adamczuk.net.pl/2009/11/20/drawter/</link>
		<comments>http://adamczuk.net.pl/2009/11/20/drawter/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 20:01:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Serwisy]]></category>
		<category><![CDATA[drawter]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=225</guid>
		<description><![CDATA[Dawno temu znalazłem w sieci ciekawe narzędzie &#8211; mianowicie Drawter.com. Pamiętam, że jego możliwości były spore, chociaż nigdy nie próbowałem tworzyć przy jego pomocy prawdziwego układu strony. Możliwości aplikacji pokazuje screencast ze strony projektu. Program pozwala na tworzenie stron internetowych poprzez rysowanie warstw. Jednak nie jest to internetowy edytor WYSIWYG.

Drawter w elegancki sposób generuje kod [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/11/drawter.jpg" alt="drawter" title="drawter" width="100" height="100" class="left size-full wp-image-226" />Dawno temu znalazłem w sieci ciekawe narzędzie &#8211; mianowicie <a href="http://drawter.com/">Drawter.com</a>. Pamiętam, że jego możliwości były spore, chociaż nigdy nie próbowałem tworzyć przy jego pomocy prawdziwego układu strony. Możliwości aplikacji pokazuje <a href="http://drawter.com/screencast/">screencast</a> ze strony projektu. Program pozwala na tworzenie stron internetowych poprzez rysowanie warstw. Jednak nie jest to internetowy edytor WYSIWYG.<br />
<span id="more-225"></span><br />
<strong>Drawter</strong> w elegancki sposób generuje kod XHTML oraz CSS na podstawie narysowanych myszką warstw. Rysowane warstwy symbolizują znaczniki kodu, a nie narysowany obraz. Draw Mode pozwala na rysowanie kolejnych tagów naszego layoutu, a Edit Mode pozwala dodać lub zmienić właściwości stylów. Oprócz tego możemy  w dowolnej chwili wygenerować kod naszej strony.</p>
<p>Narzędzie to wymaga od użytkownika wiedzy na temat XHTML i CSS, a zatem nie jest przeznaczone dla początkujących koderów. Jednak programiści Drawtera zapowiadają stworzenie wersji Amateur dla laików standardów sieciowych.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/11/20/drawter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax loading gif generator</title>
		<link>http://adamczuk.net.pl/2009/11/10/ajax-loading-gif-generator/</link>
		<comments>http://adamczuk.net.pl/2009/11/10/ajax-loading-gif-generator/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 19:47:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>
		<category><![CDATA[Serwisy]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[loading]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=222</guid>
		<description><![CDATA[W jednym z projektów wykorzystałem skrypt GreyBox w celu otwierania obrazków. Jednak standardowy obrazek ładowania były beznadziejny. Skorzystałem ze znanej wszystkim użytkownikom wyszukiwarki i po kilku sekundach trafiłem na stronę, którą generowała obrazek ładowania strony.

W panelu wybieramy typ naszego obrazka, kolory jego tło i pierwszego planu. Możemy jeszcze włączyć lub nie przezroczystość obrazka. Generowanie obrazka [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/11/ajax-loading-generator.jpg" alt="ajax-loading-generator" title="ajax-loading-generator" width="300" height="100" class="left size-full wp-image-223" />W jednym z projektów wykorzystałem skrypt <a href="http://www.orangoo.com/labs/GreyBox/" title="GreyBox">GreyBox</a> w celu otwierania obrazków. Jednak standardowy obrazek ładowania były beznadziejny. Skorzystałem ze znanej wszystkim użytkownikom wyszukiwarki i po kilku sekundach trafiłem na <a href="http://www.ajaxload.info/">stronę</a>, którą generowała obrazek ładowania strony.<br />
<span id="more-222"></span><br />
W panelu wybieramy typ naszego obrazka, kolory jego tło i pierwszego planu. Możemy jeszcze włączyć lub nie przezroczystość obrazka. Generowanie obrazka trwa kilka sekund, a wszystko to za darmo.</p>
<p>Wśród typów obrazka rozpoznamy ten, który ma YouTube, nowy LightBox albo chociaż Lightwindow. Ten wpis jest prawdziwym dopełnieniem artykułu na temat stylowania lightboxa. Po zmianie kolorystki skryptu, możemy spokojnie dostosować do własnych potrzeb również obrazek ładowania.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/11/10/ajax-loading-gif-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stylowanie Lightboxa</title>
		<link>http://adamczuk.net.pl/2009/10/11/stylowanie-lightboxa/</link>
		<comments>http://adamczuk.net.pl/2009/10/11/stylowanie-lightboxa/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 12:48:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=214</guid>
		<description><![CDATA[Przykładowe zmiany domyślnego wyświetlania obrazów przez skrypt Lightbox.]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/10/lightbox.jpg" alt="lightbox" title="lightbox" width="300" height="100" class="left size-full wp-image-217" />Programiści JS znają na pewno framework <a href="http://www.prototypejs.org/">prototype.js</a> oraz bibliotekę <a href="http://script.aculo.us/">scriptaculous.js</a>, która udostępnia wiele efektów graficznych. Popularne w ostatnich miesiącach otwieranie wszystkiego w <em>overlay&#8217;owych</em> okienkach prowadzi jednak wielokrotnie do przerostu formy nad treścią. Nie wystarczy tylko ściągnąć skrypt z sieci. Prezentowane elementy często wyświetlają się w sposób standardowy, który nie jest dla nich odpowiedni. Możemy to zmienić przy niewielkim wysiłku, a uzyskany efekt na pewno zadowoli naszych klientów i użytkowników. Jednym z pierwszych skryptów działających w ten sposób był lightbox napisany przez <a href="http://www.huddletogether.com/">Lokesha Dhakara</a>.<span id="more-214"></span></p>
<h3>Lightbox 2.02</h3>
<p>Do uruchomienia lightboxa potrzebujemy wspomnianych już plików <em>prototype.js</em> oraz <em>scriptaculous.js</em> oraz dwóch innych. Plik <em>lightbox.js</em> jest właściwym kodem naszego skryptu, a <em>effects.js</em> częścią biblioteki scriptaculous, odpowiedzialną za efekty graficzne. Na stronie autora znajdziemy wszystkie potrzebny pliki, łącznie ze standardowymi stylami <acronym title="Cascading Style Sheet">CSS</acronym> i obrazkami nawigacyjnymi. Należy zwrócić uwagę jaką wersję skryptu ściągamy ze strony.</p>
<p>Lightbox może wyświetlać pojedyncze obrazki lub pewien zbiór obrazków znajdujących się na stronie. Sposób jego uruchomienia jest bardzo prosty i szczegółowo wyjaśniony na stronie projektu, dlatego skupimy się tylko na zmianie sposobu prezentacji oraz ważnych szczegółach technicznych. Poniżej przedstawiony jest przykładowy obrazek z białą ramką szerokości 10 pikseli wyświetlony na czarnym tle z 40% przezroczystością.</p>
<p><img src="/img/art/lightbox-01.jpg" class="art-photo" alt="Standardowy sposób prezentacji" /></p>
<p>Aby to zmienić musimy dokonać edycji pliku <em>lightbox.css</em>. Znajdujemy deklaracje dla naszego tła i zmieniamy co trzeba. W moim pliku definicja dla warstwy <code>#overlay</code> była następująca.</p>
<pre><code>#overlay {

	...

	background-color: #000;

	filter:alpha(opacity=60);

	-moz-opacity: .6;

	opacity: .6;

}</code></pre>
<p>Linijka <code>background-color: #000;</code> odpowiada za kolor tła w czasie prezentacji obrazów. W naszym przypadku jest to kolor czarny. Kolejne 3 linijki definiują nieprzeźroczystość dla Internet Explorera, starszych wersji przeglądarek rodziny Mozilla oraz wszystkich przeglądarek obsługujących poprawnie nieprzeźroczystość rekomendowana przez W3C. Różnica pomiędzy nieprzezroczystością a przezroczystością jest prosta. Jeżeli mamy 20% nieprzezroczystości (opacity) to jej odpowiednikiem jest dokładnie 80% przezroczystości (transparency). Dla niewtajemniczonych, trochę prościej. Jeśli ustawimy dla naszego obrazka <code>opacity: .1;</code> to będzie on praktycznie niewidoczny. W odwrotnej sytuacji, czyli dla wysokiej wartości <code>opacity: .9;</code> nasz obrazek jedynie lekko rozjaśniony. Wartość opacity może być podana bez zera przed przecinkiem, bo jest to skrótowy zapis zgodny z CSS.</p>
<p class="warning">Ostrzegam, że zmiana tych parametrów może nie przynieść oczekiwanego skutku z powodu ustawień przezroczystości w innym miejscu. Mianowicie w pliku <em>lightbox.js</em> może, ale nie musi występować poniższa linijka.</p>
<pre><code>var overlayOpacity = 0.9;	// controls transparency of shadow overlay</code></pre>
<p>Osobiście kiedy używałem lightboxa 2.0 to wykasowałem definicje nieprzezroczystości z warstwy <code>#overlay</code>, ustawiając w stylach jedynie tło. Przezroczystość zmieniałem w pliku <em>lightbox.js</em>.</p>
<p>Bardzo ważnym elementem w lightboxie jest ramka wokół obrazka, której szerokość możemy bardzo szybko zmienić. Wystarczy tylko znaleźć odpowiedni fragment w pliku <em>lightbox.js</em>.</p>
<pre><code>var borderSize = 2;</code></pre>
<p>Rozmiar oczywiście jest w pikselach. Jeżeli zmieniamy szerokość ramki to w stylach musimy również dokonać jednej zmiany, tym razem jednak dopełnienia obrazka.</p>
<pre><code>#imageContainer {

	padding: 2px;

}</code></pre>
<p>Chcemy mieć węższą ramkę to zmieniamy obydwie wartości. W naszym przypadku będzie to <code>2px</code>. Jeżeli chcemy zmienić kolor ramki, która wcale nie jest ramką, a całą warstwą, na której wyświetlamy nasz obrazek musimy znaleźć następujący kod:</p>
<pre><code>#outerImageContainer {

	position: relative;

	<strong>background-color: #AAA;</strong>

	width: 250px;

	height: 250px;

	margin: 0 auto;

}</code></pre>
<p>Jego zmiana spowoduje zmianę koloru warstwy, na której wyświetlany jest obrazek. Nasza warstwa będzie miała kolor <code>#AAA</code>. Teoretycznie możemy dopisać <code>  border: 2px solid #FFF;</code>, ale nie wiem czy jest komukolwiek potrzebne.</p>
<p>Dalszym etapem naszej stylizacji lightboxa będzie pasek rozwijany poniżej samego obrazka. Znajdują się na nim informacje zawarte w atrybucie <em>title</em> naszego linka oraz przycisk Close.</p>
<pre><code>#imageDataContainer {

	font: 10px Verdana, Helvetica, sans-serif;

	<strong>background-color: transparent;</strong>

	margin: 0 auto;

	line-height: 1.4em;

}</code></pre>
<p>Kolor tego paska możemy ustawić dowolnie, w zależności od potrzeby. Jednak w naszym przypadku potrzebujemy, aby pasek był przezroczysty. Przezroczysty pasek może uniemożliwiać odczytanie tekstu. Również obrazek <em>closelabel.gif</em>, który standardowo nie posiada przezroczystości może zaburzać oczekiwany efekt.</p>
<p>Najlepszym rozwiązaniem tej sytuacji jest przygotowanie obrazków z przezroczystym tłem oraz w polskiej wersji językowej, jeśli tylko potrzebujemy. Obrazki <em>loading.gif</em> oraz <em>closelabel.gif</em> znajdują się w katalogu <code>images/</code>, a ścieżki do plików w <em>lightbox.js</em>.</p>
<pre><code>var fileLoadingImage = "images/loading.gif";

var fileBottomNavCloseImage = "images/closelabel.gif";</code></pre>
<p>Mamy do wyboru albo nadpisać te pliki albo zmienić ścieżki w kodzie skryptu. Wygodniejsze jest zmienienie ścieżek, bo zawsze zostaną nam standardowe pliki, na wszelki wypadek.</p>
<p>Ostatnim elementem jest opis zdjęcia wyświetlany na pasku. Musimy zmienić jego kolor na jaśniejszy, aby możliwe było jego odczytanie na ciemnym tle.</p>
<pre><code>#imageData #caption {

	font-weight: bold;

	color: #FFF;

}</code></pre>
<p>Jeżeli dokonaliśmy wszystkich zmian poprawnie to powinniśmy otrzymać efekt podobny do widocznego na zdjęciu poniżej.</p>
<p><img src="/img/art/lightbox-02.jpg" class="art-photo" alt="Zmodyfikowany sposób prezentacji" /></p>
<p>Do pełni szczęścia brakuje nam jeszcze obrazków prevlabel.gif i nextlabel.gif, które potrzebne są do nawigacji w momencie oglądania kilku obrazków. Ich wykonanie nie powinno być trudne, a  ścieżki do tych plików zapisane są w stylach <em>lightbox.css</em>. Powinniśmy jeszcze odsunąć nasze obrazki od brzegu o tyle pikseli, ile ma nasza ramka.</p>
<pre><code>#prevLink {

	left: 2px;

	float: left;

}

#nextLink {

	right: 2px;

	float: right;

}</code></pre>
<p>W przypadku oglądania kilku zdjęć poniżej opisu pojawia się, także tekst mówiący nam o numerze zdjęcia. Zmiany tego tekstu możemy dokonać w pliku <em>lightbox.js</em>.</p>
<pre><code>// if image is part of set display 'Image x of x'

if(imageArray.length &gt; 1){

	Element.show('numberDisplay');

	Element.setInnerHTML( 'numberDisplay', "Zdjęcie " + eval(activeImage + 1) + " z " + imageArray.length);

}</code></pre>
<p>Kolor tekstu siedzi w stylach <em>lightbox.js</em>.</p>
<pre><code>#imageData #numberDisplay {

	display: block;

	clear: left;

	<strong>color: #FFF;</strong>

	padding-bottom: 1.0em;

}</code></pre>
<h3>Podsumowanie</h3>
<p>Jak widać na załączonych obrazkach zmiany w wyglądzie lightboxa mogą być spore, a ich wykonanie wcale nie musi być trudne. Wszystko zależy od naszych potrzeb i chęci. Zmiany przedstawione w artykule dotykają tylko czubka góry lodowej, bo taka stylizacja jest praktycznie nieograniczona. Ważne jest, aby dokładnie zaplanować, co chcemy zmienić i do tego dążyć.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/10/11/stylowanie-lightboxa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ferrante.pl</title>
		<link>http://adamczuk.net.pl/2009/06/05/ferrante-pl/</link>
		<comments>http://adamczuk.net.pl/2009/06/05/ferrante-pl/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 21:48:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Serwisy]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[ferrante]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=198</guid>
		<description><![CDATA[JavaScript i jQuery podane w łatwy i przejrzysty sposób.]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/07/ferrante.jpg" alt="ferrante" title="ferrante" width="400" height="200" class="left" />W sieci istnieje wiele blogów na temat technologii internetowych. Jednak nie wszystkie z nich, właściwie i rzeczowo opisują dane technologie, do tego w języku polskim. Jeśli chodzi o Java Script to moim podstawowym źródłem informacji była strona Damiana Wielgosika, czyli <a href="http://ferrante.pl/o-mnie/">ferrante.pl</a>.<br />
<span id="more-198"></span><br />
Autor przedstawił na blogu kilkanaście przydanych i obszernych artykułów na temat Java Script. To dzięki tej stronie nabrałem przekonania do stosowania JS. W dalszej kolejności ucząc się <a href="http://jquery.com/">jQuery</a>, które rozszerza możliwości JS, a zostało równie profesjonalnie opisane przez autora. Tego typu strony pozwalają początkującym użytkownikom łatwo zapoznać się ze specyficznym tematem.</p>
<p>Szkoda tylko, że intensywny cykl artykułów na temat JS, a także jQuery przystopował trochę częstość aktualnizacji bloga. Trudno się przyznać, ale brak czasu jest poważnym wrogiem podczas aktywnej działalności w sieci. Na swoim przykładzie mogę przyznać, jak trudne jest regulane pisanie na specjalistyczne tematy. Tym bardziej cieszę się, że ferrante.pl działa znowu, a autor częściej aktualizuje bloga.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/06/05/ferrante-pl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript dla webmasterów. Zaawansowane programowanie</title>
		<link>http://adamczuk.net.pl/2009/05/25/javascript-dla-webmasterow-zaawansowane-programowanie/</link>
		<comments>http://adamczuk.net.pl/2009/05/25/javascript-dla-webmasterow-zaawansowane-programowanie/#comments</comments>
		<pubDate>Mon, 25 May 2009 20:29:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Książki]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[helion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=193</guid>
		<description><![CDATA[Krótka recenzja dobrej książki na temat JS, autorstawa Nicolasa Zakasa.]]></description>
			<content:encoded><![CDATA[<p><img src="http://adamczuk.net.pl/wp-content/uploads/2009/07/js_zp.jpg" alt="js_zp" width="140" height="200" title="JavaScript dla webmasterów. Zaawansowane programowanie" class="left" />JavaScript jest technologią działającą po stronie klienta. W latach 90-tych ubiegłego wieku był wykorzystywany w aplikacjach internetowych do różnych celów. Jednak większość użytkowników ma złe doświadczenia związane z JS. Wyciąganie informacji o przeglądarce, rozwidlanie kodu oraz irytujące okienka pop-up to standardowe zadania jakie spełniał kiedyś JavaScript. A przecież możliwości JS są dużo większe. Możemy się, o tym przekonać czytając książkę Nicolasa Zakasa.<br />
<span id="more-193"></span><br />
<em>&#8220;JavaScript dla webmasterów. Zaawansowane programowanie&#8221;</em> to książka, w której znajdziemy wiele informacji na temat struktury języka oraz sposobu programowania w nim. Możliwości JS rozszerzają się w połączeniu z <abbr title="Document Object Model">DOM</abbr> i <abbr title="Browser Object Model">BOM</abbr>. Nowoczesna aplikacja webowa musi pozwalać na swobodną interakcje użytkownika z oprogramowaniem. Możemy zwiększyć użyteczność naszych stron internetowych poprzez programowanie obiektowe oraz rozdzielenie warstw prezentacji i logiki. Dzięki tej książce nauczymy się jak tworzyć mechanizmy komunikacji klient-server, a także projektować intuicyjne i dynamiczne interfejsy użytkownika.</p>
<p>Książka &#8220;JavaScript dla webmasterów. Zaawansowane programowanie&#8221; zawiera przykładowe rozwiązania najczęściej spotykanych problemów. Podczas tworzenia aplikacji internetowych projektanci często muszą rezygnować ze swoich pomysłów, bo nie mają możliwości ich realizacji. W książce znajdziemy informacje o wyrażeniach regularnych, obsłudze zdarzeń oraz rozszerzeniach JavaScriptu. Nauczymy się także podstaw ECMAScript, struktury obiektowego modelu dokumentu oraz właściwego osadzania JavaScript w kodzie strony WWW. Autor przedstawia również alternatywne sposoby sprawdzania poprawności formularzy oraz wykorzystania elementów <abbr title="eXtensible Markup Language">XML</abbr>. Wreszcie poznamy zasady działania komunikacji między przeglądarką i serwerem. Jeśli interesjuą nas usługi sieciowe i bezpieczeństwo naszych aplikacji JavaScript to niezbędne informacje również znajdziemy w tej książce.</p>
<p>Książka jest bardzo dobrym podręcznikiem dla osób znających podstawy JS. Znajomość materiału powinna pozwolić nam na właściwą rozbudowę naszych aplikacji. Przedstawione przykłady znajdują bardzo duże zastosowanie w nowoczesnych, intuicyjnych interfejsach użytkownika.</p>
<p class="info">OSTATECZNA OCENA: 4/5</p>
<ul>
<li><strong>Autor: Nicholas C. Zakas</strong></li>
<li>Tytuł oryginału: Professional JavaScript for Web Developers</li>
<li>Tłumaczenie: Jarosław Dobrzański, Krzysztof Czupryński, Daniel Kaczmarek</li>
<li>ISBN: 83-246-0280-1</li>
<li>Format: B5, stron: 696</li>
<li>Data wydania: 04/2006 (<a href="http://helion.pl">Helion</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/05/25/javascript-dla-webmasterow-zaawansowane-programowanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyMCE &#8211; wprowadzenie</title>
		<link>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/</link>
		<comments>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 09:23:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[tinymce]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=173</guid>
		<description><![CDATA[Podstawowe informacje na temat edytora WYSIWYG - TinyMCE.]]></description>
			<content:encoded><![CDATA[<p>Jako programista i koder jestem zwolennikiem ręcznego pisania kodu. Co innego uzupełnianie składni czy podpowiadanie metod znane z profesjonalnych środowisk programistycznych, np. MS Visual Studio. Tak samo nie mam nic przeciwko wstawianiu gotowych bloków kodu, np. przez plugin QuickText dla edytora <a href="http://notepad-plus.sourceforge.net/">Notepad++</a>.</p>
<p>Jednak korzystanie z edytorów <acronym title="what you see is what you get">WYSIWYG</acronym> podczas tworzenia aplikacji internetowych to jedna z najgorszych praktyk. Edytory te prowadzą często do tworzenia nadmiarowego kodu. Bynajmniej nie chodzi tu tylko o przestarzałe znaczniki i inne wynalazki, które nie przechodzą poprawnie walidacji. Edytory WYSIWYG najzwyczajniej w świecie nie potrafią tworzyć w pełni semantycznego kodu XHTML. Jednak w pewnym stopniu mogą być przydatne.<span id="more-173"></span></p>
<h3>Wprowadzenie</h3>
<p><strong>TinyMCE</strong> to niezależny internetowy edytor WYSIWYG n<acronym title="what you see is what you get"></acronym>apisany w Javascript. TinyMCE jest wydawany przez <a href="http://www.moxiecode.com/">Moxiecode Systems AB</a> jako Open Source na licencji LGPL. Główną zaletą tego produktu jest łatwa integracja z dowolnym systemem zarządzania treścią.</p>
<p>W jednym z projektów klient chciał formatować treść swoich wpisów. Oczywiście rozsądne było założenie, że klient nie zna znaczników HTML, składni BBCode czy Textile. Po krótkim namyśle, postanowiłem skorzystać z gotowego rozwiązania jakim jest TinyMCE.</p>
<h3>Instalacja</h3>
<p>Na początek musimy ściągnąć potrzebny <a href="http://tinymce.moxiecode.com/download.php">TinyMCE</a>, najlepiej w najnowszej wersji. Pozostaje nam wypakowanie archiwum w wybranej lokalizacji i podlinkowanie w kodzie naszej strony.</p>
<pre><code>&lt;script language="javascript" type="text/javascript" src="js/tiny_mce/tiny_mce.js"&gt;&lt;/script&gt;</code></pre>
<p>W moim przypadku był to katalog <code>js/tiny_mce</code>, w którym znajdował się właściwy plik <code>tiny_mce.js</code>. Uruchomienie edytora jest równie proste. Należy jedynie pamiętać o objęciu całości przez <code>{literal}</code> i <code>{/literal}</code>, jeżeli korzystamy z szablonów Smarty, ponieważ przy tworzeniu obiektu tinyMCE stosowane są klamry.</p>
<pre><code>&lt;script language="javascript" type="text/javascript"&gt;
  tinyMCE.init({
    mode : "textareas"
  });
&lt;/script&gt;</code></pre>
<p>Instalacja to dopiero początek. Cała magia skryptu kryje się w mnogości opcji konfiguracyjnych.</p>
<h3>Konfiguracja</h3>
<p>Kilkanaście kluczowych opcji pozwala na praktycznie dowolne ustawienie wyglądu i zachowania naszego edytora. Dokumentacja TinyMCE zawiera <a href="http://wiki.moxiecode.com/index.php/TinyMCE:Configuration">spis</a> wszystkich parametrów konfiguracyjnych.</p>
<p>Opcja <strong>mode</strong> pozwala na ustawienie, jakie elementy naszej aplikacji będą edytorami. Wartość <strong>textareas</strong> powoduje przekształcenie wszystkich znaczników w edytory WYSIWYG.</p>
<pre><code>tinyMCE.init({
  mode : "textareas"
});</code></pre>
<p>Możliwe jest również przekształcenie w edytor dowolnego elementu na naszej stronie. W tym wypadku ustawiamy wartość <strong>exact</strong> oraz podajemy dodatkowy parametr <strong>elements</strong>, w celu powiadomienia, które elementy chcemy zmienić w edytor.</p>
<pre><code>tinyMCE.init({
  mode : "exact",
  elements : "post-text"
});</code></pre>
<p>Jeżeli potrzebujemy polskich podpowiedzi (hints) lub innych elementów to możliwy jest wybór języka. Jednak konieczne jest ściągnięcie odpowiednich plików z serwera TinyMCE i umieszczenie ich w naszych katalogach. Resztę załatwia opcja <strong>language</strong> z wartością danego języka. W naszym przypadku będzie to <strong>pl</strong> dla języka polskiego.</p>
<pre><code>tinyMCE.init({
  ...
  language : "pl"
});</code></pre>
<p>Następnie powinniśmy ustawić <strong>theme</strong>, który odpowiada za ilość funkcji, dostępnych w edytorze. Wartość  <strong>advanced</strong> pozwala na dużą elastyczność, zarówno w doborze funkcji jak i innych ustawieniach. Druga możliwość to <strong>simple</strong>, która udostępnia edytor z podstawowymi funkcjami.</p>
<pre><code>tinyMCE.init({
  ...
  theme : "advanced"
});</code></pre>
<p>Wartość <strong>advanced</strong> jest domyślna, a nasz edytor może zawierać ponad 50 różnych funkcji! Zapewne większości użytkowników niepotrzebne są niektóre funkcje, dlatego możemy skorzystać z kolejnej opcji konfiguracyjnej.</p>
<p>Jeżeli potrzebujemy tylko wybrane funkcje i potrafimy zmieścić je w dwóch lub jednym pasku to wystarczy dodać kolejny fragment kodu.</p>
<pre><code>tinyMCE.init({
  ...
  theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough",
  theme_advanced_buttons2 : "undo,redo,|,link,unlink",
  theme_advanced_buttons3 : ""
});</code></pre>
<p>W pierwszym pasku mamy Pogrubienie, Pochylenie, Podkreślenie oraz Przekreślenie rozdzielone separatorem pionowym. W kolejnym pasku znajdują się Cofnij i Ponów oraz Dodaj link i Usuń link, także rozdzielone separatorem. Trzeci pasek jest zdefiniowany jako pusty. Dla krótszej notacji można stosować <code>|</code> zamiast <code>separator</code>.</p>
<p>Możemy również wybrać pozycję pasków oraz wyrównanie przycisków. Dopuszczalne wartości dla ustawienia pasków to <strong>top</strong>, <strong>bottom</strong> oraz <strong>external</strong>, przy czym druga jest domyślna, a trzecia  wymaga dodatkowych opcji w celu ustawienia pasków w zewnętrznej warstwie. Jeśli chcemy wyrównać przyciski to możemy skorzystać z wartości <strong>left</strong>, <strong>right</strong> lub <strong>center</strong>, przy czym domyślnie przyciski umieszczone są na środku paska.</p>
<pre><code>tinyMCE.init({
  ...
  theme_advanced_toolbar_location : "top",
  theme_advanced_toolbar_align : "left"
});</code></pre>
<h3>Podsumowanie</h3>
<p>Artykuł przedstawia ogólne informacje na temat TinyMCE. Zdaję sobie sprawę, że omówiłem jedynie podstawowe opcje konfiguracyjne, ale w większości użytkowników jest to wystarczające. Więcej informacji możemy znaleźć w <a href="http://wiki.moxiecode.com/index.php/TinyMCE:Index">dokumentacji</a>.</p>
<p>TinyMCE jest bardzo elastyczne i pozwala na praktycznie dowolną konfigurację. Nie należy jednak przesadzać, ponieważ czasem coś może nie działać tak jak tego oczekujemy.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
