All streams
Search
Write a publication
Pull to refresh
214
0
gribozavr @gribozavr

Пользователь

Send message
UTF-32 представляет ровно столько же кодовых позиций, сколько и UTF-16, и UTF-8. А именно, столько, сколько присвоено в Unicode.
Нет, это два разных типа.

Foo const* foo — объект типа Foo константный, а указатель можно изменять.

Foo *const foo — сам указатель изменять нельзя, а вот объект на который он указывает — можно.
ARM нетбук, который:
— не имеет такого количества костылей и косяков как Toshiba AC100 (в том числе: нормальный uboot вместо проприетарного загрузчика, таблица разделов в GPT, а не в проприетарном формате и т. д.);
— поддерживается mainline linux kernel;
— невозможно превратить в кирпич повредив загрузчик;
— имеет матовый дисплей;
— батарея держит от 6 часов (для ARM это не проблема, как показывает Toshiba AC100);
— мощнее, чем EFIKA MX (хотя бы 2 ядра и 1 GB RAM).
В современном Си (C99) есть bool. Но да, когда разрабатывали API NT, его не было.
Я не спорю, что нормальный программист должен это понимать, но согласитесь, иметь в одном языке bool, BOOL, BOOLEAN несовместимые друг с другом — плохая идея. Это как если бы были int, INT, INTEGER и все разной размерности.
Такое определять легко, но смысла в этом мало, так как будет огромное количество false positives, так как C-style cast рассчитаны в том числе и на приведение несовместимых типов данных. Используйте нормальный static_cast в C++ и он вам будет давать ошибки компиляции когда вы это интуитивно ожидаете.
У меня туннель на сервер he.net во Франции: 90 мс IPv6 туннель, 22 мс IPv4. Просто выбирайте сервер поближе. И заодно тормошите своего провайдера, пусть native IPv6 делает.
Если нет белого IPv4, то это лучший выбор. Если есть — то лучше всего ручные туннели.
Не используйте 6to4. Используя 6to4 вы начинаете зависеть от работоспособности сервера 192.88.99.1, который роутится по anycast. А это значит, что во-первых, вы не можете обеспечить выбор ближейшего/лучшего сервера, а во-вторых, владельцы сервера не могут даже прогнозировать нагрузки, так как из-за изменений в BGP трафик к различным 192.88.99.1 перераспределяется.

6to4 это очень и очень плохо. Лучше уж ничего, чем 6to4.

На последней конференции RIPE была очень интересная презентация
ripe62.ripe.net/presentations/31-2011-05-02-dualstack.pdf

Один из результатов исследования: 12-20% всех 6to4 соединений не устанавливаются. Почему? Потому что вы надеетесь на работоспособность сервера, стоящего неизвестно где, выбираемого далеко не оптимальным образом, управляемого неизвестно кем. Естественно, у него нет обязательств предоставлять вам качественный сервис.

Используйте туннели, конфигурируемые вручную, например от he.net. Это позволяет провайдеру туннеля прогнозировать нагрузку на свои серверы.
Поэтому новичкам лучше использовать clang, там очень хорошие и подробные диагностики:
clang++ -cc1 -analyze -analyzer-checker=core test-sizeof.cpp
test-sizeof.cpp:5:29: warning: sizeof on array function parameter will return size of 'int *' instead of 'int []'
  for (int i = 0; i < sizeof(arr); i++)
                            ^
test-sizeof.cpp:3:12: note: declared here
void p(int arr[])
           ^
1 warning generated.


Если есть ещё примеры — давайте.
Порядок байтов, представление чисел с плавающей — эти параметры могут отличаться.
Не слышал, но возможно «кодовая позиция Unicode»?
Совершенно верно. Но можно расширить по аналогии правила построения UTF-8 на более длинные последовательности и получить так называемые overlong sequences. Хотя в стандарте прямо написано, что они ошибочны, к сожалению некоторые «хакеры» считают, что они выше стандарта и говорят, что в UTF-8 больше кодов, чем написано в стандарте, да ещё и реализуют их поддержку в своих программах (например, в eglibc bugs.debian.org/cgi-bin/bugreport.cgi?bug=555922 ).

И да, не называйте юникодные code points символами. Не каждый code point можно нарисовать в виде символа и даже есть такие code points, которые называются noncharacters. См. также en.wikipedia.org/wiki/Mapping_of_Unicode_characters
Нет, число — это просто целое число. Оно может быть закодировано в виде байт (причём правила различны в зависимости от UTF, и ещё и не всеми битами этих байтов).
Тогда UTF-8 кодирует 255 символов?

Нет. «16» в UTF-16 означает размер используемого слова: каждый code point в UTF-16 кодируется одним или более 16-битными словами.
В Unicode определяются code points. Но code point — это число + название, он не задаёт байты. Для того, чтобы преобразовать последовательность code points в байты, вам нужно выбрать некоторый Unicode Transfotmation Format (UTF) и закодировать в соответствии с его правилами.
Потому что Java это позволяет. В C++ всё намного сложнее как минимум из-за макросов и шаблонов.

Information

Rating
Does not participate
Location
Украина
Registered
Activity