1373
Пишу про Go, Vim, и про то, как я медленно ползу в сторону FAANG. С предложениями: @junsenpub
реакции есть, так что кто считает, что ему нужна помощь, пишите: @junsenpub
чтобы пост не был из одной строчки, поделюсь еще своими наблюдениями о собеседованиях
я уже давно собеседовал php-разработчиков на разные грейды, и около года как начал собеседовать go-разработчиков на senior и middle позиции
сейчас популярна такая тема, как хак-собеседований: когда ты не готовишься и разбираешься, а учишься умело наебать интервьюера, ответить на его вопросы с помощью чата таких же хакеров, как и ты, и задорно зателеть на работу, на которой потом работать ты, конечно же, не планируешь - только получать деньги
особенно громко таких ребят слышно в твиттере
да, на рынке есть разные неповоротливые конторы, где (если ты конечно как-то к ним пройдешь) в каком-нибудь отделе тебя просто могут не замечать полгода и платить тебе зарплату
но везде, где я работал (а я много где работал) - такая история не прокатила бы и человека уволили бы на испыте одним днем
в минусе от такого увольнения оказывается не компания - у компании постоянный поток кандидатов, и компания вместо него возьмет следующего, а мамких хакер - абсолютное большинство потратит в итоге на поиски компании столько времени, что можно было бы несколько раз подготовиться, получить знания и пройти собес
я разделяю мнение, что типичный собес плохо оценивает тебя как разраба, и скорее всего ты сможешь перекладывать json как бы ты его не прошел
но
мой опыт, как и опыт большого числа компаний показывает, что есть огромная корреляция между тем, насколько хорошо человек проходит собес (если на этом собесе была не только теория, но и задачи, дающие кандидату возможность показать, как он умеет думать), и тем, насколько хорошо он потом будет работать и делать задачи
сейчас риторика апологетов хака собесов стала меняться на "я просто хочу, чтобы на собесе проверяли знания; сейчас все собесы не работают, и мы это доказываем тем, что мы их хакаем"
как я уже сказал выше, если ты и найдешь собес, который можно наебать, то испытательный срок обойти будет сильно сложнее
ну и вседа держи в голове, что основное, что эти апологеты хотят - это бабки, так как все такие чаты платные
какой тут можно сделать вывод: если у тебя совсем нет знаний, и ты решил таким путем быстро получить работу - волшебной кнопки не бывает, и будь готов, что помимо денег за доступ к чату таких же "хакеров", ты еще потратишь очень много нервов, времени и сил на поиск компании, с которой этот номер пройдет
если у тебя уже есть какие-то знания - вероятно, полезней будет посмотреть примеры прохождения собесов на твоем стеке на youtube - это бесплатно, и очень часто совпадает с реальными собесами
в очередной раз все пошло не по плану :)
план, собственно, был описан выше
предприму еще одну попытку оживить тут активность, и в этот раз у меня есть, что писать
несколько недель назад я сменил работу - полностью перешел на golang и теперь пишу только на нем
сейчас вкатываюсь в процессы, смотрю как тут решаются разные задачи и радуюсь красоте этого языка :)
параллельно решил добить все-таки курс от бывшего mail.ru group на coursera, последний раз я остановился на том, что решил легендарную вторую домашку и дальше забил
курс оплачен, отображается (кстати, надолго ли? или coursera решила все-таки оставить уже начатые курсы?), и надеюсь его получится завершить
пока в планах описывать разное полезное с работы касательно go, архитектуры и процессов
собственно, далеко ходить не буду и отвечу на вопросы, которым я задавался когда менял стек: насколько сильно обычная backend-разработка на go отличается от разработки на php, как отличается реальная структура проекта от описанной в golang-layout, как отличаются паттерны описания сервисов и репозиториев от тех, что можно найти в разных статьях на medium и видосах на youtube?
ответ: почти не отличаются
те примеры, что видел я и базовую структуру которых повторял в своих проектах оказались очень похожими на правду, за исключением некоторых субъективных моментов
так что всем страждущим и желающим перейти на go могу однозначно посоветовать следующие ресурсы:
https://www.youtube.com/c/TheArtofDevelopment - хорошие построения базовой структуры rest-приложения, примеры построения ddd-архитектуры и в целом большое количество видосов и автор, умеющий объяснить
https://www.youtube.com/c/MaksimZhashkevych - примеры построения приложений, выделения структуры сервисов, репозиториев и интеграции всего этого вместе
https://github.com/golang-standards/project-layout - пример структуры приложения, де-факто стандарт
на практике многое отсюда заимствуется, что-то пропускается
кто-то считает этот пример плохим и пилит свой
но ознакомится и попробовать точно стоит
проверил бота выше, есть контакт
единственное, судя по всему из-за нагрузки, крипта конвертится чуть дольше, чем за 72 часа, у меня пришло почти через 4 дня
всем аллоха :)
сегодня будет лайвкодинг, без подготовки, в режиме реальной разработки: с гуглом и туплением, в общем всё, как обычно :)
цели на сегодня:
- написать несколько парсеров с интеграцией с какой-нибудь субд, скорее всего это будет что-то документоориентированное, и скорее всего - монга, но может и её аналоги
- поднять веб-сервер, написать несколько ручек, которые будут выводить данные, собранные парсерами
- если всё пройдёт относительно быстро (1.5-2 часа), то порефачить всё написанное и прикрутить к парсерам многопоточную работу; если всё пройдёт не быстро, то сделаю это либо на 2-ом стриме, либо за кадром
вчера протестировал трансляции в телеге, и, как оказалось, до трансляций в хорошем качестве тут ещё очень далеко, поэтому стримить буду на твиче
кому интересно включить что-то фоном - ссылка будет в канале в 18-19 по мск
постоянно обновляемый список пакетов/бандлов/софта, в котором обнаружена малварь или иные, связанные с последними событиями, вещи:
https://docs.google.com/spreadsheets/d/1H3xPB4PgWeFcHjZ7NOPtrcya_Ua4jUolWm-7z9-jSpQ/htmlview?usp=sharing&pru=AAABf7rAbC0*P8SbG5KHN5WLt2JJJhoK-Q
проверьте свои зависимости
возможно, имеет смысл сейчас жёстко из зафиксировать
Многие спрашивают в комментах — это вы всё выпендриваетесь, я вот поставил бесплатный VPN и всё работает у меня. Или плагин в браузер. Или платный VPN купил.
Тем временем РКН заблокировал уже 20 VPN сервисов:) Что произойдёт, когда ваш бесплатный или платный — чужой — сервис просто перестанет работать? Или будет работать, но без нужных вам сайтов? Ну, можно будет искать очередной и ждать, пока заблокируют его.
Думаю, что сейчас самое время научиться устанавливать свои VPN и подобные им решения. Это то, что вы контролируете в отличие от чужих сервисов. Ваши решения тоже могут быть заблокированы, но знания останутся с вами и вам будет проще найти другой рабочий вариант. Их сейчас огромное количество. Действительную ценность имеют ваш опыт и ваши навыки. Всегда полезно их развивать.
И да. Стоит сказать, что понимание ценности Open Source решений у меня сейчас поднимается на новый уровень.
отличный и как никогда актуальный тред о том, как привязать себя к валюте и найти работу за бугром: https://twitter.com/M0rtyMerr/status/1502230397245087747?s=20&t=Spg7Jh3hZUJZlTlG_Qnv_w
Читать полностью…
Текстовая инструкция по настройке Wireguard к видео.
Обновляем сервер:
apt update && apt upgrade -y
apt install -y wireguard
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
chmod 600 /etc/wireguard/privatekey
vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = 51830
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
<privatekey> содержимое файла /etc/wireguard/privatekeyecho "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service
wg genkey | tee /etc/wireguard/goloburdin_privatekey | wg pubkey | tee /etc/wireguard/goloburdin_publickey
vim /etc/wireguard/wg0.conf
[Peer]
PublicKey = <goloburdin_publickey>
AllowedIPs = 10.0.0.2/32
<goloburdin_publickey> — заменяем на содержимое файла /etc/wireguard/goloburdin_publickeysystemctl restart wg-quick@wg0
systemctl status wg-quick@wg0
vim goloburdin_wb.conf
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
<CLIENT-PRIVATE-KEY> заменяем на приватный ключ клиента, то есть содержимое файла /etc/wireguard/goloburdin_privatekey на сервере. <SERVER-PUBKEY> заменяем на публичный ключ сервера, то есть на содержимое файла /etc/wireguard/publickey на сервере. <SERVER-IP> заменяем на IP сервера.
Нашёл огненную статью по профилированию и отладке go-программ: https://habr.com/ru/company/badoo/blog/301990/
Огромный массив информации про инструменты и методы, позволяющие найти в программе места, где плохо памяти, процессору, или где не стоит пересобирать регулярку в цикле :)
После прочтения понимаешь, что авторы языка сумели сделать не просто много инструментов для профилирования кода, они сумели ещё и сделать их крайне удобными.
А автор статьи сумел показать на примерах, как эти инструменты использовать.
есть один прекрасный курс по go - https://www.coursera.org/learn/golang-webservices-1, с одним широко известным заданием, вокруг которого ходят легенды
задание сводится к реализации аналога линуксового пайплайна: grep 127.0.0.1 | awk '{print $2}' | sort | uniq -c | sort -nrи решается весьма интересно :) автор составил его таким образом, что не вкурив весь материал и не посмотрев все ссылки из раздела с допами - задание не решить
у меня было 2 подхода: 1-ый провальный, второй вылился в 2 дня страданий, чтение всех ссылок из доп. материалов, и, по-итогу, оно живое :)
если хочешь проникнуться асинхронщиной - мой настоятельный рекомендасьён
курс можно пройти бесплатно (бесплатно нельзя отправить задание на проверку, но, если тебе не нужен сертификат, оно и не нужно)
Контекст в golang - крайне полезная штука.
У него есть 2 основных назначения: передача параметров в нижевызываемые методы, и возможность сигнализировать всем, кто использует какие-либо ресурсы, что их пора освобождать - мы завершаемся. Называется этот процесс graceful shutdown.
Статей и по context, и по gs написано в избытке, но лично у меня не складывалась полная картина когда и в какой вариации всё это правильно юзать. Но, кажется, сложилась. Официально руководство, конечно, почитать стоит, но я приведу те материалы, которые, на мой взгляд, интересней.
Где-то я увидел ссылку на вот эту статью - https://golangbyexample.com/using-context-in-golang-complete-guide/, где автор утверждал, что тут пакет context описан лучше, чем в официальном руководстве и других гайдах. И, я с автором согласен, описание отличное.
Из русскоязычных материалов более-менее практический пример показан в этом ролике: https://www.youtube.com/watch?v=cbP1ShYndHg. Автор показывает и применение контекста, и связку его с gs, и не совсем очевидный пример блокировки, когда всё может пойти не по плану.
Пытаясь структурировать информацию, посмотрел ещё доклад от badoo про graceful shutdown и его косяки при интеграции с кубером - https://www.youtube.com/watch?v=me5iyiheOC8, тут показан интересный пример работы с пакетом errgroup, для более простой обработки ошибок и более лаконичного кода.
Начал идти по https://seanprashad.com/leetcode-patterns/, отрешиваю по паре задач в день. Кто не знает - это список алгосов, которые дают большие ребята на своих собесах. Отсюда же стягивают алгосы ребята поменьше с нашего православного рынка, которые любят поиграть в больших)
Пока easy уровень, идёт неплохо. Но, без базы универа, кажется, изи не был бы изи, всё-таки развернуть связный список сходу, не понимая как оно работает, не совсем простая задача :)
Уже в предвкушении того, что будет на hard :)
Как относишься к алгосикам? Зло или не зло? Пригождались?)
github запустил крайне интересную тему - приватные репозитории, доступные только спонсорам. Теперь интересно будет дождаться статистики и посмотреть, сколько публичных реп будет монетизировано :)
https://github.blog/2022-02-02-new-sponsors-only-repositories-custom-amounts-and-more/
То, чем я буду сегодня заниматься - https://github.com/akutz/go-generics-the-hard-way
Практический пошаговый подход к пониманию работы дженериков в go. Кажется, топ
Начал покрывать тестами один старый проект на Symfony. В процессе настройки тестовой базы выяснилось, что часть миграций удалена, и создать схему только лишь миграциями - невозможно. Соответственно, использовать фикстуры в их стандартном флоу (пересоздал схему, накатил фикстуры) - тоже невозможно, а использовать их очень хочется.
В процессе поиска решения и разбора документации открыл два малоизвестных, но отличных бандла:
https://github.com/liip/LiipTestFixturesBundle и https://github.com/dmaicher/doctrine-test-bundle
Первый позволяет накатить фикстуры внутри теста, а второй автоматически оборачивает все запросы к базе в транзакцию, и после завершения теста откатывает её, оставляя базу в первозданном виде. Тем самым освобождая разработчика от необходимости пересоздавать схему. Огонь!
в очень темное время живем
светлая память Алексею Навальному
https://www.youtube.com/watch?v=wp66e-JRlj0
на фоне ужасных событий последних недель, и ужасных событий последних двух лет в целом, я хочу заняться социально-полезной работой и, вероятно, смогу кому-то помочь
если ты, или твои знакомые переехали из России и у тебя проблемы с работой разрабом - я готов бесплатно посмотреть твое резюме, дать советы и провести мок-собес, если твой стек находится в пределах go/php
я часто вижу подобные вопросы и жалобы от людей в твиттере, так что думаю, что проблема актуальна
пока не знаю, осталась ли тут какая-то активность за время моего отсутствия, так что если интересно - лайкай, если лайки будут - оставлю контакты куда можно написать
Вообще, посты у меня и так были не часто, а на фоне всего происходящего очень сложно вести канал и поддерживать какую-либо работу.
С одной стороны - это кажется неуместным, и, вероятно, так и есть.
С другой, я попробую продолжить это делать, и надеюсь, кому-то это будет сейчас полезно: любая такая информация это возможность что-то изучить и что-то в последующем поменять.
Немного скажу про то, что я тут пилил пару недель назад в режиме лайвкодинга.
Зрителей было немного, но основная идея - приложение, которое будет отслеживать реальный уровень инфляции. Источников, которые показывали бы всё кристально чисто - я не нашёл.
Смысл такой: каждый день через определённые интервалы времени я набираю одну и ту же продуктовую корзину, и смотрю, насколько изменилась цена за предыдущий день.
Раз в неделю смотрю, как изменилась за неделю.
И раз в месяц финалим стату за 30 дней.
Собственно, софтина готова, кроме ротации проксей, небольшого количества асинхронщины и интеграции с парой крутых либ - особо интересного там ничего нет, поэтому код пока открывать смысла не вижу.
Изначально идея была настроить автопостинг этого в твиттер, но переписка с dev-саппортом твиттера затягивается, поэтому на днях сделаю автопостинг этого в отдельный канал в telegram. Вероятно, кому-то будет интересно посмотреть, что происходит с ценами, и насколько больше/меньше сегодня нужно будет заплатить, чем вчера.
Затем, если будут заинтересованные, может провести несколько сессий по рефакторингу в режиме лайв-кодинга: есть идея прикрутить дженерики, добавить больше асинхронщины и в целом привести всё к божескому виду.
Кому нужна международная Visa карта для оплаты сервисов - @Bankoff_Bo_Bot работает. Карта выдается в телеграм боте, чтоооо вообще происходит:) Пополнение через крипту USDT (её TRX или BEP20 вариант, не ETH) — видос о том, как купить крипту, был на канале. На бинансе было бы дешевле, но я брал на kassa.cc.
Пополнение этой карты с крипты долгое, до 72 часов. Много людей к ним повалило и они зашиваются, там похоже команда вся 4 офигевших от своего счастья человека:).
Но я вчера пополнил, сегодня дошли. Оплатил снова Ютуб премиум, чтобы видосы слушать можно было на телефоне, свернув программу. Работает.
Только ребят, дисклеймер — я ответственности никакой не несу за этот банкофф и никого не призываю туда слать крипту. Просто рассказал о своём опыте, он положительный.
хочу протестировать трансляции в телеге, и сделать немного лайвкодинга
серверная часть будет на go, со стороны сервера на первой итерации будут веб-парсеры и веб-сервер с парой ручек
со стороны морды будет vue, задача которого - отобразить эти самые пару ручек
ничего сложного, проект на пару-тройку вечеров, писаться всё будет без подготовки, просто кодим в реал-тайме
если интересно - плюсуй
⚡️ Вышел Go 1.18
Что нового: https://go.dev/doc/go1.18
выше я делился мануалом по настройке wireguard от канала "Диджитализируй", по которому и сам настроил себе vpn
у меня и всех, кому я его расшарил - отлично работает
всем, кто пользуется сторонними решениями - рекомендую
во-первых, это дешевле
во-вторых, вероятность его блокировки гораздо ниже, чем у какого-либо стороннего сервиса
ну и в-третьих, аргументы, которые описывает автор мануала:
Наверное, все уже слышали, что в ближайшие дни может начать шататься интернет, в связи с либо проверкой аппаратуры, которая умеет его ограничивать, либо уже с непосредственно ограничением.
Поэтому, всем, кто ещё не подготовился, вероятно, стоит это сделать:
https://telegra.ph/CHto-delat-pri-otklyuchenii-interneta-02-27?utm_source=tg&utm_medium=novaya&utm_campaign=chto-delat-v-sluchae-polnogo-otklyucheniya
Настроим в этом видео WireGuard VPN. Это легко конфигурируемый, быстро работающий и нетребовательный к ресурсам VPN, работающий — внезапно — лучше тех платных VPN сервисов, которые я за прошедшие дни пробовал. Помимо доступа к ресурсам, которые перестали работать — а сейчас могут не открываться даже сайты заказа лекарств, WireGuard это безопасный интернет за счёт шифрования трафика, а также возможность объединять несколько компьютеров в одну сеть с доступом откуда угодно. И самый сок — всё настраивается куда проще, чем в случае с OpenVPN, конфиги в несколько понятных строк. Будем поднимать!
https://www.youtube.com/watch?v=5Aql0V-ta8A
https://github.blog/2022-02-17-code-scanning-finds-vulnerabilities-using-machine-learning/
GitHub объявил о добавлении в сервис Code scanning экспериментальной системы машинного обучения для выявления распространённых типов язвимостей в коде. На этапе тестирования новая функциональность пока доступна только для репозиториев с кодом на языках JavaScript и TypeScript. Отмечается, что применение системы машинного обучения позволило заметно расширить спектр выявляемых проблем, при анализе которых система теперь не ограничивается проверкой типовых шаблонов и не привязывается к известным фреймворкам. Из выявляемых новой системой проблем упоминаются ошибки, приводящие к межсайтовому скриптингу (XSS), искажению файловых путей (например, через указание "/.."), подстановке SQL- и NoSQL-запросов.
Сервис Code scanning позволяет выявлять уязвимости на ранней стадии разработки через сканирование каждой операции "git push" на предмет потенциальных проблем. Результат прикрепляется непосредственно к pull-запросу. Ранее проверка осуществлялась с использованием движка CodeQL, анализирующего шаблоны с типовыми примерами уязвимого кода (CodeQL позволяет сформировать шаблон уязвимого кода для выявления наличия подобной уязвимости в коде других проектов). Новый движок, использующий машинное обучение, может определять ранее не известные уязвимости так как он не привязан к перебору шаблонов кода, описывающих конкретные уязвимости. Ценой подобной возможности является увеличение числа ложных срабатываний по сравнению с проверками на основе CodeQL. (https://www.opennet.ru/opennews/art.shtml?num=56719)
мне очень нравится идея тайловых оконных менеджеров, например - i3
концепция простая: легковесный, управляемый комбинациями (запомнить нужно всего несколько), позволяющий размещать окна так, как нужно тебе и очень кастомизируемый
очень - это, например, вот так - https://www.reddit.com/r/unixporn/comments/j3mfc6/i3gaps_ready_for_fall/
arch linux + i3 занимают, суммарно, около 500 метров в памяти
настраивать их, правда, около 500 лет)
без отладчика в принципе невозможно эффективно работать
/channel/HowToGoWrong/126
Доделал конфиг по nvim - https://github.com/itxor/new-nvim-config, осталось докинуть туда инструкцию по сборке и настроить отладчик, и можно забыть про vs code. От Goland я давно уже отказался - чего-то особенного он не даёт, вся работа с кодом воспроизводилась и в vs code, + у меня есть старый ноут, где иногда приходится пописать на гошке, а запускать jetbrains IDE там подобно смерти.
Что касается PHP - сейчас я пишу на нём всё меньше, и в скором времени, надеюсь, перейду на go полностью. Поэтому, на настройку nvim-конфигов для PHP я забил и продолжаю с ним работать в PHPStorm с включенным vim-плагином.
В целом, пока настраивал - заметил интересную вещь. Подход к настройке nvim значительно изменился за последние пару лет, всё стало проще и понятней. Если раньше нужно было искать кучу плагинов только для нормальной поддержки языка, не особо надеяться на их быстрое обновление, в случае обновления ЯП, то теперь концепция иная.
Если коротко: есть такая штука как https://tree-sitter.github.io/tree-sitter/ - это синтаксический анализатор, строящий из открытого файла с исходным кодом полноценное синтаксическое дерево, и обновляющий его по мере редактирования самого файла. Есть его адаптер под nvim: https://github.com/nvim-treesitter/nvim-treesitter. Один только этот плагин позволяет парой команд установить поддержку ЯП (весь список поддерживаемых - https://github.com/nvim-treesitter/nvim-treesitter#supported-languages) и даёт нормальный и быстрый фолдинг (возможность сворачивать и разворачивать блоки кода).
Второй обязательный плагин - nvim-lspconfig (https://github.com/neovim/nvim-lspconfig). Мне очень нравится его идея: плагин имеет адаптеры к lsp-серверам языков, с которыми работают коммерческие редакторы и IDE, и позволяет подтягивать их к nvim. Это даёт 90% всех плюшек по работе с кодом: go-to-definition, поиск ссылок, умеет показывать, какой интерфейс реализует структура, даёт возможность массового переименования, рефакторинга, и ещё много приятных вещей.
Что lspconfig не даёт и что нужно поставить отдельно - это автокомплит. Для этого есть https://github.com/hrsh7th/nvim-cmp.
Ну и так как я привык к double-shift в jetbrains ide, то я ставлю ещё telescope (https://github.com/nvim-telescope/telescope.nvim) - по заданной комбинации он открывает модалку, где можно искать полнотекстовым поиском по названию файлов, по содержимому файлов и в целом по всему контенту, что есть в проекте. Лично я именно для этого юзал double-shift в jb ide.
В остальном - интерфейсные плюшки, вроде тем, статус-бара снизу, дерева файлов слева и подсветки в коде коммита и его автора. За подробностями - го в репу. Если будут вопросы или решишь поставить этот пак себе - смело пиши, с радостью отвечу :)
Как фанат vim - я часто и много кастомизирую консоль, и ещё больше с ней работаю. И вот, перейдя с terminator обратно на gnome-консоль, в процессе кастомизации нашёл клёвый пак тем для стандартного терминала: https://mayccoll.github.io/Gogh/
Выполняем bash -c "$(wget -qO- https://git.io/vQgMr)", затем выбираем опцией тему (вся цветовая палитра - по первой ссылке), и тема загружается как кастомный профиль. Автору - респект за продуманный интерфейс.
В прошлом году у меня чуть не угнали аккаунт на одном известном гос. сайте (причем, не по моей вине). Пока я слушал оправдания саппорта о том, что им очень жаль, решил пересмотреть подход к менеджменту паролей.
В процессе открыл для себя pass - консольную утилиту с открытым исходным кодом, предоставляющую минималистичный интерфейс для полноценного менеджмента паролей.
Алгоритм работы простой: создаём GPG-пару ключей, сохраняем, затем с помощью pass init инициализируем на устройстве менеджер. В корне появится дирректория .password-store, которую можно залить как приватную репу куда-нибудь в self-hosted репозиторий.
Если кто-то получит доступ к репозиторию - без ключа никакой информации оттуда не вытянуть. Ключ нужно сохранить (и желательно в нескольких копиях) на внешнем носителе, а носитель закопать под известным только тебе деревом :)
Лично для меня в pass есть несколько вещей, выделяющих его среди аналогов: открытый исходный код, linux-way интерфейс, и реализация под все платформы. Список портов есть на официальном сайте в разделе "Compatible Clients", там же вся инфа по установке и настройке
Даёшь opensource в массы 🤙
https://www.passwordstore.org/
Коротко о том, почему no-code/low-code системы ещё долго не смогут заменить обычную разработку
Читать полностью…