Hacker News Digest

Тег: #command-line

Постов: 4

MapSCII – World map in terminal (github.com)

MapSCII — это инструмент для отображения карт мира прямо в терминале с использованием символов ASCII и Брайля. Для подключения на Mac и Linux достаточно выполнить команду telnet mapscii.me, предварительно установив telnet (например, через brew install telnet), а на Windows — использовать PuTTY.

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

by _august • 18 сентября 2025 г. в 18:12 • 194 points

ОригиналHN

#terminal#ascii#braille#telnet#putty#openstreetmap#command-line#github

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

  • Обсуждение технических аспектов работы карты в различных терминалах и через Telnet, включая проблемы с отображением и поддержкой мыши.
  • Упоминание о возрасте проекта (более 8 лет) и его доступности для vintage-компьютеров через Telnet.
  • Сравнение проекта с другими известными работами, такими как Google Maps для NES и ежедневной игрой FoodGuessr.
  • Восторженные отзывы о визуальной реализации и использовании OpenStreetMap для детализации до уровня улиц.
  • Несколько комментаторов изначально спутали проект с чем-то связанным со StarCraft II из-за аббревиатуры SCII.

Introduction to Ada: a project-based exploration with rosettas (blog.adacore.com)

Ada в действии: рисуем розетки

Создадим консольную утилиту, генерирующую SVG-файл с анимированными розетками (гипотрохоидами, как в Spirograph™). Проект показывает, что Ada 2022 — не только для безопасно-критичных систем, но и для обычных задач.

Зачем Ada?

  • Жёсткая проверка типов и компилятор как «партнёр».
  • Читаемость вместо краткости, минимум неопределённого поведения.
  • Отлично подходит для встраиваемых, авиа-, железнодорожных и автомобильных систем.

Как работает программа

  1. Принимает параметры из командной строки.
  2. Вычисляет координаты точек кривой.
  3. Записывает XML-совместимый SVG.
  4. Открывается в любом браузере без сторонних библиотек.

Структура проекта

rosetta/
├── alire.toml          # зависимости Alire
├── src/
│   ├── rosetta.adb     # точка входа
│   ├── svg.adb/.ads  # генерация SVG
│   ├── curve.adb/.ads # математика кривой
└── Makefile

Ключевые типы

type Point is record
   X, Y : Float;
end record;

type Rosetta_Params is record
   R, r, d : Float;  -- радиусы и смещение
   Steps   : Positive;
end record;

Генерация кривой

function Hypotrochoid(P : Rosetta_Params) return Point_Array is
   Result : Point_Array(1 .. P.Steps);
   Angle  : Float := 0.0;
   Delta  : constant Float := 2.0 * Pi / Float(P.Steps);
begin
   for I in Result'Range loop
      Result(I) := (
        X => (P.R - P.r) * Cos(Angle) + P.d * Cos((P.R - P.r) / P.r * Angle),
        Y => (P.R - P.r) * Sin(Angle) - P.d * Sin((P.R - P.r) / P.r * Angle)
      );
      Angle := Angle + Delta;
   end loop;
   return Result;
end Hypotrochoid;

Создание SVG

procedure Write_SVG(Path : Point_Array; Filename : String) is
   File : File_Type;
begin
   Create(File, Out_File, Filename);
   Put_Line(File, "<svg ...>");
   Put(File, "<path d='M");
   for P of Path loop
      Put(File, Float'Image(P.X) & "," & Float'Image(P.Y) & " ");
   end loop;
   Put_Line(File, "' stroke='black' fill='none'/>");
   Put_Line(File, "</svg>");
   Close(File);
end Write_SVG;

Сборка и запуск

alr build
./bin/rosetta --R 100 --r 40 --d 80 --steps 360
# открыть rosetta.svg в браузере

Что дальше

  • Добавить CLI-парсер GNAT.Command_Line.
  • Анимировать через <animate> в SVG.
  • Портировать на микроконтроллер и выводить на дисплей.

Полный код: github.com/AdaCore/rosetta-ada-demo

by jaypatelani • 02 сентября 2025 г. в 17:32 • 179 points

ОригиналHN

#ada#gnat#svg#command-line#embedded-systems#mathematics#alire#adacore#hypotrochoid#xml

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

  • Пользователи просят чёткий список возможностей Ada, доступных бесплатно в GNAT, и тех, что требуют лицензию AdaCore; ответ: весь язык доступен в FSF-GNAT, а проприетарный вариант лишь обновляется чаще и сопровождается коммерчески.
  • Участники вспоминают, что писали на Ada ещё в 90-е, отмечают приятный «паскалеподобный» синтаксис и интерес к новым фичам Ada 2022 и SPARK.
  • Ada применяется в высоконадёжных системах (NVidia, автопром, проект Muen), но в коммерческой разработке её доля снизилась, уступив C/C++.
  • Появились ресурсы для старта: learn.adacore.com, ada-lang.io и репозиторий awesome-ada.
  • Обсуждается, помогут ли LLM вернуть Ada в мейнстрим: одни считают, что строгость языка полезна для проверки сгенерированного кода, другие — что LLM сделают все языки нишевыми.

Git-Annex (git-annex.branchable.com)

git-annex — управляет большими файлами в git, не храня их содержимое. Поддерживает синхронизацию, резервное копирование, шифрование и работу офлайн.

Для любителей командной строки — полный функционал; для остальных — git-annex assistant превращает всё в простую синхронизацию папок.

Быстрый старт

Ключевые темы

Примеры

Архиватор Боб хранит данные на множестве отключённых дисков. git-annex показывает, где лежит нужный файл, и позволяет безопасно переупорядочивать дерево. Ночью cron-команды добавляют новое и отслеживают дубликаты.

Кочевница Алиса синхронизирует ноутбук, USB-диск, сервер и облако как git-удалённые репозитории. В самолёте или кафе она выбирает, что скачать, что удалить, а при подключении всё автоматически сливается обратно.

by keepamovin • 25 августа 2025 г. в 04:18 • 206 points

ОригиналHN

#git#git-annex#haskell#cloud-storage#backup#offline-storage#cron#command-line#version-control#git-lfs

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

  • git-annex отлично подходит для персонального управления большими файлами на множестве носителей, включая офлайн-диски, и гарантирует контроль целостности.
  • Пользователи жалуются на сложность освоения, «тяжёлый» Haskell-стек зависимостей и проблемы с плагинами облачных провайдеров.
  • В много-юзерных репозиториях «магические» ветви git-annex плохо масштабируются; для коллаборации чаще выбирают Git-LFS.
  • Крупные репо (десятки ТБ и сотни тысяч файлов) замедляются до минут ожидания на каждую операцию, особенно при дефолтных «параноидальных» проверках.
  • Git-annex и LFS решают разные задачи: первый — распределённое резервное хранение, второй — версионирование больших файлов в dev-репозиториях.

Code formatting comes to uv experimentally (pydevtools.com) 🔥 Горячее 💬 Длинная дискуссия

uv format — экспериментальная команда в uv для форматирования кода. Под капотом вызывает Ruff, но не требует отдельной установки.

Как начать

# форматировать текущий проект
uv format

# проверить, без изменений
uv format --check

# только нужные файлы
uv format src/ tests/

Передача аргументов Ruff

Всё, что идёт после --, уходит напрямую в Ruff:

# исключить файлы
uv format -- --exclude="*_pb2.py"

# задать длину строки
uv format -- --line-length 100

Пока функция флажком --preview, но уже позволяет обойтись без отдельного бинарника ruff.

by tanelpoder • 21 августа 2025 г. в 20:26 • 351 points

ОригиналHN

#uv#ruff#code-formatting#command-line#python

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

  • Пользователи спорят: стоит ли встраивать форматирование (ruff format) в uv или это «feature-creep».
  • Одни рады единой команде uv format, упрощающей жизнь новичкам и командам; другие требуют оставить инструменты раздельными, как в UNIX-way.
  • Создатели подчеркивают: ruff и uv не сливаются; uv format лишь удобный алиас, аналогичный cargo fmt.