Забавные факты о языках программирования/библиотеках/технологиях

До 2018 года GUI Докера для винды и ПО для мышей/клавиатур Razer не запускались вместе потому что в них был один и тот же баг скопированный из ответа на StackOverflow :joy:

Обе программы пытались через глобальный мъютекс предотвратить запуск более одного экземпляра себя.
Для создания мъютекса нужно какое-нибудь уникальное (но воспроизводимое этой программой) значение.
Обе программы были на .NET и там у каждой программы есть GUID.
Они пытались программно получать этот GUID, но вместо него получали GUID библиотеки самого .NET.

Assembly.GetExecutingAssembly().GetType().GUID

вместо, например,

Assembly assembly = Assembly.GetExecutingAssembly();
var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute),true)[0];
var id = attribute.Value;

Я для такого обычно просто записывал в коде (литерал) какой-нибудь сгенерированный GUID. Тогда подобные баги невозможны :kolobokbatya:
Интересно, зачем было так делать, есть ли какие-то преимущества у такого способа :thinking:

1 лайк

В YAML для boolean зачем-то сделали кучу вариантов значений

y|Y|yes|Yes|YES|n|N|no|No|NO
|true|True|TRUE|false|False|FALSE
|on|On|ON|off|Off|OFF

Из-за этого код Норвегии (NO) и север (N) внезапно превращаются в false, а код Онтарио (ON) в true (в YAML строки не обязательно заключать в кавычки). :joy:

noyaml

В YAML 1.2 (2009) вроде бы убрали это.

true | True | TRUE | false | False | FALSE

Ну так они(текстовые интерпретации) все перечисленные и есть логические. Логично и отнесли к булеанам :clkolcool:

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

Взял человек “более приятный JSON с комментами”, а он раз и такое подкинул. :clkolgirl_werewolf:

Кто-то даже сайт создал https://noyaml.com

Похоже что нужно. Этот феномен можно отнести к высказыванию лень двигатель прогресса. Так потихоньку и придем к микрофонной IDE.
Пробухтел в микрофон - не работает код. Оп-ля и отладчик провернул все что нужно.
Надиктовал - есть задание не знаю как начать. Оп-ля и IDE сваяла листинг.
:clkoldance2:

Но и JSON тоже далеко не торт. Автор впихивал спецификацию на визитку, но не уточнил кучу деталей, и даже не версионировал его (типа это просто алфавит и не надо в него ничего добавлять). В итоге куча разных спецификаций (тоже не идеальных) и парсеров.

И в том числе там Юникод, с которым тоже всё сложно.
http://replicated.cc/concepts/unicode — статья о том, что большая часть сложностей в Юникоде из-за мало кому нужных фич, мертвых языков и т.п.

The Pareto principle says 20% cost gives 80% value. Well. With Unicode, it is more like 99.999% of costs gives 0.001% of value. Or vice-versa.

Unicode belongs to the same family of interoperability standards as IP or HTTP or Ethernet. For such a standard to work, everyone in the world must be able to read and write it. Because that’s what it’s for! Such a standard must be 80/20 by design because it imposes costs on basically everyone. For every feature, we should ask whether it is worth imposing this cost on everybody in the world .

Exactly the same logic applies to any interoperability standard. A good standard is 80/20 and final.

Где-то глубоко в ядре винды есть функция, единственная задача которой — исправить имя какой-то Майкрософтовской Bluetooth мышки (удалить символ ®, который почему-то оказался там не в той кодировке).

https://twitter.com/XMPPwocky/status/1261130110003843073

Эксель прогнул ученых :slight_smile:

27 генов переименованы потому что Эксель заменял их на даты. SEPT1 стал SEPTIN1 и т.п.

Странная фигня.

Цитата #453530 – Цитатник Рунета

xxx: API РЖД тексты ошибок присылает капсом. При переводе в нижний регистр все возможные буквы оказываются латиницей.
yyy: в русскоязычных сообщениях об ошибках?)
xxx: Да, сообщения типа “ПО ЗАДАННЫМ ТРЕБОВАНИЯМ НЕТ СВОБОДНЫХ МЕСТ”. Делаешь lower case, получаешь
“по задаhhыm tpeбobahияm het cboбoдhыx mect”
yyy: o_O
xxx: Когда мы это нашли, то рабочий день тут же закончился, и мы всей командой пошли в бар.

https://twitter.com/mikeozornin/status/1371182460201996291

Ладно бы еще если бы все буквы были латинские, тогда можно было бы объяснить отсутствием поддержки кириллицы где-то. Но тут же встречаются и кириллические буквы. :thinking:
Разве что может быть сделали латиницу для тех букв, которые нормально в ней смотрятся (без Б —> 6, Я —> 9| и т.д.), чтоб хоть частично работало там, где не поддерживается кириллица.

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

Дык, буквы, которые в РФ сейчас допускаются в государственных регистрационных знаках (ГРЗ) , только такие и есть - только те, что имеют одинаковое написание в кириллице/латинице.

википедия

У нас тоже вроде так. Но можно ввести AE6040BB как латиницей, так и кириллицей, а можно и вперемешку. Кого и как угораздит, то и правильно с точки зрения пользователя. А еще изредка попадаются у древних грузовиков номера из прошлой жизни, с буквой Щ например )

И как Юзер вводит это латиницей ? ))
Здесь уже есть смысл смотреть в сторону машинного зрения…

Не понял. Так и вводит Щ. И Ц, и Б и прочее В латинице нет эквивалента, поэтому и проблем нет ) Он и А может ввести как кириллицей, так и латиницей. Это уже моя проблема потом правильно распознать номер в базе

Теперь я не понял. Юзер ввод производит кирилицой или латиницой?

Без разницы. Что при вводе для записи в базу, что при вводе для поиска в базе кириллица имеющая одинаковое написание с латиницей в капсе перекодируется в латиницу, не имеющая не перекодируется, и все в капс. Поэтому как бы он не ввел АА1111РР программе без разницы - в базе однозначное соответствие

А разве хорошо так баловать пользователя?? Некоторый софт просто сообщает о том что ввод должен быть произведен в соответствующей раскладке.

Тогда будет больше обращений в тех. поддержку )

Вот и доверь такому писателю, который явный int делит на неявный unsigned, написать прошивку для самолета. ))