The macOS LC_COLLATE hunt: Or why does sort order differently on macOS and Linux (2020)
На macOS и Linux команда sort упорядочивает строки по-разному даже при одинаковой локали en_US.UTF-8. Например, на macOS python-dev идет перед python3-dev, а на Linux - наоборот. Причина - в файлах LC_COLLATE: на большинство локалей в macOS ссылаются на la_LN.US-ASCII, что представляет собой базовое ASCII-упорядочивание. Даже для нелатинских локалей (китайской, японской, корейской) используется та же ссылка. В то время как на Linux используются более сложные правила сортировки, учитывающие национальные особенности.
Автор обнаружил, что в macOS 122 из 178 локалей используют la_LN.US-ASCII в качестве основы для сортировки. Исследуя исходный код Apple, он нашел, что правила сортировки для la_LN.US-ASCII чрезвычайно просты - это просто базовое ASCII-упорядочивание без учета национальных особенностей. Это объясняет, почему на macOS "python-dev" идет перед "python3-dev", так как дефис (ASCII 0x2D) имеет меньший код, чем цифра 3 (ASCII 0x33).
Комментарии (16)
- Сортировка строк в Unix-подобных системах зависит от локали, и это может привести к неожиданным результатам, особенно при работе с диакритическими символами.
- Сортировка строк в Unix-подобных системах зависит от локали, и это может привести к неожиданным результатам, особенно при работе с диакритическими символами.
- Сортировка строк в Unix-подобных системах зависит от локали, и это может привести к неожиданным результатам, особенно при работе с диакритическими символами.
- Сортировка строк в Unix-подобных системах зависит от локали, и это может привести к неожиданным результатам, особенно при работе с диакритическими символами.
- Сортировка строк в Unix-подобных системах зависит от локали, и это может привести к неожиданным результатам, особенно при работе с диакритическими символами.
Show HN: ASCII Automata
ASCII AUTOMATA v2 (beta) — это интерактивный инструмент для создания ASCII-искусства с помощью клеточных автоматов. Пользователи могут настраивать размер ячеек, выбирать шрифты и управлять различными параметрами сетки. Интерфейс включает режимы рисования (GROW, MANUAL, BARRIER) и инструменты вроде DRAW RECT для создания прямоугольников. Система предлагает пять стилей роста (DEPTH, PARALLEL, RANDOM, SCATTER, SCAN) с возможностью настройки селективности, случайного шанса и близости элементов.
Программа предоставляет три метода подсчета очков (DISTANCE, CONNECTION, EXACT) с поддержкой взвешенных значений для диагональных и кардинальных направлений. Управление анимацией осуществляется через кнопки PLAY, STOP и NEXT. Созданные работы можно экспортировать в PNG или скопировать как текст. Инструмент разработан Хейкки Лотвоненом (Heikki Lotvonen) в 2025 году и включает функцию RANDOM SEED для генерации уникальных паттернов.
Комментарии (8)
- ASCII AUTOMATA анализирует визуальную связность символов в текстовых шрифтах, оценивая краевую связность фрагментов и подбирая соседние для "роста".
- Инструмент визуализирует частоту использования символов через красную тепловую карту.
- Участники высоко оценили инструмент, сравнив его с 10print.org и отметив креативность подхода.
- Предложено добавить поддержку PETSCII шрифта.
Show HN: ASCII Drawing Board
Онлайн-инструмент для рисования ASCII-арта с настраиваемыми кистями разных размеров (1×1, 2×2, 3×3) и возможностью выбора символов из Unicode, включая спецсимволы вроде ✦ или █. Есть ластик, очистка всего холста, настройка размеров сетки (столбцы и строки), а также функции копирования и экспорта в текстовый файл.
Работает в реальном времени с индикацией текущих параметров (например, 90×40, кисть 2px). Автор отмечает, что не все Unicode-символы отображаются корректно из-за ограничений шрифтов, и призывает дать обратную связь через соцсети.
Комментарии (33)
- Отмечены технические проблемы: некорректная работа фиксированной ширины шрифта, нестабильность на мобильных устройствах (особенно в Firefox), неожиданное форматирование текста.
- Высоко оценена концепция и простота инструмента для рисования ASCII-арта, многие называют его интересным и полезным.
- Поступили предложения по улучшению: добавить Undo, использовать только печатные ASCII-символы по умолчанию, улучшить мобильную версию.
- Автор активно отвечает на фидбэк, объясняет выбор символов и делится ссылками на другие похожие инструменты.
- Обсуждение затронуло тему возрождения интереса к ASCII-арту и существование других нишевых инструментов для работы с ним.
Playball – Watch MLB games from a terminal 🔥 Горячее
Проект playball позволяет смотреть трансляции матчей MLB прямо в терминале через ASCII-графику. Вместо видео поток передаётся текстовыми символами, имитирующими поле, игроков и мяч, что создаёт минималистичный, но на удивление детализированный опыт просмотра.
Для работы требуется аккаунт MLB.tv и настроенный доступ к их стриминговому сервису. Инструмент написан на Python, использует библиотеку curses для отрисовки интерфейса и парсит данные в реальном времени. Это интересный пример того, как ностальгический формат терминала может быть адаптирован для современных развлечений, экономя трафик и ресурсы.
Комментарии (136)
- Участники обсуждают проект терминального просмотра текстовой трансляции бейсбольных матчей MLB, отмечая его удобство и связь с хакерской культурой.
- Поднимается тема доступности данных MLB через API и существования аналогичных инструментов для других видов спорта (NBA, NFL, крикет, футбол).
- Обсуждаются исторические и экономические причины снижения популярности бейсбола, а также преимущества MLB в области стриминга по сравнению с другими лигами.
- Упоминается практика ведения текстового протокола игры (scorekeeping) и то, как хорошо бейсбол подходит для текстового формата из-за своей структуры.
- Высказываются пожелания по развитию проекта, включая анимацию, поддержку других лиг и
MapSCII – World map in terminal
MapSCII — это инструмент для отображения карт мира прямо в терминале с использованием символов ASCII и Брайля. Для подключения на Mac и Linux достаточно выполнить команду telnet mapscii.me, предварительно установив telnet (например, через brew install telnet), а на Windows — использовать PuTTY.
Проект демонстрирует, как можно творчески подойти к визуализации данных в консоли, превращая географическую информацию в доступный и стильный текстовый формат. Это не только практично для быстрого просмотра карт без графического интерфейса, но и служит напоминанием о гибкости командной строки.
Комментарии (20)
- Обсуждение технических аспектов работы карты в различных терминалах и через Telnet, включая проблемы с отображением и поддержкой мыши.
- Упоминание о возрасте проекта (более 8 лет) и его доступности для vintage-компьютеров через Telnet.
- Сравнение проекта с другими известными работами, такими как Google Maps для NES и ежедневной игрой FoodGuessr.
- Восторженные отзывы о визуальной реализации и использовании OpenStreetMap для детализации до уровня улиц.
- Несколько комментаторов изначально спутали проект с чем-то связанным со StarCraft II из-за аббревиатуры SCII.
UTF-8 history (2003)
Роб Пайк рассказывает, как Кен Томпсон изобрёл UTF-8 за один вечер, и как они вместе внедрили его в систему менее чем за неделю.
В 1992 году, во время ужина в Нью-Джерси, Томпсон придумал битовую упаковку UTF-8. Изначально в Plan 9 использовалась кодировка UTF от ISO 10646, но она была неудобной. После звонка от представителей IBM и X/Open, которые просили оценить их проект FSS/UTF, Пайк и Томпсон предложили создать улучшенный стандарт.
За ночь Томпсон написал код для упаковки и распаковки, а Пайк адаптировал библиотеки. К пятнице Plan 9 уже полностью работал на UTF-8. X/Open принял их предложение, отказавшись от собственного FSS/UTF из-за недостатка синхронизации в потоке байтов.
Пайк опровергает миф о том, что UTF-8 разработала IBM, а Plan 9 лишь реализовала его, ссылаясь на архив переписки, подтверждающий их авторство.
Комментарии (35)
- Обсуждаются исторические и социально-экономические причины доминирования США в ранней компьютерной индустрии, включая военные разработки и инфраструктуру.
- Выдвигается гипотеза о преимуществе англоязычного мира из-за простого алфавита без диакритиков по сравнению с такими языками, как китайский или хинди.
- Подробно разбирается история создания UTF-8 и критикуется решение Microsoft использовать в Windows NT кодировку UCS-2 вместо UTF-8, названное "ошибкой на миллиард долларов".
- Участники отмечают, что ранние компьютерные кодировки (6-битные, ASCII) наследовали принципы докомпьютерных эпох (телетайпы, перфокарты).
- Обсуждается влияние разных алфавитов на технологическое развитие, проводятся параллели с историей книгопечатания в Европе и Китае.
- Упоминается, что стандартизация Unicode и UTF-8 была сложным процессом с участием нескольких конкурирующих организаций.
- Отмечаются практические проблемы, вызванные использованием в Windows кодировок CP-125X вместо UTF-8, и наследие этого решения в виде API-функций с суффиксами "A"/"W".
- Приводится ссылка на RFC 3629, который ограничил UTF-8 4 байтами на символ, отказавшись от первоначальной поддержки 5- и 6-байтных последовательностей.
UTF-8 is a brilliant design 🔥 Горячее 💬 Длинная дискуссия
UTF-8 — гениальное решение: 1–4 байта на символ, полная совместимость с 7-битным ASCII.
Старший бит первого байта сразу говорит, сколько байт идёт дальше:
| Паттерн 1-го байта | Длина | Пример |
|---|---|---|
0xxxxxxx |
1 | ASCII |
110xxxxx |
2 | |
1110xxxx |
3 | |
11110xxx |
4 |
Продолжения всегда 10xxxxxx.
Программа читает байт, по префиксу понимает длину, выделяет «полезные» биты, получает кодовую точку Unicode и выводит символ.
Пример:
хинди «अ» = 11100000 10100100 10000101 → U+0905.
Файл Hey👋 Buddy (13 байт):
H e y 👋 B u d d y
👋 кодируется 4 байтами 11110000 10011111 10010001 10001011 → U+1F44B.
Комментарии (305)
- UTF-8 — гениальное, простое и обратно-совместимое с ASCII решение, придуманное Кеном Томпсоном и Робом Пайком за ужином.
- Продолжение-байты
10xxxxxxпозволяют за O(1) найти границы символа, не парся весь поток. - Критика: Unicode «раздулся» (комбинирующие символы, эмодзи, 25-байтовые «графемы»), а UTF-8 не сам компактен для нелатиницы.
- Спор о «переполнении»: 4 байт хватает на 21 бит → 2 097 152 кодовых точек; 5-6 байт запрещены специально.
- Некоторые считают, что красота UTF-8 — не комитетное изобретение, а удачный частный хак, вышедший в мировой стандарт.
The day Return became Enter (2023) 🔥 Горячее
Как Return стал Enter
Переход от пишущих машинок к компьютерам в массовом сознании выглядит прямолинейным: к машинке прикрутили процессор и экран — получился компьютер. На деле всё было запутаннее, и ни одна клавиша не отражает этот путь лучше, чем Return.
От рычага к клавише
На механических машинках рычаг «carriage return» одним движением переводил каретку в начало строки и прокручивал бумагу. Это была чисто механическая операция, и до электрификации 1940–50-х она не могла стать клавишей. Когда же электромоторы взяли на себя работу, рычаг исчез, а на его месте появилась клавиша Return (иногда Electric Return или Power Return). В IBM Selectric инструкция говорила о «carrier return», но на клавиатуре всё равно писали Return.
Смысл и коды
Машинки не понимали смысла текста: не было цифр 0 и 1 — печатали O и l; знак $ получали, наложив I на S. Return тоже был просто «перевод строки» без контекста. Компьютеры же разделили функции:
- Carriage Return (CR) — возврат каретки, код 13.
- Line Feed (LF) — перевод строки, код 10.
В Unix оставили только LF, в DOS/Windows — CR+LF, а в старых Mac — только CR. Эти разногласия живы до сих пор.
Появление Enter
В 1960-х терминал Teletype ASR-33 ввёл клавишу ENTER для подтверждения команд. Она генерировала CR, но уже несла смысл «ввод». Мэйнфреймы IBM разделили:
- Return — новая строка в тексте.
- Enter — «отправить» команду.
На ранних ПК (Apple II, Commodore) была одна клавиша Return. IBM PC 1981 добавила справа отдельную Enter на цифровом блоке, но оставила Return в основной зоне. Постепенно оба названия стали обозначать одно и то же, а на некоторых клавиатурах 1980-х можно было встретить оба лейбла сразу.
Итог
Сегодня Return и Enter — это одна клавиша, но внутри она может посылать CR, LF или CR+LF в зависимости от системы. Рычаг 1870-х превратился в символ «⏎», а его история — это квинтэссенция перехода от механики к цифре.
Комментарии (147)
- IBM PC не переименовал Return в Enter, а просто дал одной клавише две функции.
- Некоторые жалеют, что вместо CR/LF не использовались ASCII-символы FS/RS, чтобы избежать проблем перевода строк.
- На старых клавиатурах Return и Enter были разными клавишами; ISO до сих пор различает Return в основном блоке и Enter на цифровой панели.
- У Apple всегда была клавиша Return, а Enter — только на нумпаде; у IBM/PC клавиша в основном блоке сразу называлась Enter.
- Пользователи вспоминают путаницу между Return и Enter в старых программах и то, что стрелка ↵ всё ещё напоминает о механическом возврате каретки.
Monodraw 🔥 Горячее 💬 Длинная дискуссия
Monodraw — редактор ASCII-графики для macOS (11 Big Sur+).
Пробная версия бесплатно, лицензия — $9.99, скидки для учебных заведений.
Возможности
- Диаграммы: структуры данных, алгоритмы, ER-диаграммы (нотация «Crow’s Foot»).
- Mind-map: свободное размещение текста на бесконечном холсте.
- Баннеры: 148 встроенных шрифтов FIGlet, изменение размера и выравнивание.
- Инструменты: прямоугольники, линии (ортогональные, лестницы), текст, карандаш, ластик, заливка, пипетка.
- Точки крепления: линии автоматически цепляются к фигурам.
- CLI: генерация документации в хуках Git, экспорт JSON.
- Группы, направляющие, фокус-режим, горячие клавиши для быстрой работы.
Экспорт: PNG, SVG.
Комментарии (172)
- Разработчик Monodraw отвечает на вопросы; пользователи делятся альтернативами (asciiflow, textik, durdraw, REXPaint).
- Все хвалят чистоту результата, низкую цену ($10 навсегда) и удобство вставки ASCII-диаграмм прямо в код или документацию.
- Основные сценарии: комментарии в исходниках, схемы сетей, баннеры серверов, ASCII-анимации, план кухни.
- Главный недостаток: приложение только для macOS; много просьб портировать на Linux.
- Новая текстовая разметка (апрель 2025) улучшает работу с системами контроля версий.
D2 (text to diagram tool) now supports ASCII renders 🔥 Горячее
ASCII-вывод в D2 0.7.1
Файлы с расширением .txt теперь рендерятся в ASCII. Пример: при сохранении .d2-файла Vim-плагин мгновенно показывает ASCII-превью.
Для документации кода
ASCII-диаграммы удобно вставлять в комментарии: выделите блок d2, плагин заменит его ASCII-версией.
Unicode или чистый ASCII
По умолчанию используются символы Unicode, но флаг --ascii-mode=standard вернёт строгий ASCII.
Ограничения (альфа-версия)
- Без стилей:
animated,font, темы не поддерживаются; цвета в терминале — возможно позже. - Неравномерные отступы из-за дискретной сетки.
Сообщайте о багах: github.com/terrastruct/d2/issues.
Попробуйте сейчас
Откройте пример в D2 Playground.
Комментарии (70)
- Представлена новая альфа-функция D2: рендеринг диаграмм в ASCII.
- Пользователи сравнивают D2 с Mermaid, отмечают лучший внешний вид и CLI без Chromium, но упрекают в отсутствии GitHub-рендеринга и сложных grid-раскладок.
- Появились вопросы о браузерной офлайн-работе, vim-/emacs-плагинах, Python-обёртке и возможности ручной подгонки элементов.
- Автор подтвердил, что WASM-версия (d2.js) уже работает в браузере, но пока неанонсирована; официальный релиз и поддержка PR-диаграмм ожидаются позже.