Заметки

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

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

Не скомпилированный код
27 января 2019 ·

Не очевидная штука: абстрактная внешняя обработка работает заметно медленнее точно такой же, но встроенной в конфигурацию или её расширение. Причина — её код нужно заново компилировать для каждого пользователя при каждом запуске (тогда как код встроенных обработок компилируется один раз и для всех). Судя по статье в базе знаний 1С, для платформы 8.3.10 это было прямо катастрофа, но и пятидесятипроцентный рост нагрузки на процессор в 8.3.13 — тоже, в общем, ничего хорошего.

Другой подход с тем же эффектом — это хранение кода внутри базы (в реквизитах служебных справочников, например). Каждый раз, когда такой код нужно запустить, он извлекается из БД и компилируется. Например, у нас в конфигурации можно создавать регламентные задания без изменения метаданных — просто добавляем элемент специального справочника, загружаем в него код и настраиваем расписание работы.

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

А ещё можно вообще отказаться от хранения кода и сделать весь механизм в виде расширения. Возможно, решение будет менее гибким, но все же это лучше, чем потом медитировать над низким APDEX'ом.

Поездка на Кок-Коль
6 января 2019 ·
Спорт

Летом катался с друзьями на границу с Монголией (на машинах доехали до Ташанты, а оттуда — на велосипедах до Кок-Коля). Вымотались как проклятые, однако это того определенно стоило — виды с гор невероятно крутые! Одно жаль, животные попадались нечасто — даже чумных сусликов не встретили, хотя их нам каждый встречный анонсировал, включая погранцев :-)

Знак амперсанда в 1С
27 декабря 2018 ·

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

Пример ниже выведется как «Project Costing». Символ «P» в ней будет подчеркнут и станет горячей клавишей; если это, например, заголовок команды, то её можно будет вызвать, нажав Alt + P.

ТекстНадписи = "&Project Costing";

Единственное неудобство — если нужно вывести амперсанд прямо в надпись. В этом случае символ следует удвоить: так, пример ниже будет выглядеть как «Project P&L». Никаких горячих клавиш в таком случае создано не будет.

ТекстНадписи = "Project P&&L";
Как 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 ·
Код с запашком

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

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