kingarthur
28.11.2011, 22:27:36
To mój pierwszy post na tym forum, dlatego też serdecznie witam.
Jeśli napisałem temat w złym dziale to przepraszam i proszę o przeniesienie, chociaż z drugiej strony to temat zahacza o kilka działów.
W ramach pracy dyplomowej mam za zadanie stworzyć system CMS do obsługi intranetu korporacyjnego. Wstępnie nastawiam się na realizację tego projektu przy użyciu takich technologii i narzędzi, jak PHP, XHTML, CSS, Apache, PostgreSQL, jQuery i Zend Framework. Wybrałem te technologie dlatego, bo po prostu najwięcej rzeczy robiłem za ich pomocą i najwięcej z nich umiem, co nie znaczy że jestem ekspertem. Oczywiście dotychczas były to nieduże projekty na zaliczenie przedmiotów na studiach. Teraz zadanie jest bardziej poważne, więc uważam, że raczej nie dam rady się nauczyć powiedzmy JEE w takim stopniu, żeby w kilka miesięcy zrealizować ten projekt, więc opieram się na tym z czym miałem najwięcej styczności. Zaznaczam, że nie chciałbym robić tego w oparciu o jakieś gotowe CMS, typu ezPublish czy Joomla, tylko wszystko od podstaw.
Od razu stawiam pytanie: czy te technologie są odpowiednie do tego typu aplikacji, tzn. czy znane wam komercyjne produkty są robione w tych technologiach? Wiem, wiem że wszystko da się zrobić za pomocą tych technologii, ale chodzi mi o praktykę. System ma być jak najbardziej profesjonalnie wykonany, niezawodny, bezpieczny i stabilny. Czy produkty komercyjne są pisane w tych technologiach czy raczej JEE, ASP.NET itp.? A może jakieś inne rozwiązania polecacie? Z chęcią rozpatrzę wszystkie możliwości.
Druga sprawa to w jakich wersjach robi się systemy(jak to się robi w komercyjnych projektach?)? Chodzi mi o to, że jak wiadomo nowe wersje technologii pojawiają się dość często. Powiedzmy, że teraz Zend jest w stabilnej wersji 1.11.x, ale jest wersja 2 beta, więc lepiej zacząć robić teraz w 1.11 czy poczekać na 2? Ogólnie czy lepiej robić w wersjach najnowszych czy niekoniecznie? Istotna jest tu kwestia bezpieczeństwa i dostępności do różnych materiałów pomocniczych(książek, tutoriali itp.). Inny przykład to XHTML vs HTML5? I to samo pytanie tyczy się każdej technologii z osobna.
Następna sprawa to proszę o pomoc, jak za to wszystko się zabrać. Nie chodzi mi o jakieś gotowce, ale o wszelkie informacje, które mogą być pomocne w realizacji tego projektu, np.:
- rozplanowanie pracy(kolejność zadań - co w kolejności wykonywać) tak żeby w połowie się nie okazało, że trzeba robić od początku, bo coś tam było z początku źle pomyślane;
- przydatne narzędzia, dzięki którym praca będzie prostsza i szybsza(edytory, designery, kreatory itp.);
- polecane przez was książki o technologiach, w których zamierzam robić ten system,a także o wszystkim co może mi się przydać przy jego realizacji. Oczywiście mam na myśli coś dla bardziej zaawansowanych. Wolałbym po polsku, ale ostatecznie może być i po angielsku;
- ciekawe artykuły z pism fachowych na dany temat;
- jakieś produkty podobne(komercyjne), na których można się wzorować i które są popularne na rynku itp;
- informacje o możliwej funkcjonalności takiego systemu;
- wszystko inne co może być przydatne.
Posiadam już pewne założenia do tego systemu:
- intranet ma być tylko wewnętrzny(brak dostępu z zewnątrz) - w sumie nie do końca rozumiem co to znaczy. Czy chodzi o to, że do systemu można wejść tylko z komputerów podłączonych do sieci w budynku firmy czy powiedzmy pracownik może wejść sobie do systemu w swoim domu po uprzednim zalogowaniu? ;
- funkcje jakie ma realizować: publikowanie artykułów, rezerwacja własności firmy(samochodów firmowych, sal, rzutników itp.), książka telefoniczna; reszta funkcji to już ma być moja inwencja;
- realizacja projektu przy użyciu raczej niekomercyjnych technologii(w tym miejscu muszę nadmienić, że myślałem z początku też o bibliotece ExtJS, ale w związku z tym że jest płatna do zastosowań komercyjnych i ma podobną bezpłatną alternatywę - qooxdoo, zrezygnowałem z tego rozwiązania. Z qooxdoo też ostatecznie zrezygnowałem z racji tego co pisałem wcześniej, że nie miałem z tym nigdy styczności i postanowiłem korzystać tylko z jQuery. Interesuje mnie tutaj wasza opinia na temat qooxdoo. Co myślicie o tym rozwiązaniu? A może jednak warto to sobie przyswoić i zastosować w realizacji projektu?).
Za wszelką pomoc serdecznie dziękuję
by_ikar
29.11.2011, 09:24:26
Nie jestem dokładnie pewien, ale jeżeli chodzi ci o to o czym myślę, o coś w rodzaju routera/firewalla/serwer http/serwer mail/samba itp, to samo php tutaj nie wystarczy i tutaj musisz mieć jakiś system, powiedzmy jakiś linux/unix który tym będzie nadzorować, a ty będziesz z poziomu php tylko edytować pliki ustawień poszczególnych usług. To w php takich webui jest sporo, chociażby w FreeNAS w wersji 0,7 masz webui napisane w php, w wersji 8 już jest w django (python). W sumie nawet do twojego zastosowania możesz użyć FreeNAS który chyba swoją funkcjonalnością odpowiada twoim założeniom. Z komercyjnych rozwiązań to w sumie ci nie powiem, bo tematem dopiero niedawno zacząłem się interesować, chcąc stworzyć w sieci domowej jakiś serwer NAS.
kingarthur
30.11.2011, 08:55:16
@by_ikar
Nie, chyba nie o to mi chodzi. Chodzi o system CMS, czyli coś podobnego do Joomli, tylko że do obsługi intranetu korporacyjnego.
Jedna z definicji mówi, że system CMS do intranetu to:
Wewnętrzny portal informacyjny firmy, który dobrze zaprojektowany, staje się bazą wiedzy dla pracowników oraz miejscem pracy grupowej i miejscem budowania społeczności.
Ale dzięki za zainteresowanie.
Uriziel01
30.11.2011, 09:12:03
A to musi być Twoje autorskie rozwiązanie ? Jeżeli tak, to dlaczego ? Czemu zwyczajowe systemy do CMSa maja tutaj nie spełnic ich wymagań ? Z 'wymagań' które wymieniłeś nawet dosyć przecietny system CMSowy by się wybronił. Brzmi jak zwykły CMS z systemem uprawnień, dostępny tylko w LANie (czy też intranecie jeżeli wolisz to tak nazwać [tak, tak wiem że to nie to samo]) tylko z jakimś dodatkowym appletem do 'rezerwacja własności firmy' ale to już jest raczej kwestia średniej wielkości aplikacji dosyć niskiego stopnia integracji.
Co do akapitu 'intranet ma być tylko wewnętrzny' to tutaj bardzo zależy to od poziomu bezpieczeństwa jaki ma oferować taki system, jeżeli wystarczą podstawowe limitacje no to wpisanie maskowanego IP intranetu do .htaccess'a powinno zdać sprawę.
kingarthur
30.11.2011, 10:20:36
@Uriziel01
Niby nie musi, ale lepiej żeby było. A to z tego powodu, że moja praca dyplomowa powstaje w ramach jakiegoś tam projektu powiązania edukacji z przemysłem. Oznacza to, że mój temat pracy został zaproponowany przez firmę zajmującą się programowaniem i najprawdopodobniej firma będzie miała do niego prawa autorskie. Zatem jeżeli zrobię bardzo dobrą aplikację to będzie ona wykorzystywana przez tę firmę i mogę również później liczyć na pracę w tej firmie. A jeśli będzie taka sobie to nie mam co liczyć na dalszą współpracę, a oni i tak nic nie stracą, bo nie ponoszą żadnych kosztów w związku z tym projektem. Po prostu chciałbym się jak najbardziej wykazać umiejętnościami, a przy okazji się czegoś nauczyć. Przeprowadziłem już kilka rozmów z osobą z tej firmy odpowiedzialną za nadzór nad moją pracą i to co na razie wiem napisałem w pierwszym poście. To co jest w tej chwili najważniejsze to, że za około 2 miesiące muszę przedstawić szkielet aplikacji, projekt, zaproponować funkcjonalność, a później przez kilka miesięcy zaimplementować. Przeglądając kilka podobnych produktów komercyjnych stwierdzam, że funkcji możliwych do zrealizowania jest bardzo dużo. Jednak nie można też przesadzić i zabrać się za coś co okaże się niemożliwe do zrealizowania. Oczywiście mogę też oprzeć wszystko na gotowcach i prawdopodobnie moja praca spocznie sobie w archiwum uczelni obok tysięcy innych i żadnego pożytku z tego nie będzie, ale tego bym nie chciał.
Uriziel01
30.11.2011, 11:06:27
Rozumiem jak najbardziej.
Mimo wszystko polecam ci raczej wzorować się na innych systemach zarzadzania treścią. Nie tworzysz nieczego 'innowacyjnego', ma to byc dobrze przemyślany, profesjonalny i funkcjonalny CMS a takowych jest już kilka na naszym rynku. Najwięcej możesz dowiedzieć się poprostu pobierając daną aplikację lub tez przeglądając jej dokumentację (o ile jest ona dobrze napisana).
Co do technologii.No cóż, możesz także napisać to nawet w ASMie, tylko po co? To nie ma być żaden superwydajny serwis obsługujący jakiś niesamowity traffic i setki req/s. Jeżeli masz doświadczenie w PHP+PSQL no to w tych technologiach napisz aplikację. Dla uzyskania większej interaktywności i dynamiki (w myśl Web 2.0) możesz używać wszelkich dobrodziejstw jQuery i jego zapytań AJAX'owych. Co do frameworka, jeżeli lubisz ZF no to nie widzę przeszkód w jego wykorzystaniu, zasadniczo frameworki nie zdają egzaminu w bardzo nietypowych zastosowaniach, gdzie potrzeby klienta są bardzo niestandardowe i nieszablonowe. Tym bardziej opłaci się to jeżeli masz już z nim doświadczenie, jeżeli nie chesz używać FW no to samo dobrze przemyślane i zaplanowane pisanie OOP powinno tutaj wystarczyć.
Jeżeli chodzi o kolejnośc etapów produkcji tej aplikacji. Zawsze zaczynasz od fazy projektowania, potrzebujesz listy wszelkich funkcjonalności docelowych, założenia projektowe, wymagania klienta, wykorzystywane technologie, struktura i relacje w bazie danych etc. etc. potem piszesz szkielet, abstrakcyjne klasy, interfejsy, ustalasz sobie co po czym dziedziczy ustalasz format wszelkich przekazywanych danych, decydujesz jak obsługiwane sa zapytania i jak generowany jest widok końcowy. Ostatecznie wypełniasz go zawartością, tworzysz szablony i treść. To tak napisane naprawdę w wielkim skrócie.
Jeżeli chcesz jakiś porad bardziej szczegółowo (tutaj napisałem ci wszystko bardzo ogólnikowo) to podaj więcej detali

EDIT:
Aha. Jeżeli zależy ci aby aplikacja miała wygląd oraz sposób obsługi zbliżone do plikacji desktopowych możesz użyć pluginów pokroju:
http://www.jeasyui.com/demo/index.phpOto jakie możliwości daje JS w przeglądarce.
kingarthur
30.11.2011, 17:50:15
Cytat
Mimo wszystko polecam ci raczej wzorować się na innych systemach zarzadzania treścią
Oczywiście będę przeglądał różne rozwiązania i starał się na nich wzorować, jeśli będą dobre. Nie chcę tylko korzystać z gotowców.
Cytat
Co do technologii.
Cytat
Druga sprawa to w jakich wersjach robi się systemy(jak to się robi w komercyjnych projektach?)? Chodzi mi o to, że jak wiadomo nowe wersje technologii pojawiają się dość często. Powiedzmy, że teraz Zend jest w stabilnej wersji 1.11.x, ale jest wersja 2 beta, więc lepiej zacząć robić teraz w 1.11 czy poczekać na 2? Ogólnie czy lepiej robić w wersjach najnowszych czy niekoniecznie? Istotna jest tu kwestia bezpieczeństwa i dostępności do różnych materiałów pomocniczych(książek, tutoriali itp.). Inny przykład to XHTML vs HTML5? I to samo pytanie tyczy się każdej technologii z osobna.
Ponawiam pytanie, jest ono dla mnie bardzo istotne. Chciałbym wiedzieć czy firmy, które zajmują się tworzeniem oprogramowania tworzą je w najnowszych dostępnych wersjach czy nie?
Cytat
Jeżeli chodzi o kolejnośc etapów produkcji tej aplikacji. Zawsze zaczynasz od(...)To tak napisane naprawdę w wielkim skrócie.
Znasz może jakąś dobrą książkę opisującą to zagadnienie?
Cytat
Jeżeli zależy ci aby aplikacja miała wygląd oraz sposób obsługi zbliżone do aplikacji desktopowych
No właśnie też się nad tym zastanawiam i myślę, że chciałbym coś takiego zrobić. Tym bardziej, że skoro system ma być na potrzeby wewnętrzne, więc nie ma obawy, że coś tam będzie niekompatybilne czy przepustowość łącza będzie za słaba. Ponawiam pytanie o qooxdoo -
http://qooxdoo.org/ ? Czy ktoś może wygłosić jakąś opinię o tej bibliotece?
Ponawiam też pytanie o książki, które mogą być pomocne. Na innym forum polecono mi
http://helion.pl/ksiazki/projektowanie-sys...rens,psycms.htm Znacie jakieś
dobre podobne książki?