Pull to refresh

Comments 89

Я подспудно всегда чувствовал, что если вопросами искусственного интеллекта займется Microsoft, восстания машин нам не избежать. Не по злому умыслу, а…
И оно провалится при команде: «1. Убить все[ вы; ивши[» :)
А что за прикол с "[ вы; ивши["?
«Убить всех выживших» — на традиционной 101-кнопочной клавиатуре символы "[" и «х» находятся на одной клавише. Аналогично ";" и «ж». Такое может вылезти при фильтрации по коду кнопки, а не по символу.
Когда винда накенец-то увидит и распознает мой сетевой принто-сканер, тогда я начну за это опасаться.
Я буду держать всех в курсе и скажу если «началось».
Да пусть хотя бы локальный Olivetti PR2E увидит…
Да ладно… Если у них получится искуственный интеллект, то он пройдёт первую же проверку — не будет работать.
Что он, дурной?
MSO то ладно, а вот представьте сколько таких багов во подсистемах безопасности и шифрования.

Интересно зачем некорректный символ проверяется 3 раза? И ну и по сканкоду, это сильно конечно.
Интересно зачем некорректный символ проверяется 3 раза?

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

Это же совсем разные команды. Прикладники — сами по себе, «ядерщики» — сами и т.д.
let char = 'Ж'

// если не присвоилось, то
if !char {

}
И эти люди запрещают мне ковыряться в носу учать меня как нужно писать программы :)
Когда смотришь вопросы на собеседовании — не иначе гениев набирают.
Когда смотришь на код — и куда они всех этих гениев дели…
Ну как куда? В отборщиков гениев — в менеджеры.
У меня есть небезосновательная гипотеза, что лид продукта в то время, когда писался этот код, спустя некоторое время основал FogCreek и StackOverflow. И вообще, кажется, мужик довольно неглупый.
а как связана разработка VBA с разработкой всего экселя? Или VBA — отдельный продукт, а эксель — отдельный?
А как связан ваш вопрос с моим комментарием?
наверное, тем, что Джоел Спольски отвечал всё-таки за VBA?
Да вроде нет.

> I left the company in 1994, assuming Bill had completely forgotten me, until I noticed a short interview with Bill Gates in the Wall Street Journal, in which he mentioned, almost in passing, something along the lines of how hard it was to recruit, say, ★a good program manager for Excel★. They don't just grow on trees, or something.
— www.joelonsoftware.com/items/2006/06/16.html
1. как соотносится «лид продукта» и program manager? Сколько менеджеров работают над одним продуктом и как из них называется ответственный за продукт в целом? Который «лид продукта»?

2. в этой же статье отчётливо написано, что будучи «program manager» он разрабатывал подсистему VBA для экселя. VBA < Excel < Microsoft Office < Microsoft, при этом код, отвечающий за букву Ж во страницах экселя никоим образом с Джоэлом не связан.
Одни примеры с MSDN чего стоят. Ни RAII, ни exception-safety нет, а сколько коду с этих примеров скопировано в продакшн…
… внутри самого MicroSoft.
Читая статьи о реверс-инжиниринге Майкрософтских программ иногда кажется, что не видя исходный код такое раскопать невозможно...(а это говорит о мастерстве автора :) ).

Или может намного проще понять в чем проблема НЕ имея исходный код, чем бегать по сотням классов/функций в IDE и читать код?
Некоторый код проще понять в ассемблере, серьезно.
Особенно если компилятор проделал огромную работу по оптимизации «индусского» кода.
Какой-нибудь крэш одинаково легко. А такую работу, как проделал автор, конечно проще было бы проделать через IDE с сорцами. Он вообще большой умница!
В 2016-м превью вроде бы проблемы нет. Вводиться в любой раскладке. Есть подозрения что могли пофиксить с переходом xslx.
Ха, а в постановке с форума действительно не работает:
Эта старинная хохма достигается следующим макаром:
— в ENG-раскладке попытаться ввести двоеточие (:)
— сказать «ой» (ибо не получится)
— переключиться в RUS-раскладку
— попытаться ввести «Ж»
— опять — «ой»
Читайте внимательно статью. Всё дело в том, какая раскладка у вас будет выбрана в момент первого нажатия на клавишу.
Да, признаю, так не работает.
В общем, спасибо за информацию, что в 2016-м баг по-прежнему есть ;)
Ловите человека из будущего!
Спортивный дайджест с собой взял? :)
После таких статей начинаешь понимать, почему Микрософт не любит open source. Иной исходник может неслабо так подмочить репутацию.
Каждый опенсорсник считает нужным пнуть мс за легаси код, этого не исправить
1) Исправить
2) Не пускать в продакшен такой код. Не пофиксить баг и просто забить, я ума не приложу, как такое можно сделать. Хотя справидливости ради хочеться отметить, что не плохо бы знать частоту появления этого бага. В этой статье эти данный представлены расплывчато.
1) Исправить-то можно, а нужно ли? Когда софт работает идеально — нет повода «пинать».
2) Ошибка не критическая, скорее просто неприятная. К тому же на продажи исправление такого бага не влияет совершенно никак — а соответственно нет повода вкладывать в это дело ни цента. Microsoft может себе позволить не исправлять ошибку, встречающуюся «раз на миллион».
Вы когда пишете код/делаете концепт предусматриваете rtl-языки?
По опыту работы американцы где-то также относятся к другим локалям, европейцы -к другим таймзонам: вроде понятно, что оно существует и даже будет где-то использоваться, но внимания к этому по остаточному принципу.
Вспомните баг в Netscape Navigator — стоило в javascript использовать букву «я», как браузер сходил с ума. Ну а что? Удобно же 255-й код использовать для своих нужд, он всё равно «где-то в неиспользуемой части» ascii-таблицы.
Среднему американскому программисту вообще не приходит в голову, что у клавиатуры может переключаться раскладка. Как раз этим, например, можно объяснить решение Эпла включить всем по умолчанию отдельную раскладку для смайликов. Для американца этот интерфейс прост и понятен: нажали кнопку, включился режим смайликов, нажали ещё раз, он выключился. А про народы, вынужденные писать в двух раскладках, никто и не подумал.
Вам и M$ передают привет страны с тремя раскладками, а также отдельные их жители с четырьмя.
Вы меня опередили про 3 раскладки
По опыту работы американцы где-то также относятся к другим локалям

Где-то видел, на одном англоязычном форуме, перевод в UTF-8 путем приписывания 0x00 спереди, мол и так работает же.
Вы когда пишете код/делаете концепт предусматриваете rtl-языки?

Вы даже не представляете, на какую больную мозоль наступили…
А у майкрософта есть какой-нибудь багтрекер или нечто подобное?
Автору спасибо, люблю такие детективы. Главное доступно и интересно написано.
Есть suggestion box, excel.uservoice.com

Багтрекер, о котором почему-то никто не знает, хотя он вполне публичный, много лет был на MS connect, но его сейчас постепенно прикрывают.
Вероятно потому, что ваше мнение и ваши усилия в направлении улучшения продукта больше не нужны.
Это неверно.
Запросы на форумах TechNet от специалистов, а не конечных пользователей (у меня тут зависло, почините) обрабатываются пасущимися там MSFT.
У меня смешанный опыт: иногда получалось достучаться, иногда нет.
Есть ли у вас примеры, что в форуме получен ответ или решение, недоступное простому обывателю, внимательно читающему библиотеку Technet?
Да. Я дважды получал помощь: один раз оказалось, что в SDK не включены кое-какие .h файлы, я указал на это, они извинились за ошибку и включили их в следующий выпуск.
В другой раз мне нужно было решить одну хитрую задачу с WinJobs, мне подсказали нестандартный трюк. Насколько я помню, это были как раз MSFT участники.
А вот ответа по поводу OLE интерфейсов в RichEdit компоненте ответа получить не смог нигде. Ни через багтрекер, ни через форумы технет, ни через твиттер их техподдержки.
Дайте ссылки, интересно. Все ваши сообщения есть в вашем профиле, activity.
Тем не менее, исправить эту ошибку можно, и даже проще, чем ожидалось.

Кстати, позавчера LibreOffice 5 вышел… На всякий случай, вдруг кому :)
Это похоже на ошибку Автокада версии до 2009 вроде. Там нельзя было использовать в названии слоя букву Б. К сожалению, не помню, можно ли было сделать копировать-вставить. Причем у них в багах это висело лет 7-8, пока исправили (это важно, так как каждые 3 года они меняют формат файла и в целом вносят много изменений в код, а тут 3 поколения не исправляли).
MS видимо не понимают, что название состоит из символов, а не нажатых клавиш. Надо проверять само название на валидность, а оно может быть сформировано как с клавиатуры, как еще кучей разных способов, включая ситуацию, когда кто-то залезет в исходник документа и там поменяет символ в обход excel.

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

Тоже спорный вопрос. Зачем ставить ограничение на название? Ладно в ФС, и то там минимум ограничений, слеш и какое-нибудь двоеточие, остальное от лукавого, но внутри документа???
Вы когда-нибудь работали с Excel или вообще никогда? Название листа там вполне может фигурировать как часть формулы! Если всякие двоеточия будут допустимы в имени — как это всё будет работать, по вашему?
Вы когда-нибудь работали с Excel или вообще никогда?

По минимуму.
Название листа там вполне может фигурировать как часть формулы!

Почему бы в синтаксисе не предусмотреть квотирование? Пример из коммента ниже "[Файл]Лист!$A$8" может выглядеть вполне как "[Файл]'Лист: *красненький*, \для Мариванны\'$A$8"
Эти проблемы давно решены.
Потому что потом вам надо будет делать ссылку на ячейку вида "[Файл]Лист!$A$8". Если у вас будут левые символы, то ссылка не распарсится и что-то обязательно упадет в другом месте или посчитает неверный результат.

Собственно та же самая проблема, что и с названиями файлов — если они сами по себе, то без разницы, а если нужно использовать их где-то, то уже важно название.
Ой, да ну что за проблема! В T-SQL, значит, можно экранировать [Пробелы и прочую ересь] квадратными скобками в именах колонок, таблиц и прочего, а в Excel проблема так же распарсить?
MS всё прекрасно понимает. Если бы вы дочитали статью до конца, то увидели бы, что символы они тоже проверяют — чуть позже. А тут они хотели сделать «как лучше». Проблема в том, что две раскладки бывают только в ограниченном числе стран: там Греция, Россия, Израиль… если людей из этих стран в команде нет, то может не найтись никого, кто бы осознавал не только то, что в природе бывают раскладки, но и то, что в природе бывают люди, которые их во время работы регулярно меняют — и их довольно много…

P.S. Причём тут именно важно иметь людей именно из этих стран. Эмигранты часто смиряются с тем, что раскладка на клавиатуре не написана и пользуются всякими translit.ru, если им нужно вводить русский текст.
Я б сказал что двух раскладок НЕ бывает в ограниченном числе стран, а остальные минимум с двумя и живут. Вот только MS из США, а там как раз она одна.
Опять этот великорусский шовинизм, LOL. «Остальные» — это хто? США и Европа (включая Турцию), Латинская Америка и Китай, Япония и Австралия — все они живут с одной раскладкой. Да-да, даже страны, где пишут иероглифами. Там ввод текста осуществляется совсем особым образом — но именно поэтому проверка скан-кодов никому не мешает. Так что, увы и ах, но это именно страны с двумя кодировками — исключение. Потому с ними и возникают проблемы то в Linux, то в Windows. А вовсе не потому, что софт только в Штатах разрабатывают.
Ммм. Не понял вопроса. Это клавиатура, которой пользуются в германии, QWERTZ, да. QWERTY ни при этом, разумеется, не пользуют, раскладки не переключают, Office и другие подобные «сумасшедшие» программы их не напрягают. В чём проблема?
В немецкой раскладке прекрасно можно писать на английском, я гарантирую это.
Там если начать ввод на обычной раскладке, а потом переключиться на эту дополнительную то тот знак что находится где «:» тоже нельзя будет ввести. Вряд ли только он вводится так же часто как Ж.
Там нет никакой «основной» и «дополнительной». Все многочисленные символы, которые вы там видите вводятся с разными всякими AltGr'ами в основной раскладке и Office со своими трюками это прекрасно поддерживает.
Как-то слишком самоуверено.
Япония
Как вы быстро лишили японцев хираганы и катаканы. У них есть ввод каной. Поэтому в принципе ромадзи там могло и не быть. Просто ромадзи навязали IME очень наворочен и позволяет задать клавишу на переключение внутренней раскладки с кана на ромазди и обратно. У нас к слову тоже есть умельцы которые впихнули в одну раскладку и латиницу и кириллицу и сделали переключение по caps lock (при этом не сломав верхний регистр по Shift, но сломав типичную проверку орфографии). В общем японцам тут чуть больше повезло. А так объективно их нельзя выписывать из списка двух-раскладочных. Сюда ещё можно добавить Корею. Как у китайцев я не знаю.
На память приходит что ещё свои раскладки есть у:
  • Армении
  • Грузии
  • Тайланда
Про прочие кириллические — Украину, Беларусию, Казахстан и т. п. думаю нет смысла писать?

Одна раскладка только у стран где принята в основе латиница (доп знаки они набирают через AltGr) и то как видно в случае Германией есть исключение.
Поэтому в принципе ромадзи там могло и не быть.
Не могло. Компьютеры японцы получили с Запада и хотя изначально они тоже были двураскладочниками, но латинница там была изначально. Каны не было — это да.
Как вы быстро лишили японцев хираганы и катаканы.
Вот именно они и вводились на второй раскладке на какой-нибудь MSX. Но в современных системах (хоть Windows, хоть ChromeOS) японцы — однораскладочники.
А так объективно их нельзя выписывать из списка двух-раскладочных. Сюда ещё можно добавить Корею. Как у китайцев я не знаю.
У всех трёх есть переключение режимов внутри одной раскладки. Собственно IME есть пошла из Китая — причём она в ранние времена была программно-аппаратным комплексом, на продаже которого поднялась одна небезизвестная компания. Microsoft свою версию разработал вроде бы независимо, но «по образу и подобию». И, опять-таки: поскольку всё это надстраивалось над QWERTY, то латинница там была в основе изначально.

У меня просто есть знакомый, занимавшийся разработкой ChromeOS. Так вот: первой страной, которая потребовала заморачиваться с двумя раскладками была Россия. Греки и евреи были уже позже. А до этого они «окучили» большую часть мира, включая Японию, часть Латинскую Америки и Африки.

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

Я не говорю, что это хорошо — это просто неизбежно.
Странам, набирающим символы через AltGr тоже можно свинью подложить, использовав в программе шорткаты Ctrl + Alt + something.
Мало кто из русских программистов знает, что таким образом можно заблокировать ввод некоторых символов туркам, полякам и т.д. 8)
Какое-то нелепое оправдание. Если продукт идёт на рынок других стран, он должен разрабатываться с учётом их особенностей и тестироваться в том числе в их условиях.
Microsoft не раскрывает подробную статистику по продажам в разных странах, но есть основания считать, что вряд ли он получает в двураскладочных странах более нескольких процентов продаж.

Если продукт идёт на рынок стран, которые приносят вам 1% дохода, то вы выделите на адаптацию ресурсов ровно столько, сколько он заслуживает. Никто не будет разрабатывать продукт специально для такого рынка. Его доработают — как смогут.

Более того, если вам придётся жизнь людей с этого однопроцентного рынка сильно ухудшить из-за того, что какая-то фишка облегчит при этом жизнь 99% ваших потребителей — это нужно делать особо не задумываясь, так как улучшение продаж на, скажем, 10% на двадцатипроцентном рынке скомпенсирует вам возможные потери с лихвой. Простая математика.

Очевидно тестировщики этот баг не воспроизвели, а если и воспроизвели — то не обратили внимание.
Microsoft не раскрывает подробную статистику по продажам в разных странах
есть основания считать что вряд ли он получает в двураскладочных странах более нескольких процентов продаж
Взаимоисключающие параграфы.
Ваши домыслы ничем не подкреплены.
Если вы считаете, что единственные данные, на основании которых можно что-то оценивать — это бумажки, издаваемые Microsoft'ом, то мне вас жаль. Это для компании «рога и копыта», продающей два с половиной компьютера в день невозможно точно узнать сколько точно и кому она продала, но тут мы всё-таки про лидера рынка говорим! Есть данные об объемах рынка, есть данные о распространённости пиратской продукции, есть данные о ценах в разных странах, наконец! Это вполне достаточно для того, чтобы примерно оценить объёмы и перспективность рынков.
И давно ли Mircosoft стал лидером рынка? По Вашей ссылке он упоминается два раза — 5% в тексте и четвёртое место в графике. Давайте определимся, о рынке чего идёт речь.

А потом определимся, относить ли к «однораскладочным» странам Китай и Индию, с её месивом культур и национальностей.
Израиль…

Кто ещё шовинист…

Допустим, что нас тут в Израиле мало и поэтому с локализацией заморачиваются по минимуму — и не только в программном обеспечении. Но есть ещё двоюродные братья (арабы) коих куда больше. А для них актуально всё то же, что и для нас: своя раскладка клавиатуры, RTL. И даже больше: у них количество символов поболее, ибо есть всякие лигатуры и обязательные огласовки (в иврите огласовки опциональны, а реально ли вводить теамим — я даже не знаю).
Кроме того, у арабов даже цифры свои
В одной из древних, ещё до поглощения Adobe-ом, версий среды разработки Macromedia Flash было невозможно использовать букву «я» ни в коде скрипта, ни даже в комментариях.
Приходилось в таких случаях обходить баг при помощи escape-последовательность \377.
Был такой редактор, одно время очень популярный: MultiEdit. В нём та же проблема была. Причём в DOS это никому не мешало (там символ с кодом 255 — это «неразрывный пробел», который мало кого волновал в те годы), а в Windows (где туда попала полезная буква «я») — это стало просто катастрофой.
В каком-то редакторе ресурсов от Borland была та же фигня и так же решалась. При этом с \376 там тоже были проблемы.
интересно, минусует один и тот же пользователь?
Еще один workAround — фиксится CapsLock+ж+CapsLock
Хорошо что все комментарии прочитал…
А то сейчас бы дубль был.
Ещё заметил, что блочится "?". Так вот, берём Английский язык и пытаемся поставить знак вопроса (Shift+/). Вопросительный знак не ставится. Переключаемся на Русскую клавиатуру и пытаемся поставить запятую той-же комбинацией. Поздравляю! Вы получили ещё одну нерабочую кнопку :D
Это уже есть в статье, и включено в исправление ошибки, описанное в последних 2 абзацах.
Sign up to leave a comment.

Articles