iteracja JQ

marzec 10th, 2010 Marcin Wadowski Comments off

Iteracja po wszystkich elementach listy, zaznaczając miejsce w którym się aktualnie znajdujemy na czerwono.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>untitled</title>
	<meta name="generator" content="TextMate http://macromates.com/">
	<meta name="author" content="wadziu">
	<!-- Date: 2010-03-09 -->
<script type="text/javascript" charset="utf-8" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>

<style type="text/css" media="screen">
	.prev, .next {
		cursor: pointer;
	}
</style>

</head>
<body>

	<div class="buttons">
		<span class="prev">
			prev
		</span>

		<span class="next">
			next
		</span>
	</div>

	<ul>
		<li>uno</li>
		<li>dwa</li>
		<li>tri</li>
		<li>quatro</li>
		<li>five</li>
		<li>six</li>
		<li>sem</li>
		<li>ojto</li>
		<li>dziewięć</li>
		<li>ostatni</li>
	</ul>

</body>
</html>
<script type="text/javascript" charset="utf-8">
	$().ready(function(){

		//inicjalizacja zmiennej, iterujemy od zera ale ze wględu na inkrementację
		//w linii 60 trzeba zainicjalizować zmienną o wartości -1
		var next = -1;

		$("span.next").click(function(){

			if(next != -2 && next < 10)
			{
				//inkrementacja do następnego na liście
				next++;

				//kolor nastepnego na red, reszta rodzeństwa na black
				$("ul li:eq(" + next + ")").css("color", "red");
				$("ul li:eq(" + next + ")").siblings().css("color", "black");
			}

			//warunek graniczny, index na pierwszym elemencie
			if(next == -2)
			{
				next = 0;
			}

			//warunek graniczny, index na ostatnim elemencie
			if(next >= 10)
			{
				next = 9;
			}

		});

		$("span.prev").click(function(){

			if(next != -1 && next < 10)
			{

				//dekrementacja o jeden wcześniej na liście
				--next;

				//kolor poprzedniego na red, pozostałe black
				$("ul li:eq(" + next + ")").css("color", "red");
				$("ul li:eq(" + next + ")").siblings().css("color", "black");
			}

			//warunek graniczny, index na pierwszym elemencie
			if(next == -1)
			{
				next = 0;
			}

			//warunek graniczny, index na ostatnim elemencie
			if(next >= 10)
			{
				next = 9;
			}

		});
	});
</script>
Categories: JQuery, Java Script, informacje ogólne Tags:

ui.selectmenu regenerate

luty 22nd, 2010 Marcin Wadowski Comments off

Plugin ui.selectmenu pozwala na wygenerowanie dynamicznego menu lub np pola select formularza. Jeżeli mamy frmularz z wieloma polami select, które są dodatkowo zależne od siebie to dobrze jest umieć wygenerować listę na nowo.
Na przykład dwie listy SELECT:

lista1:
transport powietrzny
transport lądowy

lista2:
Lufthansa
Wizzair
Aeroflot

lista2:
DHL
PocztaPolska

w zależności od tego co wybierzemy z listy1 chemy aby pojawiła się adekwatna do niej lista2 czyli wybierając transport powietrzny na liście2 chcemy mieć Lufthansa, Wizzair, Aeroflot żeby to zrobić musimy wygenerować listę2 na nowo.

kolejno:


$(moja_lista)('destroy'); //usówamy starą listę
$(moja_lista).selectmenu(); //generujemy nową listę

dokumentacja ui.selectmenu

a tak poza tematem, repo jquery-ui.googlecode.com

Categories: programowanie Tags:

bazy danych

luty 22nd, 2010 Marcin Wadowski Comments off

szukając ostatnio nieco poszerzonych informacji na temat ransakcji w bazach danych, znalazłem dobry (według mnie) wstęp do podstaw baz daych.
Nie będę kopiował tekstu autora, ale podam linka dla wszystkich zainteresowanych
wstęp do baz danych

Categories: informacje ogólne Tags:

firebug w firefox nieco oszukuje

luty 10th, 2010 Marcin Wadowski Comments off

Jedno z podsawowych narzędzi web developera, Firebug jako wtyczka do Firefoxa albo wbudowany inspektor z Safari. Jeżeli zrobimy mały błąd w składniowy w HTML’u dostaniemy kilka różnych wyników w zależności od przeglądarki. Przykład


<div>
	<h1>head text</h1>
	<h2>title</h1>
</div>

Firefox:

firefox

w Firebugu zobaczymy coś innego, niepoprawnie zamknięty tag h2 został tutaj pokazany jako zamknięty poprawnie:
firebug

w źródle strony zobaczymy zobaczymy prawdziwy niepoprawiony kod:
source

Firebug zczyta to co poprawił Firefox, więc tagi są poprawne pomimo iż rzeczywistość jest inna.

Categories: informacje ogólne Tags:

polskie ogonki w unicode

luty 6th, 2010 Marcin Wadowski Comments off

$replace_with =array(
					"&#x17B;",
					"&#x179;",
					"&#x15A;",
					"&#xD3;",
					"&#x143;",
					"&#x141;",
					"&#x118;",
					"&#x106;",
					"&#x104;",
					"&#x15B;",
					"&#x144;",
					"&#x119;",
					"&#x107;",
					"&#x105;",
					"&#x142;",
					"&#xF3;",
					"&#x17C;",
					"&#x17A;"
					);

$replace = array("Ż","Ź","Ś","Ó","Ń","Ł","Ę","Ć","Ą","ś","ń","ę","ć","ą","ł","ó","ż","ź");

$phrase  = 'zażółć gęślą jaźń';
$newphrase = str_replace($replace, $replace_with, $phrase);

echo "oryginalny tekst: ". $phrase ."\n\n";

echo "tekst przekonwertowany: \n".$newphrase;
Categories: informacje ogólne Tags:

xdebug osx mamp

luty 1st, 2010 Marcin Wadowski Comments off

Dla dobrej zabawy z debugowaniem mamy oczywiście xdebuga.

Dla instalacji można oczywiście pobrać źródła z http://xdebug.com/ albo pójść na skróty i skorzystać z Komodo Debugger Extensions . Ja wybrałem oczywiście drogę na skróty, więc pobrałem sobie xdebuga z Komodo

komodo

Mamy tam “PHP Remote Debugging” skąd pobrałem sobie paczkę dla OSX. Dalej, rozpakować i przekopiować interesujący nas plik ‘xdebug.so’ do /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20050922/ . To oczywiście jeśli używamy MAMP. Potem krótka edycja php.ini

Obrazek 1

dopisuję

[xdebug]
zend_extension=/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so
xdebug.file_link_format = “txmt://open?url=file://%f&line=%l”
xdebug.profiler_enable=1
xdebug.profiler_output_dir=”PATH_TO_DEBUG_OUTPUT”
xdebug.trace_format=1
xdebug.trace_output_dir=”PATH_TO_DEBUG_OUTPUT”
xdebug.var_display_max_children=3
xdebug.extended_info=1
xdebug.collect_vars=1
; cgi.force_redirect = 1

Restart apache i have fun :)

Do analizy logów xdebuga: MacCallGrind

Categories: informacje ogólne Tags:

SmartyPaginate

styczeń 31st, 2010 Marcin Wadowski Comments off

Paginacja – przydatna funkcjonalność jaką oferują SMARTY w dodatku SmartyPaginate.class.php.

require_once(/libs/SmartyPaginate.class.php);

 // required connect
 SmartyPaginate::connect();
 // set items per page
 SmartyPaginate::setLimit(10);
 SmartyPaginate::setUrl('wymagany_prefix_URL');

 // assign your db results to the template
$dane = getAll();

SmartyPaginate::setTotal(count($dane));
$dane = array_slice($dane, SmartyPaginate::getCurrentIndex(),SmartyPaginate::getLimit());

 $Smarty->assign('variable', $dane);
 // assign {$paginate} var
 SmartyPaginate::assign($panel);
 // display results

wyświetlenie paginacji

{paginate_middle}

view

Categories: informacje ogólne Tags:

textmate bloggin, pisanie postów w textmate

styczeń 30th, 2010 Marcin Wadowski Comments off

Textmate pozwala na publikowanie postów na blogach :)
Fajnie współpracuje min. z Wordpresem ale trzeba pamiętać aby włączyć tą usługę w panelu administracyjnym
swojego bloga (zakładka setting -> publikacja)

settings-publikacja

W Textmate otwieramy nowe okno ( CMD + N ) i wybieramy blogging->setup blog z zakładki na dole

gear

konfiguracja

Konfigurujemy ustawienia bloga

Obrazek 5

wpisujemy nazwe bloga i adres, np:

Obrazek 6

dla wordpress’a mamy adres http://userName@adresbloga/xmlrpc.php

otwieramy nowe okno edytora i piszemy posta, którego publikujemy ( Ctrl + CMD + P ) lub wybieramy odpowiednią opcję z zakładki.
Zostajemy jeszcze poproszeni o podanie tematu posta i hasło do bloga.
Otwiera się okno przeglądarki, w której można podejrzeć wpis.
Okno z treścią posta zostaje przeładowane i możemy zmienić istniejący wpis i opublikować go ponownie a jeśli nie zmienimy Post id to zostanie on zaktualizowany.

Obrazek 7

Nie wiem jak to działa z innymi blogami ale z Wordpressem śmiga :)

Categories: informacje ogólne Tags:

USB problem ideneb 10.5.8

listopad 12th, 2009 Marcin Wadowski Comments off

Każdy kto aktualizował swojego iDeneb’a z 10.5.7 do 10.5.8 z pewnością wypowiedział przynajmniej kilka niecenzuralnych słów. Ja nawrzucałem ich całe mnóstwo, nie wiedziałem, że znam tyle różnych przymiotników w tylu różnych językach. Po wielu próbach i długich szperaniach w internecie udało mi się naprawić 99% problemów, które wyrosły jak grzyby po deszczu wraz z nową aktualizacją. Pozostały problemy z USB a konkretni użądzeniami zewnętrznymi podłączanymi przez USB do laptopa. Moj ideneb stoi na dell 1525 Latitude.

Jak powszechnie wiadomo aktualizacja do 10.5.8 wprowadza szereg usprawnień w tym między innymi:
“Improves compatibility with some external USB hard drives.”
“Usprawnia w spółpracę z niektórymi zewnętrznymi dyskami USB” – to tak w wolnym tłumaczniu.
No i faktycznie usprawniła, jak podłączysz dysk na USB to widzisz szary (bo to nie Microsoft) ekran i system zwisa. No ale do sedna, można dosłownie zwariować, za każdnym niemal razem kiedy podpinasz coś na USB zmuszony jesteś zrobić twardy reset, no to się wziąłem za szperanie, googlowanie etc. Znalazło się rozwiązanie. Sterownik VoodooUSBEHCI.kext do użądzeń USB, działa pięknie a najlepiej instalować przez KextHelper’a o którym już pisałem kiedyś. Więc tak po krótce:

1. pobierz sterownik z http://www.dailyblogged.com/1348/os-x-10-5-8-installation-guide/ trzeba tam trochę poszperać, ale możesz również pobrać stąd

2. potem używamy KextHelper’a do instalacji

3. jeżeli system właśnie się nie zawiesił to restartujemy nasz komputer i wsjo, gotowe.

Niby niewiele roboty a ile frajdy jak już działa :)

Categories: Hackintosh iDeneb Tags: ,

array_walk w php

październik 31st, 2009 Marcin Wadowski Comments off

PHP udostępnia funkcję, która pozwala przeiterować po każdym elemencie tablicy i zastosować na nim jakąś dowolnie napisaną przez siebie funkcję. Bardzo przydatna opcja jeśli chcemy w tablicy wykonać pewne operacje inaczej niż wykożystując pętlę foreach, jest to też bardziej elegancki sposób jak sądzę.

tak to wygląda za pomocą pętli foreach:


//jakas tablica 3 elementowa
$arr = array('jeden'=>1, 'trzy'=>3, 'dwa'=>2);

echo "tablica przed array_walk ";
print_r($arr);

$sufix = 'nazwa';
foreach($arr as $key=>$val)
{
	$val +=1;
	$val = (string)$val . " " . $sufix;

		$arr[$key]=$val;
}

echo "tablica po foreach: " ;
print_r($arr);

wynik:

tablica przed zmianami Array
(
    [jeden] => 1
    [trzy] => 3
    [dwa] => 2
)

 tablica po foreach: Array
(
    [jeden] => 2 nazwa
    [trzy] => 4 nazwa
    [dwa] => 3 nazwa
)

a tak za pomocą array_walk

<?
//tekst preformatowany, żeby tablica ładniej się wyświetliła
echo "<pre>";

//jakas tablica 3 elementowa
$arr = array('jeden'=>1, 'trzy'=>3, 'dwa'=>2);

echo "tablica przed zmianami";
print_r($arr);

function show(&$val, $key, $sufix) //&$val referencja do elementów tablicy $arr
{
	$val += 1; //inkrementujemy o 1 wartosc elementów tablicy
	$val = (string)$val ." ". $sufix; //rzutujemy na stringa i dodajemy przyrostek do nazwy
}

array_walk($arr, 'show', 'nazwa');

echo "<br> tablica po array_walk: " ;
print_r($arr);
?>
[php]

i wynik:

[plain]
tablica przed zmianamiArray
(
    [jeden] => 1
    [trzy] => 3
    [dwa] => 2
)

 tablica po array_walk: Array
(
    [jeden] => 2 nazwa
    [trzy] => 4 nazwa
    [dwa] => 3 nazwa
)
[/plain]

w przypadku array_walk musimy jednak pamiętać że jeżeli nie odniesiemy się do elementów tablicy przez referencję, jak to widać powyżej, to zmiany nie zostaną w niej zapisane, poniżej przykład:

[php]
<?
//tekst preformatowany, żeby tablica ładniej się wyświetliła
echo "<pre>";

//jakas tablica 3 elementowa
$arr = array('jeden'=>1, 'trzy'=>3, 'dwa'=>2);

echo "tablica przed zmianami";
print_r($arr);

function show($val, $key, $sufix)//brak referencji do tablicy $arr
{
	$val += 1; //inkrementujemy o 1 wartosc elementów tablicy
	$val = (string)$val ." ". $sufix; //rzutujemy na stringa i dodajemy przyrostek do nazwy
}

array_walk($arr, 'show', 'nazwa');

echo "<br> tablica po array_walk: " ;
print_r($arr);
?>

w rezultanie tablica $arr pozostaje niezmieniona:

tablica przed zmianamiArray
(
    [jeden] => 1
    [trzy] => 3
    [dwa] => 2
)

 tablica po array_walk: Array
(
    [jeden] => 1
    [trzy] => 3
    [dwa] => 2
)