Closed maciejhpl closed 8 years ago
Był już parę razy takim pomysł, ale przepisanie od zera to mało realna rzecz. Lepiej jest robić metodą ewolucji i być może dodać równolegle obsługę części rzeczy już poprzez nowe rozwiązanie nie pozbawiając użytkowników dostępu do rzeczy korzystających ze starego rozwiązania. Jeśli tego nie zrobi się w ten sposób to projekt tworzenia nowego LMS upadnie ;-)
czyli nie mówisz nie :), a jak byś miał wybierać to którego framework'a byś wybrał ? myślę, że jak by się znalazło klika osób, które by wyraziło chęć udziału w tym projekcie i ustalibyśmy wspólny zarys oraz kto jaką część miałby napisać to udałoby się to przedsięwzięcie
no ja bym wybrał https://symfony.com/ :) ale zostawmy wątek otwarty przez kilka dni zobaczymy czy jest zainteresowanie innych osób, jak ktoś byłby chętny wziąć udział w tym projekcie to dajcie znać w tym wątku, ocenimy siły :)
Symfony lub Laravel (czyli prawie Symfony, ale z ciekawymi ulepszeniami).
Phalcon... tez można, ale będzie jak teraz, a atmosfera zrobi się dużo gorsza. 9 lut 2016 15:56 "Maciej Hiller" notifications@github.com napisał(a):
no ja bym wybrał https://symfony.com/ :) ale zostawmy wątek otwarty przez kilka dni zobaczymy czy jest zainteresowanie innych osób, jak ktoś byłby chętny wziąć udział w tym projekcie to dajcie znać w tym wątku, ocenimy siły :)
— Reply to this email directly or view it on GitHub https://github.com/lmsgit/lms/issues/593#issuecomment-181895670.
Może powinniśmy raczej pójść w kierunku clean code architecture: https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html wtedy takie "drobiazgi" jak wybór frameworka by nie były aż takie istotne.
Znalazłem jeszcze ciekawy artykuł który może bardziej zobrazuje o co chodzi: http://www.sitepoint.com/clean-code-architecture-and-test-driven-development-in-php/
Z grubsza sprowadza się do tego co już mamy tylko przepisanego obiektowo ;-)
Po co chcecie przepisywać lmsa pod jakiegoś frameworka, nie ważne czy lepszego czy gorszego? przecież to "kolejny" kod, który wasz serwer musi przemielić. skłaniam się tu bardziej co powiedział @maciejlew czyli bardziej czysty kod a lms sam stanie się frameworkiem. Nie wiem co to za moda następuje. Równie dobrze można "przepisać" lmsa do Drupala, też się da.
LMS'a należy przepisać, by stał się bardziej obiektowy, a framework załatwia wiele tematów, którymi nie trzeba się martwić i poszłoby szybciej, ale szkoda czasu na gadanie możemy go lepiej wykorzystać. Dobrze, że już wybraliśmy :), czyli bez framework'a zrobić LMS'a obiektowo, ale kilka dobrych rozwiązań można stamtąd pożyczyć
jak np. Controller, routing, annotation
<?
namespace ....\Controller;
use ...
abstract class Controller
{
(..)
}
i następnie zamiast modułów node(add|edit|info|del)
<?
namespace src\Node\Controller;
use src\Node\Manager\LMSNodeManager;
class NodeController extends Controller
{
/**
* @Route("/add", name="nodeadd")
*/
public function nodeaddAction($request)
{
LMSNode = new LMSNodeManager();
LMSNode->name = $request['name'];
(..)
LMSNode->add();
}
/**
* @Route("/edit", name="nodeedit")
*/
public function nodeeditAction()
{
LMSNode = new LMSNodeManager();
(..)
LMSNode->update();
}
(..)
}
zmieniłbym też drzewo katalogów, na podobnie jak jest w framework'ach
w skrócie np.
lms
├── app
│ ├── config
│ └── Resources
├── bin
├── src
│ ├── Node
│ │ ├── Controler
│ │ ├── Manager
│ └── Helpdesk
├── tests
├── var
│ ├── cache
│ ├── logs
│ └── sessions
├── vendor
│ ├── bin
└── web
├── assets
├── index.php
a może zamiast PHP przepisać do C++ z interfejsem www?
tylko ilu jest programistów PHP, a ilu C++, znam takiego co powiedział Python i robi sam projekt :)
:) osobiście nie jestem wielkim zwolennikiem frameworków, może dla tego, że żadnego dobrze nie poznałem. tego fw co sugeruje @chilek dobrze widzę, że jego trzeba osobno kompilować i nie jest to "zwykłe" php?
@nicraMarcin ale za to jest super szybkie.
@chilek właśnie studiuję dokumentację do tego. wygląda, że jest szybkie i zapowiadające się fajnie. tylko trzeba będzie się tego uczyć od podstaw :/ właśnie na wirtualce próbuję odpalić "pierwszy projekt" na nginx :)
z tym, że LMS nie jest tylko tym co widzimy, to są jeszcze skrypty bin, php i takie też trzebaby było przepisywać pod frameworka.
Z nginx mogę pomóc jakbyś potrzebował.
Jeżeli wybierzecie Phalcona to skończy się to fatalnie, bo jest szybki tylko w przypadku wersji z modułem PHP i kompilowaniem, a dodatkowo na wykresach wszystko fajnie, a w rzeczywistych warunkach zysk jest nierównomiernie mały w stosunku do włożonej pracy programistów, a potem administratorów.
Szkoda, że jednak będzie ten Phalcon, widzę ze znowu "świetna" decyzja. Juz lepiej na czyste C++ przepisać.
Ja bym obstawał przy pomyśle Macieja Lew aby zrobic clean code architecture. Z frameworkami różnie bywa, jedne istnieją długo inne upadają. Do tego bedzie mnóstwo pracy z przepisaniem lms do frameworka a nie wiadomo czy przyniesie to jakiś zysk 10 lut 2016 17:13 "Misiek" notifications@github.com napisał(a):
Z nginx mogę pomóc jakbyś potrzebował.
Jeżeli wybierzecie Phalcona to skończy się to fatalnie, bo jest szybki tylko w przypadku wersji z modułem PHP i kompilowaniem, a dodatkowo na wykresach wszystko fajnie, a w rzeczywistych warunkach zysk jest nierównomiernie mały w stosunku do włożonej pracy programistów, a potem administratorów.
Szkoda, że jednak będzie ten Phalcon, widzę ze znowu "świetna" decyzja. Juz lepiej na czyste C++ przepisać.
— Reply to this email directly or view it on GitHub https://github.com/lmsgit/lms/issues/593#issuecomment-182451770.
@misiek08 dzięki za chęć pomocy w nginx, trochę się w nim orientuję i jakoś udało się Phalcona uruchomić :) Jeśli nie jest on taki dobry, to co byś polecił?
Jak już wspominałem, też nie jestem zwolennikiem frameworków. każdy ma swoje plusy i minusy a i tak wszystkie chodzą w php z tą różnicą że są w pełni obiektowe.
misiek08 to jakiś frustrat - zawsze jakieś podteksty wali...
Po prostu za każdym razem jak widzę gdzie się prowadzi LMSa to się nóż w kieszeni otwiera. Złe lub słabe wybory prowadzące do problemów lub np. jeden z nowych pulli narzekający na last_insert_id, które działa bez problemu, ale trzeba przeczytać jaki ma zakres.
Phalcon to eksperyment, są w nim bugi, które juz nie są błędami PHP, a niższego kodu. W benchmarku wygląda świetnie, potem się go uruchamia (jeszcze samobójstwo - z Apache) i jak maszyna wydoli to baza nie.
Jeśli framework to sprawdzony Symfony w wersji najnowszej lub oparty na nim i ulepszony nieznacznie Laravel.
Jak nie framework to i tak HMVC, które dobrze przemyślane otworzy naprawdę duże możliwości przed LMS. Można wtedy modułowo obsłużyć dowolne systemy.
Czemu Symfony? Wsparcie, społeczność, przemyślane elementy jak system tłumaczeń czy widoki. Resztę pomijam, bo miejscami rozwiązania są genialne, miejscami po prostu dobre.
Czemu Laravel? Bo to wybrane najlepsze moduły Symfony z dołożonymi nowinkami, które czasem przyspieszają development, a czasem po prostu rozwiązują problemy mniejszym nakładem pracy nie psując jakości.
Jak bez frameworka to wtedy i tak warto wziąć routing symfony i podejrzeć budowę, bo pracowali nad nią ludzie mający doświadczenie i wyśrubowali dobre rozwiązania, które sprawdziły się w wielu projektach.
Taki ze mnie "frustrat", że nie mogę bezczynnie patrzeć jak fajny system jest psuty złymi decyzjami. Wiele kwestii można było rozwiązać inaczej i gdyby nie licencja, na której jest LMS to już dawno byłby fork bijący oryginał na głowę. Sam napisałem daemon, który w lepszym tempie i z mniejszą ilością błędów wrzuca do bazy LMS dane z urządzeń sieciowych, ale jest przystosowany pod jednego klienta i nie mam na razie zamiaru go dostosowywać do systemu, który zaraz będzie przepisany na wersję z błędami, za poprawianie których nikt już nie ma siły płacić.
LMS to nie "strona" która musi obsłużyć 1000 requestów na sekundę. Szybkość frameworka ma tutaj najmniejsze znaczenie, imho.
Dobrze skojarzyłem gościa, że frustrat :D
A wracają do dyskusji to i tak pewnie skończy się na tym, że będzie bez zewnętrznego frameworka robione ;-)
całe szczęście, że jeszcze w tym kraju możemy mieć własne zdanie. a wracając do dyskusji. nie uważam, żeby była potrzeba "zaprzęgania" zewnętrznych mechanizmów. oczywiście można podejrzeć dobre praktyki i je zastosować. Aczkolwiek LMS w tej formie jest wystarczająco chyba wydajny. czy jest potrzeba jeszcze przyśpieszać? Oczywiście można narzekać ale właśnie jego otwartość jest jego atutem, każdy może zrobić co chce i jak chce a jak mu się nie podoba to po co używać, napisać swój i go zamknąć.
@nicraMarcin a od kiedy pamiętam misiek08 (i parę innych ksywek tego typa) narzekał i wylewał żale, ale jakoś poprawek, modyfikacji i nowego kodu nie podsyłał...
@chilek to jest otwarty projekt i każdy może przecież z tym zrobić co chce i powiedzieć co chce, szkoda, że tylko u wielu na tym się kończy a mogli by coś wnieść do projektu. Daleko mi do osądzania innych, którzy tu się udzielają w mniejszym bądź większym stopniu bo sam jestem za maluczki. ale podsumowywując tę poboczną dyskusję, to jest takie powiedzenie, a jak to mówią powiedzenia są mądrością narodu. mianowicie: "Darowanemu koniowi nie zagląda się w zęby", i ja będę się tego trzymał. Pozdrawiam wszystkich
@chilek patrzyłem jak obchodzi się to repozytorium z ludźmi, którzy chcieli wstawiać nowe, świeże rzeczy jak design. Miliard problemów, od technicznych do graficznych.
Jak LMS przybierze drogę ku dobremu to chętnie dołożę napisany od nowa kod, taki jaki będzie potrzebny.
@alecpl ma rację, tutaj potrzeba stabilnego rozwiązania. Phalcon taki nie jest. Symfony tak, Zend też (tylko znowu Zend to krowa, która zjada tyle pamięci, że popadamy ze skrajności w skrajność).
@nicraMarcin Nie przyspieszać, ustabilniać. Co do komentarza o otwartości to jestem za otwartością nie tylko na kod, ale też pomysły, a nie konserwatywne podejście do wielu spraw, które nie pasuje do niektórych dzisiejszych standardów. Zewnętrzny mechanizm może, ale nie musi być użyty, ale pewnych praktyk warto się trzymać, żeby za rok-dwa znowu nie "przepisywać".
@misiek08 nie ukrywam, że masz w pewnym sensie rację, w mniejszym bądź większym stopniu, ale nie mi to oceniać. Jak pisałem, za "mały jestem" by wielu Wam w programowaniu dorównać (aczkolwiek ciągle się uczę i coś zaczynam robić :))
odnośnie frameworków. one same się zmieniają, versionują. jaka jest pewność, że w niedługim czasie np. Syfony czy inny nie zostaną "przepisane" i nie będą kompatybilne wstecz? wówczas znów zostaniemy z problemem, który teraz próbujemy sobie stworzyć.
@misiek08: najpierw piszesz, że są podejmowane złe decyzje prowadzących, później że nie zostały przyjęte nowe rzeczy, z którymi były techniczne problemy, to jak to w końcu jest, bo się pogubiłem.
@misiek08 i do tego jeszcze piszesz o jakichś złych decyzjach odnośnie frameworku... a gdzie tu była jakaś decyzja skoro to przecież póki co luźna wymiana zdań :)
@chilek bo ja widzę już co się szykuje i patrzę na to repo od kilku ładnych miesięcy. Jak ktoś z Panem ma to samo zdanie, to taka rzecz wchodzi w życie choćby nie wiem co - ot, taka analiza pół-roczna.
@pjona kolejny konserwatysta, który każdy nowy głos będzie negował? złe decyzje prowadzących i nowe rzeczy, które były problemem to tak jakby para i może iść w parze. To nie przeciwieństwa.
Wygląda jakby miał same problemy i nie dawał nic od siebie - ok. W takim razie mogę się już nie udzielać w temacie LMSa. Szkoda jedynie samego projektu, bo jest już naprawdę solidna podstawa i marka.
@misiek08 jak Ci tak szkoda i jesteś specjalistą to pomóż w inny sposób niż gadaniem, narzekaniem, wylewaniem żali i frustracji... A jak chcesz nadal to robić co robisz to załóż bloga i tam sobie opisuj co tylko dusza zapragnie ;-)
Wracając do głównego wątku to czego mamy zacząć się uczyć? Jak na razie mamy:
@nicraMarcin mój głos nie musi być specjalnie traktowany także możesz usunąć dopisek solidny
na grafie który jest na https://github.com/kenjis/php-framework-benchmark rzeczywiście widać Phalcon zostawia konkurencje w tyle ale instalując w/w benchmark na kompie już nie ma takiej różnicy
|framework |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|phalcon-2.0 | 24,364.36| 1.0| 0.00| 0.0|
|framework |requests per second|relative|peak memory|relative|
|-------------------|------------------:|-------:|----------:|-------:|
|symfony-2.7 | 27,134.69| 1.0| 0.00| 0.0|
+/- 2k requests zależy od kliknięcia raz jest 24k raz 26k
@nicraMarcin LMS to nie tylko strona ale sprawę skryptów załatwi api FOSRestBundle
@chilek ok :) @maciejhiller toż cały czas podkreślam iż LMS to nie tylko strona ale cały backend, coś co pracuje 24/h - czyli najlepszy daemon :)
właśnie przeglądam porównanie tych frameworków http://vschart.com/compare/phalconphp/vs/symfony i najlepszą pozycją jest "Has stupid developers" :)
Dlaczego testujesz symfony-2.7 skoro jest już 3.0 ? 3.0 ma wsparcie tylko do licpa tego roku i to może je jakoś dyskfalifikować ale jest też wersja 2.8, która ma już nowego profilera, kilka dotatków w security, których nie było w 2.7 oraz poprawioną sporą ilość bagów dotyczących formularzy, które były w 2.7 no i w wersji 2.8 twórcy twierdzą że jest pełna kompatybilność z PHP7, co w przypadku przechodzenia na framework warto uwzględnić moim zdaniem
On 10.02.2016 22:10, Maciej Hiller wrote:
na grafie który jest na https://github.com/kenjis/php-framework-benchmark rzeczywiście widać Phalcon zostawia konkurencje w tyle ale instalując w/w benchmark na kompie już nie ma takiej różnicy
framework requests per second relative peak memory relative phalcon-2.0 24,364.36 1.0 0.00 0.0
framework requests per second relative peak memory relative symfony-2.7 27,134.69 1.0 0.00 0.0 +/- 2k requests zależy od kliknięcia raz jest 24k raz 26k
@nicraMarcin https://github.com/nicraMarcin LMS to nie tylko strona ale sprawę skryptów załatwi api FOSRestBundle http://symfony.com/doc/current/bundles/FOSRestBundle/index.html
— Reply to this email directly or view it on GitHub https://github.com/lmsgit/lms/issues/593#issuecomment-182583139.
Pozdrawiam Maciej Wawryk
No właśnie - z tym frameworkami też jest taki problem, że co jakiś czas zachodzą tak duże zmiany, że trzeba przechodzić inwazyjne aktualizacje i zmieniać sporo w swoim kodzie, żeby się dostosować. Podobnie już mamy ze Smarty ;-)
Wydaje mi się, że nie powinniśmy przywiązywać dużej wagi do ilości obsłużonych zapytań a patrzeć rozwojowo. LMS to nie strona jak słusznie @alecpl podkreślił. To ma działać i byśmy nie musieli po kilku latach przepisywać. Tak w ogóle to po co robić na frameworku, poprawiać to co już jest. LMS nie musi być wydajny, powinien być użyteczny.
Jakiś super lekki framework mógłby być dobry, ale taki, który daje bardzo podstawowe rzeczy i zrzuca obowiązek pilnowania bzdur takich jak choćby analiza przekazanych parametrów. Tak czy inaczej zamierzam testowo dodać w najbliższym czasie obsługę zakresów numeracyjnych voip w LMS, która będzie działać w oparciu o pojedynczy "moduł", a uprawnienia i tak będą realizowane w oparciu o ConfigHelper::checkPrivilege(...)
@chilek to może nie całe symfony ale poszczególne narzędzia? wtedy sukcesywnie można kod dostosowywać do freamworka. z phalcon chyba nie da się tak zrobić
@wawryk 2.7 bo takie symfony ściąga się razem z tym benchmarkiem :), 2.8 to 2.7 przygotowane do upgrade'u do symfony3
@nicraMarcin tu nie za bardzo jest co robić jakieś głosowanie, bo nie ma co ukrywać ale głównych aktywnych developerów LMS'a jest dwóch @chilek @maciejlew i to oni zdecydują, w którą stronę pójdziemy. Też myślę, że jak nie freamwork to jak piszesz poszczególne narzędzia co już starałem się "obrazkowo" pokazać 11h temu :)
@chilek patrzyłem jak obchodzi się to repozytorium z ludźmi, którzy chcieli wstawiać nowe, świeże rzeczy jak design. Miliard problemów, od technicznych do graficznych.
No czyli jeśli były jakieś problemy (techniczne czy wizualne) to chyba dobrze że nie zostało przyjęte? Gdzie tu jest zła decyzja? Liczby mówią, że do mastera weszło 407 pull requestów z 508 - czyli sporej większości się udaje.
@pjona lepiej nie kontynuować wymiany zdań z misiek08 i zajr, bo to zwykłe trolle ;-)
Traktowanie kogoś z wiedzą (ciekawe czy nie większą) jako trolla to dość ciekawe podejście, popularne na polskiej scenie IT. Mamy tylu znafcuf, że głowa boli, a potem dyskietki w ZUSie i nie działający system przyjmowania wniosków w e-Urzędzie.
Przyszło kilka wiadomości, ale żadne nie wprowadziły nowej treści po moim dłuższym komentarzu. Główni deweloperzy powinni wybrać naprawdę stabilny framework pod względem rozwoju, jak i działania, czyli nie można wziąć Phalcona, który jest eksperymentem naukowym (bo jak już wyżej ktoś zauważył - nawet benchmarki są mocno oszukane, wcale nie jest taki szybki). Jak nie framework to chociaż jego moduły jak routing, system tłumaczeń, widoki i system uprawnień. To jest wymagane, bo wprowadzanie własnych rozwiązań będzie tylko niejawnym zamykaniem źródeł (każdy, kto będzie chciał pomóc sobie odpuści, bo nie będzie mu się chciało uczyć lokalnych rozwiązań). Jest teraz Smarty i to było rewelacyjne wyjście, bo Smarty jest popularne i zna je prawie każdy.
Jak już @chilek wspomniałeś o lekkich frameworkach to tutaj jest Slim i F3. Te polecam, bo są sprawdzone i oprócz szybkości są bardzo stabilne same w sobie. Jeden i drugi ma ciekawy routing i system widoków. Resztę można już robić wg własnych upodobań.
Jeszcze "strolluję" dalej i podpowiem, że pod widoki polecam Smarty albo Twig, bo obydwa są po prostu czytelne i nawet dla nieobytych z tematem - przyswajalne.
P.S. Jeżeli mam nie zabierać głosu - proszę napisać.
Zapomniałem jeszcze o Silex'ie. On używa komponentów Symfony, co gwarantuje stabilność.
@misiek08 piszesz już bloga? Jeśli tak to gdzie można go poczytać? ;-) Jeśli masz wolny czas to do roboty z udoskonalaniem LMS-a!
@chilek jest szansa żebyś w ramach lmgit utworzył nowy projekt np lms2 :) ?
@maciejhiller czemu nie. nie widzę przeciwskazań, ale moim zdaniem lepiej nie robić od nowa tylko zrobić równolegle działający kawałek kodu w stosunku do tego starego, który nowe funkcje będzie obsługiwał już na nowych zasadach. Inaczej jest duża szansa, że lms2 nigdy nie zostanie produkcyjnie zastosowany ;-)
a tak nawiązując do tematu z https://github.com/lmsgit/lms/pull/590, który był ruszony przez @maciejlew, czyli robienie osobnych klas, żeby było bardziej obiektowo i jak to @chilek skomentował "to dobry pomysł. Tylko kto to zrobi? :)" to nie lepiej przepisać LMS'a do jakiegoś framework'a ? :) zajęłoby to mniej czasu