Не опечатался, но пытался упростить. Конечно, IO = ST #Realworld, но st монада - не математический объект. С другой стороны, её интерфейс такой же как у State и смысл тот же - контекст с get и put методами. ST - это не-персистентный State, который позволяет, например, честные массивы с О(1) inplace записью.
Да. Функции, которые не возвращают IO - чистые, то есть просто преобразовывают данные. Буквально определение чистоты - что вызов функции можно эквивалентно заменить сразу на возвращаемое значение.
Из практических соображений имеет смысл не отрицание (как в Haskell)
В Хаскеле всё красивее. Есть тривиальная монада State, которая позволяет читать и писать контекст. А Хаскельная IO, в которой крутятся эффекты - это просто State, с контекстом #RealWorld. То есть, ввод с клавиатуры, сигналы, вызовы fopen, fread, fwrite, время и прочее и прочее - это просто контекст.
Оба неправы, ФП - это не map/reduce/filter, и операторы через точку; автор пишет как раз о правильных вещах. Один из аспектов ФП - это найти в поведении данных математику и, доказав её, защититься от связанных ошибок. А ещё от ФП до ЯОП один шаг.
Также не стоит забывать что для использования функциональщины в не предназначенных для этого языках необходимо сначала написать вспомогательный код, который накладывает дополнительные расходы и может оказаться трудно поддерживаемым.
Логично, кэп, но в предназначенных языках код поддерживается гораздо легче, чем какое-нибудь DDDшное поделие.
В целом, изначальную проблему решило агрессивное использование expire везде где можно. Воркеры, которые хапали лишнего, скоро обнаруживали, что лишнее давно протухло, и не застаивались. А по итогу команда решила перекатиться на го, и селери отпал вместе с питоном.
Celery отвратительно написан. Я не знаю как называется дизайн, но его невозможно читать, и из-за обилия рефлексии по нему нельзя ходить статическими анализаторами. Мне как-то нужно было понять почему с отключенным префетчем, воркеры продолжают выгребать лишнее из редиса - я не осилил сырцы. Вывод: перспективы развития и долгосрочной поддержки сомнительны.
Всё по тем же причинам, чем {idename} не угодило - эргономика.
Не совсем понятно зачем нужен tmux. Что не так с обычными вкладками в эмуляторе терминала? Лично мое мнение tmux нужен либо при подключение к серверу либо если приходится работать под windows.
tmux много плюсов на самом деле имеет. Можно хранить большую сессию в виме (да, можно делать это плагинами), можно поставить какой-нибудь долгий шелл-скрипт и детачнуться от него.
Спасибо А что под капотом? Заметки хранятся в базе или текстовыми файлами? Что мне нравится в Obsidian - что это просто фронтенд над markdown. Если захочу от них уйти - элементарно скриптами перенесу файлы на другой формат. Синхронизацию файлов можно самому сделать, по связке с Syncthing были статьи на хабре.
А тут без вариантов. В любом случае, прогрессивность на совести автора протокола, и ему решать когда можно начинать обработку частичных данных, а когда ждать ещё что-то.
проектирование программного продукта часто занимает высший приоритет, т.к. в современных системах стараются не делать жесткую связь между описанием системы и её конкретной реализацией.
Это не причина и следствие. Да, высший приоритет, нет это не имеет отношение к связи между описанием и реализацией. Проектирование опирается на возможности стека. Есть задачи, которые язык решает хорошо и есть парадигмы, в которых язык хорошо работает. Поэтому, писать статью по дизайну/архитектуре, не используя псевдокод в этой парадигме - это вода и спекуляции.
Не опечатался, но пытался упростить. Конечно, IO = ST #Realworld, но st монада - не математический объект. С другой стороны, её интерфейс такой же как у State и смысл тот же - контекст с get и put методами. ST - это не-персистентный State, который позволяет, например, честные массивы с О(1) inplace записью.
Да. Функции, которые не возвращают IO - чистые, то есть просто преобразовывают данные. Буквально определение чистоты - что вызов функции можно эквивалентно заменить сразу на возвращаемое значение.
В Хаскеле всё красивее. Есть тривиальная монада State, которая позволяет читать и писать контекст. А Хаскельная IO, в которой крутятся эффекты - это просто State, с контекстом #RealWorld. То есть, ввод с клавиатуры, сигналы, вызовы fopen, fread, fwrite, время и прочее и прочее - это просто контекст.
Оба неправы, ФП - это не map/reduce/filter, и операторы через точку; автор пишет как раз о правильных вещах. Один из аспектов ФП - это найти в поведении данных математику и, доказав её, защититься от связанных ошибок. А ещё от ФП до ЯОП один шаг.
Логично, кэп, но в предназначенных языках код поддерживается гораздо легче, чем какое-нибудь DDDшное поделие.
Технологических предпринимателей точно делает. https://x.com/irl_neil/status/1935513501944213987
Не хотите поговорить о Боге нашем - LISP'е?
treesitter использует - крутая штука, легко прикручивается куда угодно.
Если вся статья про "чик-чик и в продакшн", вы думаете одной ошибкой пагинации всё ограничится?
Надеюсь, у вас открыт багбаунти? Выглядит как лёгкие деньги.
В целом, изначальную проблему решило агрессивное использование expire везде где можно. Воркеры, которые хапали лишнего, скоро обнаруживали, что лишнее давно протухло, и не застаивались.
А по итогу команда решила перекатиться на го, и селери отпал вместе с питоном.
Celery отвратительно написан. Я не знаю как называется дизайн, но его невозможно читать, и из-за обилия рефлексии по нему нельзя ходить статическими анализаторами. Мне как-то нужно было понять почему с отключенным префетчем, воркеры продолжают выгребать лишнее из редиса - я не осилил сырцы. Вывод: перспективы развития и долгосрочной поддержки сомнительны.
Всё по тем же причинам, чем {idename} не угодило - эргономика.
tmux много плюсов на самом деле имеет. Можно хранить большую сессию в виме (да, можно делать это плагинами), можно поставить какой-нибудь долгий шелл-скрипт и детачнуться от него.
Автор изобрёл rc4, но с сомнительной стойкостью.
Заголовок не соответствует задаче, просто. В заголовке "найдите пример", а в задаче "докажите критерий", что сложнее.
На этой поправке подозрение не закралось? Возьмите так же, например, 9-угольник и выбросьте каждый третий вектор.
Я развернул у себя на vps-ке, синхронизируется всё что имеет доступ к приватной сети.
Спасибо
А что под капотом? Заметки хранятся в базе или текстовыми файлами? Что мне нравится в Obsidian - что это просто фронтенд над markdown. Если захочу от них уйти - элементарно скриптами перенесу файлы на другой формат. Синхронизацию файлов можно самому сделать, по связке с Syncthing были статьи на хабре.
А тут без вариантов. В любом случае, прогрессивность на совести автора протокола, и ему решать когда можно начинать обработку частичных данных, а когда ждать ещё что-то.
Можно перейти на toml - передавай узлы один за другим в любом порядке.
А слабо ответить, не подключая llm?
По сути:
Это не причина и следствие. Да, высший приоритет, нет это не имеет отношение к связи между описанием и реализацией. Проектирование опирается на возможности стека. Есть задачи, которые язык решает хорошо и есть парадигмы, в которых язык хорошо работает. Поэтому, писать статью по дизайну/архитектуре, не используя псевдокод в этой парадигме - это вода и спекуляции.