polskie ogonki w unicode

luty 6th, 2010 Marcin Wadowski Comments off

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

$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 No comments

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 No comments

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 No comments

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
)

parsowanie pliku – php

październik 31st, 2009 Marcin Wadowski No comments

Mam plik z logami, z których intereuje mnie tylko część danych.
Plik z którego chcę wyciągnąć informacje “init.log” wygląda tak:

Oct 20 14:00:00 ws1-03463fc1e1c newsyslog[93689]: logfile turned over due to size&amp;amp;amp;amp;amp;amp;amp;gt;100K
Oct 20 14:34:50 ws1-03463fc1e1c installdb[11924]: started (uid 96)
Oct 20 14:34:50 ws1-03463fc1e1c installdb[11924]: Opened receipt database on '/' with schema 17.
Oct 20 14:34:57 ws1-03463fc1e1c installdb[11924]: done. (0.006u + 0.005s)
Oct 20 15:34:50 ws1-03463fc1e1c installdb[43080]: started (uid 96)
Oct 20 15:34:50 ws1-03463fc1e1c installdb[43080]: Opened receipt database on '/' with schema 17.
Oct 20 15:34:56 ws1-03463fc1e1c installdb[43080]: done. (0.006u + 0.004s)
Oct 20 19:58:27 ws1-03463fc1e1c installdb[28727]: started (uid 96)
Oct 20 19:58:27 ws1-03463fc1e1c installdb[28727]: Opened receipt database on '/' with schema 17.
Oct 20 19:58:33 ws1-03463fc1e1c installdb[28727]: done. (0.006u + 0.006s)
Oct 20 20:58:27 ws1-03463fc1e1c installdb[58388]: started (uid 96)
Oct 20 20:58:27 ws1-03463fc1e1c installdb[58388]: Opened receipt database on '/' with schema 17.
Oct 20 20:58:33 ws1-03463fc1e1c installdb[58388]: done. (0.007u + 0.006s)
Oct 21 08:28:28 ws1-03463fc1e1c installdb[28806]: started (uid 96)
Oct 21 08:28:28 ws1-03463fc1e1c installdb[28806]: Opened receipt database on '/' with schema 17.
Oct 21 08:28:34 ws1-03463fc1e1c installdb[28806]: done. (0.007u + 0.007s)
Oct 21 09:28:27 ws1-03463fc1e1c installdb[59279]: started (uid 96)
Oct 21 09:28:27 ws1-03463fc1e1c installdb[59279]: Opened receipt database on '/' with schema 17.
Oct 21 09:28:33 ws1-03463fc1e1c installdb[59279]: done. (0.006u + 0.004s)
Oct 21 10:28:28 ws1-03463fc1e1c installdb[89960]: started (uid 96)
Oct 21 10:28:28 ws1-03463fc1e1c installdb[89960]: Opened receipt database on '/' with schema 17.
Oct 21 10:28:34 ws1-03463fc1e1c installdb[89960]: done. (0.006u + 0.006s)
Oct 21 11:28:28 ws1-03463fc1e1c installdb[20809]: started (uid 96)
Oct 21 11:28:28 ws1-03463fc1e1c installdb[20809]: Opened receipt database on '/' with schema 17.
Oct 21 11:28:34 ws1-03463fc1e1c installdb[20809]: done. (0.006u + 0.005s)
Oct 21 12:28:29 ws1-03463fc1e1c installdb[51229]: started (uid 96)
Oct 21 12:28:29 ws1-03463fc1e1c installdb[51229]: Opened receipt database on '/' with schema 17.
Oct 21 12:28:35 ws1-03463fc1e1c installdb[51229]: done. (0.006u + 0.006s)
Oct 21 13:28:28 ws1-03463fc1e1c installdb[82151]: started (uid 96)
Oct 21 13:28:28 ws1-03463fc1e1c installdb[82151]: Opened receipt database on '/' with schema 17.
Oct 21 13:28:34 ws1-03463fc1e1c installdb[82151]: done. (0.006u + 0.004s)
Oct 21 14:28:29 ws1-03463fc1e1c installdb[12290]: started (uid 96)
Oct 21 14:28:29 ws1-03463fc1e1c installdb[12290]: Opened receipt database on '/' with schema 17.
Oct 21 14:28:35 ws1-03463fc1e1c installdb[12290]: done. (0.006u + 0.005s)
Oct 21 15:28:30 ws1-03463fc1e1c installdb[43523]: started (uid 96)
Oct 21 15:28:30 ws1-03463fc1e1c installdb[43523]: Opened receipt database on '/' with schema 17.
Oct 21 15:28:36 ws1-03463fc1e1c installdb[43523]: done. (0.006u + 0.004s)
Oct 22 08:33:50 ws1-03463fc1e1c installdb[30573]: started (uid 96)
Oct 22 08:33:50 ws1-03463fc1e1c installdb[30573]: Opened receipt database on '/' with schema 17.
Oct 22 08:33:56 ws1-03463fc1e1c installdb[30573]: done. (0.006u + 0.006s)

a chcę wyciągnąć z niego linia po linii pełną datę z gofdziną oraz id akcji, np:
Oct 22 08:33:56 installdb[30573]
cała reszta mnie nie interesuje.
Tutaj każda linijka tekstu zaczyna się od daty potem trzeba przeskoczyć kilka znaków i wybrać id_akcji,
można więc wybrać znaki od 1-16, oraz od 32-48, co powinno załatwić sprawę.

tak to może wyglądać:


//wczytaj plik do tablicy
$content = file('init.log');

//wybierz potrzebne znaki z każdej linijki i przeiteruj po nich

foreach($content as $data)
{
	echo substr($data, 0, 16);
	echo substr($data, 32, 16);
}

wynik:

Oct 20 14:00:00 newsyslog[93689]
Oct 20 14:34:50 installdb[11924]
Oct 20 14:34:50 installdb[11924]
Oct 20 14:34:57 installdb[11924]
Oct 20 15:34:50 installdb[43080]
Oct 20 15:34:50 installdb[43080]
Oct 20 15:34:56 installdb[43080]
Oct 20 19:58:27 installdb[28727]
Oct 20 19:58:27 installdb[28727]
Oct 20 19:58:33 installdb[28727]
Oct 20 20:58:27 installdb[58388]
Oct 20 20:58:27 installdb[58388]
Oct 20 20:58:33 installdb[58388]
Oct 21 08:28:28 installdb[28806]
Oct 21 08:28:28 installdb[28806]
Oct 21 08:28:34 installdb[28806]
Oct 21 09:28:27 installdb[59279]
Oct 21 09:28:27 installdb[59279]
Oct 21 09:28:33 installdb[59279]
Oct 21 10:28:28 installdb[89960]
Oct 21 10:28:28 installdb[89960]
Oct 21 10:28:34 installdb[89960]
Oct 21 11:28:28 installdb[20809]
Oct 21 11:28:28 installdb[20809]
Oct 21 11:28:34 installdb[20809]
Oct 21 12:28:29 installdb[51229]
Oct 21 12:28:29 installdb[51229]
Oct 21 12:28:35 installdb[51229]
Oct 21 13:28:28 installdb[82151]
Oct 21 13:28:28 installdb[82151]
Oct 21 13:28:34 installdb[82151]
Oct 21 14:28:29 installdb[12290]
Oct 21 14:28:29 installdb[12290]
Oct 21 14:28:35 installdb[12290]
Oct 21 15:28:30 installdb[43523]
Oct 21 15:28:30 installdb[43523]
Oct 21 15:28:36 installdb[43523]
Oct 22 08:33:50 installdb[30573]
Oct 22 08:33:50 installdb[30573]
Oct 22 08:33:56 installdb[30573]
Categories: php Tags: ,

JQueryUI datepicker jako menu

październik 21st, 2009 Marcin Wadowski No comments

Prosty przykład jak można wykożystać element JQueryUI, datepicker jako nawigację na stronie tak aby po kliknięciu na konkretną datę zostać przekierowanym np. na URL http://moja.domena?n=12/10/2009.

Trzeba pobrać element datepicker i wstawić jego wartość do URL i przekierować na konkretny adres za pomocą window.location.replace(“http://moja.domena”); poniżej kodzik, do którego potrzebujemy oczywiście jquery-1.3.2.min.js oraz jquery-ui-1.7.1.custom.min.js a ja wykożystałem przykład datepicker wprost ze strony jqueryui wraz ze stylami css jquery-ui-1.7.1.custom.css

sam JS

<script type="text/javascript">
			$(function(){

				// Accordion

				// Datepicker
				$('#datepicker').datepicker({
					inline: true
				});

				// Slider

			});

			$().ready(function()
							{
								$('#datepicker').click
													( function()
														{
														window.location.replace("http://www.mysite.com/?date=" + $('#datepicker').val());
														}
													);
							}
					);

		</script>

a całość w pliku html wygląda tak:

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>jQuery UI Example Page</title>
		<link type="text/css" href="css/black-tie/jquery-ui-1.7.1.custom.css" rel="stylesheet" />
		<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
		<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript">
			$(function(){

				// Accordion

				// Datepicker
				$('#datepicker').datepicker({
					inline: true
				});

				// Slider

			});

			$().ready(function()
							{
								$('#datepicker').click
													( function()
														{
														window.location.replace("http://www.mysite.com/?date=" + $('#datepicker').val());
														}
													);
							}
					);

		</script>
		<style type="text/css">
			/*demo page css*/
			body{ font: 62.5% "Trebuchet MS", sans-serif; margin: 50px;}
			.demoHeaders { margin-top: 2em; }
			#dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}
			#dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: -8px;}
			ul#icons {margin: 0; padding: 0;}
			ul#icons li {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left;  list-style: none;}
			ul#icons span.ui-icon {float: left; margin: 0 4px;}
		</style>
	</head>
	<body>

		<!-- Datepicker -->
		<h2 class="demoHeaders">Datepicker</h2>
		<div id="datepicker"></div>

<div class="ui-datepicker">

<p>Date: <input id="datepicker" type="text"></p>

</div><!-- End demo -->

	</body>
</html>
Categories: JQuery, JQueryUI Tags: , ,

sleep problem ideneb 10.5.8

wrzesień 10th, 2009 Marcin Wadowski No comments

Problem z usypianiem iDeneba 10.5.8 rozwiązany.

No i trzeba podziękować pista7 za wypuszczenie nowych paczek naprawczych do iDeneb 10.5.8. . Stało się to jakieś dwa tygodnie temu ale dopiero teraz miałem chwilę czasu na zainstalowanie kilku poprawek. Na pewno wiele osób miało problemy z usypianiem laptopa po updacie z 10.5.7 na 10.5.8 teraz można to rozwiązać :) Wystarczy pobrać paczkę z kextami np stąd lub stąd 10.5.8_Thireus_Fixes_3.4.zip rozpakować i zainstalować SleepEnabler.kext z katalogu Sleep przy pomocy KextHelper’a o którym już kiedyś wspominałem. Potem jak zwykle ‘Disk Utility’ -> Repair Disk Permissions i restart komputera. Ładnie działa choć jak zawsze przed instalacjami i modyfikacjami modułów kernela dobrze jest zrobić sobie kopię zapasową najważniejszych dokumentów.

Tak na marginesie to polecam aktualizację 10.5.7 na 10.5.8 robić z paczki iDeneb 10.5.8 Combo Update & iDeneb Delta Upgrade KIT v10.5.8 a nie z systemowego ‘Software update’ mackintosha bo to niestety może się wykrzaczyć i usunąć nam potrzebne moduły które zastąpiliśmy zamiast oryginalnych Leopardowych paczek, które nie zawsze współdziałają z naszymi komputerami. Jeśli jednak ktoś zrobił ‘Software update’ i ma jakieś problemy z działaniem systemu, to życzę miłego przeglądania logów systemowych :)

Categories: Hackintosh iDeneb Tags:

mount hfsplus iDeneb to Ubuntu

wrzesień 10th, 2009 Marcin Wadowski No comments

Jak to zwykle z komputerami bywa odmawiają posłuszeństwa wtedy kiedy najbardziej ich potrzebujemy. Od czasu do czasu zachciewa mi się grzebać w kext’ach iDeneba i coś zepsuć. Właśnie usówałem i wgrywałem sobie nowe moduły do zarządzania energią bo po ostatnim updacie do iDeneb 10.5.8 nie chce mi działać sleep, i usunąłem sobie niechcący moduł ACPI z /System/Library/Extensions/ no i pojawił się problem, system nie wstaje, no i prawidłowo bo nie wie jak ma zarządzać energią użądzeń. Myślałem że najzwyczajniej zastartuję kompa z np Ubuntu live CD i przekopiuję backup modułu w odpowienie miejsce, nic z tego, Ubuntu daje możliwość podmontowania partycji hfsplus ale bez RW więc moje:

sudo mount -t hfsplus /dev/sda1 /home/ubuntu/osx

nie daje pożądanych rezultatów, partycja jest montowana ale bez możliwości zapisu. Dopiero po jakimś czasie dokopałem się do postów gdzie inni też mieli ten sam problem z montowaniem partycji osx’owych pod ubuntu, ponoć zostało to zgłoszone jako oficjalny bug ale chyba nikt z tym jeszcze nic nie zrobił. W końcu udało mi się znaleźć, to czego potrzeba do zamontowania RW partycji Apple’a to konsola i kilka komend poniżej, zadziałało to dla mnie może i komuś się przyda:

1. cd /home/ubuntu/
2. mkdir osx
3. sudo mount -t hfsplus -o force,rw,nosuid,nodev,uid=1000 /dev/sda1 /home/ubuntu/osx
3. cd /home/ubuntu/osx

działa :) wszystkie komenty związane z edycją plików wykonywać trzeba jako root ale to małe utrudnienie ;)
np:

root cp -rf /kext_backup/io_sub.kext /System/Library/Extensions

Categories: Hackintosh iDeneb Tags: