SajamBLOG

Problem dwuznaczności kluczy obcych w KO3 15/01/11 Tagi: foreign keyhas onehas_oneko3kohanaorm

15 komentarzy

Zarys problemu

W serwisie znajdują się 2 tabele dla kategorii i artykułów. Routing prowadzony jest w oparciu o bazę danych - tabela urls(url, content_type, content_id), gdzie - jak nie trudno się domyślić - url jest unikalnym identyfikatorem zasobu (kategorii lub artykułu), a content_type polem enum przyjmującym wartość category lub page. Dlatego też content_id może się powtarzać (sytuacja gdy takie samo id ma kategoria i postrona).

Układ tabel

Tu pojawia się problem zdefiniowania relacji typu has one w ORM'ie KO3. Dlaczego? Ponieważ deklaracja taka była by identyczna dla modelu kategorii jak i artykułów. Tj: protected $_has_one = array('url' => array('model' => 'url', 'foreign_key' => 'content_id')); Skutki jakie mogło by to pociągnąć za sobą, to przykładowo zwracanie url'a dla kategorii zamiast podstrony. Nie mówiąc o ewentualnych błędach. Jak temu zaradzić? Potrzeba określić warunek w relacji, taki który będzie określał content_type. W tym celu zmodyfikujemy lekko moduł ORM Kohany.

Problem

Rozwiązanie

Rozwiązanie jest proste. Do definicji relacji dodajemy warunek where, który będzie odpowiadał za określenie typu (content_id) obiektu (category/page). Wyglądać to będzie tak (dla modelu page): protected $_has_one = array('url' => array('model' => 'url', 'foreign_key' => 'content_id', 'where' => array('content_type' => 'page')));. Aby coś takiego zadziałało udajemy się do modules/orm/classes/kohana/orm.php i po linii 339 dodajemy:

if ( isset($this->_has_one[$column]['where']))
{
        foreach ( $this->_has_one[$column]['where'] as $c => $v )
                $model->where($c, '=', $v);
}

Rozwiązanie

Katechizm satanizmu 05/11/10 Tagi: grzechyprzykazaniasatanizmuświadamianie

8 komentarzy

Zostawiam jako ciekawostkę. Chyba mało kto orientuje się jak to wygląda albo po prostu nie mieli okazji o tym słyszeć. Ja też do niedawna nie wiedziałem. Dodam tylko, że poniższe regułki dotyczą satanizmu laveyańskiego (takiego, który jako najwyższą wartość uznaje człowieka i jego potrzeby).

Jedenaście przykazań satanizmu

  1. Nie wyrażaj swoich opinii lub rad, jeżeli nie jesteś o to proszony.
  2. Nie zwierzaj się ze swoich problemów innym, chyba ze jesteś pewien, że chcą o nich słuchać.
  3. Kiedy jesteś w cudzym domu (na cudzym terenie) okaż mu respekt lub, jeżeli nie potrafisz, nie chodź tam.
  4. Jeżeli gość w twoim domu (na twoim terenie) dręczy cię, traktuj go okrutnie i bez miłosierdzia.
  5. Nie czyń seksualnych awansów, dopóki nie dostaniesz wyraźnej propozycji współżycia.
  6. Nie bierz tego co nie należy do ciebie, chyba że jest ta rzecz dla kogoś brzemieniem i osoba ta "płacze", by być uwolniona.
  7. Potwierdź moc magii, jeśli udało ci się przy jej pomocy zaspokoić swoje pragnienia. Jeżeli zaprzeczysz mocy magii po jej wykorzystaniu, utracisz wszystko co w ten sposób uzyskałeś.
  8. Nie narzekaj na coś, czemu nie musisz się poddawać.
  9. Nie krzywdź małych dzieci.
  10. Nie zabijaj zwierząt (nie-ludzi), chyba że zostaniesz zaatakowany lub będziesz potrzebował pożywienia.
  11. Kiedy chodzisz w "otwartym" terenie nie zaczepiaj nikogo. Jeżeli ktoś cię zaczepia, poproś go by przestał. Jeżeli nie przestanie, zniszcz go.

Dziewięć grzechów satanizmu

  1. Głupota
  2. Pretensjonalizm
  3. Solipsyzm
  4. Konformistyczna stadność
  5. Ograniczenie
  6. Niepamięć historii Ducha
  7. Bezkompromisowa duma
  8. Brak wrażliwości estetycznej
  9. Megalomania

(via Wikipedia)

BlogDay nie będzie 31/08/10 Tagi: blogblogdayblogowanie

5 komentarzy

Nie u mnie! Choć na FB obiecałem się "pojawić" na owym wydarzeniu. Nie będzie z jednego powodu: w tym roku praktycznie nie udzielałem się w blogosferze. I jak widać dalej brnie w to samo.

But... why?! Zaraz wyjaśniam. Przeszła mi obywatelska i patriotyczna postawa komentowania aktualnej sytuacji politycznej/absurdów dziejących się na naszym podwórku. Bunt bloggera, akcja na FB czy innej społecznościówce daje tyle co kot napłakał. Nie ma sensu wyrażać swoich poglądów, nie ma sensu brać udziału w flamewarach. Dlatego tak drastycznie spadła częstotliwość moich wpisów. Choć nie mówię definitywnie, że to koniec takich wpisów - może coś tak podrapie mnie po nerwach, że samo się coś o tym napisze. Z resztą blogowanie nigdy mi nie wychodziło za dobrze.

Minął też okres kiedy w sieci można było pisać o swoim życiu. Ostatnio nawet na Joggerze było o tym, tylko nie pamiętam już gdzie. Trudno pisać o swoim życiu, finansach w sieci. Ja tej zasady trzymam się prawie od zawsze.

O projektach też nie można pisać, bo tajne. W sumie... jedyne co mi wpadło do głowy na tegoroczny BlogDay to Planeta PHP.pl i prawie-blog - Google'owski HTML5Rocks, które to śledzę od dawna. Choć uważam, że to zbyt techniczne.