Hacker News Digest

Тег: #data-processing

Постов: 9

Transducer: Composition, abstraction, performance (2018) (funktionale-programmierung.de)

В функциональном программировании высшие функции вроде map, filter и fold можно определить через reduce, показывая что "всё сворачивается". Эти функции зависят от коллекций лишь через операцию conj, что открывает путь к абстракции. В Clojure это реализуется через трансдьюсеры — функции, принимающие шаг обработки и возвращающие его модифицированную версию.

Трансдьюсеры позволяют создавать переиспользуемые преобразования данных, работающие с различными структурами, от списков до потоков. Их ключевое преимущество — композиция: несколько трансдьюсеров могут объединяться без потери производительности. Реализация поддерживает разные арности (0, 1 или 2 аргумента), что делает их универсальными для различных сценариев обработки данных. Такой подход обеспечивает как переиспользование кода, так и высокую производительность за счет meaningful абстракции.

by defmarco • 04 ноября 2025 г. в 10:32 • 97 points

ОригиналHN

#clojure#functional-programming#transducers#reduce#abstraction#data-processing#performance

Комментарии (5)

  • Обсуждение началось с предложения рассмотреть альтернативное, более мягкое введение в трансдюсеры как функции a -> List<b>, подчеркивая их полиморфизм и простоту.
  • Участники поделились опытом, что новички в Clojure часто переоценивают reduce и пытаются заменить им циклы, что приводит к запутанному коду, в то время как трансдюсеры предлагают более чистый и декларативный подход.
  • Сообщество единодушно подтвердило, что трансдюсеры действительно делают код более выразительным и устойчивым к ошибкам, особенно когда дело касается обработки коллекций.
  • В итоге обсуждение сошлось на том, что хотя трансдюсеры и требуют некоторого переосмысления привычных паттернов, их преимущества в выразительности и надежности делают их ценным инструментом для Clojure разработчика.

Комментарии (34)

  • Обсуждение охватывает широкий спектр тем: от исторических примечаний к фильтрам Блума до их практического применения в индустрии и академических исследованиях.
  • Участники обсуждали различные аспекты фильтров Блума, включая их эффективность, ограничения и альтернативы, такие как Cuckoo и Ribbon фильтры.
  • Были упомянуты конкретные примеры использования фильтров Блума в таких системах, как Splunk и Bing.
  • Обсуждались также вопросы, связанные с оптимизацией производительности и использованием фильтров Блума в различных контекстах, включая поиск редких событий и обработка больших объемов данных.

An overengineered solution to `sort | uniq -c` with 25x throughput (hist) (github.com)

Проект hist-rs представляет собой высокопроизводительный утилиту для подсчета уникальных строк, написанную на Rust. Его ключевое преимущество — скорость работы, которая в 25 раз превышает производительность классической команды sort | uniq -c в Unix-системах. Это делает его идеальным инструментом для анализа больших лог-файлов и наборов данных, где важна скорость обработки.

Проект реализует эффективный алгоритм подсчета, минимизируя потребление памяти и процессорного времени. Он особенно полезен для разработчиков и системных администраторов, работающих с большими объемами текстовых данных. Код проекта открыт и доступен на GitHub, что позволяет сообществу вносить вклад в его развитие и адаптацию под различные задачи обработки текста.

by noamteyssier • 22 октября 2025 г. в 22:26 • 90 points

ОригиналHN

#rust#performance#data-processing#command-line-tools#text-processing#clickhouse#awk#csv#tsv#github

Комментарии (62)

  • Обсуждение началось с вопроса о производительности различных инструментов для подсчёта уникальных строк в файле, где был упомянут clickhouse-local как самый быстрый способ.
  • Участники обсуждали различные инструменты, включая sort, uniq, awk, uniq -c, sort | uniq -c | sort -n, tsv и csv, а также их производительность и использование памяти.
  • Были упомянуты такие инструменты как tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, tsort, `tsor

The death of thread per core (buttondown.com)

В асинхронных рантаймах, таких как async Rust, задачи могут приостанавливаться и порождать новую работу, что приводит к двум основным подходам: thread-per-core и work-stealing. При work-stealing потоки могут "воровать" задачи друг у друга, обеспечивая лучшую балансировку нагрузки, хотя это требует возможности перемещения задач между потоками (что вызывает сложности в Rust с требованием Send) и может нарушать локальность данных. В обработке данных долгое время доминировал подход thread-per-core, так как он минимизирует перемещение данных между ядрами и упрощает реализацию, особенно при случайных ключах.

Однако в последние годы наблюдается сдвиг в сторону динамического перераспределения работы на уровне обработки данных. Растущее количество ядер делает неравномерное распределение данных более болезненным, а улучшение производительности ввода-вывода снижает значимость старых ограничений. Подход Morsel-Driven Parallelism предлагает, что системы обработки данных могут быть лучшим местом для динамического перераспределения работы. Это подкрепляется культурными факторами: при масштабировании и мультиарендности проблемы неравномерной нагрузки становятся сложнее для решения на верхних уровнях, требуя встроенной гибкости в самих системах.

by ibobev • 20 октября 2025 г. в 21:19 • 126 points

ОригиналHN

#rust#async-programming#multithreading#parallel-processing#work-stealing#thread-per-core#morsel-driven-parallelism#data-processing#performance-optimization

Комментарии (50)

  • Обсуждение вращается вокруг вопроса, что межъядерная коммуникация может быть настолько дорогой, что даже при наличии 255 ядер лучше всего использовать только одно ядро.
  • Участники обсуждают, что важно не только количество ядер, но и то, как они используются, и что важнее всего - это архитектура приложения и то, насколько оно может быть распараллелено.
  • Также обсуждается, что важно учитывать, что не все задачи одинаково подходят для параллельной обработки, и что важно правильно оценивать, когда стоит распараллеливать задачу, а когда нет.
  • Участники также обсуждают, что важно иметь в виду, что современные языки программирования и среды разработки предоставляют инструменты, которые могут помочь в управлении потоками и задачами, и что важно использовать их правильно.

Do not accept terms and conditions (termsandconditions.game)

by halflife • 17 октября 2025 г. в 19:32 • 80 points

ОригиналHN

#apple-health#toyota#privacy#data-processing#terms-and-conditions

Комментарии (56)

  • В обсуждении фигурируют три «игры» с условиями: отказ от T&C в браузере, отказ от обработки данных в Apple Health и отказ от согласия на отслеживание в Toyota.
  • Участники обсуждают, что отказ от T&C в браузере — это просто игра, и никаких последствий не будет.
  • Обсуждается, что Apple Health и Toyota не предоставляют выбора, кроме как отказаться от обработки данных, и это вызывает тревогу.
  • Участники также обсуждают, что отказ от обработки данных в Apple Health и отказ от согласия на отслеживание в Toyota не влияет на функциональность, но вызывает тревогу.

Show HN: ut – Rust based CLI utilities for devs and IT (github.com)

Написанная на Rust утилита ut предлагает разработчикам набор инструментов для повседневных задач, вдохновляясь функциональностью it-tools.tech. Она включает конвертеры, генераторы хешей, кодировщики и другие инструменты для работы с данными, кодом и системами. Проект стремится объединить распространённые утилиты в одном месте, упрощая доступ без переключения между сервисами.

Использование Rust обеспечивает высокую производительность и безопасность, а модульная архитектура позволяет легко расширять функционал. Это решение особенно полезно для команд, ценящих локальные инструменты без зависимости от облачных сервисов.

by ksdme9 • 05 октября 2025 г. в 17:36 • 137 points

ОригиналHN

#rust#cli#command-line-tools#data-processing#hashing#encoding#unix-philosophy#performance#security#github

Комментарии (39)

  • Предложения по распространению: упаковать как Python и NPM модули для удобного запуска через uvx или npx, использовать cargo-dist для автоматизации.
  • Критика архитектуры: обсуждается целесообразность единого бинарника (по аналогии с BusyBox) против множества отдельных утилит в духе UNIX-философии "делай одно дело хорошо".
  • Вопросы к функционалу: предостережения против включения слишком большого количества функций (например, HTTP), предложения добавить конкретные команды (uuidv7, retry).
  • Замечания по реализации: критика требований к вводу (только UTF-8, чтение stdin до EOF), отсутствие тестов для кода, созданного с помощью ИИ.
  • Общая оценка: инструмент воспринят как удобный "швейцарский нож" с продуманными умолчаниями, но вызвал дискуссию о разумных пределах его роста.

F3: Open-source data file format for the future [pdf] (db.cs.cmu.edu) 🔥 Горячее

Современные колоночные форматы данных, такие как Parquet и ORC, созданные более десяти лет назад, не справляются с требованиями современных аналитических систем: они неэффективны для широких таблиц с тысячами столбцов, векторными эмбеддингами и большими бинарными объектами, а также не оптимизированы для случайного доступа или обновлений. Их ограниченная расширяемость и проблемы совместимости между версиями библиотек затрудняют внедрение новых методов сжатия, индексации и фильтрации.

Представлен формат F3, разработанный для обеспечения интероперабельности, расширяемости и эффективности. Ключевая инновация — встраивание декодеров в виде компактных WebAssembly-бинарников прямо в файл, что гарантирует совместимость на любой платформе без зависимостей от внешних библиотек. Это позволяет легко добавлять новые схемы кодирования через универсальный API, избегая необходимости переписывать формат при изменениях в обработке данных. Тесты показывают преимущества F3 в организации хранения и декодировании через Wasm по сравнению с существующими решениями.

by eatonphil • 01 октября 2025 г. в 13:52 • 363 points

ОригиналHN

#webassembly#parquet#orc#data-formats#columnar-storage#data-compression#data-indexing#data-filtering#data-encoding#data-processing

Комментарии (117)

  • Обсуждение формата F3 сосредоточено на его использовании WebAssembly для встраивания декодеров в файлы, что обеспечивает будущую совместимость, но вызывает споры о производительности (10-30% замедление) и безопасности (риск вредоносных payload).
  • Участники обсуждают преимущества и недостатки колоночного хранения данных по сравнению с другими подходами, а также сложности внедрения нового формата из-за инерции существующих экосистем (Parquet, ORC).
  • Поднимаются вопросы о практичности формата, включая зависимость от WASM, увеличение сложности и потенциальные проблемы с обратной совместимостью интерфейсов для WASM-модулей.
  • Отмечается участие известных экспертов (Уэс МакКинни, Энди Павло) как фактор доверия к проекту, но также выражается скептицизм по поводу его жизнеспособности и оптимизации.
  • Обсуждаются альтернативы и похожие проекты (Vortex, Anyblox, Arrow), а также необходимость поддержки сообщества, коннекторов и интеграции с популярными инструментами для успеха F3.

Show HN: Toolbrew – Free little tools without signups or ads (toolbrew.co)

Библиотека toolbrew предлагает набор чистых и полезных инструментов для разработчиков, фокусируясь на удобстве использования и минималистичном дизайне. Включает утилиты для работы с текстом, данными, кодом и веб-разработкой, такие как конвертеры, генераторы и анализаторы. Все инструменты открыты для модификации и интеграции в проекты.

Особенность — отсутствие лишних зависимостей и простота внедрения, что ускоряет рабочий процесс. Например, можно быстро форматировать JSON, шифровать строки или проверять валидность кода. Практический вывод: снижает потребность в поиске разрозненных сервисов, экономя время.

by andreisergo • 28 сентября 2025 г. в 14:40 • 236 points

ОригиналHN

#json#web-development#utilities#code-analysis#data-processing#open-source#pdf#ssh

Комментарии (53)

  • Пользователи обсуждают полезные онлайн-инструменты (CyberChef, easyinvoicepdf, cobalt.tools, simonwillison.net) и делятся своими проектами.
  • Поднимаются вопросы безопасности и доверия к сторонним инструментам, а также желание видеть больше информации об их надежности.
  • Предлагаются идеи для новых функций: улучшение мобильного интерфейса, добавление поиска, агрегатора инструментов, генератора QR-кодов без трекеров.
  • Обсуждаются конкретные технические нужды: мерж PDF, проверка ссылок, генерация SSH-ключей, сетевые утилиты.
  • Отмечается проблема с YouTube-загрузчиком и predatory-моделями монетизации некоторых сервисов (например, QR-кодов).

Chrome's New AI Features (blog.google)

Google Chrome обновляется с помощью новейших технологий искусственного интеллекта, чтобы сделать его безопаснее, умнее и полезнее. Эти функции включают умную организацию вкладок, настройку тем и помощь в написании текстов. Они доступны на Mac и ПК в США, начиная с этой недели.

Умная организация вкладок автоматически группирует похожие вкладки, упрощая навигацию. Генератор тем позволяет создавать персонализированные темы на основе ваших предпочтений. Помощник в написании помогает формулировать мысли в текстовых полях, от отзывов до запросов.

Эти инструменты используют локальные модели машинного обучения Google для обеспечения конфиденциальности. Chrome продолжит внедрять ИИ, чтобы улучшить работу в интернете.

by HieronymusBosch • 18 сентября 2025 г. в 17:12 • 157 points

ОригиналHN

#google-chrome#machine-learning#privacy#artificial-intelligence#web-browsing#data-processing#llm

Комментарии (104)

  • Пользователи выражают обеспокоенность по поводу конфиденциальности и безопасности из-за интеграции ИИ в браузер, которая подразумевает сбор и анализ всего содержимого вкладок.
  • Многие сравнивают новые функции Chrome с функцией Recall от Microsoft, видя в них схожие угрозы приватности и потенциальные инструменты слежки.
  • Высказывается сильное желание иметь возможность полностью отключить все ИИ-функции, сделать их строго опциональными (opt-in), а не включенными по умолчанию.
  • Некоторые пользователи видят потенциальную пользу новых функций (например, поиск по истории на естественном языке, помощь в задачах), но лишь при условии локальной обработки данных.
  • Обсуждается, что объявление Google игнорирует ключевые вопросы безопасности (например, prompt injection) и конфиденциальности, в отличие от похожих анонсов других компаний.
  • Есть мнение, что это шаг по использованию доминирующего положения Chrome на рынке для продвижения собственной экосистемы ИИ и сбора большего количества данных.
  • Некоторые пользователи рассматривают переход на альтернативные браузеры (Firefox, Chromium, Ladybird) как способ избежать нежелательных ИИ-функций.