Pull to refresh
7
0
Дмитрий Булгаков @shane54

Exadata Oracle DBA

Send message

Прям как будто по Вашим словам сценарий - в этом году (2023) вышел фильм, Gran Turismo. Именно про Ваш случай (причём в трейлере сказано "основано на реальных событиях"). Как раз Ваша история - там типа собрали геймеров по всему миру, лучших, кто шпилил в Gran Turismo, из них отобрали лучшего, и засунули его в реальную машину, в реальную гоночную серию. В общем чтоб не спойлерить - вот описание, ну и там же трейлеры:

https://www.kinopoisk.ru/film/1044002/

С условием "1=1" в каждом запросе "для красоты" (для удобства последующего комментирования одного или другого условия WHERE) нужно быть осторожным, как минимум в Oracle иногда, в совсем сложных случаях, добавление условия "1=1" является "трюком", с помощью которого заставляют оптимизатор поменять свое поведение в ту или иную сторону. Не вдаваясь в детали, просто стоит помнить что "1=1" может иметь значение для выполнения конкретного SQL запроса.

И ещё вот такая мысль: в большинстве основных IDE есть кнопка "сделать красиво" - в смысле, запускается линтер и SQL запрос форматируется соответственно заданным правилам. На сколько я понимаю, нет единого стандарта для конфигов этих линтеров - в Toad for Oracle свой, в PL/SQL Developer свой, в Oracle SQL Developer свой, в IDE от JetBrains (вроде DataGrip) свой - и тд. (перечислил только инструменты для работы с Oracle, бо это моё направление). Так вот, при работе в команде, обычно же все должны следовать принятым стандартам - всякие Code Style Guide, именование версий, формат тикетов, комментов к коммитам и тд и тп. И вот для общего стандартного форматирования SQL запросов, конфиг файл с правилами для SQL линтера в IDE хранят и версионируют так же, как и другие такого рода конфиги. И новый член команды, приходя на проект и настраивая свое рабочее окружение, кроме всего прочего берет последнюю версию конфига для линтера и настраивает свою IDE "как у всех". И очевидно что проблема тут - поддержка всех разных форматов этих конфигов, если разрешено использовать IDE по своему вкусу. Будь формат конфигов стандартизирован, можно было бы и внутри проектных команд удобно и просто поддерживать свой SQL Style Guide, обновляя и дополняя его по ходу эволюции - так и "где-то в интернетах" могли бы накапливаться конфиги со всякими "стиль как в Google, в Facebook, в Microsoft" и тд - как сейчас есть различные Style Guide'ы по основным языкам программирования от больших компаний.

В упомянутом в статье обсуждении на Reddit (How do you format your SQL queries?), в комментах есть ссылка на библиотеку Poor Man's T-SQL Formatter - она представлена и в виде CLI, для подключения в системы сборки, в виде плагина для Visual Studio и SSMS - а также в виде online формы, куда можно скопировать "сырой" запрос и тут же увидеть результат. Повставлял туда запросы из комментов к этой статье - интересно, работает, можно всякие опции налету менять и сразу видеть результат. В общем, рекомендую пощелкать, интересно.

Правда, в описании этой библиотеки Poor SQL, автор честно признается - парсер на данный момент достаточно примитивный и множество функций не реализовано. Последняя активность в репозитории на GitHub около 2.5 лет назад.

И из этого же обсуждения на Reddit - ещё пара ссылок на релевантные статьи, чтоб уж всё полезное по теме собрать в одном месте:

Если кто сможет из видео распознать hex и сложить в текстовый документ, буду очень признателен. Лично я сломался после первых 256 байт и часа ввода.

Вроде звучит как достаточно лёгкая задача для распознавания с помощью OpenCV или подобных библиотек. Я сам далёк от всей этой темы, исхожу из того что читал. В данном случае же надо распознавать примитивный сегментный дисплей, а не породы котиков на ночном видео. Т.е. по идее это должно быть достаточно легко реализовать и получить достаточно надёжный результат, "без опечаток". Конечно, если опыта нет - лучше бы найти кого-то из единомышленников, кому и тема эта интересна, и чтоб "рука набита" на подобных задачах. Может даже можно записать целиком процесс (даже на телефон, закрепленый на штативе) и отправить этому "кому-то" просто видео (залитое на YouTube или в виде файла - тут уж исполнитель подскажет, как ему удобнее).

О, у меня тоже есть "пара воспоминаний и комментов" по теме активной удалённой работы ("удалённой" - не в смысле фриланса, а в смысле постоянного удалённого подключения к клиентским площадкам).

Итак. Будет немного сумбурно, но суть, надеюсь, донесу.

...

Ещё можно добавить раз надцать за день ввод 2FA паролей (цифр) из Google Authenticator (хотя я смигрировал все аккаунты в Microsoft Authenticator - но сути это не меняет, оба приложения полностью совместимые, так как реализуют TOTP/HOTP протоколы, просто утилита от Microsoft просто как приложение прикольней, что ли). Так же ввод цифр из приложения RSA SecurID и с физических RSA токенов. И не только RSA, есть ещё часто токены FortiNet, токены PaloAlto Networks, токены CheckPoint, всякие полу-noname токены - в общем, "тысячи их", Yubikey ещё с кнопочкой бывают, который недостаточно просто в USB воткнуть. В общем, мы на прошлой работе пришли к ящику на стене, типа как для ключей, открываешь дверцу - а там 30 или 50 разных токенов висят, с ярлычками, подписанные, какой для кого - разных форм, цветов и моделей, на гвоздиках, и у всех на экранах каждые 30 секунд пароли сменяются. Завораживает.

На счёт уникальных и экзотических VPN клиентов - часто они не совместимы друг с другом, каждый создаёт свой виртуальный адаптер, всякие CheckPoint так вообще позволяют админам, со стороны хоста, определить политики полного запрета на инсталляцию чего бы то ни было со стороны клиента. Чем эти админы с радостью и пользуются. Выливается это в то что после установки CheckPoint VPN клиента и первого соединения с удалённой стороной - он скачивает эту политику, применяет её - и все, ОС становится "заблокированной", для того чтобы установить даже WinZIP или любую другую мелочь, не важно что, любой софт - или чтобы даже Windows Updates установить - приходится сносить CheckPoint VPN клиент, перезагружаться, ставить что там нужно было поставить, перегружаться, ставить обратно CheckPoint VPN клиент, перегружаться, конфигурировать заного VPN профиль, соединяться в первый раз с удалённой стороной, он скачивает свой этот мерзкий профиль, применяет, конечно перезагрузка. Готово.

Да, стоит ещё упомянуть что часто для установки VPN соединения необходимо звонить (по телефону!) "на ту сторону" (часто в другую страну, на другую сторону Земли), и просить "открыть дверь" для такого-то аккаунта. Часто только менеджер или определённый список сотрудников имеет право на такой звонок (в смысла, позвонить то любой может, просто просить открыть доступ могут только сотрудники из официального утвержденного списка).

В общем, "в пике" у нас было 12 разных виртуальных машин, в каждой был установлен и настроен свой, *уникальный* VPN клиент. Каждый со своими приколами и особенностями. Так как с виртуалками параллельно одновременно работало 5-10 человек - умножаем 12 виртуалок на 10 человек - имеем 120 виртуалок для соединения с клиентскими площадками. Причём, из сказанного выше уже ясно, из-за уродства некоторых (многих) VPN клиентов, не все из них поддерживают Windows 10. Так что об унификации и стандартизованном администрирования можно забыть. Точнее, последние версии VPN клиентов то понятно дело все поддерживают десятку, другое дело что не все клиенты имеют право их использовать - не знаю, может у них там денег не хватает на лицензии, и они остановились на каком-то определённом уровне - без понятия, это большие конторы, что там у них происходит - тёмный лес, в смысле, инфы нет от слова совсем. И рекомендовать / просить / заставлять их обновить свой VPN Host - очевидно, разговор ни о чем. Т.е. выглядит это так - скачиваешь последнюю версию их VPN клиента с сайта вендора - клиент работает (запускается) на Win10, но не может соединиться с VPN хостом. Скачиваешь на 5 версий старее (ту версию что требуется установить по инструкции по настройке VPN от клиента) - на десятке не запускается, зато со свистом соединяется "с домом". Поэтому об унификации этого "флота" виртуалок речи не идёт - разные ОС, разные настройки, разные проблемы.. Да, в каких-то случаях нужно быть админом чтобы соединиться, в каких-то - нельзя быть админом, в каких-то - пофиг, проверки нет, пользователь может быть и таким и таким. Как уже упоминалось выше - некоторые виртуалки из-за ограничений установленного в них VPN клиента не дают даже Windows Updates ставить. Многие отрубают сеть (LAN) при установке VPN соединения (как упоминалось в статье). В общем, полный бардак, тёмное пятно на IT инфраструктуре весь этот зоопарк. Всякие там VDI решения тоже не годятся чтобы хостить всю эту кучу виртуалок - начинаются проблемы с конфликтами IP-адресов, некоторые VPN клиенты проверяют Windows ID (или Windows Activation ID, не помню, или BIOS ID, тот который можно было менять через какой-то cmdlet из пакета Hyper-V Tools for PowerShell, если это кому-то о чём-то говорит - реально не помню деталей). Потому что с точки зрения VPN хоста подключаются какие-то клоны, а это ни-ни. А так как в случае VDI все виртуалки работают из одного общего ISO образа (или VHD) - короче не канает, не завелось.

Касательно "любимого секретного файла с паролями" - я на KeePass (для статистики кто чем пользуется), уже много лет, лет 20 может, с самых первых версий - и уже тогда у меня в нем в базе была тысяча+ или больше записей (это именно моих, персональных, не по работе). Хотя видел и случаи "бумажка со всеми паролями от root, админскими и VPN аккаунтов от Prod систем под пластиковой накладкой на столешнице".

Еще можно вспомнить радости с RDP, если нужно поддерживать клиентов на Windows стеке - когда для коннекта через всевозможные виртуалки и Bastion-хосты приходилось делать RDP через RDP через RDP через RDP (больше 3-х или 4-х уровней/слоев не доводилось использовать), и посередине ещё VPN коннекты, ну или на последнем. И где-то посередине есть старый Windows (ака XP, Vista или 7) или Windows Server 2003 или 2008 - суть с протоколом RDP версии 6.1, 7 или 8 - появлялись scroll bars по высоте или ширине, или оба - то ещё удовольствие было, из-за разных разрешений экрана. С приходом Windows 10 и WS 2012 R2 (и выше) и протоколом RDP версии 10 - этот класс проблем наконец-таки разрешился. Лет 5-7 назад аж.

Хотя от человеческого фактора даже новейшие версии ОС не спасали. Ну например. Через 3 RDP коннекта, с отключенным Clipboard (ну конечно), на последнем шаге нужно вводить 16-символьный пароль, в котором 10 спецсимволов, и после пароля конкатенируется ещё пароль с токена (причём с софтверного, на телефоне, поэтому пароль символьный, а не цифры, и тоже конечно с кракозябрами). И на ввод даётся 30 секунд. Потом отлуп. И ввод каждого символа откликается на экране с 2-х секундной задержкой, потому что подключаемся к системе на другой стороне земного шара, у них там коннект через 3G свисток всего (!!) датацентра.

А потом нужно на 4-ом RDP сервере в цепочке коннектов сменить пароль. Потому что он протухает за 30 дней (спасибо что не за 3). И начинается - нужно ввести текущий, 16 символов, и 2 раза новый, тоже по 16. Что ты вводишь ты не видишь, печатаются точки (но есть иконка "глазик", можно вроде было нажать (зажать) и посмотреть, что там введено). Политика настроена так что новый пароль должен отличаться от старого символов на 10, пока выяснишь это эксперементальным путем, можно и час провозиться, зависит от стойкости нервной системы. Некоторые били клавиатурой об стол. Но понять можно - 3 раза ввести пароль по 16 символов, с 10 кракозябрами в каждом, с 2-х секундной задержкой на каждый символ - а потом увидеть любимое сообщение "Password does not meet complexity requirements...". И так 10 раз. 20 раз. Не каждый выдержит.

Да, тут нужно упомянуть одну вишенку на торте. Она чисто специфичная, местная, про то что описывается в этом комменте, надеюсь никого больше не коснётся. Описываемые события были в Германии, а тут клавиатура отличается. Как физическая - вместо QWERTY тут QWERTZ. Так и "логическая" - спец.символы (те что Shift+цифры, и правее до Backspace) не совпадают с английской раскладкой, и есть ещё несколько подарков "по краям клавиатуры", около Enter'а несколько клавиш имеют другое значение, и слева, около Shift'а и CAPS LOCK'а. Так вот, через RDP это даёт удивительные эффекты. А когда RDP через RDP несколько раз, и каждый "шаг" другая версия ОС и RDP протокола - это просто не поддаётся никакой логике. Также, начиная, кажется, с WS2012R2 появилась фича, что если ты логинишься по RDP, а на удалённой системе только английская раскладка сконфигурирована под тем аккаунтом что ты логинишься, но на локальной машине, с которой ты лезешь, у тебя в момент коннекта выбрана DEU раскладка (или RUS, любая) - то во время логина, твоя локальная раскладка "пробрасывается" на удалённый десктоп и автоматически инсталлируется / настраивается там. Но ты понимаешь это, только когда начинаешь вбивать пароли, которые ты не видишь (мы же смотрим в tray какая там раскладка сейчас включена только тогда, когда уже "что-то не так"). В общем, потому не все и могут вытерпеть такое издевательство, когда ты вводишь эти 16-символьные пароли, с 10 спецсимволами, и при этом ты вводишь совсем не то что нажимаешь. Надписи на кнопках не имеют отношения к тому что вводится, ведь в офисах немецкие клавиатуры, QWERTZ.

Вроде ещё что-то на языке вертелось, если вспомню - поделюсь!

А вот кстати. Я тоже привык уже длинные комменты к тикетам писать сначала в блокноте, а потом копировать в Jira, применять форматирование (хотя теги я и так давно выучил) и постить. А если короткие - то перед Submit все равно всегда Ctrl+A, Ctrl+C. Это уже давно как-то на автомате, не только в Jira, а вообще в любых формах. Что на работе, что дома, что на мобильных девайсах.

Но я вообще другое пришёл сказать. Я не спец по продуктам Atlassian, что Jira, что Confluence, что Bitbucket - я так, чисто пользователь. Поэтому я не знаю, это от версий зависит, или от каких-то настроек (разрешений) - но на удивление, продукты Atlassian удивительным образом надёжны в плане сохранения черновиков в формах. Сколько раз замечал - пишешь коммент к тикету в Jira, потом отвлекаешься - сессия заканчивается (нужно логиниться по-новой), перезагрузка браузера (из-за перезагрузки всего компа), перезагрузка серверной части Jira (после которой всегда все сессии сбрасываются и надо логиниться заново - как минимум, у нас так) - так вот, всегда, всегда запускаешь браузер, логинишься в Jira, находишь свой тикет, жмёшь Comment - открывается форма, твой черновик тут как тут. Магия!! В смысла, круто, это качественно. И если в Confluence, пока пишешь или редактируешь статью (или коммент), сверху постоянно выскакивает сообщение "Draft saved", "Draft saved" - то Jira все делает "тихо". Тихо, но качественно. В общем, мне очень нравится, это классно что такая надёжность реализована.

Скажите пожалуйста, вот Вы пишете:

Итак, у нас на руках — железный оракловский сервер, с которым что-то не то (но это не посыпавшийся раньше времени диск), на нём Solaris c базой Informix от IBM + пакет CMS от вендора.

Не совсем понятно - если это "оракловский сервер", то что там делает база Informix?

Но я на самом деле другое хотел обсудить. В нескольких местах Вы упоминаете "битый бекап", "плохой бекап", "бекап выглядит вообще как из /dev/random" - а можно чуть подробнее? Во-первых - размер бекапа - "похож на правду", т.е. в сравнении с размером базы (с размером датафайлов) - коррелирует? (с учётом возможной компрессии размер может отличаться в меньшую сторону в несколько раз, также возможны варианты в зависимости от стратегии бекапа - т.е. полный бекап будет "большой", если используются инкременты - они маленькие, если внутри бекапа (бекапсета) включены архивлоги - размер тоже может плавать. Ну и тд. Но в целом - если база 1 ТБ, а бекап - пара мегабайт, то обсуждать конечно нечего. К тому же, если внутри Вы говорите на глаз каша "как из /dev/random". Потому что как "выглядит" бекап внутри - известно, достаточно сделать бекап любой базы Oracle, открыть получившийся файл и посмотреть на него глазами - и сравнить с тем что есть у Вас. Там бинарный формат (если речь про RMAN), но структура похожа между базами - на первых нескольких экранах между "кракозябрами" будут видны строки с именем базы, DBID, именами тейблспейсов, схем, потом таблиц и т.д.

Ну и последнее - каким образом бекап делался? Если Вы говорите, там у Вас был Solaris - в нем есть такой же обычный cron как и в любом Linux / Unix. Т.е. Вы же видите, что cron вызывает, какие скрипты, и что внутри. Там вызов rman? А можно "осмотреть наружно", какой вызов команд RMAN использовался? Там будет нечето вроде блока run { allocate channel... backup as... delete.... и_возможно_много_чего_еще... }. Я к тому что скорее всего у Вас остались образы VM, в которых Вы и ваши коллеги боролись с этой всей аварией. Вдруг размер бекапа таки не пара мегабайт и более-менее похож на правду - может если с ним поработать, получится таки что-то восстановить. А то людей жалко, потерять пол-года критических для бизнеса данных - эх..

Тут есть такая тонкость — если создание таблиц и вставка данных будет выполняться не в текущей сессии, а например Data Pump'ом — то ему Вы не выставите параметр с помощью ALTER SESSION. Во-первых это просто невозможно, т.к. Data Pump сам подключается к базе (сама утилита impdp или impdp.exe, из командной стоки, при запуске утилиты), а во-вторых, т.к. Data Pump — утилита серверная, он порождает т.н. воркеры (DP Workers, процессы DWnn). И именно воркеры уже создают таблицы, вставляют строки и тд. И очевидно, новые процессы сами присоединяются к базе, и им команду ALTER SESSION нужно «подсунуть». Так что Ваш комментарий нужно немного подправить и уточнить вот так: можно не менять параметр NLS_LENGTH_SEMANTICS на уровне всего экземпляра базы (через INIT.ORA), а выставлять на уровне сессии, через ALTER SESSION, из триггера. Суть — создаёте ONLOGON триггер, обвешиваете его проверками, чтобы срабатывал только на нужные сессии (например, на упомянутые воркеры Data Pump'а, фильтруя по V$SESSION.PROGRAM и V$SESSION.MODULE) — и уже из него вызываете ALTER SESSION SET NLS_LENGTH_SEMANTICS=…

IMHO тема разобрана ну очень поверхностно. Имело бы смысл расписать IMHO как минимум что:


  • после выполнения ALTER TABLE с указанием "CHAR" для колонки, только новые значения (вставки/обновления) примут новый параметр и станут "Unicode-compatibe" с точки зрения длины сохраняемой строки — существующие строки не будут затронуты. И для того чтобы и их сделать такими же, требуется перестройка таблицы (ALTER TABLE MOVE, CTAS, DBMS_REDEFINITION, EXP/IMP), а это уже совсем другая история, порой очень большая и сложная (поэтому полезно думать заранее про семантику Byte/Char, в момент создания таблицы)
  • именно для того чтобы "не думать заранее", а иногда это и просто невозможно, если продукт не ваш и скрипты создания таблиц трогать нельзя — на уровне экземпляра базы выставляется INIT.ORA параметр nls_length_semantics=char, и тогда база сама дописывает во все определения полей семантику CHAR
  • есть множество зарегистрированных багов (на MOS) с семантикой CHAR — особенно со всякими вложенным типами (типы поля NESTED TABLE и TYPE, это когда "таблица в таблице" — в колонке содержится массив полей)
  • доходит до того что при выставленом параметре nls_length_semantics=CHAR, например, невозможно проимпортировать дамп базы (схемы) с помощью Data Pump — трюк заключается в выставлении nls_length_semantics=byte, затем импорт, и опять возвращение nls_length_semantics=char
  • тут кстати глубина глюков настолько велика, что хоть и параметр nls_length_semsntics динамический (ALTER SYSTEM), все равно необходима перезагрузка экземпляра чтобы импорт заработал

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


Ну и последнее — замечание что "во всех базах все ОК, а вот в Оракле приходится разбираться" — ну да, эта вся тема с семантикой — её просто нужно знать, что есть такая особенность, это просто опыт. Х

Да, я тоже, за все ~20 лет работы с базами Oracle ни разу не видел ни одной Production системы, где бы использовались N% типы. Т.е. они как бы есть, все про них знают, вопросы про них есть в сертификационных экзаменах, альтернативную кодировку указывают при каждом создании новой базы, но… Никто не пользуется. Потому что нет нужды. Всё и так хорошо сохраняется в обычные типы и Unicode корректно работает… При условии, конечно, семантики CHAR, о чем и статья.

Просто интересно, а откуда вообще такая задача «просчитать что будет, если вынести базу обратно на классическую архитектуру»? Ведь обычно же как раз наоборот бывает — «посчитайте нам, на сколько все станет хорошо если перенесём БД на Exa?».

По поводу статьи — все так, и определить вклад я вообще слабо представляю как (чтоб точно) — и роль Exadata Software и плюс ещё и роль Exadata Hardware, с учётом всех этих Flash Cache, Infiniband (и RoCE в X8M) и просто мега-быстрых SSD.

Давно ждал статью, где можно было бы задать давно меня интересующий вопрос (т.е. где бы вопрос заметили "люди в теме"): по долгу службы имею дело с (множеством) Oracle Exadata. Вкратце — Exadata — это решение от одного вендора (Oracle), когда вендор поставляет и hard и soft. Выглядит это как полноразмерная стойка (rack, 48U), забитая в зависимости от конфигурации, либо полностью (Full Rack), либо наполовину, либо на 1/4 или 1/8. В максимальную (Full Rack) поставку входит 8 DB серверов + 19 storage серверов (могут быть набиты HDD или SSD, соответственно вариант с HDD жрет больше электричества), и плюс мелочевка — 2 InfiniBand свича чтоб соединить все вместе, ILOM для управления. Все сервера забиты топовым железом — DB сервера, например, по 2 Xeon проца / 24 ядра каждый (384 ядер всего), Storage сервера — 912 ядер вместе, быстрая память, есть ещё специальные Flash модули на много-много ТБ (это и не RAM и не SSD — это "между").


В общем, сам вопрос. Вся эта радость требует 17.3 кВт на стойку. Больше 17 кВт — это ведь много, да? Я много статей тут на Хабре читал, про датацентры, их создание, управление, проектирование и вообще. И везде как-то около 5 кВт на стойку обычно шла речь. А тут больше 17 кВт.


Скажу больше — я и сам знаю, что 17 кВт — это много, но именно в случае с Exadata в каком-то смысле спасает возможность "собрать" ту же емкость/мощность из упомянутых выше 1/2, 1/4 и 1/8 конфигураций, стоимость абсолютно линейная. Т.е. если проект позволяет — так можно выкрутиться, хоть это и влечёт свои последствия — 2, 4, а то и 8 занятых стоек вместо одной, дополнительный overhead на администрирование, и тд.


Ну и если немного расширить проблему — в статье упоминается, как одно из решений проблемы особо "горячих" товарищей в ДЦ — раскидать их по разным местам. А что если клиент — большая организация, Банк там или Телеком, и говорит "хочу свои 25 Exadata в одном месте у вас в ДЦ поставить, чтоб в одну cage все стойки, и одним ключем все закрывать — иначе CISO не подпишет" — что тогда? "Дырочки в полу залепить" уже не выйдет.

А не легче ли (правельнее ли) сделать функционал отправки сгенерированных fingerprint'ов не по почте, а напрямую из приложения, может даже вообще в автоматическом режиме, если пользователь разрешил (галочку поставил где надо)? Либо приложение само генерирует письмо, либо, что ещё удобнее — стучится к Вам куда-то на торчащий наружу API и отсылает что надо. Просто лень непобедима, по себе сужу — упростив отправку fingerprint'ов, Вы сильно увеличите выхлоп от нас, от пользователей.
В том то и дело что WS2008R2 ещё ой как много где используется (сужу по своему парку)

IMHO связываться с администрацией GitHub и предлагать — только так, других путей полагаю нет. Так что только Вы (компания), как создатель продукта, должны/можете это инициировать и продвигать. Но, думаю, это не что-то невозможное — GitHub должен будет интегрировать PVS-Studio в свой pipeline — а у Вас все для этого есть, cli-версии всех необходимых инструментов. Так что мы (сообщество) были бы рады помочь, да только как!

Извиняюсь если уже предлагали — а была уже озвучена идея на GitHub сделать бейдж (зелененький такой) — типа "Проверено PVS-Studio"? Для проектов, которые действительно проверены и прошли проверку. Хотя тут конечно возникает вопрос, чем считать "прошли проверку" — нет предупреждений PVS-Studio вообще, или нет ошибок, но есть предупреждения — и т.д

Slack на Electron написан, разве нет? Вот первая же ссылка в поиске: electronjs.org/apps/slack. И, кстати, WhatsApp Desktop — тоже: electronjs.org/apps/whatsapp (тоже — в смысле, ещё один messenger, и тоже Electron). Кстати, пользуюсь обоими приложениями (на Windows) — из особенностей — только долгая загрузка, старт приложения. На не самом последнем ящике (рабочий Dell, какой-то i7 внутри, 8 GB RAM, Win10) — секунд 20-30 запускается что Slack, что Цапа
Мда, «круто». Наверно вариант как отследить эту заразу, если она работает — каким-то образом скриптами сравнивать состояние локального почтового ящика (OST/PST) и журналов на Exchange'е. Раз малварь подтирает свои принятые мейлы с командами и отосланные мейлы с украденной информацией/статусами — все равно эти письма прошли через Exchange и до туда малварь дотянуться не может. Значит есть дельта. Но отслеживать такое, если ящиков/пользователей тысячи… Хотя если все можно делать со стороны Exchange — может и не так уж нереально. Если то что у пользователя в Outlook (в OST файле) «видно» со стороны сервера — тогда можно сравнивать с журналами транспорта, тогда все реализуемо. Поправьте если не так.
Это дословный перевод просто. Речь про «Perfomance Review», что суть есть ваши успехи и достижения, степень закрытия под конец периода установленных вначале работы неких метрик, каких-то глобальных проектов, задач, знаний/умений и тд.

Information

Rating
Does not participate
Location
Frankfurt am Main, Hessen, Германия
Date of birth
Registered
Activity