Archiwum dla November, 2008

Co ostatnio czytałem.

Myślę że warto tu podzielić się w kilku słowach taką informacją i o tym co warta jest dana książka. Co czytałem ostatnio, bo nie sposób spamiętać już tego 8-)

I nie chodzi tu o manuale - tych było zbyt dużo :) Chodzi o książki. Dwie ostatnie - akurat z Helion’a:

SEO, czyli Pozycjonowanie w wyszukiwarkach internetowych, Wyd. II oraz Relacyjne bazy danych dla praktyków,  autor C.J.Date.

Pierwsza książka jest ciekawa, nawet przy fakcie że miałem już trochę do czynienia z SEO. Autorka wie o czym pisze, a książkę warto przeczytać choćby dlatego aby poznać zasady - a jest ich nawet sporo, a także obalić pewne mity. Ja sam będę miał niedługo okazję spróbować swoich sił w SEO. Bo takimi rzeczami jak SEO, e-commerce itp. ostatnio się interesuję.

Polecam książkę wszystkim zainteresowanym, oraz tym mniej rozgarniętym czyli spamerom, żeby się w końcu czegoś nauczyli ;)

Druga książka opisuje znakomicie teorie relacyjnego modelu danych, który w laboratoriach IBM stworzył matematyk E.F. Codd. I w tym sensie właśnie książka jest dla praktyków, którzy stosują różne metody w SQL na co dzień.

Wiadomo jak mocno praca programisty związana jest z bazami danych. Przyznam ze ja również mam sporo praktyki na tym polu.

W tej książce znalazłem balsam na swoja duszę, rozdrażnioną codziennym pędem do szybkich optymalnych praktycznych rozwiązań SQL. Jest tu opis formalny, który wręcz nudny - taki jakiego potrzebowałem do usystematyzowania wiedzy, i wyjaśnienia pewnych nieścisłości, które ma zapewne każdy praktyk. Dzięki niej można na chwilę oderwać się od języka SQL, który ma swoje niedoskonałości i spojrzeć na temat z trochę wyższego poziomu abstrakcji.

Teraz w kolejce manuale ;) Ale po nich ksiazki o High performance SQL, o zaawansowanym Perl’u, czyli tzw. wypas ;)

Napisał Dominik w kategoriach Praca, Życie | Brak komentarzy

Nov. 11, 2008

Symfony 1.1 Forms, czyli nowość w Symfony, na którą warto zwrócić uwagę.

Cudo o którym mowa bazuje na nowych klasach: sfForm oraz sfWidget

Przykład:
// lib/form/ContactForm.class.php
class ContactForm extends sfForm
{
  public function configure()
  {
   $this->setWidgets(array(
    'name'    => new sfWidgetFormInput(),
    'email'   => new sfWidgetFormInput(),
    'message' => new sfWidgetFormTextarea(),
   ));
  }
}

I… na tej podstawie budujemy nasz formularz!
$ php symfony generate:module frontend contact

Otrzymaliśmy nowy moduł: contact.

Teraz tylko akcja:
// apps/frontend/modules/contact/actions/actions.class.php
class contactActions extends sfActions
{
 public function executeIndex()
 {
  $this->form = new ContactForm();
 }
}

oraz widok:
<form action="<?php echo url_for('contact/submit') ?>" method="POST">
<table>
 <?php echo $form ?>
 <tr>
  <td colspan="2">
   <input type="submit" />
  </td>
 </tr>
 </table>
</form>

Czyścimy cache, otwieramy contact/index. Pokaż żródło i widzimy elegancko wygenerowany kod.
DRY! Ku chwale obiektowości! :)

Co jeszcze ciekawego?
Dla uprzednio stworzonych pól możemy sobie zadefiniować na stałe etykiety, do tego wszystkiego - automatyczna ochrona przed atakami XSS.

Nie musimy także tracić za dużo czasu na walidację.

$this->setValidators(array(
 'name'    => new sfValidatorString(array('required' => false)),
 'email'   => new sfValidatorEmail(),
 'subject' => new sfValidatorChoice(array('choices' => array_keys(self::$subjects))),
 'message' => new sfValidatorString(array('min_length' => 4)),
));

Automatyczne walidatory! Bo przecież chodzi o to żeby programować jak najdokładniej ale i  oczywiście jak najszybciej!

Temat jest spory, chciałem tylko zwrócić na niego uwagę.
Zapraszam do źródła:

http://www.symfony-project.org/book/forms/1_1/en/

Enjoy :)

Napisał Dominik w kategoriach O programowaniu | Brak komentarzy

Nov. 3, 2008

Jeśli jeszcze nie wspominałem to teraz wspomnę, że bawiłem się swojego czasu w programowanie GUI z użyciem PHP-GTK.

Mowa o rozszerzeniu PHP pozwalającym na programowanie interfejsów użytkownika w oparciu o GTK. Miałem do czynienia z tego typu rozwiązaniami, np. Perl Tk, i przyznam że PHP-GTK jest dość ciekawe.

Również programowanie idzie szybko i wymaga stosunkowo niewiele kodu.

Aby użyć tego cuda należy mieć skompilowane PHP o z obsługą rozszerzenia GTK. I żeby nie było że Linux i Linux, to zaprezentuje przykłady prosto z Windows :)

Skoro Windows to wersję PHP o której mowa można pobrać z internetu ;)

Może prosty przykład:
function echoValue($spinButton) {
//dane beda widoczne w konsoli
echo $spinButton->get_value() . "\n";
}

$window = new GtkWindow();
$window->set_size_request(150, 150);
$hScale = new GtkHScale(new GtkAdjustment(4, 0, 10, 1, 2));
$hScale->connect('value-changed', 'echoValue'); //przypisanie funkcji
$vScale = new GtkVScale(new GtkAdjustment(4, 0, 10, 1, 2));
$vScale->connect('value-changed', 'echoValue');
$vScale->set_value_pos(GTK::POS_LEFT);
$hBox  = new GtkHBox();
$vBox1 = new GtkVBox();
$vBox2 = new GtkVBox();
$window->add($hBox);
$hBox->pack_start($vBox1);
$hBox->pack_start($vBox2);
$vBox1->pack_start(new GtkLabel('Skala pozioma'), false, false);
$vBox1->pack_start($hScale, false, false);
$vBox2->pack_start(new GtkLabel('Skala pionowa'), false, false);
$vBox2->pack_start($vScale);
$window->connect_object('destroy', array('Gtk', 'main_quit'));
$window->show_all();
Gtk::main();

Uruchamiamy kod w wierszu poleceń:

$> php ./kody/scroller.php  i….

Toolbar zrobić jeszcze łatwiej:

$window = new GtkWindow();

Czytaj dalej »

Napisał Dominik w kategoriach O programowaniu | Brak komentarzy