starcalendar · 2016-09-30 · starcalendar event service starcalendar.net (redirects to github for...
TRANSCRIPT
![Page 2: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/2.jpg)
اهداف پروژه
هدف اولیه: نیاز شخصی
هه انتظارات یک کاربر ایرانی گنو/لینوکس از یک تقویم هدف نهایی: برآورده کردن هم
اهداف فرعی (دست یافته شده)
چندزبانه بودن و پشتیبانی کامل از فارسی و انگلیسی●
پشتیبانی همزمان و موازی از انواع مختلف تقویم (جللی، میلدی، قمری...)●
قابلیت اجرا در تمام توزیع های گنو/لینوکس و تمام محیطهای گرافیکی دسکتاپ●
قابلیت شخصی سازی بر اساس نیازها و سلیقه های مختلف●
۲
![Page 3: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/3.jpg)
هه توسعه تاریخچ
۳
![Page 4: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/4.jpg)
تعداد خطهای برنامه
۴
git
![Page 5: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/5.jpg)
قابلیت های آشکار و نهان
هه ● تنظیم و شخصی سازی فوق العاده از طریق پنجر
هه شخصی سازی ترجیحات و پنجر
مدیریت کامل رویدادها و قابلیت تعریف انواع رویداد●
خط زمان واقعی، پیوسته و تعاملی●
۵
![Page 6: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/6.jpg)
هه اصلی پنجر
۶
![Page 7: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/7.jpg)
ترجیحات - عمومی
Double-Clickبرای فعال/غیرفعال کردن
فقط در اوبونتوبرای جابجایی (عمودی)نشان داده می شود
سطر انتخاب شده
۷
![Page 8: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/8.jpg)
ترجیحات - ظاهر
Bad UX, huh? I know
در آینده اضافه خواهد شدThemeقابلیت انتخاب )Gtk3(بر اساس
Drag & DropColors
۸
![Page 9: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/9.jpg)
ترجیحات - افزونه ها
برای جابجاییفعال/غیرفعال کردنسطر انتخاب شده
۹
![Page 10: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/10.jpg)
ترجیحات - افزونه ها - اوقات شرعی
۱۰
![Page 11: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/11.jpg)
ترجیحات - پیشرفته
۱۱
![Page 12: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/12.jpg)
شخصی سازی
۱۲
![Page 13: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/13.jpg)
شخصی سازی ها (بصورت افقی یا widgetجابجا کردن ●
عمومی) با کلیک بر روی دکمه های بال و پایین با کلیک widgetنمایش گزینه های مربوط به هر ●
بر روی آنهه اصلی ● اعمال تغییرات بصورت آنی در پنجر
هه اعمال یا تائید وجود ندارد) (دکم
۱۳
![Page 14: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/14.jpg)
مدیریت رویدادها در تقویم گوگل)Calendarگروه رویدادها (معادل اصطل ح ●رویداد●
کار–یادداشت روزانه–کار تمام روز–رویداد هفتگی–رویداد ماهیانه–رویداد سالیانه–هه رویداد / – Event Ruleرویداد دلخواه: شامل تعدادی قاعد
نوع قاعده، که بعضی پیش نیاز بعضی دیگر هستند۲۲●هه هفته در سال، تاریخ، شروع، پایان، مدت، ● سال، ماه، روز در ماه، روز هفته، شمار
هه زمانی در روز ... ۱۴باز
![Page 15: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/15.jpg)
iCalendar was Registered in 1998 by Microsoft as RFC 2445. Used by Google calendar, Evolution, Korganizer, Apple calendar and almost every other calendar program
● Unorganized and confusing design
● Impossible to fully implement in both back-end and front-end (GUI)
● "Recurring and repeating meetings still have a bit of mystery and ambiguity associated with them. Resulting in no true interoperability between the current calendaring and scheduling vendors.", Wikipedia
Why didn't I use iCalendar?
۱۵
![Page 16: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/16.jpg)
● “Not compatible with some non-Gregorian calendars like Islamic and Hebrew calendars”, Wikipedia
● Libraries, applications and services implementing iCalendar do not support Jalali calendar
For more information:http://en.wikipedia.org/wiki/ICalendar
Why didn't I use iCalendar?
۱۶
![Page 17: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/17.jpg)
So... I decided to design my own standard
● All event rules and event types are implemented from scratch, with Python
● Full and equal support for Jalali, Gregorian and others
● Flexible, organized and extendable design
● Store revision history of events (with git-like object storage design)
● No database on client (desktop)
● Use JSON and BSON file formats– Faster than XML, designed to be read/write by machine, not by human
– JSON is plain-text (ASCII or UTF-8), editable by human
– BSON = Binary JSON, used by MongoDB
۱۷
![Page 18: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/18.jpg)
● Super-Fast Occurrence Search (by time)
– I have 10,000 events in the last 10 years
– Maximum 10 events per day
– Give me all the events in this one day range, right now! (avg < 0.01 s)
– Logarithmic (Sublinear) time: O(query_time) ~ ln(events_count)
● Small index size (in-memory)
● Fast index generating
● Data Scructure: Event Search Tree
– Invented by myself, a combination of:
● Red-Black Binary Search Tree
● Binary Heap (one for each tree node)
● Dictionary (Hash Table)
– 400 lines of code
۱۸
A little of the algorithm
![Page 19: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/19.jpg)
مدیریت رویدادها
۱۹
![Page 20: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/20.jpg)
مدیریت رویدادها
۲۰
![Page 21: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/21.jpg)
مدیریت رویدادها
به بعد، تصمیم گرفته شد تا روز آزادی نرم افزار در سومین شنبه سپتامبر جشن گرفته ۲۰۰۶از سال (منبع: ویکی پدیا: روز آزادی نرم افزار)شود.
۲۱
![Page 22: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/22.jpg)
خط زمان واقعی و پیوسته) از چند ثانیه تا چند هزار سالzoom / scaleقابلیت تغییر مقیاس (● کردن رویدادها بصورت پویا، هوشمند و سریع (با الگوریتم رنگ آمیزی گراف)renderمحاسبه و ●
کردن، کلیدهای Dragمنوی راست کلیک رویداد، جابجایی و ویرایش رویداد با رابط تعاملی: ● / فاصله، به علوه و منهاHomeراست، چپ،
۲۲
![Page 23: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/23.jpg)
مهمترین نقص برنامه
۲۳
![Page 24: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/24.jpg)
مهمترین نقص برنامه
Online ServiceSync data via
۲۴
![Page 25: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/25.jpg)
Free SaaS - The missing piece
SaaS = Software as a Service
● Google Calendar
● Google Drive / Docs
● Spotify / SoundCloud
● Online Dictionaries
۲۵
![Page 26: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/26.jpg)
اا منتشر نشده استSaaS نرم افزار سمت سرور این ● ها عموم
امکان اجرای این نرم افزارها در سرور شخصی، سازمانی، خانوادگی و... ●
وجود ندارد
اا ● باید تمام اطلعات شخصی خود را در اختیار شرکت های تجاری (عموم
خارجی) بگذاریم
آزاد بودن نرم افزار کلینت، آزادی کامل را برای ما به همراه نمی آورد●
Free SaaS - The missing piece
۲۶
![Page 27: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/27.jpg)
StarCalendar Event Service
به دلیل تمام دلیلی که در بال گفته شد، و همچنین بسته بودن
های ایران، و نبود پشتیبانی از IP بر روی Google APIسرویس
تصمیم Google Calendarتقویم جللی در سرویس هایی نظیر
هه جدیدی را شروع کنم گرفتم که پروژ
https://github.com/ilius/starcal-server
Initial commit: 2016-08-07
۲۷
![Page 28: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/28.jpg)
StarCalendar Event Service
● Language: (Google's) Go!
● Database: MongoDB
● HTTP(S) + JSON
● RESTful API (I try to!)
● License: Affero GPL● www.gnu.org/licenses/why-affero-gpl.fa.html
۲۸
![Page 29: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/29.jpg)
StarCalendar Event Service
starcalendar.net(Redirects to Github for now)
برای کاربرانی که سرور شخصی ندارندیا توان/فرصت راه اندازی این سرویس را ندارند
اما به ما اعتماد دارند :)
۲۹
![Page 30: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/30.jpg)
StarCalendar Event Service● Local Event Group (Dekstop)
● [x] Account: select from list
● Remote Group
● Select from remote groups, or
● Create new remote group
● Sync Interval (seconds)
● [x] Pull [x] Push
● [ ] Remove Local Events
● [ ] Remove Remote Events
۳۰
![Page 31: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/31.jpg)
StarCalendar Event Service
Done Register User POST /user/register/
Done Set User Full Name PUT /user/full-name/
Done Unset User Full Name DELETE /user/full-name/
Done Set User Default Group Id PUT /user/default-group-id/
Done Unset User Default Group Id DELETE /user/default-group-id/
Done Get Group List GET /event/groups/
Done Add Group POST /event/groups/
Done Update Group PUT
Done Get Group GET
Todo Delete Group DELETE
Done Get Group Event List GET
Todo Get Group Events Full Data GET
Doing Get Group's Modified Events GET
Todo Get Group's Moved Events GET
Todo Import Event Groups POST
Todo Import Events into Group POST
/event/groups/{groupId}/
/event/groups/{groupId}/
/event/groups/{groupId}/
/event/groups/{groupId}/events/
/event/groups/{groupId}/events-full/
/event/groups/{groupId}/modified-events/{dateTime}/
/event/groups/{groupId}/moved-events/{dateTime}/
/event/groups/import/
/event/groups/{groupId}/import/
۳۱
![Page 32: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/32.jpg)
StarCalendar Event Service
Done Copy Event POST
Doing Add Event POST
Doing Get Event Info GET
Doing Update Event Data PUT
Todo Delete Event DELETE
Todo Update Event Invitees PUT
Todo Change Owner of Event (Disown) PUT
Todo Move Event PUT
Todo Unset Group DELETE
Todo Get Event History GET
Todo Change Type of Event PUT
Todo Patch Event Data PATCH
Todo Export All Events and Groups GET
Todo Request to Join Event POST
Todo Leave Event POST
Todo Export Event to ICS GET
Unplanned Get Occurrences of Events in Group GET
Unplanned Get Occurrences of Event GET
/event/copy/
/event/{eventType}/
/event/{eventType}/{eventId}/
/event/{eventType}/{eventId}/
/event/{eventType}/{eventId}/
/event/{eventType}/{eventId}/access/
/event/{eventType}/{eventId}/owner/
/event/{eventType}/{eventId}/group/
/event/{eventType}/{eventId}/group/
/event/{eventType}/{eventId}/revisions/
/event/{eventType}/{eventId}/type/
/event/{eventType}/{eventId}/
/event/export/
/event/{eventType}/{eventId}/join/
/event/{eventType}/{eventId}/leave/
/event/{eventType}/{eventId}/ics/
/occur/groups/{groupId}/{startDateTime}-{endDateTime}/
/occur/{eventType}/{eventId}/{startDateTime}-{endDateTime}/
۳۲
![Page 33: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/33.jpg)
Want to Help?
We need package mantainers
for Ubuntu, Debian, openSUSE, Fedora, ArchLinux, and even Windows
For donations, visit:
paaz.ir/hamiha/product/starcalendar
Thank you!۳۳
![Page 34: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/34.jpg)
برای اخبار و نکات انتشار فارسی:
saeedgnu.blog.ir
برای گزارش باگ، درخواست قابلیتیا پرسیدن سوالت:
github.com/ilius/starcal/issues
۳۴
![Page 35: StarCalendar · 2016-09-30 · StarCalendar Event Service starcalendar.net (Redirects to Github for now) دنرادن یصخش رورس هک یناربراک یارب دنرادن](https://reader034.vdocuments.us/reader034/viewer/2022042406/5f209fd551328f791d7a216f/html5/thumbnails/35.jpg)