[ holodoc @ 03.08.2008. 19:18 ] @
Poslednjih nekoliko dana radim na jednoj web aplikaciju koja se razvija u PHP-u i koja je najkraće rečeno usko povezana sa pravoslavnom verom i običajima. Problem je nastao kod razvoja crkvenog kalendara koji ima opciju proizvoljnog izbora meseca i godine na osnovu kojih se "izračunava" odgovarajući kalendar. Naime, poznato je da se u osnovi pomenuti kalendar sastoji od dva tipa praznika, nepokretnih i pokretnih. Za nepokretne praznike napravio sam bazu jer za svaki praznik mora da postoji i odgovarajući opis.

Problem nastaje kod pokretnih praznika koji se "pozicioniraju" naznakama tipa "prva subota pred Uskrs" i sličnim. Detaljnije informacije o celoj problematici izrade možete naći recimo na adresi (http://s92645748.onlinehome.us/sky-dial/januar2006.html) na kojoj se nalaze zapanjujuće tačni podaci s obzirom da se radi o manje više amaterskom sajtu. Da odmah napomenem da se većina (ali ne i svi) pokretnih praznika vezuje za Uskrs i da njegovo određivanje nije problem. Moja ideja je bila da se iz baze prvo povlače odgovarajući praznici za dati mesec a da se pre icrtavanja izvrši zamena nepokretnih praznika pokretnim koji bi eventualno postojali za određeni mesec. Nažalost, do sada nisam uspeo da pronađem bilo kakvo rešenje za problem izračunavanja pokretnih praznika.

Sajtovi koji su mi preporučivani kao referentni za "kupljenje ideja" nažalost imaju netačne kalendare (primera radi http://www.trsic.org/kalendar/index.php koji ima dosta netačnosti i loše pozicioniranih praznika).

Elem da skratim priču... Da li neko, ko je eventualno imao iskustva sa izradom pravoslavnih crkvenih kalendara, može da mi da bar neki hint kako da realizujem pokretne praznike ili nagoveštaj da možda grešim u pristupu svoje realizacije?

Zahvaljujem unapred za bilo kakav predlog, sugestiju, gotov algoritam :)

Uz ovu poruku prilažem screenshot do sada realizovanog kalendara za jedan od proizvoljno izabranih meseci da ne ispadne da tražim pomoć oko nečega na čemu uopšte nisam počeo da radim. Na slici se vide samo nepokretni praznici.


[ holodoc @ 03.08.2008. 20:29 ] @
Strašno... 15 stepeni Celzijusevih manje i sat vremena kasnije i nalazim rešenje problema :(

Izvinjavam se na ovoj, sada, suvišnoj temi :(

Pozdrav svima.
[ Nedeljko @ 03.08.2008. 21:18 ] @
Nadam se da si barem video moj algoritam za Uskrs

http://www.elitesecurity.org/p1818247

Ako ništa drugo, oslobađa te potrebe prekucavanja tablice. No, ti kažeš da ti određivanje datuma uskrsa nije problem. Lično mi nije poznato da postoje pokretni praznici koji nisu vezani za Uskrs. Možeš li da daš neki primer (još bolje ako možeš to i da dokumentuješ)?

Ja imam večiti pravoslavni kalendar "Vekovnik" autora protođakona Ljubomira Rankovića.

E, sad, u pravoslavnoj Crkvi je običaj da se takve stvari rade isključivo uz blagoslov, za koji nisam siguran da ćeš ga dobiti, jer je prodaja papirnog izdanja jedan od načina finansiranja Crkve i tu je zapravo koren tvojih problema zašto ne uspevaš da dođeš do potrebnih informacija sa izvora.

Pomaže li Wikipedia?

http://en.wikipedia.org/wiki/Eastern_Orthodox_liturgical_calendar
http://en.wikipedia.org/wiki/Paschal_Cycle

U svakom slučaju, piši o napretku, idejama saznanjima. Na kraju, šta misliš o ovakvim stvarima:

http://www.gnu.org/philosophy/free-sw.html
http://www.opensource.org/docs/osd
[ holodoc @ 03.08.2008. 21:43 ] @
Prvo da ti se zahvalim na odgovoru Nedeljko.

Što se tiče tvog algoritma za računanje Uskrsa verovao ili ne ali on je sastavni deo klase kalendara jer iskreno rečeno nisam uspeo da naletim na čistiji i funkcionalniji algoritam za računanje Uskrsa od tvog. Nadam se da nije problem što sam ga pozajmio bez pitanja :)

U vezi samog problema rekoh već da ova vrućina stvarno nepovoljno utiče na rad. Kada sam malopre pogledao ponovo spisak pokretnih praznika zaključio sam da je od 27 praznika 22 moguće logički povezati sa Uskrsom. Zato sam odlučio da se u bazi pokretnih praznika koristi klasičan Unix timestamp za pamćenje offseta u odnosu na Uskrs te godine :)

Vezano za preostale praznike, tri (Oci, Materice i Detinci) su usko vezani za Božić koji je fiksiran dok su preostala dva vezana za Miholjdan i Mitrovdan koji su takođe fiksni. Za njih dakle mogu da razvijem algoritam tipa "prva subota od tog dana ove godine". To nije neki preterano veliki problem. Problem mogu da budu pomenuta prva tri praznika jer se prenose iz godine u godinu ali tako mi Sile ako i to ne uspem da rešim posle današnjeg čupanja kose :)

Što se tiče GPL-a i Open source-a naravno da ću pomenute klase objaviti pod tom licencom jer je stvarno sramota da nigde na netu ne mogu da se nađu kvalitetni algoritmi (klase) za kreiranje pravoslavnog kalendara. Naravno, ja od ovog projekta nemam direktne koristi osim naplate izrade aplikacije koja je namenjena nekome ko će tu aplikaciju koristiti isključivo za sopstvene potrebe jer je u pitanju čovek izuzetno blizak vrhu Srpske Pravoslavne crkve i izuzetan vernik :)

Još jednom zahvaljujem se na odgovoru i algoritmu a ja ću čim završim sa projektom i uspem da složim malo klasu ovde (a i na ostalim merodavnim Open source sajtovima) objaviti svoje PHP klase.

Pozdrav.

EDIT: Usput hvala za linkove. Jednostavno je nemoguće pogoditi engleske ekvivalente za reči koje su karakteristične za naše govorno područje a da ne pominjem reči karaktersitične za pravoslavnu veru :(

[Ovu poruku je menjao holodoc dana 03.08.2008. u 22:58 GMT+1]
[ Nedeljko @ 03.08.2008. 22:05 ] @
Citat:
holodoc: Što se tiče tvog algoritma za računanje Uskrsa verovao ili ne ali on je sastavni deo klase kalendara jer iskreno rečeno nisam uspeo da naletim na čistiji i funkcionalniji algoritam za računanje Uskrsa od tvog.


Hvala na lepim rečima, ali bih da napomenem da je algoritam u tom obliku validan samo za XX i XXI vek, jer izbacuje datum po Gregorijanskom kalendaru pod pretpostavkom da Julijanski za njim kasni 13 dana. No, to se lako može modifikovati tako da se dobija uvek tačan dan izražen u Julijanskom kalendaru. Da bi se taj dan izrazio u Gregorijanskom kalendaru, potrebna je funkcija konverzije iz Julijanskog u Gregorijanski kalendar. Jednostavna je i mogu da je obesim ako ti treba.

Citat:
holodoc: Nadam se da nije problem što sam ga pozajmio bez pitanja :)


Kada vidiš kod bez kopirajta, on je u javnom domenu. To znači da sa njim možeš da radiš šta hoćeš.
[ holodoc @ 03.08.2008. 22:16 ] @
Ako se ne varam nativna PHP biblioteka poseduje integrisanu podršku za konverziju kalendara iz Julijanskog u Gregorijanski oblik ali svakako da sam zainteresovan za bilo kakvu dodatnu infomaciju koju bih mogao da iskoristim za eventualne kasnije dorade klasa. Zašto kažem kasnije? Pa zato što sam sa ovim projektom na neki način u "cajtnotu" a postoje i neka druga ograničenja tehničke prirode koja mi ne dozvoljavaju da vršim prevelike intervencije na kodu (primera radi Unix timestamp koji važi tek od 1970. godine pa na ovamo)...

U svakom slučaju veoma sam zaintersovan za što je moguće "generalniji" algoritam za izradu jednog dobrog pravoslavnog kalendara kako bih mogao, čim dođem malo do daha, da krenem sa izradom "generalnije" verzije koja će nadam se biti svima od koristi
[ drdrksa @ 04.08.2008. 16:38 ] @
Nesto sto nema bas konkretne veze sa temom, ali mislim da moze nekako da pomogne. Potreban je Vbrun 6.0.

[ Nedeljko @ 04.08.2008. 18:44 ] @
Napravio sam malu biblioteku funkcija koja bi trebala da može da pomogne za rešavanje opšteg slučaja. Cilj je bio da se prikažu algoritmi koji nemaju ograničenja (mada ih kod ima zbog ograničenja opsega celobrojnih tipova). Zbog lakšeg razumevanja algoritama, kod nije objektno orjentisan, ali bi ga u slučaju primene algoritama svakako valjalo uviti u neku klasu. Upotreba ne zahteva nikakvo pravljenje binarnih biblioteka. Dovoljno je #include direktivom uključiti ovo zaglavlje u željeni fajl i sve funkcije su na raspolaganju. Pritom, neće biti ni problema oko uključivanja zaglavlja u više modula koji se posle povezuju u isti program, jer su sve funkcije inline. Dakle, pristup je prilagođen eksperimentisanju sa funkcijama i algoritmima.

Ako želiš da napraviš večiti kalendar i za pravoslavne Crkve koje su reformisale kalendar, imaj u vidu da su one prihvatile tzv. reformisani julijanski kalendar, koji se načinio naš astronom Milutin Milanković, i da nijedna pravoslavna Crkva do sada nije prihvatila gregorijanski kalendar. Biblioteka radi sa tri kalendara: gregorijanskim, julijanskim i reformisanim julijanskim, koji se sa gregorijanskim poklapa u periodu od 1601-2800 godine. No, Uskrs (a samim tim i sve pokretne praznike vezane za njega) sve pravoslavne Crkve slave istoga dana po starom julijanskom kalendaru. Reformisani kalendar se koristi (tamo gde je prihvaćen) samo za nepokretne praznike i one koji se vezuju za njih.

Prvo sam napisao funkcije Quotient i Remainder za izračunavanje količnika i ostatka pri euklidskom delenju celih brojeva. Nije mi poznato da standardna C++ biblioteka obezbeđuje tako nešto, a standardni operatori / i % opet ne daju željeni rezultat u slučaju da je neki od operanada negativan, a delenje se ne vrši bez ostatka. Na svim početnim kursevima algebre uči se sledeća teorema:

Za ma koje cele brojeve , gde je , postoje jednoznačno određeni brojevi takvi da je i .

Uz simboliku iz teoreme, broj zove se količnik, a broj ostatak pri euklidskom delenju broja brojem . Funkcije Quotient i Remainder ih izračunavaju korektno za sve vrednosti parametara.

U računu je zgodnije modifikovati kalendar tako da mu prvi mesec (sa rednim brojem 0) bude mart, a poslednji mesec (sa rednim brojem 11) februar, ne bi li 29. februar (ako ga ima) bio poslednji dan u godini. Funkcije OrdinaryToModified i ModifiedToOrdinary služe za konverziju u oba smera.

Funkcija DateFromYearAndDayNumberInYear određuje datum na osnovu godine i rednog broja dana u godini. Ulazni podaci su u modifikovanom, a izlazni u običnom obliku.

Dobro je imati funkcije za pretvaranje datuma u redni broj dana u odnosu na neku epohu, kao i obrnuto. To rade funkcije DateToNumber i DateFromNumber. Time su obezbeđene konverzije između svih kalendara. Sada je lako napisati i funkcije GetDayOfWeek.

Funkcija EasterDayNumberFromJulianYear po ranije priloženom algoritmu računa redni broj dana Uskrsa date julijanske godine. Njega je zatim moguće izraziti u bilo kom od tri podržana kalendara.

Sa funkcijama EasterDayNumber i Easter treba biti oprezan. One prihvataju godinu zadatog kalendara. Uskrsi koji padaju u julijanskim godinama 33807, 33808 i 33809 imaju gregorijanske datume 13. decembar 33807, 1. januar 33809 i 17. decembar 33809. Dakle, po sadašnjem računanju, gregorijanska 33808 godina ne sadrži nijedan pravoslavni Uskrs, dok ih gregorijanska 33809 godina sadrži čak dva! Do 33807 nema takvih anomalija. Ove funkcije bacaju izuzetak ako data godina datog kalendara ne sadrži nijedan pravoslavni Uskrs, a u slučaju da ih sadrži dva vraća onaj prvi. Naravno, svaka julijanska godina sadrži tačno jedan pravoslavni Uskrs.

Funkcija DayOfWeekFrom računa prvi datum počev od datog datuma koji pada u željeni dan u nedelji (rezultat može biti jednak danu koji je zadat). Funkcija NextDayWeek vraća prvi datum posle zadatog datuma koji pada u željeni dan u nedelji (rezultat ne može biti jednak zadatom datumu). Funkcija DayOfWeekTo računa poslednji datum koji nije nakon datog datuma koji pada u željeni dan u nedelji (rezultat može biti jednak danu koji je zadat). Funkcija PreviousDayWeek vraća poslednji datum pre zadatog datuma koji pada u željeni dan u nedelji (rezultat ne može biti jednak zadatom datumu).
[ Nedeljko @ 04.08.2008. 19:14 ] @
Citat:
holodoc: Vezano za preostale praznike, tri (Oci, Materice i Detinci) su usko vezani za Božić koji je fiksiran dok su preostala dva vezana za Miholjdan i Mitrovdan koji su takođe fiksni.


Koja su ta dva preostala praznika i kako se računaju?
[ holodoc @ 04.08.2008. 19:50 ] @
Prvo ne znam kako da se zahvalim na ovako iscrpnom objašnjenu Iskreno, nadao sam se da će bar neko nešto spomenuti u vezi algoritama i mogućih načina realizacije ali ovako detaljnom opisu, pa čak i realizaciji, nisam sigurno Stvarno ne znam šta bih mogao da kažem osim jedno veliko veliko hvala

Što se tiče konkretne realizacije ovog algoritma postoji nekoliko faktora zbog kojih će ona morati na kratko da se pomeri. Prvo, sistem koji sam osmislio za realizaciju kalendara na kojem do sada radim radi potpuno zadovoljavajuće što bi trebalo da znači da za sada nemam nameru da u okviru njega ubacujem bilo šta od algoritama koji su dati u tvojoj prethodnoj poruci. Njihovu implementaciju ću čuvati za realizaciju jedne klase "od nule" koja će sadržati upravo sve što je navedene u prikačenom header fajlu i naravno prilagođeno objektnom modelu.

Usput par komentara u vezi moje verzije kalendara. Naime, sistem po kome se kalendar realizuje je osmišljen da prilikom iscrtavanja kalendara za određeni mesec se vrši učitavanje svih nepokretnih praznika iz postojeće baze. Bilo je malo problematično naći dobar izvor naziva svih dana ali posle par napisanih konvertora sve je veoma brzo i kvalitetno pohranjeno u bazu.

Nakon što se u privremeni niz učita sadržaj relevantan za nepokretne praznike vrši se proračunavanje pokretnih praznika po sledećem principu. Naime, za sve praznike koji slede je moguće napraviti ofset vreme u odnosu na sam Uskrs (koji računam po tvom algoritmu) i taj ofset se čuva u bazi. Da bi se dobila tačna pozicija (po datumu i mesecu) za svaki od tih praznika koristim par funkcija koje su dostupne u okviru PHP-a a koje koriste Unix timestamp kao osnovu. Sreća pa očigledno novije verzije PHP-a potpuno eliminišu problem ograničenja mogućeg vreman od 1970. do 2035. godine. Jednostavno za svaki od praznika pročitam offset i oduzmem ili dodam broj dana u odnosu na poziciju Uskrsa u zavisnosti da li je offset negativan ili pozitivan.

Evo je lista praznika koji tako mogu da se odrede:

Mesne poklade - 8 dana pred početak Velikog posta (pada u nedelju)
Bele poklade - 1 dan pred početak Velikog posta (pada u nedelju)
Početak velikog posta - 7 nedelja pred Uskrs (pada u ponedeljak)
Sveti Teodor Komogovinski - Todorova subota - prva subota posle početka Velikog posta
Prvo Bdenije - 11 dana pred Cveti (pada u sredu)
Drugo Bdenije - 9 dana pred Cveti (pada u petak)
Lazarova subota - Vrbica - 7 dana pre Velike subote
Ulazak Gospoda Isusa Hrista u Jerusalim - Cveti - nedelju dana pred Uskrs
Veliki četvrtak - Veliko Bdenije
Veliki petak
Velika subota - kraj Velikog posta
Vaskrsenje Gospoda Isusa Hrista - Vaskrs
Vaskrsni ponedeljak
Vaskrsni utorak
Vaznesenje Gospodnje - Spasovdan - četrdeseti dan posle Uskrsa
Duhovske zadušnice - subota uoči Duhova (Pedesetnice, Trojice)
Silazak Svetog Duha na apostole - Pedesetnica - Trojice - sedam nedelja posle Uskrsa (pada u nedelju)
Duhovski ponedeljak
Duhovski utorak
Petrovske poklade - prva nedelja posle Duhova
Početak posta - prvi ponedeljak posle Petrovskih poklada

Preostalih pet praznika se po mojim saznanjima određuju isključivo po principu "prva subota pre Božića" i sl. To su sledeći praznici:

Oci - uvek je u prvu nedelju pre Božića. Ponekad se događa da se Oci prenose u prethodnu godinu što ume da bude problem
Materice - nedelju dana pre praznika Oci (taj praznik uvek dolazi iz sledeće godine)
Detinci - nedelju dana pre Materica (i taj praznik uvek dolazi iz sledeće godine)
Miholjske zadušnice - subota tačno uoči Miholjdana (12. oktobar)
Mitrovske zadušnice - subota tačno uoči Miholjdana (8. novembar)

Kod njih sam primetio da se svaki od tih praznika definiše rečenicom "subota uoči" ili "nedelja pre" tako da sam napravio algoritam koji pretražuje susedne dane unazad dok ne naleti na odgovarajući dan posle odgovarajućeg broja nedelja. I to odlično radi.

Još jednom hvala za iscrpna objašnjena
[ Nedeljko @ 05.08.2008. 09:50 ] @
Samo jedna ispravka.

Gregorijanski i reformisani julujanski kalendar se poklapaju od 1. marta 1600 do 28. februara 2800.
[ Nedeljko @ 06.08.2008. 15:54 ] @
Samo jedna sitnica.

Da, kod koji si video je u javnom domenu i nemaš nikakve obaveze, ali bih ipak voleo (mada nije obavezujuće) da budem citiran. Na primer, ako budeš isporučio neku dokumentaciju, da budem npr. pomenut kao autor (ali ne i vlasnik) nekog korišćenog algoritma i sl., odnosno ako budeš objavljivao izvorni kod koji sadrži nešto od toga, da se to navede u komentaru. Recimo,

The author of Easter computing formula is Nedeljko Stefanović, e-mail [email protected].

Podvlačim, nije obavezujuće, ali bih voleo.
[ holodoc @ 06.08.2008. 16:50 ] @
Izvinjavam se što juče nisam mogao da bilo šta odgovorim ali jednostavni bio sam previše zauzet debugg-ovanjem moje trenutne varijante. Što se tiče navođenja tvog imena u vezi algoritma za izradu kalendara u nekoj budućoj verziji (večnijeg) kalendara naveo bih ga čak i da nisi to tražio. Razlog...? Apsolutno cenim i poštujem svačiju intelektualnu svojinu

Pozdrav i čućemo se čim budem počeo sa radom na novoj verziji kalendara a ako procenim da bi postavljanje trenutne verzije bilo nekome od koristi i to ću učiniti

Pozdrav i još jednom hvala za info
[ Nedeljko @ 06.08.2008. 22:56 ] @
Zainteresovao si me za pravljenje jednog "večitog" pravoslavnog kalendara (koji bi bio važeći dok Crkva ne promeni kalendar i pravila praznovanja), pa i za pravljenje kalendara za druge verske zajednice. Evo, kako ja zamišljam projekat:

1. U programu bi bilo naglašeno sledeće:
a) Program nije načinjen kao zamena za papirnato izdanje kalendara i da to ne može biti, jer se kupovinom papirnog izdanja pomaže Crkva.
b) Ciljevi projekta su:
i) Dokumentovanje algoritama za određivanje praznika, postova i sl., koji nemaju ograničenja.
ii) Obezbeđivanje jednog "večitog" kalendara za određivanje praznika u prošlosti i budućnosti za godine za koje korisniku papirno izdanje kalendara nije dostupno, kao i pretvarača datuma između različitih kalendara i kalkulatora za izračunavanje vremena proteklog između dva datuma.

2. U skladu sa i), source bi bio dostupan i objavljen pod GPL kompatibilnom licencom (video bih kojom).

3. Program bi bio načinjen kao samostalna aplikacija prenosiva na vodeće platforme, bez zavisnosti od bilo kakvog softvera koji nije slobodan ili koji nije otvorenog koda. Da bih to postigao, programirao bih u jeziku C++ uz upotrebu Qt 4.x.x frameworka. Iz tog razloga ne bi radio na mobilnim telefonima.

4. Program bi bio višejezični i omogućavao bi članovima raznih pomesnih Crkava da na svom pismu i jeziku dobiju informacje uključujući i one o praznicima specifičnim za tu pomesnu Crkvu (recimo, na Vidovdan Srbi ne slave svetog Vida, već svetog Kneza Lazara).

5. Naziv programa bi se menjao zajedno sa izborom jezika i kada je izabran srpski jezik, glasio bi "Svetosavlje zauvek", a inače "Pravoslavlje zauvek" prevedeno na izabrani jezik. U prvoj verziji bi bili podržani engleski i srpski jezik.

6. Jedna od ambicija bi bila i kasnija podrška drugih veroispovesti, kako kao odvojenih aplikacija (jer npr. prosečan Turčin ne želi da ima jevrejski kalendar), kao i jedan opšti za korisnike kojma bi on više odgovarao. Naziv svakog bi bio "naziv_veroispovesti zauvek" na odgovarajućem jeziku, a čitava serija bi nosila naziv "Forever".

E, sad, bez obzira na tačku 1, vrlo bih lako navukao Crkvu na vrat, što ne želim. Takođe, nisam uspeo da dođem do (za mene razumljivih) informacija o računanju datuma zapadnog Uskrsa. No, voleo bih da znam šta drugi misle o ovome.
[ Shadowed @ 07.08.2008. 00:41 ] @
Citat:
Nedeljko: E, sad, bez obzira na tačku 1, vrlo bih lako navukao Crkvu na vrat, što ne želim.


Sta ti mogu :)
[ jablan @ 07.08.2008. 09:27 ] @
Citat:
Nedeljko: 3. Program bi bio načinjen kao samostalna aplikacija prenosiva na vodeće platforme, bez zavisnosti od bilo kakvog softvera koji nije slobodan ili koji nije otvorenog koda. Da bih to postigao, programirao bih u jeziku C++ uz upotrebu Qt 4.x.x frameworka. Iz tog razloga ne bi radio na mobilnim telefonima.

Bolje napravi veb aplikaciju. Na kraju možeš i da je ustupiš crkvama i da one ubiraju pare od banera i sl, tako bi rešio i problem sa anatemama i fatvama.
[ Nedeljko @ 07.08.2008. 17:14 ] @
Citat:
Shadowed: Sta ti mogu :)


Ma, nije stvar u tome, nego da ne kuka posle neko da sam ga zeznuo.

Citat:
jablan: Bolje napravi veb aplikaciju. Na kraju možeš i da je ustupiš crkvama i da one ubiraju pare od banera i sl, tako bi rešio i problem sa anatemama i fatvama.


Pa, to nije u skladu sa ciljevima projekta.
[ jablan @ 07.08.2008. 18:21 ] @
Citat:
Nedeljko: Pa, to nije u skladu sa ciljevima projekta.

Što?
[ Shadowed @ 07.08.2008. 19:07 ] @
Citat:
Nedeljko: Ma, nije stvar u tome, nego da ne kuka posle neko da sam ga zeznuo.

Kako hoces, ja se ne bih narocito uzbudjivao oko toga.
Ako ti nesto znaci, ako napravis taj program, dodatna dobra stvar je sto ces mi dati motivaciju da se bacim na C++ bar u toj meri da dodam mogucnost stampanja :) (ako je vec open source).
[ Nedeljko @ 07.08.2008. 23:14 ] @
@jablan

Pa, pročitaj šta su ciljevi. Jedan je

Citat:
i) Dokumentovanje algoritama za određivanje praznika, postova i sl., koji nemaju ograničenja.
ii) Obezbeđivanje jednog "večitog" kalendara za određivanje praznika u prošlosti i budućnosti za godine za koje korisniku papirno izdanje kalendara nije dostupno, kao i pretvarača datuma između različitih kalendara i kalkulatora za izračunavanje vremena proteklog između dva datuma.


Kakvo je to dokumentovanje algoritama bez izvornog koda? OK, svaki softver može biti otvorenog koda, ali treba sa tim i eksperimentisati. Bezbolnije je skinuti i instalirati jedan Code::Blocks i Qt pod Windows-ima ili korstiti g++ i Qt koji su isporučeni uz Linux, nego instalirati Apache/PHP, jer nema opasnosti da će da se kosi sa drugim softverom (drugi web server), a i lakše je koristiti standalone aplikaciju (za one koje izvorni kod ne zanima) koja nema nikakvih zahteva osim operativnog sistema. Nećeš valjda nekog istoričara kome treba kalkulator datuma da teraš da instalira apache?

Citat:
Shadowed: Ako ti nesto znaci, ako napravis taj program, dodatna dobra stvar je sto ces mi dati motivaciju da se bacim na C++ bar u toj meri da dodam mogucnost stampanja :) (ako je vec open source).


Štampa dakle. Ti bi baš da zezneš papirnato izdanje od koga se Crkva (jednim delom) finansira.
[ holodoc @ 07.08.2008. 23:34 ] @
Evo mene opet Bio sam poprilično zauzet sređivanjem koda kalendara ali sam uz određene kompromise uspeo poprilično uspešno da završim kalendar koji za sada bez ikakvih problema može da prikazuje apsolutno sve praznike u periodu od 1901. do 2035. godine. Ono što je najvažnije jeste da kalendar u potpunosti prati sva pravila Crkve oko toga kako se praznici pravilno pozicioniraju. Zbog toga slobodno mogu da kažem da je za sada, koliko je meni poznato, ovo jedini potpuno tačan kalendar za navedeni opseg za koji ja znam. Na Tršiću recimo ne postoji nijedan 29. februar (koji se popunjava martovskim prvim praznikom) a isto tako i jedan od svetaca dolazi i nestaje kako mu se ćefne (13. mart i Prepodobni Jovan Kasijan). Ispravljeni su još neki nedostaci koji postoje u ostalim verzijama kalendara na webu za koje ja znam.

Što se tiče ovoga oko prava na "uzimanje leba" Crkvi bilo kakvim Open source projektom raspitaću se kod viših instaci da vidim da li bi to predstavljalo neki problem pa ću se javiti.

Što se tiče kalendara čim stignem da ga postavim online javiću da ga pogledate.
[ jablan @ 08.08.2008. 09:50 ] @
Citat:
Nedeljko: Kakvo je to dokumentovanje algoritama bez izvornog koda?

A veb aplikacije nemaju izvorni kod?
Citat:
Bezbolnije je skinuti i instalirati jedan Code::Blocks i Qt pod Windows-ima ili korstiti g++ i Qt koji su isporučeni uz Linux, nego instalirati Apache/PHP

Da se opkladimo šta je lakše? Hint: xampp. Na kraju krajeva, uporedi broj C++ programera i PHP programera pa ćeš videti šta je lakše za instalaciju i eksperimentisanje...
Citat:
lakše je koristiti standalone aplikaciju (za one koje izvorni kod ne zanima) koja nema nikakvih zahteva osim operativnog sistema.

Nego veb aplikaciju koja nema nikakvih zahteva osim veb brauzera? Interesantno...

Mislim, kapiram ja da tebe mrzi da učiš PHP, kaži barem iskreno...
[ Shadowed @ 08.08.2008. 17:35 ] @
Citat:
Nedeljko: Štampa dakle. Ti bi baš da zezneš papirnato izdanje od koga se Crkva (jednim delom) finansira.

Pa, ne bi mi bilo zao, ali svakako da onaj ko hoce da daje crkvi moze i dalje od njih kupovati (ili im davati novac i bez kalendara).
[ Nedeljko @ 08.08.2008. 22:53 ] @
Citat:
jablan: A veb aplikacije nemaju izvorni kod?


Pa, napisao sam da imaju. U čemu je problem? Izgleda da ne čitaš najbolje moje poruke.

Citat:
jablan: Nego veb aplikaciju koja nema nikakvih zahteva osim veb brauzera?


Priznajem da se web programiranjem nisam bavio, ali ne i da me mrzi da učim šta je potrebno. Koliko znam, da bi web aplikacija radila offline, potrebno je osim operativnog sistema imati web čitač i web server, a u ovom slučaju i PHP interpreter. Dakle, sa jedne strane imam kao zahtev samo operativni sistem, a u drugom operativni sistem (ok, uz njega ide web čitač), apache i php. Pa, koji su zahtevi manji? Treba li da obesim aplikaciju na sourceforge i da običnom korisniku koji ne zna ni za PHP ni za apache, da objašnjavam da prvo treba njih da instalira, pa da onda moju aplikaciju koristi kroz web čitač, umesto da mu okačim jedan setup.exe i onda next->next->finish, dobije ikonu na desktopu i koristi aplikaciju na način na koji je navikao bez ikakvih objašnjenja?

I drugo, kada instaliraš Code::Blocks, on se ne kosi nisačim, a za apache nisam siguran da može da radi paralelno sa nekim drugim web serverom. Šta ako korisnik koristi neki drugi web server za nešto drugo? Treba jedna web aplikacija da mu traži ovaj web server, a druga aplikacija neki drugi. Podvlačim, u ove teme već nisam upućen, već govorim otprilike, ali koliko sam zasad upućen, tako je.

Za xampp znam. Koristio sam ga za vežbu MySQL-a.
[ Nedeljko @ 08.08.2008. 22:56 ] @
@Shadowed

Ma, naravno da si u pravu. Ono što sam rekao je poluzezanje, mada ipak polu. Ako je nešto open source, naravno da svako može da menja i dodaje nove mogućnosti pod istom licencom.
[ risp73 @ 10.08.2008. 13:10 ] @
Evo kako se to računalo u vrijeme ZX-81
[att_img]
[ holodoc @ 10.08.2008. 14:08 ] @
Samo što lepo piše da je program proveren da radi ispravno za 1938. godinu kao i godine od 1968. do 1991.
[ Nedeljko @ 11.08.2008. 12:54 ] @
Ako nekome smeta sto taj algoritam ima ogranicenja, evo jednog koji navodno vazi za Katolicku Crkvu od 1583 godine.

http://en.wikipedia.org/wiki/C....2FButcher_Gregorian_algorithm
[ risp73 @ 12.08.2008. 15:51 ] @
Citat:
holodoc: Samo što lepo piše da je program proveren da radi ispravno za 1938. godinu kao i godine od 1968. do 1991. :)

Da ne zbuniš one koji ne znaju njemački, u tekstu piše da program radi za bilo koju godinu ali da u redakciji nisu imali više podatke za testiranje. Na tebi je da li ćeš ili nećeš vjerovati autoru, prisjeti se ipak da li si ikad vidio sličan algoritam koji je testirana baš za svaku godinu.

Evo detaljnijeg prevoda:
G. Papendieck iz Hamburga nam je poslao svoj program koji izračunava datuma u koji pada Vaskrs u bilo kojoj željenoj godini. Program radi apsolutni tačno i testiran je za 1939. godinu i godine od 1968. do 1991. Nažalost, ostali datumi u koje pada Vaskrs nam nisu bili na raspolaganju.
[ Nedeljko @ 12.08.2008. 19:41 ] @
Dao sam link na algoritam za računanje zapadnog Uskrsa bez ograničenja, pa se može testiratikoliko se ta dva algoritma poklapaju.
[ holodoc @ 19.08.2008. 14:05 ] @
A da... Epilog... Aplikacija je gotova a detaljnije informacije sa linkovima možete naći ako posetite sledeći link:http://csl.tfc.kg.ac.yu/forum/index.php?topic=87.msg279#msg279

NAPOMENA: Pošto je u pitanju zatvoreni sistem potrebno je da se logujete (korisničko ime i lozinka su gost).
[ Laki123 @ 25.08.2008. 12:57 ] @
Na stranici
http://www.serbianunity.net/spc/kalendar.html
ima još jedan večiti pravoslavni kalendar.

Inače i ja sam još 2002. hteo da napravim kalendar, ali sam na kraju ipak odustao, tj. završio sam program ali sam shvatio da neke datume pogrešno računa.
Ne sećam se baš tačno koji su praznici bili u pitanju, ali imam zapisano da su problematični bili 22.2 (odanije sretenja), 13.8 (gospojinske poklade), 27.11. (božićne poklade). Ovi praznici nisu padali uvek na taj dan, ali nisam uspeo da shvatim od čega zavise (neki zavise od uskrsa, neki od božića, a za ove ne znam), posle sam video da se još neki datumi ne slažu, pa sam na kraju odustao od svega
Inače ista je bila ideja, da se u bazi čuvaju svi nepokretni praznici, i to po starom tj, julijanskom kalendaru, pa se za novi kalendar dodaje 13 dana, a kad se izračunaju pokretni praznici, oni se dodaju umesto nepokretnih.
[ Nedeljko @ 28.08.2008. 08:58 ] @
Jel bi mogao da mi u ovom vecitom kalendaru pronadjes gregorijanske datume tih praznika za 2008. godinu?
[ Laki123 @ 28.08.2008. 11:49 ] @
Citat:
Nedeljko: Jel bi mogao da mi u ovom vecitom kalendaru pronadjes gregorijanske datume tih praznika za 2008. godinu?

Ne znam na koje datume misliš, ove za koje imam zapisano sam naveo, a za ostale se ne sećam. Inače uporedio sam ovaj kalendar, sa kalendarom na stanici http://www.serbianunity.net/spc/kalendar.html za datum kad pada Odanije Sretenja npr. za 2008. kod serbianunity je 19feb, kod ovog kalendara je 20feb, a u papirnom izdanju crkvenog kalendara stoji da je 22.feb
[ Nedeljko @ 29.08.2008. 13:15 ] @
Zasto uopste mislis da su ti praznici pokretni?
[ holodoc @ 29.08.2008. 16:23 ] @
Pomenuti praznik je nepokretan i pada tačno u dan koji je naveden u mom kalendaru tako da mi nije jasno kako može da postoji razlika između mog kalendara i crkvenog papirnog izdanja. Nažalost nemam primerak da uporedim trenutno.
[ Laki123 @ 29.08.2008. 18:27 ] @
Citat:
Nedeljko: Zasto uopste mislis da su ti praznici pokretni?

Dobro pitanje

Kao što već rekoh, davno sam to radio i ne sećam se.
Znam da sam upoređivao papirna izdanja crkvenog kalendara za više godina, i dolazilo je do nekih nelogičnosti, tj. do nepoklapanja. Ne znam da li je ista stvar bila za sva 3 praznika, ali sam sebi to bio zapisao da je greška u programu.
[ deysun @ 03.10.2008. 14:15 ] @
Ja bih voleo da vidim nešto jednostavnije i univerzalnije od samo windows aplikacije.
Recimo iCal format koji je prihvatila i mozilla a može da se koristi i na native Apple iCal:
http://www.mozilla.org/projects/calendar/
http://www.apple.com/downloads/macosx/calendars/

Pošto sam pretražio net i iznenadio se da u tom formatu ima svakakvih kalendara i za utakmice i crkvenih svih religija, samo nema srpskog-pravoslavnog a rado bih ga ubacio u iCal.
[ Nedeljko @ 05.10.2008. 11:28 ] @
I šta se na kraju može raditi sa tim fajlovima? Jel se uvoze u Sunbird. Upravo skidam taj program da vidim kakav je. Ako bude zainteresovanih možda bih napravio jedan cross-platform program (koji bi bio testiran na pod Windows i Linux sistemima, a ako se nađe neko ko ima "jabuku" da se iskompajlira i za njih) pod GPL kompatibilnim uslovima, koji bi imao 100% cross-platform pluginove (svaki plugin radi svuda, bez odvojenih verzija za različite OS-eve). Za početak bi plugin-ovi opisivali prevode na razne jezike i praznike. No, kakve bi mogućnosti takav program trebao da ima? Kakvo je stanje tržištu?
[ dbabic @ 21.12.2011. 15:20 ] @
Pozdrav Nedeljko.

Procitao sam detaljno sve postove na ovu temu i opet mi ponesto nije jasno. Imam dva pitanja i izvor problema kod oba su prestupne godine:
1. Ti si u svom postu rekao: "Reformisani kalendar se koristi (tamo gde je prihvaćen) samo za nepokretne praznike i one koji se vezuju za njih.". Nisam siguran da ovo vazi i za prestupnu godinu, naime "Sveti mucenici Pamfil, Porfirije i drugih 12 mucenika" 2011. godine pada 1. marta a 2012.-te 29. februara. Do isteka februara po reformisanom kalendaru svi praznici su pomereni za 1 dan, a po starom su kako treba.
Dakle ipak bi bilo preciznije reci da se i za nepokretne praznike koristi stari kalendar? (ili sam ja mozda nesto propustio)

2. Drugo pitanje se odnosi na poslednji dan prestupne godine -"Prepodobni Jovan Kasijan". Da li se on slavi samo prestupne godine (svake cetvrte godine), posto ga ni u jednom kalendaru regularne godine nisam pronašao?
[ Nedeljko @ 21.12.2011. 17:04 ] @
Sveti Nikola se ne slavi 19 decembra, već 6 decembra po službenom crkvenom kalendaru. Trenutno je službeni kalendar Srpske pravoslavne crkve julijanski i Nikoljdan se slavi 6 decembra po njemu, a to u XX i XXI veku pada 19 decembra po gregorijanskom kalendaru, koji je službeni državni kalendar u Srbiji kao i u najvećem broju zemalja u svetu.

Isto tako, praznik "Sveti mučenici Pamfil, Porfije i drugih 12 mučenika" se slave 16 februara po službenom crkvenom kalendaru, a to kod nas za sada pada 1 marta proste odnosno 29 februara prestupne godine po državnom kalendaru. Praznik "Prepodobni Jovan Kasijan" se slavi 29 februara po službenom crkvenom kalendaru, pa ga zato ima samo u prestupnim godinama.

Srpska pravoslavna crkva za razliku od na primer Bugarske pravoslavne crkve nije reformisala kalendar, tako da koristi julijanski kalendar u celini, dok Bugarska pravoslavna crkva koristi julijanski kalendar za praznovanje Uskrsa i svih praznika vezanih za njega, a reformisani julijanski kalendar za sve ostale praznike.