Up 2014.09.01

This commit is contained in:
Oleg Grigoriev
2014-09-01 14:32:24 +04:00
parent c393057ba4
commit 77ac4e3653
20 changed files with 759 additions and 574 deletions

View File

@ -0,0 +1,37 @@
Во многих языках программирования нулевой символ используется для обозначения окончания строки.
Это так называемые "Си-строки" (название происходит от языка Си, где используются такие строки).
Другие названия: null-терминированная строка или ASCIZ-строка.
При таком подходе, код работающий со строкой изначально не знает её длинны и обрабатывает символы последовательно, пока не встретит нулевой.
[[[code:c
/* Вывод строки */
i = 0; // начать с начала строки
while (s[i] != 0) { // работать, пока текущий символ не \0
echo s[i]; // вывести очередной символ
i++; // перейти к следующему
}
]]]
Из минусов такого подхода:
[*] Заранее неизвестна длина строки
[*] Строка не может содержать непосредственно символ \0
[*] Если забыть поставить в конце \0 или случайно удалить его, код пойдёт работать дальше с непредвиденными последствиями.
В случае использования многобайтовых кодировок фиксированной ширины, нулевой символ также должен занимать положенное количество байт.
Например, в UCS-2: два нулевых байта.
Альтернативный подход при организации строк - хранить длину строки в отдельной переменной.
При выводе Unicode-строки нулевой символ не имеет никакого представления и никого влияния на поток вывода.
Некоторые программы и устройства могут отображать его в виде пробела, но это не совсем корректно.
Однако, полное игнорирование данного символа иногда может приводить к неприятным последствиями.
Например, некоторые старые браузеры расценивали строку типа [code <\0script>] как [code <script>], что позволяло злоумышленникам внедрять XSS на чужие сайты (авторы которых при обработке данных не предусмотрели такой нюанс).
Для вставки данного символа во многих языках программирования имеется escape-последовательность [code \0].
Это один из восьми управляющих символов, чьё наличие требует стандарт POSIX.

View File

@ -0,0 +1,6 @@
В рамках Unicode данный символ никак не отображается при выводе и никак не влияет на порядок вывода остальных символов.
В стандарт он включён только для совместимости с другими кодировками.
По данным Википедии на данный момент этот символ, как и [U:0002 *] используется в консоли маршрутизаторов Cisco.

View File

@ -0,0 +1,6 @@
В рамках Unicode данный символ никак не отображается при выводе и никак не влияет на порядок вывода остальных символов.
В стандарт он включён только для совместимости с другими кодировками.
По данным Википедии на данный момент этот символ, как и [U:0001 *] используется в консоли маршрутизаторов Cisco.

View File

@ -0,0 +1,7 @@
В рамках Unicode данный символ никак не отображается при выводе и никак не влияет на порядок вывода остальных символов.
В стандарт он включён только для совместимости с другими кодировками.
Наличие символа в потоке ввода интерпретировалось, как прерывание.
Послать его можно было нажатием Ctrl-C.

View File

@ -0,0 +1,7 @@
В рамках Unicode данный символ никак не отображается при выводе и никак не влияет на порядок вывода остальных символов.
В стандарт он включён только для совместимости с другими кодировками.
В Unix-системах обозначает конец данных.
Обрабатывющий данные процесс, завершает обработку, достигнув этого символа.

View File

@ -0,0 +1,6 @@
Символ Enquiry использовался в основном в телетайпах.
Это запрос к удалённому аппарату с просьбой предоставить информацию о себе.
По сути это запрос "кто ты такой?".
В ответ на подобный запрос обычно выдавалась строка идентифицирующее устройство, описывающее имеющееся оборудование и текущее состояние.

View File

@ -0,0 +1,18 @@
На старых устройствах вывод этого символа приводил к звуковому сигналу (обычно через системный динамик).
При этом ничего не выводилось.
Для его ввода была предназначена Escape-последовательность [code \a]:
[[[code
s = "Вот вам: \a!!";
echo s;
]]]
Также послать этот символ можно было сочетанием клавиш Ctrl-G.
Большинстве современных систем, к счастью, нельзя заставить мерзко пищать с помощью простого текста.
В Unicode этот символ добавлен только для совместимости с другими кодировками.
Также это один из нескольких управляющих символов, чьё обязательное наличие требует стандарт POSIX.

View File

@ -0,0 +1,15 @@
Управляющий символ, перемещающий каретку на один шаг назад.
На некоторых устройствах мог использоваться для наложения одних символов на другой.
Например, [code c\b^] (где \b - escape-последовательность для U+0008) напечатает [code ĉ].
При вводе с терминала затирает предыдущий символ.
Аналог клавиши Backspace.
В рамках Unicode не имеет смысла и введён для совместимости.
В современных системах не работает.
[[[php
echo "ab\bc"; // напечатает "ab c", а не "ac"
]]]

View File

@ -0,0 +1,43 @@
Горизонтальная табуляция используется для форматирования текста.
Визуально она отображается в виде пустого пространства внутри строки.
В языках программирования используется для задания отступов.
Часто табуляция эквивалентна четырём пробелам, но встречаются и другие значения.
[[[code:html
<div class="first">
<div class="second">
Это пример форматрирования исходного кода с помощью табуляции.
</div>
</div>
]]]
В зависимости от устройства или приложения табуляция может иметь не фиксированную длину.
Например, она может использоваться для перехода к следующему столбцу в таблице:
[[[code
one two three
1 2 3
111 222 333 - здесь промежутки меньше
]]]
При вводе с клавиатуры используется клавиша "Tab", а во многих редакторах и сочетание "Ctrl-I".
В исходном коде можно использовать Escape-последовательность [code \t]:
[[[php
echo "one\ttwo";
]]]
Многие текстовые редакторы можно настроить так, чтобы символ табуляции сразу заменялся на последовательность из нескольких (обычно четырёх) пробелов.
Некоторые форматы (например, TSV) используют символ табуляции для разделения данных.
Это может быть удобнее, чем использования для этих целей пробела или, например, запятой.
Так как и пробел и запятая гораздо чаще используются в различных данных, чем таб.
Среди нескольких управляющих символов, обязательного наличия которых требует POSIX, есть и [code \t].
Жаргонное название символа горизонтальной табуляции - "таб" ("поставь здесь пару табов").
Существует также [U:000B #].