Программирование {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
Программирование на С++

https://bdpx.github.io/cpp/

#cpp@bookflow

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

#devops@bookflow

👉 @Bookflow
🤡6👍42
ImHex

🔍 Hex-редактор для реверс-инженеров, программистов и людей, которые ценят свое зрение, когда работают ночью.

https://github.com/WerWolv/ImHex

#github@bookflow

👉 @Bookflow
👍8
Go-like каналы на C++

Каналы (channels, pipes) – это удобная абстракция для построения приложений, работающих в многопоточной среде. Они используются для передачи сообщений между потоками и, одновременно с этим, как средство синхронизации потоков. Я буду ссылаться на "Go-style channels", т.к. на мой взгляд, важная особенность каналов в языке GO – это возможность их мультиплексировать.

Реализации каналов на языке C++, конечно же, есть, например, в библиотеке boost::fibers, можно найти реализацию двух видов каналов. В документации boost::fibers можно найти описания способов мультиплексирования, правда не самих каналов, но и к ним можно применить подобную технику.

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


#cpp@bookflow

👉 @Bookflow
3👍2🌭1
Коллекция советов по программированию на Python, в основном это касается Matplotlib.


#python@bookflow

👉 @Bookflow
👍3🔥3
Инструментарий инженера DevOps 🧰🎒

Операционная система → Linux (recommended), Windows

Программирование → Go, Python, Groovy, Bash

Container orchestration → Kubernetes, Docker Swarm

Containers → Docker, Podman, Containerd

Source Code Management → Git, Subversion

Cloud → AWS, GCP, Azure, CivoCloud

CI/CD → Jenkins, CircleCI, Bamboo

Хостинг IT-проектов → GitHub, BitBucket, GitLab

IaC (Infrastructure as Code) and IP (Infrastructure Provisioning) → Ansible, Puppet, Chef, Terraform, Pulumi, Stack, Crossplane

Непрерывная обратная связь → GetFeedback, Jira, Slack, Pendo

Обсервация (мониторинг, протоколирование и анализ поведения системы) → Nagios, Grafana , Prometheus, New Relic, ELK Stack Datadog

Планирование → Jira Software, Confluence, Slack

Автоматизированное тестирование → xray, snyk, JUnit, Selenium, Appium

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

#devops@bookflow

👉 @Bookflow
👍4
Советы по Django

'null' vs. 'blank'

В моделях Django 'null' влияет на хранение данных в базе, позволяя полям хранить значения 'NULL'.

'blank' влияет на валидацию форм, разрешая пустые значения в формах.

#python@bookflow

👉 @Bookflow
👍21
This media is not supported in your browser
VIEW IN TELEGRAM
DeepCamera

Камера с искусственным интеллектом с открытым исходным кодом. Наделите любую камеру/CCTV самыми современными функциями искусственного интеллекта, включая распознавание лиц, распознавание людей (RE-ID), обнаружение автомобилей, обнаружение падений и многое другое.

https://github.com/SharpAI/DeepCamera

#github@bookflow

👉 @Bookflow
👍5
Что такое Uniform initialization? Aggregate initialization?

Uniform initialization, введенная в C++11, позволяет использовать единый синтаксис для инициализации переменных и объектов, начиная от примитивных типов до агрегатов¹. Другими словами, она вводит инициализацию скобками, которая использует фигурные скобки {} для заключения значений инициализатора. Синтаксис выглядит следующим образом: type var_name {arg1, arg2, ....arg n}.

Aggregate initialization - это форма инициализации списком для массивов или типов класса (часто структур или объединений), которые имеют: нет приватных или защищенных членов, нет пользовательских конструкторов, кроме явно заданных или удаленных конструкторов . Это позволяет напрямую инициализировать элементы агрегатов. Для этого мы предоставляем список инициализаторов в качестве инициализатора, который представляет собой список значений, разделенных запятыми.

Например, если у вас есть структура с несколькими членами:
struct Employee {
int id {};
int age {};
double wage {};
};


Когда мы определяем объект с типом структуры, нам нужен способ инициализации нескольких членов во время инициализации:
Employee joe; // как мы инициализируем joe.id, joe.age и joe.wage?

Агрегаты используют форму инициализации, называемую агрегатной инициализацией, которая позволяет нам напрямую инициализировать элементы агрегатов. Для этого мы предоставляем список инициализаторов в качестве инициализатора, который представляет собой список значений, разделенных запятыми. Так же как обычные переменные могут быть скопированы, напрямую инициализированы или списком инициализированы, есть 3 формы агрегатной инициализации.

#cpp@bookflow

👉 @Bookflow
👍43