Я старый пользователь, но сейчас тоже не могу зайти даже в обычную веб версию интернет банка. Может быть у них внутренняя система отвалилась или МТС глючит и не присылает СМС. Печалька :-(
Я тоже говорю про крупные проекты и полностью разделяю ваше негодование, когда разработчик нарушает те или иные соглашения при написании кода.
Просто я пытаюсь обратить ваше внимание на то, что данная проблема может быть решена как техническим способом (жесткий запрет на доступ к приватным полям), так и организационными методами (отклонение ревью из-за нарушения стандарта кодирования, если этот человек в вашей команде, эскалация проблемы на руководство, если это делается в соседней команде, поймать его и сделать темную в коридоре, если у вас на работе так принято :-) ).
Однако в в случае реализации технического способа уменьшатся возможности работы с кодом не только у вас, а вообще у всех разработчиков, и в тоже время он все равно не гарантирует полной защиты, так как грязные хаки возможны всегда.
Чтобы сравнивать себя с батутом Маска, частного финансирования, к сожалению недостаточно :-(
Так как вы хоть и делаете разработку за счет средств частного инвестора, но с расчетом на последующую компенсацию со стороны будущих заказов (преимущественно государственных), тогда как батут Маска хоть и получает госконтракты, но ориентирован все же на свой реальный бизнес (в первую очередь старлинк).
-5 Вольт было нужно для некоторых процессоров (были раньше такие). И за-за этого и обычный блок питания для ПК тоже содержит такое напряжение питания. Хотя оно сейчас уже наверно нигде не используется. А для интерфейсов связи уровни для линии связи генерируются в микросхеме драйвера и дополнительные напряжения как правило вообще не нужны.
Вы получили минусы в карму (один из них мой), не за саму дискуссию. Ведь известно, что в споре рождается истина, а за форму подачи своих мыслей и навешивание ярлыков.
Причем, я его поставил только после нескольких сообщений о том, что ваши аргументы в принципе правильные, но не относятся к данному конкретном случаю, но вы все равно продолжали упорствовать в своих утверждениях, которые самый обычный спор рано или поздно переводят на личности, вместо обсуждения изначальной темы.
Программист в коде может написать все, что угодно, хоть разименовать нулевой адрес (например для написания теста). Соглашения о вызовах и именовании, это именно соглашения, и если кто-то не захотел их использовать (или не смог по другому), это не является доводом, чтобы усложнить жизнь всем остальным, заставляя их использовать перректальные механизмы доступа к приватным полям.
Возможно, это был единственный способ сделать задачу из-за общей корявой архитектуры приложения (например, нужные для наследников классов данные без геттеров и сеттеров сделали приватными, вместо защищенных)
Выгружать ничего не хочется, а тем более потом загружать обратно. Планирую сделать все в рамка работы компилятора с загружаемым плагином.
Настроить поиск для заданных узлов AST тот еще геморрой, но все равно на порядки проще разработки собственного парсера или использования дополнительного внешнего инструмента.
Я решаю именно "академический" вопрос, но с использованием имеющихся инструментов и прицелом на будущее реальное применение. Писать свой парсер для всех возможных диалектов C++, да еще и на Bison, как вы предлагаете, это просто ужасное решение с любой стороны. Хоть с точки зрения трудоемкости и сложности разработки, хоть с точки зрения последующей поддержки такого решения, хоть с точки зрения скорости получения первого результата.
Если вы называете костылем, решение использовать уже существующий парсер, то все ваши рассуждения "... как известно из практики, оно - "наше всё" при решении "задач бизнеса". Особенно "прямо сейчас" - а другого бизнесу и не надо." , наверно обычное шапозакидательство и популизм, ничего не имеющий с реальной жизнью.
Вообще-то мне нужно компилировать С++ код, но с некоторыми пользовательским атрибутами и дополнительными проверками. Для этих целей нужен анализ AST с помощью плагина под clang и финальным результатом в виде объектного файла.
Во вторых, разбирать грамматики современного С++ на BNF/Bison/PEG и иже с ними, это адовый ад, который гораздо хуже, чем писать фильтр для узлов AST на С++ как в примерах из данной статьи (и это не говоря уже про то, что придется делать ненужную работу по написанию парсера, вместо того, чтобы взять уже готовый).
В статье речь о синтаксическом анализе исходного текста программы с помощью описанных инструментов. И сравнение двух подходов (visitors vs. matchers) при поиске нужных данных в абстрактном синтаксическом дереве.
А уж нужен ли вам чистый С, С++ или Objevtive-С - это уже дело десятое.
Количество закрывающих скобок коде примера меня тоже мутило.
Прямо как в том анекдоте:
Хакерам удалось украсть последние 50 МБ исходного кода программы на Lisp, которая управляет запуском баллистических ракет США. К счастью, там были только закрывающие скобки.
FreeRTOS, это только ядро (потоки и многозадачность), и программировать под нее мало чем отличается от программирования для bare metal. Те же обработчики прерываний, те же сторонние библиотеки и "если нужно задействовать модули WiFi, Bluetooth, протоколы вроде 1wire, I2C e.t.c. Требует полный спектр знаний в аппаратной части и электронике, в цифровой логике, во внутренней периферии микроконтроллера ...", а то, о чем вы пишите (ESP-IDF), это Espressif IoT Development Framework — Фреймворк разработки IoT (Интернет Вещей) только для платформы ESP32.
В данном случае FreeRTOS, это как ядро Linux в любом дистрибутиве, тогда как состав различных программ в каждом отдельном дистрибутиве может быть разным. Точно так же как и ядро для дистрибутива может быть заменено на какое нибудь другое (например на FreeBSD или на оборот, хоть это и не просто).
Поэтому когда вы пишите "Выбор и настройка компонентов FreeRTOS через 'idf.py menuconfig' ", то это неправильно. Это настраивается ESP-IDF и к FreeRTOS он не имеет никакого отношения (точнее FreeRTOS является одним из множества компонентов этого фреймворка, точно так же как и при настройке компонентов прошивки под STM32).
Я тоже пишу в Obsidian`е, но ссылки на картинки в статье вставляю сразу оригинальные, сразу после их загрузки на habrastorage.org.
Да и писать Obsidian удобно только черновик, так как после публикации иногда приходится править текст статьи. И это удобнее делать сразу на Хабре (в старом редакторе). А через некоторое время после исправлений всех опечаток, можно переносить финальный текст обратно в Obsidian обычным copy-paste, убрав из статьи тег <cut>.
Я старый пользователь, но сейчас тоже не могу зайти даже в обычную веб версию интернет банка. Может быть у них внутренняя система отвалилась или МТС глючит и не присылает СМС. Печалька :-(
Я тоже говорю про крупные проекты и полностью разделяю ваше негодование, когда разработчик нарушает те или иные соглашения при написании кода.
Просто я пытаюсь обратить ваше внимание на то, что данная проблема может быть решена как техническим способом (жесткий запрет на доступ к приватным полям), так и организационными методами (отклонение ревью из-за нарушения стандарта кодирования, если этот человек в вашей команде, эскалация проблемы на руководство, если это делается в соседней команде, поймать его и сделать темную в коридоре, если у вас на работе так принято :-) ).
Однако в в случае реализации технического способа уменьшатся возможности работы с кодом не только у вас, а вообще у всех разработчиков, и в тоже время он все равно не гарантирует полной защиты, так как грязные хаки возможны всегда.
Чтобы сравнивать себя с батутом Маска, частного финансирования, к сожалению недостаточно :-(
Так как вы хоть и делаете разработку за счет средств частного инвестора, но с расчетом на последующую компенсацию со стороны будущих заказов (преимущественно государственных), тогда как батут Маска хоть и получает госконтракты, но ориентирован все же на свой реальный бизнес (в первую очередь старлинк).
Но все равно молодцы и желаю успехов!
-5 Вольт было нужно для некоторых процессоров (были раньше такие). И за-за этого и обычный блок питания для ПК тоже содержит такое напряжение питания. Хотя оно сейчас уже наверно нигде не используется.
А для интерфейсов связи уровни для линии связи генерируются в микросхеме драйвера и дополнительные напряжения как правило вообще не нужны.
Вы получили минусы в карму (один из них мой), не за саму дискуссию. Ведь известно, что в споре рождается истина, а за форму подачи своих мыслей и навешивание ярлыков.
Причем, я его поставил только после нескольких сообщений о том, что ваши аргументы в принципе правильные, но не относятся к данному конкретном случаю, но вы все равно продолжали упорствовать в своих утверждениях, которые самый обычный спор рано или поздно переводят на личности, вместо обсуждения изначальной темы.
Программист в коде может написать все, что угодно, хоть разименовать нулевой адрес (например для написания теста). Соглашения о вызовах и именовании, это именно соглашения, и если кто-то не захотел их использовать (или не смог по другому), это не является доводом, чтобы усложнить жизнь всем остальным, заставляя их использовать перректальные механизмы доступа к приватным полям.
Возможно, это был единственный способ сделать задачу из-за общей корявой архитектуры приложения (например, нужные для наследников классов данные без геттеров и сеттеров сделали приватными, вместо защищенных)
Управлять поиском на сайте, классная идея! Но при этом очень хотелось бы выбирать место поиска:
только в своих закладках
в своих закладка и в закладках пользователей, за которыми я слежу
в закладках всех пользователей
в любых статьях на сайте
Спасибо! Нужно обязательно добавить в закладки! :-)
Выгружать ничего не хочется, а тем более потом загружать обратно. Планирую сделать все в рамка работы компилятора с загружаемым плагином.
Настроить поиск для заданных узлов AST тот еще геморрой, но все равно на порядки проще разработки собственного парсера или использования дополнительного внешнего инструмента.
+100
Я решаю именно "академический" вопрос, но с использованием имеющихся инструментов и прицелом на будущее реальное применение. Писать свой парсер для всех возможных диалектов C++, да еще и на Bison, как вы предлагаете, это просто ужасное решение с любой стороны. Хоть с точки зрения трудоемкости и сложности разработки, хоть с точки зрения последующей поддержки такого решения, хоть с точки зрения скорости получения первого результата.
Если вы называете костылем, решение использовать уже существующий парсер, то все ваши рассуждения "... как известно из практики, оно - "наше всё" при решении "задач бизнеса". Особенно "прямо сейчас" - а другого бизнесу и не надо." , наверно обычное шапозакидательство и популизм, ничего не имеющий с реальной жизнью.
Вообще-то мне нужно компилировать С++ код, но с некоторыми пользовательским атрибутами и дополнительными проверками. Для этих целей нужен анализ AST с помощью плагина под clang и финальным результатом в виде объектного файла.
Во вторых, разбирать грамматики современного С++ на BNF/Bison/PEG и иже с ними, это адовый ад, который гораздо хуже, чем писать фильтр для узлов AST на С++ как в примерах из данной статьи (и это не говоря уже про то, что придется делать ненужную работу по написанию парсера, вместо того, чтобы взять уже готовый).
С этим я полностью согласен.
Но к сожалению, тут идет выбор не на каком языке писать фильтр, а как писать фильтр на С++ с учетом используемого инструментария.
Причем тут сова, глобус и Си?
В статье речь о синтаксическом анализе исходного текста программы с помощью описанных инструментов. И сравнение двух подходов (visitors vs. matchers) при поиске нужных данных в абстрактном синтаксическом дереве.
А уж нужен ли вам чистый С, С++ или Objevtive-С - это уже дело десятое.
Количество закрывающих скобок коде примера меня тоже мутило.
Прямо как в том анекдоте:
FreeRTOS, это только ядро (потоки и многозадачность), и программировать под нее мало чем отличается от программирования для bare metal. Те же обработчики прерываний, те же сторонние библиотеки и "если нужно задействовать модули WiFi, Bluetooth, протоколы вроде 1wire, I2C e.t.c. Требует полный спектр знаний в аппаратной части и электронике, в цифровой логике, во внутренней периферии микроконтроллера ...", а то, о чем вы пишите (ESP-IDF), это Espressif IoT Development Framework — Фреймворк разработки IoT (Интернет Вещей) только для платформы ESP32.
В данном случае FreeRTOS, это как ядро Linux в любом дистрибутиве, тогда как состав различных программ в каждом отдельном дистрибутиве может быть разным. Точно так же как и ядро для дистрибутива может быть заменено на какое нибудь другое (например на FreeBSD или на оборот, хоть это и не просто).
Поэтому когда вы пишите "Выбор и настройка компонентов FreeRTOS через 'idf.py menuconfig' ", то это неправильно. Это настраивается ESP-IDF и к FreeRTOS он не имеет никакого отношения (точнее FreeRTOS является одним из множества компонентов этого фреймворка, точно так же как и при настройке компонентов прошивки под STM32).
Добавил к статье пару дополнительных наблюдений
https://devblogs.microsoft.com/oldnewthing/20230803-00/?p=108532
https://devblogs.microsoft.com/oldnewthing/20240510-00/?p=109742
Сравнение реализации строк из мейнстримных компиляторов (ms, gcc и clang)
Я тоже пишу в Obsidian`е, но ссылки на картинки в статье вставляю сразу оригинальные, сразу после их загрузки на habrastorage.org.
Да и писать Obsidian удобно только черновик, так как после публикации иногда приходится править текст статьи. И это удобнее делать сразу на Хабре (в старом редакторе). А через некоторое время после исправлений всех опечаток, можно переносить финальный текст обратно в Obsidian обычным copy-paste, убрав из статьи тег <cut>.
Вполне возможно.