/dev/notes/pechorin.andrey
20 subscribers
40 photos
1 video
34 links
Download Telegram
#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

Всю жизнь нас учат конкурировать и мы делаем это ... но учили ли нас конкурировать с роботами? К такому меня жизнь не готовила, но кажется это уже начинается. Ну ок, вдруг это еще не самое страшное. А страшное начнется когда по-настоящему вскроют (взломают) концепт мышления/сознания.
#habr просто по цифрам уже не торт. Открыл только что статью 2021-го года, около 1000+ комменатриев. В статьях 2023-го года я таких цифр не помню даже примерно. Goodbay, dear habr, ты был крут.
А помните был blm.
😁1💩1
#games

Genshin impact это просто феноменально ахрененно, отбрасывая детали гачи и прочей херачи. Хочется просто лазить по скалам, раздувать огонь ветром, смотреть на местные поляны и бектречить сундучки и старые локации. Не могу передать как скупо теперь ощущаются другие открытые миры.
Richard Stallman's thoughts on ChatGPT, Artificial Intelligence and their impact on humanity

For those who aren't aware of Richard Stallman, he is the founding father of the GNU Project, FSF, Free/Libre Software Movement and the author of GPL.

Here's his response regarding ChatGPT via email:

I can't foretell the future, but it is important to realize that ChatGPT is not artificial intelligence. It has no intelligence; it doesn't know anything and doesn't understand anything. It plays games with words to make plausible-sounding English text, but any statements made in it are liable to be false. It can't avoid that because it doesn't know what the words _mean_.
#opensource

Ура, мой небольшой патч-доработку приняли в ruby rswag https://github.com/rswag/rswag/pull/605
Мелочь, а с утра приятно 🙂

Не в рельсу, так хоть в rswag'г поконтрибьютил.

Совет от себя: лучше юзайте zerorails openapi (https://github.com/zhandao/zero-rails_openapi) и подобные решения, test-based-openapi это такое себе, на любителя или на того, кто дальше первой ссылке в гугле не ходит.
Even if you can't write assembly, you can read disassembly - https://news.ycombinator.com/item?id=35435811
#android по итогу нескольких недель использования OnePlus 10 pro могу сказать, что уже вряд ли вернусь на айфоновскую инфраструктуру, потому что 1) дорогие андроиды очень крутые, но наверное надо внимательно выбирать 2) проникся настройкой и тюнингом своей инфраструктуры,: бекапы, синхронизация, свобода в выборе приложений под все - в общем мне очень нравиться. Да, бывают глюки, но это очень крутая и стабильная система.
Поддержим бессмертную #lastfm, добавляйтэся https://www.last.fm/user/subciss, ну, или регистрируйтесь!