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
🤔🤷♂️ Как и зачем мы парсим XML
Большинство разработчиков рано или поздно сталкиваются с XML. Этот язык разметки настолько глубоко вошел в нашу жизнь, что сложно представить систему, в которой не используется он сам или его подмножества. Разбор XML — достаточно типовая задача, но даже в ней можно выделить несколько основных подходов. В этой статье автор расскажет, зачем ему потребовалось парсить XML, какие подходы он опробовал, а заодно продемонстрирует замеры производительности для самых популярных реализаций на C++.
Читать статью
#почитать
Большинство разработчиков рано или поздно сталкиваются с XML. Этот язык разметки настолько глубоко вошел в нашу жизнь, что сложно представить систему, в которой не используется он сам или его подмножества. Разбор XML — достаточно типовая задача, но даже в ней можно выделить несколько основных подходов. В этой статье автор расскажет, зачем ему потребовалось парсить XML, какие подходы он опробовал, а заодно продемонстрирует замеры производительности для самых популярных реализаций на C++.
Читать статью
#почитать
#вопросы_с_собеседования
Что такое явное и неявное приведение типов в С++?
Явное приведение типов в C++ происходит, когда программист явно указывает, что значение одного типа должно быть преобразовано в значение другого типа. Это делается с помощью операторов приведения типов, таких как static_cast, dynamic_cast, const_cast и reinterpret_cast.
Неявное приведение типов в C++ происходит автоматически, когда компилятор обнаруживает, что значение одного типа используется в контексте, где ожидается значение другого типа. Например, если вы пытаетесь присвоить значение типа int переменной типа double, компилятор автоматически преобразует значение int в значение double.
Что такое явное и неявное приведение типов в С++?
⚡️Свершилось: канал с книгами только по C++
Мы создали для вас канал с книгами по C и C++, куда будем публиковать самые полезные книги для сишников. Подписывайтесь!
👉 Книги для C/C++ разработчиков
Мы создали для вас канал с книгами по C и C++, куда будем публиковать самые полезные книги для сишников. Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 очередной #дайджест по С++
🔸 Как выбрать тимлида в команду — на что смотреть, как сделать выбор, как построить свое развитие, как продемонстрировать руководителям?
🔸 Разработка расширения для PHP на C++ — хуки встроенных функций и методов
🔸 Как войти в айти за час — с нуля, на языке с++ Win32 (графические приложения) «для самых маленьких»
🔸 Концепция RAII — про парадигму управления ресурсами, которая способствует безопасности и эффективности кода
🔸 Верле: разрешаем коллизии. Продолжение — продолжение занимательной истории про шарики
🔸 Как выбрать тимлида в команду — на что смотреть, как сделать выбор, как построить свое развитие, как продемонстрировать руководителям?
🔸 Разработка расширения для PHP на C++ — хуки встроенных функций и методов
🔸 Как войти в айти за час — с нуля, на языке с++ Win32 (графические приложения) «для самых маленьких»
🔸 Концепция RAII — про парадигму управления ресурсами, которая способствует безопасности и эффективности кода
🔸 Верле: разрешаем коллизии. Продолжение — продолжение занимательной истории про шарики
🎉🎉 QIWI SERVER PARTY 9.0
14 декабря в 17:30 состоится митап для тех, кто хочет узнать об опыте больших IT-компаний в реализации современных подходов и решении насущных проблем. Своими историями поделятся спикеры из QIWI, Яндекса и Альфа-Банка.
Программа:
Павел Черняк — Нельзя просто так взять и обновить
В этом докладе автор покажет коллекцию заботливо отобранных граблей, по которым пришлось пройти при обновлении одного из монолитных процессингов QIWI. Если вы хотите обновиться до Java 17 с Java 8 / Java 11, то узнаете о возможных проблемах и получите решения для них. Вишенкой — про переход на новый Spring Framework 6.
Андрей Свиридов — Как TDD поможет лучше работать
Расскажет, как Test Driven Development поможет решить ежедневные проблемы разработчиков. Если вы подумывали использовать TDD, но почему-то сомневались, то этот доклад станет хорошей стартовой точкой».
Дмитрий Некрылов — Защищаем пользователей от раздвоения конференций
Иногда медиасерверы падают. Автохилинг пытается подменить их, но пользователи могут оказаться на разных медиасерверах, и конференции раздваиваются. Защититься от такого можно с помощью математически корректной и высокопроизводительной реализации конечного автомата на Java и SQL.
В докладе как раз и рассмотрите лучшие практики, которые помогли автору решить задачу с минимальной нагрузкой на систему.
Самвел Барсегян — Инфраструктурная платформа QIWI
В этом докладе автор расскажет, какое место в современном IT занимает DevOps и как его прикладное применение привело к формированию нового технологического подхода — Platform engineering. А ещё вы узнаете, как в QIWI применяется этот подход, разрабатываются и поддерживаются инструменты самообслуживания для IT-специалистов.
Регистрация тут
#мероприятие
14 декабря в 17:30 состоится митап для тех, кто хочет узнать об опыте больших IT-компаний в реализации современных подходов и решении насущных проблем. Своими историями поделятся спикеры из QIWI, Яндекса и Альфа-Банка.
Программа:
Павел Черняк — Нельзя просто так взять и обновить
В этом докладе автор покажет коллекцию заботливо отобранных граблей, по которым пришлось пройти при обновлении одного из монолитных процессингов QIWI. Если вы хотите обновиться до Java 17 с Java 8 / Java 11, то узнаете о возможных проблемах и получите решения для них. Вишенкой — про переход на новый Spring Framework 6.
Андрей Свиридов — Как TDD поможет лучше работать
Расскажет, как Test Driven Development поможет решить ежедневные проблемы разработчиков. Если вы подумывали использовать TDD, но почему-то сомневались, то этот доклад станет хорошей стартовой точкой».
Дмитрий Некрылов — Защищаем пользователей от раздвоения конференций
Иногда медиасерверы падают. Автохилинг пытается подменить их, но пользователи могут оказаться на разных медиасерверах, и конференции раздваиваются. Защититься от такого можно с помощью математически корректной и высокопроизводительной реализации конечного автомата на Java и SQL.
В докладе как раз и рассмотрите лучшие практики, которые помогли автору решить задачу с минимальной нагрузкой на систему.
Самвел Барсегян — Инфраструктурная платформа QIWI
В этом докладе автор расскажет, какое место в современном IT занимает DevOps и как его прикладное применение привело к формированию нового технологического подхода — Platform engineering. А ещё вы узнаете, как в QIWI применяется этот подход, разрабатываются и поддерживаются инструменты самообслуживания для IT-специалистов.
Регистрация тут
#мероприятие