Pravoslavni crkveni kalendar

Započeo holodoc, 19.08.2008, 12:45

prethodna tema - sledeća tema

holodoc

19.08.2008, 12:45 Poslednja Izmena: 03.05.2009, 15:02 od holodoc
Otvorio sam ovu temu da bih težište rasprave o kalendaru preneo sa teme u forumu o C programiranju ovde.

Elem, tek sada sam, inspirisan jutrašnjom raspravom sa kolegom oko toga koji je danas verski praznik, našao malo vremena da okačim funkcionalnu verziju kalendara online na laboratorijski server da bi ste mogli da pogledate kako to sve izgleda uživo i po potrebi ga koristili :)
Pravoslavni crkveni kalendar

Za izradu kalendara korišćena je kombinacija PHP, AJAX, CSS, MySQL a algoritam se zasniva na strogim pravilima Srpske pravoslavne crkve o načinu određivanja pozicija pokretnih i nepokretnih praznika u okviru gregorijanskog kalendara. Koliko je meni poznato, a iz priče sa ljudima koji su takođe relativno upućeni u ovu materiju, ovo je za sada jedini kalendar Srpske Pravoslavne crkve na netu koji se potpuno dinamički generiše a uz to je i tačan.

Aplikacija se u suštini sastoji iz dva osnovna dela. To su glavni kalendar i ovaj mali "widget" koji služi za integraciju u druge sajtove kako bi pružili povratni link na glavni sajt gde se instalira glavna kalendarska aplikacija.

Osnovna odlika glavne kalendarske aplikacije je da je za njeno pokretanje na bilo kojoj stranici dovoljno prekopirati neophodne fajlove klasa projekta i ubaciti sledećih nekoliko linija u stranicu:
<?php
        
require_once "config.php";

        
$calendar = new Orthodox_Calendar('calendar'$_REQUEST['month'], $_REQUEST['year']);
        
$calendar->buildCalendar();
        
$calendar->renderCalendar();
?>

Ovih nekoliko redova je dovoljno da uz veliki stepen apstrakcije metoda u klasama dobijete sve ono što je dato na prvom linku koji sam dao. Aplikacija je takođe veoma prilagodljiva kada je u pitanju Javascript i AJAX. Ukoliko se u browseru ne registruje podrška za bilo koju od pomenute dve tehnologije kalendar se automatski prilagođava korišćenju klasičnog (X)HTML-a.

Takođe kalendar je konstruisan tako da je vizuelni deo aplikacije potpuno odvojen od koda putem CSS-a. Dakle sve što vidite na kalendaru je veoma prilagodljivo kasnijim uklapanjima u kod.

Što se tiče nedostataka i planirane nadogradnje za ubuduće, ako je bude, planirano je pre svega da se uradi centralizacija svih sigurnosnih mera radi zaštite kalendara. Trenutno je dosta tih mera raštrkano po kodu za koji je  takođe planirano da se ubuduće očisti od integrisanog (X)HTML-a i da se koriste šabloni. Eventualno postoji mogućnost integracije prikazivanja mesečevih mena itd. ali otom-potom kada budem siguran da imam algoritme koji odgovaraju.

Nažalost, zbog određenih propusta koji još uvek postoje u kodu, od kojih je većina vezana za sigurnost aplikacije, ne mogu još uvek u javnost da pustim kompletan source kod dok se navedene greške ne isprave. Zbog toga na sledećem linku možete naći kompletnu dokumentaciju projekta pravoslavnog crkvenog kalendara za trenutno stanje projekta.

Kod će inače biti objavljen za sada pod Creative Commons licencom dok se po mom mišljenju ne stvore uslovi da se eventualno objavi pod GPL-om. To u praksi znači da možete da koristite aplikaciju za svoje potrebe i u edukativne svrhe ali da ne smete da je koristite u komercijalne svrhe. O tome naravno kada kod bude objavljen.

Mala napomena... Zbog univerzalnosti kompletan source kod i dokumentacija je na engleskom.

Na ovom mestu bih želeo da se zahvalim svima koji su mi pomogli da ovaj projekat završim na vreme a pre svega Nedeljku Stefanoviću za stvarno nesebičnu pomoć vezanu za pružanje neophodnih infomacija o našem crkvenom kalendaru i algoritmu za izračunavanje pravoslavnog Uskrsa, koji je njegovo autorsko delo.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

holodoc

02.05.2009, 15:22 #1 Poslednja Izmena: 19.01.2012, 16:03 od holodoc
Pravoslavni kalendar

S obzirom da me je od prvobitnog objavljivanja ovog posta kontaktiralo dosta ljudi sa željom da dobiju izvorni kod gotovog Pravoslavnog kalendara to ovom prilikom i činim.

Kompletan kod se nalazi prikačen uz ovu poruku a za pokretanje je potrebno klasično AMP okruženje (Apache, MySQL i PHP).

Par napomena. Kod koji vidite je samo dokaz koncepta i ni u kom slučaju nije idealno rešenje. Gotovo kompletan algoritam kalendara je realizovan isključivo na osnovu detaljnije analize ponašanja raznih verzija klasičnih crkvenih kalendara na osnovu kojeg sam dolazio do određenih zaključaka koji su algoritamski gledano pružali zadovoljavajuću preciznost. U međuvremenu je od ovog početnog projekta nastao potpuno novi projekat koji se trenutno nalazi (u žargonu Crkve rečeno) pod "blagoslovom Crkve" i realizuje se u saradnji sa Sabornom crkvom u Beogradu koja nudi pomoć u vidu detaljnijeg pregleda karakteristika računanja praznika i nekih drugih veoma bitnih pravila. Projekat je izuzetno kompleksan i trebalo bi da ugleda svetlost dana za nekih par meseci. Otom potom.

Još jedna bitna napomena. Određeni materijali (sadržaj baze, računanje datuma Uskrsa itd.) podležu pod neku vrstu infomacija koje Crkva čuva kao tajnu. Ne bih da zalazim u detalje ali jednostavno svaki projekat Pravoslavnog kalendara bi trebao da prvo dobije blagoslov same Crkve pre nego što se počne sa izradom da bi projekat bio u skladu sa duhom poštovanja Crkve. Za manje projekte čiji je osnovni cilj samo dokaz koncepta to nije problem ali za sve iznad toga ipak postoje neka nepisana pravila koja bi trebalo da se poštuju. Zbog toga ovaj projekta nije izdat pod GPL već pod Creative Commons licencom za koje detaljne podatke možete naći ovde. Tu piše šta smete da radite sa ovim kodom a šta ne. Smete ga menjati kako vama odgovara ali ne smete da prilikom dalje redistribucije menjate tip licence pod kojom sam ga ja objavio. Takođe ne smete koristiti projekat u komercijalne svrhe kao i da uklonite ime autora (mene) u delovima gde koristote moj kod. Ovo poslednje više ima veze sa time što postoje restrikcije vezane za komercijalnu upotrebu gde je potrebno navesti ime autora nego što ja insistiram da moje ime stoji u kodu.

Kod je bogato komentarisan (na engleskom doduše) a za sva pitanja koja potencijalno imate možete ih postaviti ovde gde ću isključivo odgovarati na njih.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

holodoc

Pošto su usputno vršena neka podešavanja na serveru vezana za korisnike rešio sam da ponovo postavim live verziju kalendara onako kako je to bilo pre modifikacija.

Pravoslavni verski kalendar

Par napomena za one koji imaju nameru da kalendar isprobaju u lokalu.

1) Pre bilo kakvog pokretanja potrebno je da imate odgovarajuću bazu na svom MySQL serveru (MySQl dump se nalazi u arhivi), sa podešenim odgovarajućim korisnikom i lozinkom (oba parametra birate sami kod kreiranja MySQL korisnika a kasnije samo ažurirate svoj config.php fajl) koji ima SELECT, INSERT i UPDATE dozvole. Ukoliko korisnika dodajete putem phpMyAdmina ne zaboravite da pokrenete FLUSH PRIVILIGES posle dodavanja korisnika.

2) Ukoliko koristite Linux potrebno je u root folderu ručno dodati fajl putem komande
touch error_log.dat
i dodeliti mu odgovarajuće dozvole
chmod 777 error_log.dat
Ovaj fajl će sadržati informacije o svim potencijalnim greškama koje se mogu javiti prilikom pokretanja kalendara.

3) Na nekim PHP platformama može se dogoditi da mysql ekstenzija iz nekog do sada meni nepoznatog razloga ne funkcioniše kako treba. Nemam vremena da proveravam u čemu je problem pa zato predlažem da ako je mysqli ekstenzija omogućena prepravite DB_TYPE u config.php-u da izgleda ovako
define('DB_TYPE', 'mysqli');

To bi trebalo da bude to.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

marado

Evo pošto sam uz pomoć štapa i kanapa  uspeo da se registrujem na ovaj forum<:-P, da postavim i neko pitanjce.

Kako ovo radi? :) Hocu da kažem, hvala ti na uloženom trudu! Ovo je odlična stvar.

Ja sam onako samouk kreuo da pravim neki svoj sajt pa se to malo proširilo, pa sam sad radio na dogradnji Pravoslavca www.pravoslavnikalendar.iz.rs

Da se vratim na temu. Postavio sam sve fajlove na server, ali to ne radi kako je bog rekao.
Ne znam u cemu grеšim.  Pokušao sam ono što si reako da bi moglo da bude problem na linuksu, al opet nece.
Još me nešto muči, zašto je potrebna baza podataka da bi kalendar radio?



holodoc

Pozdrav Marko.

Sam način funkcionisanja kalendara je objašnjen kroz izuzetno bogato komentarisan kod. Dakle, predlažem da kreneš od samog početnog fajla index.php i nastaviš sa analizom koda kako se granja kroz klase i metode jer zaista užasno mnogo vremena je uloženo u propratno komentarisanje. Nadam se da engleski nije problem ali ako jeste onda ti imaš problem jer ćeš se zaista teško snalaziti kroz bilo koji kod :((

Što se tiče fajlova. Ako se nalaze na Linuxu moraš da obratiš pažnju na to da apache ima pristup navedenim fajlovima. Za sve fajlove ti je potrebna dozvola za čitanje i izvršavanje dok jedino gore navedeni fajl zahteva i dozvole za pisanje za korisnika apache. Gde tačno postavljaš fajlove? U lokalu? Koji OS? Jesi li proverio Apache log fajlove? Prijavljuju li se greške? Ima li grešaka u log fajlu kalendara?

Što se tiče baze opšte je pravilo (bar moje) da za smeštanje podataka koristim isključivo RDBM sisteme. Dakle jedinu alternativu koju bih ovde priznao a da je manje zahtevna je SQLite ali trenutno podrška za SQLite ne postoji u ovoj verziji kalendara. Smeštanje podataka u bazu inače ima mnogo prednosti u odnosu na klasičan "flat file system" pristup jer se izbegavaju potencijalni problemi kod prevelike konkurentnosti pristupa (što svakako jedan RDBM sistem radi mnogo bolje), eliminišu se potencijlani problemi sa korupcijom podataka i što je najvažnije kreira se skalabilan sistem koji kasnije može da se proširuje :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

marado

 :o Šta si ti meni ovde sve napričao  :)

Pokušaću nešto, hvala

pravoslavac


holodoc

Citat: pravoslavac  23.05.2011, 14:57
Čovek sve odradio na www.crkvenikalendar.com
Fenomenalno!

Koliko vidim dotični sajt je verna kopija www.trsic.org tako da nema razloga da ne poverujem da ispod haube "šljaka" isti algoritam a pouzdano znam da se trsic.org ne snalazi dobro sa prestupnim godinama i da daje pogrešne rezultate za solidan broj praznika.

trsic.org je u stvari i bio glavni razlog zbog kojeg sam uz pomoć kolege koji je poprilično veliki vernik i veoma blizak sa Srpskom pravoslavnom crkvom napisao sopstvenu verziju kalendara gde sam pokušao da se više orijentišem na izvorna crkvena pravila a manje na matematička. Pa tako algoritam umesto da koristi generička (matematička) pravila za generisanje datuma praznika, kao što to rade skoro svi kalendari, koristi crkvena izvorna pravila tipa "prva subota posle određenog dana" ili "tri nedelje posle Usrksa" itd.

Znam da kalendar ovakav kakav je i nema baš neku formu prijatnu za oko mada služi svrsi i verovao ili ne ali potpuno neočekivano ima ogroman broj poseta a postala je skoro redovna pojava da dobijem mailove sa pitanjima kada može da se očekuje neka nova verzija kalendara :) Taj projekat je nažalost zbog svih mojih ostalih obaveza morao da se stopira i trenutno ono što je online je sve što je dostupno. Ukoliko mi vreme i obaveze to dozvole svakako ću ga završiti.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

pravoslavac

Nakon tvog teksta, rešio sam da malo detaljnije proverim ovaj kalendar na adresi www.crkvenikalendar.com i nisam mogao da nadjem grešku... Koliko vidim svi naši pokretni i drugi praznici su verno prikazani, po crkvenim pravilima. Pronašao sam neke sitnije propuste, npr, ne prikazuju se trapave sedmice, Kontaktirao sam autora mailom i on me obavestio da je svestan da sitni nedostaci postoje i da se radi na doradi kalendara. Uputio me da pogledam jednu od novih stranica na kojima radi,a da će kalendar na trsic.org biti uskoro ukinut i redirektovan.
Na svoje veliko zadovoljstvo, obavestio me je da intenzivno radi i na desktop verziji, a obećao mi je beta verziju na probu :)
Sve u svemu, mislim da je pohvalno što ima ljudi poput vas koji radite na kalendaru, ali mislim da bi ste trebali više da saradjujete medjusobno i da tako dobijemo ono pravo. Pitao sam ga da li mu je neko ukazivao na nedostatke pre mene, i dobio sam odgovor da nije, mada je video neke komentare po forumima. Zašto mu ti i tvoj prijatelj niste skrenuli pažnju na nedostatke, ako ste ih već uočili?
Ljudi, manje sujete i više saradnje - recept za bolje projekte!

holodoc

Citat: pravoslavac  25.05.2011, 10:37Nakon tvog teksta, rešio sam da malo detaljnije proverim ovaj kalendar na adresi www.crkvenikalendar.com i nisam mogao da nadjem grešku... Koliko vidim svi naši pokretni i drugi praznici su verno prikazani, po crkvenim pravilima. Pronašao sam neke sitnije propuste, npr, ne prikazuju se trapave sedmice, Kontaktirao sam autora mailom i on me obavestio da je svestan da sitni nedostaci postoje i da se radi na doradi kalendara. Uputio me da pogledam jednu od novih stranica na kojima radi,a da će kalendar na trsic.org biti uskoro ukinut i redirektovan.

Opet kažem davno sam radio na tom projektu tako da sam dosta stvari pozaboravljao ali se sećam da je trsic.org recimo imao problema sa proračunom svetaca koji su vezani za 29. februar (prestupna godina). Ostatka iskreno ne mogu da se setim jer sam lično po verskom opredeljenju ateista tako da za većinu informacija i provera mogu da zahvalim kolegi koji je čista suprotnost po tom pitanju i njegovim prijateljima u verskim krugovima. Naravno ja sam sproveo detaljno istraživanje pre početka radova koje je trajalo dobrih mesec-dva dana ali opet pošto me je u dotičnom projektu interesovao isključivo programerski izazov više sam se koncentrisao na realizaciju nego na samu tematiku :)

Citat: pravoslavac  25.05.2011, 10:37Na svoje veliko zadovoljstvo, obavestio me je da intenzivno radi i na desktop verziji, a obećao mi je beta verziju na probu :)
Sve u svemu, mislim da je pohvalno što ima ljudi poput vas koji radite na kalendaru, ali mislim da bi ste trebali više da saradjujete medjusobno i da tako dobijemo ono pravo. Pitao sam ga da li mu je neko ukazivao na nedostatke pre mene, i dobio sam odgovor da nije, mada je video neke komentare po forumima. Zašto mu ti i tvoj prijatelj niste skrenuli pažnju na nedostatke, ako ste ih već uočili?
Ljudi, manje sujete i više saradnje - recept za bolje projekte!

Nema ovde ni govora o sujeti. Jednostavno ovo je bio zaseban projekat koji se ni najmanje nije bazirao na trsic.org osim u slučajevima kada bi se proveravala tačnost našeg projekta gde bi opet nakon neslaganja bila konsultovana literatura ili pomenuti stručnjaci. Ni tada a ni sada ne vidim razloga zbog čega bih bilo koga smarao pitanjima posebno kad iz ličnog iskustva znam da se većina autora ovakvih projekata retko udostoji da na ta pitanja i odgovori (čast izuzecima) :)

<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

maxogm

25.05.2011, 18:58 #10 Poslednja Izmena: 25.05.2011, 19:14 od maxogm
Citat: pravoslavac  25.05.2011, 10:37
Na svoje veliko zadovoljstvo, obavestio me je da intenzivno radi i na desktop verziji, a obećao mi je beta verziju na probu :)

Kolega pretpostavljam da ste student smera Računarska Tehnika, zašto vi čekate nekog da vam napravi nešto... čovek(holodoc) je dao kod njegove aplikacije koja radi, zašto vi sa kolegama ne napravite vašu desktop aplikaciju.
Usput ćete naučiti dosta stvari koje vam kasnije mogu koristiti ukoliko planirate da se time uopšte bavite. Ovde ima ljudi koji rade u različitim programskim jezicima tako da bi vam sigurno neko pomogao ukoliko naletite na neki veći problem.