Licencja na internet

Podróżując po Internecie muszę tak jak pewnie większość z Was przebić się przez kilometry internetowego mułu, aby w końcu dojść do tego czego szukałem.

Kilkanaście lat temu, to właśnie dlatego powstało Google – aby pomóc ludziom oddzielić informacje wartościowe od najzwyklejszych śmieci. Niestety dzisiaj nawet z wyszukiwarką podróżowanie po Internecie nie jest łatwe.

WWW jest po prostu za duża. Wpisując proste zapytanie do dowolnej wyszukiwarki, otrzymujemy setki jeśli nie tysiące wyników. Oczywiście nie wszystkie z nich są wartościowe.

Ogromną część zasobów Internetu (nie tylko polskiej części, choć na tej się skupię) stanowią:

  • Blo0gaski na serwisach typu blog.onet.pl
  • Forra$ski na fora.pl i dziesiątkach innych
  • Pornoblogi fotoblogi sweet nastolatek i innych Emo
  • Świeżo zainstalowane, nawet trochę niezmodyfikowane Joomle!, PHP-Fusiony, Wordpressy, na hostingach typu YoYo.pl

Zastanawiałem się dlaczego chyba żaden z wyżej wymienionych serwisów nie kasuje nieużywanych stron. Czyżby chodziło im wyłącznie o duże liczby w statystykach? Niestety chyba tak.

Swego czasu razem z kolegą z nudów sporządziliśmy listę kilkuset stron łamiących regulamin na YoYo.pl. Mail był wysyłany kilkukrotnie, od ponad pół roku brak jakiejkolwiek reakcji.

Podobne kłopoty serwisy robią przy usuwaniu kont. Miałem taką przygodę z MojeForum.net. Próbowałem usunąć stamtąd pewne bardzo stare forum. Odpowiedź admina to było coś w stylu „Nie ma takiej możliwości. Zawsze możesz skasować wszystkie działy i posty”.

O braku możliwości usunięcia konta (chociażby na HotScripts.pl – brak reakcji od ponad pół roku) nie ma już co nawet mówić.

Czy serwisom nie powinno poniekąd zależeć na tym aby nieużywane konta/strony/etc były usuwane? Po co marnować serwery i transfer?

W tym momencie chyba jedynym skutecznym, choć rzecz jasna nierealnym wyjściem byłoby wprowadzenie czegoś w rodzaju licencji na Internet. Powinna się składać z prostego testu na inteligencję oraz, co ważne, sprawdzenia zasad pisowni i interpunkcji.

Bo dużym problemem jest w zasadzie jedna sprawa. Ludzie bardzo często przy zakładaniu strony/forum/bloga nie mają pomysłu o czym ona/ono/on będzie. Pytanie proste – to po co zakładają? Aby spamować w Google?

Niech już ludzie sobie piszą o pierdołach – takie prawo Internetu (co zresztą widać po owym blogu :P), ale niech przynajmniej wiedzą czego chcą.

Spodobało mi się rozwiązanie stosowane jakiś czas temu przez pewien hosting. Usługa generalnie była bezpłatna tylko bodajże co 3 miesiące trzeba było wysłać SMS-a potwierdzającego aktywność konta. Kosztował on jedynie 2zł+VAT, a pozwolił znacząco ograniczyć ilość porzuconych stron.

Ja, aby nie być hipokrytą pokasowałem wszystkie swoje stare strony i konta jakie tylko mogłem. Wszystkie nieaktywne blogi/fora/strony domowe zostały tylko na moim localhoście i płytach.

A jak jest z Wami? Też macie jakieś antyki w Internecie czy wywalacie takie rzeczy z sieci?

Trafić z tematem…

Pisząc swojego bloga nigdy nie starałem się trafić w jakiś temat po to aby nabić sobie odwiedzin. Pisałem po prostu tylko o tym, czym chciałem podzielić się z innymi.

Tymczasem okazało się, że niechcący trafiłem w naprawdę mocną tematykę. W ostatni czwartek napisałem wpis o łańcuszkach w Orange. Miał być to krótki wpis na temat denerwującego mnie spamu.

Dziś, około pół godziny temu, jak od czasu do czasu, postanowiłem sprawdzić moje statystyki w Google Analytics.

Peak statystyk

Pierwszą rzeczą o której pomyślałem było to, że G Analytics skasowało mi poprzednie odwiedziny, ale po najechaniu na ową wybitą do góry kropę ujrzałem liczbę… 297. Być może na niektórych z Was ta liczba nie robi wrażenia, ale w przypadku gdzie mój blog ma ok. 20 odwiedzin dziennie, a dotychczasowy rekord wynosił 49, to powyższa sytuacja była dla mnie szokiem.

Postanowiłem zbadać tą sytuację. Moją pierwszą myślą było to, że boty spammerskie w jakiś sposób zaczęły wykonywać JS od G Analytics, jednak sprawdzenie z jakiej lokalizacji pochodzą odwiedziny tego dnia. Okazało się, że ok 98% było z Polski. To dość mocno zbiło mnie z tropu.

Postanowiłem sprawdzić po jakich słowach znaleziono moją stronę.

Słowa kluczowe

Wtedy wszystko stało się jasne. Po prostu… trafiłem z tematem :)

Łańcuszki od Orange? Nie, spokojnie. To tylko spam :)

Taki sobie dziwny tytuł wymyśliłem na dzisiejszy wpis. Otóż rano, przed wyjściem do szkoły dostałem od kolegi SMS-a następującej treści:

Wielka promocja w Orange. Wyslij teraz tego sms'a do 5 osób. A na twoje konto wplynie 150zl. Oferta trwa do 10.09.2011r.

Szczegoly na www.orange.pl/promocje

Wali oszustwem na odległość więc gdy tylko wróciłem ze szkoły, postanowiłem to sprawdzić. Poszukiwania zacząłem od wspomnianego adresu (orange.pl/promocje). Strona istniała, prowadziła do niej zakładka w menu, ale była całkowicie pusta. Wtedy już miałem stuprocentową pewność, że ktoś się wygłupia.

Wpisanie samego początku SMS-a w Google potwierdziło moje przypuszczenia. Zdziwienia nie było, zastanawia mnie tylko jedna rzecz… Po co? Phishing to to nie jest, sprawca nie czerpie z tego żadnych korzyści, nic nie wyłudza. Czyżby chodziło o zwykły szpan przed kolegami z piaskownicy?

A może po prostu sądził, że nikt się nie nabierze? Jeśli tak, to niestety się pomylił… Ludzi żywiących takie pasożyty nie brakuje. Aż przypomina mi się łańcuszek, który magicznie miał spowodować zniknięcie śledzika. Czy niektórzy ludzie kiedyś dojrzeją? :)

WordPress zaskoczyć umie

Przyznam się, że odkąd na innym blogu na którym pisuję (polecam swoją drogą ;)) dokonałem aktualizacji WP do wersji 3.2 (co zawsze robiłem, gdy tylko wychodziła polska wersja), byłem dość mocno rozczarowany. Przeszkadzał mi nowy wygląd panelu administracyjnego. Jeszcze bardziej zminimalizowany, jeszcze jaśniejszy i ogólnie jakiś taki dziwny (jak dla mnie, rzecz jasna).

Dlatego też wyjątkowo odkładałem aktualizację WP na sobak.pl. Odkładałem aż do dzisiaj

Czytaj dalej →

Backupowanie baz danych MySQL z poziomu PHP

Na samym początku zaznaczam, że pierwowzór skryptu przedstawionego poniżej nie jest mojego autorstwa! Skrypt znalazłem tutaj (skrypt na samym dole artykułu). Dokonałem w nim kilku przeróbek i w tym miejscu zostawiam dla potomnych - może się komuś przyda!

{{{ more }}}

Wprowadzone zmiany:

  • Umieszczenie daty wykonania backupu na górze zrzutu bazy
  • Lekkie ogarnięcie kodu PHP. Wiem, że wiele mu brakuje - jak komuś chce się bawić, to proszę bardzo - dla mnie aktualnie liczy się fakt, że skrypt działa
  • Zmiana formatu nazwy pliku (na taki który mi bardziej odpowiada :P). Jakby się komuś nie podobał, to zmiana jest przecież banalna.
  • Możliwość ustawienia katalogu w którym będą lądowały backupy
  • Kilka zmian czysto estetycznych
<?php
header('Content-type: text/html; charset=utf8');

try{
    // KONFIGURACJA - START
    $dbName = 'revival'; // Nazwa bazy danych do zbackupowania
    $dbHost = 'localhost'; // Nazwa serwera baz danych
    $dbUser = 'root'; // Nazwa użytkownika
    $dbPass = ''; // Hasło

    $backupsDir = 'backups'; // Katalog do którego będą zapisywane backupy. Bez końcowego ukośnika!
    // KONFIGURACJA - STOP
    // Dalej lepiej nie ruszać!

    // Stworzenie nowego obiektu klasy PDO
    $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sqlResult = $pdo -> query("SHOW tables FROM $dbName");

    // Stworzenie nagłówka informacyjnego
    $sqlData = "-- Data wykonania kopii: ".date('d.m.Y')." r. o godzinie ".date('H:i')."
    -- Baza: $dbName
    SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";";

    while ($queryTable = $sqlResult -> fetch(PDO::FETCH_ASSOC)){
        $sqlTable = $queryTable['Tables_in_'.$dbName];
        $sqlResultB = $pdo -> query("SHOW CREATE TABLE $sqlTable");
        $queryTableInfo = $sqlResultB -> fetch(PDO::FETCH_ASSOC);

        // Dodanie nagłówków dla konkretnych tabel
        $sqlData .= "\n\n--
        -- Struktura dla tabeli `$sqlTable`
        --\n\n";
        $sqlData .= $queryTableInfo['Create Table'] . ";\n";
        $sqlData .= "\n\n--
        -- Wartości tabeli `$sqlTable`
        --\n\n";

        $sqlResultC = $pdo -> query("SELECT * FROM $sqlTable");

        // Stworzenie INSERT-a dla każdego rekordu
        while ($queryRecord = $sqlResultC -> fetch(PDO::FETCH_ASSOC)) {
            $sqlData .= "INSERT INTO `$sqlTable` VALUES (";
            $sqlRecord = '';
            foreach( $queryRecord as $sqlField => $sqlValue ) {
                $sqlRecord .= "'$sqlValue',";
            }
            $sqlData .= substr($sqlRecord, 0, -1);
            $sqlData .= ");\n";
        }
    }

    // Zapisujemy wynik do pliku
    file_put_contents($backupsDir.'/backup_'.$dbName.'_'.date('d_m_Y').'.sql', $sqlData);
    echo 'Backup został zapisany.';
}

catch(PDOException $e){
    echo 'Połączenie nie mogło zostać utworzone: '.$e->getMessage();
}

Skrypt umieścić u siebie na FTP i uzupełnić sekcję konfiguracyjną. Wywoływać ręcznie (poprzez wpisanie URL-a) albo przez CRON-a.

Musisz koniecznie pamiętać o zabezpieczeniu katalogu z backupami (chociażby przez plik .htaccess). Dobrze by było też zabezpieczyć sam skrypt backupujący, aby nikt nie zajechał nam bazy danych przez wywoływanie w pętli.

Mimo tego, że skrypt testowałem, to nie biorę żadnej odpowiedzialności za jakiekolwiek szkody wynikłe z jego korzystania! Boisz się to nie używaj.

Mam nadzieję, że ten skrypt pomoże Wam w tworzeniu kopii swoich baz danych i sprawi, że będzie się to działo częściej niż raz na rok :P. Bo jak wiadomo:

"Ludzie dzielą się na tych, którzy robią backupy i tych, którzy zaczną je robić".

Pozdrawiam.

PS: Jakby ktoś zdecydował się rozbudować ten skrypt np. o wysyłanie backupów na e-mail czy ich uploadowanie na zewnętrzny serwer FTP, to niech go udostępni, może innym też się przyda.

Dwa nowe skrypty w Dev Center

Żeby moje nowe Dev Center (opublikowane wczoraj) nie świeciło pustkami toteż napisałem dwa nowe skrypty, które w dniu dzisiejszym dochodzą do jego skromnych zasobów.

Postanowiłem odpicować dwie z klas, których używanych przeze mnie w IronCMS-ie. Upiekłem przy tym dwie pieczenie na jednym ogniu. Po pierwsze: zyskałem nowe skrypty do kolekcji, a po drugie uzyskałem mocno poprawione klasy do użytku w kolejnych wersjach CMS-a (a te się powoli budują…).

Nie ma sensu się rozpisywać. Po prostu prezentuję:

Klasa do obsługi MySQL oraz powiązana z nią klasa loggera zdarzeń.

Wszelkie komentarze mile widziane ;)

Sobak's Dev Center po remoncie…

Już prawie rok minął odkąd utworzyłem swoje Dev Center. Jednak od tamtego czasu poziom mojej wiedzy wzrósł dość mocno i około dwóch tygodni temu stwierdziłem, że czas, aby Dev Center odzyskało jako taki poziom. Zabrałem się do pracy. Jej efekty nie są oszałamiające, lecz zawsze to jakiś postęp.

Jednocześnie informuję, że wszystkie moje projekty, które znajdowały się na blogu zostają przeniesione do Dev Center.

Zmiany

  • możliwość komentowania projektów
  • wygodny panel admina
  • SEO URL-e
  • nowe logo (jeśli to stare można było nazwać logiem)

Cóż, nie ma co się rozpisywać i robić double content. Wszystkie informacje o nowym Dev Center znajdziecie… w nim samym Aktualizacja: DevCenter obecnie nie istnieje.

Przed zakończeniem chciałbym jeszcze zamieścić (lekko spóźnione) podziękowania dla CapaciousCore'a, który pomógł mi z rozwiązaniem jednej dość problematycznej kwestii przy tworzeniu strony :).

Wszystkie opinie, jeśli takowe macie, możecie śmiało zamieszczać w komentarzach. Konstruktywna krytyka również mile widziana.

Jednocześnie jeśli ktoś znajdzie jakiś błąd na wspomnianej stronie, to bardzo bym prosił o kontakt ;)

PHP 5.4 alpha wydane - krok do przodu? [aktualizacja]

Wczoraj developerzy PHP wydali pierwszą wersję alpha z gałęzi 5.4. Wersja ta przynosi sporo zmian, w tym kilka które naprawdę warto wymienić:

  • usunięto register_globals - wprawdzie nikt normalny tego nie włącza, ale to będzie jedna luka bezpieczeństwa mniej o którą będziemy się martwić
  • usunięto safe_mode - hostingi przestaną nas tym męczyć
  • <?= jest teraz zawsze dostępne bez względu na ustawienie short_tags
  • Dodano domyślnie multibyte support. Wcześniej, aby go mieć należało skompilować PHP z opcją --enable-zend-multibyte. Teraz można to włączać lub wyłączać w php.ini
  • zdeprecjonowano funkcję mysql_list_dbs()
  • sporo innych zmian - głównie w rozszerzeniach

Na ostudzenie emocji można zadać dwa pytania. Po pierwsze: kiedy doczekamy się wersji finalnej? Drugie pytanie może jeszcze bardziej zdemotywować: Kiedy doczekamy się wprowadzenia PHP 5.4 na hostingach (nie mówiąc już o tych darmowych, które aktualizacje PHP często odciągają jak tylko się da).

Pełna lista zmian tutaj.

Aktualizacja (09.07.11)

Wszystko wskazuje na to, że w prowadzonym właśnie głosowaniu kolejnych zmian do wersji finalnej zostaną wywalone także magic quotes. Niedługo osiągnę PHP-ową Nirvanę :)

Aktualizacja (16.08.11)

W najnowszej wersji PHP5.4 - alpha 3 zostały usunięte wszystkie rzeczy związane z magic quotes.