Программирование {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
📌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
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://t.iss.one/bash_srv Bash Советы
https://t.iss.one/win_sysadmin Системный Администратор Windows
https://t.iss.one/sysadmin_girl Девочка Сисадмин
https://t.iss.one/srv_admin_linux Админские угодья
https://t.iss.one/linux_srv Типичный Сисадмин
https://t.iss.one/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.iss.one/linux_odmin Linux: Системный администратор
https://t.iss.one/devops_star DevOps Star (Звезда Девопса)
https://t.iss.one/i_linux Системный администратор
https://t.iss.one/linuxchmod Linux
https://t.iss.one/sys_adminos Системный Администратор
https://t.iss.one/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.iss.one/sysadminof Книги для админов, полезные материалы
https://t.iss.one/i_odmin Все для системного администратора
https://t.iss.one/i_odmin_book Библиотека Системного Администратора
https://t.iss.one/i_odmin_chat Чат системных администраторов
https://t.iss.one/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.iss.one/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.iss.one/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.iss.one/DevLab1C 1С:Предприятие 8
https://t.iss.one/razrab_1C 1C Разработчик
https://t.iss.one/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.iss.one/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://t.iss.one/cpp_lib Библиотека C/C++ разработчика
https://t.iss.one/cpp_knigi Книги для программистов C/C++
https://t.iss.one/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.iss.one/pythonofff Python академия.
https://t.iss.one/BookPython Библиотека Python разработчика
https://t.iss.one/python_real Python подборки на русском и английском
https://t.iss.one/python_360 Книги по Python

Java разработка 📌
https://t.iss.one/BookJava Библиотека Java разработчика
https://t.iss.one/java_360 Книги по Java Rus
https://t.iss.one/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.iss.one/Githublib Интересное из GitHub

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

Мобильная разработка: iOS, Android 📌
https://t.iss.one/developer_mobila Мобильная разработка
https://t.iss.one/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.iss.one/frontend_1 Подборки для frontend разработчиков
https://t.iss.one/frontend_sovet Frontend советы, примеры и практика!
https://t.iss.one/React_lib Подборки по React js и все что с ним связано

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

Библиотеки 📌
https://t.iss.one/book_for_dev Книги для программистов Rus
https://t.iss.one/programmist_of Книги по программированию
https://t.iss.one/proglb Библиотека программиста
https://t.iss.one/bfbook Книги для программистов

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

Программирование 📌
https://t.iss.one/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.iss.one/rust_lib Полезный контент по программированию на Rust
https://t.iss.one/golang_lib Библиотека Go (Golang) разработчика
https://t.iss.one/itmozg Программисты, дизайнеры, новости из мира IT
https://t.iss.one/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.iss.one/nodejs_lib Подборки по Node js и все что с ним связано
https://t.iss.one/ruby_lib Библиотека Ruby программиста
https://t.iss.one/lifeproger Жизнь программиста. Авторский канал.

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 Обучающие видео, книги по Физике и Математике
https://t.iss.one/matgeoru Математика | Геометрия | Логика

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

https://t.iss.one/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.iss.one/sysadmin_rabota Системный Администратор
https://t.iss.one/progjob Вакансии в IT
👍2👎2
Media is too big
VIEW IN TELEGRAM
Что можно знать о C++ в 16 лет?

Сегодня мы собеседуем Богдана и проверяем его познания в C++
Проверим, насколько рано можно программировать.
Приятного просмотра!

источник

#cpp

👉@bookflow
👍8
Алгоритмы сортировки и анализ Big-O

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

Big-O нотация показывает, как время выполнения алгоритма растет в зависимости от размера входных данных. Она позволяет нам абстрагироваться от деталей реализации и сосредоточиться на масштабируемости алгоритма.

Рассмотрим несколько распространённых алгоритмов сортировки:

🔵Пузырьковая сортировка (Bubble Sort)

- Идея: многократно проходим по списку, попарно меняя местами элементы, если они стоят в неправильном порядке.
- Худший случай: O(n²)
- Средний случай: O(n²)
- Лучший случай (уже отсортированный список): O(n)

Bubble Sort прост для понимания, но крайне неэффективен для больших объемов данных.

🔵Сортировка вставками (Insertion Sort)

- Идея: поэлементно вставляем каждый новый элемент в отсортированную часть списка.
- Худший случай: O(n²)
- Средний случай: O(n²)
- Лучший случай: O(n)

Подходит для небольших наборов данных или почти отсортированных списков.

🔵Быстрая сортировка (Quick Sort)

- Идея: выбираем опорный элемент и перераспределяем элементы так, чтобы меньшие стояли слева, а большие — справа.
- Худший случай: O(n²) (при неудачном выборе опорного элемента)
- Средний случай: O(n log n)
- Лучший случай: O(n log n)

Quick Sort очень эффективен на практике и часто используется в стандартных библиотеках.

🔵Сортировка слиянием (Merge Sort)

- Идея: рекурсивно делим список пополам, сортируем части и объединяем их.
- Худший, средний и лучший случаи: O(n log n)

Merge Sort стабилен и эффективен, особенно для работы с большими файлами, но требует дополнительной памяти.


Заключение

Понимание алгоритмов сортировки и анализа Big-O помогает выбирать оптимальные решения для различных задач. Хотя простые алгоритмы легко реализовать, более эффективные методы значительно выигрывают при масштабировании.

https://medium.com/@ssbothwell/sorting-algorithms-and-big-o-analysis-332ce7b8e3a1

👉@bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Контейнеры Linux в 500 строках кода

Я уже много лет прямо или косвенно использую контейнеры Linux, но мне хотелось познакомиться с ними поближе. Поэтому я написал немного кода. Раньше это было 500 строк кода, клянусь, но я немного изменил его с момента публикации; в итоге получилось примерно на 70 строк больше.

Статья объясняет, как работают Linux-контейнеры, показывая минимальную реализацию на 500 строках кода. Она рассматривает ключевые концепции, такие как namespaces, cgroups и монтирование файловых систем, и даёт простое, но функциональное представление о механике, которая лежит в основе контейнеров, например, Docker. Основная цель — дать читателю ясное и практическое введение в то, как работают контейнеры на базовом уровне.

https://blog.lizzie.io/linux-containers-in-500-loc.html

#cpp

👉@bookflow
👍4