Что написать на C++ для практики?

Знаю базовые принципы плюсов, но нету идей для практики.
Не хочу писать то, что нельзя будет показать в портфолио(например змейку), хочется написать проект, который будет не стыдно выставить в портфолио.
Прошу подсказать идеи.
  • Вопрос задан
  • 1529 просмотров
Пригласить эксперта
Ответы на вопрос 5
mayton2019
@mayton2019
Bigdata Engineer
У меня периодически возникает одна и таже задача - очень быстро искать нужный текст в логах. Логи большие. Могут быть по терабайту. Россыпь файлов типа

application/log-2023-02-16-12-30.log
application/log-2023-01.gz

Загружать их в эластик - некогда обычно. Тут работа такая что нужно за час разобратсья и логи потом можно
выкинуть.

Вот есть сделать предложение - создать утилиту igrep (index-grep) которая при первом пуске - быстро проиндексирует по датам и словам.
И при полседующих будет искать быстро. И диапазон учитывать например.

Классический греп не подходит. Он все равно ищет линейно. Не учитывая даты. А мне надо так.

$ igrep time=-12h level=ERROR Tomcat Network Error
Вот. Здесь я как-бы захотел поискать все события за 12 часов назад уровня ошибки и содержащие
два ключевых слова.

Сами файлы обычно внутри структурированы так. Это почти всегда шаблон.
2023-02-16T00:00:01,000 [Info] Server started.
Есть метка времени. Уровень события. И текст события. Много-строчники (стектрейсы) можно соединять в одну строку. О длине самих файлов - ничего не известно. Могут быть от мелких (дневных) до архивов.

Вот такая вот задача. На мой взгляд - практичная. И есть где позаниматся оптимизацией. Дисковая
оптимизация. Индексные структуры. И размышления на тему как вообще в одном тексте искать
другой текст.

UPD.
Ответ написан
Комментировать
Adamos
@Adamos
Редактор XML-файлов.
Нет, не текстовый - их как грязи, а заточенный именно под XML: заменить атрибут {TEMPLATE} в тегах {TEMPLATE}, имеющих {TEMPLATE} в {TEMPLATE}, например. Или удалить... подсчитать.... переставить... на что фантазии и терпения хватит.
Запомнить шаблоны таких операций, удобный интерфейс поиска по ним.
Вообще интерфейс подобной программы - нешуточный вызов, копировать-то особенно некого.
Пакетная обработка файлов.
Возможность задать все параметры в командной строке.
Расширить форматы JSON-ом...
Все, палец выдохся.

Такое может быть полезно и там, где массово работают с XML (выгрузки из 1С, например), и в современных программах да игрульках: их настройки и сохранения довольно часто используют этот формат. Да и офисные форматы сейчас XML-based. В общем, может оказаться кому-то действительно интересно. А заниматься полезным трудом, а не учебным онанизмом - это же стимулирует!
Ответ написан
@rPman
Реши любую задачу с многопоточностью и общей памятью, какой-нибудь сервер например.
Или, к примеру, возьми тяжелый проект типа исходники браузера firefox/chromium и модифицируй их полезным образом (в этой области даже простая возможность настроить окружение, чтобы собрать этих монстров из исходников - уже плюс, а уж способность найти в исходниках нужное место и подправить - однозначно велком).
p.s. помню не осилил отладку openjdk jni кода (для этого нужно не просто настроить окружение для сборки java но и настроить отладку в ней) и искал баг в портируемом коде jni, роняющем java, по старинке логированием, полагаю если сумеешь настроить сборку и отладку, можно наверное сразу на мидла претендовать.

Люди, способные не просто собирать код из последовательных блоков а способные мыслить комплексно - уже показатель.

p.s. если работодатель ищет c++-ника, его явно не интересуют конечные задачи, это могут запилить рядовые программисты на любом другом высокоуровневом языке программирования, а интересуют не сами знания, а интеллект
Ответ написан
@stanislav888
https://leetcode.com/
Но я бы советовал не просто писать задачки оттуда, а полноценно проходить курсы из раздела Learn - https://leetcode.com/explore/learn/ Это поможет тебе набраться академических знаний по алгоритмам, которые очень любят на собеседованиях. Потом, сами тестовые для собесов берутся оттуда же.
Все твои решения будут доступны из инета всем желающим. Ссылку на профиль включишь в резюме. Покупать подписку не обязательно, бесплатных курсов хватит за глаза, для начинающего.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы