
Опять двойка 2030

против Энтропии

Довольно частая подстава, которую я наблюдаю на созвонах и прочих зумах заключается в том, что докладчику у которого расшарен экран надо быстро куда-то зайти, и он открывает свой текстовый файл на десктопе и копирует оттуда пароль, ибо такая привычка и традиция.
Может быть он бы его и запоминал, если бы к него не было шесть систем и в каждой надо менять пароль раз в месяц.
Так получается, что безопасность у нас в безопасности, хоть и держится на честном слове.
Один из простейших способов от этого избавиться — это завести для таких паролей BAT-файлик/ярлычок c примерно такой командой:
echo MySuperPass123$@|clip
Теперь для получения пароля нужно тынцнуть в этот ярлычок и текст появляется в буфере обмена.
Безопасность от этого не становится менее безопасной, файл с паролем по-прежнему лежит на рабочем столе, но зато ни у кого нет шанса его подсмотреть на созвоне.
С другой стороны в одном текстовом файле можно хранить десятки паролей, а места на рабочем столе не хватит для всех ярлычков.
Это конечно не избавляет вас от необходимости вести действительно важные пароли в какой-то отдельной защищенной штуковине. Просто у этих штуковин тоже свой компромисс между безопасностью и удобством.
PS. написал я эту заметку, и в тот же день случайно пастнул пароль в общий чят.
Вот иногда живёшь так, думаешь на автопилоте, что если начал новый LUW то это как портал в новую вселенную:


А вот нифига, LUW может быть и новый, стек вызовов начинается с %_RFC_START, однако определённые в TOP-инклюде глобальные данные группы функций никак не инициализируются:

Вот и получается, что LUW и Internal session это не одно и то же.
Удивляюсь стойкости SAP. Прошло 30 лет, а они до сих пор поддерживают эти функции для Dynpro.
https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/abenabap_dynpros_fields.htm
Это всё тянется из тех старинных времён, когда SAP работал в терминале и выглядел примерно так:

С тех пор мало что поменялось внутри, экраны устроены та же, всё фиксированной ширины, замкнутый цикл PBO/PAI. Поэтому для значения TRUE используется крестик [X], потому что именно так он отражался на терминале.
На экране пробел от подчёркивания отличить нельзя, поэтому поля содержащие только пробелы и подчёркивания считаются пустыми. И если поле обязательное, то в него нельзя ввести только символ подчёркивания.
Со знаком «равно», видимо, тоже связана какая-то история, могу вообразить, что на некоторых системах ещё не было такой кнопки как F4, или она использовалась для других целей, поэтому для доступа к средству поиска использовалась клавиша =, почему нет.
С восклицательным знаком наверно тоже связана древняя легенда, допускаю что Ctrl+A ещё не изобрели, поэтому разработчики придумали такой «трюк», чтобы проще стирать данные в поле.
Хожу на LinkedIn просто чтобы поиграть в Queens и Crossclimb (https://www.linkedin.com/games/), вот такое у меня daily routine, рекомендую.
И пока я входил и выходил, то случайно первым постом на странице выпал чей-то текст в две строчки с тезисом, что «Entry level job» должен иметь нулевые требования к опыту.
Просто так, безапелляционно, без оговорок, без контекста, с потолка.
И у поста десять тысяч лайков, тысяча комментариев и тысяча репостов. И все там такие дружно ему поддакивают.
Вот думаю что это? Та самая «левая повестка» или просто ограниченность кругозора?
Единственный ответ, который у меня есть: «Обсудите это с вашим терапевтом с нулевым опытом», но на LinkedIn так не принято.
А теперь подробнее…
(далее…)*---------------------------------- * (с) Слепаков *---------------------------------- DO. Это был тяжелый год Был он тяжелей, чем тот Неожиданно нам всем Много он принес проблем Но приходит новый год Он нам счастья принесет И я верю через год Дружно скажет наш народ ENDDO.
Слушаю последний выпуск подкаста:
https://radio-t.com/p/2024/07/27/podcast-920/ (тема про Haystack)
И там Григорий рассказывал про свою мечту, ну чтоб:
Удивительно, но SAP/ABAP-разработка пошла по этому пути давным-давно, но:
… и мне это скорее нравится, если бы не это, то я бы скорее всего свичнулся.
Интересный вопрос.
Если кратко, то может быть и можно, но всё очень-очень сложно.
Тут вопрос в концепции.
С одной стороны, любая программа ABAP работает только на сервере. SAP GUI работает на компьютере пользователя и отвечает только за показ результата работы и ожидание дальнейших инструкций от пользователя. Пользователь видит результат, нажимает кнопку, SAP GUI передаёт нажатие кнопки на сервер, серверная программа снова отрабатывает и даёт новый результат, отправляет его на просмотр пользователю.
Это круг PAI-PBO, который никогда не прекращается.
BTW, с точки зрения архитектуры SAP GUI — это «тонкий клиент», так как никакая прикладная логика на нём не работает, только красивое отображение и приём-передача информации на сервер и обратно.
С другой стороны, список последних введённых значений хранится только на SAP GUI (то есть на компьютере пользователя), и сервер ничего не знает про это. Так же как и не знает какого цвета кнопки. Вы можете сами включить в SAP GUI любую тему и поменять все цвета, но на работу ABAP это никак не повлияет, и сервер про это никогда не узнает.
С точки зрения ABAP-сервера, нет никакой разницы, выбираете ли вы значение из истории, или вводите его вручную заново, или вставляете из буфера обмена.
На практике существуют некоторые пользовательские функции, когда необходимо взаимодействие ABAP-сервера и SAPGUI-клиента:
Оно реализовано очень нетривиально внутри, можете убедиться.
Если поглядеть в класс CL_GUI_FRONTEND_SERVICES, например в метод CALL_METHOD, то окажется, что ничего просто так сделать не получится.
Вообще большой вопрос — умеет ли SAP GUI отдавать такую информацию или нет, документировано это или нет. В классе не видно ни одного метода, отдалённо напоминающего требуемую функциональность.
Тупик, приехали.
На крайний случай, если очень-очень хочется, чисто теоретически, можно найти на клиенте (компьютере пользователя) файл, куда пишется история, загрузить его в ABAP и распознать.
c:\Users\Ivan\AppData\Roaming\SAP\SAP GUI\History\SAPHistoryIVAN.db
Этот файл пишется в моём случае в формате SQLite, который неизвестно как разбирать, напрямую в ABAP его анализ невозможен. Ещё неизвестно, что за защита на нём стоит, потому что внутре данные покорябаны:

Тоже приехали.
На моей памяти это задача одна из самых невозможных. Хотя казалось бы…
Расходимся, или вам есть что добавить?
В последнем выпуске подкаста Radio-T ведущие снова спорили о пользе или бесполезности Code review: https://radio-t.com/p/2024/07/13/podcast-918/
Снова ничего нового, кажется, но ведущие соскочили на привычные рельсы, у меня было стойкое ощущение дежа-вю. В целом согласен со всеми участниками, но у меня своя правда.
Я в текущих своих условиях вижу один довод «за» — если есть процедура Code review, то я пишу чище.
Кстати, устоявшегося термина на русском языке так и не сложилось. Википедия предлагает сразу четыре варианта:
Просмотр кода, рецензирование кода, обзор кода, ревизия кода
и ни с одним из них я не сталкивался в жизни.
Серьёзные произошли изменения в PYPL он же PopularitY of Programming Language.

ABAP вскарабкался аж на 21-ое место!
Хорошо, что зарплаты не сильно зависят от популярности языков.