Archive for styczeń, 2007
Prac ciąg dalszy
Po niezbyt pracowitym weekendzie w domu, wróciłem do Rzeszowa i ostro wziąłem sie do roboty. Dzięki temu sporo nadgoniłem. Troche męczyłem sie nad Validacją formularza do dodawania pytań, gdyż gryzło sie z rePopulacją z bazy danych itp. Posiedziałem troche i sie udało :) Musiałem troche wszystko przebudować, ale dzięki temu dowiedziałem sie o czymś takim jak Flash w Symfony. Musze przyznać, że ciekawe rozwiązanie. U siebie w SparkleWorks rozwiązałem to troche inaczej, przez bezpośrednie dodanie parametrów w wywołaniu metody. Być może zmienie u siebie na coś podobnego… To się jescze okaże, któro będzie wygodniejsze :)
2 commentsTrochę przerwy…
W końcu mam trochę przerwy. Dzisiaj dwa zaliczenia i następne dopiero za tydzień. Pare dni w domku moze dobrze mi zrobi :) Na pewno dobrze dla mojego portfela którego zawartość ciągle i ciągle maleje :( Przydałoby się podłapać coś co by podreperować zasoby pieniężne… :)
1 commentNowa klasa AppBrigde
Aby sie troche odstresować, zacząłem grzebać przy SparkleWorks. Troche poprawiłem AppController, gdyz był mały bug i zacząłem myśleć na konfiguracją. Zrobiłem tak, że do konfiguracji FW oraz aplikacji odwołujemy sie przez Config::getConfig(var), natomiast do konfiguracji modulu przez $this->getConfig(var) Podział taki powstal, gdyz konfiguracja FW oraz aplikacji zawsze bedzie taka sama, natomiast mozemy zechciec pobrac konfiguracje innego modulu niz aktualnie wykonywany. I tu mialem maly problem. Chcialem uniknąć
-
$c = new ModuleConfig('modul')
-
$c->getConfig(var);
dla pobieranie konfiguracji aktualnego modulu i zastapic przez $this->getSelfConfig(var). Nie mialem gdzie umiescic tej dodatkowej metody. Wpadlem wiec na pomysl klasy AppBridge. Jest to główna klasa Akcji, i inne klasy po niej dziedziczą. Nic nowego to zapewne nie jest, ale stwarza teraz nowe możliwości, co do dalszej rozbudowy :)
2 commentsPrzeMYŚLENIE
Mój mozg już jest chyba przeMYŚLONY. Od paru miesięcy nie ma takiego dnia, abym mogł kompletnie nic nie robić. Nie przejmować się, że mam coś do zrobionia na za pare dni. Poprostu nic nie robić i mieć wolną glowe bez spraw do zalatwienia. A co najgorsze przede mną jeszcze ciężkie zaliczenia. Jutro chyba poprawka z cwiczen z matematyki dyskretnej. Chyba bo nie wiem czy zaliczyłem czy nie. A w piątek egzamin z tejże matematyki. I do tego u mnie z matematyką nie jest najlepiej. Próbuje coś sie uczyć, ale książka która mam Ross K.A., Matematyka dyskretna, PWN, Warszawa jest do d....! Specjalnie poszedłem na uczelnie prywatną, aby nie mieć samej matematyki i fizyki, tylko jako dodatek. A ta ksiązka jest napisana dla mózgów matematycznych. Same udowadnianie, wyprowadzenia, i w ogole. To nie dla mnie. Dobrze że matematyki mam nie dużo. W tym semestrze matematyka dyskretna, pożniej analiza matematyczna oraz algebra liniowa. Myśle że to do przeżycia. Ale wrócmy do mojego przeMYŚLENIA. Oprócz nauki w szkole, dochodzi sprawa projektu tonieproblem.pl Wszystko sie ciągnie jak makaron do spaghetti obklejony roztopionym serem. Zespół w którym robie jest ekhm... powiem - nienajlepszy. Jedna osoba poprostu sobie odeszla, bez zadnego slowa. Cały projekt, tzn. jego wykonanie jest banalne. Najgorsze tylko było zapoznanie sie z Symfony oraz odswiezenie php, który porzuciłem na ponad 1.5 roku. Teraz jest już ok. Pisze SparkleWorks, mam mase pomyslow, ale nie mam czasu na ich zaimplementowanie, a jak juz coś sie znajdzie to zaraz są wyrzuty sumienia, że nie poświecam go na coś innego, jak np. nauka do egzaminu :/ I w taki oto sposób jestem wiecznie sfrustrowany. Tzn nie tak wiecznie, ale od paru miesięcy ;) Ale sie tu uskarżam. No cuż... Czasem trzeba :]
2 comments“Update pole = pole+1″ in propel == POSSIBLE
Dzis całkiem przypadkiem znalazłem rozwiazanie tego problemu. W koncu troche bardziej rozbudowali dokumentacje i sie znalazło :) A jak to zrobić? Bardzo prosto i logicznie:
-
$o = SubCategoryPeer::retrieveByPK( $this->getRequestParameter( 'sub_cat_id' ) );
-
$o->setQuestionCount( ( $o->getQuestionCount() + 1 ) );
-
$o->save();
4 comments
Symfony i jego braki…
W koncu mamy layout dla ToNieProblem. Z racji tego odpusciłem sobie narazie prace nad SparkleWorks na rzecz Symfony. Najpier miło mnie zaskoczyło, jak łatwo mozna dodać kontrolke RichEdit do formularzy. Bardzo przyjemna sprawa. Ale to tyle rzeczy pozytywnych. Przejdzmy do tego co znowu mi brakuje. A mianowicie cały ten system slotów i komponentow. Jest To rozbudowane jak cholera. Wiele funkcji jest az nadto, a nie ma tego co mi jest potrzebne. A mianowicie: mam komponent user. Występuje on w 3 różnych stanach. Kiedy użytkownik jest zalogowany, niezalogowany oraz kiedy zalogowany uzytkownik jest expertem. I jak to najłatwiej zrobić? Przyszło mi do głowy, ze w szablonie załaduje komponent z akcją Index. W tejze akcji zrobimy cos takiego:
-
<?php
-
class usersComponents extends sfComponents
-
{
-
public function executeIndex()
-
{
-
if( $this->getUser()->isAuthenticated() )
-
{
-
if( $this->getUser()->getAttribute('credential_registered') == 'expert' )
-
{
-
$this->executeExpert();
-
}
-
else
-
{
-
$this->executeLoggedUser();
-
}
-
}
-
else
-
{
-
$this->executeUnloggedUser();
-
}
-
}
-
private function executeLoggedUser()
-
{
-
-
}
-
private function executeUnloggedUser()
-
{
-
-
}
-
private function executeExpert()
-
{
-
}
-
}
-
?>
To działa. Ale co z widokiem? Nie da sie teraz załadować widoków dla poszczególnych akcji komponentu. Coś takiego jak setTemplate() dla komponentów nie istnieje :(
Tak więc kolejny argument za tym, aby napisać SparkleWorks :D
Wiele akcji w jednej akcji - sukces!
W poprzedniej notce pisałem o moich dylematach co do ładowania akcji w akcji. Teraz, po długich bojach doszedłem do tego co chciałem :D Przyklad:
-
<?php
-
class DefaultAction extends View
-
{
-
public function Index()
-
{
-
$this->newModel( 'Show'); //Załaduje nam akcje Show z aktualnego modulu
-
$this->newModel( 'Show', 'News' ); //Załaduje Show z modułu News
-
$this->newModel( 'Index', 'Test'); //Załaduje Index z modułu Test
-
}
-
public function Show()
-
{
-
$this->test = 'zmienna testowa';
-
}
-
}
-
?>
To był przyklad wykorzystania. To jest dokladnie to o co mi chodziło od początku :) Teraz bez problemu moge napisać moduł News oraz moduł Comments, bez zadnych powiązań między nimi. Zaden z modułów nic nie musi wiedzieć o drugim. Do zrobienia jeszcze zostało mi tylko dodanie parametrów, do nowo wywołanej akcji, ale to już nie problem :)
Dodatkowo, aby sie nie pomylić w szablonach ze zmiennymi, zrobiłem małe udogodnienie. Do zmiennych w szablonie odwołujemy sie w taki sposób: echo $NazwaModułu->zmienna Dzięki temu napewno nie nastapi pomyłka, lub nadpisanie jakiejs zmiennej :)
Ładowanie akcji oraz widoków
Jako że przepisuje cały kod, którego i tak było nie wiele, postanowiłem dodać nową funkcjonalność, jaką jest ładowanie klilku akcji w jednej. Już tłumacze na przykładdzie. Mamy moduł News i w nim akcje Show. Oprócz tego mamy jeszcze moduł Comments z akcją ShowComments. I teraz w News->Show() wywołujemy Comments->ShowComments()
-
Class News{
-
public function Show()
-
{
-
//Zawartość akcji
-
$this->newModel('Comments', 'ShowComments'); //Tutaj wczytujemy moduł Comments z akcją ShowComments
-
}
-
}
To był przyklad wywołania. Tak więc to jest to o co powinno chodzić w MVC wg mnie. Np. W tak potężnym Symfony nie ma tego zaimplementowanego. I tam aby wywołać np. komentarze do newsów trzeba było wszystko napisać w akcji newsów. A to mi sie nie podoba!
W teori wygląda ładnie, gorzej z zastosowaniem. Męcze się już nad tym już troche i jakoś nie wiem do końca jak to rozwiązać. Zresztą zainteresowanych zapraszam do dyskusji na ten temat na forum PHP.PL
Smartowanie VS Pehapowanie :)
Po dłużeszje przerwie (nie cały miesiąc) wróciłem do SparkleWorks. Skorzystałem z okazji, że zrobiło sie troszeczke luźniej po serii zaliczeń na uczelni. Przy okazji pochwale sie ze aktualny bilans końcowy: 4, 5, 5, 5 :D Dzisiaj doszły ostatnie 2 piątki za zaliczenia z Podstaw informatyki oraz z Algorytmów :) Wczoraj 5 z mikroekonomii, a jakiś miesiąc wczesniej 4 z Logiki. No ale koniec przechwałek. Zajrzałem do kodu a tam bałagan, który narobiłem na święta jak byłem chory :/ Doszedłem do wniosku, że tego używać sie nie da i trzeba przepisać, stosując troche nowych pomysłów. Na szczęscie nie ma duzo bo tylko kontroler, Router, Widok, i ConfigClass. To ostatnie to trzeba rozbudować o generator itp. :) Ale w trakcie przerwy nie próżnowałem tylko od czasu do czasu myślałem co nieco. Między innymi tematem były szablony. Osobiście jestem przeciwnikiem Smarty i pochodnych. Nie widze praktycznie zadnej różnicy między < ?php echo $title ?> A {title}. No zapis jest krótszy i troche prostszy i tyle. Ale żeby do tego pisać specjalne klasy to nie dla mnie. Z kolei wszyscy zwolennicy Smarty piszą ze graficy nie znają php, i nie bedą sie bawić. W sumie też racja. O ile wyświetlenie zmiennej to nic, ale juz pętli czy instrukcji warunkowej to troche trudniejsza sprawa. W smarty tez nie jest za kolorowo, tylko troche mniej groznie wygląda ;) I jak tu dogodzić jednym i drugim. Wyjściem które sprawi, że i grafik i programista będzie zadowolony, będzie tymczasowy szablon. Coś bardzo banalnego. Skoro grafik juz poświecił kiedys czas i nauczył sie skladni Smarty, to nie rzucajmy mu klód pod nogi tylko wspomagajmy. Niech sobie dalej używa skladni Smarty jak gdyby nigdy nic. Potem ja, programista :D odpalam skrypt php, który mi to wszystkie Smartowskie znaczki zamieni normalnymi regexpami na kod php, a wynik zapiszemy do nowego pliku. I koniec. Od tej pory używamy tylko wersji phpowej. Wersja a'la Smarty gdzies sobie leży zapisana i delektuje sie spokojem :) W razie jakiejs drobnej poprawki, moge odrazu zmienić w szablonie php, albo niech grafik zrobi to po Smartowemu, a ja znowu sobie to "przekompiluje" do normalnego php :] Takim oto sposobem wilk syty i owca cała :) Nie jest to nowośc, gdyż znane jest to jako mechanizm cache szablonów, ale eliminuje całą mase kodu. W tym wypadku wystarczą dobrze napisane regexpy i jesteśmy w domu :)
7 commentsYeah :D
No i już po. Egzamin z mikroekonomii zaliczony. W indexie 5 widnieje :) Dla mnie bomba :D
6 commentsFocus menic, focus
Sesja tuż tuż, a ja dalej w miejscu :| Jutro egzamin ustny z mikroekonomii, a ja dalej nie jestem nauczony. Co sie wezme do nauki, to coś innego odwraca moją uwage. A to sprawdze poczte, a to przejrze czy są nowe wpisy na forum, albo cos jeszcze innego. I tak mi mija czas między palcami. Do tego musze sie jeszcze przygotowac na 3 zaliczenia w tym tygodniu :o Szczerze...? Nie chce mi sie! Wolałbym odpalić kobylaste Eclipse i wziąść sie za coś miłego, np. ruszyć na nowo z ToNieProblem lub naprawić SparkleWorks, które zepsułem podczas świąt kiedy byłem chory. No, ale nie moge bo jednak zaliczenia ważniejsze. A nie chce mieć poprawek. Wystarczy, że mam już jedną z DLa z Logiki :)
1 commentPowrót
No i mamy juz 2oo7. Czas zapomnieć o chorobie i o udanym Sylwestrze :) Nowy rok, nowe mozliwości, nowe problemy do rozwiązania :> Juz na początku tj. 09.01.07 egzamin ustny z mikroekonomii, a ja jeszcze nic nie ruszyłem. Trzeba się wziąść w garść i do roboty :)
1 comment