Черное зеркало S05E02, Осколки

Два момента, которые меня особенно зацепили. Профессиональная деформация?

Блокировка аккаунта на сутки после трёх неверных попыток входа

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

Но в сети Интернет атакующего найти гораздо сложнее. Разумная практика — блокировать IP-адрес на сутки, но тогда по сюжету героиня могла бы подбирать пароли с десятков устройств плюс подключить VPN-сервисы. Но вот это было бы уже не так интересно для развития сюжета, потому что у человека не было бы Проблемы.

Восстановление пароля в открытом виде

В конце сюжетной линии героине присылают пароль от аккаунта в открытом виде.

Разумная практика — не хранить пароли в открытом виде, использовать только солёные хеши и всё такое. В реальной жизни администратор может сбросить пароль, то есть просто установить новый, но старый пароль никто узнать не может.

Но по сюжету героине прислали «значащий» пароль для владельца аккаунта, следовательно совершенно очевидно, что это реальный старый пароль.

Для завершения сюжетной линии — красивый штрих, но IRL такого не бывает.

Бонус — запись звука с мобильного телефона

Администратор социальной сети активирует закладку в мобильном приложении и запускает трансляцию звука с устройства преступника на терминал администратора.

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

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

Могу только утверждать следующее. Звук не записывается и не передаётся в сколько-нибудь значимых объёмах. Ограничивает авторов приложений и связывает руки примерно следующее:

  • вероятность публичного скандала может нанести огромный ущерб репутации
  • постоянная запись звука сказывается на ресурсе аккумулятора
  • постоянная отправка данных легко детектируется
  • звук требует расшифровки speech-to-text, а это дорогое удовольствие
  • запись звука требует разрешений на уровне опрационной системы, что сразу вызывает вопросы к приложениям, которым незачем это делать

LOOP AT SCREEN, работа с экраном — новая идея

Устав от простыней в стиле:

я решил обкатать новый подход.

Первым делом декларативное определение, например:

Применение на практике сводится к следующему:

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

(далее…)

Про перекладывание плитки

Раннее утро. Птички чирикают.

Сижу, никого не трогаю, читаю утреннюю газету.

SAP вещает:

сморите как всё было плохо, какое всё разное, инконсистенси, то да сё,  фу-фу-фу

вот мы вам сделаем Fiori 3, там будет всё такое консистентное, прям ух-ты-красота

современные технологии, двадцать первый век, а о цене давайте не будем говорить

И неожиданно нахлынуло чувство какой-то органичной целостности этого мира.
(далее…)

Прощай , Сергей!

Не стало великого человека. Очень жаль. Он был актуален для меня прямо сейчас.

* * *

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

* * *

Он рассказал мне важные вещи, например:

  • В России нет коррупции
  • Любое послание — это подразумеваемое, декларируемое и скрытое
  • Главная валюта нашего времени — внимание

* * *

Он не любил, когда его называют по имени-отчеству.

* * *

Телега впереди лошади

Простая иллюстрация подхода при передаче параметра  в виде ссылки:

Чего можно таким добиться?

Например: это маленькое ухищрение позволяет однократно указывать обрабатываемую таблицу. Это делает код чуть менее многословным. Альтернатива:

Насколько это красиво? Чисто и просто… Впрочем, есть тут некоторая неочевидность. Мы запускаем метод в классе без указния локальной переменной в качестве параметра, а эта локальная переменная меняется.

Если собирать ошибки внутри вспомогательного класса, а потом их получать вместе, то становится сложнее прекратить обработку немедленно. Выглядит как-то корявенько:

Пример реализации:

(далее…)

Ни в чём себе не отказывай

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

В новой интерпретации это не справочник, а просто поле свободного ввода:

И пусть никто не уйдёт обиженный!

Достигая невозможного, пьеса

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

Акт первый

Консультант: Нам нужно массово списать материалы, но так чтобы в оборотах это было отражено в особом периоде.

Старый фрилансер: Ну дело житейское, разработчика своего попросите.

Консультант: Мы спрашивали, но он сказал, что это невозможно.

Старый фрилансер: Поверь мне, милая, если разработчик говорит, что нечто невозможно, то это значит, что он ленивая жопа.

Консультант: Посмотри, пожалуйста!

Старый фрилансер: Не вопрос, но задачку-то поставь. (далее…)

Быстрый способ получить данные из XML-файла

Как это часто бывает, есть много разных способов решить одну и ту же задачу. И на этот счет тоже есть варианты:

  • Разбирать текст руками или регулярными выражениями:  плохой подход сходу, не обсуждается
  • CL_XML_DOCUMENT: классический подход, но несколько муторный на мой вкус
  • CALL TRANSFORMATION: стандартный подход, но меня всегда смущает небходимость наличия отдельного артефакта. Кроме того, если работать с этим раз в год, то синтаксис трансформаций выпадает из памяти и необходимо снова обращаться к примерам и/или документации

Новый для меня способ — использовать функциональный модуль SMUM_XML_PARSE, у которого очень простой синтаксис: (далее…)

Грязные трюки при работе с ALV

Дано: есть вывод отчета в ALV, в котором стандартными средствами включен расчет среднего значения.

Итоговое среднее значение стандартно расчитывается так:

( 30 + 40 + 50 + 0 ) / 4 = 30

Предположим для примера, что в четвёртой строке нулевое значение связано не с нулевым значением, а с его отсутствием.

Соответственно от заказчика есть задание: требуется выводить среднее значение, не учитывающее пустые (нулевые) значения:

Один из способов решения задачи — грязно вторгнуться во внутреннюю кухню ALV. Приступим?

(далее…)

RTCM, UPL, SQLM и всё такое про мониторинг ABAP-систем

Обнаружил за последнее время несколько вещиц разной степени полезности.

RTCM

Транзакция SRTCM — Runtime Check Monitor.

Тут можно активировать пару проверок, которые можно упустить в статических проверках ATC (ABAP Test Cockpit). Одна из них — пустая таблица в FOR ALL ENTRIES.

Пишут, что оверхед не такой большой и можно оставить на несколько недель в продуктивной среде.

Мало ли, вдруг иногда бывает, но никто не знает. А быть такого не должно в обычной жизни.

UPL

Usage & Procedure Logging. Такая штука, которая должна по-хорошему работать через Solution Manager и SAP Custom Code Management. Там много данных и без BW-обвеса, который связан с SM, данные непросто анализировать, особенно не нагружая продуктивную систему.

Однако, при некотором желании его можно подёргать напрямую в системе. Но только в тестовых церях на свой страх и риск. Для этого необходимо запустить программу  /SDF/UPL_CONTROL. Транзакции, видимо, не предусмотрено в виду означенных выше обстоятельств.

Затем требуется подождать какое-то время и вам выпадет ошеломляющее количество инфромации:

Все ходы записаны, например: можно проследить, сколько кастомного кода реально работает в каких-то обозначенных ситуациях. И это не совсем то же самое что и ST03N.

SQLM

Насчет мониторинга SQL-запросов тоже есть полезные штуки. Прямо так и называется транзакция SQLM, то есть SQL Monitor, легко запомнить.

И если её оставить на какое-то время, то можно получить много полезной информации:

SFW5

В переключателях бизнес-функций SFW5 можно найти кроме всего прочего:

  • /SDF/WS_MON (Web Service Monitoring) — может и полезно будет когда-нибудь, но пока не буду активировать, ибо отключить потом нельзя, так как Non-Reversible
  • SRIS_SOURCE_SEARCH (ABAP Source Search) — пишут, что активирует построение полнотекстового индекса для исходного кода, однако работает только на HANA. Кроме того, запускать в рабочее время нежелательно, так что на заметку берём, но пока хватит старых инструментов.

PS.

SWLT

SQL Performance Tuning Worklist. А это уже маленькая вишенка на торте, в которой пытаются свести все концы с концами, а именно сопоставляют данные ATC и SQLM. Поэтому новых тайных знаний вы там не найдете, но есть небольшой шанс подхватить инсайт при сопоставлении.