EpicWEB.pl

webdesign, programowanie, phat lewt!

Ostatni projekt

ddrpl.com

Ostatnie wiadomości

Spam - przepisy widmo

Od jakiegoś czasu dostaję co raz więcej spamu, który "wysłany jest zgodnie z ustawą z dnia bla bla bla" albo "e-mail pochodzi z ogólnodostępnej bazy danych". Fajnie fajnie, ale e-mail, na który dostałem wiadomość nie istnieje - dostałem go tylko dlatego, że mam włączony catch-all.

Starałem się znaleźć informację o tym gdzie można zgłosić taką sytuację - jedyne co znalazłem to liczne grupy i fora dyskusyjne, na których "specjaliści" twierdzą, że lepiej sobie darować bo i tak nic nie da się zrobić. To po co w ogóle ustanawiać takie prawo? Po co GIODO męczy mnie, żebym przy każdym rekordzie zawierającym e-mail w newsletterze trzymał informację skąd i kiedy go pozyskałem skoro "Generalny Inspektor Ochrony Danych Osobowych (...) nie jest organem właściwym w sprawie stosowania przepisów ustawy o świadczeniu usług drogą elektroniczną oraz prowadzenia postępowania w sprawach naruszenia tych przepisów"? Żeby było śmieszniej - UOKiK odsyła mnie do GIODO.

Wielu pewnie powie, żeby rzeczywiście olać sprawę i uczyć filtr antyspamowy. Problem w tym, że ostatnio w folderze Spam na GMailu znalazłem kilka maili od klientów, którzy później pieklą się, że ich olewam ...

Asfalt w obliczu 34°C

Pamiętam, że jak byłem mały to w upalne dni można było patykiem pisać po rozpuszczającym się od temperatury asfalcie. Dziś, na skrzyżowaniu ul. Żwirki i Piotrkowskiej uraczył mnie podobny widok.

Na skutek wysokiej temperatury topi się uszczelnienie które zaaplikowano pomiędzy betonowe płyty a same tory. Na skutek przejazdu tramwaju:

  1. nadmiar asfaltu(?) wypływa w pokaźnych bryłach i zalega na całej przecznicy
  2. powykrzywiane tory powodują wystrzał iskier spod przejeżdżających tramwajów, całość okropnie śmierdzi i zapełnia okolicę dymem
  3. rozgrzana maź przykleja się do kół i hamulców, na skutek czego pomimo załączenia hamulca na maxa (w tramwaju rozlega się dźwięk alarmowy) tramwaj sunie dalej jak na smarze

Pewnie znowu okaże się, że odcinek ulicy który praktycznie dopiero co był remontowany nadaje się do powtórnego wykonania. I to tylko tutaj - ciekawe co dzieje się np. na skrzyżowaniach z Piłsudskiego? :-)

PHP - generowanie mapy witryny

Generowanie mapy witryny - prosta, wydawało by się - rzecz. Jednak, kiedy w naszej firmie pojawiło się wolne stanowisko programisty postanowiliśmy właśnie takie zadanie dać kandydatom do zrealizowania, w celu odsiania "programistów" od programistów.

Zadanie okazało się jednak wykraczające poza wszelkie normy i na jakieś 20 osób (na przestrzeni 5 miesięcy) udało się je zrobić 5. Z tego dwie skopiowały (nie do końca działające) rozwiązania z sieci...

Twoje zadanie - mając tabelę (CREATE TABLE `_tree` (`id` INT(11), `parent` INT(11), `sort` INT(11), `nazwa` VARCHAR(255))) napisz skrypt, który wygeneruje mapę witryny w HTML (w dowolnym standardzie). Większość osób zaczyna od napisania prostego zapytania wyciągającego wszystkie wpisy z parent = 0. Nieliczni dodadzą jeszcze sort. Później, jeżeli ktoś już to zrobi przystępuje do zagnieżdżania kolejnych poziomów while() a nam ręce opadają ...

Dlatego, drogi poszukiwaczu odpowiedzi w sieci, poniżej zamieszczam dwa rozwiązania - wykuj się ich na pamięć, przyjdź do nas i pewnie dostaniesz posadkę ...

Rozwiązanie 1 - rekurencja - dużo zapytań do SQL, mało myślenia:

function lev($parent) {
	$query = mysql_query('SELECT * FROM `_tree` WHERE `parent` = '.(int)$parent.' ORDER BY `sort` ASC');
	if(mysql_num_rows($query)) {
		echo '<ul>'."\n";
		while($dane = mysql_fetch_array($query, 1)) {
			echo '<li>'."\n";
			echo $dane['nazwa']."\n"; 
			lev($dane['id']);
			echo '</li>'."\n";
		}
		echo '</ul>'."\n";
	}
}

lev(0);

Rozwiązanie 2 - jedno zapytanie, nieco więcej myślenia:

function getData($parent) {
    $query = mysql_query('SELECT * FROM `_tree` WHERE `parent` >= '.(int)$parent.' ORDER BY `parent` ASC, `sort` ASC');
    $return = array();
    while($dane = mysql_fetch_array($query, 1)) {
        $return[] = $dane;
    }
    return $return;
}

function sortData($data, $root = 0, $level = 0) {
    static $return = array();
    foreach($data as $item) {
        if($item['parent'] == $root) {
            $item['level'] = $level;
            $return[] = $item;
            sortData($data, $item['id'], $level+1);
        }
    }
    return $return;    
}
foreach(sortData(getData(0)) as $item) {
    echo str_repeat('&nbsp;', $item['level'] * 5).$item['nazwa'].'<br />';
}

Niech mi ktoś powie, że to jest mega skomplikowane? Dzisiaj pojawił się jeden człowiek, który był po 2 kierunkach na Politechnice Łódzkiej. Po godzinie nic nie zrobił. Drugi - stwierdził, że pracował w Prado (taki framework) - więc zainstalował sobie WAMP na laptopie, zassał Prado i ... po 2 godzinach wyszedł bez "do widzenia".

Apple przewodnikiem Standardów Sieciowych*

* uwaga, nasze rozwiązania oparte na Otwartych Standardach Sieciowych wyświetlają się poprawnie tylko u posiadaczy przeglądarki Apple ® Safari oraz Mac OS X ® Snow Leopard ®

Tym krótkim wyjaśnieniem można podsumować prezentację rozwiązań wykonanych w HTML5, CSS3 i JS, które zastąpić mają Flasha w urządzeniach firmy Apple

Pierwsze, co rzuca się w oczy to to, że przedstawione prezentacje "nie działają" na niczym innym niż Safari. Nie ważne, czy wejdziecie przez stronę informacyjną, na docelowy adres etc. - standardy wg. Apple implementuje tylko Safari, więc nawet nie próbuj odpalać strony pod niczym innym.

Jest to pierwsze kłamstwo, ponieważ większość z zaprezentowanych rozwiązań obsługuje chociażby Firefox, a zdecydowaną większość da się obejrzeć w Chrome. No ale wiedziony hasłem marketingowym postanowiłem zainstalować Safari 4 i obejrzeć demonstracje.

Na pierwszy ogień poszło <VIDEO> które ... nie działa.

Wygląda na to, że Mozilla okłamała mnie twierdząc, że najnowszy Firefox dobrze radzi sobie z tagiem <VIDEO>. Okazuje się, że Standardy obsługuje tylko jeden kodek, w tylko jednym programie, tylko jednej Firmy. A przynajmniej tak twierdzi Tylko Jeden Steve. Nie wierzę mu. Przejdźmy do audio - niestety, nie mam kodeka MPEG-4. Wiadomo - mogę pobrać go ze strony Jednej Firmy. Jednego Steva.

Inne dema (czcionki, galeria, przejścia czy efekty w 2D) nie są praktycznie niczym nowym. Tak, transformacje 2D w CSS były już od jakiegoś czasu. Co ciekawe, Standardy w CSS wywoływane są za pomocą prefixów dla -webkit-* które działają tylko w przeglądarkach opartych na tym właśnie silniku. Skoro Safari jest w pełni zgodne ze standardami, a "inne nowe przeglądarki już niebawem zaimplementują te rozwiązania", to dlaczego muszę używać -webkit-border-radius i innych sztuczek, by wyświetlać odpowiednie efekty?

Ok, przejdźmy do najbardziej interesującej nas rzeczy - transformacje 3D. No, to wykonane dobrze mogło by rzeczywiście zabić Flasha, otworzyć developerom nowe możliwości (które klient będzie do oporu nadużywać) - zobaczmy -

No chyba ktoś tu sobie żarty ze mnie stroi? Serio? Żeby zobaczyć jak implementujecie coś, co wg. was jest Standardem potrzebuje kupić komputer, który produkuje tylko Jedna Firma, zainstalować na nim system, który wydaje tylko Jedna Firma oraz używać przeglądarki wydanej przez Jedną Firmę?

I to ma wg. was byś ten Otwarty Standard, który Safari już implementuje i który mogę już używać na stronach tak, by wzbogacić odczucia użytkowników? Nie, mi to raczej wygląda na rozwiązanie mające ułagodzić wzburzenie tych, którym brakuje Flasha. Pokazanie "hej, po co wam Flash! przecież to samo można zrobić w HTML5!" Można, tylko powiedzcie mi kto chce robić dwa rozwiązania - jedno - we Flashu, działające w 95% (wartość z kapelusza) przypadków - i drugie, wykonane w HTML specjalnie dla ludzi na oślep rzucających się na wszystko z logiem Apple?

Swoją drogą, jeżeli już inne nowe przeglądarki "dogonią" Safari we wspieraniu "standardów", to i tak nie będą się one de-facto nadawać do używania na co dzień do momentu aż nie będą one wspierane przez Internet Explorer, a każdy kto mówi inaczej albo ma grupę targetu zupełnie pozbawioną użytkowników IE, albo jest po prostu marzycielem.