Повторяющиеся задачи без RRULE: мой опыт реализации в своём таск-трекере

Повторяющиеся задачи кажутся базовой функцией любого таск-трекера, но мне пришлось их реализовывать с нуля в уже работающем проекте с десятками тысяч пользователей. У меня был выбор: внедрять тяжелый стандарт RRULE или писать свой велосипед? Для своего трекера задач в Telegram «OK, Bob!» я выбрал второй путь. В статье рассказываю про подход «буферизированной материализации»: как хранить бесконечные серии в MongoDB, не убивая базу, зачем нужно «скользящее окно» генерации и почему работа с таймзонами сложнее, чем просто хранение в UTC. Разбор архитектуры, кода и неочевидных UX-компромиссов.

https://habr.com/ru/articles/986794/

#тасктрекер #таскменеджер #повторяющиеся_задачи #nestjs #agenda #rrule #dayjs

Повторяющиеся задачи без RRULE: мой опыт реализации в своём таск-трекере

Привет, Хабр! Меня зовут Макс Панфилов, я предприниматель и развиваю «OK, Bob!» — таск‑трекер внутри Telegram: задачи, напоминания, календарь и работа в группах. Пользоваться можно через бота с ИИ,...

Хабр

Very sus 🤔

Wouldn't "Invalid Date" be different in another language in the browser?

#JavaScript #dayjs

Me encanta trabajar con day.js para manipular fechas, parsear, hacer búsquedas u obtener tiempos relativos.
Por ejemplo, necesitaba obtener el día 1 del mes anterior: A la fecha actual (`dayjs()`), quito un mes (`subtract(1, 'month')`) y después voy al inicio del mes (`startOf('month')`).
Funcional y elegante.
Documentación: https://day.js.org/
#javascript #dayjs
Day.js · 2kB JavaScript date utility library

2kB JavaScript date utility library

[javascript] カラフルなconsole.log - Qiita

はじめに普段、一面の白いconsole.logを見て、イライラしたり、重要な情報を一目で見つけるのが難しいと感じたことはありませんか?今日は、console.logをカラフルに変える方法を皆さんに…

Qiita