Год назад, когда я в запас уходил, лейтенанты получали под сорок тысяч. Не везде так, разумеется, — от надбавок многое зависит.
С рядовыми и сержантами все, конечно, далеко не так радужно.
Странно. Я только после поиска в Гугле и чтения оригинальной статьи смог осознать, что на картине изображена пытка…
Единственная претензия у меня возникла к недостаточной детализации: ничего не разобрать. Даже сейчас я затрудняюсь с ходу сказать, что же именно кхмеры делают с несчастным пленником.
Насколько я понимаю, это не вероятности, а процент проголосовавших. Грубо говоря, если какой-то вариант набрал 33%, то это означает, что за него проголосовал каждый третий. Если 10% — каждый десятый. Третий и десятый будут совпадать примерно каждый тридцатый раз.)
P.S. Владимир Евгеньевич Чуров свое дело знает крепко.)
Подробности можно посмотреть, например, здесь и здесь.
В моем понимании это выглядит так:
Bash при работе использует переменные окружения, которые задаются командой env.
Помимо переменных окружения bash поддерживает список внутренних функций, также задаваемых командой env. Вот пример команды:
Насколько я понимаю, эти функции должны выполняться только при непосредственном их вызове. Однако в старых версиях bash не проверяет определение функции на корректность и интерпретирует всю строку целиком, из-за чего возникает возможность дописать после определения функции другие исполняемые команды — как-то так:
Беда-печаль состоит в том, что «дополнительные» команды исполняются не при вызове внутренней функции, а при загрузке нового экземпляра интерпретатора, что и видно из примера. Почему это так, объясняется в посте, доступном по второй ссылке.
Резюмируя, ответ на ваш вопрос получается такой: магические скобочки — это определение функции; они допускаются в заголовке, так как являются стандартной конструкцией языка; просто написать вредоносный код без них нельзя, ибо в этом случае bash посчитает вводимый параметр не функцией, а обычной строковой переменной окружения.
P.S. А вот что для меня загадка — так это назначение двоеточия и точек с запятыми. Но особенно двоеточия.
Вы не могли бы уточнить, что значит «найти строку «CommandMethod» в тексте одной из .dll библиотек»? Я так понимаю, что нужно просто текстовым редактором (к примеру) найти в DLL-файле строку CommandMethod?
Но я же заранее не знаю, в каком файле она находится. С тем же успехом можно добавить в проект все библиотеки (атрибут CommandMethod гарантированно будет определен в одной из них), а потом уже в IDE найти нужный файл через пункт меню Перейти к определению (Go to Definition).
Такое чувство, что я чего-то недопонимаю.
Про «заглушки» я не вполне осмыслил. Получается, что для AutoCAD до 2011 версии рекомендуется создавать две отдельные сборки проекта — под x86 и x64, иначе возможны проблемы?
4.
Исчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка.
«Исчерпывающий перечень» тебе и не нужен — подключать следует только то, что тебе действительно необходимо.
Конечно, я подключаю не все библиотеки, а только необходимый минимум. Но проблема в том, что у меня не сразу получается понять, какой из DLL-файлов содержит нужное мне пространство имен. Вот, к примеру, возьмем тот же самый атрибут CommandMethod. Где можно посмотреть, в каком из DLL-файлов он находится?
5.
следует пользоваться статическими методами класса Autodesk.AutoCAD.ApplicationServices.Application
С ShowModal() я, похоже, действительно дал маху. Попробую исправить в проекте на ShowModalDialog(), если все получится — исправлю и в статье.
6. Все картинки у меня открываются — думаю, это был временный глюк habrastorage.org.
3. Про реестр все так — не стал здесь это упоминать, чтобы не загромождать статью. В проекте я AutoCAD запускаю из внешнего приложения — соответственно, NETLOAD выполняю программно, поэтому пользователю ничего загружать не приходится.
4. Мой недосмотр. В рабочем проекте, конечно, опция CopyLocal отключена. Добавлю этот момент в пост. Сейчас только картинку в Пэйнте отфотошоплю.)
5. Самая больная часть работы, надеюсь, уже осталась позади.) То, что я от AutoCAD хотел, он вроде делает. Больше вроде пока не надо.)
Спасибо за комментарий!
С рядовыми и сержантами все, конечно, далеко не так радужно.
Единственная претензия у меня возникла к недостаточной детализации: ничего не разобрать. Даже сейчас я затрудняюсь с ходу сказать, что же именно кхмеры делают с несчастным пленником.
P.S. Владимир Евгеньевич Чуров свое дело знает крепко.)
Полная версия есть здесь.
env
.Помимо переменных окружения bash поддерживает список внутренних функций, также задаваемых командой
env
. Вот пример команды:Насколько я понимаю, эти функции должны выполняться только при непосредственном их вызове. Однако в старых версиях
bash
не проверяет определение функции на корректность и интерпретирует всю строку целиком, из-за чего возникает возможность дописать после определения функции другие исполняемые команды — как-то так:Беда-печаль состоит в том, что «дополнительные» команды исполняются не при вызове внутренней функции, а при загрузке нового экземпляра интерпретатора, что и видно из примера. Почему это так, объясняется в посте, доступном по второй ссылке.
Резюмируя, ответ на ваш вопрос получается такой: магические скобочки — это определение функции; они допускаются в заголовке, так как являются стандартной конструкцией языка; просто написать вредоносный код без них нельзя, ибо в этом случае
bash
посчитает вводимый параметр не функцией, а обычной строковой переменной окружения.P.S. А вот что для меня загадка — так это назначение двоеточия и точек с запятыми. Но особенно двоеточия.
336d95a85a273c84fc4974bd0e485d16 (with leading zero).
CommandMethod
?Но я же заранее не знаю, в каком файле она находится. С тем же успехом можно добавить в проект все библиотеки (атрибут
CommandMethod
гарантированно будет определен в одной из них), а потом уже в IDE найти нужный файл через пункт менюПерейти к определению
(Go to Definition
).Такое чувство, что я чего-то недопонимаю.
Хотелось бы прояснить несколько моментов.
1. Подскажите, а где можно почитать про обратную совместимость версий именно для .NET-плагинов?
2. Разница прочувствована.) Но в статье рассматривалось именно создание плагина, поэтому я и употребил такую формулировку.
3. Про «заглушки» я не вполне осмыслил. Получается, что для AutoCAD до 2011 версии рекомендуется создавать две отдельные сборки проекта — под x86 и x64, иначе возможны проблемы?
4. Конечно, я подключаю не все библиотеки, а только необходимый минимум. Но проблема в том, что у меня не сразу получается понять, какой из DLL-файлов содержит нужное мне пространство имен. Вот, к примеру, возьмем тот же самый атрибут
CommandMethod
. Где можно посмотреть, в каком из DLL-файлов он находится?5. С
ShowModal()
я, похоже, действительно дал маху. Попробую исправить в проекте наShowModalDialog()
, если все получится — исправлю и в статье.6. Все картинки у меня открываются — думаю, это был временный глюк habrastorage.org.
P. S. Хочу вас поблагодарить за пример с созданием плавающей панельки — на его базе получилось очень удобное меню.
4. Мой недосмотр. В рабочем проекте, конечно, опция
CopyLocal
отключена. Добавлю этот момент в пост. Сейчас только картинку в Пэйнте отфотошоплю.)5. Самая больная часть работы, надеюсь, уже осталась позади.) То, что я от AutoCAD хотел, он вроде делает. Больше вроде пока не надо.)
Спасибо за комментарий!