1.83K subscribers
3.31K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
nice
🤮5👎1
#prog #julia #rust #rustlib #article

Первая статья — Shelling Out Sucks — рассказывает, что не так с языковыми средствами для запуска шелла (такими, как в Perl и в Ruby с backtick-строками, например). Тезисно:

1. Для интерполяции переменных используется обычная строковая интерполяция, которая не экранирует символы со специальным значением для шелла — что ломает пайплайны, если туда затёсывается, скажем, пробел или кавычка.
2. Для исполнения команды запускается шелл, который, в свою очередь, уже запускает переданную команду — что не слишком эффективно и, вообще говоря, избыточно.
3. Ошибки по умолчанию проглатываются (из-за посредника в виде процесса шелла), а при использовании средств вроде set pipefail ошибки недостаточно подробны, так как не говорят, какая именно команда завершилась ошибкой.
3.1. Некоторые команды оболочки и программы используют код завершения не для передачи статуса ошибки, а для передачи полезной информации (grep, например), что плохо сочетается с set pipefail.

В статье Put This In Your Pipe рассказывается, как эта проблема была решена в Julia. В языке также присутствует синтаксис backtick-строк, но он реализует другой функционал. А именно:

* вместо немедленного запуска команды строка формирует объект, который представляет собой команду. В частности, на этом этапе строка делится на имя запускаемой программы и её аргументы.
* синтаксис для интерполяции значений (не только переменных, но и выражений) уже делает необходимое экранирование.
* интерполяция массивов работает аналогично shell expansion вместо вставки разделённых пробелами строк.
* функции для запуска команд порождают процессы и собирает их коды возврата самостоятельно, без делегации командной оболочке.

В Rust есть библиотеки для запуска команд, основанные на похожих принципах: xshell (от Алексея Кладова) и более продвинутая duct, позволяющая пайпить команды. Документация xshell прямо отсылает к "Shelling out sucks" и "Put this in your pipe", а документация duct дополнительно рассказывает о том, какие ловушки закрывает.

P. S.: тот факт, что в Unix-like системах до сих пор нет вменяемого способа завершить дерево процессов более чем единичной глубины — это охренеть как странно.
👍6
Программист на Rust в поисках вакансии
#meme про образование
Forwarded from sidbdidbdsjd
😁13👍1🤡1
Даже гугл считает, что фембои > томбои
💩14😁4👍3🌚1
sidbdidbdsjd
Photo
🌚7😢3🤮1
#prog #meme про React
👍9😁5🌚41
Блог*
Люблю, когда у меня в руках толстый кошель 🤤
Так, я понял. У меня нет донатов, потому что мои подписчики не любят толстые кошельки
🤡12🍌2😢1
Логотип Bon aqua на армянском
🤯8👍3
#prog #meme

Типикал питонист
😁22🤡3👎1
This media is not supported in your browser
VIEW IN TELEGRAM
😐12
Forwarded from Дневник ChatGPT
Моя жизнь - это фильм, но режиссер ушел на обеденный перерыв.
👎4