Dnd forward slash что это
Прошу подсказать, должен ли идти звонок на вн. номер в группе, если на данном номере включен «FWD ALL», или также необходимо включать DND?
«Forward all» и «DND» 5 года 6 мес. назад #51910
«Forward all» и «DND» 5 года 5 мес. назад #51950
«Forward all» и «DND» 5 года 5 мес. назад #51960
Новости
В продаже появилась новая гибридная мини-АТС фирмы Panasonic со встроенным Wi-Fi роутером.
Это модель KX-HTS824RU.
Системные телефоны для мини-АТС Samsung серии 7000
На форуме появился новый раздел. Посвящён он АТС под названием Asterisk. Подробнее.
В разделе Описания выложена новая прошивка v5.01 для АТС Samsung OfficeServ 7000 серии.
Что нового? Смотри Release Notes
В Скайпе у нас есть группа, где можно пообщаться о мини-АТС. Если Скайп у вас есть, кликайте сюда.
Обновился Online конфигуратор АТС Samsung Теперь помимо OfficeServ 7200 в нём представлены все модели 7000 серии (OfficeServ 7070, OfficeServ 7100 и OfficeServ 7400).
Телефонная конференция. Многие про неё слышали, но мало кто использует. Подробнее.
В связи с переходом на новое время в РФ, настоятельно рекомендуем проверить его на ваших мини-АТС.
Если время требуется поменять, смотрите подсказку здесь.
Санкт-Петербург, ул. Захарьеваская, дом 17 пом. 8Н
E-mail: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Slash и backslash: вехи на пути
Немного истории
Slash
Backslash
Боб Бемер ввел обратный слеш (\) в набор символов ASCII, 18 сентября 1961 года, как результат изучения частоты использования символов встречающихся в частности в программах на ALGOL’е. Тогда же вместе с обратным слешем в стандарт были включены и квадратные скобки.
В частности \ был введен, чтобы булевы операторы ALGOL’a AND и OR могли быть представлены с помощью ASCII символов как «/\» и «\/» соответственно [3,4].
Как же вышло, что исторически православный слеш заменился на свое зеркальное отображение, введенное как вспомогательный символ специально для уже мертвого языка?
Русскоязычная Википедия по этому говорит вот что:
В операционных системах DOS и Windows фирмы Microsoft и их аналогах других разработчиков, обратная косая используется для разделений имён директорий (каталогов) при указании пути к файлу. Прямая косая, применяемая для этого в Unix не могла быть использована в MS-DOS, потому что уже была задействована для указания ключей командной строки (оставшегося в наследство от СР/M, где MS-DOS команда «dir /w» писалась как «dir/w») [5].
Так как такое объяснение меня не слишком удовлетворило, пришлось найти статью «Why is the DOS path character «\»?» [6], которая вполне утолила моё любопытство. Вольный перевод избранных частей в моем исполнении:
То что символ «/» конфликтовал с разделителем пути другой относительно популярной ОС не был связан напрямую с разработчиками – в конце концов, DOS не поддерживал директорий, просто файлы в одном корневом каталоге.
Для MS-DOS 2.0 (в котором появился поддержка каталогов), дизайнеры DOSа выбрали гибридную версию – у них уже были имена дисков в наследство от DOS 1.0, поэтому разработчикам пришлось их использовать. И в дополнение к именам дисков они решили использовать *nix-style метод определения иерархии каталогов — вместо использования каталога в имени файла (как это было сделано в VMS и DEC-20), они просто сделали каталог и имя файла неотъемлемыми частями пути. Но с этим была проблема. Невозможно было использовать разделитель пути *nix (/), по той причине что слэш уже использовался как разделитель ключей.
Что им было делать? Они конечно могли использовать «.» как в DEC, но точка уже использовалась как разделитель между именем файла и расширением. Поэтому они выбрали наилучший вариант из оставшихся — символ «\», который был визуально похож на «/».Таким вот образом и был выбран символ «\» для разделения путей в DOS.
Кстати есть небольшой секрет про MS-DOS. Разработчики DOS не были довольны таким положением дел – они использовали Xenix [7] для почты и прочих вещей, поэтому они были знакомы со структурой *nix команд. Поэтому они добавили в ОС возможность принимать в качестве разделителя путей как «/» так и «\» (это работает и сегодня, кстати – попробуйте выполнить «notepad c:/boot.ini» под XP (если ваш пользователь имеет права админа)). Дальше — больше. Они добавили недокументированный системный вызов, чтобы изменить символ разделителя ключей. И обновили утилиты, чтобы те поддерживали этот флаг. Они даже добавили в config.sys параметр, SWITCHAR, который позволит пользователю установить разделитель ключей на «-«. Таким образом можно было превратить MS-DOS в *nix-style ОС, используя «-switch», и пути с разделителем «/».
Собственно к чему это все?
Меня побудила разобраться в этой теме следующая ситуация.
Была поставлена задача — наладить систему отчетов для автоматизированных тестов. Тесты у нас используются двух видов – Selenium (функциональные) и Jmeter (нагрузочные). Собственно в этом не было ничего сложного — для этих целей существует вполне себе open-source проект под названием logging selenium [8] и plugin для maven — chronos [9]. Настроив всё и протестировав отчеты локально, принялся за интеграцию с нашей CI — TeamCity. Вот тут-то меня и ждала та самая неожиданность, которая стала поводом для написания этой статьи.
После выполнения всех тестов отчет о Selenium-тестах имел следующий вид:
Всё отлично отображалось, и никаких отличий от локальной версии не было.
Но вот отчет, который отобразился для Jmeter-тестов, воодушевления не вызывал:
Напрочь отсутствовали все изображения на странице.
После просмотра исходного кода страницы стало понятно, что во всем виноват backslash. Ссылки на изображения были указаны в таком формате:
Справедливости ради стоит заметить, что изображения отсутствовали в Firefox, но прекрасно отображались в IE. Хотя если бы IE не отображал ресурсы в URI которых встречается обратный слеш, как разделитель пути для Windows, то в, и не без того подпорченной, репутации индийских программистов образовалась бы еще одна брешь.
forward slash
1 forward slash
back slash — обратная косая черта; обратная косая
2 forward slash
back slash — обратная косая черта; обратная косая
3 forward slash
4 forward slash
back slash — обратная косая черта; обратная косая
5 forward slash
6 forward slash
7 forward slash
8 forward slash
9 forward slash
10 forward slash
11 forward slash
12 forward slash
13 forward slash
14 forward slash
15 forward-slash
См. также в других словарях:
forward slash — UK US noun [countable] [singular forward slash plural forward slashes] the symbol /, often used in internet addresses and computer instructions Thesaurus: symbols in computinghyponym … Useful english dictionary
forward slash — ˈforward ˌslash noun [countable] COMPUTING a line (/) used in Internet addresses to separate the different parts * * * forward slash UK US noun [C] IT ► the symbol / that is used for separating words, letters, or numbers in internet addresses →… … Financial and business terms
forward slash — n BrE a line (/) used in writing, to separate words, numbers, or letters = ↑slash … Dictionary of contemporary English
forward slash — forward slashes N COUNT A forward slash is the sloping line / that separates letters, words, or numbers … English dictionary
forward slash — UK / US noun [countable] Word forms forward slash : singular forward slash plural forward slashes the symbol /, often used in internet addresses and computer instructions … English dictionary
forward slash — dešininis brūkšnys statusas T sritis informatika apibrėžtis Kompiuterio klaviatūroje esantis ženklas – į dešinę pasviręs brūkšnys (/). Kodai: 47 (ASCII dešimtainis), U+002F. Vartojamas ↑universaliuosiuose adresuose, taip pat ↑keliui nurodyti… … Enciklopedinis kompiuterijos žodynas
forward slash — noun A slash (the / symbol), in contradistinction to a backslash. Syn: oblique, shilling sign, slash, solidus, stroke … Wiktionary
forward slash — /fɔwəd ˈslæʃ/ (say forwuhd slash) noun → solidus (def. 3) … Australian-English dictionary
ˈforward ˌslash — noun [C] the symbol / used in Internet addresses and computer instructions … Dictionary for writing and speaking English
Slash (punctuation) — / Slash Punctuation apostrophe ( ’ … Wikipedia
Продолжаем разбираться с «историческими причинами» в cmd.exe
В предыдущей статье мы поговорили о возможном варианте решения ситуации с необходимостью указания ключа «/D» для команды CD, входящей в поставку стандартного для операционных систем семейства Windows интерпретатора командной строки cmd.exe. Пришла пора поговорить о ещё одном поведении, которое тянется с незапамятных времён без особой на то причины.
На этот раз речь пойдёт об автодополнении путей, которое в большинстве сред и программных продуктов (и cmd.exe не является в данном случае исключением) осуществляется при помощи нажатия клавиш Tab / Shift-Tab. Думаю, никто не станет спорить с тем, что фича это довольно полезная и зачастую экономит до нескольких секунд времени, которое было бы потрачено на ручной ввод полного пути до интересущего пользователя файла или директории. Здорово, что она присутствует и в cmd.exe, однако…
Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов).
Для начала нам надо посмотреть, с чего это вдруг cmd.exe решил искать объекты не в указанной пользователем директории, а в %HOMEPATH%.
Вводим исследуемую нами команду «CD C:/», нажимаем Tab и видим перед собой следующую картину:
Обратите внимание на первый из переданных функции FindFirstFileEx аргумент — именно он, согласно документации, задаёт критерий, по которому будет осуществляться поиск:
lpFileName [in]
The directory or path, and the file name, which can include wildcard characters, for example, an asterisk (*) or a question mark (?)
В моём случае он указывал на адрес 0x0030F660, где хранилась юникодовая строка «C:\Program Files\*». Почему именно она? Да потому что именно там я находился в момент ввода команды CD.
Давайте проделаем то же самое, используя backslash вместо forward slash’а. Нажимаем F9, вводим команду «CD C:\» с последующим нажатием Tab’а и видим:
Да, теперь этот аргумент указывает на строку «C:\*», как и предполагалось. Следовательно, в случае использования прямого слеша в качестве path separator’а cmd.exe пробегается по объектам, подходящим для автодополнения, в текущей директории.
Бегаем по вызовам всех процедур из call stack’а, открывающегося по нажатию клавиш Alt-K, и видим возле одного из них нечто похожее на парсинг пришедшей от пользователя команды:
Ставим бряк на начало данной процедуры (в моём случае это 0x4ACE1877), нажимаем F9, вводим нашу команду с обратным слешем и Tab’ом ещё раз и начинаем пошаговую отладку. Вскоре после усиленных нажатий клавиши F7 мы понимаем, что оказались в цикле, который пробегается по всем имеющимся во введённой пользователем команде символам:
EBP+8 указывает на юникодовую строку с командой, в EBP+10 содержится длина команды, а EDI является счётчиком цикла.
Практически сразу после этого цикла находится вызов функции std::memcpy, в результате которого в случае использования backslash’а в dest попадёт «C:\»
, а в случае forward slash’а — пустая строка:
Что ж, попробуем разобраться, что происходит в этом цикле, переведя алгоритм его работы на какой-нибудь высокоуровневый язык программирования. IDA Pro может декомпилировать код за вас, но, к сожалению, за это она просит довольно много денег, так что попробуем перевести его самостоятельно на C++:
Символы наподобие ‘*’ и ‘\’ были определены по таблице ASCII-кодов:
Поэкспериментировав со входными данными, можно увидеть следующее:
CD C:\Windows\
Result: C:\Windows\
Несложно заметить, что forward slash вызывает проблемы независимо от того, в каком именно месте введённого пользователем пути он стоит — хоть в конце, хоть в середине.
Решением может являться замена всех forward slash’ей на backslash’и сразу после того, как cmd.exe понял, что необходимо выполнять автодополнение. Для этого предлагаю подойти с другой стороны — провести пошаговую отладку сразу после ввода пользователем данных из стандартного потока ввода.
Однако считывание данных из stdin может осуществляться самыми разными способами. Как же понять, что именно используется в cmd.exe? Довольно просто — нажимаем F9, затем F12 (Pause), смотрим на call stack и видим среди вызовов WinAPI-функцию под названием ReadConsole:
По дефолту ReadConsole возвращает управление вызвавшему его коду после нажатия клавиши Enter, но, видимо, это не наш случай, т.к. завершать свою работу она должна, например, после нажатия Tab.
Ставим софтварный бряк на её вызов и добиваемся его срабатывания:
Обратите внимание на последний параметр, который здесь именутся pReserved. На самом деле, он называется pInputControl и отвечает за следующее:
pInputControl [in, optional]
A pointer to a CONSOLE_READCONSOLE_CONTROL structure that specifies a control character to signal the end of the read operation. This parameter can be NULL
В нашем случае он вовсе не NULL, так что давайте посмотрим, как выглядит структура CONSOLE_READCONSOLE_CONTROL:
В результате получаем следующее:
Указание символов для остановки ввода происходит при помощи поля dwCtrlWakeupMask:
dwCtrlWakeupMask
A user-defined control character used to signal that the read is complete
Как видите, в нашем случае он содержит значение 0x200, которое получилось в результате выполнения операции битового сдвига 1 много нулей в поле «HEX +0C») и пишем туда следующий код (адреса, разумеется, могут отличаться):
, где 0x4A1542CD — это адрес, на который мы должны были перейти в результате условного перехода, находящегося по адресу 0x4A154299 и осуществляющего проверку на равенство текущего символа в команде на Tab. Тот переход, соответственно, заменяем на прыжок на наш code cave:
Я думаю, Вы уже заметили, что он затёр следующую инструкцию. Ничего страшного, т.к., по сути, ею являлась аналогичная проверка на равенство текущего символа на всё тот же Tab, а другими способами попасть на неё было нельзя. Чтобы убедиться в этом, можно выделить наши изменения, вернуть всё, как было, при помощи Alt-Backspace, выделить строчку с данной инструкцией и нажать Ctrl-R, где будет одна-единственная строчка с этим же адресом:
Проверяем работоспобность, и… По нажатию Tab’а forward slash’и действительно заменяются на backslash’и, в результате чего автодополнение выполняется по указанной пользователем директории, независимо от того, какие именно слеши он использовал изначально.
Послесловие
Кто-то может сказать, что это всё мелочи. Кому-то может не понравиться то, что эту задачу решаем мы, а не разработчики из Microsoft. Кому-то может вообще ничего не понравиться. Но факт остаётся фактом — свою проблему мы решили, и теперь cmd.exe работает так, как мы того хотели в самом начале статьи. А заниматься подобным или нет, решать уже Вам.
Справедливости ради стоит отметить, что в PowerShell эту «проблему», равно как и ситуацию с ключом «/D» для команды CD, всё же исправили.
Спасибо за внимание, и снова надеюсь, что статья оказалась кому-нибудь полезной.
forward slash
Смотреть что такое «forward slash» в других словарях:
forward slash — UK US noun [countable] [singular forward slash plural forward slashes] the symbol /, often used in internet addresses and computer instructions Thesaurus: symbols in computinghyponym … Useful english dictionary
forward slash — ˈforward ˌslash noun [countable] COMPUTING a line (/) used in Internet addresses to separate the different parts * * * forward slash UK US noun [C] IT ► the symbol / that is used for separating words, letters, or numbers in internet addresses →… … Financial and business terms
forward slash — n BrE a line (/) used in writing, to separate words, numbers, or letters = ↑slash … Dictionary of contemporary English
forward slash — forward slashes N COUNT A forward slash is the sloping line / that separates letters, words, or numbers … English dictionary
forward slash — UK / US noun [countable] Word forms forward slash : singular forward slash plural forward slashes the symbol /, often used in internet addresses and computer instructions … English dictionary
forward slash — dešininis brūkšnys statusas T sritis informatika apibrėžtis Kompiuterio klaviatūroje esantis ženklas – į dešinę pasviręs brūkšnys (/). Kodai: 47 (ASCII dešimtainis), U+002F. Vartojamas ↑universaliuosiuose adresuose, taip pat ↑keliui nurodyti… … Enciklopedinis kompiuterijos žodynas
forward slash — noun A slash (the / symbol), in contradistinction to a backslash. Syn: oblique, shilling sign, slash, solidus, stroke … Wiktionary
forward slash — /fɔwəd ˈslæʃ/ (say forwuhd slash) noun → solidus (def. 3) … Australian-English dictionary
ˈforward ˌslash — noun [C] the symbol / used in Internet addresses and computer instructions … Dictionary for writing and speaking English
Slash (punctuation) — / Slash Punctuation apostrophe ( ’ … Wikipedia






