myStack
890 subscribers
761 photos
15 videos
27 files
310 links
Меня зовут Ростислав и я разработчик.

Это мой личный блог.

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


Книги:
https://bit.ly/rostislav-books

Личка:
https://t.me/Rostislaved

Сайт:
Rostislav.me
Download Telegram
Если бы мне дали ОС и стояла задача делать для нее всё самое худшее, то я бы делал именно то, что делает Microsoft всегда.

Менял бы пуск по много раз
Перемещал его
Добавлял рекламу
Менял интерфейс настроек каждый раз
Встраивая одно поколение интерфейсов в другое
Запрещал создавать аккаунт без необходимости залогиниться
Автоматически включал отлючённое пользователем автообновление через какое-то время
Добавлял по умолчанию включённую телеметрию
Перезатирал загрузчил уже установленного линукса
Добавлял шифрование битлокера - 48 символов которые надо вводить руками

Феерические решения..
👍10🤡1
Forwarded from Hacker News
Windows 11 is closing a loophole that let you skip making a Microsoft account
Article, Comments
🙉3🤮2👍1
#книги
Дмитрий Никитенко - Речь о миллионах
15.02.2025 - 06.04.2025

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

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

Выводы, которые я делаю на текущем своем уровне понимания инвестиций:
1. Если обобщать и упрощать, то реальная (после вычета инфляции) доходность инвестиций - 5% годовых
2. Инвестиции - это не способ разбогатеть, это способ качественно откладывать
3. Исходя из п. 2 основным источником дохода может являться только что-то другое.
4. Даже учитывая небольшую доходность в п.1 это все равно лучшая из альтернатив. И вариант не инвестировать, а просто "откладывать" гораздо хуже - примерно на 8% (нет роста в 5%, и есть инфляция в 3%). Что учитывая механизм работы сложного процента - значительная разница между двумя подходами.
5. В портфеле должны быть разные классы активов. Добавляя облигации к акциям немного снижается доходность, но сильно снижается риск. Также становится возможен "эффект ребалансировки" ("портфельный эффект")
6. Узнал термин "человеческий капитал". Это совокупность знаний, навыков, умений, опыта, здоровья и других качеств человека, которые влияют на его производительность и способность приносить экономическую выгоду (в частности себе). Его можно выразить в деньгах, сложив все ожидаемые будущие доходы человека. Современем человеческий капитал уменьшается, потому что мы не можем работать вечно и приближается время, когда человек перестанет получать доход от трудовой деятельности, а значит с каждым годом в нашем распоряжении остается всё меньше будущих доходов. Доходы однажды заканчиваются, а расходы всегда остаются. Поэтому важно как можно раньше начать эффективно переводить человеческий капитал в финансовый, а не тратить всё и сразу.
7. Если есть много денег, то лучше на них сразу купить бумаги, а не делать это постепенно (есть исследования, что в среднем это эффективнее)

В общем неплохо. Узнал новое. Смирился, что на инвестициях миллиардером не стать и надо искать что-то другое, но это и не повод ими не заниматься!
🔥73👍21
Официальный бот Perplexity

CEO Perplexity объявил в твиттере, что теперь в телеграме есть официальный бот: @askplexbot

Можно писать боту, а можно добавить в группу и там с ним общаться или призывать реплаем на сообщение с вопросом
🔥2
📚 Почему я читаю книги

Ну, во-первых, потому что это интересно.

💡 А во-вторых — вот почему.
Недавно мне пришла в голову мысль: в чём же причина этого и что именно я пытаюсь получить, читая книги? И я вспомнил такую цитату:

«Есть вещи, о которых мы знаем, что знаем.
Есть вещи, о которых мы знаем, что не знаем.
А есть и такие, о которых мы даже не знаем, что не знаем.»

🧠 С первыми двумя всё просто. Есть какая-то технология, и ты либо умеешь с ней работать, либо нет. Но меня не покидает чувство: а вдруг, считая, что я всё знаю, я на самом деле чего-то важного не знаю? То есть, может ли быть важное знание, о котором я даже не подозреваю?

📖 И вот книги — это способ перевести знания из категории «я не знаю, что не знаю» в категорию «я знаю, что знаю». Это помогает иметь представление о чём-то, видеть большую картину. И даже если все прочитанные детали из книги забудутся, знания всё равно не вернутся в категорию «я не знаю, что не знаю», а останутся хотя бы в категории «я знаю, что не знаю» — а это уже лучше.
👍93
#книги
Gwen Shapira - Kafka The Definitive Guide
06.04.2025 - 26.04.2025

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

Что не понравилось:
1. Некоторые термины начинают использовать до их определения. Например Kafka Streams и Kafka Connect. То есть сперва в главах они упоминаются, а только потом объясняется, а что это всё же такое и зачем оно нужно. Kafka Stream упоминался в середине книги, а глава про него в конце. И даже в самой главе про Kafka Stream такое ощущалось. Например, сперва примеры "топологий", а к концу определение что такое топология..

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

3. Большая часть книги про администрирование кафки

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

В общем книгу я бы поделил на две части, вторая для администраторов, а первая, которая меньше размером подойдет для разработчика. В ней главы про Producers, Consumers, Internals. Кстати, главу про internals я бы не назвал прямо internals, как-то поверхностно было.

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

В любом случае я что-то новое узнал и теперь скорее надо копаться в либах.

Для разработчиков я бы посоветовал вот это отличное видео:
https://www.youtube.com/watch?v=-AZOi3kP9Js (и тут больше internals, чем в главе книги!)
🔥7
Новый метод в Go 1.25

В Go 1.25 для WaitGroup добавят метод Go, чтобы упростить распространённый паттерн:

func (wg *WaitGroup) Go(f func()) {
wg.Add(1)
go func() {
defer wg.Done()
f()
}()
}
👍23🔥9🐳21
В РФ сейчас достаточно популярна тема со SBOM и вообще контролем зависимостей, потому что много каких зависимостей из open source оказывали и могут оказать деструктивное влияние так сказатб 🌝

Но тут случилось ВНЕЗАПНОЕ1!11!. Hunted Labs озаботились зависимостями, которые тянутся в проекты и обнаружили российский след (полный PDF-отчёт скину в комменты). Более того, как они пишут, отказаться от этой зависимости сложно. Речь о easyjson (https://github.com/mailru/easyjson)

What is easyjson?

Easyjson is a Go package designed to optimize JSON serialization and deserialization processes by generating Go code for JSON encoding and decoding. Widely adopted across cloud-native ecosystems, it is a critical dependency for numerous open source and enterprise projects. This includes high-performance JSON handling in distributed systems, real-time data serialization for financial and analytics platforms, and optimization of cloud-native applications.

Who maintains easyjson?

A group of developers from VK, an entity with leadership that is under active U.S. and E.U. sanctions and has connections to Russian security services.

Who is impacted?

Cornerstones of the modern software supply chain and cloud-native tools have dependencies on easyjson, and all applications that pull in these dependencies could potentially be impacted, including, but not limited to:

- Helm
- Istio
- Kubernetes

How could this be weaponized or exploited?

Russia doesn’t need to attack directly. By influencing state-sponsored hackers to embed a seemingly innocuous OSS project deep in the American tech stack, they can wait, watch, and pull strings when it counts.

The Russian Open Source Project That We Can’t Live Without
https://huntedlabs.com/the-russian-open-source-project-that-we-cant-live-without/

По ссылке подробно расписано как и зачем они занимались исследованием зависимостей и к чему пришли

Hunted Labs has provided exhaustive evidence regarding this advisory to the U.S. government and relevant stakeholders. So, what’s next? 

The widespread use of easyjson makes finding a solution challenging. However, we cannot continue to blindly rely on this package due to the state of the current threats to our increasingly fragile software supply chain.


Мне понравилась заключительная фраза в статье

> Oh, and we haven’t even talked about China…yet.

Сколько же их ещё открытий ждёт 🌝
🤡8😁1
Forwarded from XOR
GPT-4.1 доступна в ChatGPT — это ведущая модель в кодинге.

Модель превосходит GPT-4o по всем направлениям, особенно в кодинге. Плюс у нее более крупное контекстное окно — до 1 миллиона токенов.

«Это прекрасная альтернатива OpenAI o3 и o4-mini для повседневных задач программирования», - пишет OpenAI


Доступ уже раскатывают для всех платных подписчиков.

@xor_journal
👌1
if err != nil остаётся

Команда Go решила не менять синтаксис обработки ошибок и закрывает все предложения по упрощению error handling - ни один вариант не получил широкой поддержки ни в команде, ни в сообществе.

Причины:
- Нет консенсуса, нужен ли такой синтаксический сахар
- Привычный способ error handling признан рабочим и идиоматичным
- Изменения усложнят язык и приведут к массовым изменениям в коде
27👍17🤮6🤷‍♂3😭2😁1
😁9😭4👍1
Go Clean Architecture Template v0.0.3 (16.06.2025)

Наконец-то добрался до своего репозитория с чистой архитектурой.

Потихоньку буду его обновлять. Еще много, что нужно сделать, но пользоваться можно уже сейчас.

Changelog:
- Экземпляры БД теперь создаются вне репозиториев и передаются в них как аргументы
- Сущность Book заменена на несколько сущностей с более обобщёнными именами — Entity*
- controllers переименованы в handlers (так как "controllers" — термин из MVC)
- provider переименован в gateway (используется для HTTP-запросов к другим микросервисам)
- libs переименованы в pkg (pkg — более распространённое название)
- Обновлена конфигурация линтеров (1.64.8)
- graceful теперь оформлен как библиотека
- Заменён sqlx на pgxpool
- Заменён kafka-go на franz-go
- Заменён go-clickhouse на clickhouse-go
- Различные исправления и улучшения
- Добавлен первоначальный логотип
👍174
s
28💯5🔥4💊33
Please open Telegram to view this post
VIEW IN TELEGRAM
😱15🔥1🥰1
Завел себе такой алиас:
alias cb='xclip -selection clipboard'


теперь копировать в буфер содержимое файлов можно так:
cat file.txt | cb
👍21🔥9
Как разобраться в новом проекте или либе с помощью AI

1. Взять весь проект
2. Засунуть в AI))

Чтобы "взять" весь проект, надо всю (или почти всю) текстовую информацию собрать в один файл.

Для этого я написал скрипт, который:
- Создает в $HOME файлик all_%timestamp.txt с содержимым всех файлов из директории, где запущен
- Исключает некоторые директории (вроде .git и .idea) и файлы (вроде go.sum и coverage.out)
- В результирующем файле указывает структуру каталогов и имена всех собранных файлов


Получается что-то такое:
.
├── internal
│   ├── file1.go
│   └── file2.go
└── main.go

2 directories, 3 files



=== ./internal/file1.go ===
file1 content

=== ./internal/file2.go ===
file2 content

=== ./main.go ===
main content


Вот сам скрипт (можно прямо в терминал вставлять, .sh файл не нужен):
timestamp=$(date +"%Y%m%d_%H%M%S")

{
tree -a .

echo -e "\n\n"

find . -type f \
-not -path "*/.idea/*" \
-not -path "./.git/*" \
-not -name "go.sum" \
-not -name "*.json" \
-not -name "coverage.out" \
-exec sh -c '
file --mime-type -b "$1" | grep -q text && {
echo "=== $1 ==="
cat "$1"
printf "\n"
}
' sh {} \;
} >> ~/all_"$timestamp".txt


Дальше в $HOME директории находим файлик и вставляем в любимую LLM, дополняя промптом. У ChatGPT контекста не всегда хватает, поэтому можно Gemini.

Для примера я проделел это для либы franz-go, дополнив промтом:
Как лучше всего изучать эту либу? Интересует порядок пакетов, которые надо смотреть. Заодно хочу лучше разобраться в самой кафке

В результате получил вот это.

Если нужно какой-то микросервис разобрать, то я написал вот такой промпт, который раскладывает любой сервис на входящие и выходящие адаптеры. Так гораздо легче анализировать.
🔥12👍1
Forwarded from DevOps Deflope News
Новое исследование Google: 65 % времени разработчиков тратится впустую без платформенного подхода

Google и ESG опросили 500 ИТ-специалистов. Коротко о главном в исследовании состояния платформенной инженерии:
• 65 % времени разработчиков уходит на задачи, которые может решать внутренняя платформа
• 55 % компаний уже поддерживают внедрение platform engineering
• Только 27 % полноценно интегрировали платформенный подход во все команды
• 84 % компаний признают, что внутренней экспертизы не хватает для эффективного развития платформ

Разработчики продолжают тратить бо́льшую часть времени не на продукт, а на инфраструктуру. Platform engineering — ответ на эту историю.

Именно здесь DevOps-команды играют ключевую роль, превращают разрозненные процессы в работающую платформу и интегрируют её в максимальное количество команд.
🤡6👍4
Today I Learned About Named Pipes in Unix

В терминале есть pipes:
echo "one two three" | wc -w

Выведет 3, т.к. в строке 3 слова.

pipe - это |

Но еще есть named pipes. С ними работать надо немного по-другому. Сперва создаем:
mkfifo pipe1


В текущей директории появляется файл pipe1. И теперь в него можно писать, как в файл:
echo "123" > pipe1


Терминал заблокируется т.к. никто из pipe1 не читает.

Чтобы прочитать, надо в другом терминале сделать:
cat < pipe1

Напечатает 123, а первый терминал разблокируется
👍23
Ночь открытий

Если в терминале написать:
cd -


То попадешь в директорию из которой делал cd до этого. Я это использовал давно, но оказывается это работает и с ветками git:
git checkout -

или если есть алиас:
gco -
👍14😁32
#книги
William E. Shotts - The Linux Command Line
11.05.2025 - 28.07.2025

Книга мне понравилась и она отличная. Теперь считаю, что она должна быть первой в изучении линукса(и даже MacOS). "Знать линукс" в большей степени значит знать, как работать в терминале и поэтому эту книгу можно воспринимать именно, как вводную в линукс. Жалею, что не прочитал ее раньше, так как многие вещи узнал более сложным путем :)

Книга состоит из 4х частей. Первая написана максимально просто и продуманно, так как надо для того, чтобы начать с чем-то работать (с терминалом в данном случае) - этим она очень понравилась. Вторая и третья про различные утилиты: sort, head, cat, tr и некоторые экстравагантные. А четвертая про shell скрипты. Эту часть читать было скучновато т.к. там в том числе объяснялись вещи известные программистам, вроде условий и циклов и еще раз читать про них было полезно только чтобы увидеть, какой у них синтаксис, но были и некоторые интересные приемы, ради которых ее и не пропустил. Ну и еще, чтобы к синтаксису привыкнуть и более осознанно смотреть на .sh скрипты, которые встречаются.

Книгу надо обновить. Она 2019 года. Надеюсь в 3м издании, которое выходит в начале 2026 года будет много поправлено.
- Рассказывается про init, хотя уже тогда systemd был популярен
- Глава про пакетные менеджеры. Неплохо бы добавить pacman
- В главе работу с диском много старого. Флоппи, CD-RW итд.
- Логи читаются не через journalctl
- Я бы убрал главу про печать, разделы про groff и подобное.

Однако! Когда я гуглил, когда выйдет 3е издание, то обнаружил, что на сайте автора бесплатно публикуется Internet Edition, которое потом превращается в продаваемое Edition. В этом интернет издании уже много изменений.
🔥6👍31
Forwarded from Hacker News
Live coding interviews measure stress, not coding skills
Article, Comments
👍5