Какой у вас коммерческий опыт работы в IT?
Anonymous Poll
26%
от 6 лет
15%
от 3 до 6 лет включительно
16%
от 1 до 3 лет включительно
10%
до 1 года
34%
нет опыта
#вопросы_с_собеседования
Расскажите о системах автоматизации билд-процесса
Системы автоматизации билд-процесса — это инструменты, которые автоматизируют процесс создания программного обеспечения, включая компиляцию исходного кода в бинарный код, упаковку бинарного кода и запуск автоматических тестов². Эти системы позволяют ускорить и упростить процесс сборки программного обеспечения, а также повысить его надежность и воспроизводимость.
Существует множество систем автоматизации билд-процесса, которые отличаются по функциональности, поддерживаемым языкам программирования и платформам. Некоторые из популярных систем автоматизации билд-процесса:
Make: классический инструмент для автоматизации сборки программного обеспечения, использующий Makefile для описания зависимостей между файлами и правил сборки.
CMake: кроссплатформенная система для автоматизации сборки программного обеспечения, которая генерирует файлы сборки для различных систем сборки, таких как Make, Ninja и Visual Studio.
MSBuild: система сборки от Microsoft, используемая в Visual Studio для сборки проектов на языках C++, C# и других.
Ant: система сборки для Java, использующая XML-файлы для описания зависимостей и правил сборки.
Maven: система сборки и управления зависимостями для Java, которая автоматически загружает необходимые библиотеки и плагины.
Gradle: гибкая система сборки для Java, Groovy и Kotlin, которая поддерживает скрипты на Groovy и Kotlin для описания процесса сборки.
Расскажите о системах автоматизации билд-процесса
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
Библиотека C/C++ разработчика | cpp, boost, qt
Продолжаем наш опрос — вторая часть👇
Продолжаем наш опрос — последняя, третья часть👇
На каком языке программирования вы пишете больше всего?
Anonymous Poll
9%
Python
2%
Go
2%
Java
1%
JavaScript
1%
TypeScript
74%
C/C++
4%
С#
1%
Swift/Kotlin
1%
PHP
4%
Другой
Какая ваша специализация в IT?
Anonymous Poll
29%
Backend
2%
Frontend
9%
Fullstack
3%
Mobile
17%
Desktop
2%
DevOps/Sysadmin
1%
QA
4%
Data Science
6%
Кибербезопасность
27%
Другое
Какой грейд у вас на работе?
Anonymous Poll
12%
Стажер
14%
Джуниор
25%
Миддл
16%
Сеньор
6%
Тимлид
3%
Архитектор
3%
СТО
22%
я не в IT
This media is not supported in your browser
VIEW IN TELEGRAM
🤔 очередной #дайджест по С++
🔼 Память как у пингвина — работа памяти в Linux
🔼 Toggle Builder — о дополнении, которым можно было бы снабдить builder-классы
🔼 С алгоритмами в духе LeetCode на собеседованиях пора кончать — или не тратьте впустую ценное время кандидатов
🔼 Запускаем управление файлами метаданных — о распространении метаданных с помощью conan
🔼 Не нужно блокировать кнопки — почему разработчики так делают, почему это не работает и что нужно делать вместо этого
🔼 Память как у пингвина — работа памяти в Linux
🔼 Toggle Builder — о дополнении, которым можно было бы снабдить builder-классы
🔼 С алгоритмами в духе LeetCode на собеседованиях пора кончать — или не тратьте впустую ценное время кандидатов
🔼 Запускаем управление файлами метаданных — о распространении метаданных с помощью conan
🔼 Не нужно блокировать кнопки — почему разработчики так делают, почему это не работает и что нужно делать вместо этого
🏆 Самые популярные языки программирования 2023
Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇
🔗 Читать статью
🔗 Зеркало
Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇
🔗 Читать статью
🔗 Зеркало
✏️✍️ Пишем свой текстовый редактор на C
Это около 1000 строк C в одном файле без зависимостей и 184 шага. В материале показана реализация основных функций, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого. Автор объяснит каждый шаг, иногда очень подробно.
Мануал состоит из таких частей:
♦️ Установка
♦️ Вход в режим raw
♦️ Raw Ввод и вывод
♦️ Просмотр текста
♦️ Текстовый редактор
♦️ Поиск
♦️ Подсветка синтаксиса
♦️ Дополнения
Читать статью
#мануал
Это около 1000 строк C в одном файле без зависимостей и 184 шага. В материале показана реализация основных функций, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.
На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого. Автор объяснит каждый шаг, иногда очень подробно.
Мануал состоит из таких частей:
♦️ Установка
♦️ Вход в режим raw
♦️ Raw Ввод и вывод
♦️ Просмотр текста
♦️ Текстовый редактор
♦️ Поиск
♦️ Подсветка синтаксиса
♦️ Дополнения
Читать статью
#мануал
💥🧙♀️ Новые проклятия: руководство по ncurses
Ncurses («new curses») — библиотека, написанная на языках Си и Ада, предназначенная для управления вводом-выводом на терминал, в числе прочего, библиотека позволяет задавать экранные координаты (в знакоместах) и цвет выводимых символов. Предоставляет программисту уровень абстракции, позволяющий не беспокоиться об аппаратных различиях терминалов и писать переносимый код.
Изначально была библиотека под названием curses (название произошло от сокращения «cursor optimization»). Эта библиотека работала напрямую с терминалом, используя API системы, и при этом позволяла разработчикам не заботиться о различных типах терминалов. Библиотека давала возможность приложению перемещать курсор, создавать окна (не GUI), управлять цветом, управлять мышью и т.д. без использования зависящих от системы управляющих символов.
ncurses — это клон оригинальной curses из System V Release 4.0 (SVr4), которая в свою очередь была улучшением классического curses из BSD (название произошло от «new curses»)
Читать статью
#почитать
Ncurses («new curses») — библиотека, написанная на языках Си и Ада, предназначенная для управления вводом-выводом на терминал, в числе прочего, библиотека позволяет задавать экранные координаты (в знакоместах) и цвет выводимых символов. Предоставляет программисту уровень абстракции, позволяющий не беспокоиться об аппаратных различиях терминалов и писать переносимый код.
Изначально была библиотека под названием curses (название произошло от сокращения «cursor optimization»). Эта библиотека работала напрямую с терминалом, используя API системы, и при этом позволяла разработчикам не заботиться о различных типах терминалов. Библиотека давала возможность приложению перемещать курсор, создавать окна (не GUI), управлять цветом, управлять мышью и т.д. без использования зависящих от системы управляющих символов.
ncurses — это клон оригинальной curses из System V Release 4.0 (SVr4), которая в свою очередь была улучшением классического curses из BSD (название произошло от «new curses»)
Читать статью
#почитать
🚀🕛 Сортировка конфигов для Make сборок
Как известно любая большая программа на Си содержит много программных компонентов и, как следствие, много настроек: констант, макросов, конфигурационных структур и прочего. Всё это можно назвать одним словом: конфиги.
Все передают конфиги по-разному. Это один из религиозных аспектов в программировании микроконтроллеров.
1--Junior разработчики прописывают константы в каждом файле проекта или пихают всё в config.h, который потом вручную подключают #include(ом) во все *.с файлы,
2--Middle программисты передают конфиги через переменные окружения, которые определяют в скриптах сборки (Make, Cmake и т.п.).
3--Senior(ы) вообще передают конфиги через Device Tree и механизм Kconfig.
В статье не будут рассуждать как лучше и правильнее передавать конфиги в сборки. Разговор будет о том, как поступать, когда конфиги прописаны как переменные окружения в отдельном make файле по имени config.mk.
Читать статью
#почитать
Как известно любая большая программа на Си содержит много программных компонентов и, как следствие, много настроек: констант, макросов, конфигурационных структур и прочего. Всё это можно назвать одним словом: конфиги.
Все передают конфиги по-разному. Это один из религиозных аспектов в программировании микроконтроллеров.
1--Junior разработчики прописывают константы в каждом файле проекта или пихают всё в config.h, который потом вручную подключают #include(ом) во все *.с файлы,
2--Middle программисты передают конфиги через переменные окружения, которые определяют в скриптах сборки (Make, Cmake и т.п.).
3--Senior(ы) вообще передают конфиги через Device Tree и механизм Kconfig.
В статье не будут рассуждать как лучше и правильнее передавать конфиги в сборки. Разговор будет о том, как поступать, когда конфиги прописаны как переменные окружения в отдельном make файле по имени config.mk.
Читать статью
#почитать
🤔 очередной #дайджест по С++
🔻 Книга «Разработка высокочастотных торговых систем с помощью основ C++ или Java» — как построить высокочастотную торговую систему из сложных технологических компонентов, подкрепленных точными данными
🔻 Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем — вперед в прошлое и библиотека Little DirectMedia Layer
🔻 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — настройка санитайзеров и valgrind для логирования ошибок, связанных с интересующими библиотеками
🔻 Как добавить non-copyable и non-movable объект в std::map или std::unordered_map — как мы можем поместить некопируемый неперемещаемый объект в ассоциативный контейнер
🔻 Physical Units и System of Quantities — о библиотеке mp-units, кандидате на включение в C++29
🔻 Книга «Разработка высокочастотных торговых систем с помощью основ C++ или Java» — как построить высокочастотную торговую систему из сложных технологических компонентов, подкрепленных точными данными
🔻 Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем — вперед в прошлое и библиотека Little DirectMedia Layer
🔻 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — настройка санитайзеров и valgrind для логирования ошибок, связанных с интересующими библиотеками
🔻 Как добавить non-copyable и non-movable объект в std::map или std::unordered_map — как мы можем поместить некопируемый неперемещаемый объект в ассоциативный контейнер
🔻 Physical Units и System of Quantities — о библиотеке mp-units, кандидате на включение в C++29
#вопросы_с_собеседования
Что будет выведено на экран?
В первом случае на печать выведется 9, потому что функция f принимает параметр t = 5, внутри функции к глобальной переменной a прибавляется 5, теперь a = 9, а f возвращает ссылку на неё и печатается значение a, то есть 9.
Далее неважно, что происходит внутри функции, важно, что возвращаемой ссылке на a присваивается 20, значит a = 20. Переменная t не поменяла своё значение, так как в функцию она передается по значению, а не по ссылке.
Затем опять вызываем f(5), при этом a = 20, a = 20 + 5, на печати увидим число 25.
Теперь присваиваем t значение a (в этот момент a = 25 + 5), значит, t станет равно 30.
И, наконец, последняя печать. Вызываем f(30), a = 30 + 30, и возвращается значение 60.
Что будет выведено на экран?
#include <iostream>
int a = 4;
int &f(int x){
a = a + x;
return a;
}
int main(void){
int t = 5;
std::cout << f(t) << std::endl;
f(t) = 20;
std::cout << f(t) << std::endl;
t = f(t);
std::cout << f(t) << std::endl;
}
Далее неважно, что происходит внутри функции, важно, что возвращаемой ссылке на a присваивается 20, значит a = 20. Переменная t не поменяла своё значение, так как в функцию она передается по значению, а не по ссылке.
Затем опять вызываем f(5), при этом a = 20, a = 20 + 5, на печати увидим число 25.
Теперь присваиваем t значение a (в этот момент a = 25 + 5), значит, t станет равно 30.
И, наконец, последняя печать. Вызываем f(30), a = 30 + 30, и возвращается значение 60.
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
📯Внимание всем отважным героям и искателям приключений!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
📚 Qt 6. Разработка оконных приложений на C++ (2022)
✍️ Автор: Прохоренок Н.А.
📃 Страниц: 512
Описываются базовые возможности библиотеки Qt, позволяющей создавать приложения с графическим интерфейсом на языке C++. Книга ориентирована на тех, кто уже знаком с языком программирования C++ и хотел бы научиться разрабатывать оконные приложения. Рассматриваются способы обработки событий, управление свойствами окна, создание формы, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Книга содержит большое количество практических примеров, помогающих начать разрабатывать приложения с графическим интерфейсом самостоятельно.
Что внутри:
🔸Управление окном приложения
🔸Обработка сигналов и событий
🔸 Размещение компонентов внутри окна
🔸 Основные компоненты
🔸 Списки и таблицы
🔸 Работа с графикой и изображениями
🔸 Графическая сцена
🔸 Диалоговые окна
🔸 SDI и MDI приложения
🔸 Редактор Qt Creator
✍️ Автор: Прохоренок Н.А.
📃 Страниц: 512
Описываются базовые возможности библиотеки Qt, позволяющей создавать приложения с графическим интерфейсом на языке C++. Книга ориентирована на тех, кто уже знаком с языком программирования C++ и хотел бы научиться разрабатывать оконные приложения. Рассматриваются способы обработки событий, управление свойствами окна, создание формы, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Книга содержит большое количество практических примеров, помогающих начать разрабатывать приложения с графическим интерфейсом самостоятельно.
Что внутри:
🔸Управление окном приложения
🔸Обработка сигналов и событий
🔸 Размещение компонентов внутри окна
🔸 Основные компоненты
🔸 Списки и таблицы
🔸 Работа с графикой и изображениями
🔸 Графическая сцена
🔸 Диалоговые окна
🔸 SDI и MDI приложения
🔸 Редактор Qt Creator