问题标签 [recurring-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
684 浏览

cron - 重复事件,如何存储?

我发现了一些关于经常性事件的问题,但我还没有进入一个接近我需要的问题。我正在努力了解如何处理通知系统的重复事件。

到目前为止,我知道两种选择:

  1. 存储具有模式的单个事件并动态计算任何未来事件(例如永远重复等)。使用 cron 模式甚至更好的 RRULE 东西。

  2. 将所有未来事件存储为单个事件,直到某个日期。

我对选项 1 的问题是我需要我的事件来保存一些其他数据,例如确认,如果我有重复事件,我可能需要为每个重复事件保存多个确认。这变成了一个令人讨厌的黑客来使事情正常进行,我什至不想考虑如何处理显示与其他数据相关联的过去和未来事件。

选项 2 更好,因为即使在单个事件中我也可以存储与每个相关的所有额外数据。问题在于处理未来事件。首先,如果事件永远重复,那么我应该存储多少事件。如果用户想要显示尚未生成的未来事件,我是否只是做块并即时生成?这个选项也感觉像一个黑客。

到目前为止,我已经阅读了一些关于 RRULE 的内容,发现我可以将 rrule.js 用于前端,将其他一些包用于后端。

编辑 1:为了更好地澄清,我没有完全准备好使用完整的 iCal 格式标准,我想只使用 RRules。但是,我可能会改变主意,因为我仍在寻找选择。

iCal Vevents 和 rrules 应该如何存储在数据库中?

0 投票
1 回答
44 浏览

c# - 是否有一种规范的方法来存储数据以帮助计算下一次重复操作应该发生的时间?

我正在编写一个实用程序来配置何时自动生成某些报告。

下一部分将是一些后台任务(可能是 Windows 服务),它将轮询数据库以了解何时执行这些重复操作。我想出了这个最初的表格设计:

......但很快意识到“RunWhen”不会削减番茄酱,因为给定的报告需要为给定的成员运行多次(一旦运行,该值不再有效/有用)。

不过,在展示下一个候选表设计之前,先说一下何时可以完成这些报告(生成并通过电子邮件发送):配置者可以将它们设置为在每个月的特定日期(1 日、10 日、17 日)运行,无论如何)或根据模式,即它们可以设置为“每个月的第一个星期二”或“每个月的最后一个星期五”或“每周的第一个星期一”(IOW,每个星期一)。所以我想出了这个:

...但随后意识到这也没有多大意义,因为每次轮询数据库时,都必须运行代码来计算是否已达到或超过等于 DayOfMonth 或 Pattern 字段组合的任何日期. 然后什么会阻止它在那之后永远触发呢?

所以,我认为我需要结合这些想法,但不是 RunWhen,而是调用 DateTime 字段 NextExecution,并在每次为给定成员生成报告时更新它:

当达到或超过 NextExecution 时间时,服务会生成/通过电子邮件发送报告。然后它计算下一次执行的时间(基于 DayOfMonth 或 Pattern* 字段)并使用该值更新 NextExecution 字段。

这对我来说似乎是合乎逻辑的,但我确信这是一个以前遇到过的挑战,并且想知道是否有一种标准的方法来完成这个可能比我提出的更干净。

0 投票
1 回答
3302 浏览

python - 为重复事件安排提醒

我正在使用一个 Web 应用程序,它允许用户在日历上创建事件(一次性或重复),并且在事件开始前不久,系统将通知其参与者。我在设计此类通知的流程时遇到了麻烦,尤其是对于重复发生的事件。

需要考虑的事项:

  1. Web 应用程序的体系结构使得有许多相同结构的数据库,每个数据库都有自己的一组用户和事件。因此,针对一个数据库的任何查询都需要针对数千个其他数据库进行。
  2. 重复事件可能具有排除日期(类似于 RRULE 和 EXDATE 组合)。

  3. 用户可以更新事件的时间/重复规则。

  4. 该应用程序是用 Python 编写的,并且已经使用带有 Redis 代理的 Celery 3.1。使用此设置的解决方案会很好,尽管任何事情都可以。根据我的发现,目前很难用 Celery 动态添加周期性任务。

我正在尝试的解决方案:

  • 定期任务每天运行一次,扫描每个数据库并添加任务以在适当的时间对当天重复发生的每个事件进行通知。

  • 如上生成的每个任务都有其 id 临时保存在 Redis 中。如果用户在其通知任务安排后更改了当天的事件时间,该任务将被撤销并替换为新的。

上述解决方案的示例代码:

  • tasks.py中,要运行的所有任务:

    /li>
  • event.py

    /li>
  • 芹菜设置文件:

    /li>

上述的一些缺点是:

  • 日常任务可能需要很长时间才能运行。最后处理的数据库中的事件必须等待并且可能会丢失。提前安排该任务(例如,第二天前 2 小时)可能会缓解这种情况,但是第一次运行设置(或在服务器重新启动之后)有点尴尬。

  • 必须注意不要为同一事件安排两次通知任务(例如,因为 create_notify_task 每天运行一次以上......)。

有没有更明智的方法来解决这个问题?

相关问题:

0 投票
2 回答
76 浏览

sql - 存储不经常更改的每月重复数据的有效方法?

我正在尝试找到一种有效的方法来存储不经常更改的每月重复数据。

基金每月将有一份新的情况说明书。
每个 Factsheet 都有一个目标(假设文本很长)。
目标可能每个月都会更改,但不会频繁更改(例如,每约 10 个月更改一次)。

任何存储目标的好方法?

选项1:

将目标放入模型 Factsheet 中,它会重复很多。
(将 12 个目标存储 12 个月,但其中大部分可能完全相同)

选项 2:

以目标为模型,然后为基金has_many :objectives

目标将有一栏:effective_on表明:基金应从哪个月开始在其概况介绍中使用此目标记录。
(如果只更改一次,则将 2 个目标存储 12 个月)

选项 3:

更好的主意?

0 投票
1 回答
1848 浏览

ios - iOS 定期闹钟应用 - Swift

我需要向我的应用程序添加一项功能,以允许创建一次性或重复的警报/事件。

有许多教程概述了简单地创建警报应用程序的基本要素,但还没有看到演示如何创建重复警报的教程。

股票应用程序具有此功能,是否可以复制并添加到应用程序中?或者可能是现成的源代码?

更新

我需要允许重复给定一周中的几天,即。在周一、周三和周四重复此警报。不只是每小时、每天、每周……等等

0 投票
2 回答
133 浏览

fullcalendar - Fullcalendar:在重复发生的事件中,我不想显示某些日期

我正在使用 fullcalendar 作为预订议程。我使用重复事件来显示医生的定期可用性。

尽管医生可能仅在特定日期不可用,但会发生这种情况:

示例:Smith 博士每周一从 1000 到 1800 工作,但只有下周一不能上班。

全日历中的重复事件允许显示特定日期范围内的事件。但是如何做到相反(除了在特定日期范围内总是显示)?

你们中有人有这个问题吗?

谢谢你的帮助!

0 投票
0 回答
750 浏览

python - 如何在 Python 中处理循环事件生存分析(计数过程方法)

我正在尝试找到一种方法来为 Python 中的重复事件建模生存模型,尤其是使用 CoxPH 的计数过程方法。在计数过程方法中,它期望开始时间和停止时间。但是 CoxPHFitter 在生命线中的拟合方法只需要一个持续时间列作为时间。我在 Python 中找不到任何替代方法来处理相同的问题。

有人可以提供任何解决方案/指针来处理 Python 中的经常性事件生存分析。

我知道 R 中的 survrec,但我需要在 python 中找到一种方法

提前致谢

0 投票
3 回答
1357 浏览

c# - DDay Ical 库是否正确计算重复规则?

我已经进行了一些测试。这是我的代码:


结果如下:

10 次出现 - 这是出现的 Period.StartTime.Value 和 UTC 属性

- 2015 年 9 月 8 日 10:30:00 - UTC 2015 年 9 月 8 日17:30:00
- 2015 年 9 月 15 日 10:30:00 - UTC 2015 年 9 月 15 日17:30:00
- 2015 年 9 月 22 日10:30:00 - UTC 2015 年 9 月 22 日17:30:00
- 2015 年 9 月 29 日 10:30:00 - UTC 2015 年 9 月 29 日17:30:00
- 10/ 2015 年 6 月 10:30:00 - UTC 2015 年 10 月 6 日17:30:00
- 2015 年 10 月 13 日 10:30:00 - UTC 2015 年 10 月 13 日17:30:00
- 10/20/ 2015 年 10:30:00 - UTC 2015 年 10 月 20 日17:30:00
- 2015 年 10 月 27 日 10:30:00 - UTC 2015 年 10 月 27 日17:30:00
-11/3/2015 10:30:00 - UTC 11/3/2015 17:30:00 (这应该是 18:30:00!)
- 11/10/2015 10:30:00 - UTC 11/ 10/2015 17:30:00 (这应该是 18:30:00!)

在此处输入图像描述

如您所见,最后两个的 UTC 时间应为 18:30:00。所以我想知道这是否只是 DDay Ical 的工作方式,我不应该指望它让 UTC 日期时间正确,或者我做错了什么。

0 投票
2 回答
367 浏览

c++ - C++ 为 init 静态成员设计,任何时候都需要

我正在用Android NDK和opengl es 2.0为Android开发一个小游戏引擎,最近项目变大了,我需要重构一些代码,我找不到下一个问题的合适设计模式。

在 android 上,当应用程序达到 OnPause() 状态时,opengl 上下文被销毁,但 java 和 c++ 中的变量和对象的状态保持不变。所以每次播放器暂停并恢复应用程序时,我都必须重新初始化 opengl 部分、缓冲区、着色器、顶点等。

我有像“Square”这样制作“方形对象”的类,每个都有自己的属性,并且每个“方形对象”都可以绘制,因此方形可以访问使用的类的静态(opengl)成员被正确渲染。所以这个静态成员必须在绘制对象之前初始化,我在创建或重新创建opengl上下文时这样做。

此外,每个类都有自己的opengl属性,所以每个类都用自己的参数单独初始化,所以我想要一个设计,每个类可以设置一些初始参数,传递或捕获这些参数来初始化类的静态成员(我忘了说这些参数是私有的)。但正如我之前所说,每次应用程序恢复时都需要重新初始化这些参数。

目前我像这样单独初始化这些成员

我想写一些类似的东西

所以我想为类设置一些(静态/硬编码)变量,然后在创建 opengl 上下文时,以“魔术”方式初始化该类,并且不需要为每个调用编写一个 init 方法班级。

我尝试使用继承,但问题是我需要初始化类而不是对象,还尝试实现一个静态对象并在 cpp 文件中初始化该对象,并将指向该对象的指针存储在向量中这是在他的构造器中创建的,在对象自己的类中的向量中,但是这种设计给我带来了很多问题。

有谁知道一些可以帮助我的设计?

编辑:我的班级结构

init()函数非常大,因为shader参数frag是路径文件,我对它们执行一些任务,将执行的结果传递给 opengl 并返回我一个ID程序静态变量,所有带有 opengl 部分的类都实现了相同的过程,参数camera只是将它附加到相机中

也许我想要的一些结构是

0 投票
1 回答
175 浏览

android - Android google calendar deleting future instances of recurring event

I'm trying to delete future instances of a google calendar recurring (repeated) event pro-grammatically using content resolver.

And to do this i have updated the rRule of the event , so for example if want to delete future instances of an event starting from date 11/11/2016 i edit the rRule string to look like so:

However , when viewing google calendar application i find no changes and i find the event color only has changed to black color.

Some notes to keep in mind:

1- I'm using a third party library to so : https://github.com/EverythingMe/easy-content-providers

and all functionalities in this library seem to work fine.

2- While reading pro-grammatically recurring events that have a specific UNTIL date in it's rRule , i have realized that also a field in the google event called "lastDate" is updated with one hour later after the UNTIL value ,so do i have to update also this field while updating the UNTIL value in the rRule?