Сможет превращать любую картинку в символьную «картину» прямо в терминале или сохраняет в
.txtВ этой задаче:
• Считываем и масштабируем изображение в оттенки серого с помощью OpenCV;
• Преобразуем яркость каждого пикселя в соответствующий символ из палитры;
• Выводим построчно готовый ASCII-арт без дополнительных зависимостей.
Это минималистичный инструмент для создания текстового искусства.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47❤8👍8🤝3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28❤6🤝5👍2
Мини-конфиг на JSON — читаем, меняем, сохраняем!
Хотите настроить приложение через внешний файл, не заводя сложный парсер? Используйте JSON: читаемо, удобно, поддерживается из коробки с
Подключаем библиотеку и читаем конфиг
Теперь можно безопасно получить значения и обновить, если нужно:
Сохраняем обратно с отступами — удобно для ручной правки:
🔥 JSON стал стандартом де-факто для конфигураций: вы получаете чистоту, читаемость и работу без бойлерплейта.
📣 C++ Ready | #практика
Хотите настроить приложение через внешний файл, не заводя сложный парсер? Используйте JSON: читаемо, удобно, поддерживается из коробки с
nlohmann/json.Подключаем библиотеку и читаем конфиг
config.json в один объект:#include <nlohmann/json.hpp>
#include <fstream>
using json = nlohmann::json;
json cfg;
std::ifstream("config.json") >> cfg;
Теперь можно безопасно получить значения и обновить, если нужно:
int port = cfg.value("port", 8080);
cfg["debug"] = true;Сохраняем обратно с отступами — удобно для ручной правки:
std::ofstream("config.json") << cfg.dump(2);🔥 JSON стал стандартом де-факто для конфигураций: вы получаете чистоту, читаемость и работу без бойлерплейта.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥7👍3
Появилось два новых примитива —
std::latch и std::barrier, которые убирают лишние condition_variable и делают многопоточность читаемой.Что важно знать:
• latch — одноразовая точка сбора, ждёт завершения всех задач;
• barrier — циклическая синхронизация с коллбэком после каждой фазы;
• Просты в использовании, особенно при множестве параллельных этапов.
Так что, они убирают бойлерплейт и делают потоковый код чище и надёжнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥13❤4🤝1
Собираем все .txt из папки в один файл — без лишних циклов и копирования!
Часто нужно объединить десятки текстовых файлов в один отчёт или сводку. Всё делаем стандартными средствами C++ — коротко и надёжно.
Получаем список всех
Открываем итоговый файл и последовательно добавляем в него содержимое каждого файла:
Всё вместе — склеиваем файлы в
🔥 Можно использовать для логов, заметок, экспорта данных. Всё на стандартной библиотеке — переносимо и просто!
📣 C++ Ready | #практика
Часто нужно объединить десятки текстовых файлов в один отчёт или сводку. Всё делаем стандартными средствами C++ — коротко и надёжно.
Получаем список всех
.txt файлов в нужной директории:namespace fs = std::filesystem;
std::vector<fs::path> txt_files(const fs::path& dir) {
std::vector<fs::path> out;
for (auto& e : fs::directory_iterator(dir))
if (e.is_regular_file() && e.path().extension() == ".txt")
out.push_back(e.path());
return out;}
Открываем итоговый файл и последовательно добавляем в него содержимое каждого файла:
void concat_txts(const std::vector<fs::path>& files, const fs::path& out) {
std::ofstream ofs(out, std::ios::binary);
for (const auto& path : files) {
std::ifstream ifs(path, std::ios::binary);
ofs << ifs.rdbuf() << '\n';
}}Всё вместе — склеиваем файлы в
main:int main() {
auto files = txt_files("notes");
concat_txts(files, "all.txt");
std::cout << "Готово: " << files.size() << " файлов объединено\n";}🔥 Можно использовать для логов, заметок, экспорта данных. Всё на стандартной библиотеке — переносимо и просто!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤5🔥4
Этот инструмент помогает следить за изменениями в папке и быстро дублировать изменённые файлы в резервное место
Что важно знать:
• Работает без сторонних библиотек;
• Копирует только изменённые файлы;
• Подходит для любых каталогов.
Простой способ защитить данные и иметь актуальную резервную копию
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥3
Цветной вывод в консоли — яркие логи без библиотек!
Иногда нужно быстро подчеркнуть удачные и ошибочные ветки в логах. Достаточно встроенных ANSI-кодов — никаких внешних зависимостей!
Палитра базовых цветов (ANSI Escape)
Выводим сообщения разными цветами и не забываем сбрасывать стиль:
Работает на Linux / macOS «из коробки».
🔥 В Windows 10+ включите Virtual Terminal (
📣 C++ Ready | #практика
Иногда нужно быстро подчеркнуть удачные и ошибочные ветки в логах. Достаточно встроенных ANSI-кодов — никаких внешних зависимостей!
Палитра базовых цветов (ANSI Escape)
constexpr auto red = "\033[31m";
constexpr auto green = "\033[32m";
constexpr auto yellow = "\033[33m";
constexpr auto reset = "\033[0m";
// вернуть обычный цвет
Выводим сообщения разными цветами и не забываем сбрасывать стиль:
std::cout << green << "✔️ Всё прошло успешно" << reset << '\n';
std::cout << yellow << "… Загружаем данные" << reset << '\n';
std::cerr << red << "✖️ Ошибка подключения" << reset << '\n';
Работает на Linux / macOS «из коробки».
SetConsoleMode(h,ENABLE_VIRTUAL_TERMINAL_PROCESSING)) — и ANSI-краски будут доступны прямо в cmd / PowerShell.Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍4🔥4