anas
27.08.2006, 22:03:12
Witam.
Od jakiegoś czasu jako firma realizujemy w miarę duże projekty bazując częściowo na własnych rozwiązaniach (jak to już w świecie php bywa - każdy pisze własny framework). Interesuje mnie wasza opinia czy warto dalej brnąć w tworzenie własnych fundamentów, czy np. nie lepiej pozostawić to innym (Zend Framework, Symfony, itd). Jak wiemy w php zanim się "przetnie deskę", należy sobie stworzyć piłę, samą deskę, a najlepiej to okulary ochronne i wiele innych narzędzi. (szkoda że nie wygląda to tak jak w .net). I teraz najważniejsze to jakie wy narzędzia byście zastosowali przy tworzeniu większych serwisów internetowych (dla przykładu serwis - 50k userów na dzień dobry przeniesionych ze starej wersji - docelowo liczba może sięgnąć kilkuset tysięcy, a może i więcej).
Chodzi mi o solidną platformę - czy ktoś z was pracował na jakimś dobrym ogólnodostępnym frameworku, nad podobnej wielkości projektem i może zdradzić mi jak się zachowywał? A może inne narzędzia? Czego wy używacie przy naprawdę dużych projektach?
Ps. Zależy mi również na szybkości pracy - przy np. 4 programistach nad takim projektem koszta mają dla mnie duże znaczenie.
Pozdrawiam dzięki za sugestie.
anas
nazihipi
27.08.2006, 22:55:35
Jeżeli chodzi o naprawdę duże projekty to ja wogóle stawiam na inny język niż php mianowicie Ruby. Korzystam przy tym (co będzie odpowiedzią na Twoje pytanie) z framewroka Ruby on Rails (dobry framework to na prawdę niezastąpiona sprawa. Radzę Ci po prostu wrzucić na warsztat to co wymieniłeś i samemu określić co spełnia Twoje oczekiwania)
splatch
28.08.2006, 07:10:29
Jeśli idzie o szybkość działania. Ruby w połączeniu z Railsami jest bardzo wolne. Z grupy RoR, Symfony, Django najszybsze jest Django, najwolniejsze Symfony..
Co do Cake php -
http://www.litfuel.net/plush/?postid=138.
nazihipi
28.08.2006, 12:27:26
Cytat(splatch @ 28.08.2006, 08:10 )

Jeśli idzie o szybkość działania. Ruby w połączeniu z Railsami jest bardzo wolne.
tak... ? a z czym to porównujesz? może jakieś testy?
tracąc nawet trochę na szybkości działania zyskujesz na niesamowitej szybkości tworzenia.
ps. pisząc o szybkości, nie mieszałbym frameworków dla różnych języków..
anas
28.08.2006, 14:32:42
Hej.
Ogólnie rzecz biorąc trudno by mi było teraz przekonać wszystkich programistów do tworzenia w Ruby - chodziło mi głównie o frameworki dla php. Co do Symfony - czy ktoś z was postawił na nim duży serwis, z dużą ilośćią odsłon - chodzi mi o porównanie jak się poszczególne fw zachowują w stosunku do obciążenia, jak działa w nich cachowanie, jak szybko się w nich pisze, testuje, etc. Między tym co jest napisane w dokumentacji, a rzeczywistością są zawsze duże rozbierzności - dlatego ciekawią mnie wasze doświadczenia.
Czy np. warto postawić na szybkie tworzenie (stosowanie narzędzi typu ORM) i późniejszcze cachowanie wyników, czy też lepiej skupić się na dobrym oprogramowaniu warstwy DAO i zapomnieć o takim rozwiązaniu?
Ja mam swoją opinię na ten temat, ale nie chciałbym wprowadzać jakichkolwiek sugestii, tylko usłyszeć waszą w miarę obiektywną ocenę.
Pozdrawia i dzięki za pomoc.
anas
bela
28.08.2006, 14:46:13
Wg mnie aktualnie jeśli ktoś ma już coś swojego i to się dobrze sprawuje to nie widze powodów by się przesiadać na inne rozwiązania. Zwłaszcza, że nie powalają.. a wręcz przeciwnie ma się zawsze jakieś swoje zastrzeżenia do nich.
Wiele osób zachwala Cake php, ale jak już pisałem nie raz dla mnie ten framework od strony kodu jest nie do zaakceptowania. Symfony.. przeglądałem jego możliwości, wszystko ładnie wygląda jak się robi schematyczne rzeczy.. ale u mnie w pracy zawsze są jakieś odchyły i żadko kiedy wygląda to tak prosto jak na przedstawionych tam przykładach.
Stawiam na swoje rozwiązanie z uwagi na to, że wiem jak chce tworzyć aplikacje, jeśli zauważe jakiś problem/złe podejście to sam je rozwiązuje, nie musze czekać na poprawki. Ważne tylko by podglądać `konkurencje` i unowocześniać swój framework od czasu do czasu.
anas: framework to nie wszystko. Mozesz rowniesz podkrecic baze danych/serwer. Zamiast np Apache moze zainteresuj sie lighttpd, ktory ponoc jest szybszy od apache (nie wiem nie testowalem, widzialem tylko benchmarki na stronie lighttpd), ktory w sobie uwzglednia mozlwiosc loadbalancing. Dodatkowo rozdzielenie uslug baza na innej maszynie, duzo ramu, + programowanie na poziomie bazy danych - postgresql, chyba ze mowimy o platnych rozwiazaniach, to oracle/mssql.
Mysle ze warto zwrocic uwage na optymalizacje kodu. Np generowanie statysytk moze byc czasochlonne... dlatego takie zadanie moze byc wykonywane raz dziennie, o 3-4 w nocy gdy obciazenie serwera jest praiwe zerowe... Cos za cos, raz na dzien aktualizowane statystyki, ale ... nie obciaza to maszyny. Takich praktyk jest wiele.
Ale dobry projetk systemu + dobry projekt bazy + dobre wykonanie + konfiguracja maszyny = sukces.
Cachowanie calych fragmentow strony moze okazac sie owocne, po co za kazdym razem wyciagac to samo menu z bazy, jak mozna raz zchacowac i miec w postaci pliku html gdzies zapisane?
mike
28.08.2006, 23:50:52
Cytat(J4r0d @ 28.08.2006, 23:46 )

Przecież mysql jest dostępny w wersji darmowej (bez wsparcia)...
Znasz różnice pomiędzy mySQL a wspomnianymi oracle lub mssql?
Róznice sa tak duże, że nie ma co porównywać

a do dużego projektu MySQL się nie nadaje.
Może w przyszłości MySQL5.0 ale teraz jeszcze nie
SongoQ
29.08.2006, 01:38:28
@mike_mech podejrzewam ze wersja MySQL 7.0 (hehe)
@J4r0d zwracaj uwage na nazwy bo mylisz pojecia
Jesli chcesz wydajność polepszyc zainteresuj sie DB z plsqlem, bedziesz mogl wiekszosc funkcjonalnosci kodu przeniesc na baze danych. Podejscie ze jeden uzytkownik systemu = jeden uzytkownik bazy danych jest najlepszym rozwiazaniem. Uprawnienie dostep do rekordow zostawiasz bazie danych. Wyciagajac dane automatycznie sa filtrowane dla konkretnego usera. Przy wiekszych, zlozonych bazodanowych aplikachacg jak uczy literatura powinno się wiekszosc logiki zostawic bazie danych.
Mysle ze duzy projekt - chociazby gdzie jest strasznie duzo danych w bazie, liczony w milionach rekordow. Po prostu niektore usprawnienia baz typu oracle/pg/mssql usprawnia analize takich danych, co przyczyni sie do wzrostu szybkosci dzialania aplikacji.
Zwroccie uwage, ze zle oprogramowane zagadnienie pracujace na kilku tysiacach rekordow moze byc wolniejsze niz, takie samo zagadnienie lepiej oprogramowane liczone w milionach rekordow.
Wiekszosc pracy ma jednak programista, nie FrameWork, czy Baza danych i to od niego wychodzi ta wydajnosc.
sobstel
29.08.2006, 09:20:09
Cytat(SongoQ @ 29.08.2006, 02:38 )

Podejscie ze jeden uzytkownik systemu = jeden uzytkownik bazy danych jest najlepszym rozwiazaniem. Uprawnienie dostep do rekordow zostawiasz bazie danych.
no nie wiem, ciezko mi sobie wyobrazic zakładanie dziesiątek tysięcy kont w bazie dla jednej tylko aplikacji i zarządzenie uprawnieniami dla takiej kupy. bardziej juz chyba, rola/grupa w systmie = jeden uzytkownik bazy danych.
anas
29.08.2006, 14:53:58
Hej.
Wracając do topicu: głównie chodzi o pogodzenie czasu (wydajności pracy) w stosunku do jakości tworzonych rozwiązań.
@sf: jasne że własne rozwiązania są bardziej elastyczne - co nie znaczy że jak poznasz dogłębnie jakiś framework to nie możesz nim manipulować.
@SongoQ: zgadzam sie w 100% - lecz rozwiazania ktore proponujesz sa czasochlonne, aczkolwiek bardzo wydajne - stosujac w aplikacji warstwe DAO, zawsze mozna w miare potrzeb przepisywac pewne elementy systemu.
@mike_mech, @SongoQ: odnośnie MySQL 5.0 - my aktualnie korzystamy z mysql 5.1.x - wersji beta - wprowadzono wiele zmian, wydajnosc jest akceptowalna, a funkcjonalnosc dla rozwiazan www jak najbardziej wystarczajaca. Oczywiscie nie zamierzam tutaj porownywac rozwiazan MS, Oracle, czy nawet PostgreSQL - bo wiadomo co zapewniaja tamte systemy - ale uwazam ze MySQL zmierza w dobrym kierunku i przyjemnie stosuje sie go nawet w duzych projektach dla www.
Idac dalej - pogodzenie wydajnosci / jakosci = akceptacja klienta. Teraz stosujac rozwiazania ORM, gotowy framework, ktory zapewnia mi wiekszosc standardowej funkcjonalnosci, oprogramowujac sama logike zyskuje na czasie - pytanie jak to wazyc - czy lepiej np. zrezygnowac z narzedzi ORM - oprogramowywac warstwe danych stosujac wyspecjalizowane obiekty DAO i poswiecajac na to wiecej czasu.
Jak to wynika z waszego doswiadczenia - gdzie jest ten zloty srodek - bo my zastosowalismy rozwiazania ORM, przy odpowiednim cachowaniu, sprzecie, acceleratorze i all jest ok - w przyszlosci w przypadku zwiekszajacego sie obciazenia, czy nie uwazacie ze taniej jest inwestowac w sprzet niz godziny programistow?
Pozdrawiam
anas
nasty
29.08.2006, 18:58:01
Cytat
czy nie uwazacie ze taniej jest inwestowac w sprzet niz godziny programistow?
Ja uwazam, ze nie koniecznie, bo piszac aplikacje, to optymalizacja, podobnie jak bezpieczenstwo, nie jest doczepiana na koniec,
tylko aplikacja jest pisana w optymalny i bezpieczny sposob od pierwszej linji, tak wiec majac dobrzych programistow powinnines dostac
najoptymlaniejszy (prawie) kod. Ja osobiscie radze kompilowania php (Zend Encoder, eAccelerator, etc..) do postaci opcodow zenda, co oszczedza,
bardzo duzo czasu. a co do sprzetu, to dobrze jest miec mocny, server, ale prawie 70-90 % wydajnosci skryptu (wykluczajac polaczenia i zadania DB)
jest zalezna od jakosci napisanego kodu.
Pozdrawiam
anas
30.08.2006, 11:42:11
@Nasty - tak o to się nie martwie - chodzi mi o gotowe narzędzia jak orm - ich wydajność nie jest znakomita, a tym samym jakoś wytwarzanego oprogramowania. Co do optymalizacji w tej chiwli używam APC i rzeczywiście zwiększa to znacznie wydajność. Lokalnie używamy do developerki ZendPlatform i dzięki php Inteligence i profilowaniu udaje się wyszukać wąskie gardła, ale przy np. przetwarzaniu w jednej chwili 50 000 rekordów przez wiele konkurncyjnych połączeń może powodować nie lada problemy - jak sobie z tym radziliście?
Pozdrawiam
anas
@J4r0d: przeczytaj jeszcze raz post anas,
Cytat
Lokalnie używamy do developerki ZendPlatform i dzięki php Inteligence i profilowaniu udaje się wyszukać wąskie gardła
@anas: a powiedz mi czy za kazdym polaczeniem musisz te 50k rekordow przetwazac? czy nie mozesz przypadkiem robic tego okresowo, raz na dzien/godzine/minute. przy wielu polaczeniach w ciagu minuty, generujac takie dane raz na minute i tak zyskujesz czas.
Jesli chodzi o wydajnosc mysql 5.1, na ktorym to robisz, to nie wiem, nei testowalem. Ja staram sie odejsc od mysql na rzecz postgresql.
pawel_k
31.08.2006, 11:14:35
zgadzając się z większością zdań dodam od siebie, że dla naprawdę dużych projektów, gdzie online siedzi powiedzmy 5-10 tysiecy ludzików, żaden czołowy framework nie będzie się niestety nadawał. frameworki mają jak najbardziej uprzyjemniac i przyspieszac pracę, przykładowo pisząc dośc prosty cms w symfony sam napisałem ok 800 linni kodu, gdzie pisząc normalnie musiałbym napisać (korzystając z gotowych bibliotek do obsługi bazy, tempalteów itp.) przynajmniej ok 4-5 tysięcy. cena za to - czas generowania na poziomie 0,2 sekundy, co nie jest wartością porywającą (oczywiście dużo też zależy od konfiguracji sprzętowej)... spotkałem się nawet z poglądami że czasem nie warto stosować się do zasad programowania obiektowego - kolejny zysk na wydajności... myślę że przy ogromnych projektach złotym środkiem jest prosty kontroler, szybki system templatów i biblioteka do obsługi bazy (jednak raczej nie rozwiązanie typu orm) + jak największe uproszczenia wszystkiego. przyjemnie i w miarę szybko będzie się programowało, a kod będzie wydajny...
J4rod - co do testowania i wąskich gardeł ja profilu skrypty za pomocą Zend Platform - dzięki temu rozwiązaniu zyskaliśmy na wydajności nawet do 1000%. Czas wykonywaniu skryptu przy przeszukiwaniu takiej ilośći danych z zastosowaniem narzędzi ORM to nawet do 3-4s - co nie jest akceptowalne - stwierdziliśmy że warto będzie budować indeks.
Cały system to bardzo duża aukcja internetowa - w tej chwili dzięki cachowaniu wydajność jest akceptowalna, ale nie jest górnych lotów.
Rzeczywiście jak napisał pawel_k zdecydowanie szybciej pracują duże serwisy napisane proceduralnie - tworzyłem osobiście www.gorzow.com jak uczyłem się php pod koniec lat 90-tych - obecnie muszę stwierdzić że ta aplikacja pracuje wydajniej niż obecne napisane obiektowo przy użyciu frameworka.
Z moich odczuć wynika że przy bardzo dużych projektach znaczący wpływ na wydajność ma tak naprawdę cachowanie - jeśli znacie jakiś mechanizm cache którym łątwo zarządzać i który daje duże możliwości to będę wdzięczny za podpowiedź - obecnie stosujemy po stronie serwera eAccelerator'a, a po stronie aplikacji własne rozwiązania.
pozdrawiam
anas
itsme
2.09.2006, 12:24:03
a co do znaczy duzy projekt ?
duzo kodu, duzo danych ?
duzo userow online ?
czy moze ilosc $$ na umowie ...
w php naprawde mozna wiele napisac ... nie koniecznie stron www.
zas wybor narzedzi wspomagajacych pisanie projektu zalezy rowniez od wymagan zlecajacego ...
przeciez nie bedziemy brali kobyly na ksiege gosci ktora bedzie miala 100 mln rekordow i obciazenie 200 usero online
ciezko tu poradzic cos jednoznacznie ....
@itsmeMowiac o duzych projektach, mialem na mysli projekty w ktorych jest w miare zlozona funkcjonalnosc - np. serwis aukcyjny, duzy sklep internetowy - i takie ktore maja przy okazji duzy lub bardzo duzy ruch.
@J4rod - nikt tego nie powiedzial - tak poprostu jest - jednak programowanie obiektowe pozwala latwiej organizowac prace, sam projekt, kod, kod staje bardziej elastyczny i co wazne mozna pewne jego fragmenty uzywac w innych projektach bez potrzeby refaktoringu.
Pozdrawiam
anas
Co do frameworkow i innego softu pisanego przez innych. Korzystanie z nich w duzych projektach to tak naprawde porazka. Na frameworki jest moda - miec fw ktory wszystko potrafi. A tak naprawde cos co jest do wszystkiego jest do niczego. Kazdy projekt ktory ma pracowac na duzym obciazeniu powinien miec swoj wlasny szkielet inwidualnie dobrany do projektu - po co komu router ktory supportuje rozne schematy linkow skoro w danym projekcie bedzie tylko jeden

I tak pokolei. Tlumaczenie sie tym ze ktos chce miec projekt szybciej przy skalowaniu go na kilkaset tysiecy userow szybciej ( i chce zarobic wiecej kasy ) to zadne tlumaczenie tak naprawde.
Cysiaczek
3.09.2006, 04:14:07
Faktycznie OOP jest lepsze do dużych projektów, ale coś za coś - tracimy na wydajności. Jest to widoczne zwłaszcza w php, gdzie inicjalizacja aplikacji odbywa sie nimal za kazdym kliknięciem (AJAX trochę pomaga).
Już samo tworzenie obiektów to duże obciążenie dla progrmu, a dobry kod obiektowy w duzych projektach zazwyczaj charakteryzuje się sporą ilością obiektów.
Z tego, co zdążyłem zauważyć, to gotowe frameworki nadają się zazwyczaj do małych i średnich projektów - przy większych okazuje się, że są po prostu za wolne, a do tego wymagają przebudowania.
Pozostaje pokładać nadzieję w jeszcze szybszym rozwoju infrastruktury sieci oraz sprzętu.
Pozdrawiam,
060156
3.09.2006, 05:23:44
Czesc ...
Odpowiadacja nad temat duzych projektow i roznych frameworkow,
to sa one takie uzywajac przenosni ze aby "sie napic mlepka to trzeba krowe kupic".
Przerabialem, wysztkie po kolei w nadzieji ze cos jest w miare przyzwoite ale
sie okazalo, ze wiekszosc to przyslowiowe wolne kobyly. Dlatego opracowalem
swoj, ktory nazywa sie IWA albo SOWA (Services Oriented Web Architecture),
zajelo to kilka lat ale wyniki sa rewelacyjne ... Pislame aplikacje przez 6 tygodni
a inn profesjonalna firmasoftwerowa spedzila nad nia (5 osob) uzywajac wlasnie
tych frameworkow 1.5 roku i ani sie nie zblizyla funkcjonalnoscia do mojej ..
pozdrawiam 060156
itsme
3.09.2006, 10:15:30
sluchajcie nie rozumiem zdan ze przez OOP tracimy na wydajnosci i takie tam.
Nie ma innej mozliwosci niz kodowanie OOP. Inne podejscie przy duzych, srednich i malych projektach jest bledne.
Zatem nie rozmawiajmy o tym ze OOp jest wolniejsze bo roznice sa tak niewielkie ze szkoda to poruszac.
Oczywiscie wszystko zalezy od jakosci kodu.
ja wraz ze wspolnikami (tak samo jak 060156 ) rowzniez napisalismy aplikacje ktora ma stale kompenety i jest niezwykle uniwersalna. Jest to program klasy CRM, DMS. Interfej zawsze ten sam wiec nie interesuje nas wogole co sobie zyczy klient. To jest program nie strona www.
Korzysci ? system do zarzadzania zadanami, zasobami (pojazdy, telefony komputery), kontakty (adres, osoby kontaktowe) oraz powiazania pomiedzy tymi obiektami zajmuje nam 2-3 dni. I mamy wszystko od uprawnien, baze po formularze.
kazdy z nas chce kodowac tak aby niska iloscia pracy osiagnac maksymalne wyniki. I wlasnie to chcielismy osignac.
oczywiscie co jezeli klient bedzie chcial cos jeszcze ? wszystko w OOP i MVC zatem zmiany nie sa ciezkie do wdrozenia.
Co do duzych projektow. Uwazam ze mozna korzystac z malych wspomagaczy ktore wspomoga a nie zastapiam nam nasza prace
@060156: moze pochawlisz sie chociaz czesciowo jak wyglada architektura Twojego systemu?
@itsme: Nie mialem na mysli zastapenia czyms wlasnej pracy - przeciez .net to tez gotowy framework prawda? Chodzi mi o podobne podejscie, tak abym nie skupial sie na rozwoju narzedzi, a rozwiazywaniu problemu ktory jest przedmiotem prowadzonego projektu.
@060156: Jeśli Twój system zastępuje pracę 5 osób przez 1.5 roku w stosunku do 6 tygodni jednej to ja jestem skłonny Ci za takie rozwiązanie zapłacić dużo pieniędzy

- w takim razie ile by Ci zajęło postawienie systemu ze złożonością powiedzmy allegro na Twoim systemie (orientacyjnie)? Może zwolnie 5 osób i zatrudnie Ciebie dając Ci 5x ich wypłata x okres potrzebny na zrobienie tego

(choiaż trudno mi w to uwierzyć)
Pozdrawiam
anas
itsme
3.09.2006, 11:20:49
caly czas mowie ze ciezko to okreslic
system aukcyjny ma zupelnie inne narzedzia niz CMS, niz forum i inne - nie ma uniwersalnych rozwizan do roznych typow projektow - niestety.
ZAtem nie ma tez jednoznacznej odpowiedzi na Twoje pytanie
Dravo
3.09.2006, 11:24:43
Ja dodam, że wiekszość wspaniałego oprogramowania, które widzimy na co dzień jest pisana niechlujnie (nie jestem święty) a powodem jest pośpiech.
Co do frameworków, to sprawa jest oczywista: coś co jest do wszystkiego jest do niczego.
(Ale) Może spojrzeć na to jak na silną podstawę do tworzenia swojego projektu? To tak jak z językami programowania, dlaczego nadal nie pracujemy w Assemblerze, tylko przenosimy się na coraz wyższą abstrakcją?
Ja osobiście nie pracowałem nad dużymi projektami, więc mogę jedynie gdybać, ale warto tutaj podejrzeć rozwiązania chociażby z .NET.
Ciekawym pomysłem jest również rozwinięcie swoich komponentów, które poźniej łatwo modyfikować.
Co do sprzętu: sprawa jest oczywista pośpiech powoduje bałagan, a stan idealny - złoty środek - to po prostu bajka. Programiści wychodzą z butów, żeby zdąrzyć na czas, a straty rekompensują sprzętem i właśnie to jest postęp... Mamy nowsze procesory, większe dyski...
Nie zapominajmy, że przyzwyczajenie i nałogi to nasza prawdziwa natura (wedle Arta) i przejście na nowe oprogramowanie też może mieć mały impakt powodujący opóźnienia.
A praca na swoich śmieciach i sprawdzonych rozwiazaniach taki problem niweluje pozwalając maksymilizować zyski z obecnych sposobów bycia.
Pozdrawiam
ww
Cysiaczek
3.09.2006, 11:27:04
@itsme - wydaje mi się, że anasowi chodzi o narzędzia takie jak cashe, validatory, auotoloadery itp. Te wystepują (niekoniecznie razem) w prawie wszystkich większych systemach i stawia się na prostę ich konfiguracji niż pisanie od nowa. Dzięki temu są użyteczne. Tak mi się przynajmniej wydaje.
Pozdrawiam.
060156
3.09.2006, 20:19:19
Odnosnie,
Framoworkow to sie zgadzam, ze cos co jest do wszystkiego to jest do
niczego.
Dlatego zastosowalem inne podejscie.
Nie budowanie monstrum tylko podejscie polegajacych na budowaniu klas
z ktorych mozna skladc system. Oto ich przyklady:
PRZEGLADARKI KLASY:
--------------------------
Service
content marshaling
request, response
Database
Presentation
Screen
Dialog
Canvas, Dynamic, Static
Element
Style
Move
Resize
Default Dialogs
Info
Message
Confirmation
Popup Menu
Upload File
Calendar
Cookie
Clipboard
php KLASY
------------
Service
content marshaling
request, response, forwarding
Database
mysql
browser mysql
odbc
PDF Document
Macromedia Monitoring
Html
pages, emails
Session
License
expiration, evaluate, customer name
Validate
date, zip, phone, credit cards, email
Email
preferred, text, html, attachment
Log
error, warning, info, debug
Pozysze klasy sluza do budowania services po stronie php z ktorymi
sie komunikuje Browser przesylajac lub dostajac business content.
Warstwa komunikacyjna wywolywania serwisow jest obecnie
zaimplementowana w HttpRequest, Frame i IFrame.
Cytat(anas @ 3.09.2006, 10:02:07 )

@060156: moze pochawlisz sie chociaz czesciowo jak wyglada architektura Twojego systemu?
@itsme: Nie mialem na mysli zastapenia czyms wlasnej pracy - przeciez .net to tez gotowy framework prawda? Chodzi mi o podobne podejscie, tak abym nie skupial sie na rozwoju narzedzi, a rozwiazywaniu problemu ktory jest przedmiotem prowadzonego projektu.
@060156: Jeśli Twój system zastępuje pracę 5 osób przez 1.5 roku w stosunku do 6 tygodni jednej to ja jestem skłonny Ci za takie rozwiązanie zapłacić dużo pieniędzy

- w takim razie ile by Ci zajęło postawienie systemu ze złożonością powiedzmy allegro na Twoim systemie (orientacyjnie)? Może zwolnie 5 osób i zatrudnie Ciebie dając Ci 5x ich wypłata x okres potrzebny na zrobienie tego

(choiaż trudno mi w to uwierzyć)
Pozdrawiam
anas
Tutaj zalaczam opis Sowa frameworku:
http://216.122.144.196/Sowa/SowaPolishIntroduction.doc
Cytat
Zatem nie rozmawiajmy o tym ze OOp jest wolniejsze bo roznice sa tak niewielkie ze szkoda to poruszac.
Oczywiscie wszystko zalezy od jakosci kodu.
(...) To jest program nie strona www.
Może i w wypadku programu uruchomianego za przez każdego na swoim komputerze nie ma znaczenia, ale odpal ten program 1000 razy na tym samym komputerze - tak jak działa serwer.
-------------------
060156, Twoje podejście wg mnie jest najlepsze - jednoczesnie szybkie jak i wygodne.
itsme
3.09.2006, 21:49:45
MMP aplikacje pisane przez moja firme dzialja na serwerach jest tam okol 2GB ramu i mocny procek
online pracuje okolo 200 userow na jednym programie
zas na drugim okolo 190 USerów
wiec obciazenie jest i naprawde napisanie takiej aplikacji strukturalnie i badanie czasow wydaje sie hmmm niekonieczne prawidlowe ...
dlatego nie mowmy tutaj o OOP i strukturce inne poziomy programownia i inne zastosowanie.
@060156: Twoje rozwiazanie pochodzi mi pod EZ Components + dobudowanie prostej obsługi żądań i odpowiedzi. Domyślam się że to jest bardzo szybkie rozwiązanie - każde żądanie używa bibliotek takich jak potrzebuje, wykonuje swoje zadania zwraca dane i finito.
Mam jednak wątpliwości co do użeteczności - tak naprawdę pewne czynności mogą być uciążliwe: forwardowanie, przekierowania, obsługa błędów, autentykacja, obsługa formularzy, wymiana widoków(HTML, PDF, RTF...), obsługa filtrów. Tak naprawdę jeśli chcesz wprowadzić globalne zmiany musisz modyfikować dużo kodu.
Jak to rozwiązałeś? Lub może ktoś inny rozwiązał?
Pozdrawiam
anas
Znowu gadanie typu frameworki sa zle tez jest bez sensu.
Framework nie koniecznie oznacza cos wielkiego i skomplikowanego. Przeciez oczywiste jest, ze kazda aplikacja wymaga obslugi pewnych rzeczy, takich jak sesja, autoryzacja, baza danych. A co z samym uruchamianiem odpowiednich akcji?
Mozna przeciez napisac framework lekki, ktory udostepnia nam minimalnych srodkow koniecznych do sprawnego budowania aplikacji. W ten sposob oszczedzamy na czasie pisania oraz (co jest moim zdaniem duzo bajdziej znaczace) nasza aplikacja staje sie jednolita pod wzgledem budowy i trudniej o popelnienie jakiegos bledu.
Adrian.
060156
5.09.2006, 20:24:48
Cytat(anas @ 5.09.2006, 16:52:34 )

@060156: Twoje rozwiazanie pochodzi mi pod EZ Components + dobudowanie prostej obsługi żądań i odpowiedzi. Domyślam się że to jest bardzo szybkie rozwiązanie - każde żądanie używa bibliotek takich jak potrzebuje, wykonuje swoje zadania zwraca dane i finito.
Mam jednak wątpliwości co do użeteczności - tak naprawdę pewne czynności mogą być uciążliwe: forwardowanie, przekierowania, obsługa błędów, autentykacja, obsługa formularzy, wymiana widoków(HTML, PDF, RTF...), obsługa filtrów. Tak naprawdę jeśli chcesz wprowadzić globalne zmiany musisz modyfikować dużo kodu.
Jak to rozwiązałeś? Lub może ktoś inny rozwiązał?
Pozdrawiam
anas
Nie jest to trudne, wlasnie wszystkie te funkcje co opisales za zaimplementowane i modyfikacja
bazowych klas nie zdaza sie czesto, ostatnio modyfikacje wykonalem 4 miesiace temu
i sa one postepujace to znaczy wszystkie poprzednie wersje sa zgodne z
postepujacymi modyfikacjami ...
Klasy zostaly tak zaprojektowane, ze miedzy nimi istnieje tylko relacja warstwowa,
czyli:
- klasa service (request, response, marshaling, forwarding, obsluga bledow applikacji i systemowych)
- ogolne klasy funkcjonalne (pdf, flash, html, email, validate, session, database, dialogs, etc ...)
- klasy applikacyjne (security, kalendarz, workflow engine, page builder, etc ..)
- aplikacje uzywaja powyzszych klas ..
Mozesz poczytac o tym na:
http://216.122.144.196/Sowa/SowaPolishIntroduction.docpozdrawiam 060156
Cytat(Prph @ 5.09.2006, 17:25:39 )

Znowu gadanie typu frameworki sa zle tez jest bez sensu.
Framework nie koniecznie oznacza cos wielkiego i skomplikowanego. Przeciez oczywiste jest, ze kazda aplikacja wymaga obslugi pewnych rzeczy, takich jak sesja, autoryzacja, baza danych. A co z samym uruchamianiem odpowiednich akcji?
Mozna przeciez napisac framework lekki, ktory udostepnia nam minimalnych srodkow koniecznych do sprawnego budowania aplikacji. W ten sposob oszczedzamy na czasie pisania oraz (co jest moim zdaniem duzo bajdziej znaczace) nasza aplikacja staje sie jednolita pod wzgledem budowy i trudniej o popelnienie jakiegos bledu.
Adrian.
Mam pytanie jak rozumiesz framework ?
Dla mnie to specifikacja i zestaw
komponentow(np. Smarty) do budowania aplikacji. Czyli masz dostep
tylko do warstyw aplikacyjnej, jesli chcesz cos zrobic co nie miesci sie w warstwie aplikacyjnej
to jest problem. Moje doswiadczenia wykazaly, ze wlasnie specyfikacja frameworku czasami
jest zaleta bo masz przepis jak budowac aplikacje a czasami duzym ograniczeniem jesli
chcesz zrobic cos co nie miesci sie w niej. Dlatego ja zrezygnowalem z frameworkow
natomisat postawilem na uzywanie roznych klas w miare malych i dobrze, ktore umozliwiaja
pisanie szybko i roznych aplikacji ..
pozdrawiam 060156
---
korekta: dr_bonzo
Witam,
Framework kojarzy sie z raczej z kombajnem, ktory daje w prosty sposob uruchomienie dosyc skomplikowanego procesu. Sam uruchimi sesje, wyswietli prezentacje, ble, ble...
Ale jak kolega dobrze zauwazyl - bywaja one czasem wielkiem utrudnieniem. Juz sporo czasu wczesniej myslalem, jak stworzyc system, ktory pozwalalby na wydaje pisanie nowych aplikacji, ktore moga sie bardzo roznic.
Czy ktos ma jakies swoje wlasne szkielety dobrze sprawdzajace sie w takich sytuacjach? Moglby je udostepnic?
Pozdrawiam, Adrian.
patrycjusz
3.10.2006, 19:05:53
że tak spytam z czystej ciekawości jakim utrudnieniem jest wykorzystanie dobrze napisanego frameworka? Bo nie bardzo rozumiem, ale konkretnie przykłady itp.
Nie mam duzego doswiadczenia w pracy z frameworkami. Ale zauwazylem jedno - fraweworki bardzo dobrze sprawdzaja sie okreslonych sytuacjach, takich jak budowanie stron portalowych, blogow itp.
Ale co w przypadku budowanie zupelnie innych aplikacji? Zaraz po napisaniu frameworka stworzylem na nim newsletter - swietnie sie na nim pracowalo (tj. na frameworku). Ale kiedy wzialem pioro do reki, zeby zaprojektowac szkic innej aplikacji, to przyznam, ze framework okazal sie wielkiem utrudnieniem.
Sprawa wygladalaby inaczej, gdyby framework byl zupelnie bazowy - bylby odpowiedzialny jedynie za podstawowe rzeczy, takie jak uruchamianie akcji, forwardowanie. Ponadto udostepnialby szereg klas, dzieki ktorym moznaby szybciej tworzyc aplikacje.
Wtedy zabierajac sie za nowy projekt, moglbym go dobrze zaprojektowac i nie myslec, czy moge cos zrobic, bo framework mi na to pozwoli lub nie.
A do tego wystarczy spojrzec na rozne projekty... wieksze projekty. Zaden z nich nie przypomina frameworkow, takich o jakich ostatnio na forum wiele sie mowi. To raczej bazowe elementy z bogatym zapleczem bibliotek. I co wazne - to jakos bardziej oddaje idee programowania obiektowego, przez co moze byc bardziej intuicyjne - nawet dla autorów.
Adrian.
Cytat(Prph @ 3.10.2006, 22:17:07 )

Sprawa wygladalaby inaczej, gdyby framework byl zupelnie bazowy - bylby odpowiedzialny jedynie za podstawowe rzeczy, takie jak uruchamianie akcji, forwardowanie. Ponadto udostepnialby szereg klas, dzieki ktorym moznaby szybciej tworzyc aplikacje.
no popatrz, a ja myślałem, że to właśnie jest Framework? Czyli coś co umożliwia podstawowe rzeczy - stworzenie akcji, nałożenie filtrów, oraz zawiera klasy pomocnicze hm - ORM, uprawnienia użytkowników, klasę do obsługi SOAP, do generowania RSS z podanych danych...
To nie framework? Framework to podstawa na której budujesz reszte. To fundament dobrej budowy.
Cytat
Nie mam duzego doswiadczenia w pracy z frameworkami. Ale zauwazylem jedno - fraweworki bardzo dobrze sprawdzaja sie okreslonych sytuacjach, takich jak budowanie stron portalowych, blogow itp.
Z jakiego frameworka skorzystałeś? Może z gotowego systemu blogów czy systemu portalowego.. - Wordpress??
Ja mam dosyć banalny Framework, ale sprawdza sie. Pisałem na nim portale, sklepy internetowe, system spedycyjny, systemy wewnętrzne (obieg dokumentów) i ... wyobraź sobie, żę zrobiłem to na 1 swoim frameworku... Dziwne nie?
Wyobraz sobie, ze uprawnienia najbardziej ograniczyly mnie w projekcie...
A z jakiego korzystalem? Z wlasnego

W sygnaturze mam linki do Rapide.
Adrian.
W takim razie Twój framework w czym stwarzał Tobie problemy? Wnioskuje z twojej wypowiedzi, żę Rapide umożliwia tworzenie tylko ... no właśnie czego? Bloga? Portalu?
Spróbuj użyć może jakiegoś nie własnego? Może będziesz mógł stworzyć więcej
typów aplikacji
Cytat(Prph @ 4.10.2006, 07:10:34 )

Wyobraz sobie, ze uprawnienia najbardziej ograniczyly mnie w projekcie...
A z jakiego korzystalem? Z wlasnego

W sygnaturze mam linki do Rapide.
Adrian.
Hm, po to m. in. programuje się obiektowo, zeby mozna latwo zamieniac implementacje poszczegolnych interfejsow. Wiec nie wiem jaki tu problem. Jak klasa nie pasujesz to piszesz nowa i juz.
Nie twierdze, ze nie dalo sie tego wymienic na inny system, ale w takim wypadku lepiej jest stworzyc cos bardzo prostego i miec wieksza elastycznosc pracy.
Heja
Pytanie na temat, ale troche z innej strony. Duzych projektow zwykle nie robi sie samodzielnie lecz jakas grupa programistow, grafikow itp... Jakich narzedzi uzywacie wspomagajacych prace grupowa ?
Pozdrawiam i z gory dzieki
Hej.
Jak najbardziej chodziło mi o pracę grupową. Wspomagamy się Subversion, do raportowania błędów używamy flayspray'a, MS Project do zarządzania projektem i oczywiście inne narzędzia przy etapie projektowania. Pytanie dotyczyło technologii która ułatwi sam etap implementacji, a dodatkowo będzie bardzo wydajne ze względu na wielkość projektu i jego docelowo dociążenie.
Pozdrawiam.
anas
patrycjusz
8.10.2006, 19:27:27
continuum+ant lub trac+phpunit
jarrod
14.10.2006, 20:45:10
Witam.
Myślę że php + mysql całkiem dobrze sobie radzi nawet w dużych projektach... Ale nie mam zamiary się wdawać w dyskucje na temat co jest lepsze bo to głupota...
Myślę również że czas spędzony nad tworzeniem kodu jest zależny od umiejętności programistów. Nic nowego ale dodam że im większe umiejętności to ten czas się ... wydłuża. Lepiej zabezpieczmy, kombinujemy etc.
To jak się pracuje w php zależy od tego jaki framework sobie stworzymy.
W mojej firmie na php + mysql działa kilka serisów mających w jednej bazie ponad 430K userów. Przy czym najpopularniejszy serwis w sezonie internetowym (mam na myśli wrzesień - październik) ma 2M odsłon dziennie.
Muszę przyznać że jeszcze nie mieliśmy problemów z przeciążeniem serwera... Dzięki dobrze skonstrowanemu cachowaniu można poważnie odciążyć serwer bez kompromisów.
Myślę że można zaprojektować w php odpowiedni framework niemal do wszystkiego (portal czy chociażby newsletter). My sobie taki stworzyliśmy i każdu pomysł jaki nam teraz przyjdzie do głowy to kwestia dopisania odpowiedniej klasy.
Fakt jednak jest faktem że aby stworzyć DOBRY framework potrzebna jest dobrze zgrana drużyna programistów którzy mają doświadczenie w programowaniu więcej niż jednym języku.
Pozdrawiam
Ociu
15.10.2006, 07:57:10
@jarrod: imho nie php+mysql, a php+$db gdzie !in_array('mysql', $db) == true. MySQl jest dość słabą bazą, nie korzystałem z 5, także wypowiedziałem się na temat 4. Myśle, że wielkie projekty można opisać na 'mocniejszych' bazach , np. pgsql.
Sh4dow
23.10.2006, 14:18:31
Z tego co anas sie wypowiedział że to tak duży projekt to na dzieńdoby powienien pogadac z adminami na temat mozliwosci i architektury sprzetowej całości. Bo jesli to ma działać na jednej maszynce to juz sobie dajcie spokoj. Bo jesli ktos mowi o paru tysiacach ludzi online i złożonej funkcjonalnosci to rozumiem ze to raczej powazna firma ktora ma powazna kase i wlasne zaplecze serverowe.
Z tym ze MySQL sie nie nadaje do duzych projektow, to albo nie widział duzych projektów albo nie umie wykozystac MySQL'a. Podchodze krytycznie do tego i takich tekstów bo jak na razie nic nie było w stanie przekonac mnie ze MySQL nie potrafi obsluzyc duzych baz danych czy tez nie poradzi sobie z duzym ruchem. Jakos przacowałem przy dużym sklepie na MySQL'u gdzie była wielo gigabajtowa baza i chodziło szybko i bez problemów. Aktualnie pracuje przy impementacji klastra mysql ktory takze posiada duże możliwosci których nie potrafił zapewnić postresql, a na oracle nas niestety jeszcze nie stać.
Proponuje przez serverami z apache postawic loadbalancer'a. Podejzewam ze to bedzie apache a nie lighthttpd poniewaz on obsluguje dobrze rzeczy statyczne. Co za tym idzie podzielenie serwerow na serwery generujace strony i na serwer z danymi statycznymi da duży wzrost wydajnosci.
Przy takiej aplikacji raczejbym stawiał na własne wyspecjalizowane rozwiazania aby uzyskać dużą wydajność. Wszystkie rzeczy, które są bardzo elastyczne, do najbardziej wydajnych nie należą. Dobra budowa Bazy danych tez jest wazne.
Wszystkie elementy sa bardzo wazne przy takich aplikacjach wiec nie mozna zostawiac tego tylko w kwestii samej aplikacji.
Bora
11.11.2006, 00:58:01
Mysql wspiera np synchronizacje baz danych co pozwala na rozbicie na pare serwerów.
MStaniszczak
24.11.2006, 12:23:37
a może Bizgres?
http://www.bizgres.org/home.php Pamiętam że ktoś na pl.comp.bazy-danych miał z ta bazą do czynienia i chyba nawet mile wspominał jako alternatywa dla czystego PostgreSQL-a w "dużych zastosowaniach".
Pozdrawiam,
Marcin Staniszczak