Wypowiedzi
-
Mały powrót po przerwie :) W punktach to będzie:
1. Zend Framework
2. Symfony
3. CakePHP
To co wyróżnia pkt. 2 i 3 nad pkt. 1 to przede wszystkim RAD, który gdzieś głębiej wynika z ORM. ZF pewnie kiedyś do tego "dorośnie", jednak na razie wszystko wskazuje na to, że "standardowe" problemy wydają się być poza "scope'm" tego framework'a.
Co jest ciekawostką, ten "brak obsługi" standardowych problemów
nie stanowi problemu w sytuacji gdy mamy do zbudowania aplikację
dedykowaną (a nie tzw. sajcik). Tutaj dopiero widać jak ważna jest wolność zespołu i możliwość dopasowania architektury
ponad "gotowy" kod.
Osobiście mam w obecnej sytuacji pewien dylemat... i nie sam tego
doświadczam, nie od jednej osoby słyszałem... Możliwe, że wielu
z Was ma to samo wrażenie... Coraz częściej odczuwam, że nie ma
już "małego softu" do napisania... cenią się przede wszystkim Ci,
którzy potrafią zrobić "coś więcej"...
PS: @Jarku:
Twoja wnikliwa analiza i zbudowana na jej podstawie specyfikacja jest niezwykle istotna w przypadku systemów. Nie wymagaj zrozumienia programistów w przypadkach budowania modelu dla "oklepanych" problemów...Rafał Gałka edytował(a) ten post dnia 06.09.09 o godzinie 02:59 -
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy estimating software
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy estimating software
-
Dzięki za zaproszenie. Temat grupy jest dosyć intrygujący. Z chęcią podzielę się z Wami swoim doświadczeniem w tej (jakże trudnej ówcześnie) dziedzinie :)
Nie wiem jak Wasze, ale moje osobiste doświadczenia w tej materii coraz częściej (wbrew staraniom) nieubłaganie dążą do przeszacowań :/
Jestem sam? Czy Wasze doświadczenia skłaniają Was do podobnych wniosków? -
A ja znowu w ten sam rytm. Masz wysokie ambicje? Powalcz z ZF (http://www.goldenline.pl/forum/frameworki-i-mvc/136272...
-
Będę mało "elastyczny" w tym temacie. Ale przecież przedstawiamy swoje osobiste przekonania a świat dystrybucji jest (na szczęście) szerszy niż linia produkcyjna M$.
Osobiście mam bardzo wąskie mniemanie o dystrybucjach:
- development/testing/staging/production = Debian
- desktop/working = Ubuntu
Wiem, wiem, wiem... Dystrybucje mocno ze sobą spokrewnione i ten sam model "operacyjny".
Jednak czy nie o to chodzi żeby poznać środowisko do tego stopnia by nie miało przed Tobą tajemnic?
Równie dobrze ktoś za chwile powie, że RedHat (CentOS), Manadrake (Mandriva) i inne odłamy są dla niego rajem. Ja krótko gasząc wszystkich "polityków, zapaleńców" odwołuję do poprzedniego akapitu.
Dla mnie nie istotne do końca jest kto czego używa. Grunt żeby czuł się w wybranym środowisku dobrze i pewnie.
A ogólna przestroga dla wszystkich zwolenników "kompilowanych dystrybucji" typu Gentoo jest taka: W środowisku produkcyjnym liczy się każda sekunda. Instalacja (niestety kompilowanie) pakietu na maszynie 4 x Xeon może trwać. A na Debianie (kiedy wiesz co robisz) może nie trwać nawet "sekundy". -
To było poniekąd do przewidzenia.
Siła Magento (wynikająca z architektury) nie jest tym co proponuje osCommerce oraz inne tego typu silniki. Model biznesowy Varien w temacie e-commerce jest dużo bardziej wymagający niż to co obserwowaliśmy do tej pory. Ten system jest pierwszym poważnym, a co najważniejsze, darmowym podejściem do sprzedaży produktów w sieci.
Żeby pociągnąć polską społeczność tego sytemu nie wystarczy kilku "zapaleńców". Trzeba sięgnąć w głębsze obszary specjalistów którzy (z zasady) albo nie są do końca przekonani do tego, że można zarobić na oprogramowaniu na licencji GPL, albo po prostu nie mają na to czasu.
PS: Osobiście poczyniłem kilka kroków w kierunku tłumaczenia najnowszej wersji Magento.
Powiedziałem "troszkę" i liczę na dalszą dyskusję dot. Magento w polskiej odsłonie...Rafał Gałka edytował(a) ten post dnia 13.04.09 o godzinie 04:34 -
Dla php głównie ZendFramework.
I tutaj może skończyć czytać każdy kto uważa ZF za - cytuję "pseudo framework".
ZF nie jest dla "mas". Stosując go trzeba trochę pomyśleć. Jeśli programista podchodzi do tematu na zasadzie "napiszę (wygeneruję w przypadku Symfony, cakePHP) prosty skrypt który TO zrobi w krótszym czasie" to (w moim osobistym przekonaniu) u podstaw stawia się na "spalonej" pozycji. Jak chcesz zrobić sztandarowy "skrypt" dla formularza kontaktu to nie ma sprawy... każdy framework jest gorszy od tego w którym zrealizujesz to szybciej. W momencie w którym musisz postawić cały zespół w rzeczywistości o ruchomym celu generatory kodu bez ich zrozumienia zaczynają się stawać wysoce abstrakcyjne .
Osobiste doświadczenia na płaszczyźnie kilku(nastu) projektów pokazują, że zespół rozumiejący podejście obiektowe i stosujący wzorce projektowe w codziennej produkcji jest dużo bardziej efektywny od zespołu inżynierów wykorzystujących generatory kodu poprzez mapowanie ORM i inne "wysoce zaawansowane konstrukcje", których tłumaczenie prowadzi do tłumaczenia politycznych przesłanek którymi kierowali się ich pomysłodawcy...
Pozostawiając temat do dalszej dyskusji pozdrawiam i życzę Wesołych Świąt. -
Ze swojej strony http://fireflycreation.com.
Klasyfikuję obecnie jako agencję interaktywną z dużymi zamiarami w stronę mediów, SEO/SEM oraz e-commerce. Posiadamy nie małe doświadczenie w budowaniu społeczności oraz budowaniu świadomości marki.
Elastyczność jest tym czym wyróżniamy się od konkurencji. Chcesz zrealizować nie szablonowe działanie w sieci? "Zapukaj" do nas...Rafał Gałka edytował(a) ten post dnia 13.04.09 o godzinie 02:33 -
Witam,
Generalnie szukam nowych wyzwań. To co robię obecnie nie wykracza ponad "nic nie jest mnie w stanie zaskoczyć". Potrzebujesz człowieka który pociągnie Twoją technologię na "wyższy poziom"? Wiesz jak mnie znaleźć. -
Przez życie zmuszony jestem przyznać, że WP jest liderem w rankingu o którym rozmawiamy. osCommerce wygrywa praktycznie poza konkurencją :)
Jest jednak jeden parametr który jest dla mnie istotnie ważny... skuteczność! Tego czego nie można zarzucić do dzisiaj takim produktom jak WP czy osC jest ich skuteczność. "Wczoraj" była era blogów postawionych na WP, była też era sklepów na osC. Dzisiaj jest era blogów na WP oraz zaczyna się era sklepów na Magento. Rachunek biznesowy jest prosty... Chcesz mieć bloga? użyj WP. Chcesz mieć sklep? użyj Magento. Kiedy zapragniesz rozwijać WP napotkasz problemy przeszłości (względnie skomplikowane jak na możliwości PHP). Kiedy zapragniesz rozwijać Magento natrafisz na problemy z "wyższej półki". Wszyscy chcemy się rozwijać... Magento jest przykładem architektury którą można rozwijać przez kolejnych kilka lat (a może przesadziłem ;)). WordPress musi w końcu zmienić podejście i porzucić błędy przeszłości albo nagrody które zdobyli będą musieli odłożyć na "półkę".
W całym moim wywodzie jest istotne jedno... nie liczy się jakość architektury, algorytmów, kodu... (jak to mawiał jeden z moich wykładowców "Jakoś...ć to będzie"). Liczy się tylko i wyłącznie skuteczność. Biznes, który dla nas inżynierów, nie powinien stanowić "przeszkody", jednak ją stanowi. Elastyczność ponad polityczne i architektoniczne wzorce stanowi dzisiaj siłę przebicia ponad "szczytnymi ideałami"...Rafał Gałka edytował(a) ten post dnia 13.04.09 o godzinie 01:55 -
Olga Grabek:
- autoryzacja: dostęp tylko dla określonych użytkowników
- możliwość tworzenia działów
- komentowanie
itp.
Osobiście: http://www.dokuwiki.org/
Poza punktem trzecim (komentowanie) radzi sobie doskonale w firmie w której pracuję oraz w której wdrożyłem wiki jako system wspomagający budowanie bazy wiedzy. W moim przypadku komentowanie nie jest tak istotne jak na przykład prostota obsługi i zarządzania (administracji). System ACL jest banalny i pozwala tworzyć dowolny zestaw grup, działów oraz uprawnień. Samo komentowanie może być w razie potrzeby zrealizowane za pomocą odpowiednich znaczników w treści. Niewątpliwym atutem tego silnika jest to, że budowanie dokumentacji jest prostsze niż tłumaczenie styli w M$ Word. Dodatkowo prosty indeks oraz pełna historia dla konkretnej treści (strony) dostarcza olbrzymiej ilości informacji pozwalającej ocenić postępy grupy w tworzeniu bazy.
To co mogę dzisiaj powiedzieć odnosząc się do ogółu idei budowania bazy wiedzy: Gdybym od początku to robił zamiast zastanawiać się nad wyborem silnika, dzisiaj byłbym o wiele dalej... Więc nie patrz do końca na "silnik" patrz na "potrzeby"!. "Jutro" zmienisz zdanie i jeden "skrypt" przeniesie Twoją wiedzę w "inne" miejsce. Po prostu zacznij gromadzić wiedzę. Zysk będzie nie do ocenienia. -
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Języki Skryptowe
-
Sprostuję swoje ostatnie zdanie poprzedniej wypowiedzi...
Właśnie się dopatrzyłem, że obiekt Zend_Controller_Request_Http nie tylko pozwala na odebranie wartości tablic superglobalnych $_GET, $_POST, $_SERVER, $_ENV, ale również $_COOKIE.
$this->_request->getCookie();
Ustawianie ciasteczek można wykonać poprzez metodę setHeader() obiektu Zend_Controller_Response_Http.
Podsumowując - wszystko co potrzeba do obiektowego zarządzania ciasteczkami jest zaimplementowane :) -
Kuba Markiewicz:
Dzięki za odpowiedź.
Myślałem że może jest jakiś prostszy sposób na dostanie się do nazwy kontrolera z url'a. Bo przecież musi ona być zapisana gdzieś w routerze, który jest odpowiedzialny za parsowanie urla.
Udało mi się dojść do takiego kodu:
$this->getFrontController()->getRouter()->getRoute('default');
który zwraca mi taki obiekt:
Zend_Controller_Router_Route_Module Object
(
[_values:protected] => Array
(
[controller] => test
)
...
jak widac jest tam nazwa kontrolera (w tym wypadku: test), przechowywana w tablicy _values, która niestety jest typu protected i nie da się do niej w żaden sposób dostać ...
Masz dwa sposoby:
1. wewnątrz kontrolera akcji
$this->_request->getControllerName();
lub
$this->_getParam('controller');
lub
$this->_request->getParam('controller');
2. gdziekolwiek
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
lub
Zend_Controller_Front::getInstance()->getRequest()->getParam('controller');
to samo dotyczy parametrów 'module' oraz 'action'.Rafał Gałka edytował(a) ten post dnia 29.06.08 o godzinie 19:05 -
Jarek W.:
Wskazane przez Ciebie linki odnoszą się do biblioteki wykorzystywanej do budowania aplikacji, która naśladuje przeglądarkę. Odbiera, przechowuje i wysyła ciasteczka do serwera.
ZendFramework nie posiada obiektowej reprezentacji cookies wysyłanych przez przeglądarkę użytkownika ($_COOKIE). -
Witam,
Zastosuj w kontrolerach ten sam namespace:
class TestController extends Zend_Controller_Action
{
protected $_testSession;
public function init()
{
$this->_testSession = new Zend_Session_Namespace('testNamespace');
}
}
class Test2Controller extends Zend_Controller_Action
{
protected $_test2Session;
public function init()
{
$this->_test2Session = new Zend_Session_Namespace('testNamespace');
}
}
lub utwórz obiekt reprezentujący namespace użyty w innym kontrolerze:
class TestController extends Zend_Controller_Action
{
protected $_testSession;
public function init()
{
$this->_testSession = new Zend_Session_Namespace('testNamespace');
}
}
class Test2Controller extends Zend_Controller_Action
{
protected $_testSession;
protected $_test2Session;
public function init()
{
$this->_testSession = new Zend_Session_Namespace('testNamespace');
$this->_test2Session = new Zend_Session_Namespace('test2Namespace');
}
}
---
Zend_Session::destroy(true); niszczy dane w sesji ($_SESSION) ale nie usuwa ich obiektowych reprezentacji czyli obiektów Zend_Session_Namespace. Dodanie true jako drugiego argumentu:
Zend_Session::destroy(true, true);
zabezpiecza resztę kodu przed powołaniem kolejnych obiektów Zend_Session_Namespace.
Jeśli chcesz mieć pewność, że dalszy kod nie odczyta danych sesyjnych zgromadzonych w ich obiektowych reprezentacjach możesz wymusić usunięcie wszystkich obiektów Zend_Session_Namespace, co możesz wykonać tuż przed wywołaniem destroy();
foreach (Zend_Session::getIterator() as $namespace) {
Zend_Session::namespaceUnset($namespace);
}
Zend_Session::destroy(true, true);
Musisz jednak pamiętać, że w PHP5 istnieją wskaźniki a namespaceUnset() nie przeprowadza operacji głębokiego usuwania zmiennych, co za tym idzie jeśli przechowasz w sesji obiekt do którego posiadasz wskaźnik to namespaceUnset usunie tablicę w sesji ale obiekt znajdujący się w niej nadal będzie dostępny poprzez istniejącą referencję.
--
PS: Istnieje tylko jedna sesja ;) Obiekty Zend_Session_Namespace to tylko obiektowe reprezentacje danych należących do tej samej sesji.Rafał Gałka edytował(a) ten post dnia 29.06.08 o godzinie 18:21