Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Dangerous Dave
Серия видеороликов, показывающих начинающим программистам, как воссоздать Dangerous Dave с помощью C и SDL (2 часа)
источник
#cpp@bookflow
👉 @Bookflow
Серия видеороликов, показывающих начинающим программистам, как воссоздать Dangerous Dave с помощью C и SDL (2 часа)
источник
#cpp@bookflow
👉 @Bookflow
👍3😁2
Forwarded from Жизнь программиста
Как правильно писать комментарии в коде, чтобы не бесить коллег?
Когда-то давно я думал, что комментарии — это зло. «Хороший код говорит сам за себя!» — говорил я. Потом пришел кода в большой проект и потратил три часа на разбор функции processData(), которая делала… что-то.
📝 Главное правило: комментарии нужны не для очевидных вещей, а для объяснения сложных решений и бизнес-логики.
✅ Пишите почему, а не что
❌ // Уменьшаем баланс пользователя
✅ // Списываем сумму только после проверки, чтобы избежать дублей
✅ Избегайте очевидных комментариев
❌ // Устанавливаем X в 10
int x = 10;
✅ Объясняйте магию
Если формула или алгоритм нетривиальны, объясните, почему они такие.
✅ Следите за актуальностью
Старые, нерелевантные комментарии хуже, чем их отсутствие. Они вводят в заблуждение.
Какой самый худший комментарий вам встречался? 😅
🔔 @lifeproger
Когда-то давно я думал, что комментарии — это зло. «Хороший код говорит сам за себя!» — говорил я. Потом пришел кода в большой проект и потратил три часа на разбор функции processData(), которая делала… что-то.
📝 Главное правило: комментарии нужны не для очевидных вещей, а для объяснения сложных решений и бизнес-логики.
✅ Пишите почему, а не что
❌ // Уменьшаем баланс пользователя
✅ // Списываем сумму только после проверки, чтобы избежать дублей
✅ Избегайте очевидных комментариев
❌ // Устанавливаем X в 10
int x = 10;
✅ Объясняйте магию
Если формула или алгоритм нетривиальны, объясните, почему они такие.
// Используем формулу Гаусса для быстрого вычисления суммы от 1 до N
return (n * (n + 1)) / 2;✅ Следите за актуальностью
Старые, нерелевантные комментарии хуже, чем их отсутствие. Они вводят в заблуждение.
Какой самый худший комментарий вам встречался? 😅
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
Каждый программист хоть раз задавался вопросом: на каком стеке писать проект? Кто-то гонится за хайпом, кто-то выбирает проверенные решения, а кто-то берёт первое, что пришло в голову. Давай разберёмся, как выбрать технологии правильно.
1️⃣ Определи цели проекта
Если тебе нужно быстро запустить MVP – смотри в сторону фреймворков с богатой экосистемой (Django, Laravel, Next.js).
Если важна масштабируемость – обрати внимание на микросервисную архитектуру и язык, который лучше всего подходит для этих целей (Golang, Java, Node.js).
2️⃣ Посмотри на рынок
Выбрал язык? Отлично! Теперь узнай:
- Насколько востребованы специалисты?
- Есть ли хорошие библиотеки и фреймворки?
- Как развиваются технологии?
💡 Пример: Python – крутой язык, но если пишешь highload-систему, лучше глянуть на Rust или C++.
3️⃣ Проверь документацию и комьюнити
Хорошая документация = меньше боли. Если у технологии дохлый форум и обновления раз в три года – беги оттуда.
4️⃣ Экспериментируй
Лучший способ проверить стек – сделать pet-проект. Так ты поймёшь, удобно ли тебе работать с этими инструментами.
👉 @Bookflow
👍2❤1
🔥 Разбираемся с
Сегодня разберём мощный инструмент из стандартной библиотеки —
📌 Что такое
✅ Обычные функции
✅ Лямбды
✅ Функторы
✅ Указатели на методы и данные
🔹 Пример использования:
🔥 Чем
✅ Универсальность: избавляет от необходимости писать отдельные
✅ Чистый код: особенно полезен в шаблонных алгоритмах, где callable передаётся как параметр.
👉 @Bookflow
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
Введённый в 1985 году стандарт IEEE-754 для чисел с плавающей запятой был предназначен для решения проблемы разнородности реализаций чисел с плавающей запятой, мешавших портируемости кода, а также для повышения стабильности между платформами.
Он получил широкое применение и многократно пересматривался в течение прошедших лет. Если вы когда-нибудь работали с любыми вещественными числами в своих приложениях, то они, вероятно, отвечали этому стандарту.
Моя работа в течение последнего года заключалась в анализе погрешности различных математических функций, накопления этой погрешности и способов её уменьшения при помощи различных программных паттернов. Одной из исследованных мной тем были базовые математические функции, используемые в функциях активации нейронных сетей, а также способы их аппроксимации для повышения производительности. В процессе работы нам пришлось столкнуться с противодействием со стороны людей, активно стремящихся к корректной реализации математических функций и к соответствию их стандартам, в частности, к соблюдению обеспечения корректности одной наименее значимой единицы измерения (unit in last place, ULP) для элементарных функций.
https://habr.com/ru/hubs/algorithms/articles/
👉 @Bookflow
👍8🤷♂2🤔1
Forwarded from Жизнь программиста
🚀 Тёмные стороны фриланса: что не рассказывают новички
Фриланс — это свобода, деньги и работа в пижаме… Но давайте честно: не всё так радужно. Вот тёмные стороны удалёнки, о которых редко говорят:
🔴 Нет стабильности
Один месяц ты купаешься в деньгах, другой – считаешь копейки. Нужно либо иметь "финансовую подушку", либо выстраивать поток заказов.
🔴 Клиенты-ужасы
ТЗ меняется на ходу, дедлайны горят, а оплата "вот-вот придёт". Учись фильтровать заказчиков и заключать договоры (или хотя бы брать предоплату).
🔴 Бесконечная работа
Фрилансер — это не только кодинг, но и маркетинг, переговоры, бухучёт и даже психология. Не готов? Придётся научиться.
🔴 Нет коллег – нет общения
Скучаешь по офлайн-тимбилдингам и офисным мемам? Добро пожаловать в мир Slack-чатов и созвонов, где ты сам себе HR и тимлид.
Фриланс — это круто, но только если ты понимаешь риски и умеешь ими управлять. Готов ли ты к такому формату работы? 🤔
🔔 @lifeproger
Фриланс — это свобода, деньги и работа в пижаме… Но давайте честно: не всё так радужно. Вот тёмные стороны удалёнки, о которых редко говорят:
🔴 Нет стабильности
Один месяц ты купаешься в деньгах, другой – считаешь копейки. Нужно либо иметь "финансовую подушку", либо выстраивать поток заказов.
🔴 Клиенты-ужасы
ТЗ меняется на ходу, дедлайны горят, а оплата "вот-вот придёт". Учись фильтровать заказчиков и заключать договоры (или хотя бы брать предоплату).
🔴 Бесконечная работа
Фрилансер — это не только кодинг, но и маркетинг, переговоры, бухучёт и даже психология. Не готов? Придётся научиться.
🔴 Нет коллег – нет общения
Скучаешь по офлайн-тимбилдингам и офисным мемам? Добро пожаловать в мир Slack-чатов и созвонов, где ты сам себе HR и тимлид.
Фриланс — это круто, но только если ты понимаешь риски и умеешь ими управлять. Готов ли ты к такому формату работы? 🤔
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
Многие из вас каждый день работают в терминале, так давайте улучшим это времяпровождение вместе. Существует множество полезных инструментов 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
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
Это самостоятельный помощник по написанию кода с искусственным интеллектом, представляющий собой альтернативу 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
В современном мире, основанном на данных, выбор правильной базы данных имеет решающее значение и в то же время сложен. Сейчас облако предлагает больше возможностей для структурированных, полуструктурированных и неструктурированных баз данных, чем когда-либо. Эта шпаргалка поможет выбрать наиболее подходящую для ваших нужд.
Структурированные базы данных📌
Структурированные базы данных организуют данные в предопределенные схемы и модели.
Реляционные базы данных, такие как MySQL и PostgreSQL, хранят данные в таблицах со строками и столбцами.
Колоночные базы данных, такие как Amazon Redshift и Google BigQuery, также имеют структурированную модель данных, но хранят их по-другому, оптимизируя для аналитических запросов.
Преимущества:
- Эффективные SQL-запросы
- Возможность применения ограничений и валидации
- Последовательность там, где это необходимо
Примеры использования: CRM-системы, управление запасами, бухгалтерский учет, аналитика
Полуструктурированные базы данных📌
Полуструктурированные базы данных обеспечивают гибкость, храня данные без соблюдения формальной схемы. Данные часто хранятся в виде JSON или других гибких форматов.
Примеры включают в себя документ-базы данных, такие как MongoDB, графовые базы данных, наподобие Neptune, широкие колоночные хранилища, такие как ScyllaDB, и хранилища ключ-значение, такие как DynamoDB.
Преимущества:
- Гибкость для изменяющихся данных
- Масштабируемость на разных серверах
Примеры использования: Электронная коммерция, ленты социальных сетей, данные IoT
Неструктурированные базы данных📌
Неструктурированные базы данных оптимизированы для хранения и обработки огромных объемов разнородных данных, таких как документы, изображения, видео. Примеры: AWS S3, Azure Blob Storage.
Преимущества:
- Хранение огромных объемов данных
- Высокая масштабируемость
Примеры использования: Медиарепозитории, управление контентом, океаны данных, журнальные данные, резервное копирование.
#database
👉 @Bookflow
👍4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
DBDiagram
Бесплатный, простой инструмент для построения ER-диаграмм путем простого написания кода.
Предназначен для разработчиков и аналитиков данных.
https://dbdiagram.io/home
#database
👉 @Bookflow
Бесплатный, простой инструмент для построения ER-диаграмм путем простого написания кода.
Предназначен для разработчиков и аналитиков данных.
https://dbdiagram.io/home
#database
👉 @Bookflow
👍8