Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

رویدادهای نسبی #8

Open
okian opened this issue Sep 28, 2019 · 28 comments
Open

رویدادهای نسبی #8

okian opened this issue Sep 28, 2019 · 28 comments
Labels
help wanted نیازمند کمک
Milestone

Comments

@okian
Copy link
Contributor

okian commented Sep 28, 2019

بعضی رویدادها نسبی هستند مثلا روز قدس (آخرین جمعه ماه رمضان) یا چهارشنبه سوری (غروبِ سه‌شنبه، شبِ پیش از آخرین چهارشنبهٔ ماه اسفند) که البته من به غیر از این دو در تقویم‌های این منطقه مورد دیگری سراغ ندارم ولی در باقی تقویم‌ها مورد مشابه زیاد هست مثل:
Thanks giving, Black friday
سوال این هست که این موارد چطور باید هندل بشه؟

@fzerorubigd fzerorubigd added the help wanted نیازمند کمک label Sep 29, 2019
@fzerorubigd
Copy link
Collaborator

بله، قطعا باید یه روش برای این در نظر بگیریم که احتمالا به تعریف یک نو مشخص رویداد ختم میشه. ولی فعلا ایده‌آی ندارم.

@fzerorubigd
Copy link
Collaborator

این ایشو اهمیت بالایی پیدا کرده الان و بهتره هر چه زودتر یه فکری براش بشه .

@fzerorubigd fzerorubigd added this to the نسخه ۱ milestone Oct 9, 2019
@hramezani
Copy link
Contributor

میتونیم واسه هر ماه یه کلید
relative_events
داشته باشیم کنار ایونت ها و این رویداد ها رو اونجا بزنیم
احتمالا این ایونت ها دیگه کلید روز نخواهند داشت
و تو توضیحات میشه گفت که اولین دوشنبه ماه یا آخرین چهارشنبه

@okian
Copy link
Contributor Author

okian commented Oct 9, 2019

@hramezani
باید قابل محاسبه باشه.

@fzerorubigd
Copy link
Collaborator

fzerorubigd commented Oct 9, 2019

مساله اینه که توضیحات صرفا یه چیزیه که قرار نیست کسی روش پردازشی انجام بده.

این حالتها رو من یادم میاد : دوشنبه منظور یه روز عمومی هفتست

هفته اول، دوم و سوم و آخر ماه
اولین دوشنبه ، دومین دوشنبه، سومین دوشنبه - آخرین دوشنبه ماه
اولین دوشنبه سال - آخرین دوشنبه سال
اولین هفته سال، آخرین هفته سال
دهه اول محرم

@fzerorubigd
Copy link
Collaborator

حالت دیگه ای کسی به ذهنش نمیرسه؟ همش همیناست؟

@hramezani
Copy link
Contributor

من حالت دیگه ای رو یادم نمیاد

@sbabashahi
Copy link
Member

حالت دیگه میشه چند سال یکبار
20 October (every five years, beginning in 2010)
World Statistics Day

@okian
Copy link
Contributor Author

okian commented Oct 9, 2019

من فعلا دو راه به نظرم میرسه:
اول- تا یک تاریخی مثلا ۱۰۰ سال آینده رو اطلاعات رو جمع کنیم و داخل یک آرایه قرار بدیم. که این روش رو اصلا دوست ندارم
دوم- یک سینتکس طراحی کنیم برای محاسبه این موارد٬ چیزی شبیه
crontab
مشکل روش دوم این است که راهی نمیبینم که بشه روش کوئری زد

@fzerorubigd
Copy link
Collaborator

کرون تب زیادی «لینوکسی» پسنده. شاید بعضیا بگن گیکی.
من پیشنهادم اینه یه مدل تعریف شه این شکلی :

# last monday in year
condition:
  - type: weekday
    parameter: Monday  
    span: year
    pattern: last
--- 

# first week of the month
condition:
  - type: week
    span: month
    pattern: first

----
# last friday of the month
condition:
  - type: weekday
    parameter: Friday
    span: month
    pattern: last
----
# every 4 years
  - type: year
    parameter: 4

# دهه اول ماه
  - type : decade
    span: month 
    pattern: 1 # 1, 2, last 

اگه اسپن ماه باشه، باید کلید
month
رو هم داشته باشه

@amin3mej
Copy link
Contributor

amin3mej commented Oct 9, 2019

کرون تب زیادی «لینوکسی» پسنده. شاید بعضیا بگن گیکی.
من پیشنهادم اینه یه مدل تعریف شه این شکلی :

# last monday in year
condition:
  - type: weekday
    parameter: Monday  
    span: year
    pattern: last
--- 

# first week of the month
condition:
  - type: week
    span: month
    pattern: first

----
# last friday of the month
condition:
  - type: weekday
    parameter: Friday
    span: month
    pattern: last
----
# every 4 years
  - type: year
    parameter: 4

# دهه اول ماه
  - type : decade
    span: month 
    pattern: 1 # 1, 2, last 

اگه اسپن ماه باشه، باید کلید
month
رو هم داشته باشه

بنظرم دوتا ویژگی می‌تونه بیشتر داشته باشه.
۱. اون type رو بشکنیم و تبدیلش کنیم به دوتا فیلد،‌ شاید بهتر باشه. مثلا یه type رو بگیم که چند روز ممتده یا فقط یه دونه آخر ماه است یا هر دوشنبه است. و یه فیلد هم بگید که روی کدوم فیلد قصد داریم شرط اعمال بشه؛ روز یا ماه هفته.

۲. بشه and گذاشت بین شروط. اینجوری میشه در حالات خاصی که ممکنه در آینده پیش بیاد، از همین ساختار استفاده کرد.

@fzerorubigd
Copy link
Collaborator

and
رو کاملا مخالفم. همین الانشم برای کوئری این روش بد هست به اندازه کافی. یعنی نمیدونم چطور میشه رو همون ساختاری که من پیشنهاد دادم گشت :/ آینده نگری خوبه، ولی این همین الانشم بده به نظرم.

بیشتر باید طرف مقابل رو ببینی، اینکه چجوری میشه رسید به اینکه امروز این رویداد هست یا نه.

@fzerorubigd
Copy link
Collaborator

پیشنهاد خودمم مسخرست. فرض کن امروز روز ایکس از ماه ایگرگه. چجوری میشه فهمید رویداد اولی الان هست یا نه. معضل اینه که این اطلاعات باید طوری باشه که پیدا کردنش ساده باشه نه ثبت کردنش.

@okian
Copy link
Contributor Author

okian commented Oct 9, 2019

در مثلا

# every 4 years
  - type: year
    parameter: 4

شامل ۲۰۱۹ میشه یا نه؟ 😁
باید مبدا داشته باشه.
در مورد دهه هم همینطور٬ دهه فجر از ۱۲ام شروع میشه.
خوبیش اینه که تعدادشون زیاد نیست و میشه برای بیشتر دیتا‌بیس‌ها فانکشن نوشت که تاریخ بگیره و با رکوردها چک کنه بدون اینکه فشاری بیاد

@amin3mej
Copy link
Contributor

amin3mej commented Oct 9, 2019 via email

@irajtaghlidi
Copy link
Contributor

موردی که الان در حال انجام بهش برخورد کردم
1June : Global Day of Parents که در یک ناحیه روز ثابت داره و در منطقه ای دیگه رویداد نسبی هستش
Parents' Day is observed in South Korea (May 8) and in the United States (fourth Sunday of July).

@irajtaghlidi
Copy link
Contributor

موردی که الان در حال انجام بهش برخورد کردم
1June : Global Day of Parents که در یک ناحیه روز ثابت داره و در منطقه ای دیگه رویداد نسبی هستش
Parents' Day is observed in South Korea (May 8) and in the United States (fourth Sunday of July).

توضیحات وبسایت سازمان ملل میگه:
The Global Day of Parents is observed on the 1st of June every year.

ملاک چیه تو این طور موارد؟

@fzerorubigd
Copy link
Collaborator

fzerorubigd commented Oct 10, 2019 via email

@irajtaghlidi
Copy link
Contributor

به تقویم بین‌الملل هم همینطور.

پس ملاک توضیحات داخل خود وبسایت سازمان ملل. اگر تاریخ مشخص براش اعلام کردن مطابق همون وارد کنیم و اگر رویداد های نسبی داشت وارد نکنیم تا راه حلی براش پیدا کنیم.

@fzerorubigd
Copy link
Collaborator

fzerorubigd commented Oct 10, 2019 via email

@amin3mej
Copy link
Contributor

برای این ماه، تو رویداد با وضعیت نسبی وجود دارند.
اینجا می‌نویسم که بعدش زمانی #8 حل شد، این رو اصلاح کنم.

(اگه نیاز به یک ایشیو دیگه منتقل بشه، بفرمایید تا منتقل کنم.)

#140 (comment)

@fzerorubigd
Copy link
Collaborator

یه تصمیم بگیریم وببندیمش. نهایتش اینه که بعدا عوضش میکنیم. پیشنهادی کسی نداره؟

@amin3mej
Copy link
Contributor

بنظرم حتی میشه یه حالت کامپایل (کلمه‌ای شبیه با این ار لحاظ عملکردی) داشته باشه و در هر سال ما با کامپایل کردنش، تمام رویداد های سال پیشرو رو در بباریم و برای استفاده قرار بدیم. اگه هم کسی خواست، می‌تونه خودش کامپیال کنه.

@fzerorubigd نظرتون در این مورد چی بود؟

@fzerorubigd
Copy link
Collaborator

fzerorubigd commented Oct 13, 2019 via email

@amin3mej
Copy link
Contributor

اون که آره.
بعدش هر سال برای ۵ سال پیشِ رو هم کامپایل می‌کنیم که کسی خواست از اون استفاده کنه. اگه هم خواستن خودشون می‌تونن کامپایل کنن.

@fzerorubigd
Copy link
Collaborator

fzerorubigd commented Oct 13, 2019 via email

@ctyar
Copy link

ctyar commented Oct 18, 2019

از انواع دیگه رویدادهای نسبی مثل تعطیلی ۳۰ اسفند در صورتی که وجود داشته باشه است
و همینطور تعطیلی روز آخر صفر که می‌تونه ۲۹ام یا ۳۰ام باشه
نکته مهم در مورد دوم اینه که تعطیل بودن روز ۲۹ام صفر مشروط هست به این که ۳۰امی وجود داره یا نه

@ilius
Copy link

ilius commented Dec 3, 2020

این یک فایل جیسون با ساختار استارکلندر هست
که می‌توانید در استارکلندر ایمپورت/وارد کنید
با رابط گرافیکی، رویدادهایی اضافه یا ویرایش کنید
و دوباره به فایل جیسون یا آی‌کلندر صادر کنید
https://github.com/ilius/starcal-additions/blob/master/event/fa/special-events.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted نیازمند کمک
Projects
None yet
Development

No branches or pull requests

8 participants