Программирование {BookFlow}
16.2K subscribers
1.58K photos
468 videos
145 files
2.1K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Download Telegram
Что такое 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://t.iss.one/Githublib Интересное из GitHub

Базы данных (Data Base) 🖥
https://t.iss.one/database_info Все про базы данных


Разработка игр 📱
https://t.iss.one/game_devv Все о разработке игр

БигДата, машинное обучение 🖥
https://t.iss.one/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning


QA, тестирование 🖥
https://t.iss.one/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.iss.one/itumor Шутки программистов

Защита, взлом, безопасность 💻
https://t.iss.one/thehaking Канал о кибербезопасности
https://t.iss.one/xakep_2 Хакер Free

Книги, статьи для дизайнеров 🎨
https://t.iss.one/ux_web Статьи, книги для дизайнеров

Математика 🧮
https://t.iss.one/Pomatematike Канал по математике
https://t.iss.one/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак🙃
https://t.iss.one/Excel_lifehack

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

Вакансии 💰
https://t.iss.one/sysadmin_rabota Системный Администратор
https://t.iss.one/progjob Вакансии в IT
https://t.iss.one/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
🧑🏻‍💻Хотите писать гибкий и читаемый код на Python? Пора раскрыть скрытые возможности встроенной библиотеки!

На открытом вебинаре 23 апреля в 20:00 мск мы познакомим вас с мощными инструментами стандартной библиотеки Python, которые сэкономят ваше время и помогут писать код без лишних зависимостей. Вы узнаете, как использовать модули, которые оптимизируют работу с данными, текстом и логированием.

Мы поговорим о модулях collections, re и logging — встроенных инструментах, которые делают код компактным и понятным. Это важный шаг к переходу на более высокие позиции в разработке.

⚡️Присоединяйтесь к открытому вебинару и получите скидку на большой курс "Python Developer. Basic": https://vk.cc/cKZJPF

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔧 Почему systemd – это не только про запуск сервисов

Многие до сих пор думают, что systemd нужен только для того, чтобы стартовать сервисы. Но на деле он — как швейцарский нож для линуксоидов.

Вот несколько его «скрытых» возможностей, которые ты, возможно, упускаешь:

🔹 systemd timers — альтернатива cron. Более гибкая, с логами, юнитами, и возможностью зависимости от других сервисов.

🔹 systemd-run — запускай любые команды как временный сервис. Отлично подходит для тестов, отложенного выполнения или запуска с нужными лимитами ресурсов.

🔹 Resource control (cgroups) — через systemd можно ограничить CPU, память, IO для любого юнита. Прям как в Kubernetes, только локально.

🔹 journalctl — лог-менеджер, которого ты заслуживаешь. Фильтры по юниту, по времени, по PID, по приоритету — goodbye, grep.

🔹 User units — можно писать юниты не только для root, но и для обычных пользователей. Отлично для изоляции окружений.

Если ты до сих пор относишься к systemd как к init-процессу — попробуй копнуть глубже. Он вполне может заменить кучу сторонних тулзов и сделать твою систему чище.

Подпишись 👉@devopslib
👍3
Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

https://habr.com/ru/companies/beget/articles/842566/

#cpp

👉@bookflow
👍2
🔍 Хотите освоить регулярные выражения для системного администрирования? Погрузитесь в мир grep, sed и awk!

📅 На вебинаре вы узнаете, как читать, писать и применять регулярные выражения для реальных задач в Linux. Изучите различия между основными типами регулярных выражений (Basic, Extended, PCRE) и научитесь использовать их в системных утилитах.

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

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

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Набор дашбордов Grafana для мониторинга Kubernetes с помощью Prometheus.

Данные дашборды предназначены для использования с метриками Prometheus, собираемыми с помощью kube-prometheus и prometheus-node-exporter.

Они покрывают различные аспекты кластера Kubernetes, включая:

- Состояние узлов
- Использование CPU и памяти
- Состояние подов
- Производительность сети
- Состояние ивентов в кластере
- Мониторинг ingress-контроллеров и CoreDNS

Все дашборды можно легко импортировать в Grafana через JSON-файлы, представленные в этом репозитории.

https://github.com/dotdc/grafana-dashboards-kubernetes

#devops

👉@bookflow
👍4
Cтатья про собеседования в Яшу (Yandex Weekend Offer)

Может кому‑то это будет интересно, даст возможность лучше подготовиться; или наоборот кто‑то примет решение не участвовать.

Угораздило меня согласиться на т. н. «Weekend Offer на позицию разработчика на Kotlin». Вообще‑то мне больше нравится Scala, и опыта по ней больше, но рекрутерша была сильно настойчива, и я решил обновить экспиренс собесов, а возможно и получить прибавку в деньгах при переходе.

Коротко о себе: 41 год, senior software developer, стаж > 20 лет.

Два алгоритмических этапа по сути были одинаковыми, неясно, почему их два и зачем вообще предлагается готовиться к собеседованию через т. н. «Cоревнования», то есть площадку спортивного программирования а‑ля leetcode, где результат проверяет робот и можно пользоваться IDE. Нормально готовиться мне было лень, но за часок до собеса я спохватился и прорешал несколько задачек, что смог найти.

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

👉@bookflow
👍2
K9s

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

https://github.com/derailed/k9s

#devops

👉@bookflow
👍31