问题标签 [recurrence]

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 投票
2 回答
758 浏览

outlook - 在为事件实施 ICalendar 导出时应针对哪些客户?

http://en.wikipedia.org/wiki/ICalendar

我正在努力实现事件的导出功能。上面的链接列出了大量支持 ICalendar 标准的客户端,但我可以看到的“三大客户端”是 Apple 的 iCal、Microsoft 的 Outlook 和 Google 的 Gmail。

我开始感觉到这些客户端中的每一个都实现了“标准”的不同部分,并且我不确定我们应该尝试从应用程序中导出哪些信息,以便有人可以将其放在他们的日历上(尤其是在复发前后)。

例如,据我了解,Outlook 不支持每小时重复。

你们中的任何人都可以从功能实现的角度提供“快乐媒体”的指导吗?

第二个问题,如果我们决定从导出中删除功能(例如每小时重复),因为 Outlook 不支持它,我们是否应该在应用程序中也支持它?(它是一个通用的事件调度应用程序,没有考虑特定的业务用途......所以我们真的在寻找快乐的媒介)。

0 投票
17 回答
67989 浏览

ruby - 在日历应用程序中模拟重复事件的最佳方法是什么?

我正在构建一个需要支持重复事件的组日历应用程序,但是我想出的处理这些事件的所有解决方案似乎都是一个 hack。我可以限制一个人可以看多远,然后一次生成所有事件。或者,我可以将事件存储为重复事件并在日历上向前看时动态显示它们,但如果有人想要更改事件的特定实例的详细信息,我必须将它们转换为正常事件。

我确信有更好的方法可以做到这一点,但我还没有找到。对重复事件建模的最佳方法是什么,您可以在其中更改或删除特定事件实例的详细信息?

(我正在使用 Ruby,但请不要让这限制了你的答案。如果有特定于 Ruby 的库或其他东西,那么很高兴知道。)

0 投票
5 回答
9559 浏览

recursion - 如何使用 Master theorem 来描述递归?

最近一直在研究递归;怎么写,怎么分析等等。我一直认为递归和递归是一回事,但是最近的家庭作业和测验中的一些问题让我觉得有细微的差别,“递归”是一种方法描述递归程序或函数。

直到最近,这对我来说都是非常希腊化的,当我意识到有一种叫做“主定理”的东西用来写问题或程序的“递归”时。我一直在阅读维基百科页面,但是,像往常一样,事情的措辞让我真的不明白它在说什么。我通过例子学得更好。

所以,有几个问题:假设你得到了这个重复:

r(n) = 2*r(n-2) + r(n-1);
r(1) = r(2) = 1

这实际上是主定理的形式吗?如果是这样,用语言来说,它在说什么?如果你想写一个小程序或基于这种递归的递归树,那会是什么样子?我是否应该尝试替换数字,查看模式,然后编写可以递归创建该模式的伪代码,或者,因为这可能是主定理的形式,是否有更直接的数学方法?

现在,假设您被要求为从前一次重复创建的程序执行的加法次数查找重复次数 T(n)。我可以看到基本情况可能是 T(1) = T(2) = 0,但我不确定从那里去哪里。

基本上,我问的是如何从给定的重复到代码,反之亦然。由于这看起来像主定理,我想知道是否有一种直接和数学的方法来解决它。

编辑:好的,我已经查看了我过去的一些作业,以找到另一个我被问到的例子,“寻找复发”,这是这个问题的一部分,我在帖子中遇到了麻烦。

以最佳方式描述以下程序片段中加法运算次数的递归(当使用 l == 1 和 r == n 调用时)

0 投票
2 回答
5196 浏览

sql - Fowler 时间表达式的关系模式

Martin Fowler在这里定义了一个优雅的对象模型来调度重复任务,它很好地映射到 OO 代码。然而,将其映射到关系数据库模式以实现持久性是很棘手的。

任何人都可以建议一个模式 + SQL 组合来封装他描述的所有功能,特别是在第 11 页的图像中。相交和联合相当明显 - 复杂性在于表示“时间表达式”,它采用可变参数并且必须被解释不同,然后将它们组合成一个“时间集”。

需要明确的是,有很多方法可以表示关系数据库中重复事件的概念。我希望每个人的意见是如何映射这个特定的模型。

一些可能的选择:

  • 定义参数数量和使用的“元”表。丑陋,但可能有效。但是,“时间表达”形式的数量可能有限,因此它提供的极端灵活性可能太多了。
  • Postgres(可能还有其他)RBMS 支持的某种形式的表继承。

序列化参数列表并将结果存储在 varchar() 中不是解决方案,因为该方法可以防止基于集合的查询:)

0 投票
3 回答
375 浏览

.net - 指定重复作业或任务的执行时间的最佳方法是什么?

我正在寻找一种有效指定重复作业执行时间的方法,而无需将显式执行时间写入数据存储。换句话说,与其说“作业 x 下一个在 11.12.08 下午 13:00 运行”,然后必须在作业运行后更新下一周的执行时间,我希望能够说“作业 x 在每个星期四下午 13 点”。我需要能够指定从几分钟到每月一次的任何重复范围。我的猜测是复发期越短,这就越困难。有任何想法吗?

注意:我不是在寻找有关调度机制的建议。我无法使用 Windows 调度程序、Cron 或创建 Windows 服务(我别无选择,只能在 ASP.NET 中使用后台线程)。

0 投票
7 回答
2977 浏览

time - 您将如何存储可能的重复时间?

我需要存储某事是否发生一次,每天,工作日,每周,一周中的某些天,一个月中的某些天,这可能是数字或符号,例如每个月的第一个星期一,等等。

有什么建议吗?有什么要查看的代码、数据结构或架构吗?

0 投票
3 回答
5317 浏览

java - 什么是最好的 java 日期重复模式计算器

任何人都知道(可靠的)日期重复计算器,我们正在尝试在我们的应用程序中实现一些允许创建时间表的东西,类似于 Outlook 中的重复会议。我们已经尝试过 chronos,但发现了一些它崩溃的情况,如果有人成功使用了其他任何选项,我真的很感激。

干杯,罗宾

0 投票
3 回答
4592 浏览

calendar - 重复规则定义 (RFC2445) 问题

我正在使用 Google 的 RFC2445 实现 ( http://code.google.com/p/google-rfc-2445/ ) 作为重复规则。如果我从 1 月 30 日开始定义 MONTHLY 重复,则将完全跳过少于 30 天的月份(即 2 月)。所以谷歌 API 会在 1 月 30 日、3 月 30 日、4 月 30 日等返回。不好。我希望它会返回:1 月 30 日、2 月 28 日、3 月 30 日、4 月 30 日。

同样,如果我选择 1 月 31 日作为开始日期,那么任何少于 31 天的月份都将被跳过。

根据 RFC2445 规范,这可能是正确的,也可能是错误。你怎么看?

我的主要问题是,有没有办法定义一条规则,上面写着“每月 30 日重复;如果 30 日不存在,则为每月的最后一天”。我不相信有。有什么建议么?

提前致谢。

问候, 科马克

0 投票
1 回答
4492 浏览

php - PHP 日历重复逻辑

我知道已经有一百万个项目已经做到了这一点。话虽如此,我想做的是使用 PHP & MySQL 创建一个在线日历,这就是我的计划:

  1. 数据库中的表

    /li>
  2. 基本流程,从数据库中拉取所有记录 INNER JOIN calendar_item 和 calendar_item_exception ON id/calendar_item_id

  3. 首先查看今天的日期是否有异常,然后打印那里的任何内容……如果没有任何内容移动到 calendar_item。

到目前为止,这一切在我的脑海中都是完全合理的。我想知道从这里到哪里添加recurrence_id的实际逻辑以及如何实现它:

即项目在 __date recurs (recurrence_id) 每天 (qty) 5x (interval) 每 3 天 (join_calendar_day) 周一、周三、周五

我已经看过 ical 格式,并且看过 PEAR,但老实说,我无法在脑海中掌握下一步来制作异常(我真的希望在不使用其他框架的情况下发生这种情况,最好只使用 PHP 和 MySQL)。

为了进一步澄清我的问题,我正在寻找现实世界的例子,而不是抽象的原则;我不是程序员,所以我必须看到一些有效的东西,这样我才能剖析它来理解它。

没有 PEAR,没有 Ruby,没有 Horde,没有其他框架,只有 PHP 和 MySQL,请尽可能简单。

0 投票
4 回答
1737 浏览

ruby - 检测重复事件中的冲突

我正在编写一个日历应用程序,它需要检查重复条目之间的冲突。每个Entry 对象都有一个recurrences() 方法,该方法返回一个范围数组——每个范围包含每个未来事件的开始和结束时间。

我需要检查新条目和现有条目之间的冲突。我通过检查新条目的未来出现与现有条目的未来出现没有冲突来做到这一点:

resumes() 默认返回开始时间和开始时间 + 1 年之间的所有事件

问题是这种方法效率不高。仅比较两个条目,每个条目在 1 年内每天重复一次,导致 365 * 365 次比较(在我的机器上需要 4 秒以上)。可能有任意数量的现有条目可以与新条目进行比较,因此我现在拥有的方法是无用的。

我没有计算机科学或数学背景,但我一直在阅读各种关于算法的教科书,但我一直无法找到优化方法的方法。还有其他人有什么想法吗?

谢谢

戴夫