Formatowanie list

24 listopada 2009

Listy zarówno uporządkowane jak i nieuporządkowane mają wiele zastosowań na stronach www. Z reguły wykorzystywane są domyślne sposoby formatowania tych list i w większości przypadków jest to wystarczające. Bywa jednak czasem, że przydałoby się rozwiązanie ciekawsze, bardziej niestandardowe. Zacznijmy jednak od początku.

Listy uporządkowane i nieuporządkowane

Najprostszą listę umieszczamy na stronie wpisując znaczniki <ul> i </ul> dla listy nieuporządkowanej lub <ol> i </ol> dla listy uporządkowanej, a pomiędzy nimi serię pozycji w znacznikach <li>…</li>

<ul>
	<li>Pozycja pierwsza listy nieuporządkowanej</li>
	<li>Pozycja druga listy nieuporządkowanej</li>
	<li>Pozycja trzecia listy nieuporządkowanej</li>
	<li>Pozycja czwarta listy nieuporządkowanej</li>
</ul>

Wpisując powyższy kod otrzymamy:

  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej
  • Pozycja czwarta listy nieuporządkowanej

…i to samo dla listy uporządkowanej.

<ol>
	<li>Pozycja pierwsza listy uporządkowanej</li>
	<li>Pozycja druga listy uporządkowanej</li>
	<li>Pozycja trzecia listy uporządkowanej</li>
	<li>Pozycja czwarta listy uporządkowanej</li>
</ol>

Wpisując powyższy kod otrzymamy:

  1. Pozycja pierwsza listy uporządkowanej
  2. Pozycja druga listy uporządkowanej
  3. Pozycja trzecia listy uporządkowanej
  4. Pozycja czwarta listy uporządkowanej

Zarówno wewnątrz elementów <ul> i </ul> jak i elementów <ol> i </ol> mogą znaleźć się tylko elementy <li> i </li>, natomiast wewnątrz nich oprócz tekstu mogą znajdować się też inne elementy w tym również listy.

Zagnieżdżanie list

Listy można w sobie zagnieżdżać wiele razy w dowolnych konfiguracjach. Np. lista uporządkowana może zawierać dwie listy nieuporządkowane i trzy uporządkowane, a ostatnia z nich również zawiera listę itd.

<ol>
	<li>Pozycja pierwsza listy uporządkowanej</li>
	<li>
<h3>Podrzędna lista nieuporządkowana</h3>
<ul>
	<li>Pozycja pierwsza listy nieuporządkowanej</li>
	<li>Pozycja druga listy nieuporządkowanej</li>
	<li>Pozycja trzecia listy nieuporządkowanej</li>
	<li>Pozycja czwarta listy nieuporządkowanej</li>
</ul>
</li>
	<li>Pozycja trzecia listy uporządkowanej</li>
	<li><strong>Kolejna podrzędna lista nieuporządkowana</strong>
<ul>
	<li>Pozycja pierwsza listy nieuporządkowanej</li>
	<li>Pozycja druga listy nieuporządkowanej</li>
	<li>Pozycja trzecia listy nieuporządkowanej</li>
	<li>Pozycja czwarta listy nieuporządkowanej</li>
</ul>
</li>
	<li>Podrzędna lista uporządkowana
<ol>
	<li>Pozycja pierwsza listy uporządkowanej</li>
	<li>Pozycja druga listy uporządkowanej</li>
	<li>Pozycja trzecia listy uporządkowanej</li>
	<li><span class="kolor">Podrzędna (podwójnie ;)) lista uporządkowana</span>
<ol>
	<li>Pozycja pierwsza listy uporządkowanej</li>
	<li>Pozycja druga listy uporządkowanej</li>
	<li>Pozycja trzecia listy uporządkowanej</li>
	<li>Pozycja czwarta listy uporządkowanej</li>
</ol>
</li>
</ol>
</li>
</ol>
  1. Pozycja pierwsza listy uporządkowanej
  2. Podrzędna lista nieuporządkowana

    • Pozycja pierwsza listy nieuporządkowanej
    • Pozycja druga listy nieuporządkowanej
    • Pozycja trzecia listy nieuporządkowanej
    • Pozycja czwarta listy nieuporządkowanej
  3. Pozycja trzecia listy uporządkowanej
  4. Kolejna podrzędna lista nieuporządkowana
    • Pozycja pierwsza listy nieuporządkowanej
    • Pozycja druga listy nieuporządkowanej
    • Pozycja trzecia listy nieuporządkowanej
    • Pozycja czwarta listy nieuporządkowanej
  5. Podrzędna lista uporządkowana
    1. Pozycja pierwsza listy uporządkowanej
    2. Pozycja druga listy uporządkowanej
    3. Pozycja trzecia listy uporządkowanej
    4. Podrzędna (podwójnie ;) ) lista uporządkowana
      1. Pozycja pierwsza listy uporządkowanej
      2. Pozycja druga listy uporządkowanej
      3. Pozycja trzecia listy uporządkowanej
      4. Pozycja czwarta listy uporządkowanej

To tyle podstawy. Przejdźmy teraz do części nieco bardziej zaawansowanej.

Typy wypunktowania

Jeżeli na stronie mamy wiele list nieuporządkowanych, warto niektóre z nich wyróżnić odmiennym stylem wypunktowania. Czasem też czarne kropki po prostu nie pasują do ogólnego wyglądu strony. W takiej sytuacji z pomocą przychodzą nam style CSS. Wystarczy jedna prosta definicja:

ul{list-style-type: circle;}

zmienia kropki na okręgi,

  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

a definicja stylu:

ul{list-style-type: square;}

na kwadraty

  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

Definicja:

ul{list-style-type: disc;}

przywraca domyślny wygląd listy z kropkami.

  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

Jeżeli natomiast chcielibyśmy zrezygnować z jakichkolwiek symboli umieścimy definicję:

ul{list-style-type: none;}
  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

Możliwe też jest zastosowanie dowolnego symbolu graficznego z pliku: (może nie działać w przeglądarce Internet Explorer)

ul{list-style-image: url(zaznaczenie.gif);}
  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

lub

ul{list-style-image: url(rower.gif);}
  • Pozycja pierwsza listy nieuporządkowanej
  • Pozycja druga listy nieuporządkowanej
  • Pozycja trzecia listy nieuporządkowanej

Tylko nie przesadzajcie z wielkością grafiki ;)

Również przy listach uporządkowanych można modyfikować typ numerowania. Począwszy od standardowego

ol{list-style-type: decimal;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej

poprzez numerowanie z zerem wiodącym

ol{list-style-type: decimal-leading-zero;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej

do numerowania przy pomocy cyfr rzymskich dużych i małych

ol{list-style-type: upper-roman;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej
ol{list-style-type: lower-roman;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej

oraz liter – również dużych i małych

ol{list-style-type: upper-alpha;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej
ol{list-style-type: lower-alpha;}
  1. Pozycja pierwsza listy nieuporządkowanej
  2. Pozycja druga listy nieuporządkowanej
  3. Pozycja trzecia listy nieuporządkowanej

Jeżeli zmieniony styl chcemy zastosować tylko do wybranych list, posługujemy się klasą

.rzymskie ol{list-style-type: upper-roman;}
<ol class="rzymskie">
	<li>Pozycja pierwsza listy nieuporządkowanej</li>
	<li>Pozycja druga listy nieuporządkowanej</li>
	<li>Pozycja trzecia listy nieuporządkowanej</li>
</ol>

Możemy dzięki temu stosować różne typy numerowania list i dowolnie te listy w sobie zagnieżdżać, aczkolwiek z różnorodnością nie należy przesadzać.

Skomentuj ten artykuł, a dostaniesz dodatkowe informacje na temat formatowania list na swój adres email podany przy wysyłaniu komentarza. Dodatkowe informacje postaram się wysłać Ci w ciągu 24 godzin. Komentarze głupie, bezsensowne i obraźliwe będą odrzucane.

pozdrawiam
Leszek Sewastianowicz

Co mogę zrobić z jQuery?

10 listopada 2009

Framework (biblioteka?) jQuery zyskuje sobie coraz większą popularność. Nadal jednak wiele osób nie do końca wie, co to jest i jak tego używać. JQuery jest lekką biblioteką JavaScript często nazywaną frameworkiem. W rzeczywistości jest to jeden plik, który można pobrać z adresu http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.js. Zapisujemy go w katalogu głównym strony i włączamy go umieszczając w sekcji nagłówkowej strony linijkę:

<script type =”text/javascript” src=”jquery-1.3.2.js”></script>

Tworzymy kolejny plik z rozszerzeniem „js” np. test.js i dołączamy go do strony w podobny sposób jak bibliotekę:

<script type =”text/javascript” src=”test.js”></script>

Ważne jest, by biblioteka była włączona jako pierwsza, w przeciwnym razie nie będzie widoczna w pliku test.js

Pisząc ten artykuł zakładam, że dysponujesz wiedzą i umiejętnościami przynajmniej na poziomie szkolenia wideo „Twoja własna prywatna strona wizytówka”, które jest umieszczone na tej stronie w dziale „Sekrety Webmasterów”.

Na początku wstawimy na stronę cztery bloki div i w każdym z nich umieszczamy krótki tekst np. div1, div2, itd. Na stronie te teksty powinny ułożyć się jeden pod drugim. Pod blokami div umieścimy listę nieuporządkowaną. Kompletny kod xhtml powinien wyglądać tak:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Serwan. Co mogę zrobić z jQuery?</title>
	<script type ="text/javascript" src="jquery-1.3.2.js"></script>
	<script type ="text/javascript" src="test.js"></script>
</head>
<body>
	<div>div1</div>
	<div>div2</div>
	<div>div3</div>
	<div>div4</div>
 
	<ul style="clear: left;">
		<li>Moduł 1: Twoja własna strona WWW wizytówka.</li>
		<li>Moduł 2: Squeeze page</li>
		<li>Moduł 3: Twoja super oferta</li>
		<li>Moduł 4: Galeria internetowa</li>
		<li>Moduł 5: Katalog Twoich produktów</li>
		<li>Moduł 6: Portal społecznościowy</li>
	</ul>
</body>
</html>

Teraz w pliku test.js piszemy:

$(document).ready(function()
{
	$('div').css({'margin': '12px', 'border': 'solid 2px #006600', 'padding': '10px', 'width': '20%', 'background-color' : '#99ffcc', 'font-weight' : 'bolder'})
});

Początkiem każdego skryptu jQuery jest wywołanie funkcji $(). $() jest tak naprawdę aliasem funkcji głównej frameworka – jQuery(). Wywołanie $() zwraca obiekt, na rzecz którego wywołujemy metodę ready(). Parametrem metody ready() jest funkcja anonimowa, czyli pozbawiona nazwy. Jej definicja występuje w miejscu wywołania. Funkcja, która jest parametrem metody ready() jest wywoływana natychmiast po wczytaniu całej strony html/xhtml. Następnie pobieramy kolejny obiekt lub obiekty posługując się selektorami. W tym przypadku selektorem jest div czyli wszystkie elementy <div></div> na aktywnej stronie. Dla wybranego obiektu/obiektów wywołujemy metodę css(), która ustawia dla tych obiektów style css zdefiniowane w argumencie metody.

Nie jest to nic niezwykłego. Podobny efekt można osiągnąć używając stylów css. Czasem jednak i taka możliwość może się przydać, np. przy uzależnieniu stylów od tego, czy przeglądarka obsługuje JavaScript, czy nie.

Kolejne instrukcje również wpisujemy wewnątrz funkcji będącej argumentem metody ready(), czyli przed końcowymi nawiasami „});”. Tym razem zmienimy położenie bloków div w reakcji na zdarzenie kliknięcia w dowolnym obszarze strony czyli na elemencie body.

$('body').click(function()
{
	$('div').css({'float': 'left'});
});

Po najechaniu kursorem myszy na jeden z bloków div, wywołujemy dla niego animowane przekształcenie do podanych w argumencie metody animate() stylów.

$('div').mouseenter(function()
{
	$(this).animate({padding: '18px', margin: '8px', borderWidth: '4px'}, 300);
});

Podobnie możemy zrobić przy opuszczeniu bloku div.

$('div').mouseleave(function()
{
	$(this).animate({padding: '10px', margin: '20px', borderWidth: '2px'}, 200);
});

Klikając na jeden z bloków możemy ukrywać i pokazywać listę ul z zastosowaniem różnych efektów. Każdy blok div prezentuje inny efekt. Aby bloki były rozróżniane, należy dodać do nich identyfikatory: a, b , c i d. Identyfikator klikniętego właśnie bloku pobieramy przy pomocy metody attr() i wstawiamy do zmiennej atrybut. Zmienną tę sprawdzamy w instrukcji switch i dla odpowiednich wartości wywołujemy odpowiednie części kodu. Instrukcja if($(‘ul’).is(‘:hidden’)) służy do sprawdzenia, czy lista została ukryta, czy też nie.

$('div').click(function()
{
	var atrybut=$(this).attr('id');
	switch(atrybut)
	{
		case 'a':
			if($('ul').is(':hidden'))
			{
				$('ul').show(700);
			}
			else
			{
				$('ul').hide(1600);
			}
			break;
		case 'b':
			if($('ul').is(':hidden'))
			{
				$('ul').slideDown(700);
			}
			else
			{
				$('ul').slideUp(1600);
			}
			break;
		case 'c':
			if($('ul').is(':hidden'))
			{
				$('ul').fadeIn(700);
			}
			else
			{
				$('ul').fadeOut(1600);
			}
			break;
		case 'd':
			$('ul').fadeTo(1700, 0.10).fadeTo(700, 0.90);
			break;
	}
});

Teraz przejdziemy do elementów li listy ul. Zapis ‘li:first’ wybiera pierwszy element li. Po przesunięciu kursorem myszy nad tym elementem wszystkie parzyste elementy listy (elementy są indeksowane od 0) zostaną zformatowane przy pomocy zadeklarowanych stylów (‘li:even’ oznacza elementy parzysta).

$('li:first').mousemove(function()
{
	$('li:even').css({'background-color': '#99ccff'});
});

Zapis ‘li:last’ wybiera ostatni element li. Po przesunięciu kursorem myszy nad tym elementem wszystkie nieparzyste elementy listy zostaną zformatowane przy pomocy zadeklarowanych stylów (‘li:odd’ oznacza elementy nieparzysta).

$('li:last').mousemove(function()
{
	$('li:odd').css({'background-color': '#ffccff'});
});

Zastosowań i możliwości jQuery jest o wiele więcej. Często jQuery wykorzystuje się do efektownej prezentacji grafiki, prezentacji komunikatów, wstępnej validacji formularzy i do prostego posługiwania się technologią AJAX. Do jQuery napisano też wiele interesujących pluginów.

Co to jest „squeeze page”?

29 października 2009

Wiele osób pyta mnie, co to jest squeeze page i do czego służy. Mam nadzieję, że ten krótki tekst rozjaśni nieco wątpliwości i sprawi, że strony squeeze page staną się bardziej popularne i wpłyną pozytywnie na Waszą obecność w Internecie.

Squeeze page jest prostą stroną, którą wykonać może prawie każdy. Strony tego typu mają z reguły prostą strukturę: jedną, rzadziej dwie kolumny, nagłówek i stopkę. Squeeze page tworzy się dla uzyskania jednego konkretnego celu, przeczytania raportu, zostawienia adresu, zakupu towaru lub usługi. Brakuje na takiej stronie menu, reklam, czy zaproszeń do odwiedzenia innych podstron. Jedyną rzeczą, którą może zrobić internauta, jeżeli nie chce opuścić strony, to wykonanie zaplanowanej przez nas akcji. Jeżeli nasz squeeze page ma sprzedawać, to umieszczamy ofertę, krótki film lub grafikę i formularz zamówienia lub link prowadzący do zakupu.

Spotkałem się ze stwierdzeniem, że squeeze page może zawierać tylko jeden link. Nie do końca jest to prawdą. Na squeeze page’u nie może znajdować się kilka linków prowadzą na różne strony, ale kilka identycznych linków jak najbardziej. Zwłaszcza jeżeli tekst oferty jest długi . Obojętnie w który link kliknie internauta i tak zostanie wykonana zawsze ta sama akcja.

Dla czego warto używać squeeze page’a? Najważniejszym argumentem jest skuteczność. Podczas gdy skuteczność tradycyjnych serwisów z reguły nie przekracza 10% to squeeze page osiąga nawet 60%-70%, a bywa, że i więcej. Strona serwan.pl była przez krótki czas squeeze pagem, który zachęcał odwiedzających do zapisania się na listę „Sekrety Programistów”. Zamiast linka strona zawierała prosty formularz, w którym można było zostawić swój adres. Skuteczność tamtej strony wynosiła 71.8% – taki był stosunek zapisanych adresów do unikalnych odwiedzin.

Budowa rzeczywistego squeeze page’a jest elementem programu szkolenia „Zawodowy Programista”, na które wszystkich zapraszam. Dla tych, którzy nie chcą lub nie mogą uczestniczyć w tym szkoleniu, przygotowuję wersję wideo całego szkolenia. Planowana premiera odbędzie się 6 grudnia 2009 r., ale już teraz w przedpłacie można zamówić to szkolenie w całości, lub dowolny jego moduł za około 50% ceny. Radzę się pospieszyć, bo od listopada cena będzie rosła z każdym dniem. Więc zamów je teraz.

Jaki kolor przyniesie popularność Twojej stronie? cz. 2

26 października 2009

Dziś przedstawię narzędzie do komponowania palety kolorów na stronę WWW, którego używam najczęściej. Wydaje mi się ono bardziej wygodne i elastyczne od poprzedniego ale możliwe, że jest to tylko moje subiektywne odczucie.

Kuler, bo o nim będę dzisiaj pisał, znajduje się pod adresem kuler.adobe.com/#create/fromacolor. Domyślnym trybem Kulera jest Create From a Color. Tu podobnie jak w Color Scheme Designer podstawowym elementem jest koło kolorów. Możemy przesuwać po nim punkty kolorów komponując swoją paletę. Do dyspozycji mamy 7 modeli palety kolorów. Wybieramy je w Selec a rule. Kilka z nich ma swoje odpowiedniki w Color Scheme Designer. W każdym modelu mamy do zdefiniowania pięć kolorów, z których jeden wyróżniony podwójnym obramowaniem jest kolorem głównym (Base Color). Pięć kwadratów pod kołem kolorów prezentuje te barwy. Każdy kolor można ustawić jako główny – wystarczy kliknąć Set as Base

W większości modeli kolory można swobodnie przesuwać na kole kolorów. Przesunięcie koloru głównego bliżej środka koła powoduje zmianę nasycenia całej palety, natomiast dla pozostałych czterech barw nasycenie możemy zmieniać niezależnie. Oprócz tego dla każdego koloru możemy regulować jego jasność. Wystarczy kliknąć odpowiedni punkt lub kwadrat o odpowiedniej barwie, a nad kwadratami palety, tuż pod kołem kolorów pojawia się suwak, którym możemy dany kolor przyciemnić aż do czerni. Tu ponownie regulacja koloru głównego wpływa na pozostałe kolory, natomiast regulacja innego koloru zazwyczaj nie wpływa na pozostałe (są od tego wyjątki).

Pod każdym kolorowym kwadratem mamy definicję koloru w czterech różnych modelach definiowania kolorów: HSV, RGB, CMYK i LAB. Oprócz tego podana jest definicja koloru w modelu RGB z użyciem wartości szesnastkowej czyli najczęściej używanej przy tworzeniu stron WWW. Wybierając jeden z tych modeli dostajemy do dyspozycji trzy lub cztery suwaki do modyfikacji koloru w tych modelach. Możemy też wpisać wartości liczbowe w odpowiednich polach. Modyfikacja jednego koloru wpływa na pozostałe.

Drugim trybem Kulera jest Create From an Image. Tu zamiast korzystać z narzuconego modelu palety kolorów, wybieramy pięć różnych kolorów ze zdjęcia. Domyślne zdjęcie można zmieniać i to zarówno na zdjęcie z flickr.com jak i z własnego dysku. Ten tryb sprawdza się doskonale gdy dobieramy kolory do gotowego zdjęcia, które ma zdominować stronę, a kolory są nam potrzebne tylko do linków, nagłówków, ramek itp.

Moim zdaniem Kuler generuje ciekawsze palety i daje większe możliwości ich dopracowania. Oczywiście może to być moje jak najbardziej subiektywne odczucie. Dlatego wszystkich zainteresowanych zapraszam do testowania i dzielenia się swoimi doświadczeniami w komentarzach poniżej.

Dlaczego warto zostać zawodowym programistą?

30 września 2009

Niedawno prosiłem Was o wzięcie udziału w ankiecie i zaznaczenie tematów kursów, które najbardziej Was interesują. Z propozycji do momentu, w którym piszę te słowa, skorzystało 71 osób. Trudno określić na ile miarodajny jest to głos, wyłania się jednak z niego dość istotna dla mnie informacja – Kurs „Zawodowy programista” został bardzo dobrze dobrany do waszych potrzeb.

Ponad połowa biorących udział w ankiecie zaznaczyła (X)HTML i CSS (54%, 38 głosów) i PHP (52%, 37 głosów), a są to podstawowe tematy przerabiane na kursie (każdy mógł zaznaczyć od 1 do 3 tematów, dlatego suma procentów daleko wykracza poza 100%) Również kolejne pozycje znajdują się w programie. Na trzeciej pozycji znajduje się JavaScript (48%, 34 głosów). Wprawdzie na kursie ten język omawiany jest głównie w kontekście jQuery (11%, 8 głosów), to jest to jedynie podążanie za trendem rynkowym – frameworków JavaScript używa się dużo szybciej i wygodniej, a jQuery jest jednym z popularniejszych.

Z tematów obecnych w programie „Zawodowego programisty” ponad 10% głosów otrzymały Ajax (18%, 13 głosów) i system szablonów (13%, 9 głosów) – uczę kursantów stosowania systemu szablonów Smarty.

Ze znaczących w ankiecie tematów dwa wykraczają poza program kursu. Są to:
zastosowanie skryptu WordPress w biznesie (20%, 14 głosów) i frameworki PHP (14%, 10 głosów)

Są to tematy na zupełnie odrębne szkolenia, które prawdopodobnie pojawią się w ofercie w przyszłym roku.

Na zakończenie chciałbym zadać Wam jeszcze jedno pytanie. Co sprawiło, że zgłosiłeś się na kurs „Zawodowy programista”? – to do tych, którzy uczestniczyli w poprzednim kursie, uczestniczą teraz lub są już zdecydowani/zapisani na kolejne edycje, a do tych którzy tej decyzji jeszcze nie podjęli – Co powstrzymuje Cię przed zapisaniem się na kurs „Zawodowy programista”? Odpowiadać można komentując ten wpis lub, jeśli ktoś nie chce dzielić się publicznie swoimi spostrzeżeniami, na mój adres trener@serwan.pl

Jaki kolor przyniesie popularność Twojej stronie?

30 września 2009

Generalnie twórcy internetowi dzielą się na dwie grupy. Na wspaniałych profesjonalnych programistów, którzy potrafią na stronie zrobić cuda. Tylko że te cuda wcale tak cudownie nie wyglądają. Źle dobrane kroje pisma, kolory, nie pasujące do niczego elementy graficzne. I z drugiej strony graficy, webdesignerzy wymyślające niesamowite obrazy, od których ciężko oderwać oczy. Osoby skupiające w jednym ciele umiejętności obu stron, należą do rzadkości.

„Sekrety programistów” czytają głównie, tu duża niespodzianka ;) , programiści – często początkujący, albo dopiero przyszli. Wielu z Was, podobnie zresztą jak i ja, nie zawsze potrafi dobrać odpowiedni zestaw kolorów na stronę. Liczenie na własny zmysł estetyczny lub szczęśliwy przypadek bywa zwykle zawodne i potrzebna jest pomoc z zewnątrz. Na szczęście tę pomoc można znaleźć w Internecie w postaci narzędzi komponujących palety kolorów. Wybór tych narzędzi jest dość duży, ale nie wszystkie do końca spełniają swoją rolę. Ja przedstawię dwa z nich, które najlepiej sprawdziły się w mojej pracy min. przy tworzeniu strony serwan.pl, ale też stron, które powstają w tej chwili.

Pierwszego narzędzia używam do wstępnego wyboru głównych kolorów. Jest to Color Scheme Designer. Głównym elementem tego narzędzia jest koło kolorów. Można je kliknąć w dowolnym miejscu wybierając kolor podstawowy. Do tego koloru zostaną dobrane inne kolory i utworzona z nich paleta, która znajduje się po prawej stronie koła. Zaznaczenie okienka „Show text” pod paletą kolorów spowoduje wyświetlenie napisu na każdym kolorze palety. Na dobór kolorów można wpływać poprzez ustawienia. Nag kołem kolorów mamy sześć modeli kompozycji.

Mono dobiera paletę na podstawie pojedynczego koloru. Przydatność tej palety jest dosyć ograniczona. Można jej użyć do prostych stron jako dodatku do czarnego tekstu na białym tle.

Complement nie ma nic wspólnego z komplementem. Ten model do wybranego koloru dodaje kolor komplementarny, mocno skontrastowany z wybranym kolorem. Kolorystyka tego modelu jest dość ryzykowna i nie sprawdza się przy każdej tematyce strony, ale oba wybrane kolory mogą być dobrym punktem wyjścia do komponowania palety w drugim narzędziu, które opiszę przy następnej okazji.

Triad do wybranego koloru dobiera dwa inne o równej odległości na kole kolorów od barwy podstawowej. Odległość tę można zmieniać poprzez przesunięcie na kole punktu symbolizującego jeden z dobranych kolorów, lub klikając na „Angle” po prawej stronie nad kołem i ustawiając odpowiedni kąt. Regulacja w tym modelu ograniczona została zakresem od 5 do 90 stopni. Kąt mierzony jest od nieistniejącego w tym modelu koloru komplementarnego. Uzyskana paleta jest ciekawsza niż w poprzednim modelu aczkolwiek nadal dość mocno skontrastowana. Paleta często sprawdza się na różnych stronach o tematyce rozrywkowej, dziecięcej lub młodzieżowej. Raczej należy jej unikać przy stronach biznesowych, finansowych czy informacyjnych. Wyjątkiem może być strona informacyjna czy biznesowa związana z grafiką, sztuką wizualną lub multimediami.

Tetraddo wybranego koloru dobrane są trzy inne w tym jeden kontrastowy pozostałe dwa też są względem siebie skontrastowane. Możemy jednak zmieniać odległości pomiędzy obiema parami kolorów, co może dać dość ciekawy efekt. Otrzymana w ten sposób paleta jest bardziej uniwersalna od poprzedniej. Nadal jednak są obszary, w których użycie takiej palety może wiązać się z ryzykiem nie trafienia do grupy docelowej.

Analogic jest modelem trójkolorowym podobnie jak Triad. Różnica między nimi jest niewielka, ale za to dosyć istotna. Regulacja odległości dodatkowych kolorów odbywa się również w zakresie 5 – 90 stopni, ale w stosunku do koloru podstawowego. Przy wartościach kąta poniżej 50 paleta wynikowa jest wystarczająco stonowana, by użyć jej tam, gdzie model Triad wydawał się być nieodpowiedni. Jest to model używany przeze mnie wraz z modelem następnym najczęściej, aczkolwiek ostateczną paletę komponuję w następnym z opisywanych narzędzi.

Accented analogic do modelu poprzedniego jest dodany kolor kontrastowy do koloru głównego. Uzyskana paleta jest bogatsza przy zachowaniu wszystkich zalet i zastosowań palety poprzedniej.

Skomponowane w ten sposób palety możemy dodatkowo wyregulować. Pod kołem kolorów znajdują się dodatkowe zakładki. Kliknięcie w „Adjust Scheme” przeniesie nas do narzędzia regulacji jaskrawości, nasycenia, kontrastu i jasności palety. Na zakładce „Color List” mamy próbki wszystkich kolorów z palety wraz z ich kodami szesnastkowymi gotowymi do użycia na stronie www.

Pod paletą kolorów znajdują się zakładki „Light page example” i „Dark page example” Kliknięcie ich powoduje wyświetlenie przykładowej strony używającej danej palety w wersji jasnej lub ciemnej.

W menu górnym Color Scheme Designer mamy możliwość cofania ostatnio wprowadzonych zmian, przywracania cofniętych zmian, wylosowania dowolnej palety, zasymulowania jak daną paletę widzą ludzie z różnymi zaburzeniami postrzegania barw i eksportu palety w różnych formatach.

Mam nadzieję, że opisane narzędzie pomoże Wam w wyborze odpowiednich kolorów na swoją stronę. Wybór kolorów jest ogromny, nie zawsze jednak zupełnie dowolny, często pojawia się potrzeba dobrania palety do loga lub innego elementu graficznego. Dobrze jest wtedy ten kolor z loga ustawić jako kolor główny i do niego dobierać paletę. Poszczególnym barwom nadaje się też różne znaczenie psychologiczne np. kolor niebieski oznacza autorytet, zielony – naturę, żółty – komunikację, a czerwony – namiętność. O tym też warto pamiętać, ale bez przywiązywania nadmiernej wagi. Żółty tekst na białym tle będzie raczej mało komunikatywny.

Zachęcam do korzystania z opisanego narzędzia i dzielenia się swoimi uwagami i spostrzeżeniami poniżej.

Co robią i czym się różnią funkcje isset() i empty()

23 września 2009

Wielu początkujących programistów php ma problemy z stosowaniem funkcji isset() oraz empty() – nie w każdej sytuacji potrafią jednoznacznie określić jaką wartość powinny te funkcje zwracać dla określonych argumentów. By wyjść im na przeciw postanowiłem zebrać najczęściej występujące przypadki i je wyjaśnić.

<?php
echo isset($a);
echo empty($a);
$a=NULL;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a nie istnieje lub ma wartość NULL, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.

<?php
$a=true;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość true, funkcja isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=false;
echo isset($a);
echo empty($a);
$a=0;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość false lub 0, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=-3;
echo isset($a);
echo empty($a);
$a=1.36;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a ma wartość liczbową różną od 0, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=”;
echo isset($a);
echo empty($a);
$a=’0′;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest pustym łańcuchem znaków lub łańcuchem składającym się z pojedynczego znaku ’0′, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=’000′;
echo isset($a);
echo empty($a);
$a=’ ‘;
echo isset($a);
echo empty($a);
$a=’Ala ma 3/4 kota’;
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a zawiera kilka znaków ’0′, lub zawiera znak spacji lub jest dowolnym innym ciągiem znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=array();
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest tablicą nie zawierającą żadnych elementów, funkcje isset($a) i empty($a) zwrócą wartość true.

<?php
$a=array(NULL);
echo isset($a);
echo empty($a);
$a=array(false);
echo isset($a);
echo empty($a);
$a=array(0);
echo isset($a);
echo empty($a);
$a=array(”);
echo isset($a);
echo empty($a);
?>

Gdy zmienna $a jest tablicą zawierającą puste elementy np. NULL, false, 0, pusty łańcuch znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.

<?php
$a=array(‘kolor’ => ‘zielony’);
echo isset($a['kształt']);
echo empty($a['kształt']);
$a=array(‘krokodyl’, ‘żaba’, ‘hipopotam’);
echo isset($a[8]);
echo empty($a[8]);
class Test
{
var $a;
}
$a=new Test();
echo isset($a->a);
echo empty($a->a);
?>

Gdy odwołujemy się do nieistniejącego klucza lub indeksu tablicy albo do pustego pola obiektu, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.

Dla wygody wszystkie rozpatrywane przypadki zebrałem w tabelce poniżej.

badany element isset() empty()
brak zmiennej false true
NULL false true
wartość logiczna true true false
wartość logiczna false true true
wartość liczbowa 0 true true
inna wartość liczbowa true false
pusty łańcuch znaków true true
łańcuch znaków zawierający zero true true
łańcuch znaków zawierający wiele zer true false
spacje true false
dowolny ciąg znaków true false
pusta tablica true true
tablica zawierająca puste elementy
(np. o wartościach NULL, false, 0, pusty łańcuch znaków)
true false
nieistniejący klucz tablicy false true
nieistniejący indeks tablicy false true
pole klasy bez podstawionej wartości false true

Zawodowy Programista – dzień piętnasty

28 sierpnia 2009

W dzisiejszym dniu tworzyliśmy listę znajomych i system komunikacji między użytkownikami portalu. Tym razem wystarczyło przekazać założenia, wyjaśnić kilka wątpliwości i omówić kilka świeżych pomysłów, niektóre z nich bardzo uatrakcyjniły komunikację pomiędzy użytkownikami portalu.
Przeczytaj resztę tego wpisu »

Zawodowy Programista – dzień czternasty

28 sierpnia 2009

Szkieletu portalu społecznościowego ciąg dalszy. Ostatnie dni kursu wyglądają w zasadzie jak zwyczajna codzienna praca programisty. Wspólnie określamy cele i założenia. Szukamy ewentualnych problemów, przed którymi należy się ustrzec i kursanci biorą się do pracy. Całą potrzebną wiedzę do wykonania zadania nabyli na poprzednich zajęciach. Teraz muszą nauczyć się ją wykorzystywać.
Przeczytaj resztę tego wpisu »

Zawodowy Programista – dzień trzynasty

27 sierpnia 2009

Znowu relacja nieco opóźniona. Mam nadzieję, że zdążę przed rozpoczęciem zajęć. Pierwsi kursanci już się pojawili.

Wczoraj rozpoczęliśmy pracę nad szkieletem portalu społecznościowego. Na początku omówiliśmy system logowania i rejestracji. Pod uwagę należało wziąć jego bezpieczeństwo i niezawodność czyli między innymi odporność formularza na ataki, potwierdzenie rejestracji (co zabezpiecza przed zakładaniem kont z podaniem cudzych adresów email – tu wystąpiły dwa warianty: z potwierdzeniem przez email i z generowanym hasłem wysyłanym na email), sprawdzenie zalogowania na każdej podstronie, która wymaga logowania i identyfikacja użytkownika.
Przeczytaj resztę tego wpisu »