Заметки

Мои мысли о жизни, работе и разных интересных штуках вокруг меня.

Показано: 0 · Страница

Как Valve в посудной лавке
10 декабря 2018 ·
Видеоигры

Ребята из Valve продолжают заигрывать с поклонниками своих игр — то ли по привычке, то ли там и правда кто-то считает, что это отличный способ напоминать о себе.

Конечно, с этой компанией как разработчиком игр всё в целом понятно. Мало кто всерьёз ждет третий Half-Life или, скажем, продолжение Portal. Но меня каждый раз умиляет это непринужденное изящество слона в посудной лавке, с которым Valve работает со своей аудиторией.

Твит

Эффект сноуборда
1 декабря 2018 ·
Спорт

Стою! Сижу!

Летишь такой вниз по склону, в который раз пытаясь почувствовать точку равновесия и не полететь кубарем, но чувствуешь только отбитую задницу, а из головы не идет знаменитый спич Васа из третьего Far Cry.

Я уже говорил тебе, что такое безумие, а? Безумие — это точное повторение одного и того же действия. Раз за разом, в надежде на изменение. Это есть безумие.

― Ваас Монтенегро, Far Cry 3

Но вниз все равно приезжаешь невероятно довольный.

Магия какая-то.

Ссылка нового объекта
29 ноября 2018 ·

Уникальный идентификатор — удобный критерий при сопоставлении объектов в разных конфигурациях. Например, когда нужно передавать инвойсы из одной базы в другую. Как второй базе понять, загружался полученный инвойс или нет? Первое, что приходит в голову — просто выполнить поиск объекта по его UUID:

ИнвойсЗагружен = Документы.Инвойс.ПолучитьСсылку(UUID).Пустая();

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

Я это к чему. Метод УстановитьСсылкуНового() в коде нужно использовать с осторожностью! Проверяйте, что ссылка ещё не установлена до выполнения вашего кода:

СсылкаЗадана = ПолучитьСсылкуНового().Пустая();

Если ссылка задана, то это надо как-то обработать — либо не заменять её вашей (если логика задачи позволяет), либо создать исключение. Иначе может возникнуть нарушение связности данных, которое будет непросто расследовать — да и вообще заметить.

Ну и, конечно, эта штука работает в обе стороны — я имею в виду, что установленную вами ссылку тоже может потереть какой-нибудь посторонний код (например, обработчик события объекта или подписка на него). Это надежно решается только тестированием.

Распределенный дизайн
20 октября 2018 ·
Работа

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

У нас в компании почти вся разработка — удаленная и сам я — тоже удаленщик. Мне очень нравится так работать; главное тут — помнить, как легко нахватать самых неожиданных проблем, когда твое рабочее место и твой дом — одно и то же место. Советы из статьи пить воду и вылезать под солнце вполне себе актуальны, например — в ходе какого-нибудь кранча про это и правда легко забыть.

Идеальное произношение
15 октября 2018 ·
English

Твит

Примерно то же самое я услышал несколько лет назад от инженера Bloomberg'а — мы тогда писали для заказчика программу, автоматически следящую за курсами акций, и столкнулись с кучей проблем (для работы с финансовыми инструментами Bloomberg дает мощный, но довольно сложный API).

В конце концов дело дошло до диалога с техподдержкой, и после обмена несколькими сообщениями коллега предложил пообщаться голосом. Я здорово смутился и заметил, что, мол, так-то можно, но my English isn't fluent enough. На это собеседник лишь пожал плечами: мол, мы привыкли — английский используется повсеместно, и обратная сторона медали в том, что его везде крутят на свой лад. Так что правильное ударение — последнее, что его будет волновать, лишь бы была понятна мысль.

Принцип не-осуждения
2 сентября 2018 ·
Тем временем

Хорошая заметка Максима Ильяхова про анализ чего-то такого, что вроде бы вас не касается, но почему-то невероятно раздражает. Напомнило американский принцип не-осуждения, про который я читал пару лет назад; тут немного другие формулировки, но суть — точно та же.

У нас этот подход, в общем, тоже есть — даже в фольклоре осел со знаменитым «не суди и не судим будешь». Жаль, что пока не так широко применяется.

СКД и право просмотра
28 августа 2018 ·
Готово

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

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

У вас настройка кривая, товарищ!

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

Не скажу сходу, что именно тут сбило платформу с толку и привело к не очевидной диагностике — то ли манипуляции с временной таблицей, куда эта константа была прочитана, то ли то, что читалась она в конструкции ВЫБОР, то ли то, что на сам справочник валют все необходимые права были. Искать конкретное условие или их сочетания я не стал — думаю, это просто специфика реализации движка СКД, которая может меняться от версии к версии. Достаточно не забывать о праве просмотра, и проблемы не будет.

Что касается ошибки, при столкновении с ней стоит вывести проблемный отчет под полными правами. Если тут всё о'кей, нужно набросать список таблиц, откуда отчет читает данные, и проверить — все ли они с правами на чтение и просмотр.

Нудно, но может сэкономить прилично времени.

Беги от дочери морей
29 июля 2018 ·
Видеоигры

Наталья О'Шей озвучила русский ролик для грядущего обновления World of Warcraft. У неё круто получаются такие образы — умеет и настроение создать, и стали в голос припустить.

Вообще, если говорить о ней и «Мельнице» в целом — самые сильные песни у них именно те, где речь о чем-то конкретном. Были весной на концерте в честь выхода «Люциферазы» — прямо небо и земля; то ли мне не хватало знания контекста, то ли многие тексты и правда были здорово абстрактными, не знаю. Но в итоге местами было трудно понять, о чем песня, и настроение порядком сбивалось.

А тут даже знать особо ничего не нужно. Я в WoW не играл и не буду, но от финальных интонаций морозом по коже все равно отдает :-)

Печать ГПиМРМ
22 июля 2018 ·
Книги

Возможно, вы уже слышали про то, что русский перевод «Методов рационального мышления» Элиезера Юдковского пошел в некоммерческую печать (спасибо «Эволюции» и другим инфопартнерам), но на всякий случай напомню ещё раз.

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

Результаты FCE
15 июля 2018 ·
Книги
Готово
English

Кембридж прислал результаты июньских экзаменов. И — вступают трубы — FCE я сдал! Судя по баллам, ухитрился в чём-то налажать во время письменной части, зато неплохо отыгрался во время разговорной. Жаль, что экзаменаторы не дают более подробных комментариев; впрочем, и так понятно, куда дальше воевать :) Преподаватель заметила, что раньше вообще сообщали только итоговый балл — мол, понимайте как хотите, уважаемые претенденты.

В общем, в следующем году перевешу планку повыше — видимо, нужно готовиться к CAE.

По этому поводу вспомнился Фейнман со своей знаменитой «Вы, конечно, шутите». Среди прочего он рассказывал, как во время жизни в Бразилии учился играть на фригидейре и доучился до того, что его стали ставить в пример местным музыкантам:

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

― Ричард Фейнман

Между «все ошибки» и «приятно слушать» непринужденно опущено целое море труда, но в целом этот синопсис мне нравится. Работаем куда-то туда!

Kona
29 мая 2018 ·
Видеоигры

У игры есть сильные стороны, которые честно старались удержать мое внимание: тут есть где погулять, что почитать, о чем подумать и на что посмотреть. Если вы цените это в играх — возможно, вам понравится. От прогулок и размышлений почти ничего не отвлекает — умереть от чего бы то ни было тут довольно сложно. Ровно как и заблудиться — у главного героя есть карта и автомобиль, а позже можно раздобыть ещё и снегоход.

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

При этом мистическая сторона сюжета сама по себе зияет здоровенными дырами. Да, картина трагедии ближе к концу становится более или менее понятна — но даже последнее, самое полное видение само по себе рождает целую кучу вопросов, на которые никто не трудится отвечать. Сюжет в этой игре вообще здорово напоминает её же карту — выглядит цельным, но по факту доступна от силы половина, а остальное скомкано под отчетливо читаемое «ну, потому что магия, магия такая, понимаете?».

Нет, блин, не понимаю.

Сообщение пользователю
30 апреля 2018 ·

В 1С:Предприятии есть удобный метод вывода сообщений — объект СообщениеПользователю. Он выводит их в нижней части формы и это, внезапно, потенциальная проблема: дело в том, что большинство пользователей туда не смотрит. Мол, если никаких явных ошибок на экране нет — беспокоиться не о чем.

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

До кучи можно вспомнить небольшие служебные формы: в них СообщениеПользователю вообще противопоказано. Да, на маленьком полотне сложнее не заметить всплывший внизу текст, однако тут дело в другом — одно-два сообщения буквально пожирают рабочее пространство формы и работать с ней становится неудобно.

Эти мерзкие смартфоны
31 марта 2018 ·
Тем временем

Социум

Художник — Адам Эллис.

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

То же касается и детей. Соцсети набиты спорами по этому поводу, как бочка селедкой, однако причина проблемы остаётся точно такой же: если подросток при виде вас утыкается в телефон, ему с вами попросту не интересно и проблема, очевидно, в вас самих.

Двойная «i»
9 марта 2018 ·
English

Разбирался недавно с транслитерацией собственной фамилии. Согласно правилам МИД'а, на английском она пишется как «Kostianetskii» — с двойной «i» в конце. Такое сочетание букв встречается довольно редко — «skiing» единственное частотное слово, которое приходит в голову.

Мне стало любопытно, почему так, и я загуглил. Точного ответа не нашёл, но одна из возможных причин забавная: пропись! Две «i» рядом только на экране смотрятся хорошо, а когда пытаешься написать их от руки — внезапно получается «u».

Подробнее и нагляднее про это — здесь.

Разные стороны медали
5 марта 2018 ·
Работа

Привет!

Фидбек — одна из самых клевых штук в моей профессии. Да, не первый год программирую, да, кучу всего написал, переписал и переделал, и всё равно каждый сложный механизм, наконец заработавший так, как надо — это… Ну, не знаю. Как снова и снова слышать «да» на выпускном бале :-)

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

Ваши документы
1 марта 2018 ·
Видеоигры

Крутая экранизация «Papers, Please», даром что на десять минут. Савочкин здорово сыграл, да и остальные не подкачали, включая сценариста. Запихнуть в такой хронометраж драму и сюжетный твист — это надо уметь.

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

Чего так серьезно?
17 февраля 2018 ·
Код с запашком

Иногда при отладке какого-нибудь сложного механизма не хватает времени на адекватные имена переменных и методов. Как итог — в коде появляются загадочные КакогоФига, ПрименитьМагию и прочие ЖивыеНеудачи.

Этого нужно избегать, правда. На первый взгляд, конечно, смотрится забавно, но через месяц-другой написанный код нужно будет доработать — и тут-то проблема встанет в полный рост! Материться сквозь зубы на автора не выйдет лишь потому, что автор — ты сам.

White Day
17 января 2018 ·
Видеоигры

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

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

Выгрузка автобусных рейсов
17 ноября 2017 ·
Готово
Работа

С тех пор, как мы с коллегами заново автоматизировали КПАТ, она работает на «Управлении автовокзалами». Это конфигурация для 1С:Предприятия, то есть её можно сравнительно быстро интегрировать почти с чем угодно.

Первым делом мы решили наладить выгрузку маршрутного расписания автобусов на E-Traffic и Яндекс.Расписания.

Что это за ресурсы?

Первый ресурс, E-Traffic — это крупнейший в России агрегатор данных автовокзалов. Собирает информацию о запланированных рейсах и выступает как агент по продаже электронных билетов. То есть пассажирам не нужно продираться через сайты автовокзалов — на E-Traffic можно купить билет откуда угодно куда угодно.

Что касается Яндекс.Расписаний — это один из дочерних проектов российского поисковика. Как и E-Traffic, предназначен в первую очередь для пассажиров и умеет быстро строить относительно сложные маршруты с пересадками. Билетами они, правда, не торгуют.

Как была сделана выгрузка?

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

Технически всё было сделано в виде веб-сервиса для «Управления автовокзалами». Получив SOAP-запрос от E-Traffic, он собирал внутри информационной базы 1С:Предприятия все необходимые данные о запланированных автобусных рейсах и возвращал их в виде XML-ки.

Нам даже не пришлось писать код получения расписания с каждого вокзала, входящего в сеть КПАТ'а: все они создаются и хранятся в одном месте — главном узле РИБ, а веб-сервис мы развернули именно там. В итоге больше времени ушло на разные согласования, чем на программирование.

А где посмотреть?

Внутренняя кухня снаружи не видна, да и там ничего необычного — роботы общаются с роботами, эка невидаль :-) Результат их болтовни — куда интереснее! Например, вот расписание рейсов из Кемерово в Новокузнецк на сегодня.

Себби x Игрок
14 августа 2017 ·
English
Видеоигры

В конце июля я на волне энтузиазма перевёл фанатскую мангу по «Stardew Valley», про которую я уже писал две недели назад.

Забавный опыт. Во-первых, автор — китаец (точнее, китаянка) и английский язык для неё не родной — как и для меня. В итоге ряд фреймов, скажем так, вызывал вопросы. Во-вторых, я обнаружил, что подыскать русский аналог английской фразы, который бы не выглядел цитатой из документации к порталу госуслуг — само по себе неплохой челлендж.

Короче, часть смысла по ходу дела, подозреваю, потерялась, хотя я постарался передать что мог и даже списался с автором, разбирая совсем уж непонятные участки. Было весело: я не знаю китайского, она — русского; общались на английском, а он у обоих далёк от идеала.

Думаю, некоторые фразы можно было сделать поживее, где-то ровнее поправить исходную картинку, но — нафиг. Лучшее — враг хорошего, а результат мне уже нравится. Конечно, в сухом остатке здесь нет чего-то особенно крутого — рисовка как рисовка, сюжет по большей части повторяет игру, но… Не знаю. Наверное, визуальные новеллы сделали из меня чересчур сентиментального сукиного сына :-)

Спасибо Кэт за помощь с отрисовкой, Лему — за подсказки по переводу и Марике — за мысль. Ну и, конечно, Квантусу — за мангу.