Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Kamil, dodany: 25.02.2013 22:02, tagi: css, javascript

Czasami musimy opublikować na stronie WWW adres e-mail w jawnej postaci, jako tekst. Jak to zrobić, by nie dać się złapać w sidła spamerskich robotów? Rozwiązań jest dużo, poczynając od szyfrowania przy pomocy JavaScriptu, przez odwracanie tekstu z CSS, kończąc na zamienianiu znaków na ich encjowe odpowiedniki w HTML. Pomysłów i sztuczek jest oczywiście więcej, [...]

Autor wpisu: JoShiMa, dodany: 25.02.2013 12:21, tagi: skrypty

No i przyszedł czas na to by zainteresować się programowaniem w shellu. No cóż, podejrzewałam, że kiedyś nastąpi taka konieczność. Na początek oczywiście zadanie z serii „co autor miał na myśli” czyli poprawianie cudzych skryptów. Ku pamięci linki do kursów: Programowanie w shellu Skrypty bash (pdf) Bash Reference Manual (eng.) Bash 1, digipedia (eng.) Pewnie [...]

Autor wpisu: JoShiMa, dodany: 24.02.2013 14:51, tagi: javascript

Niedawno mój klient poprosił mnie o zainstalowanie na jego stronie czegoś alternatywnego do starego wysłużonego zabezpieczenia captcha. Czy jest na sali ktoś kogo nie denerwuje zabezpieczenie chaptcha? Mnie denerwuje. Jako użytkownika, bo wkurzające jest to rozpoznawanie i mozolne przepisywanie znaczków. Także jako administratora, bo po prostu to zabezpieczenie już nie działa, od dawna w sieci [...]

Autor wpisu: Jakub, dodany: 18.02.2013 14:25, tagi: php/mysql

W tym artykule postaram się pokazać i wytłumaczyć, jak stworzyć podstawowy szablon systemu WordPress, który w zupełności wystarczy do utworzenia mikrobloga lub wizytówki. Szablon którego użyję do okodowania, można znaleźć w dziale Download pod nazwą „Free CSS Template 1″. Zacznijmy od utworzenia podstawowych plików, odpowiedzialnych za poszczególne elementy strony:

  • style.css
  • header.php
  • index.php
  • footer.php

  style.css – na samym początku tego pliku, muszą znajdować się dane o szablonie. Dzięki temu WordPress weryfikuje nasz motyw. Obowiązkowo musi mieć nazwę style.css oraz znajdować się w głównym katalogu szablonu:

1234567/* Theme Name: Wordpress template Description: My first wordpress template Version: 1.0 Author: Jakub Cieślak Author URI: http://www.jakub-cieslak.pl/ */

W dalszej części pliku kodujemy poszczególne elementy strony, lub w celu zwiększenia czytelności szablonu tworzymy osobny plik arkusza CSS.   header.php – jest to nagłówek naszej strony internetowej. Obowiązkowo musi zawierać metatagi oraz funkcję wp_head() pomiędzy head. W moim przypadku, dołączyłem jeszcze górne menu oraz tekst:

1234567

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Marek, dodany: 07.02.2013 19:50, tagi: php, zend_framework

zfNaszym zadaniem jest, oprócz zapisywania błędów aplikacji do logu, automatyczne wysyłanie informacji o problemie na zdefiniowanego maila. Jak to zrobić za pomocą Zend_Log?

Najpierw zainicjujmy zasób log w pliku konfiguracyjnym application.ini:

; log
resources.log.file.writerName = "Stream"
resources.log.file.writerParams.stream = APPLICATION_PATH "/../data/logs/app.log"
resources.log.file.filterName = "Priority"
resources.log.file.filterParams.priority = 5

Informacje o priorytecie 5 (Zend_Log::NOTICE) i ważniejsze zapisywać będziemy do pliku app.log.

Plik Bootstrap.php:

/**
* Log aplikacji
*/
protected function _initRegisterLogger() {
    $this->bootstrap('Log');
    $logger = $this->getResource('Log');

    if ('production' == $this->getEnvironment()) {
        // konfiguracja wiadomości wysyłanej na maila
        $mail = new Zend_Mail('UTF-8');
        $mail->setSubject('Hekima - raport błędu!');
        $mail->addTo('mheki@localhost');

        $writerMail = new Zend_Log_Writer_Mail($mail);

        // logowane tylko błędy z priorytetem WARN i wyższym
        $filter = new Zend_Log_Filter_Priority(Zend_Log::WARN);
        $writerMail->addFilter($filter);

        $logger->addWriter($writerMail);
    }
    // Zapis do rejestru
    Zend_Registry::set('Zend_Log', $logger);
}

Kilka słów wyjaśnienia. Pobieramy zasób Log, w przypadku produkcyjnego środowiska aplikacji, tworzymy obiekt klasy Zend_Mail, który posłuży do wysyłania wiadomości,  a także ustawiamy osobny priorytet wysyłanych informacji (Zend_Log::WARN), następnie informujemy obiekt logujący o tym, żeby logi wysyłał na maila. Na koniec możemy jeszcze zapisać obiekt logujący do rejestru celem późniejszego użycia w aplikacji.

W ostatnim kroku możemy jeszcze rozszerzyć wysyłane informacje, modyfikując w klasie ErrorController domyślną metodę errorAction(). Zamieniamy kod:

if ($log = $this->getLog()) {
    $log->log($this->view->message, $priority, $errors->exception);
    $log->log('Request Parameters', $priority, $errors->request->getParams());
}

na:

if (($log = $this->getLog())) {
    $log->log($this->view->message, $priority, $errors->exception);
    $log->log($errors->exception->getMessage(), $priority);
    $log->log('Parametry wywołania: ' . print_r($errors->request->getParams(), true), $priority);
}

Metoda getLog() wygląda tak:

public function getLog() {
    $bootstrap = $this->getInvokeArg('bootstrap');
    if (!$bootstrap->hasResource('Log')) {
        return false;
    }
    $log = $bootstrap->getResource('Log');
    return $log;
}

A otrzymany mail przykładowo może wyglądać tak:

2013-01-29T09:05:54+01:00 CRIT (2): Błąd aplikacji
2013-01-29T09:05:54+01:00 CRIT (2): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'hekima.test_events' doesn't exist
2013-01-29T09:05:54+01:00 CRIT (2): Parametry wywołania: Array
(
    [module] => test
    [controller] => event
    [action] => index
)

 

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 04.02.2013 07:00, tagi: javascript

Naukę każdej nowej technologii zaczyna się od aplikacji Hello World. Trzymając się tej tradycji, pierwszą aplikacją Windows Store będzie prosta aplikacja złożona z formularza oraz pola tekstowego wyświetlającego wprowadzone dane. Pisanie aplikacji zaczniemy od utworzenia nowego projektu. W tym celu (…)

Read the rest of this entry »

Autor wpisu: singles, dodany: 03.02.2013 22:58, tagi: mysql, php

Kolejną ksiażką, którą otrzymałem do zrecenzowania od Wydawnictwa Helion jest **PHP i MySQL dla każdego”. Autorem jest Marcin Lis, a ksiażka jest „świeżynką”, ponieważ została wydana w roku 2013.

PHP - MySQL dla każdego

PHP – MySQL dla każdego

Uprzedzając – czy jest to artykuł sponsorowany? W jakiś sposób tak – książka zostanie u mnie i zostanie przeznaczona na nagrodę na następnym meet.php. Czy moje opinie są sponsorowane? Zdecydowanie nie.

Treść

Ksiażka jest typowym wprowadzeniem do języka PHP jak i MySQLa. O ile do „dla każdego” mógłbym się przyczepić (patrz podsumowanie recenzji), to zdecydowanie jest to ksiażka dla początkujących.

Ksiażka podzielona jest na 3 części. Pierwsza tyczy się stricte PHP, druga MySQLa, a trzecia łączenia wcześniej wymienionych.

Tak więc w przypadku PHP mamy spory rozdział o instalacji, potem o zmiennych, poprzez instrukcje sterujące itd. Znalazło się także miejsce na rozdział o programowaniu obiektowym (który jest 2 razy krótszy niż rozdział o instrukcjach warunkowych). Po opisaniu podstaw PHP przychodzi czas na opisanie podstaw MySQLa. No i ponownie mamy instalację, następnie czytamy o tym czym są tabele, jak je obsługiwać i jak dodawać, pobierać dane. Część trzecia opisuje na podstawowych przykładach, jak łączyć wspomniane technologie na przykładzie takich rzeczy jak system newsów czy też generowanie statystyk.

Po zapoznaniu się z ksiażką stwierdzam, co następuje – 2/3 ksiazki to tak naprawdę przeredagowany manual dla PHP i MySQLa wydrukowany na papierze, z tym że z większą ilością przykładów. Co nie znaczy, że to coś złego. Cieżko powiedzieć coś wiecej – nie zauważyłem jakiś błedów merytorycznych, aczkolwiek mam kilka uwag:

  • z niektórych rozdziałów bym zrezygnował – skoro to dla poczatkujących to zostawmy programowanie obiektowe w spokoju, tym bardziej, że jest potraktowane mocno po łebkach,
  • ksiażka jest z roku 2013, a o PHP 5.4 ani słowa – aczkolwiek, może to być kwestia procesu wydawniczego,
  • umieszczanie w tekście określen „implozja i eksplozja” nie wydaje się mi pomysłem trafnym ;),
  • w ksiażce w jednym miejscu znajduje sie kawałek kodu w JS (do walidacji formularza), który jest moim zdaniem totalnie zbędny,
  • w przypadku ksiażki dla początkujących polecałbym instalację środkowiska za pomocą gotowego pakietu, np. XAMPa, a nie od zera, ale to tylko moja osobista opinia,
  • w rozdziale na temat współpracy PHP z MySQLem przykłady podawane są w 3 formach: mysqli proceduralny i obiektowy oraz PDO (tutaj wielki plus za porzucenie mysql_*), natomiast moim zdaniem w ksiażce dla początkujących jedna forma wystarczy – osobiście wybrałbym PDO,
  • spaghetti code – niestety, ksiażka prezentuje mocno zaawansowany „spaghetti code” – uważam, że wprowadzenie do prostego systemu szablonów nie jest czymś, z czym początkujący programista sobie nie poradzi

Jakość wydania

Książka wydana została w miękkiej oprawie i NIE pochodzi z wydania „eko”. Zawartość zmieszczono na ponad 600 stronach stosunkowo grubego papieru o wysokiej białości. Formatowanie jest bardzo dobre, ważne rzeczy odpowiednio wyróżnione, kod w przykładach drukowany czcionką o stałej szerokości z pogrubionymi słowami kluczowymi. Jeśli chodzi o język kodu, to tak jak nie znoszę listingów w innym języku niż angielski, w ksiażce dla początkujących mogę przymknąć oko.

Jednak na fakt tego, że raz listingi są po polsku a raz po angielsku, to oka już nie przymykam.

Podsumowanie

Mam problem z takimi ksiażkami.. Mianowicie, chodzi mi o człon „Dla każdego”. No i tutaj jest problem. Programowanie nie jest dla każdego. I nie, jestem daleki od wywyższania się. Bo tak samo nie dla każdego jest śpiewanie, malowanie, gotowanie czy też praca z klientem.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.