Советские клоны-по-мотивам всегда отличались какими-то внезапными несовместимостями. Те же икстишки Нейрон и ЕС требовали, насколько помню, своих драйверов для доса. Причём, разных.
Совершенно изумительная машина была Роботрон-1915. Исходно рассчитанная на работу под каким-то юниксом, она программно переключалась в режим совместимости с IBM PC.
Я, к сожалению, глубоко в схемотехнику роботрона не влезал, потому что был юн и осторожен.
Вроде там на плате стоял отдельный контроллер со своим собственным биосом, который отвечал за то, какие адреса памяти и портов куда надо отображать. И часть портов резервировал для себя, а часть отображал не по спецификации XT, из-за чего некоторые вещи на роботроне работали неправильно.
Видеоконтроллер там был аналог EGA, но при переключении из текстового режима в графический он совместимо деградировал до CGA.
Всю жизнь думал, что "Микроша" - это она... Опять же, "Ириша".
Первое склонение - преимущественно женский род. (Да, конечно, Саша и Гриша смотрят с укоризной, но Маша, Наташа, каша и пороша как бы отвергают их укоризненный взгляд).
Глупости какие! Если вы не встречали, то и никто не встречал.
А вот я почему-то встречал!
Любое отступление от точной фразы для поиска, либо если эта фраза содержит много высокочастотных слов (всякие местоимения там...) или триггеров для поиска товаров и показа рекламы - и вуаля, что алиса, что гугл первым делом пытаются "объяснить" вместо поиска. А если объяснить не получается, галлюцинируют - вплоть до указания источников, где, как им кажется, "что-то такое о чём-то этаком было сказано".
Хрен бы с ним, чтоб привели источник - конкретную статью дзена. Какая разница, дзен, фейсбук, дремучий форум на phpbb или чья-то домашняя страничка.
Лишь бы не врали. Слава богу, у галлюцинаций пока что есть очень характерный стиль, можно отличить, когда нейронка выдумывает.
Ну или если я знаю, что именно ищу. И тогда вижу - выдача ложная или правдивая.
Из гадского, - алиса проиндексировала какой-то внутренний документ какой-то организации, в котором интенсивно упоминалось ПУЭ 7. Я прямо задолбался искать нужные мне пункты ПУЭ, потому что алиса упорно выдавала по этим номерам пункты этого внутреннего документа. И даже когда я прямо запретил ссылаться на него. Ну, не ссылалась, просто в выдачу валила.
Возможно, там чисто юридические заморочки? Скажем, туя не лицензировала что-нибудь, а яндекс решил, что да и не больно-то и хотелось...
В случае с акарой, например, ситуация такая. Зигби-хаб и некоторые датчики акары не находятся в списке официально поддержанных устройств, и всё. Обе техподдержки говорят "не наше собачье дело". Поэтому оно работает на честном слове на половине возможностей.
Беда в том, что нейрослоп, во-первых, персонализирован, а во-вторых, персонализирован непойми для кого.
По дефолту иишница способна наврать на самых серьёзных щах, и если ты не эксперт, то хрен поймёшь. (А если ты эксперт, то зачем тебе иишница?)
К сожалению, сейчас и гугл и яндекс активно подменяют И ПОДМЕНИЛИ поиск генерацией. Теперь вместо умного библиографа там сидит девачка-референт.
Причём, если гугл ещё можно наругать и потребовать ссылки на каждый факт (при этом всё равно треть окажется нерелевантной, а ещё четверть - неправильно пересказанной), - то яндекс будет упорствовать в ереси, а то и вовсе перейдёт в режим болталки.
Раньше гугл-фу состояло в том, чтобы правильно указывать ключевые слова, расставлять операторы +, - и т.п., избегать всяких (в)водных слов, - чтобы библиограф не отвлекался.
Сейчас надо знать, как расставлять водные слова, чтобы смещать фокус иишницы в нужную сторону. Хоть прямо заводи файл со скиллами и копипасть каждый раз в строку поиска! Чтобы он перебил базовые скиллы на той стороне.
Точность там страдает дай боже, когда находишь обратное преобразование. Сам наблюдал такое и сам фиксил.
Дотошно не воспроизведу сейчас, но было вот такое.
Есть задача восстановления лидарного облака с движущегося лидара кругового обзора, находящегося на автомобиле.
Лидар каждую точку снимает в конкретный момент времени. Получаем облако точек в пространстве-времени в координатах лидара. Зная положение лидара на автомобиле и траекторию автомобиля в пространстве-времени в координатах неподвижного мира, пересчитываем точки в пространство-время мира. Приводим к единому времени (для простоты, считаем объекты неподвижными). Восстанавливаем в пространство автомобиля.
Если ноль координат мира очень далеко (сотня километров) от положения автомобиля, то траектория - это не только и не столько прямолинейное движение на расстояние 1-2 метра, но и поворот на очень маленький угол (стотысячные доли радиана).
Соответственно, поворот всех этих точек облака - это тоже стотысячные радиана на сотню километров, плюс поворот лидарного луча на сотые радиана и десяток метров. Сначала в одну сторону, потом в другую.
И вот это шараханье на сотню километров туда и обратно на разные микрорадианы - радикально умножает.
У меня не сохранился юпитер-ноутбук с иллюстрацией, - если будет час та натхнення, попробую воспроизвести, но не обещаю.
Простая фигура (окружность равноудалённых от лидара точек) превращалась в расходящуюся спираль.
Решение "быстренько проверить вхождение суррогатной пары и затем дефолтиться к константному или линейному забегу"...
Начнём с того, что если подсунуть гигантский текст, в котором в самом конце будет суррогатная пара, - то этот код всё равно задефолтится к линейному забегу. Ну, да, isPlain при аккуратном (очень!!! очень аккуратном!!!) использовании будет кешироваться. Но она же нужна не просто так, а для выбора способа произвольного доступа.
Так что квадратный маляр Шлемюэль никуда не делся, только спрятался поглубже.
Код, который проходил тесты на маленьких датасетах, затем на большущих датасетах, а потом в продакшен залетел одинокий дятел, подклеил флажочек к полному собранию сочинений, и бабах.
Почему бы для длинных текстов не использовать не голую строку, а специальный класс, который эффективно решает задачи прямого доступа (хотя бы за логарифмическое время, с помощью интервальных деревьев и ленивости). И кешировать-ленивить исключительно саму эту обёрнутую строку, а не делать глобальный кеш из двух элементов!!!
Собственно, задача быстрого доступа к фрагментам текста (разбивка на страницы, абзацы и слова) - это типичная задача любых текстовых редакторов. А тут всего лишь добавился ещё один уровень иерархии, композитные буковки.
Понятно, что для программиста это шок. Работал с "просто строкой", и вдруг понадобилось сделать полноценный вьювер. (Эмм, а зачем надо было работать со строкой с прямым доступом к ней? Похоже, изначально вьювер нужен был).
Но все эти велосипеды были изобретены ещё в далёких 1970-х, наверное.
Тогда проблема - как развернуть в новой сессии нужный комплект окон с командами, а в существующей - просто присоединиться и ничего сверх того не добавлять.
Чем дальше от начала координат, тем... дело даже не в ошибках конечной разрядности плавающей арифметики, а в ошибках вообще.
Преобразования систем координат делаются на матрицах, в одну сторону - на прямых, в обратную - на обратных. Если матрица плохо обусловлена, оператор преобразования становится люто чувствителен к малым изменениям (в том числе, к погрешностям любой природы - хоть из младших разрядов, хоть из физики).
И хотя с позиций чистой математики любое аффинное преобразование можно представить как матричное умножение в N+1-мерном пространстве (вектор-точка аугментирован единичкой, вектор-длина - ноликом), или же, что то же самое, как последовательность из вращения-масштабирования - матричного умножения в N-мерном пространстве - и затем параллельного переноса,
вот специально для таких ситуаций лучше не умничать, а разложить преобразование как последовательность произвольных вращений и переносов, - а обратное преобразование сыграть ровно в обратном порядке: отрицательный перенос, обратное вращение, отрицательный перенос, обратное вращение...
Отдельный ад возникает при интер- и экстраполяции движения. Там получается набор интерполированных преобразований, которые надо применять к исходной точке. А интерполяция - это всегда те самые малые изменения. Которые с плохо обусловленными матрицами делают очень больно!
Поэтому интерполировать нужно в какой-то локальной системе координат.
Интерполяция, опять же, бывает разная. Самые очевидные схемы - это линейная (слерп кватернионов и лерп положения) или матричная экспонента (движение по дуге).
Но вот беда, матричная экспонента вычисляется через матричный ряд Тейлора. С ограниченной точностью. То есть, с заданной погрешностью. Поэтому те самые малые изменения у нас зашумлены по определению!
И это не только геймдева касается, но и моделирования движения в реальном географическом пространстве.
Хорошо промышленному роботу: прикручен к станине или, максимум, катается по цеху. А вот беспилотный автомобиль или летательный аппарат отхватывает все эти нюансы вычислительной математики полной ложкой!
Так уже было, и ещё до ИИ. Всевозможные объявления "частный электрик-сантехник-компукторщик, приду и наслесарю вам!" или "куплю квартиру в вашем доме".
Если слежка - вид загрязнения, то загрязняет не тот, за кем следят, а тот, кто следит.
А если в смысле "наследил" (хотя в английском эти слова не однокоренные, и вряд ли Столлман играл в слова), - то - невозможно жить и не следить. Выдохнул - уже наследил. До какой степени скрытности надо дойти, чтобы вообще никто ничего не заметил?
Аскеза освобождает от одного и ограничивает в другом. Мысль нетрудная для осознания, но вы тоже попробуйте.
Советские клоны-по-мотивам всегда отличались какими-то внезапными несовместимостями. Те же икстишки Нейрон и ЕС требовали, насколько помню, своих драйверов для доса. Причём, разных.
Совершенно изумительная машина была Роботрон-1915. Исходно рассчитанная на работу под каким-то юниксом, она программно переключалась в режим совместимости с IBM PC.
Я, к сожалению, глубоко в схемотехнику роботрона не влезал, потому что был юн и осторожен.
Вроде там на плате стоял отдельный контроллер со своим собственным биосом, который отвечал за то, какие адреса памяти и портов куда надо отображать. И часть портов резервировал для себя, а часть отображал не по спецификации XT, из-за чего некоторые вещи на роботроне работали неправильно.
Видеоконтроллер там был аналог EGA, но при переключении из текстового режима в графический он совместимо деградировал до CGA.
Всю жизнь думал, что "Микроша" - это она... Опять же, "Ириша".
Первое склонение - преимущественно женский род. (Да, конечно, Саша и Гриша смотрят с укоризной, но Маша, Наташа, каша и пороша как бы отвергают их укоризненный взгляд).
Глупости какие! Если вы не встречали, то и никто не встречал.
А вот я почему-то встречал!
Любое отступление от точной фразы для поиска, либо если эта фраза содержит много высокочастотных слов (всякие местоимения там...) или триггеров для поиска товаров и показа рекламы - и вуаля, что алиса, что гугл первым делом пытаются "объяснить" вместо поиска. А если объяснить не получается, галлюцинируют - вплоть до указания источников, где, как им кажется, "что-то такое о чём-то этаком было сказано".
Хрен бы с ним, чтоб привели источник - конкретную статью дзена. Какая разница, дзен, фейсбук, дремучий форум на phpbb или чья-то домашняя страничка.
Лишь бы не врали. Слава богу, у галлюцинаций пока что есть очень характерный стиль, можно отличить, когда нейронка выдумывает.
Ну или если я знаю, что именно ищу. И тогда вижу - выдача ложная или правдивая.
Из гадского, - алиса проиндексировала какой-то внутренний документ какой-то организации, в котором интенсивно упоминалось ПУЭ 7. Я прямо задолбался искать нужные мне пункты ПУЭ, потому что алиса упорно выдавала по этим номерам пункты этого внутреннего документа. И даже когда я прямо запретил ссылаться на него. Ну, не ссылалась, просто в выдачу валила.
Можно ли взорвать этот калькулятор, подсунув какое-нибудь очень плохо сходящееся выражение?
Возможно, там чисто юридические заморочки? Скажем, туя не лицензировала что-нибудь, а яндекс решил, что да и не больно-то и хотелось...
В случае с акарой, например, ситуация такая. Зигби-хаб и некоторые датчики акары не находятся в списке официально поддержанных устройств, и всё. Обе техподдержки говорят "не наше собачье дело". Поэтому оно работает на честном слове на половине возможностей.
Беда в том, что нейрослоп, во-первых, персонализирован, а во-вторых, персонализирован непойми для кого.
По дефолту иишница способна наврать на самых серьёзных щах, и если ты не эксперт, то хрен поймёшь. (А если ты эксперт, то зачем тебе иишница?)
К сожалению, сейчас и гугл и яндекс активно подменяют И ПОДМЕНИЛИ поиск генерацией. Теперь вместо умного библиографа там сидит девачка-референт.
Причём, если гугл ещё можно наругать и потребовать ссылки на каждый факт (при этом всё равно треть окажется нерелевантной, а ещё четверть - неправильно пересказанной), - то яндекс будет упорствовать в ереси, а то и вовсе перейдёт в режим болталки.
Раньше гугл-фу состояло в том, чтобы правильно указывать ключевые слова, расставлять операторы +, - и т.п., избегать всяких (в)водных слов, - чтобы библиограф не отвлекался.
Сейчас надо знать, как расставлять водные слова, чтобы смещать фокус иишницы в нужную сторону. Хоть прямо заводи файл со скиллами и копипасть каждый раз в строку поиска! Чтобы он перебил базовые скиллы на той стороне.
Точность там страдает дай боже, когда находишь обратное преобразование. Сам наблюдал такое и сам фиксил.
Дотошно не воспроизведу сейчас, но было вот такое.
Есть задача восстановления лидарного облака с движущегося лидара кругового обзора, находящегося на автомобиле.
Лидар каждую точку снимает в конкретный момент времени. Получаем облако точек в пространстве-времени в координатах лидара. Зная положение лидара на автомобиле и траекторию автомобиля в пространстве-времени в координатах неподвижного мира, пересчитываем точки в пространство-время мира. Приводим к единому времени (для простоты, считаем объекты неподвижными). Восстанавливаем в пространство автомобиля.
Если ноль координат мира очень далеко (сотня километров) от положения автомобиля, то траектория - это не только и не столько прямолинейное движение на расстояние 1-2 метра, но и поворот на очень маленький угол (стотысячные доли радиана).
Соответственно, поворот всех этих точек облака - это тоже стотысячные радиана на сотню километров, плюс поворот лидарного луча на сотые радиана и десяток метров. Сначала в одну сторону, потом в другую.
И вот это шараханье на сотню километров туда и обратно на разные микрорадианы - радикально умножает.
У меня не сохранился юпитер-ноутбук с иллюстрацией, - если будет час та натхнення, попробую воспроизвести, но не обещаю.
Простая фигура (окружность равноудалённых от лидара точек) превращалась в расходящуюся спираль.
Решение "быстренько проверить вхождение суррогатной пары и затем дефолтиться к константному или линейному забегу"...
Начнём с того, что если подсунуть гигантский текст, в котором в самом конце будет суррогатная пара, - то этот код всё равно задефолтится к линейному забегу. Ну, да, isPlain при аккуратном (очень!!! очень аккуратном!!!) использовании будет кешироваться. Но она же нужна не просто так, а для выбора способа произвольного доступа.
Так что квадратный маляр Шлемюэль никуда не делся, только спрятался поглубже.
Код, который проходил тесты на маленьких датасетах, затем на большущих датасетах, а потом в продакшен залетел одинокий дятел, подклеил флажочек к полному собранию сочинений, и бабах.
Почему бы для длинных текстов не использовать не голую строку, а специальный класс, который эффективно решает задачи прямого доступа (хотя бы за логарифмическое время, с помощью интервальных деревьев и ленивости). И кешировать-ленивить исключительно саму эту обёрнутую строку, а не делать глобальный кеш из двух элементов!!!
Собственно, задача быстрого доступа к фрагментам текста (разбивка на страницы, абзацы и слова) - это типичная задача любых текстовых редакторов. А тут всего лишь добавился ещё один уровень иерархии, композитные буковки.
Понятно, что для программиста это шок. Работал с "просто строкой", и вдруг понадобилось сделать полноценный вьювер. (Эмм, а зачем надо было работать со строкой с прямым доступом к ней? Похоже, изначально вьювер нужен был).
Но все эти велосипеды были изобретены ещё в далёких 1970-х, наверное.
Тогда проблема - как развернуть в новой сессии нужный комплект окон с командами, а в существующей - просто присоединиться и ничего сверх того не добавлять.
Парижской. Бого... матери.
Чем дальше от начала координат, тем... дело даже не в ошибках конечной разрядности плавающей арифметики, а в ошибках вообще.
Преобразования систем координат делаются на матрицах, в одну сторону - на прямых, в обратную - на обратных. Если матрица плохо обусловлена, оператор преобразования становится люто чувствителен к малым изменениям (в том числе, к погрешностям любой природы - хоть из младших разрядов, хоть из физики).
И хотя с позиций чистой математики любое аффинное преобразование можно представить как матричное умножение в N+1-мерном пространстве (вектор-точка аугментирован единичкой, вектор-длина - ноликом), или же, что то же самое, как последовательность из вращения-масштабирования - матричного умножения в N-мерном пространстве - и затем параллельного переноса,
вот специально для таких ситуаций лучше не умничать, а разложить преобразование как последовательность произвольных вращений и переносов, - а обратное преобразование сыграть ровно в обратном порядке: отрицательный перенос, обратное вращение, отрицательный перенос, обратное вращение...
Отдельный ад возникает при интер- и экстраполяции движения. Там получается набор интерполированных преобразований, которые надо применять к исходной точке. А интерполяция - это всегда те самые малые изменения. Которые с плохо обусловленными матрицами делают очень больно!
Поэтому интерполировать нужно в какой-то локальной системе координат.
Интерполяция, опять же, бывает разная. Самые очевидные схемы - это линейная (слерп кватернионов и лерп положения) или матричная экспонента (движение по дуге).
Но вот беда, матричная экспонента вычисляется через матричный ряд Тейлора. С ограниченной точностью. То есть, с заданной погрешностью. Поэтому те самые малые изменения у нас зашумлены по определению!
И это не только геймдева касается, но и моделирования движения в реальном географическом пространстве.
Хорошо промышленному роботу: прикручен к станине или, максимум, катается по цеху. А вот беспилотный автомобиль или летательный аппарат отхватывает все эти нюансы вычислительной математики полной ложкой!
Многопоточные гонки, кстати, отчасти диагностируются thread sanitizer'ом.
Иногда тсан даёт ложноположительные срабатывания, но каждое из них нужно убедительно доказывать, что оно именно ложно положительное.
Так уже было, и ещё до ИИ. Всевозможные объявления "частный электрик-сантехник-компукторщик, приду и наслесарю вам!" или "куплю квартиру в вашем доме".
Если слежка - вид загрязнения, то загрязняет не тот, за кем следят, а тот, кто следит.
А если в смысле "наследил" (хотя в английском эти слова не однокоренные, и вряд ли Столлман играл в слова), - то - невозможно жить и не следить. Выдохнул - уже наследил. До какой степени скрытности надо дойти, чтобы вообще никто ничего не заметил?
Аскеза освобождает от одного и ограничивает в другом. Мысль нетрудная для осознания, но вы тоже попробуйте.
Голосовое управление - это супер фича, но в пробке я постоянно звоню маме.
functools.partial
</душнила>
Это потому, что изначально было поставлено условие от балды. Сказали бы "давайте напишем игру в 100 строк", и вжух, у нас куча места для манёвра )))
Скрин супротив тмукса - всё равно что плотник супротив столяра.
Странная логика!
Кококо tmux не переживает ребут хоста, очень неудобно, не хочу пользоваться! И другим буду всячески отсоветовывать.
Хочу пользоваться ttyd - который тоже не переживает ребут хоста, да и с сессиями и с обрывом связи там тоже отдельный секс!
По факту, просто заменил одно терминальное приложение на другое.
А то, что в браузере многооконность есть - это не смущает? Просто окна переехали с серверной стороны на клиентскую.