wtorek, 15 lutego 2011

W końcu jakiś film :)

Na stronie Krotoszyńskiej Strefy Walki znalazłem przypadkiem swój film z MP w Łodzi :) Pierwsza walka

sobota, 12 lutego 2011

Lazy loading metod

Dzięki Eagle z devpytania.pl poradziłem sobie z małym problemem z pracy. Otóż mieliśmy klasę modelu, która zawierała 218 metod i około 20 tysięcy linii kodu. Obciążające to było i spasione strasznie. Przerobiłem klase modelu na:

<?php
class Model_Methods
{

    protected $_name = '';

    public function __call($name, array $params)
    {
        $className = "Model_Methods_".$name[0];
        $xClass = new $className;
        return $xClass->$name($params[0],$aParams[1]);
    }
}

Następnie wszystkie metody poupychałem według nazw do klas dziedziczących po powyższej znajdujących się w katalogu Methods w plikach A.php, B.php, C.php itd. aż do Z.php

Przykładowy plik:

<?php
class Model_SeoApi_Methods_T extends Model_Methods {
    public function test($aParams, $sFormat)
{
var_dump($aParams);
var_dump($sFormat);
}
}

Tym sposobem uruchamiam metodę Model_Methods::test(), co powoduje, że autoloader zenda dołącza plik Methods/T.php, tworzy obiekt klasy T i uruchamia metodę. Mało tego - działają wewnętrzne odwołania do metod itd. Przy dodaniu __set i __get w klasie bazowej można nawet odwoływać się do wspólnych dla wszystkich metod atrybutów klasy.

czwartek, 10 lutego 2011

Takie tam...

Myslovitz - Chłopcy

Wieczorami chłopcy wychodzą na ulicę
Szukają czegoś, co wypełni im czas
Rzucają kamieniami w koła samochodów
I patrzą na spódnice dziewczyn, które nie chcą ich znać

Wieczorami chłopcy wychodzą na ulicę,
Bo wieczorami nie widać szarości
Nie widać brudnych ulic a latarnie nie świecą
I można udawać, że można na spacer pójść

Wieczorami chłopcy wychodzą na ulicę
Marzą o życiu w dalekich krainach
Spoglądając w puste lornetki butelek
dyskutują o amerykańskich filmach

Wieczorami chłopcy wychodzą na ulicę
Siadają na chodniku i palą jointy
Robią wszystko żeby stąd uciec
Kiedy wreszcie mogą, to wtedy nie mogą się ruszyć

niedziela, 6 lutego 2011

Prostsze życie z SVN

Nie ma to jak sobie upraszczać (choć czasem tym sposobem można sobie też utrudniać) życie.

W pracy edycja projektu ma swój proces:

1. Wprowadzamy zmianę.
2. W katalogu z projektem z Tortoise SVN trzeba kliknąć się RMB i wybrać "Commit", kliknąć OK
3. W oknie puttego uruchamiam skrypt updateujący źródła na serwerze.

Dopiero po takich krokach mogę podziwiać zmiany na serwerze. Oczywiście, może sie to wydawać żmudne i takie jest przy testowaniu, wprowadzaniu kolejnych zmian i rozwijaniu aplikacji.

W domu postanowiłem dla własnego projektu ten proces nieco usprawnic. Skorzystami z paru właściwosci i narzędzi:

1. Netbeans pozwala na pracę na dwóch katalogach naraz - katalogu projektu i katalogu źródeł. Po prostu zapisuje zmiany w projekcie i dodatkowo w katalogu, który jest document rootem na moim lokalnym serwerze.

2. Tortoise ma opcję definiowania skryptów uruchamianych na poszczególne zdarzenia.

3. Putty ma narzedzie umożliwiające jednorazowe uruchomienie sesji, zalogowanie się, wykonanie komendy i wylogowanie - plink.exe

A więc tak: we właściwościach projektu (klikamy prawym na nazwie projektu - Project Properties) wybieramy zakładkę Sources, zaznaczamy w niej Copy files from Sources Folder to another Location i w Copy to Folder wpisujemy adres katalogu na serwerze na jaki chcemy kopiować pliki. Wbrew pozorom ma to sens, bo nasz projekt moze generowac pliki tymczasowe, cache itd, których nie chcemy eksportować na svn na przykład. Przez przeglądarke pracujemy wtedy na jednej kopii, a projekt siedzi niemodyfikowany w innym katalogu. U mnie struktura dysku "Praca" wygląda tak:


E:\www\projekt\ <- Document Root
E:\praca\projekt\ <- Katalog projektu netbeans oraz svn (.netbeans dodałem do listy katalogów ignorowanych w svn)

Pamiętajmy, że pozostawia to nam niezłe pole do popisu, gdy użyjemy programu podpinającego konto ftp/sftp jako napęd logiczny w naszym systemie - dzieki temu możemy eksportować pliki bezpośrednio na serwer zdalny!!!

Jedziemy dalej.

Wchodzimy do ustawień Tortoise SVN (klikamy gdziekolwiem RMB, Tortoise SVN -> Settings). W oknie ustawień wybieramy Hook Scripts i wciskamy "Add".

W nowym oknie ustawiamy:
Hook Type
Post-Commit-Hook (dokona się po zacommitowaniu zmian na repozytorium)
Working Copy Path
E:\praca\projekt\ (w moim przypadku, katalog którego skrypt ma dotyczyć)
Command Line to Execute
E:\putty\plink.exe -pw moje_hasło nazwa_uzytkownika@serwer 'komenda_lub_skrypt_do_uruchomienia'


po stronie serwera (o ile mamy dostęp przez ssh) możemy wtedy uruchomić sobie np. svn update /katalog/projektu i nasze dane zostaną zupdateowane.


I jeszcze mała uwaga. Zdarza się, że proces TSVNCache.exe potrafi nam ostro zamulić system. Niestety reza nam on po wszystkich dyskach w poszukiwaniu katalogów .svn, dla których chce aktualizować ikony. Prostym sposobem pozbycia się tego problemu jest zmiana ustawień Tortoise SVN. Zmusimy go do monitorowania jedynie naszego katalogu projektu.

Ponownie wchodzimy do ustawień Tortoise, wybieramy Icon Overlays. Edytujemy dwie opcje:

Exclude paths:
dodajemy tu WSZYSTKIE nasze napędy, po jednym w każdej linii:
C:\*
D:\*
E:\*
itd.

 Include paths:
dodajemy tylko katalogi, w których są nasze projekty:
E:\praca\projekt\*

Dzieki takiemu ustawieniu TSVNCache.exe będzie monitorować tylko, co powinien :)