IronCMS2 beta3 i informacje

Zgodnie z ostatnimi zapowiedziami projekt CMS-a (wbrew pozorom) nie został porzucony. Poza wydaniem kolejnej bety, która naprawia poprzednio znalezione błędy i dodaje trochę nowych funkcjonalności chciałem wyjaśnić kilka kwestii natury organizacyjnej.

Po pierwsze, coś co może Was lekko zasmucić (choć, serio, nie powinno :D). Z powodu moich niezbyt wyrafinowanych umiejętności i pewnych specyficznych wymagań jakie postawiłem przed systemem, a także uwarunkowań licencyjnych związanych z szablonem, CMS nie zostanie na razie wydany publicznie. Po drugie: ponownie nadszedł czas na podziękowanie grupie świetnych testerów i kolegów, którzy pomagają mi w realizacji całego tego przedsięwzięcia. Podziękowania lecą , alfabetycznie, do:

Jeżeli o kimś zapomniałem to proszę bić :D W tej wersji ponownie poprawiono ponad 50 zgłoszeń odnośnie błędów i funkcjonalności. Jeżeli ktoś z Was chciałby dołączyć do grona testerów, to proszę o skorzystanie z zakładki "Kontakt".

Mam nadzieję, że kolejna wersja będzie już stabilna, wtedy na pewno przedstawię więcej informacji.

Pozdrawiam :)

Informacja - status projektów

W związku z kolejną długą przerwą od wpisów, myślę, że tym z Was, którzy czytują mnie jakoś w miarę regularnie (są tacy? :P) należy się kilka wyjaśnień. Przyczyn takiego stanu rzeczy jest kilka, jedną na pewno jest fakt, że ostatnio ciężej jest mi się zmotywować i opisać jakiś temat na blogu - tak zwana prokrastynacja. Ponadto od kilku tygodni pracuję z kolegą nad kolejnym projektem - mam nadzieję pochwalić się nim już niedługo.

Chciałem jednak jednoznacznie przedstawić, jak wygląda sprawa kilku moich wcześniejszych "projektów", ponieważ już kilka osób się mnie o to pytało.

Sobak's Blog
Blog jak najbardziej jest kontynuowany. Nie planuję go zamykać czy coś w tym stylu. Obecny deficyt nowych wpisów, mam nadzieję, będzie tymczasowy. Co więcej, z blogiem (a raczej ogólnie stroną) łącze pewne przyszłe plany, które siłą rzeczy wiążą się z kolejnym projektem…

IronCMS 2
Przestój prac rzeczywiście występuje, publiczne informacje o postępie zatrzymały się na drugiej becie. Mimo tego, jest on dla mnie ważnym projektem i cały czas planuję go dokończyć. Aktualnie po prostu wskoczył na drugie miejsce w kolejce - za projekt, o którym wspomniałem na początku notki.

BrzydkiKod
Planowałem większą rewolucję wraz z uruchomieniem nowej wersji strony, ale ostatnio natknąłem się na projekt nospora - pr0.nospor.pl, który całkowicie wyczerpuje formułę pomysłu, który zacząłem realizować. W związku z tym, myślę że nie ma obecnie szans na kontynuację tej inicjatywy - jeśli już, to po prostu podeślę ze zbiorów coś do "konkurencji".

XNova/Blackout
Ktoś to jeszcze pamięta? ;) Ja praktycznie zapomniałem, ale pewna osoba mi przypomniała, więc warto rzecz wyjaśnić. Sprawa obecnie wygląda tak: projekt tego typu może zostać zrealizowany, jednak nie będzie to na pewno przeróbka XNovy, tylko coś pisanego od zera (bardzo możliwe, że z wykorzystaniem części rozwiązań z dostępnych silników). Trzeba jednak pamiętać że to co mam w kolejce spokojnie wystarczy mi na długi czas.

Zakładka projekty
Projekty jako zbiór doczekały się już kilku przeprowadzek. Swego czasu istniał dla nich osobny skrypt, potem zostały zwykłymi podstronami w WordPressie. Na nowej stronie moduł projektów będzie integralną częścią systemu, jednak będzie cechował się specyficznymi możliwościami, innymi od zwykłych podstron i dostosowanymi do wymagań. Krótko mówiąc: staram się połączyć zalety obu rozwiązań.

Jeśli chodzi o zawartość zakładki to część ze skryptów zostanie zakończona na obecnym etapie. Inne natomiast (główne klasy PHP) będą stale aktualizowane, bo zdaję sobie sprawę, że kurz już na nich osiadł no i jakość kodu nie jest najlepsza, dużo się w nim od tamtego czasu pozmieniało.

Jeśli ktoś z Was chce, abym wyjaśnił jeszcze jakąś kwestię o której zapomniałem to piszcie w komentarzach :)

IronCMS 2 beta2

To znowu ja, powracający po chwilowej ciszy jaka zapadła na moim blogu. Można odczuć wrażenie, że ostatnie wpisy robią się lekko monotematyczne i w sumie jest to zgodne z prawdą. Bowiem dziś, równo po dwóch tygodniach od wydania na świat pożarcie testerom pierwszej bety IronCMS 2… pojawia się druga beta.

Wersja ta niesie ze sobą ponad 50 poprawek i nowych możliwości w odniesieniu do poprzedniej. Jestem bardzo zadowolony z pierwszych betatestów - pozwoliły mi wyłapać dużo błędów i zasugerować sporo zmian na lepsze. Nie wszystko zostało jeszcze ukończone, ale widzę duży progress względem poprzedniej wersji.

Właśnie dlatego chciałem znów złożyć małe podziękowania, należą się one (w kolejności ilości zgłoszonych błędów/propozycji tym razem): Kadetowi, Volixowi, Rapidwolfowi, Soanvigowi i Rodkanowi.

Nie ma co przeciągać. Osoby chętne do testowania zapraszam do kontaktu (zakładka w menu lub komentarz pod tym wpisem), odezwę się na podany adres email i pociągniemy ustalenia dalej.

Do usłyszenia! :)

Beta IronCMS 2!

Wszelkie wiadomości związane z nową wersją IronCMS (seria 2.x) na moim blogu ostatnio przycichły, można było się domyślać, że jest to kolejny projekt, z jakim rozmyśliłem się po kilku tygodniach pracy (na moim blogu można znaleźć takich kilka ;)). W tym momencie mogę jednak (z nieskrywanym zadowoleniem) ogłosić, że właśnie ukończyłem pierwszą betę IronCMS 2.

Ciężko mi nawet określić ile czasu nad nią pracowałem. Pamiętam, że minimum 2 razy porzucałem cały dotychczas napisany kod, aby rozpocząć od nowa (raz na dalekim etapie). Nie potrafię też powiedzieć czy zabieg się opłacił - widzę jednak efekt. Można powiedzieć, że skrypt jako tako działa. Na pewno jest w nim dużo błędów, ponadto trzeba wziąć pod uwagę, że w tej wersji umyślnie wielu rzeczy nie skończyłem - po prostu. Bo mogę :) Będę je dorabiał stopniowo, jak na razie jestem po prostu zadowolony, że udało mi się skończyć jakiś wyraźny etap.

Cyferki

Teraz nadszedł czas na troszkę nudnych liczb. Poniżej przedstawiam statystykę linii kodu źródłowego - z podziałem na moją własną robotę oraz pełny skrypt wraz z bibliotekami zewnętrznymi (mój skrypt korzysta m.in. z parsera BBCode od Wookieba oraz GeSHi do kolorowania składni).

Kod PHP (całość)
13 353 linijki kodu (dodatkowo 1472 puste linie i 2542 linie komentarzy) - łącznie 17 367 linii.

Kod PHP (własny)
4772 linie kodu (dodatkowo 724 puste linie i 134 linie komentarzy) - łącznie 5 360 linii.

Duża rozbieżność pomiędzy ilością kodu własnego i tego ze źródeł zewnętrznych wynika ze stopnia rozbudowania i elastyczności bibliotek - mówiąc inaczej: duża ilość kodu nie jest wykorzystywana obecnie przez CMS - przykład: kolorowania składni dla wielu języków zawartych w GeSHi).

Chciałem pokusić się też o statystykę dla kodu CSS/JavaScript, ale do stworzenia szablonu strony został użyty Twitter Bootstrap, więc sytuacja wygląda jak wyżej, po pierwsze: ogromna ilość kodu nie jest jeszcze (albo nigdy nie będzie) używana, a po drugie, ciężko było by mi rozdzielić ile z tego kodu to moje dodatki/modyfikacje, a ile jest dziełem autorów Bootstrapa/szablonu na nim opartego. Mogę tylko powiedzieć, że skrypt został uzbrojony w 8141 linii czystego kodu CSS, bez rozdzielania na autorów.

Testy

Zgodnie ze wcześniejszymi zapowiedziami, aktualnie kod źródłowy skryptu nie będzie dostępny publicznie. Nie chcę po prostu Was straszyć moimi wymysłami, dam sobie jeszcze trochę czasu na wprowadzenie wielu istotnych poprawek. Właśnie dlatego, w tej chwili rozpoczną się pierwsze betatesty IronCMS-a. Wszystkich zainteresowanych testowaniem zapraszam do kontaktu.

Screeny?

Czyli jak pokazać coś, tak, aby nie wyjawić nic :) (Kliknij na obrazek, aby przejść do pełnych wymiarów).

Strona główna w IronCMS 2 Panel administracyjny w IronCMS 2

Co my tu mamy? Na pierwszym screenie jawi nam się duże zdjęcie w topie (nie moje) i kawałek podstrony (moje), na drugim znajduje się panel administracyjny pokazany poprzednio, a więc jak najbardziej nic nowego.

Zakończenie?

Co na koniec? Jak zwykle podziękowania. Z tego miejsca podziękowania wędrują do (w porządku alfabetycznym, żeby mnie nie pogryziono): CapaciousCore, m4tx'a, Marcina, Rhino, Rodkana, Thelleo, Volixa i wszystkich innych, którzy pomagali mi na rozmaite sposoby w osiągnięciu celu.

IronCMS 2 - raport taktyczny

Zgodnie z zapowiedzią, dzisiejszy wpis będzie nakreślał aktualny stan prac nad IronCMS-em 2. Nie chciałbym, aby projekt sprawiał wrażenie porzuconego, bo tak zdecydowanie nie jest.

W wyniku kilku dyskusji i przemyśleń postanowiłem zmienić drastycznie jeden z aspektów skryptu – aktualnie jestem na etapie wdrażania prostego systemu szablonów na potrzeby CMS-a. Przyjął on formę znaną z wielu frameworków webowych (nie tylko PHP) i obecnych tam widoków. Mówiąc krótko i zwięźle – pliki szablonów są pisane z użyciem PHP (i w przyszłości kilku rozsądnych helperów ułatwiających pracę). Powodów, dla których odrzuciłem koncepcję użycia rozbudowanego systemu szablonów z dedykowaną składnią (np. Smarty, Twig) jest kilka, ale to może przedstawię przy innej okazji.

Co jeszcze zmieniło się w CMS-ie od ostatniego wpisu o nim? Przede wszystkim zostały ukończone kolejne kluczowe elementy – system komentarzy jest gotowy niemalże w połowie, funkcja bloga na której chciałem się skupić została już prawie ukończona. Skończone zostało dodatkowe kilka podstron, widocznych zarówno dla odwiedzającego stronę jak i dla administratorów. Gotowy jest praktycznie cały panel administracyjny.

Panel administracyjny IronCMS

Powyższy screenshot pokazuje z grubsza jego wygląd i układ. Wspomniany wcześniej system szablonów obejmie także panel administracyjny, tak więc nic nie będzie stało na przeszkodzie, aby przygotować alternatywne wersje panelu administracyjnego – np. wersję lite czy mobilną.

Aktualnie kluczowymi elementami do ukończenia są: system komentarzy,poprawki do parsera BBCode oraz wspomniany system zmiany szablonów. Po wykonaniu tej pracy ukaże się wersja beta, przeznaczona do skatowania przez grono zażartych testerów. Dopiero po tym rozpocznie się faza wdrażania mojego potworka na sobak.pl :)

Korzystając z okazji chciałbym pozdrowić Thelleo, który intensywnie rozwija swój system zarządzania treścią - LunaCMS.

A może tak… IronCMS 2?

Ostatnio znów zrobiło się ciszej z nowymi wpisami - tym razem powodem jednak nie było lenistwo, a przynajmniej nie w czystej postaci ;) Od dłuższego czasu pracuję nad nowym skryptem - tak tak, tytuł to nie żart - ci z Was, którzy pamiętają mój projekt o nazwie [IronCMS][portfolio-ironcms] mogą być lekko zaskoczeni, ale to prawda - aktualnie tworzę drugą wersję tego skryptu o jakże odkrywczej nazwie - IronCMS 2.

Różnic w odniesieniu do poprzedniej gałęzi będzie sporo - całkowicie napisany od nowa kod źródłowy, ale także kilka zmian w podejściu. Pierwsza i zasadnicza - skrypt nie będzie dostępny publicznie… przynajmniej na razie :) Przed ewentualnym wydaniem zostanie na pewno dobrze przetestowany i poddany próbie bojowej (już wkrótce więcej o tym). Do ewentualnego wydania na światło dzienne kod zachowam dla siebie, jednak będę się starał Was informować o ważniejszych zmianach w nim - to będzie także sposób na motywację dla mnie.

Wstępna data premiery wersji 2.0 jest już wyznaczona, jednak nie chcę jej jeszcze podawać, aby nie czuć się zobligowany żadnymi terminami. Przed premierą na pewno odbędzie się minimum 10 dni zamkniętych betatestów, w których poprawię najważniejsz znalezione błędy. Po premierze zaś, zbiorę wnioski wynikające po używaniu CMS-a w praktyce i niedługo po niej prawdopodobnie zacznę przygotowywać kolejną wersję z adekwatnymi poprawkami.

Jeśli chodzi o zastosowane rozwiązania, to od wydania ostatniej wersji IronCMS-a minęło prawie półtora roku (27.06.2011 - [wersja 1.2.1][ironcms-121]). Sądzę, że przez ten czas zebrałem jednak trochę nowych doświadczeń, z których będę mógł skorzystać przy swojej pracy.

Myślę, że dziś to będzie na tyle - nie chcę przeciągać tego wpisu bez potrzeby. Przed premierą powinien się ukazać jeszcze minimum jeden wpis o IronCMS-ie w wersji 2.0  - prezentacja screenów czy coś - zwyczajna marketingowa papka :D

Pozdrawiam.

[ironcms-121] [portfolio-ironcms]: https://sobak.pl/projects/iron-cms/

Iron 1.2.1 i trochę informacji o nim

Wydałem lekko poprawioną wersję Irona. Nowa wersja usuwa przede wszystkim błędy bezpieczeństwa (za wyłapanie kilku z nich serdecznie dziękuję DeXTeD'owi z forumweb.pl :)), ale poprawia też np. nieaktualizowany od prawie pół roku, skrypt sprawdzania aktualizacji dla skryptu. Zarówno ten wbudowany jak i jego wersję online, dla osób których serwery nie pozwalają na otwieranie zewnętrznych plików funkcją file_get_contents.

Ponadto postanowiłem w końcu ogarnąć jakiekolwiek strony informacyjne, download etc dla Irona. Znajdują się one w nowym podmenu w menu "Projekty" na górze strony. Będzie toto stopniowo rozbudowywane.

Pozdrawiam :)

IronCMS 1.2

Wreszcie, po naprawdę sporym opóźnieniu, udało mi się skończyć wersję 1.2 mojego CMS-a. Skrypt miał być wprawdzie gotowy ponad 2 tygodnie temu, ale z nawału wykrytych w nim błędów dopadło mnie chwilowe lenistwo. Dopiero dziś udało mi się wziąć w garść i skończyć zaczętą robotę.

Najwięcej zmian w tej wersji można znaleźć "pod maską", oto najważniejsze z nowości:

  • przepisanie części skryptu na programowanie obiektowe
  • znaczne uproszczenie struktury bazy danych
  • możliwość włączenia komentowania dla osób niezalogowanych
  • możliwość wygenerowania kanału ATOM dla artykułów
  • skórkę dla telefonów komórkowych przywrócono do używalności - wprawdzie była ona w Ironie już od dłuugiego czasu, jednak była dość mocno niedopracowana i od dawna nieaktualizowana. W tej wersji wprowadzono w niej naprawdę sporo zmian.
  • w związku z powyższym nadszedł też czas na zrobienie łatwego przełączania się między motywami
  • pasek dla administratora, na górze strony, zawierający najważniejsze odnośniki
  • więcej zmian w readme…

Pobierz Irona

IronCMS 1.1

Zaledwie osiem dni minęło od premiery pierwszej publicznej wersji mojego CMS-a, a już prezentuję Wam jego kolejną wersję. Nie jest to jednak aż tak wielki powód do dumy jak pozornie mogłoby się wydawać, bo wersja ta spowodowana jest wieloma błędami i spostrzeżeniami do wersji 1.0. W tym miejscu dziękuję wszystkim za konstruktywną krytykę i wszelką pomoc.

W tej wersji skupiłem się głównie na poprawie wytkniętych mi błędów. Tak więc z najważniejszych zmian wymienić można:

  • działające BBCode - szukałem troszkę czegoś odpowiedniego i w sumie oparłem bbcode w Ironie na klasie NBBC. Banalna edycja i dodawanie znaczników, skompresowany kod (pozbawiony wcięć i enterów) zajmuje ok. 2500 linii (64 KB) (w Ironie rozmiar obcięty do 1900 linii). Do tego genialna dokumentacja. Polecam ;)
  • nowe menu w panelu administracyjnym - było na nie wiele narzekań (sam się w nim gubiłem), więc przysiadłem na chwilę i mam nadzieję, że jest łatwiej się w nim połapać.
  • wiele poprawek w systemie komentarzy - możliwość korzystania z bbcode, komentarze adminów nie potrzebują akceptacji (wiem, absurd, przeoczyłem to), tekst domyślny znika po kliknięciu na pole, możliwość dodania komentarzy do artykułów, podniesione zabezpieczenia itd.
  • uporządkowano praktycznie wszystkie formularze w skrypcie - ujednolicono wygląd i poprawiono opisy
  • wszystkie funkcje mysql_* zastąpiono funkcjami własnymi (odniesienie do sugestii Kwpolska) - kto wie? Może kiedyś zobaczymy Irona np. na PostgreSQL? :P
  • dużo, dużo więcej…

Teraz czas na informacje nieco z innej beczki. Otóż w dniu dzisiejszym, grupa tworząca Irona została z powrotem zredukowana do jednoosobowego zespołu szaleńców (czytaj mnie…). M4tx przez cały czas swego udziału włożył do projektu około 20 linii kodu (a po wersji 1.0, która została napisana od nowa ten udział wyniósł równe zero), tak więc stwierdziłem, że nie będę go więcej męczył pytaniem, czy coś zrobi. I został (jak na razie!) wyrzucony z projektu.

Mam nadzieję, że zaprezentowane powyżej zmiany  uważacie za dobre.

IRON CMS 1.1 (*.zip)

A na koniec: Wesołych Świąt Wam życzę :)

Premiera Iron CMS-a!

Z nieukrywaną dumą informuję, że skrypt który zacząłem tworzyć dokładnie 114 dni temu (20.12.10) został w końcu doprowadzony do stanu używalności. Dziś, o godzinie 14:40 nadszedł czas zaprezentować go światu.

Premiera odbyła by się chwilę wcześniej, gdyby nie to, że nie mogłem się dostać do phpMyAdmina na sobak.pl i tym samym zdebugować pewnego zapytania (na localhoście działało, tu nie). Przez około 5 godzin męczyłem się z instalatorem. Dodatkowo ponad godzinę straciłem, czekając aż panel administracyjny 1&1 raczy się załadować., ale, tak, udało się! :) Iron CMS 1.0 jest gotowy!

O tym, że jego przepisywanie od nowa zbliża się do końca informowałem tutaj. Zajęło mi to dokładnie 20 dni (z małymi przerwami). Podczas tego "procesu" skupiłem się głównie na poprawie logiki, wydajności i błędów ze starszych wydań (były 4 wydania prezentowane tylko znajomym).

  • poprawiłem dziesiątki nieoptymalnych miejsc. Trzykrotne łączenie się z bazą w jednym pliku, czy pobieranie tej samej wartości kilkanaście razy pod rząd? Takie rzeczy tylko w starych wersjach Irona (tak, ochrzciłem CMS-a mianem żelazka :D (joke)) :)
  • poprawiłem stare funkcjonalności. Np. f-cja kosza dostępna od wersji 0.3 została rozszerzona o możliwość wyrzucania artykułów. Wcześniej były to tylko podstrony.
  • nowa wersja starego szablonu. Jak już napisałem w zapowiedzi skryptu, użyłem gotowego szablonu. Podczas przepisywania CMS-a na nowo, znalazłem jego nowszą wersję. Został mocno poprawiony HTML i CSS i doszło m. in. górne menu. Dodatkowo dorzuciłem lekką modyfikację szablonu od siebie.
  • możliwość ustawienia oddzielnego theme'u dla panelu administracyjnego
  • zalążek rang użytkowników
  • znaczna poprawa bezpieczeństwa
  • dodany instalator
  • poprawa przejrzystości panelu administracyjnego
  • zmiana wielu rozwiązań pod względem logistycznym
  • setki, naprawdę setki rzeczy o których zapomniałem bądź pisać nie warto…

Skrypt został napisany z użyciem możliwości z PHP5 (wersja czwarta musi odejść do lamusa…) i bazy danych MySQL.

Trochę statystyki

Wielkość skryptu (zdekompresowane)

  • 0.1 - 26.4 kB
  • 0.2 - 2.87 MB
  • 0.3 - 1.48 MB
  • 0.4 - 2.32 MB
  • 1.0 - 344 KB

Skąd tak duża różnica? Od wersji 0.2 w skład skryptu wszedł JS-owy edytor WYSIWYG - TinyMCE. W 0.3 go "lekko" odchudziliśmy (z m4tx'em) - stąd taki spadek rozmiaru. W 0.4 doszło troszkę nowych rzeczy, a IronCMS 1.0 został pozbawiony edytora WYSIWYG, zastąpiono go BBCodem. Jego rozmiar jest podwójnym sukcesem, bo poprzez rozbicie theme'u na theme dla strony i oddzielny dla panelu, ilość obrazków de facto nam się podwoiła.

Dlaczego nie WYSIWYG lecz BBCode? Otóż stwierdziłem, że skryptów idiotoodpornych powstało już mnóstwo. Zdaję sobie sprawę, że to może zawęzić ilość użytkowników Irona (ale spójrzmy obiektywnie - ile ludzi tak czy siak będzie go używać? :P). Poza tym - znajomość BBCode, to nie jest jakaś magiczna sztuka.

Linie kodu (kliknij aby powiększyć)
Statystyki linii w IronCMS

Podziękowania

  • dla Rhina za rozwiązanie niezliczonej ilości moich błędów i przeoczeń
  • dla Pawła1503 i m4tx'a za betatesty
  • dla CapaciousCore'a, za naprawdę fachowe porady dotyczące skryptu.

DOWNLOAD IRON CMS 1.0