Pull to refresh

Comments 42

Вспомнилось, как много лет назад я иногда злоупотреблял такими символами, чтобы побыстрее исчерпать трафик или квоту на объём БД у своей «жертвы». Например, пишу фразу «Привет! Как дела?», а внутри спрятаны тысячи невидимых знаков. Короткое сообщение начинает «весить» достаточно много. Правда, иногда эти символы выдают себя нагрузкой на браузер (или Jabber-клиент) — к примеру, становится «трудно» выделять текст, прокрутка подтормаживает и т.д.

Эффект видимо зависит от понимания жертвой своего jabber-клиента. У меня всегда было включено сжатие, на экономию со школьных обедов не так много можно было купить интернет-трафика.

Чаще всего «жертвами» были изрядно досаждавшие попрошайством ботов арабы, у которых нередко были такие слабые телефоны, что на zlib им тупо не хватало памяти (всё ж таки, я о временах J2ME изначально говорил).

Видимо я был мажором. На Siemens CX65 zlib вполне работал.

Cat не показывает их

Он вообще ничего не показывает — он просто выводит содержимое файла на консоль, а она уже отображает его так, как считает нужным. По Вашему же скриншоту видно, что поведение разных терминалов несколько отличается, но cat здесь совершенно ни при чём

Да, стоило его хотя бы с опцией -A запустить — отображает непечатаемое. Не знаю, всё ли — исходников тестов не приложено.

Исходник вот: https://gist.github.com/antelle/216aa1f34c0b9dee89e574934325d2ce
Проверил на маке, видно почти всё, только опция в cat под macos называется -v. Под linux не проверял, могу предположить, что будет так же, возможно ещё последний появится.


output
cat -v invisibles.txt 
U+2060 foo?M-^A?bar WORD JOINER
U+2061 foo?M-^A?bar FUNCTION APPLICATION
U+2062 foo?M-^A?bar INVISIBLE TIMES
U+2063 foo?M-^A?bar INVISIBLE SEPARATOR
U+180E foo?M-^Nbar MONGOLIAN VOWEL SEPARATOR
U+200B foo?M-^@M-^Kbar ZERO WIDTH SPACE
U+200C foo?M-^@?M-^@?M-^@M-^Lbar ZERO WIDTH NON-JOINER
U+200D foo?M-^@M-^Mbar ZERO WIDTH JOINER
U+FEFF foobar ZERO WIDTH NO-BREAK SPACE

Надо обновить пост, спасибо.

UFO just landed and posted this here

Обычно принято использовать или bullet (•), или replacement character (�), или


квадратик такой

А git diff не молодец и он ничего не выделил. Он просто раскрасил строчки целиком и скормил на вход less.

В Википедии до сих пор не могут решить, что делать с неразрывными пробелами в викификаторе: при викификации конструкции типа « » превращаются в неразрывные пробелы, а неразрывные пробелы при последующей викификации превращаются в обычные. Такое поведение автор объясняет тем, что неразрывные пробелы в редакторе не отличить от обычных, и потому надо от них избавляться. Тема поднималась уже не один раз, и все соглашались, что это — очевидная недоработка, что так делать нельзя, но отремонтировать до сих пор никто не берётся.
конструкции типа « »
UFO just landed and posted this here

FreeBSD default ee editor


U+2060 fooâ~A bar WORD JOINER
U+2061 fooâ~A¡bar FUNCTION APPLICATION
U+2062 fooâ~A¢bar INVISIBLE TIMES
U+2063 fooâ~A£bar INVISIBLE SEPARATOR
U+180E fooá ~Nbar MONGOLIAN VOWEL SEPARATOR
U+200B fooâ~@~Kbar ZERO WIDTH SPACE
U+200C fooÂ~@Â~@â~@~Lbar ZERO WIDTH NON-JOINER
U+200D fooâ~@~Mbar ZERO WIDTH JOINER
U+FEFF foobar ZERO WIDTH NO-BREAK SPACE

U+0020 foo bar SPACE
U+00A0 foo bar NO-BREAK SPACE
U+1680 fooá~Z~@bar OGHAM SPACE MARK
U+2000 fooâ~@~@bar EN QUAD
U+2001 fooâ~@~Abar EM QUAD
U+2002 fooâ~@~Bbar EN SPACE
U+2003 fooâ~@~Cbar EM SPACE
U+2004 fooâ~@~Dbar THREE-PER-EM SPACE
U+2005 fooâ~@~Ebar FOUR-PER-EM SPACE
U+2006 fooâ~@~Fbar SIX-PER-EM SPACE
U+2007 fooâ~@~Gbar FIGURE SPACE
U+2008 fooâ~@~Hbar PUNCTUATION SPACE
U+2009 fooâ~@~Ibar THIN SPACE
U+200A fooâ~@~Jbar HAIR SPACE
U+202F fooâ~@¯bar NARROW NO-BREAK SPACE
U+205F fooâ~A~_bar MEDIUM MATHEMATICAL SPACE
U+3000 fooã~@~@bar IDEOGRAPHIC SPACE

FreeBSD default vi


U+2060 foo\xe2\x81\xa0bar WORD JOINER
U+2061 foo\xe2\x81\xa1bar FUNCTION APPLICATION
U+2062 foo\xe2\x81\xa2bar INVISIBLE TIMES
U+2063 foo\xe2\x81\xa3bar INVISIBLE SEPARATOR
U+180E foo\xe1\xa0\x8ebar MONGOLIAN VOWEL SEPARATOR
U+200B foo\xe2\x80\x8bbar ZERO WIDTH SPACE
U+200C foo\xc2\x80\xc2\x80\xe2\x80\x8cbar ZERO WIDTH NON-JOINER
U+200D foo\xe2\x80\x8dbar ZERO WIDTH JOINER
U+FEFF foo\xef\xbb\xbfbar ZERO WIDTH NO-BREAK SPACE

U+0020 foo bar SPACE
U+00A0 foo bar NO-BREAK SPACE
U+1680 foo\xe1\x9a\x80bar OGHAM SPACE MARK
U+2000 foo\xe2\x80\x80bar EN QUAD
U+2001 foo\xe2\x80\x81bar EM QUAD
U+2002 foo\xe2\x80\x82bar EN SPACE
U+2003 foo\xe2\x80\x83bar EM SPACE
U+2004 foo\xe2\x80\x84bar THREE-PER-EM SPACE
U+2005 foo\xe2\x80\x85bar FOUR-PER-EM SPACE
U+2006 foo\xe2\x80\x86bar SIX-PER-EM SPACE
U+2007 foo\xe2\x80\x87bar FIGURE SPACE
U+2008 foo\xe2\x80\x88bar PUNCTUATION SPACE
U+2009 foo\xe2\x80\x89bar THIN SPACE
U+200A foo\xe2\x80\x8abar HAIR SPACE
U+202F foo\xe2\x80\xafbar NARROW NO-BREAK SPACE
U+205F foo\xe2\x81\x9fbar MEDIUM MATHEMATICAL SPACE
U+3000 foo\xe3\x80\x80bar IDEOGRAPHIC SPACE
Интересно, сколько проблем возникает из-за невероятно актуальной предоставленной программистам возможности именовать объекты на древнемонгольском. При том, что сами монголы давно перешли на кириллицу.

Полагаю, что существуют люди, которые изучают древнемонгольский, и эти люди, в целом, ничуть не хуже нас с вами. Я лично около двадцати пяти лет назад немало натерпелся от бородатых программистов, которые рассуждали так: «интересно, сколько проблем может возникнуть из-за невероятно актуальной предоставленной программистам возможности писать по-русски, при том, что русские отлично способны использовать транслит».


Проблемы криворуких программистов, которым в 2016 году в диковинку существование таких сущностей — должны оставаться проблемами [отныне безработных] программистов.

Изучение древнемонгольского каким-то образом побуждает именовать на этом языке переменные в программах?

Изучение древнемонгольского побуждает алкать возможности вводить такие символы.


Здравый смысл побуждает не использовать конструкцию if valid(symbol) then ... else ... в парсерах. Потому что не автору парсера решать, что мне втемяшится использовать в качестве идентификатора, это не его собачье дело (если он, конечно, достаточно квалифицирован.)


Я так именую методы, которые пишут некий «особенный» внутренний лог: и , и я не стану пользоваться говноязыком, который мне это сделать не позволит.

Забавно Вам будет отлаживать Вашу программу с какого-нибудь удалённого терминала, не поддерживающего юникодный ввод.
Забавно Вам будет отлаживать Вашу программу с какого-нибудь удалённого терминала,
не поддерживающего юникодный ввод.

Здесь смешно все: и наличие в наше время терминалов, не поддерживающих юникод, и отладка с удаленного терминала. Оглядитесь, тут вокруг уже XXI век наступил, причем — больше пятнадцати лет тому назад. Ну и да, я умею настраивать деплой так, чтобы ржать в голос над словами «отладка с удаленного терминала».

Статья полезна тем, что показывает, что есть неочевидное там, где, казалось бы, все очевидно.
А что касается практического использования Unicode в разработке, то следует помнить о «нестандартных» «пробельных» символах (см., напр., \u00A0, \u0082, \u0083, \u0085) и о символах управления потоком (RTL/LTR; см., напр., \u202A \u202B \u202C \u202D \u202E). На опыте проверено, что такие символы могут встречаться в пользовательском вводе (и, что удивительно, в системах электронного документооборота в России!). За идентификаторами в программах мы, программисты, уж как нибудь уследим. :) А вот за пользователем…

И, разумеется, следует помнить об эквивалентности графических изображений, возникающих из различных комбинаций кодов Unicode (Unicode Equivalence).
Вспомнилось. На приёме у логопеда:
— Доктор, у меня проблема. Я не выговариваю букву «...»!
— Какую?
— НУ, БУКВУ «...»!!!
UFO just landed and posted this here
UFO just landed and posted this here
Увы, не подскажу. Я эту раскладку в гугле нашёл.

Они через alt gr набираются, если ОС поддерживает. Т. е. в обычном режиме там используется три функции на клавишу.

Набираются, но кажется, stychos интересуется, где взять клавиатуру, чтобы нарисованы именно были.

UFO just landed and posted this here

Закажите гравировку или печать, оно недорого стоит, могут что угодно нанести.

UFO just landed and posted this here
UFO just landed and posted this here
В macOS выбор богат для AltGr

Бгг. Вот моя раскладка: https://github.com/mudasobwa/huya-xkb


Кроме того, даже в MacOS можно сделать свою какую-угодно раскладку, просто, как и все остальное, немного неестественным образом.

UFO just landed and posted this here

Неестественным — потому, что когда мне нужен внезапно на полчаса какой-нибудь нестандартный символ, я редактирую текстовый файл и обновляю кэш: клавиша включена. Я посмотрю, как вы утилиткой себе на часик при редактировании презентации какой-нибудь впилите нестандартный буллит.

Интересно, никто ещё не придумал удобных менеджеров буфера обмена, чтобы можно было хранить одновременно несколько фрагментов, и при необходимости вставлять нужный по хоткею? Помню, что-то подобное пытались в msoffice сделать.

Как бы в Linux из коробки, в неестественных OS — не знаю, но думаю тоже кто-нибудь запилил.

UFO just landed and posted this here
Sign up to leave a comment.

Articles