LINUX.ORG.RU

Избранные сообщения intelfx

Крик души карбоновая сталь

Форум — Talks

Очередная моя попытка оседлать сковороду из карбоновой стали увенчалась полным крахом и очередная сковорода за $100 отправляется в мусорку. КАК вы это делаете? Я её season’ил и в духовке и на плите по многу раз и с разными маслами с высокой точкой дыма, НИ-ФИ-ГА! Яйца пригорают намертво так, что наждачкой не оттереть. Масло, даже из виноградных косточек, в основном липнет и всё портит во время сизонинга.

Я сдаюсь. Наблюдений больше не веду.

Линукс тут при том, что одинокий линуксоид должен сам себе готовить.

 , ,

spbzip
()

Эту историю мы назовем «почему я разлюбил QEMU...»

Форум — Talks

… или «как перестать бояться и разбить палаточный городок аккурат на минном поле».

В общем, ни для кого не секрет, что у нас тут семимильными шагами идет возврат от богомерзкого x86 к классической паре UNIX+RISC в ее современной реинкарнации: Linux+ARM. И так уже получилось, что на этот раз заход был не со стороны рабочих станций, а со всяких маломощных мобильников и малинок. Сбоку подают голос пользователи Apple Silicon, но их пока сравнительно мало.

Одновременно с этим, армов стало достаточно много, чтобы задуматься о том, как собирать под них софт. И если раньше для этого использовали кросс-компиляцию и всякие хаки, то сейчас у нас появилась прекрасная эмуляция вида qemu-arm-static с binfmt, исполняемые на x86. То есть, достаточно сделать чрут с армовой осью, а затем сказать ядру, чтобы для запуска бинарников с сигнатурой ARM он использовал qemu-arm-static - и вуаля, ваши армовые бинарники волшебным образом начинают работать на x86 машине, как родные.

Круто? Круто. Можно зачрутиться в систему, позапускать в ней всякие pacman и dpkg, чтобы получить корень, в котором затем выполнять сборку пакетов с помощью обычных makepkg, debuild и других дистротулов. Здорово? Здорово. И наплевать, что это медленнее кросс-сборок, потому что в разы проще и не требует от всего софта поддерживать префиксы для фейкового корня. А еще можно нативно повыполнять какие-то команды внутри чрута, чтобы получить корень, который затем можно скопировать на карту памяти вашего армового эмбеда.

Сейчас у нас есть как минимум два широко рапространенных инструмента для сборки чего-либо в эмуляции:

  • docker-buildx. Это такой docker-build на стероидах, который в том числе поддерживает сборку докер-образов для ARM (и других архитектур) на x86. Как? С помощью QEMU и binfmt, разумеется.
  • pi-gen с опцией USE_QEMU=1. Это официальная тулза для сборки образов Raspberry Pi. Суть почти та же: команды выполняются в чруте, чтобы получить образ для карты памяти.

Эти вещи удобны тем, что вы выполняете команды внутри вашей армовой ОС, как если бы работали непосредственно на ней. Особенно удобен докер, потому что докерфайл - это готовая документация по воспроизведению образа системы (при соблюдении определенных условий, но не суть).

В обоих случаях QEMU играет ключевую роль. И всё бы было хорошо, но он иногда падает. Либо сегфолтится, либо вылетает в какой-нибудь ассерт - разницы нет, суть в том, что эмуляция прерывается. Увы, но мой опыт активного использования qemu-arm-static показывает, что баги в нем хотя и фиксятся, но имеют свойство либо возвращаться с очередным мажорным релизом, либо что-то в ранее работающих воркфлоу может сломаться в новом неожиданном месте. Я не большой спец по QEMU, но таки делал репорты. Что-то исправлено, а что-то открыто до сих пор. Что хуже - поведение QEMU часто зависит от настроек хостовой ОС, и то, что вылетает на арче, не будет вылетать на дебиане.

«Не обновляй QEMU» - скажете вы. Да, но при очередном обновлении glibc в чруте, QEMU тоже может перестать работать из-за какого-нибудь нереализованного системного вызова, или редкого сочетания багов в glibc/QEMU. Поэтому можно угодить в ситуацию, когда старый QEMU уже не работает, а новый - еще не работает в вашем окружении.

Теперь, когда мы выяснили, что QEMU сам по себе не очень надежен, можно подумать - дескать, хрен бы с ним, ну падает и падает. В конце концов, безглючного софта не существует, и если QEMU упадет, то процесс просто прекратится, не так ли?

А вот нет.

Берем типичный сценарий современного использования QEMU - docker-buildx. В докерфайле у нас есть несколько команд RUN, которые выполняют всякие установки пакетов и прочие операции. А что происходит при установке пакетов, помимо распаковки и размещения файлов? Правильно, запускаются всякие хуки на баше. Спаунится пакетный менеджер, из него спаунится баш для скрипта, а из скрипта поочередно спаунятся команды. Коды возврата которых, разумеется, никто не проверяет. Ведь вряд ли у вас из под руда упадет какой-нибудь ls /, верно? Или, скажем, греп.

Но с QEMU они падают.

Вот что вы можете увидеть в эмуляции, пытаясь поставить пакет:

:: Proceed with installation? [Y/n]
:: Retrieving packages...
 openssl-3.1.4-1-aarch64 downloading...
 openssl-1.1-1.1.1.w-1-aarch64 downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
upgrading openssl...
installing openssl-1.1...
error: command terminated by signal 11: Segmentation fault
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

Я мог бы привести еще пяток примеров, но я не сохранил их, потому что пишу этот пост ради срача, а не как научную статью.

Внутри пост-инсталл хука происходит сегфолт, но поскольку почти никто не ставит в скриптах set -e и не проверяет код возврата тривиальных (ха-ха) операций, установленный пакет будет находиться в неопределенном состоянии. И сборка будет продолжаться, потому что код возврата всего скрипта был нулевой! Пакет вроде поставлен, но корректно ли?

Эта проблема касается не только pacman и dpkg, но и вообще любых шелл-скриптов. Кто вообще может гарантировать, что во всех этих килопарсеках портянок, запускающихся в эмуляции, не будет вот таких непредсказуемых сбоев, на которые никто и никогда не делал тесткейс, потому что они, по мнению авторов скриптов, не могут сбойнуть?

Самое страшное тут то, что docker-buildx и сборки образов через QEMU сейчас получили повальное распространение из-за своей простоты. Вокруг нас может быть уже полно устройств с ОС, поломанными еще на этапе сборки. К чему это может привести - время покажет. Как минимум - к сложно детектируемым ошибкам у конечного пользователя.

Ну и самый интересный вопрос: хто виноват?

  • Ну, в меньшей степени виноват QEMU. Это отличная утилита, которая просто делает свою работу. Она не виновата в том, что ее начали использовать в настолько комплексных окружениях. В некоторых ситуациях она сегфолтится, в других - сознательно падает с какой-то диагностикой. Это лучшее поведение, какое только можно придумать в этом случае.
  • docker-buildx? На своем уровне он тоже делает, что может.
  • Баш-портянки? Пожалуй, они. Точнее, общая низкая культура их кода. Коды возврата не проверяются, фейлы пайпов не проверяются. Кушаем, как есть.
  • А может, виноваты диды? В своей бесконечной мудрости отцы UNIX сделали шелл, который ведет себя как сишечка: когда ты хочешь выстрелить себе в ногу, тебе услужливо подают патрон и усаживают в кресло. Ничто не мешало сделать неявную проверку кода возврата и выход из скрипта с ошибкой, и требовать явно эту ошибку игнорить при необходимости. Они предполагали, что этим будут пользоваться люди, которые знают, что делают, но теперь, спустя сорок лет, мы имеем в скриптах повальный чад кутежа.

А шо делать-то?

А ничего. Исправить все скрипты в мире не представляется возможным. Слепая установка set -e или ее аналоги на более низком уровне может привести к другим проблемам. Остаются два пути:

  • Использовать чистые кросс-сборки без эмуляции, как делали другие мудрые диды (мое почтение NetBSD c их тулчейном).
  • Использовать сорта чрутов (включая докер), но на реальном железе, а при нехватке производительности - подключать distcc.

В обоих случаях теряется удобство связки docker+QEMU, но за это удобство мы платим прямо сейчас щелчком взрывателя под жопой.

 , ,

liksys
()

Хочу вкатиться в 3D принтеры. Кто че подскажет?

Форум — Talks

Короче хочу печатать красивые корпуса для своих девайсов. Немного умею моделлить в блендере, а он умеет в STL.

Вопросы:

  1. Посоветуйте принтер до 20к. Какой подойдет лучше для новичка?

  2. Поскольку собираюсь печатать корпуса, какие есть ограничения по полым объектам? Как принтер печатает «крышу» корпуса без подпорок?

Спасибо!

 

monobogdan1337
()

Чего бы почитать

Форум — Talks

Возможно off-topic, но мнение местных обывателей было бы очень интересно.

Нет, вопрос не об технической литературе, и не об учебниках.

Хотелось бы услышать рекомендации именно о художественной литературе, почитать на досуге.

Хорошим примером того что недавно зашло самому будет «Лабиринт отражений» и «Императоры иллюзий» от Лукьяненко.

Ну, понеслась…

 

bugfixer
()

Интернет-зависимость

Форум — Talks

Все постят тупняк, а я чем хуже.

Нет, это не реквест забана, потому что ЛОР это один из десятка способов убивания времени (телеграм чаты, социальные сети, новостные сайты, хабр и т. д.) и это ничего не изменило бы.

Устроить цифровой детокс не позволяет специфика трудовой деятельности (без компьютера мне будет нечего кушать на перспективе).

От бессмысленного времяпровождения страдает работа (делаю всё в последний момент => дополнительный стресс), сфера отношений с друзьями (опаздываю на встречи, потому что «ещё одна статья», «ещё одно сообщение» и т. д.). Персональное «окно овертона» медленно ползёт, куда мне совсем не хочется.

Деятельность типа там прогулок на природе, спорта вроде как приносит удовольствие, но всегда трудно решиться начать, а при регулярном повторении ненапряжной деятельности (типа тех же прогулок), в них постепенно прокрадывается интернет (почему бы не фотографировать всё хоть немного необычное и не постить во все телеграм-чаты, где я состою?).

На мой взгляд, процесс идёт уже много лет, при этом самое интересное, что моё объективное качество жизни в течении этих нескольких лет растёт:

- Безработный студент-девственник, ковыряющий линуксы всё свободное время и считающий, что все окружающие люди недостойны его внимания и мечтающий править миром (разумеется, ничего для этого не делаяющий, кроме фантазирования), старательно и демонстративно избегающий общества.

- Оказывается, с людьми иногда можно приятно общаться, а «тяночки» иногда даже дают и иногда даже сами надеятся на что-то (правда, не долго, но это технические детали, главное галочку можно поставить, со времён школы не страдал от неудач в личной жизни дольше нескольких дней)

- Оказывается, за твоё хобби могут платить в несколько раз больше средней зарплаты по стране, а реально напрягаться нужно от силы час в день, если считать в среднем за год. Внезапно, 90% проблем в жизни перешло из категории «проблем» в категорию «расходов».

- Всю жизнь пугался от новостей вида «кого-то посадили за одиночный пикет» и негодавал от того, что в твоём городе убрали троллейбусы, как до этого трамваи? Вот тебе другая страна, где таких ассоциаций нет и в твоём субъективном восприятии всё выглядит максимально правильно (примерно как в советских книжках рисовали коммунизм будущего). И даже оказывается при общении на английском не чувствуешь принципиальной разницы с русским (только на некоторые темы слова сложно подбирать), да и местный язык постепенно учится и вроде каждая мелочь «я смог оформить заказ в ресторане не сказав ни слова на английском» отправляет в эйфорию. Статьи обещают падение «розовых очков» за полгода после эмиграции, а у тебя с каждым месяцем уже год (а если не считать двухлетнюю паузу, то полтора года) всё крепнет желание просто лечь где-нибудь посередине улицы, раскинуть руки в стороны и проникаться любовью к городу и стране, где ты теперь живёшь (нет, ну, разумеется, я веду себя адекватно и так не делаю). И это даже несмотря на весь негатив вроде ковид-ограничений.

- Вот тебе конкретные цели в жизни вместо недостижимого манямирка «править миром» - получить паспорт новой страны (программа-миниум с конкретными шагами на несколько лет, которые я на 146% могу осилить), опционально заработать неприлично много денег (должны же быть не простые мечты, не так ли? в любом случае это уже не вопрос выживания). Перестал ходить кругами по квартире и мечтать как «космические корабли будут бороздить большой театр» (под, разумеется, моим руководством), вот вообще. Все мечты и фантазии стали конкретными и достижимыми.

- Всю жизнь сторонился общества? Уже знаешь 5-10 местных, причём половина прожили здесь всю жизнь (общаться только с выходцами из СНГ это не спортивно). При этом ты сам был инициатором знакомства в большинстве случаев и в общении с тобой часто заинтересованы. Да, кто-то мог бы лучше, но успешность социальной интеграции явно не хуже среднего. Особенно на фоне отзывов «все иностранцы холодные и закрытые».

- Пара бонусов. Сам собой нашёлся вариант почти гарантированно обеспечить себе следующий три года (как раз до момента появления права на подачу прошения на гражданства - 4 года с учётом местного образования) - аспирантура (при этом напрягаться опять же придётся в среднем меньше часа в день в среднем за год). Думал, что завалил вариант с карьерой программиста? Так нет же ж, говорят, что хорошо, что ты резидент ЕС и предлагают с осени переоформиться на европейские проекты и зарплаты (в то время когда тебя полностью устраивало даже 1600 евро в месяц за аспирантуру). То есть я умудряюсь иметь две полностью независимые успешные карьерные ветки (наука + айти, независимые буквально - у меня два резюме двух «разных людей», хотя, конечно, информация перетекает туда-сюда, но ключевые моменты разные).

То есть за последние годы я перестал уходить от реальности в полностью придуманные миры, объективно обустроил что-то в своей жизни (ну местами не до конца - но покажите мне человека, у кого в жизни всё на 100% достигнуто и закончено?), но при этом всё больше ухожу в мир виртуальный - чаты, форумы и соцсети. При этом ставля под угрозу свои объективные достижения (но до сих пор везёт) и не находя удовольствия и удовлетворения от убивания времени. Возникает парадоксальная ситуация, что я избегаю действий, дающие сильные эмоции и эйфорию (и при этом без объективных причин) в пользу действий не дающих ничего ни объективно, ни субъективно. Ну либо всё, что я делаю IRL, я делаю, чтобы потом об этом похвастаться в Интернете (надо становиться блоггером?). Так или иначе, всё больше дней, когда я ничего не могу себя заставить делать, кроме скроллинга лент разных сайтов и соцсетей. А надо. Хотя бы немного. А даже дома прибраться не могу себя заставить.

Короче, либо надо симптоматически бороться с интернет-зависимостью, либо я не знаю. Можете ставить мне диагнозы, устраивать срачи по политике и т. д. Я не особо надеюсь, что получу какие-то дельные советы, но некоторые персонажи здесь постят гораздо больше тупняка, а у меня материал целых нескольких лет жизни и 1103 score. И я даже ни в коем случае не считаю мир вокруг несправедливым, мои проблемы полностью субъективны.

 ,

KivApple
()

Выбор 3д принтера

Форум — Linux-hardware

Настало время обзавестить 3д принтером и печатать всякую хрень. Как показало непродолжительное гугление, на рынке сейчас два типа принтеров для домашнего использования: экструзионные (FDM) и фотополимерные (стереолитография SLA, DLP и подобные). Первые простые и уже давно на рынке, но качество и точность хромает. Вторые же, относительно недавно стали доступны, но зато могут печатать с высокой детализацией.

Есть на ЛОРе владельцы таких SLA-принтеров? Какие ваши впечатления? Много возни с фотополимерами? Нужна ли отмывочная станция?

Перемещено xaizek из talks

 , ,

cocucka
()

Переехал на кучу утилит переписаных на Rust

Форум — Talks

Тег «угадай автора по заголовку».

Q: Зачем?

A: Ради эксперимента, повысится комфорт пользования терминалом или нет.

Q: Причем тут Rust?

A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким же успехом можно было бы и npm install, но тормозило бы. Ближе opam install или go get

Теперь мой терминал по истине свистит и пердит. Даю список если кому надо.

  • alacritty - GPU ускоренный терминал.
  • alias cat=bat- cat с хорошей подсветкой синтаксиса и нумерацией строк и пейджером.
  • broot - навигатор по каталогам, который одновременно показывает дерево, но адекватно себя ведет с громадными каталогами, показывая их по чуть-чуть.
  • dust - утилита для исследования места занимаемого каталогами, сортирует деревья файлов начиная с самых больших каталогов.
  • alias ls="exa -l --group-directories-first" ls с хорошими дефолтами, tree встроено.
  • rip Утилита для удаления файлов с разными удобными фичами и восстановлением
  • hors "How do I parse float in javascript?" - находит короткий ответ в интернетах и отвечает. Чуть лучше работает чем оригинал - howdoi.
  • mdcat - cat для Markdown, для отображения удобочитаемой формы документа. Ссылки делает сносками.
  • alias grep=rg - очень быстрый и удобный grep
  • starship - shell command prompt, показывает кучу полезной информации в зависимости от контекста, например git branch если в репозитории, версии софта и ЯП если в каталогах с сорцами, hostname если зайти по ssh.
  • tokei - сборщик статистики по ЯП и строкам кода в деревьях исходников.
  • hyperfine - бенчмарк утилита, time на стероидах.
  • tldr- сокращенная версия man, показывает как чем пользоваться в примерах, а не выдавая полную справку. Страницы поддерживаются сообществом для громадного количества утилит. Изначальный проект - https://tldr.sh/
  • topgrade - универсальная утилита обновления. При запуске пытается обновить все что видит - системные пакеты, vim пакеты и так далее.
  • runiq - быстрый sort | uniq с разными алгоритмами внутри.
  • fd - быстрый и удобный find, удобно чтобы не вспоминать заковыристые ключи
  • fselect - поисковик файлов с SQL-like языком запросов
  • sd - как sed, только интуитивный
  • i3status-rs - Сразу i3status+i3blocks. Плюс батарейки к i3blocks, которые как я понял автор решил убрать.
  • onefetch - Вроде neofetch, но для сорцов. Просто запустите эту штуку с корня любого git репа, клонированого локально
  • wasmtime - JIT runtime для WASI стандарта. Пускалка WebAssembly приложений.
  • scriptisto - «shebang-интерпретатор» для компилируемых языков, прозрачно собирает и кеширует нативные сборки кода

Что не зашло совсем

Все вышеперечисленое ставится через cargo install <package_name> (кроме alacritty), название смотрите на страницах. Сам cargo и Rust ставятся через

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

P.S. Призываю остальных взять ЯП вашей секты и поставить такой эксперимент и отписаться. Да-да, расскажите как вы пользовались ls на Java. Пользователей emacs прошу не беспокоить

 , , ,

vertexua
()

Панорама рабочего хаоса

Галерея — Рабочие места

Четыре года назад отремонтировал полуподвальную комнату (покрасил, постелил дерево на пол). Последние два года в ней и обитаю на удалёнке.

Слева направо:

  • маленькая полка с книжками. В основном, жены (Страуструп, Компьютерные сети, UNIX, по тестированию, перформансу, Роберт Лав и всякие тонкости американского налогообложения). Ну и мои сопроматы с «Digital Signal Processing» и прочими «Common Lisp: The Language»
  • два длинных стола, заваленных огрызками бумаг со схемами, электро- и автозапчастями, десятком различных MCU, препарированным центральным электронным блоком Вольво, паяльной станцией, блоком питания и осциллографом
  • кухонный стул
  • под столом стоят пара AMD ZEN (Naples и Rome), с пачкой NVMe и 200 GbE - для развлечений в части написания скоростных сетевых дисковых протоколов
  • два монитора, один рабочий, который широкоформатник (гадость), и рабочий ноут Thinkpad T430s
  • белая клавиатура - Cherry G83, выменял на работе 10 лет назад, когда уходил с неё, обосновав тем, что дорога, как память, ибо первый апстримный коммит на ней написал
  • в углу полка с электрозапчастями подпирает заклеиваемую книжку Гарри Поттера (деть порвал), а сверху придавливают фолианты «Verilog HDL» и «Механика жидкости и газа»
  • блочный арбалет Crosspoint Sniper 370
  • гитара Ибанез, какие-то дрова типа GRG
  • фары от Вольво
  • в невидимой здесь подсобке - ещё электрозапчасти, лазерный принтер, старенький IvyBridge, работающий NAS’ом и хостом виртуалок, а также роутер с OpenWRT и какая-то старая ARMина с древней Федорой под pi-hole

Срач перманентный, место для очередного проекта очищается методом generational garbage collector: всё сдвигается вправо, нужные вещи выкапываются и переиспользуются, а ненужные падают в коробку. Всё так и есть, только пустые бутылки выбросил, да грязные носки в корзину с бельём сдал =)

Вся мебель - из Икеи.

За окном - ёлки и компрессор кондиционера.

>>> Просмотр (3088x1224, 1992 Kb)

 

mv
()

Пыли и мойки воздуха тред

Форум — Talks

Привет, ЛОР!

Выручай советом! Меня дико задолбала пыль дома. Раз в неделю у меня дома влажная уборка всего и вся, и при этом за неделю успевает выпасть такой слой пыли, что аж страшно становится. И я даже не представляю, откуда она может браться: мягкой мебели у меня сравнительно немного, а та что есть в основном с кожаной обивкой. Подскажи, что делать?

Как вариант, думаю купить какой-нибудь мегаразрекламированный девайс для мойки воздуха, но что-то меня гложат сомнения, что он хоть как-то поможет. Скажи, есть ли история успеха?

 , ,

hateyoufeel
()

Посоветуйте фильм

Форум — Talks

Что-то похожее на экзамен, куб, платформа

Мож фантастику какую с похожим духом. Или мистику. Короче чтобы был сюжет норм так =)

 ,

LINUX-ORG-RU
()

Описания языков

Форум — Talks

https://img.devrant.com/devrant/rant/r_684434_GX6Fn.jpg
https://old.reddit.com/r/ProgrammerHumor/comments/4mo21b/true_descriptions_of_languages/
https://argumate.tumblr.com/post/118013166244/python-what-if-everything-was-a-dict-java-what

Оригинал не нашёл. Перевод ниже.

Ъ:

Python: What if everything was a dict?
Java: What if everything was an object?
JavaScript: What if everything was a dict and an object?
C: What if everything was a pointer?
APL: What if everything was an array?
Tcl: What if everything was a string?
Prolog: What if everything was a term?
LISP: What if everything was a pair?
Scheme: What if everything was a function?
Haskell: What if everything was a monad?
Assembly: What if everything was a register?
Coq: What if everything was a type/proposition?
COBOL: WHAT IF EVERYTHING WAS UPPERCASE?
C#: What if everything was like Java, but different?
Ruby: What if everything was monkey patched?
Pascal: BEGIN What if everything was structured? END
C++: What if we added everything to the language?
C++11: What if we forgot to stop adding stuff?
Rust: What if garbage collection didn’t exist?
Go: What if we tried designing C a second time?
Perl: What if shell, sed, and awk were one language?
Perl6: What if we took the joke too far?
PHP: What if we wanted to make SQL injection easier?
VB: What if we wanted to allow anyone to program?
VB.NET: What if we wanted to stop them again?
Forth: What if everything was a stack?
ColorForth: What if the stack was green?
PostScript: What if everything was printed at 600dpi?
XSLT: What if everything was an XML element?
Make: What if everything was a dependency?
m4: What if everything was incomprehensibly quoted?
Scala: What if Haskell ran on the JVM?
Clojure: What if LISP ran on the JVM?
Lua: What if game developers got tired of C++?
Mathematica: What if Stephen Wolfram invented everything?
Malbolge: What if there is no god?

Перевод:

Python: А что если всё – словарь?
Java: А что если всё – объект?
JavaScript: А что если всё – и словарь, и объект?
C: А что если всё – указатель?
APL: А что если всё – массив?
Tcl: А что если всё – строка?
Prolog: А что если всё – терм?
LISP: А что если всё – пара?
Scheme: А что если всё – функция?
Haskell: А что если всё – монада?
Assembly: А что если всё – регистр?
Coq: А что если всё – тип/утверждение?
COBOL: А ЧТО ЕСЛИ ВСЁ – В ВЕРХНЕМ РЕГИСТРЕ?
C#: А что если всё – как Java, но по-другому?
Ruby: А что если всё патчится на лету, по-обезьяньи?
Pascal: BEGIN А что если всё структурировано? END
C++: А что если в язык добавили всё?
C++11: А что если добавлять не прекращали?
Rust: А что если сборки мусора нет?
Go: А что если попробовать спроектировать Си ещё раз?
Perl: А что если shl, sed и awk – один язык?
Perl6: А что если затянуть эту шутку?
PHP: А что если облегчить инжекции SQL?
VB: А что если хотим позволить программировать кому угодно?
VB.NET: А что если всё же хотим их остановить?
Forth: А что если всё – стек?
ColorForth: А что если стек зелёный?
PostScript: А что если всё печатается на 600dpi?
XSLT: А что если всё – элемент XML?
Make: А что если всё – зависимость?
m4: А что если всё – в непонятных кавычках?
Scala: А что если Haskell работает в JVM?
Clojure: А что если LISP работает в JVM?
Lua: А что если игроделам надоел C++?
Mathematica: А что если стивен Вольфрам изобрёл всё?
Malbolge: А что если бога нет?

Баян?

 

question4
()

Посоветуйте фантастических фильмов

Форум — Talks

снятых НЕ на английском, не на русском, не на польском, не на японском языке

Болливуд не предлагать

 

next_time
()

Посоветуйте аниме...

Форум — Talks

...с условиями:

  • Никакого фансервиса, панцушотов, секса вообще.
  • Романтика и любовь допустимы, но не должны быть сюжетообразующими.
  • Никаких ОЯШей и школьников вообще.
  • Персонажи должны быть более-менее адекватными — то есть их действия должны соответствовать их целям и быть более-менее логичными в рамках сюжета (допускается совершение ошибок, но не непроходимая тупость), исключение — если они психи в медицинском смысле.
  • Никаких попаданцев (путешествия между параллельными мирами сами по себе допустимы).
  • Действие не должно происходить внутри компьютерной игры.

При чем тут Linux — сами знаете.

 

Vsevolod-linuxoid
()

Там опять Go ругают

Форум — Development

сабж

Статья вызвала бурю эмоций на HN.

Сама статья мне очень понравилась. Очень красочно описывает моё отношение к Go.

This fake “simplicity” runs deep in the Go ecosystem. Rust has the opposite problem - things look scary at first, but it’s for a good reason. The problems tackled have inherent complexity, and it takes some effort to model them appropriately.

Ну или как я люблю говорить: Go примитивный, а не простой.

PS: Работа со строками в Go напомнила недавний холивар (C рулит и педалит.). @grem’у понравится. Путь к файлу содержит недопустимые символы? Та забей!

@WitcherGeralt

 , ,

RazrFalcon
()

Право быть грубым

Форум — Talks

Историк Роберт Конквест однажды написал: «Поведение любой бюрократической организации лучше всего понять, если предположить, что она контролируется тайной кликой ее врагов».

Сегодня я узнал, что Инициатива Open Source достигла этой точки бюрократизации. Меня выгнали из их списков за то, что я слишком риторически настроен против некоторых недавних попыток подорвать пункты 5 и 6 OSD. И это несмотря на тот факт, что я получил голоса поддержки от нескольких участников списка, которые поблагодарили меня за желание высказаться.

Ни для кого не должно быть новостью, что предпринимаются попытки изменить - я бы сказал, испортить - фундаментальные предпосылки культуры открытого кода. Вместо меритократии и «покажи мне код» нас теперь заставляют вести себя так, чтобы никто никогда не чувствовал себя неловко.

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

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

Ценой культуры, в которой избегание оскорблений побеждает свободу говорить, является то, что крики начинают контролировать дискурс. К нашему великому стыду, люди, которые должны знать лучше, такие как модераторы списков OSI и BOD, усвоили упреждающую отдачу «криклингу». Они больше даже не ждут, когда жертвы soi-недееспособных будут жаловаться, прежде чем использовать бан-хамер.

Мы подвергаемся социальному насилию из-за того, что являемся культурой, в которой свобода является высшей ценностью из той культуры, в которой свобода подавляется через подавление «неправильного мышления» и «неправильного высказывания». Наши враги - такие люди, как Коралине Ада-Эмке - даже не удосуживаются скрывать эту цель.

Наша культура еще не смертельно повреждена, но тенденция не очень хорошая. OSI был подкуплен и предает свою основополагающую приверженность свободе. «Кодексы поведения», предназначенные для регулирования даже внепроектного общения разработчиков, стали слишком распространенными.

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

http://esr.ibiblio.org/?p=8609

 ,

psv1967
()

Ebal — интерфейс доступа для Cabal из Emacs

Форум — Talks

Опубликован исходный код расширения Ebal — интерфейс доступа к пакетному менеджеру Cabal из Emacs. Проект находится на ранней стадии разработки, однако, уже доступны основные команды Cabal, такие как:

  • cabal build
  • cabal configure
  • cabal sdist
  • cabal bench
  • cabal freeze
  • cabal fetch
  • cabal install
  • cabal check
  • cabal list
  • cabal sandbox init
  • cabal info
  • cabal test
  • cabal update
  • cabal sandbox delete
  • cabal clean

    Так же, есть возможность вешать хуки на событие выполнения команды. Имеется возможность кастомизации настроек, таких как путь к исполняемому файлу Cabal:
    ebal-cabal-executable ⇒ nil
    , политика создания песочницы:
    ebal-sandboxing ⇒ ask
    и другие полезные настройки.


    Интерфейс пользователя использует подход, применяемый, например, в magit: https://raw.githubusercontent.com/mrkkrp/ebal/gh-pages/ebal-execute.png

    адрес репозитория: https://github.com/mrkkrp/ebalПеремещено JB из development

 , ,

zarkone
()

Хочешь стать программистом? Спроси меня как!

Форум — Talks

Хорошая прошлогодняя статья, на которую я наткнулся благодаря переводу с хабра. Но хабр я не читаю, и вообще это западло, поэтому вот ссылка на оригинал:

10 Signs You Will Suck at Programming

Краткое содержание: программистом может стать любой, надо просто любить, уметь и хотеть думать головой.

Для всех кто раздумывает стать программистом, или у кого есть друзья, пристающие с вопросами «как ты стал программистом».

 

morse
()

Дачная лаборатория

Галерея — Рабочие места

Собственно, пока были новогодние праздники решил заняться самым неблагодарным делом - навести порядок в дачной лаборатории, выкинуть хлам старый. Собственно, на фотографии она и есть. А чуть ниже панель управления этой лабораторией в homeassistant.

Оборудование (основное):

  • Asus N75SF (Доживает свои дни на даче)
  • HP Envy 13 (Текущая рабочая машинка)
  • 3d-принтер Flying bear P902
  • Паяльная станция Lukey 702. Только сейчас понял, что ей уже 15 лет. Ну и оловоотсос китайский в добавок.
  • Осциллограф: Rigol DS1052E. До 100Мгц я его так и не разогнал, т.к. не было надобности.
  • Камеры: Над осциллом дешевая китайская yoosee с PTZ. Включаем RTSP, режем доступ к облаку на роутере, профит. Еще по участку в роутеры на OpenWRT (их 4 штуки, между ними гигабит, роаминг через 802.11r) воткнуто несколько старых веб камер, отдающие поток через mjpeg-streamer. Недавно добыл для экспериментов две xiaomi dafang на которые ставится прошивка dafang-hacks. Пожалуй, на этом варианте и остановлюсь.
  • Управляющие устройства для homeassistant: Тут сборная солянка. Часть - мои старые проекты на nrf24l01, часть на esp8266 с esphome (некоторые мои платы, некоторые готовые девайсы от sonoff перешитые esphome). Дополнительно по дому выключатели xiaomi aqara и некоторые датчики из этого комплекта, которые работают через zigbee2mqtt. Облака? Шпионаж? Нет, не слышали.
  • Освещение: Из-за потолка под скатом крыши, поставил светодиодные ленты. Ими управляют мои самопальные модули, плавно зажигающие и гасящие их.

Софт:

  • Octoprint (веб-интерфейс для 3д-принтера)
  • cncjs (веб-интерфейс для станка с ЧПУ. Иногда приходится юзать bCNC, так как autolevel’инг в cncjs уже который год никак не допилят)
  • shinobi (сервер видеонаблюдения. Пока только разворачиваю, думаю попробовать его сдружить с аппаратным m2m mfc на exynos в odroid-x2).
  • wireguard - соединяет дом и дачу в одну локальную сеть. С тех пор, как провели оптику пинг от дачи до дома 4 мс.
  • Steam - использую, чтобы иногда поиграться. Видеокарта стоит в сервере дома, на дачу идет стрим. Задержка 20-30мс, что вполне достаточно.
  • Роутеры: Везде исключительно OpenWRT с типовой для меня конфигурацией.
  • Homeassistant - собственно, пульт управления для умнодома.
  • Chef - конфигурацию всех одноплатников под все задачи давно перестал делать руками, решил перейти на chef. Сейчас в процессе активного осваивания рубей и переписывания на нем всего и вся.
  • Jenkins - по расписанию собирает ночью OpenWRT с типовой конфигурацией и деплоит на роутеры. Вот такие вот хардкорные обновления.

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

Самое главное, что есть - удаленное управление, которое позволяет отправить задачи на 3д-принтер/станок с чпу, что займут много времени и шума, а когда приедешь на дачу просто снимаешь готовый результат и не тратишь время.

>>> Просмотр (1920x2530, 1784 Kb)

 , mad skillz, ,

ncrmnt
()

Визитка под управлением Linux

Форум — Talks

Стоимость материалов 2,88$. Все крутится на маленьком 8 МБ флеш-чипе. Загрузчик умещается в 256 КБ, ядро - 1,6 МБ, а вся корневая файловая система - 2,4 МБ. Исходники в статье. Ссылка перевод на хабр (как подсказали в треде внизу)

 , визитка

mul4
()

TT2020 — свободный шрифт пишущей машинки от Фредрика Брэннана

Новости — Open Source
Группа Open Source

1 января 2020 года Фредрик Брэннан (Fredrick Brennan) представил свободный шрифт «TT2020» — многоязычный шрифт пишущей машинки созданый с помощью редактора шрифтов FontForge.

Особенности шрифта

  • Реалистичная симуляци дефектов печати текста свойственных печатным машинкам;
  • Многоязычность;
  • 9 начертаний «дефектов» для каждого символа в каждом из 6 стилей шрифта;
  • Лицензия: SIL OFLv1.1 (SIL Open Font License, version 1.1).

Среди предыдущих шрифтовых работ стоит отметить свободные шрифты «Chomsky» (стилизованый под текст заголовка издания «The New York Times»), «Some Time Later» (стилизованый под шрифты из комиксов и мультсериала «Губка Боб Квадратные Штаны»), «LCD Font» (стилизованый под 14-сегментный шрифт ЖК-дисплеев) и другие.

Фредрик также принимает активное участие в разработке и подготовке следующего релиза FontForge.

>>> Подробности

 , typewriter,

atsym
()