• 2012 (3)
  • 2011 (51)
  • 2010 (38)
  • 2009 (36)
  • < marca 2014 >
    Pn Wt Ś Cz Pt So N
              1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    31            

    Weź udział!

    Logo konkursu Wolny Wybór

    wypróbuj

    Logo wielojęzycznego chatu

    : Home / blog / wpisy wg daty
    All articles

    Wtorek 26 kwietnia 2011

    Jak przejść na IPv6 PDF Drukuj Napisz e-mail
    Wpisał %s Teodor Woźniak
    wtorek, 26 kwietnia 2011 17:59
    Inne tematy / Sieci komputerowe

    Wielkimi krokami zbliża się wprowadzenie IPv6. Wynika to z nieracjonalnego rozdawania adresów IPv4 na początku istnienia Internetu a także z rosnącej liczby użytkowników globalnej sieci. IPv6 oprócz większej przestrzeni adresowej ma kilka ważnych zalet: możliwość uproszczenia budowy routerów (nie muszą fragmentować pakietów), całkowita rezygnacja z NAT-u, autokonfiguracja bez potrzeby wysyłania zapytań do routera, badanie sąsiedztwa bez ARP itd. Pomijając błąd jaki popełniła grupa wdrażająca standard, polegający na przydzieleniu każdemu użytkownikowi puli /64, protokół jest obiecujący zarówno dla dostawców treści jak i dla użytkowników.

    Read more


    Laci Perényi Sportsart PDF Drukuj Napisz e-mail
    Wpisał %s helly
    wtorek, 26 kwietnia 2011 17:04
    Photo / Art

    I am really into sports thats why I chose Laci Perényi, one of the most renowned German sport photographers. Perényi, who was born  in Bratislava, Slovakia, was in the 1970ies  a competitive athlete himself and a member of the first German swimming national team. His work as a sports photographer he started in 1974 and among many other national and international events of all sports, he was accredited as a sport photographer at 15 Olympic Games and 8 FIFA World Cups. What's so special about him? He doesn't only want to document the competitions but he wants to take "other" pictures. He takes them from other places, doesn't want to show all the advertising around it and plays with the light. His sports pictures are creative and art. Have a look... http://www.lp-sportsart.de/

    Read more


    Poniedziałek 25 kwietnia 2011

    Wydajność bazy danych, a wydajność plików tekstowych PDF Drukuj Napisz e-mail
    Wpisał %s Tomasz Stasiak
    poniedziałek, 25 kwietnia 2011 15:58
    IT / Dev zone

    W związku z dyskusją jaka się wywołała między mną, a yarpo w komentarzach pod moim artykułem dotyczącym logowania w PHP, skorzystałem z propozycji i zrobiłem kilka testów wydajnościowych porównujących szybkość działania bazy danych opartej na plikach i takiej opartej na MySQL. Stanowiska były następujące: ja twierdziłem, że pliki są szybsze, yarpo, że niekoniecznie.

    Testy zostały przeprowadzone na małej (275 userów) i dużej (27057 userów) porcji danych, z wykorzystaniem bazy MySQL oraz plików tekstowych; przy nich była brana pod uwagę szybkość dodawania oraz szybkość wyszukiwania. Parametry środowiska testowego (serwera):

    {codecitation}

    Procesory: 2 x Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz

    RAM: 1362160 kB/24738796 kB

    Apache: 2.2.17

    MySQL: 5.1.56

    Silnik bazy danych: MRG_MYISAM

    {/codecitation}

    Kody, które służyły do testów:

    Baza na plikach:

    {codecitation class='brush: php'}

            include 'profiler.php';

            /**

             * Pliki tekstowe

             */

            /// Tworzenie bazy użyszkodników

            $file = fopen("db.php", "a");

            $time1 = new Profiler();

            fwrite($file, "

             for($i = 0; $i < 275; ++$i)

            {

                    $user = HTMLSpecialChars(chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)));

                    $db[] = array('user' => $user, 'passwd' => hash('sha256', $user));

            } // End for

            fwrite($file, '$db = '.var_export($db, true).';');

            echo 'Wpisywanie trwało: ' . $time1->stop()."\n";

            fclose($file);

     

            /// Szukanie

            include 'db.php';

            $time2 = new Profiler();

             for($i=0, $x = count($db); $i < $x AND $db[$i]['user'] != 'k+]?N]Z+8' AND $db[$i]['passwd'] != '2895c383bd3c5ba1a6672d0759f88c0f692fd90bd9298e8ce572eac8cf042373'; ++$i);

            echo 'Szukanie trwało: ' . $time2->stop();

    {/codecitation}

    Baza danych:

    {codecitation class='brush: php'}

            include 'profiler.php';

            /**

             * Baza danych

             */

            $conn = mysql_connect("localhost", "adm", "aaaa");

            mysql_select_db("tomekby_test");

            /// Tworzenie bazy użytkowników

            $count1 = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `users`;"));

            $time1 = new Profiler();

             for($i = 0; $i < 300; ++$i)

            {

                    $user = HTMLSpecialChars(chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)).chr(rand(32, 126)));

                    $q = "INSERT INTO `users` (`id`, `user`, `passwd`) VALUES (NULL, '".$user."', '".hash('sha256', $user)."');";

                    mysql_query($q);

            } // End for

            echo 'Wpisywanie trwało: ' . $time1->stop();

            /// Liczenie dodanych rekordów

            $count2 = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `users`;"));

            echo "\nDodane: ".($count2[0] - $count1[0]);

     

            /// Szukanie

            $time2 = new Profiler();

             mysql_query("SELECT * FROM `users` WHERE `user` = 'k+]?N]Z+8' AND `passwd` = '2895c383bd3c5ba1a6672d0759f88c0f692fd90bd9298e8ce572eac8cf042373';");

            echo "\n".'Szukanie trwało: ' . $time2->stop();

            

            mysql_close($conn);

    {/codecitation}

    Profiler: (tu podziękowania dla yarpo za klasę, bo nie chciało mi się samemu pisać :p)

    {codecitation class='brush: php'}

    // autor Patryk yarpo Jar, klasa Profiler pozwala na mierzenie czasu wykonania skryptu

    class Profiler {

        private $start = false;

        private $stop  = false;

        private $duration = false;

     

        public function __construct() {

            $this->start = $this->getCurrentTime();

        }

     

        private function getCurrentTime() {

            list($usec, $sec) = explode(" ", microtime());

            return ((float)$usec + (float)$sec);

        }

     

        private function measureDuration() {

            if (false != $this->stop or false != $this->start) {

                $this->duration = $this->stop - $this->start;

                return $this->duration;

            }

     

            return false;

        }

     

        public function start() {

            $this->stop = false; // skoro zaczelismy, to popredni stop jest niewazny

            $this->duration = false; // nie wiemy kiedy konie, wiec skad mamy znac dlugosc?

            $this->start = $this->getCurrentTime(); // aktualny czas

     

            return $this->start;

        }

     

        public function stop() {

            $this->stop = $this->getCurrentTime();

            return $this->measureDuration();

        }

     

        public function getStartTime() {

            return $this->start;

        }

     

        public function getStopTime() {

            return $this->stop;

        }

     

        public function getTime() {

            // jeszcze nie obliczono trwania

            if (false === $this->duration) {

                return $this->stop();

            }

     

            return $this->duration;

        }

    }

    {/codecitation}

    Jak widać do obu baz byli dodawani użytkownicy o losowo generowanych nazwach i hasłach, a później wyszukiwany jakiś użytkownik, który niekoniecznie musiał istnieć.

    Oba kody spokojnie można by jeszcze zoptymalizować, ale więcej mówi raczej typowy przypadek. W żadnym z testów nie uwzględniłem czasu otwarcia połączenia/wybrania bazy czy otwarcia/include'a pliku, aby pokazać sam czas operacji na danych (BTW mam nieodparte wrażenie, że otwarcie połączenia i wybranie bazy jest bardziej czasochłonne od otwarcia pliku...). Baza danych znajdowała sie na tym samym serwerze, co skrypt (co widać po wpisaniu localhost w hoście bazy).

    Teoretycznie można by się pokusić o trochę bardziej realistyczny przypadek, czyli otwieranie/zamykanie za każdym razem pliku/połaczenia z bazą, aby zasymulować operacje wykonywane przez różnych użytkowników (bo od kiedy jeden uzytkownik wykonuje ponad 50 tysięcy operacji na bazie danych w jednym czasie? :>), ale nie jestem pewien, jak serwer by zareagował na takie obciążenie i wolę go nie przeciążać za bardzo.

    Wyniki z użyciem plików:

    {codecitation}

     Test na 27057 rekordach

     Wielkość pliku: 3,59 MiB

     Wpisywanie trwało: 0.197447061539

     Szukanie trwało: 0.0108730792999

     

     Test na 275 rekordach

     Wielkość pliku: 36,91 KiB

     Wpisywanie trwało: 0.00179982185364

     Szukanie trwało: 0.000112056732178

    {/codecitation}

    Wyniki z użyciem bazy danych:

    {codecitation}

     Dodane: 27057

     Wielkość tabeli: 3,12 MiB

     Wpisywanie trwało: 1.76564502716

     Szukanie trwało: 0.00290703773499

     

     Dodane: 275

     Wielkość tabeli: 34,00 KiB

     Wpisywanie trwało: 0.0166158676147

     Szukanie trwało: 0.00014591217041

    {/codecitation}

    Jak widać, im więcej rekordów tym większą wydajność (w stosunku do plików) oferuje baza danych. Na niewielkiej porcji danych pliki tekstowe są niewiele szybsze od bazy przy wyszukiwaniu, natomiast o wiele szybsze przy zapisie. Prawdę mówiąc zdziwiła mnie tak duża różnica prędkości zapisu między bazą danych a plikami. Spodziewałem sie, że te drugie będą szybsze, ale nie prawie 10 razy! Niestety pliki mają także swe wady - przy dużej ilości danych może nam po prostu zabraknąć pamięci, gdyż cała tablica z pliku tekstowego musi zostać wczytana do pamięci, a przy kilku(dziesięciu|set) tysiącach użytkowników te dane mogą sporo zajmować (przede wszystkim przy bardziej rozbudowanych strukturach, nie tylko uzytkownik/hasło). Dodatkową ciekawostką może być fakt, iż tabela bazy danych MySQL waży mniej niż plik tekstowy.

    Mam teraz wrażenie, że jakimś cudem udało mi się obalić dowód przez oczywistość :P

    W razie wszelkich sugestii śmiało pisać - postaram się wybronić ze swego stanowiska.

     

    ps. początkowo to miał być zwykły komentarz, ale się "trochę" za bardzo rozrósł...

    ps2. prawie zapomniałem: paczka z kodem

     

    //edit: Nowe testy:

    Tym razem porównanie między szybkością otwarcia połączenia, wybrania bazy i zamknięcia połączenia oraz między czasem otwarcia, zablokowania i zamknięcia pliku. Tym razem nie będę się aż tak rozpisywal, bo już sił brakuje - może później ;]

    Kod użyty do testowania:

    {codecitation class='brush: php'}

         include 'profiler.php';

         /// Łączenie/odłączanie bazy danych
         $time1 = new Profiler(); // Czas startu
         for($i = 0; $i < 100000; ++$i)
         {
              $conn = mysql_connect('localhost', '123', '123456');
              mysql_select_db('test');
              mysql_close($conn);
         } // End for
         echo 'Operacje trwały: ' . $time1->stop()."\n"; // Czas końca

         /// Otwieranie/zamykanie/blokowanie pliku
         $time2 = new Profiler(); // Czas startu
         for($i = 0; $i < 100000; ++$i)
         {
              $file = fopen('file', 'a');
              if (flock($file, LOCK_EX))
              flock($file, LOCK_UN);
              fclose($file);
         } // End for
         echo 'Operacje trwały: ' . $time2->stop(); // Czas końca

    {/codecitation}

    Tym razem oba testy zostały umieszczone w jednym pliku. Jak widać, w obu przypadkach zostało wykonane 100.000 operacji. Wyniki (output skryptu) - najpierw baza danych, później pliki:

    {codecitation}

    Operacje trwały: 10.1349132061

    Operacje trwały: 0.940469026566  

    {/codecitation}  

    Trzeba przyznać, że wyniki testu są druzgoczące - o ile przy zapisie/odczycie z bazy/pliku różnice były co najwyżej rzędu wielkości, to w tym wypadku różnica to ponad dwa rzędy wielkości (0,9s dla pliku w porównaniu do 10,1s dla bazy). Chociaż, patrząc z drugiej strony - nikt normalny chyba nie otwiera połączenia z bazą danych 100k razy za jednym zamachem? :>

     

    jeszcze tradycyjna paczka z kodem :)

    Read more
    Zmieniony ( wtorek, 26 kwietnia 2011 12:50 )


    Sobota 23 kwietnia 2011

    Logowanie w PHP - część druga PDF Drukuj Napisz e-mail
    Wpisał %s Tomasz Stasiak
    sobota, 23 kwietnia 2011 22:30
    PHP / Artykuły PHP

    Logowanie w PHP - część druga (wykorzystanie bazy danych)

    W tej części postaram się wyjaśnić, jak w prosty sposób stworzyć logowanie na stronie z wykorzystaniem bazy danych MySQL.
    Aby tego dokonać będziemy potrzebowali czterech rzeczy - serwera z obsługą php i bazą danych MySQL, oraz trzech plików: db.php, który stworzy nam odpowiednie tabele w bazie danych, login.php w którym umieścimy formularz logowania, oraz secret.php, który będzie odpowiedzialny za sprawdzenie, czy użyszkodnik użytkownik ma dostęp do tajnych zasobów.
    Zaczynamy! Tworzymy plik login.php z formularzem logowania o treści identycznej jak w poprzednim przykładzie:
    http://ideone.com/4Wmqm
    Do połączenia i wykonywania wszystkich operacji na bazie danych wykorzystamy bibliotekę PDO (która powinna być uprzednio zainstalowana na serwerze). Następnie musimy utworzyć plik db.php, w którym umieścimy kod łączący się z bazą danych oraz tworzący w niej odpowiednią tabelę:
    http://ideone.com/52z94
    Wyjaśnienie: na początku otwieramy sekcję try..catch łapiącą wszelkie wyjątki, które może wyrzucić klasa PDO, wewnątrz try{} kolejno:

    • otwieramy połączenie z bazą danych, gdzie: host_bazy to domena/adres IP serwera bazy danych (jeśli to jest ta sama maszyna, można wpisać localhost); nazwa_bazy - jest to nazwa bazy danych z której będziemy korzystać; user i pass to odpowiednio nazwa użytkownika i jego hasło do bazy danych
    • tworzymy tabelę users zawierającą dane o użytkownikach
    • dodajemy użytkownika admin z takim samym jak poprzednio haszem hasła - czyli utworzonym z 'adminpasswd'
    • Wyświetlamy komunikat

    Natomiast w bloku catch łapiemy ewentualne wyjątki oraz wyświetlamy je jeśli wystąpią. W tym wypadku hasło tak samo jak w wypadku logowania z użyciem plików tekstowych jest haszowane. Do wygenerowania haszu z hasła można skorzystać z dostępnych w Internecie narzędzi, np. http://www.insidepro.com/hashes.php. Po utworzeniu odpowiednich tabel można (a nawet dobrze by było) usunąć ten plik, gdyż nie jest on nam do niczego potrzebny. Jeśli to już zostało zrobione, pozostał już tylko 1 plik - secret.php zawierający zasoby, do których dostęp chcemy ograniczyć. Oto, co powinien zawierać:

    • Sprawdzenie, czy użytkownik istnieje w bazie danych i czy podał prawidłowe dane
    • Zapisanie w sesji informacji o tym, że użytkownik ma prawo do dostępu (aby nie trzeba było się logować po każdym odświeżeniu stron
    • Wyświetlenie naszej tajnej treści

    Zaczynamy - tworzymy plik secret.php o następującej treści:
    http://ideone.com/xDC0d
    Teraz wyjaśnienie co się dzieje linijka po linijce: standardowo otwieramy sekcję kodu PHP, w następnej linii rozpoczynamy sesję, po czym sprawdzamy, czy: a) użytkownik wysłał uprzednio jakieś dane przez formularz, b) jest zalogowany. Jeśli żadna z tych sytuacji nie zaistniała - kończymy działanie skryptu (dyrektywa die()). Gdy już wiemy, że użytkownik jest zalogowany/przesłał dane przez formularz otwieramy połączenie z bazą danych - host i nazwa bazy danych, jak i hasło muszą być atkie same jak podczas tworzenia tabeli uzytkowników. Następne 3 linie to tworzenie zapytania wyszukującego użytkownika w bazie danych. :user oraz :passwd oznaczają odpowiednio użytkownika i hasło. Następnie pod wspomniane :user i :passwd podpisujemy odpoiednio nazwę użytkownika, jak i hasz hasła podanego przez użytkownika (podanie danych w ten sposób zamiast bezpośrednio w zapytaniu zabezpiecza nas przed błędami typu SQL Injection; patrz: mój artykuł o bezpieczeństwie danych osobowych w serwisach internetowych, a w szczególności sekcje dot. odzyskiwania haseł i błędów SQL Injection).
    Warunek if sprawdza, ile rekordów zwróciło zapytanie; jeśli 1, oznacza to, że użyszkodnik użytkownik z takim hasłem i nazwą został odnaleziony w bazie danych i możemy ustawić wartość $_SESSION['logged_in'] (informującej o zalogowaniu) na true. Ostatnia linia w sekcji try to zamknięcie połączenia pobranych wyników. W sekcji catch, podobnie jak w pliku db.php łapiemy ewentualny wyjątek i wyświetlamy go. Sekcji wewnątrz ciała dokumentu nie będę opisywał, gdyż było to zrobione w poprzedniej części.

     

    Jeszcze obiecane porównanie:

        Logowanie z wykorzystaniem plików tekstowych:
            Zalety:
                - Szybkość
                - Niewielkie wymagania wobec serwera
            Wady:
                - Skomplikowane zarządzanie użytkownikami (edycja/usuwanie)
        Logowanie z wykorzystaniem bazy danych:
            Zalety:
                - Łatwość zarządzania użytkownikami
            Wady:
                - Mniejsza szybkość
                - Większe wymagania o serwera

    Jak widać, logowanie z użyciem bazy danych ma mniej zalet, lecz ta jedna zwykle przeważa - utrata wydajności nie jest tak duża, a zarządzanie jest wiele prostsze i wydajniejsze.

     

    //edit: paczka z kodem do pobrania

    Read more
    Zmieniony ( poniedziałek, 25 kwietnia 2011 14:45 )


    Piątek 22 kwietnia 2011

    Logowanie w PHP - część pierwsza PDF Drukuj Napisz e-mail
    Wpisał %s Tomasz Stasiak
    piątek, 22 kwietnia 2011 22:02
    PHP / Artykuły PHP

    Logowanie w PHP

    W tym tutorialu postaram się opisać, jak w prosty sposób stworzyć logowanie na stronie. Jest ono przydatne, np. gdy chcemy udostępnić jakieś informacje
    lub funkcjonalność tylko zarejestrowanym użytkownikom – np. dać możliwość dodawania nowości, zdjęć etc. Potrzebne będą:

    • Serwer z obsługą PHP, np. WAMP lub XAMPP lub konto hostingowe
    • Podstawowe wiadomości dotyczące PHP i HTML
    • W dalszej części dodatkowo serwer MySQL
    • Zapał do pracy :)

    Tekst został podzielony na dwie części: logowanie z użyciem plików tekstowych, oraz z użyciem bazy danych MySQL, gdzie także zostanie umieszczone porównanie obu sposobów. Pomijam tu element konfiguracji serwera jak i bazy danych, jako iż było to opisywane w sieci wiele razy i nie dotyczy tego tekstu.

    Część pierwsza – logowanie z użyciem plików tekstowych

    Na początku będziemy potrzebowali trzech plików: login.php – zawierającego formularz logowania, db.php – zawierającego informacje o użytkownikach, oraz secret.php – czyli pliku, który chcemy zabezpieczyć przed wścibskimi użytkownikami.

    Zaczynamy – tworzymy plik login.php i umieszczamy w nim nasz formularz z danymi, które musi wpisać użytkownik, aby uzyskać dostęp do tajnego pliku:

    http://ideone.com/4Wmqm

    Jak widać powyżej, w formularzu zostały umieszczone 2 pola: user, czyli nazwa użytkownika oraz passwd, czyli hasło tegoż użytkownika. Następnie musimy stworzyć bazę danych zawierającą dane użytkowników (plik db.php):

    http://ideone.com/vldGC

    Kilka słów wyjaśnień: w pierwszej linii otwieramy kod PHP i sprawdzamy (funkcja defined()), czy stała SECRET_CONST jest zadeklarowana. Jeśli nie – zostanie wywołana funkcja die(), która kończy wykonanie skryptu. Jest to zabezpieczenie przed odczytaniem przez niepowołanych użytkowników zawartości tego pliku oraz przed próbą dołączenia go do niepowołanego skryptu. Jest to skrócona forma, wykorzystująca pewne cechy języka PHP, równie dobrze można by tę linię zapisać w taki sposób:

    http://ideone.com/qOxnM

    Lecz, jak widać tamten kod jest znacznie krótszy. Dalej mamy definicję dwuwymiarowej tablicy – pierwsza kolumna oznacza ID użytkownika (w wypadku pozostawienia pustego nawiasu ID będzie ustalane automatycznie od 0). Druga kolumna oznacza odpowiednio nazwę użytkownika (pole user) oraz jego hasło (pole passwd), które jest zakodowane za pomocą wybranej funkcji haszującej (w tym wypadku SHA-256) – w tym wypadku hasz odpowiada hasłu „adminpasswd”. Jest to niezbędne, gdyż zabezpiecza nas w dużym stopniu przed uzyskaniem nieautoryzowanego dostępu nawet w wypadku wykradzenia pliku z informacjami o użytkownikach (patrz: mój artykuł o bezpieczeństwie danych osobowych w serwisach internetowych, a w szczególności sekcja dot. odzyskiwania haseł). Dodanie następnego użytkownika ogranicza się do skopiowania drugiej i trzeciej linii oraz zmianie nazwy użytkownika i hasła. Do wygenerowania haszu z hasła można skorzystać z dostępnych w Internecie narzędzi, np. http://www.insidepro.com/hashes.php.

    Pozostał jeszcze jeden plik – secret.php, do którego dostęp ma być ograniczony. Oto elementy, które musi zawierać:

    • Definicja naszej stałej SECRET_CONST, dzięki której będziemy mogli skorzystać z naszej bazy danych
    • Sprawdzenie, czy użytkownik istnieje w bazie danych
    • Zapisanie w sesji informacji o tym, że użytkownik ma prawo do dostępu (aby nie trzeba było się logować po każdym odświeżeniu strony)
    • Wyświetlenie naszej tajnej treści

    Zabieramy się do pracy – tworzymy plik secret.php o następującej treści:
    http://ideone.com/gkQuP

    Wyjaśnienie linijka po linijce: na początku otwieramy tag PHP aby móc wykonać nasz kod, w następnej linii rozpoczynamy sesję, aby można było z niej korzystać. Następnie definiujemy naszą stałą SECRET_CONST, która umożliwi nam korzystanie z bazy użytkowników; w czwartej i piątej linii upewniamy się, czy aby na pewno użytkownik wpisał dane do formularza i czy nie jest już przypadkiem zalogowany, jeśli nie – wyświetlamy odpowiedni komunikat oraz kończymy działanie skryptu. Jeśli już jesteśmy upewnieni, że użyszkodnik użytkownik wpisał dane do formularza lub jest zalogowany możemy przystąpić do sprawdzania poprawności wpisanych przez niego danych. Dołączamy plik z informacjami o użytkownikach (dyrektywa include()) oraz w pętli for() sprawdzamy, dane wszystkich użytkowników (do czasu napotkania prawidłowych danych). Jeśli użytkownik podał prawidłowe dane, ustawiamy wartość $_SESSION[‘logged_in’] na true, aby oznaczyć informację o tym, że użytkownik został zalogowany. W następnej sekcji kodu PHP (wewnątrz sekcji HTML BODY) sprawdzamy, czy użytkownik jest zalogowany; jeśli tak – wyświetlamy naszą tajną treść, jeśli nie – także odpowiedni komunikat.

    To by było na tyle – w następnej części opiszę jak wykonać logowanie z wykorzystaniem bazy danych MySQL.

     

    //edit: paczka z kodem do pobrania

    Read more
    Zmieniony ( poniedziałek, 25 kwietnia 2011 14:46 )


    środa 20 kwietnia 2011

    LipDub - nowa forma internetowej ekspresji medialnej PDF Drukuj Napisz e-mail
    Wpisał %s Jan Jackowicz-Korczyński
    środa, 20 kwietnia 2011 04:41
    Multimedia / video

    W sieci pojawiły się nowe atrakcyjne formy kreatywności wideo: LipDub. 

    Lip-dub to technika tworzenia teledysków, w którym amatorzy udają, że wykonują daną piosenkę i wzbogacają ją o własną interpretacją wizualną. Termin ten pochodzi od dwóch zjawisk filmowych - lip synchronization (dopasowywanie dźwięku do ruchu warg) oraz dubbing.

    Ojcem tej techniki można by nazwać Jakoba Lodwicka, założyciela firmy Vimeo, który w 2006 roku, spacerując ze słuchawkami na uszach nagrał filmik ze swoim podśpiewywaniem, w domu podłożył oryginalną ścieżkę dźwiękową i umieścił go w internecie. Lip-dub bardzo szybko stał się popularny wśród internautów, którzy zaczęli tworzyć setki własnych "piosenek". Wkrótce pojawiły się też grupowe nagrania. A stąd był juz tylko krok do zapoczątkowania nietypowej studenckiej odmiany tej zabawy, którą nazwano University LipDub. 

    Lipduby upowszechniło środowisko akademickie. Wykształciła się konwencja LibDuba:

    • dobra piosenka,
    • kilkadziesiąt/kilkuset studentów-aktorów
    • scenografia w postaci uczelnianych korytarzy
    • wszystko kręcone jednym nieprzerwanym ujęciem.

    Na YouTube w ostatnim czasie zaroiło sie od akademickich LipDubów. W polskiej sieci  powstał również serwis: lipdub.pl.

    Powstały również pierwsze LipDuby zrealizowane w szkołach średnich. Zobacz: Licea Rekramuja sie Tańcząc (diablicami).

    Zjawisko LipDub jest dobrym przykładem rozwoju sieciowej kultury powstającej oddolnie, samorzutnie, a nie wymyślonej przez kreatorów kultury czy specjalistó od sieci i mediów. 

    Read more

    Wiosenna przerwa świąteczna PDF Drukuj Napisz e-mail
    Wpisał %s Jan Jackowicz-Korczyński
    środa, 20 kwietnia 2011 04:38
    Blog / wpisy

    przerwa wiosennaRozpoczęła się przerwa świąteczna w szkołach. W szkołach średnich skumuluje się z wolnymi dniami majowymi, tymi ustawowo wolnymi oraz związanymi z egzaminami maturalnymi). Wszyscy będziemy mieli trochę więcej czasu. Zamierzamy w tych dniach uruchomić ,,nowe rozdanie'' promocji serwisu wśród młodych pasjonatów ITC rozproszonych w sieci. 

    Dla wszystkich najcie[plejsze życzenia życzenia świąteczne od koordynatoróe projektu. Niech nowy oddech wiosny i nadziei (jakimi nasycone są obecne święta, zarówno w wymiarze tradycyjnym jak również religijnym) bedzie dla nas wszystkich impulsem do działania, aktywności, otwartości... Każdy z nas pewnie chciałby BARDZIEJ BYĆ....

    Read more
    Zmieniony ( piątek, 22 kwietnia 2011 07:51 )


    Poniedziałek 18 kwietnia 2011

    OpenSourceCMS: CMS Demos & Information PDF Drukuj Napisz e-mail
    Wpisał %s Jan Jackowicz-Korczyński
    poniedziałek, 18 kwietnia 2011 10:29
    IT / marketing

    Wszystkich zainteresowanych systemami CMS udostępnianymi na licencji OPENSOURCE polecam serwis http://php.opensourcecms.com

    Serwis założowny został pzrez Goodwina Scoot, aktualnie prezesa Open Source Collective, Inc

    Serwis nie tylko opisuje dostępne w sieci  open source'owe CMS ale równiez zestawia ich rankingi. Informację o systemach podaje równiez w podziale na różne kategorie: na bazie PHP, CMS / Portale, Forum, Lite, Blogi, eCommerce, Praca grupowa, Galerie obrazów, Różne, e-Learning, Wiki.

    Serwis zawiera rónież ciekawą o tanią ofertę hostingową.

    Dla głównych systemów CMS udostępnia tez pokaźny zestaw wideoturtoriali (Drupal, Gallery Video, OssCommercial, PHP-BB, Wordpress, ZenCar, Tiki Wiki, Joomla, Seo Toaster, Html)

    Serwis rekomenduje również open source'owe czasopisma branżowe w wersji cyfrowej: http://php.opensourcecms.com/free/magazines.php

    Serwis ostatnio zaczął zbierać datki w formie sprzedaży powierzchni na platformie reklamowej: CMSPixel (http://php.opensourcecms.com/cmspixels/) wzorowany na popularnym serwisie: http://www.milliondollarhomepage.com/

    Read more
    Zmieniony ( poniedziałek, 18 kwietnia 2011 12:04 )


    Niedziela 17 kwietnia 2011

    Życzenia dla Piotra... PDF Drukuj Napisz e-mail
    Wpisał %s Jan Jackowicz-Korczyński
    niedziela, 17 kwietnia 2011 21:32
    Blog / wpisy

    Czas leci... Piotr od gimnazjum był związany z obozami komputerowymi INTERKAMP. Był laureatem INTERKAMPEK  na tych obozach.  W ubiegłym roku pracował na nich już jako kadra pomocnicza. Z serwisem youthcoders współpracuje od samego początku. 16 kwietnia obchodzi swoją ,,18-stkę''. Piotrze: życzymy Ci dlaszego owocnego rozwoju, rozwijania Twojej pasji do otwartego oprogramowania i... jeszcze intensywniejszego niż dotą dzielenia się swoimi osiągnięciami na łamach naszego serwisu... 

    Read more
    Zmieniony ( niedziela, 17 kwietnia 2011 21:39 )

    Test bezpieczeństwa SSL przeglądarek internetowych. PDF Drukuj Napisz e-mail
    Wpisał %s Jan Jackowicz-Korczyński
    niedziela, 17 kwietnia 2011 20:38
    IT / Zabezpieczenia

    Zespół Bezpieczeństwa PCSS,  który na codzień zajmuje się pracą operacyjną związaną z utrzymywaniem odpowiednio wysokiego poziomu bezpieczeństwa infrastruktury teleinformatycznej Poznańskiego Centrum Superkomputerowo Sieciowego oraz sieci  PIONIER  przygotował raport na temat bezpieczeństwa przeglądarek internetowytch pod kątem odporności na ataki na szyfrowane połączenia SSL/TLS. 

    Testom poddanych zostało 5 najpopularniejszych przeglądarek internetowych: (w kolejności alfabetycznej) Apple Safari, Google Chrome, Microsoft Internet Explorer, Mozilla Firefox i Opera.

    Źródło informacji: http://security.psnc.pl/

    Read more
    Zmieniony ( niedziela, 17 kwietnia 2011 21:11 )

    Strona 15 z 94
    << Początek < Poprzednia 11 12 13 14 15 16 17 18 19 20 Następna > Ostatnie >>