Hacker News Digest

Тег: #path

Постов: 3

A surprise with how '#!' handles its program argument in practice (utcc.utoronto.ca)

Автор обнаружил удивительное поведение shebang (#!) в Unix-системах: ядро Linux, FreeBSD и OpenBSD поддерживает не только абсолютные, но и относительные пути в shebang. Например, можно использовать "#!python3", "#!bin/python3" или "#!../../../usr/bin/python3", и они будут работать при правильном расположении текущего каталога. Это поведение существует с 4.2 BSD (1983 год) и реализовано через вызов namei(), который разрешает пути так же, как и для обычных файлов.

Несмотря на потенциальные проблемы безопасности, такое поведение сохранилось во многих системах. Автор предполагает, что это связано с простотой реализации в ядре и законом Хайрума (Hyrum's Law) - вероятно, кто-то уже использует эту функциональность и зависит от неё. Интересно, что даже OpenBSD, известный вниманием к безопасности, не изменил это поведение.

by SeenNotHeard • 18 ноября 2025 г. в 19:32 • 95 points

ОригиналHN

#unix#linux#freebsd#openbsd#bash#security#nixos#hyrums-law#shebang#path

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

  • Проблема с #!/bin/bash в NixOS и других системах, где bash не в /bin, подчеркивает важность использования #!/usr/bin/env bash для переносимости.
  • Обсуждение подчеркивает, что #!/usr/bin/env bash является наиболее переносимой формой, так как она использует $PATH для поиска bash.
  • Несколько участников подчеркивают, что #!/bin/bash может не работать в некоторых системах, где bash не в /bin.
  • Обсуждение также затрагивает безопасность: #!/usr/bin/env bash может быть опасен, если не указан полный путь, так как это может привести к запуску нежелательного кода.

An interactive guide to SVG paths (joshwcomeau.com) 🔥 Горячее

SVG <path>: краткий путеводитель

<path> — единственный способ рисовать сложные фигуры и кривые в SVG. Синтаксис пугает, но разобравшись, становится удобным.

Основы

  • Атрибут d — последовательность команд, как «рецепт» для пера.
  • Каждая команда начинается с буквы и получает координаты как аргументы.
  • Предыдущая точка автоматически становится началом следующей команды.
  • Используйте пробелы и запятые — читаемость важнее байтов.

Команды

  • M x,y — поднять перо и переместиться в точку.
  • L x,y — прямая линия до точки.
  • C x1 y1, x2 y2, x y — кубическая Безье.
  • Q x1 y1, x y — квадратичная Безье.
  • A rx ry x-axis-rotation large-arc-flag sweep-flag x y — дуга эллипса.
  • Z — замкнуть путь к начальной точке.

Относительные координаты

Буквы в нижнем регистре (m, l, c…) двигают перо относительно текущей позиции, а не от начала координат.

Цепочки кривых

Повторяйте команды, чтобы строить сложные формы без лишних M.

Анимации

Изменяя d через CSS или JS, можно плавно морфить фигуры.

Советы

  • Начинайте путь всегда с M.
  • Для читаемости группируйте команды построчно.
  • Проверяйте результат в интерактивном редакторе.

by joshwcomeau • 18 августа 2025 г. в 15:19 • 427 points

ОригиналHN

#svg#path#bezier-curves#css#javascript#graphics#postscript

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

  • Участники обсуждают интуитивные способы задавать эллиптические дуги без булевых флагов, предлагая параметры вроде углов или контрольной точки.
  • Хвалят интерактивный гайд по SVG-путям, его наглядность и звуковые эффекты.
  • Делятся практическим опытом: динамическая генерация карт в играх, разметка сканов, чтение путей «с нуля».
  • Рекомендуют инструменты для редактирования и генерации SVG: GodSVG, Boxy SVG, онлайн-редактор yqnn.
  • Отмечают связь SVG с PostScript, Logo и даже коническими сечениями; обсуждают GPU-ускорение для кривых Безье и рендеринг шрифтов.

Recto – A Truly 2D Language (masatohagiwara.net)

Recto — язык, где код — это вложенные прямоугольники. Он не читается сверху вниз, а воспринимается пространственно: структура и рекурсия задаются формой, а не текстом.

Идея

Большинство языков — линейны: слова идут одно за другим. Recto отказывается от этой традиции и возвращается к древним «картам мыслей» — пиктограммам, звёздным картам, схемам. Главное требование к языку:

  1. Понятен человеку и машине.
  2. Может быть создан человеком и машиной.

Линейность не обязательна: можно представить «приложение», где жест или выражение лица превращается в сетку эмодзи, и всё работает.

Примеры

  • Hello Recto — прямоугольник, внутри которого текст Hello Recto.
  • Арифметика — прямоугольники-числа и операторы встраиваются друг в друга, образуя выражения.
  • Факториал — рекурсивный прямоугольник ссылается на себя.

Почему это важно

Recto показывает, как можно писать, парсить и мыслить кодом без строк и файлов. Он открывает путь к языкам, где значение рождается из формы, а не последовательности символов.

Попробовать: Recto Pad | Google Colab | GitHub

by mhagiwara • 12 августа 2025 г. в 15:06 • 131 points

ОригиналHN

#recto#programming-languages#path#befunge#hexagony#orca#racket#unreal-blueprints#emit

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

  • Участники обсуждают Recto как «2D-язык», но многие считают его всё же 1D с «скобками и лишними шагами».
  • Поднимаются примеры других 2D/3D-языков: PATH, Befunge, Hexagony, Orca, Unreal Blueprints, Racket 2d.
  • Спор о том, считать ли нотный стан или речь по-настоящему многомерными; автор статьи настаивает на их 1D-основе.
  • Предлагаются улучшения: полноценная графическая среда, Unicode-рамки, поддержка VR/AR, именованные параметры.
  • Упомянуты эксперименты с «временем» как измерением (EmiT, ICFPC 2024).
  • Автору пожелали сил в борьбе с раком и скинули ссылки на GoFundMe и CaringBridge.