Вызов функции во вложенном цикле это конечно дорого, но в предположении что о "func" ничего не известно и код однопоточный - вряд ли тут можно сделать как-то по-другому. Пример плохой.
Педаль - это значительно более медленный модификатор, чем клавиши-модификаторы на клавиатуре. Чисто по физическим / физиологическим причинам - больше размер и более медленная группа мышц для активации. Для шифта и т.д. она не подходит. Для символьных клавиш тем более.
Передаю привет авторам решения перейти на WebExtensions в аддонах, что отправило в могилу Vimperator. Нормального аддона для модального управления браузером после этого я так и не смог найти.
ведущий аналитик Mobile Research Group Эльдар Муртазин
Оффтоп: Восхищаюсь постоянством и возрастом этого титула. Вроде уже 10 лет, если не больше, вижу именно эту формулировку в различных технических статьях. Мне кажется если случится ядерный армагеддон, то на развалинах цивилизации останутся только: a) Тараканы б) Ведущий аналитик Mobile Research Group Эльдар Муртазин
Facepalm. Вам так нужен национальный текстовый редактор? Он сможет обскакать Emacs, Vim, Sublime, vscode, в которые вкидывались сотни человеко-часов и про которые я честно говоря даже не знаю их национальную принадлежность?
Всеми любимый текстовый редактор VS Code от Microsoft.
Как будто vscode индустриальный стандарт)) Я так понимаю это просто странно сформулированная мысль "Среди эмбедщиков больше перекос от IDE к редакторам, чем в прикладном программировании".
В целом, жалобам верю, но вы имхо попали в "пузырь" с неудачным типом работодателя. Отсюда и все эти гаражи и ноутбуки на коленях. Российские компании, разрабатывающие под МК, это весьма характерный типаж.
"Навыки программирования на С очень слабо конвертируются" - слишком пессимистично. Дело же не в знании непосредственно Си, к сишке у разработчиков встраиваемых систем прилагаются знания модели памяти в C, работы сисколов, бинарников, ассемблера, отладки, вы ужаснётесь если узнаете насколько прикладники этого всего не умеют.
Неплохо, но не идеально, указывать на плюсы лень, укажу только минусы:
IJKL - неудачный вариант: одну из лучших клавиш (J) отдаёте под одно из самых редких действий (символ влево). Вимовский hjkl не дураки придумывали.
Повесив модификатор на SPC, вы получаете классическую проблему невозможности отличить нажатие модификатора. " j" (например), набранное без отпускания пробела - это j с модификатором (стрелка влево) или очень быстро набранное " j"? Вы сами говорите в конце статьи, что столкнулись с этой проблемой для других клавиш, как вышло что вы не столкнулись с ней для пробела?
Многократное нажатие Return делается мизинцем, что не есть хорошо. В обычном Return из-за его размера это можно обойти сниманием руки с домашнего ряда и нажатием Return средним/безымянным пальцем, в вашей раскладке такое не прокатит.
Пара круглых скобок набирается движением рядом стоящих пальцев (finger roll), как правило это хороший признак, но не когда один из пальцев - мизинец. Мизинец не может ни начать удобных finger roll-ов, ни закончить их. У квадратных скобок в вашей раскладке этой проблемы нет, тк они набираются средним+указательным пальцем. Почему квадратные скобки, гораздо более редкий символ чем круглые, имеют у вас приоритет в позиции перед круглыми?
"Что удобно для "потребителей контента", которым нужно просматривать страницы с готовыми текстами" (PgUp / PgDn) - неверное в корне суждение. Просмотр существующего кода занимает у программиста более чем в 5 раз больше времени, чем написание нового. Скролл вверх/вниз - важнейшее действие для программиста, например в моей кастомной раскладке он забит на самые ценные позиции - I/J (с модификатором).
Подскажите, а зачем нужно две версии геттера, если константного достаточно?
Достаточно его или нет, зависит от спецификации / соглашения. В некоторых случаях да, спецификация может говорить, что поле класса не предусмотрено для изменения. Или предусмотрено, но через сеттер. Тогда да, можно иметь только константную версию. Наличие сеттера эквивалентно наличию неконстантного геттера.
В данном случае в коде, который был до моего изменения, использовался неконстантный геттер и константного не было. Значил изменение qPixmap_Tiles предполагалось делать через неконстантный геттер. Устранять это соглашение особого смысла нет и поэтому в данном случае неконстантный геттер убирать не стоит (не говоря уже о том что такое изменение, условно, сломает API compatibility).
Почему при наличии неконстантного геттера стоит добавлять константный думаю понятно - нельзя вызвать неконстантный метод у константных объектов, поэтому у объекта const CImageStorage или const CImageStorage& компилятор запретит вызывать getTiles(). (Т.е. у таких объектов вообще запрещено будет узнавать qPixmap_Tiles, что вряд ли соответствует желаниям разработчика).
Нет отбивки пробелами для знака равенства и комментариев
Перед секциями public, private итд неплохо бы ставить пустую строку, иначе весь класс читается одним куском
Геттер неплохо бы иметь константный и неконстантный
"Указатель на класс" - расстрелять
(void) - привет из C. В плюсах (void) и () в определении это одно и то же
Несколько подряд секций public, решение очень на любителя
Заполнять дефисами комментарий - ооооочень на любителя
GetPtr - куча проблем, см. коммент 0xd34df00d. Зачем shared_ptr синглтону??? Вы написали сто комментов вида "конструктор это конструктор", но не потрудились закомментить единственное неочевидное место в коде.
Именование - куча проблем, выше всё сказали
"Переменные" в приличном обществе называются полями класса
Русский язык в комментариях
Вот поверхностные косметические изменения
(комменты на англ - заполнители, в реальном коде надо более подробные)
Но единой методики нет. Базовые кирпичики это знание WinAPI и умение перехватывать и заменять вызовы в дебаггере, читать ассемблерный код. Далее по факту идёт свободное творчество
Папа мне во многом помогает, с поддержкой сайта, маркетингом, советами и много чем еще. Папа привил мне увлечение наукой с раннего детства, поддерживал все мои стремления, без папы я никуда. Я работаю над проектом уже 4 месяца, каждый день после школы, без поддержки папы я бы уже поехал кукухой, но я сам тащусь оттого что я делаю
Полусвободная, код open source, брендированная сборка (собственно дистрибутив VSCode) включает несвободные компоненты (модуль телеметрии, логотипы, ещё что-то) и распространяется под несвободной лицензией. Вот коммент на гитхабе от разработчика MS, объясняющий разницу.
Для этого надо доп. условие, что func() контролируется нами (не библиотечная). =)
Но да, цикл надо внутрь функции если есть такая возможность
Вызов функции во вложенном цикле это конечно дорого, но в предположении что о "func" ничего не известно и код однопоточный - вряд ли тут можно сделать как-то по-другому. Пример плохой.
Я его закончил, давно правда, не представляю о чём может идти речь.
Что не так с мехматом? oO
Педаль - это значительно более медленный модификатор, чем клавиши-модификаторы на клавиатуре. Чисто по физическим / физиологическим причинам - больше размер и более медленная группа мышц для активации. Для шифта и т.д. она не подходит. Для символьных клавиш тем более.
Передаю привет авторам решения перейти на WebExtensions в аддонах, что отправило в могилу Vimperator. Нормального аддона для модального управления браузером после этого я так и не смог найти.
Оффтоп: Восхищаюсь постоянством и возрастом этого титула. Вроде уже 10 лет, если не больше, вижу именно эту формулировку в различных технических статьях. Мне кажется если случится ядерный армагеддон, то на развалинах цивилизации останутся только: a) Тараканы б) Ведущий аналитик Mobile Research Group Эльдар Муртазин
C17 и C2X такие:
Facepalm. Вам так нужен национальный текстовый редактор? Он сможет обскакать Emacs, Vim, Sublime, vscode, в которые вкидывались сотни человеко-часов и про которые я честно говоря даже не знаю их национальную принадлежность?
Как будто vscode индустриальный стандарт)) Я так понимаю это просто странно сформулированная мысль "Среди эмбедщиков больше перекос от IDE к редакторам, чем в прикладном программировании".
В целом, жалобам верю, но вы имхо попали в "пузырь" с неудачным типом работодателя. Отсюда и все эти гаражи и ноутбуки на коленях. Российские компании, разрабатывающие под МК, это весьма характерный типаж.
"Навыки программирования на С очень слабо конвертируются" - слишком пессимистично. Дело же не в знании непосредственно Си, к сишке у разработчиков встраиваемых систем прилагаются знания модели памяти в C, работы сисколов, бинарников, ассемблера, отладки, вы ужаснётесь если узнаете насколько прикладники этого всего не умеют.
Неплохо, но не идеально, указывать на плюсы лень, укажу только минусы:
IJKL - неудачный вариант: одну из лучших клавиш (J) отдаёте под одно из самых редких действий (символ влево). Вимовский hjkl не дураки придумывали.
Повесив модификатор на SPC, вы получаете классическую проблему невозможности отличить нажатие модификатора. " j" (например), набранное без отпускания пробела - это j с модификатором (стрелка влево) или очень быстро набранное " j"? Вы сами говорите в конце статьи, что столкнулись с этой проблемой для других клавиш, как вышло что вы не столкнулись с ней для пробела?
Многократное нажатие Return делается мизинцем, что не есть хорошо. В обычном Return из-за его размера это можно обойти сниманием руки с домашнего ряда и нажатием Return средним/безымянным пальцем, в вашей раскладке такое не прокатит.
Пара круглых скобок набирается движением рядом стоящих пальцев (finger roll), как правило это хороший признак, но не когда один из пальцев - мизинец. Мизинец не может ни начать удобных finger roll-ов, ни закончить их. У квадратных скобок в вашей раскладке этой проблемы нет, тк они набираются средним+указательным пальцем. Почему квадратные скобки, гораздо более редкий символ чем круглые, имеют у вас приоритет в позиции перед круглыми?
"Что удобно для "потребителей контента", которым нужно просматривать страницы с готовыми текстами" (PgUp / PgDn) - неверное в корне суждение. Просмотр существующего кода занимает у программиста более чем в 5 раз больше времени, чем написание нового. Скролл вверх/вниз - важнейшее действие для программиста, например в моей кастомной раскладке он забит на самые ценные позиции - I/J (с модификатором).
Можно больше деталей про эту новую систему? Почему такая секретность?
И что значит - в Европе не признаются российские дипломы? Всё прекрасно признаётся.
Достаточно его или нет, зависит от спецификации / соглашения. В некоторых случаях да, спецификация может говорить, что поле класса не предусмотрено для изменения. Или предусмотрено, но через сеттер. Тогда да, можно иметь только константную версию. Наличие сеттера эквивалентно наличию неконстантного геттера.
В данном случае в коде, который был до моего изменения, использовался неконстантный геттер и константного не было. Значил изменение qPixmap_Tiles предполагалось делать через неконстантный геттер. Устранять это соглашение особого смысла нет и поэтому в данном случае неконстантный геттер убирать не стоит (не говоря уже о том что такое изменение, условно, сломает API compatibility).
Почему при наличии неконстантного геттера стоит добавлять константный думаю понятно - нельзя вызвать неконстантный метод у константных объектов, поэтому у объекта const CImageStorage или const CImageStorage& компилятор запретит вызывать getTiles(). (Т.е. у таких объектов вообще запрещено будет узнавать qPixmap_Tiles, что вряд ли соответствует желаниям разработчика).
"QPixmap& getTiles() const" не скомпилируется.
Ужас.
Очевидные комментарии ("конструктор", "деструктор" итд).
Нет отбивки пробелами для знака равенства и комментариев
Перед секциями public, private итд неплохо бы ставить пустую строку, иначе весь класс читается одним куском
Геттер неплохо бы иметь константный и неконстантный
"Указатель на класс" - расстрелять
(void) - привет из C. В плюсах (void) и () в определении это одно и то же
Несколько подряд секций public, решение очень на любителя
Заполнять дефисами комментарий - ооооочень на любителя
GetPtr - куча проблем, см. коммент 0xd34df00d. Зачем shared_ptr синглтону??? Вы написали сто комментов вида "конструктор это конструктор", но не потрудились закомментить единственное неочевидное место в коде.
Именование - куча проблем, выше всё сказали
"Переменные" в приличном обществе называются полями класса
Русский язык в комментариях
Вот поверхностные косметические изменения
(комменты на англ - заполнители, в реальном коде надо более подробные)
Главная страна для Rust!
Если к Windows PE, то очень простой пример с перехватом заранее известной ф-и есть вот здесь:
https://hackmag.com/malware/сode-injections-for-windows-applications/
Но единой методики нет. Базовые кирпичики это знание WinAPI и умение перехватывать и заменять вызовы в дебаггере, читать ассемблерный код. Далее по факту идёт свободное творчество
Папа, разлогиньтесь!
Корректные термины на русском это лицензиат (юзер) и лицензиар (автор).
LDAP + зоопарк надстроек и реализаций (например RedHat Directory Server). Собственно AD есть реализация LDAP с рядом дополнительных возможностей.
Полусвободная, код open source, брендированная сборка (собственно дистрибутив VSCode) включает несвободные компоненты (модуль телеметрии, логотипы, ещё что-то) и распространяется под несвободной лицензией. Вот коммент на гитхабе от разработчика MS, объясняющий разницу.
:) да, мб я и ошибся. Но у меня впечатление что она из РФ. В статье идёт несколько сравнений с Россией.
Слишком сахарно, невозможно воспринимать серьёзно. Пассивная агрессия в сторону соотечественников вообще ни в какие ворота не лезет.