Telegram Web Link
DPP

D++ — это легковесная и эффективная библиотека для Discord, написанная на современном C++. Она охватывает максимально возможную часть спецификации API и обладает невероятно малым объемом памяти даже при кэшировании больших объемов данных.

https://github.com/brainboxdotcc/DPP

#cpp

👉 @bookflow
👍5
9 лучших практик разработки микросервисов

При разработке микросервисов рекомендуется придерживаться следующих практик:

1. Используйте отдельное хранилище данных для каждого микросервиса
2. Поддерживайте одинаковый уровень зрелости кода
3. Выполняйте отдельную сборку для каждого микросервиса
4. Назначайте каждому микросервису одну ответственность
5. Разворачивайте микросервисы в контейнерах
6. Проектируйте сервисы без сохранения состояния (stateless)
7. Используйте предметно-ориентированное проектирование (DDD)
8. Проектируйте микрофронтенды
9. Организуйте оркестрацию микросервисов

👉 @bookflow
👍8
Тысяча и одна библиотека С++

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

https://habr.com/ru/articles/831754/

#cpp

👉 @bookflow
👍2
⭐️🚀 Пройдите вступительный тест и получите доступ к бесплатным урокам курса "Administrator Linux. Professional".

👉 Пройти тест: https://vk.cc/cKsyXe

Хотите стать экспертом в администрировании Linux? У нас для вас отличная новость!
Представьте, как вы:
- Освоите настройку и управление сетевыми сервисами на Linux.
- Научитесь автоматизировать задачи с помощью Ansible.
- Сможете эффективно управлять дисковыми подсистемами и файловыми системами.
- Настроите и будете администрировать веб-серверы (Nginx, Apache) и базы данных (MySQL, PostgreSQL).
- Повысите уровень безопасности своих серверов с помощью SELinux и брандмауэров.
- Получите навыки мониторинга и логирования с использованием Prometheus и Zabbix.

Наш курс включает в себя все необходимые знания и практические задания, чтобы вы стали настоящим профессионалом.

❗️После успешного прохождения теста вам будут доступны уроки на лендинге курса, и скидка на обучение "Administrator Linux. Professional".

👉 Пройти тест https://vk.cc/cKsyXe

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Strlcpy, или как CPU противоречат здравому смыслу

Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:

В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды.

Под этим аргументом скрывается допущение о том, что однократный обход строки выполняется быстрее. И, честно говоря, это вполне разумное допущение. Но справедливо ли оно? Об этом мы и поговорим в статье.

https://habr.com/ru/articles/838116/

#cpp

👉 @bookflow
👍3
🧵 Чеклист перед выкладкой инфраструктурного кода в прод

Инфраструктура как код — мощная штука. Но даже один криво закоммиченный main.tf может повалить пол-продакшена. Вот мини-чеклист, который стоит прогонять перед мержем в main.


1. План применён?
terraform plan или pulumi preview должен быть свежим и понятным. Никаких сюрпризов в духе «удаляется продовая БД».

2. Есть backend?
Убедись, что состояние хранится не локально. Используй S3, GCS или аналог — иначе в один день ты потеряешь всё.

3. -target не попал в CI/CD
Временно использовать -target ок, но не коммить это в pipeline. Это костыль, а не стратегия.

4. Защищён ли state?
Шифрование включено? Доступ только у нужных людей? terraform state show — часто недооценённый источник чувствительных данных.

5. Модули не обновились «магически»?
Проверь, что версии всех модулей и провайдеров зафиксированы. Плавающие версии — путь к хаосу.

6. Документация и комментарии есть?
Ты можешь помнить, зачем это поле у S3, но через месяц ты же сам себе не поверишь. Пиши сразу.

7. Прогонен tflint / checkov / terraform validate?
Линтеры и валидация — это как spellcheck, но для продакшена. Лишними не будут.

8. Обратная совместимость учтена?
Изменения в ресурсах типа ALB, IAM policy или security group могут незаметно порушить весь трафик.

9. Всё в Git?
Terraform code без Git — это как сервер без мониторинга. Безответственно.

10. Apply сначала в staging!
Если у тебя нет stage-среды — ты и есть stage. Надеюсь, у тебя хорошая страховка.


🛠 Ты можешь автоматизировать почти всё из этого списка. Но думать всё равно придётся. Хотя бы пока.


Подпишись 👉@devopslib
👍3
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".

#devops

👉@bookflow
👍7
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.

#devops

👉@bookflow
👍2
Жизнь коротка, используйте Dev Tools

#devops

👉@bookflow
2👍2
🔍 Хотите узнать больше о Bash и его возможностях? Погрузитесь в мир продвинутого Bash!

📅 На вебинаре 10 апреля 2025 года в 19:00 мск обсудим расширенные возможности Bash как языка программирования. Поработаем с массивами, отладкой скриптов и функциями.

🎤 Спикер Николай Лавлинский — эксперт веб-разработки с более чем 15-летним опытом, опытный преподаватель (10+ лет). Николай занимался техническим руководством и оптимизацией клиентской и серверной производительности веб-приложений в более чем 100 проектах.

Преимущества участия: узнайте мощные возможности Bash, найдите простые и быстрые решения для отладки скриптов и автоматизации задач.

Все участники вебинара получат скидку на курс "Administrator Linux. Professional".

Для участия зарегистрируйтесь https://vk.cc/cKBare

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1👍1👎1
7 эффективных стратегий для масштабирования базы данных

🔵 Индексация: Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
🔵Материализованные представления: Предварительно вычисляйте результаты сложных запросов и сохраняйте их для быстрого доступа.
🔵 Денормализация: Упрощайте сложные соединения для повышения скорости выполнения запросов.
🔵 Вертикальное масштабирование: Увеличивайте ресурсы сервера (процессоры, оперативную память, хранилище) для улучшения производительности.
🔵 Кэширование: Храните часто запрашиваемые данные в быстром хранилище, чтобы снизить нагрузку на базу данных.
🔵 Репликация: Создавайте копии основной базы данных на разных серверах для увеличения объема операций чтения.
🔵 Шардинг: Разделяйте таблицы на более мелкие части и распределяйте их по серверам для улучшения работы с записью и чтением.

#db

👉@bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Визуализация связей таблиц в SQL Server

Выявить связи между таблицами в SQL Server можно обратившись к системным представлениям. Представленный ниже запрос вернёт информацию о всех внешних ключах:


SELECT
fk.name AS ForeignKey,
tp.name AS ParentTable,
cp.name AS ParentColumn,
tr.name AS ReferencedTable,
cr.name AS ReferencedColumn
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.tables AS tp ON fk.parent_object_id = tp.object_id
INNER JOIN
sys.tables AS tr ON fk.referenced_object_id = tr.object_id
INNER JOIN
sys.foreign_key_columns AS fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.columns AS cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN
sys.columns AS cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id


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

#db

👉@bookflow
👍4
📌3 частых ситуации с Git и как их разрулить


🔁 1. Случайно закоммитил не то и хочу откатиться

Ситуация: сделал коммит, понял, что рано.

Решение:

git reset --soft HEAD~1

Убирает последний коммит, но оставляет изменения в staged — можно поправить и снова закоммитить.



💥 2. Запушил коммит с багом, нужно отменить на сервере

Ситуация: баг ушёл в main, надо быстро отменить.

Решение:

git revert <hash>

Создаёт новый коммит, который отменяет изменения указанного. Без force-push, удобно в команде.



🕵️ 3. Нужно достать файл из старого коммита, но не откатывать всё

Ситуация: удалили/изменили важный файл, а он был раньше.

Решение:

git checkout <commit_hash> -- путь/к/файлу

Извлекает конкретный файл без изменения текущей ветки. Можно сохранить, сравнить, закоммитить.


📌 Все три команды — незаменимые штуки в повседневной работе. Можно сохранить себе как Git-аптечку.

#git

👉@bookflow
👍11
🚀 Подпишись и прокачай свои скилы: лучшие каналы для IT-специалистов 👨‍💻📲

Папка с каналами для DevOps, Linux - Windows СисАдминов 👍

Папка с каналами для 1С программистов 🧑‍💻

Папка с каналами для C++ программистов 👩‍💻

Папка с каналами для Python программистов 👩‍💻

Папка с каналами для Java программистов 🖥

Папка с книгами для программистов 📚

Папка для программистов (frontend, backend, iOS, Android) 💻


GitHub Сообщество 🧑‍💻
https://www.tg-me.com/Githublib Интересное из GitHub

Базы данных (Data Base) 🖥
https://www.tg-me.com/database_info Все про базы данных


Разработка игр 📱
https://www.tg-me.com/game_devv Все о разработке игр

БигДата, машинное обучение 🖥
https://www.tg-me.com/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning


QA, тестирование 🖥
https://www.tg-me.com/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://www.tg-me.com/itumor Шутки программистов

Защита, взлом, безопасность 💻
https://www.tg-me.com/thehaking Канал о кибербезопасности
https://www.tg-me.com/xakep_2 Хакер Free

Книги, статьи для дизайнеров 🎨
https://www.tg-me.com/ux_web Статьи, книги для дизайнеров

Математика 🧮
https://www.tg-me.com/Pomatematike Канал по математике
https://www.tg-me.com/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак🙃
https://www.tg-me.com/Excel_lifehack

Технологии 🖥
https://www.tg-me.com/tikon_1 Новости высоких технологий, науки и техники💡
https://www.tg-me.com/mir_teh Мир технологий (Technology World)

Вакансии 💰
https://www.tg-me.com/sysadmin_rabota Системный Администратор
https://www.tg-me.com/progjob Вакансии в IT
https://www.tg-me.com/rabota1C_rus Вакансии для программистов 1С
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1
Собрал основные концепции Docker в одну диаграмму

#devops

👉@bookflow
🔥4👍3
Настройка CI/CD для самых маленьких разработчиков

Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.

Настроек для пайплайна Gitlab очень много. В этой статье, не вдаваясь в недра тюнинга, поговорим о том, как выглядит скрипт пайплайна, из каких блоков он состоит и что может содержать.

https://habr.com/ru/companies/maxilect/articles/799177/

#devops

👉@bookflow
👍5
🛠 Мост между JavaScript и C++ через WebAssembly

Если ты хочешь интегрировать C++ в свой JavaScript-проект, но не знаешь, с чего начать, этот гайд для тебя!​

Автор делится пошаговыми инструкциями:

🔹Установка Emscripten
🔹Компиляция C++ в WASM
🔹Передача данных между C++ и JavaScript
🔹Использование Emscripten Bindings для упрощения взаимодействия​

Разберёмся, как передавать массивы, строки и структуры, и как избежать типичных ошибок при работе с памятью в WASM.​

📖 Читай подробнее: https://habr.com/ru/articles/837692/

#Cpp #Js

👉@bookflow
👍5
Что значит инициализировать int в C++?

Недавно я получил по почте от Сэма Джонсона этот вопрос. Вот слегка отредактированное письмо Сэма:
«Возьмём для примера этот код в локальной области видимости функции:


int a;
a = 5;


Многие люди считают, что инициализация происходит в строке 1, потому что веб-сайты наподобие cppreference дают такое определение: "Инициализация переменной предоставляет его начальное значение на момент создания".

Однако я убеждён, что инициализация происходит в строке 2, потому что [в разных хороших книгах по C++] инициализация определяется как первое существенное значение, попадающее в переменную.

Можете ли вы сказать, какая строка считается инициализацией?»

https://herbsutter.com/2024/08/07/reader-qa-what-does-it-mean-to-initialize-an-int/

#cpp

👉@bookflow
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Настройка синхронизации Задач организации из 1С между 1С и смартфоном

Как не пропустить сроки сдачи отчетности? Настроить синхронизацию Задач организации в 1С между программой 1С Бухгалтерия 3.0 и смартфоном, чтобы уведомления о задачах из 1С приходили на смартфон.

источник

✈️ @buh1C_prog
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡2👍1🤮1
Чем отличается Kubernetes от Openshift?

Openshift имеет более строгие политики безопасности и модели аутентификации.
Openshift поддерживает полную интеграцию CI/CD Jenkins.
Openshift имеет веб-консоль по-умолчанию. В Kubernetes консоль необходимо дополнительно устанавливать консоль.
В Kubernetes возможно устанавливать сторонние сетевые плагины. В Openshift используется собственное сетевое решение Open vSwitch, которое предоставляет 3 различный плагина.
Kubernetes может быть установлен практически на любой дистрибутив Linux. Openshift имеет ограничения на устанавливаемые дистрибутивы, преимущественно используются RH-дистрибутивы.
Kubernets доступен в большинстве облачных платформ - GCP, AWS, Azure, Yandex.Cloud. Openshift доступен на облачной платформе Azure и облаке от IBM.
По-умолчанию, в Openshift поды в кластере могут быть запущены только под обычным пользователем, чтобы запустить под под пользователем root необходимо выдать права для сервисного аккаунта. В Kubernetes по-умолчанию поды могут быть запущены по пользователем root.

#devops #девопс

👉@bookflow
👍21🙏1
2025/07/13 22:39:11
Back to Top
HTML Embed Code: