EpicWEB.pl

webdesign, programowanie, phat lewt!

Ostatni projekt

ddrpl.com

Ostatnie wiadomości

Dyrektywa 2009/136/EC - czy Twoja strona jest gotowa?

25 maja 2011 wchodzi w życie dyrektywa Unii Europejskiej o nr. 2009/136/EC.

Dla nas najciekawsza jest informacja z pkt zatytułowanego art. 5 ust. 3 otrzymuje brzmienie:

Państwa członkowskie zapewniają, aby przechowywa­nie informacji lub uzyskanie dostępu do informacji już prze­chowywanych w  urządzeniu końcowym abonenta lub użytkownika było dozwolone wyłącznie pod warunkiem że dany abonent lub użytkownik wyraził zgodę zgodnie z  dy­rektywą 95/46/WE po otrzymaniu jasnych i wyczerpujących informacji, między innymi o  celach przetwarzania. Nie sta­nowi to przeszkody dla każdego technicznego przechowy­wania danych ani dostępu do nich jedynie w celu wykonania transmisji komunikatu za pośrednictwem sieci łączności elektronicznej, lub gdy jest to ściśle niezbędne w celu świad­czenia usługi przez dostawcę usługi społeczeństwa informa­cyjnego, wyraźnie zażądanej przez abonenta lub użytkownika.”;

W telegraficznym skrócie - zapis ten nakłada na Usługodawcę obowiązek poinformowania o celu i uzyskania wyraźnej, świadomej zgody Odwiedzającego na przesłanie mu pliku cookie. Z zapisu tego wyłączone są pliki, których jedynym celem jest obsługa mechanizmu e-commerce (zakupy online) oraz do celów realizacji usługi zamówionej przez Odwiedzającego

Po co? Głównym celem było uniemożliwienie śledzenia naszych poczynań w internecie w celu przygotowywania reklamy personalizowanej pod wzg. naszych zachowań, preferencji oraz historii aktywności.

Od razu zaznaczę, że nie jestem prawnikiem, ale wygląda na to, że jeżeli w regulaminie serwisu (lub polityce prywatności) opisujesz, do czego wykorzystywane są ciasteczka w ramach zamawianej usługi (tj rejestracja w serwisie) - jesteś kryty. Jeżeli jednak wykorzystujesz pliki cookies do innych celów - musisz poinformować o tym użytkownika i otrzymać jego zgodę - nie wystarczy samo wyświetlenie treści.

Jak będzie wyglądać egzekwowanie tego postanowienia oraz jak zmieni się oblicze Europejskiego internetu przyjdzie nam się przekonać już całkiem niebawem.

Dodatkowo - nie sprecyzowano, co Ustawodawca miał na myśli, pisząc o Odwiedzającym - co z komputerami w kafejkach internetowych, w których ciastko zostało wysłane innemu użytkownikowi, niż aktualnie korzystający z przeglądarki?

PS. - zagadka - czy mogę wysłać użytkownikowi cookie, w celu identyfikacji go jako użytkownika, któremu zadałem już pytanie o udzielenie prawa do wysyłania plików cookie w celu nie wyświetlania mu tegoż pytania ponownie, w przypadku, kiedy odpowiedział on przecząco? ;-)

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".