/dev/notes/pechorin.andrey
20 subscribers
40 photos
1 video
34 links
Download Telegram
Object Storage is an Object Storage

#цитаты_из_интернета
#linux

Не такие уж и сложные исходники systemd оказываются: https://github.com/systemd/systemd/blob/main/src/core/job.c Это конечно беглая оценка, но после всего вычитанного в интернете ожидал увидеть какую-нибудь убойную си-портянку, но в итоге даже мне не-сишнику было понятно что примерно происходит в коде
#dev #bash #сомнения

Столько философских дум у меня вообще ничего не вызывало. Сидишь пишешь эти портянки на баше, и думаешь - а может нахер его, взять ruby или go и пусть себе дергают system вызовы? Потом думаешь - нет уж, допишу на баше, и абстрагирую. Упарываешься в абстрагирование на баше и понимаешь, что проще написать as is и забить, уж больно не уклюжэ все эти высоко-уровневые абстракции выражаются на баше. Да даже простые абстракции не очень удобно выражать. В общем, хрен знает.

Дописываю уже какую версию своего provise/backup/restore - скрипта для своих маленьких серваков с докером. И все это порой так неуклюже, если честно. Зато работает для меня и моих серваков.

Успокаиваю себе так - это hand crafted development, тут от души и уникально.

Программисты должны хотеть унифицировать, это как бы естественное желание — но баш, блин, это прям испытание воли для унификатора.

Наверное его нужно принять и очень сильно полюбить. После осознания команды test и отказа от if у меня как-то получше пошло.

P.S. - средства провизионинга ака ansible не предлагать, знаю, цель не развернуть, а в чем-то другом ... пока не понял в чем.
#bash

Шла 2-ая неделя осознания bash scripting'а, а значит я уже готов подойти к самой больной теме для меня: как вернуть массив из bash-функции (и обработать его). Открываю ящик пандоры. В целом, после осознания IFS стало проще эту проблему рассматривать.
#bash

Дописал свою бек-апилку на bash'е. За время работы над этим набором скриптов узнал и осознал про баш и линукс так много, как не узнавал за несколько лет работы. Линукс конечно "прост" (как говорят) в концепции, но на деле это тысячи мелочей и делателей, и чтение любого мана на какую-нибудь около ядровую тему - целая работа. Мозг очень долго вставал на тему того как можно безопасно переадресовывать uid из хоста в контейнера — но дело даже не в самой концепции, а в том как это все подружить с докером, бекапами, правами и прочим.

В остальном же я понял, что нужно изучать ansible и не выпендриваться :)

- тема безопасности контейнеров заслуживает внимания (да и любая другая тема в отрасли, но это прям очень важная тема оказалась - https://arxiv.org/pdf/2104.07508.pdf), наверное за рутовые контейнеры в рутовом докере надо ругать, ну или как в основном сейчас делают, надеятся что создатели образов будут указывать пользователя контейнера

- как подсказал мне один мой давний друг, что это стокгольмский синдром, но в какой-то момент баш начинает нравиться; но писать на нем что-то большее 500 строк уже становится трудно ... и на самом деле лениво. 😀 а стиль написани на нем должен быть максимально "в лоб", потому что иначе это не безопасно, особенно когда распространяешь скрипты в интернете ... 😃

https://github.com/pechorin/pbr.sh
#dev #ansible #bash #гештальт_закрыт

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

Но поддерживать все эти вещи ... короче, я попробовал перевести пару своих хостов, их развертывание, бекапы и восстановление теперь уже на такую связки (уйдя от plain bash + restic): ansible -> bash + jinja2 templates

И о боги, как же проще теперь программировать bash логику с jinja, спасибо ansible.

При этом на хост:
- ansbile генерирует и заливает два скрипта: backup.sh и restore.sh, которые можно просто запустить (там уже все настроено)
- скрипт на бекап добавляется в крон
- после успешного или не успешного бекапа мне приходит уведомление в телегу :)

Так же смог зафигачить playbook с local action'ом: локальная тачка теперь бекапится каждую ночь (если ноутбук работает) с самыми hot данными, и раз в неделю делается archive бекап с всякими фотками/книгами и прочими cold данными.

Итого имеем (на мой вкус):
- закрытый гештальт на тему бекапов, как локальных так и хостовых.
- ansible это круто, и это мега правильно, потому что написов несколько тысяч строк кода на баше (и переписав несколько раз программу) ты приходишь для себя к некому майндсэту готовых паттернов (а баш дает большое разнообразие в выборе этих паттернов, поэтому выносит мозг) и по сути ansible все это заменяет давая тебе нужные reusable блоки.

Немного на тему безопасности:
- Немного подзабил и засвечиваю credentials данные в env переменных в скриптах, так делают все, но это очень плохо. В следующей итерации перепишу на такой способ доступный только в bash:

restic --password-file=<(echo $backup_storage_password)

- файл roles_webserver_tasks_main.yml не только настраивает сервер, но и делает namespace remapping, чтобы ваши контейнеры не имели доступа к руту хоста.

https://gist.github.com/pechorin/ebb3991a118d804b5a7bee20a47e599c
👍2
Forwarded from Двач
This media is not supported in your browser
VIEW IN TELEGRAM
На размышление 30 секунд
😁3
Станем сложнее же.
#js #оптимизации_компилятора

Пару лет считал себя недостаточно умным для статьи https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html

Если кратко, то ничего не изменилось, но давайте о коде:


function f(o) {
return o.x
}

f({ x: 1 })
f({ x: 2 })


Такой код будет жестко закеширован (inline caching) компилятором v8, но чтобы это было возможным нужно понять что объекты, а точнее их поля одинаковы (shapes).

Есть проблема, shape'ы объектов легко могут быть не равны, при внешней схожести:


function A() { this.x = 1 }
function B() { this.x = 1 }

var a = new A,
b = new B,
c = { x: 1 },
d = { x: 1, y: 1 }

delete d.y
// a, b, c, d all have DIFFERENT SHAPES for V8


Но по итогу не надо об этом беспокоиться. Эта штука интересна с точки зрения того как v8 оптимизирует и компилирует код в более эффективное представление. Интересно, есть ли шейпы в ruby компиляторе.

Успокоительный итог от автора:

> Indeed worrying about polymorphism is usually futile. Instead benchmark your code on a realistic dataset, profile it for hotspots and if any of them are JS related - check out IR that optimizing compiler produces.

> If in the middle of your tight number crunching loop you see IR instruction called XYZGeneric or anything marked with red changes[*] (aka “changes everything”) marker - then (only then!) it might be the right time to start worrying.
Forwarded from Двач
Справедливо
😁1
#dev #search

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

Вроде ничего так, что github так подробно делится такими важными внутренними архитектурами и решениями — не каждый корпорат будет таким заниматься 🙂

https://habr.com/ru/company/skillfactory/blog/718350/
#android

Таки решился оставить комфортную инфраструктуру Эпла. Андроид, конечно, подтянулся за последние годы, и ощущения от oneplus самые люксовые :) Да, бывают глюки, зато магазины приложений могу поставить разные, и есть даже опенсорсные вроде F-Droid.

Удивило что ни Google Диск, ни Яндекс Диск не умеют в автоматическую синхронизацию папок (именно папок и файлов, не фоток), Эпл это умел. Но и это решилось бесплатным приложением FolderSync.

Все мои приложения есть на обоих платформах. Заметки фигачу в Obsidian, так что проблем с отказом от стандартных Эпловских заметок не было.

А разделение экрана на Андроиде вообще бомба, и не думал что так удобно может быть, а не квадратик в углу как у Эпла (а с санкциями теперь и не посмотришь таким образом Ютюб).

Короче норм. Амолед экраны Самсунга победили.
Last.fm разбанили, за это спасибо, перед приездом товарища Си наверное 😀
🔥1
#openai

Всю жизнь нас учат конкурировать и мы делаем это ... но учили ли нас конкурировать с роботами? К такому меня жизнь не готовила, но кажется это уже начинается. Ну ок, вдруг это еще не самое страшное. А страшное начнется когда по-настоящему вскроют (взломают) концепт мышления/сознания.