Программирование {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
Внутреннее устройство Linux - доступно, но всерьез.

Уроки по Linux от Дмитрия Кетова для самостоятельного обучаения.

https://www.youtube.com/c/DmitryKetov/playlists

#linux@bookflow

👉 @Bookflow
🔥6👍4
Как правильно писать комментарии в коде, чтобы не бесить коллег?

Когда-то давно я думал, что комментарии — это зло. «Хороший код говорит сам за себя!» — говорил я. Потом пришел кода в большой проект и потратил три часа на разбор функции processData(), которая делала… что-то.

📝 Главное правило: комментарии нужны не для очевидных вещей, а для объяснения сложных решений и бизнес-логики.

Пишите почему, а не что
// Уменьшаем баланс пользователя
// Списываем сумму только после проверки, чтобы избежать дублей

Избегайте очевидных комментариев
// Устанавливаем X в 10
int x = 10;

Объясняйте магию
Если формула или алгоритм нетривиальны, объясните, почему они такие.

// Используем формулу Гаусса для быстрого вычисления суммы от 1 до N
return (n * (n + 1)) / 2;


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

Какой самый худший комментарий вам встречался? 😅

🔔@lifeproger
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🚀 Как выбрать идеальный стек технологий?

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

1️⃣ Определи цели проекта
Если тебе нужно быстро запустить MVP – смотри в сторону фреймворков с богатой экосистемой (Django, Laravel, Next.js).
Если важна масштабируемость – обрати внимание на микросервисную архитектуру и язык, который лучше всего подходит для этих целей (Golang, Java, Node.js).

2️⃣ Посмотри на рынок
Выбрал язык? Отлично! Теперь узнай:
- Насколько востребованы специалисты?
- Есть ли хорошие библиотеки и фреймворки?
- Как развиваются технологии?

💡 Пример: Python – крутой язык, но если пишешь highload-систему, лучше глянуть на Rust или C++.

3️⃣ Проверь документацию и комьюнити
Хорошая документация = меньше боли. Если у технологии дохлый форум и обновления раз в три года – беги оттуда.

4️⃣ Экспериментируй
Лучший способ проверить стек – сделать pet-проект. Так ты поймёшь, удобно ли тебе работать с этими инструментами.

👉 @Bookflow
👍21
🔥 Разбираемся с std::invoke в C++ 🔥

Сегодня разберём мощный инструмент из стандартной библиотеки — std::invoke. Многие его игнорируют, но он может упростить вызов функций и методов, особенно в шаблонном коде.

📌 Что такое std::invoke?
std::invoke — это универсальный механизм вызова вызываемых объектов (callable). Он может вызывать:
Обычные функции
Лямбды
Функторы
Указатели на методы и данные

🔹 Пример использования:


#include <iostream>
#include <functional>

struct Foo {
void method(int x) {
std::cout << "Method called with " << x << '\n';
}
};

void function(int x) {
std::cout << "Function called with " << x << '\n';
}

int main() {
Foo foo;

// Вызов обычной функции
std::invoke(function, 42);

// Вызов метода класса через объект
std::invoke(&Foo::method, foo, 24);

// Вызов метода через указатель на объект
Foo* ptr = &foo;
std::invoke(&Foo::method, ptr, 77);

return 0;
}


🔥 Чем std::invoke полезен?
Универсальность: избавляет от необходимости писать отдельные if constexpr для разных callable объектов.
Чистый код: особенно полезен в шаблонных алгоритмах, где callable передаётся как параметр.

👉 @Bookflow
👍4
Ни одна реализация элементарных функций не соответствует стандарту IEEE 754

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

Он получил широкое применение и многократно пересматривался в течение прошедших лет. Если вы когда-нибудь работали с любыми вещественными числами в своих приложениях, то они, вероятно, отвечали этому стандарту.

Моя работа в течение последнего года заключалась в анализе погрешности различных математических функций, накопления этой погрешности и способов её уменьшения при помощи различных программных паттернов. Одной из исследованных мной тем были базовые математические функции, используемые в функциях активации нейронных сетей, а также способы их аппроксимации для повышения производительности. В процессе работы нам пришлось столкнуться с противодействием со стороны людей, активно стремящихся к корректной реализации математических функций и к соответствию их стандартам, в частности, к соблюдению обеспечения корректности одной наименее значимой единицы измерения (unit in last place, ULP) для элементарных функций.

https://habr.com/ru/hubs/algorithms/articles/

👉 @Bookflow
👍8🤷‍♂2🤔1
🚀 Тёмные стороны фриланса: что не рассказывают новички

Фриланс — это свобода, деньги и работа в пижаме… Но давайте честно: не всё так радужно. Вот тёмные стороны удалёнки, о которых редко говорят:

🔴 Нет стабильности
Один месяц ты купаешься в деньгах, другой – считаешь копейки. Нужно либо иметь "финансовую подушку", либо выстраивать поток заказов.

🔴 Клиенты-ужасы
ТЗ меняется на ходу, дедлайны горят, а оплата "вот-вот придёт". Учись фильтровать заказчиков и заключать договоры (или хотя бы брать предоплату).

🔴 Бесконечная работа
Фрилансер — это не только кодинг, но и маркетинг, переговоры, бухучёт и даже психология. Не готов? Придётся научиться.

🔴 Нет коллег – нет общения
Скучаешь по офлайн-тимбилдингам и офисным мемам? Добро пожаловать в мир Slack-чатов и созвонов, где ты сам себе HR и тимлид.

Фриланс — это круто, но только если ты понимаешь риски и умеешь ими управлять. Готов ли ты к такому формату работы? 🤔

🔔@lifeproger
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😱1🤣1😈1
std::exception — это базовый класс для всех стандартных исключений в C++

Почему стоит наследоваться от std::exception?

• Единообразие в обработке исключений: Когда вы наследуетесь от std::exception, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями

what() метод: std::exception предоставляет важный метод what(), который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений

• Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от std::exception

• Стандартные типы исключений: std::exception имеет несколько стандартных подклассов, таких как std::runtime_error, std::logic_error и другие. Вы можете использовать эти подклассы вместо базового std::exception, чтобы более точно определить характер ошибки

#cpp

👉 @Bookflow
🔥4👍2💊1
This media is not supported in your browser
VIEW IN TELEGRAM
CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привыкла полагаться.

Rus https://habr.com/ru/post/711968/

Eng https://dev.to/lissy93/cli-tools-you-cant-live-without-57f6#utils

#devops

👉 @Bookflow
👍5👎1😁1
Media is too big
VIEW IN TELEGRAM
STL с нуля | C++

1:24 - заполнение контейнеров.
2:44 - вопрос о передаче параметра в функцию (копия, ссылка, универсальная ссылка).
4:54 - как посмотреть, что генерит компилятор из универсальной ссылки.
8:53 - про рандом.
10:36 - list vs vector.
14:38 - как удалить элемент из std::vector.
16:19 - решение задачи про исчезнувший элемент.
18:11 - обсуждаем сложность алгоритмов.
21:37 - чем хороша STL.

#cpp

👉 @Bookflow
👏3
This media is not supported in your browser
VIEW IN TELEGRAM
🐾 Tabby

Это самостоятельный помощник по написанию кода с искусственным интеллектом, представляющий собой альтернативу GitHub Copilot с открытым исходным кодом и локальным ресурсом. Он может похвастаться несколькими ключевыми особенностями:

Самодостаточность, отсутствие необходимости в СУБД или облачном сервисе.
Интерфейс OpenAPI, легко интегрируемый с существующей инфраструктурой (например, Cloud IDE).
Поддержка графических процессоров потребительского класса.

https://github.com/TabbyML/tabby

#devops

👉 @Bookflow
👍3😁2
Облачные базы данных: Шпаргалка

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

Структурированные базы данных📌

Структурированные базы данных организуют данные в предопределенные схемы и модели.

Реляционные базы данных, такие как MySQL и PostgreSQL, хранят данные в таблицах со строками и столбцами.

Колоночные базы данных, такие как Amazon Redshift и Google BigQuery, также имеют структурированную модель данных, но хранят их по-другому, оптимизируя для аналитических запросов.

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

Примеры использования: CRM-системы, управление запасами, бухгалтерский учет, аналитика


Полуструктурированные базы данных📌

Полуструктурированные базы данных обеспечивают гибкость, храня данные без соблюдения формальной схемы. Данные часто хранятся в виде JSON или других гибких форматов.

Примеры включают в себя документ-базы данных, такие как MongoDB, графовые базы данных, наподобие Neptune, широкие колоночные хранилища, такие как ScyllaDB, и хранилища ключ-значение, такие как DynamoDB.

Преимущества:
- Гибкость для изменяющихся данных
- Масштабируемость на разных серверах

Примеры использования: Электронная коммерция, ленты социальных сетей, данные IoT


Неструктурированные базы данных📌

Неструктурированные базы данных оптимизированы для хранения и обработки огромных объемов разнородных данных, таких как документы, изображения, видео. Примеры: AWS S3, Azure Blob Storage.

Преимущества:
- Хранение огромных объемов данных
- Высокая масштабируемость

Примеры использования: Медиарепозитории, управление контентом, океаны данных, журнальные данные, резервное копирование.

#database

👉 @Bookflow
👍42