Все мы так или иначе сталкиваемся с тем, что часто очень сложно объяснить словами задачу или проблему. Проблемы взаимопонимания всегда были актуальны и сложны, но в вайтишечке жизнь можно немного упростить, головную боль от игр в сломанный телефон уменьшить.

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

Получается два основных Flow

  • Сделать скрин - внести пометки - отправить клиенту
  • Сделать скрин - внести пометки - загрузить на хостинг - отправить ссылку клиенту (или группе клиентов), сохранить в CRM, прикрепить в публикации

Инструментов кое-как решающих эту задачу полно. Вроде уже во всех ОС можно сделать скрин экрана через PrnScr, выбранного приложения через Alt+PrnScr, в win10 можно сделать скрин отдельной области (Win+Shift+S). Можно скачать специальный инструмент, типа Jitsi, который будет помогать делать скрины, рисовать на них разметку и отправлять на свой сервис…

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

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

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

Во времена, когда я работал в https://catalogloader.com мы тоже долго страдали, искали… и нашли ShareX - абсолютно бесплатный, открытый и невероятно навороченный софт с множеством интеграций и кастомизаций. Он не только умеет делать скриншоты и позволяет удобно их редактировать, но и имеет дополнительные инструменты, как интеграцию с ffmpeg для записи видео/gif, “пипетку” для определения цвета, “рулетку” для проверки отступов и даже всякие интеграции в OCR… Умеет аплоадить куски текста (например на pastebin), умеет аплоадить любые файлы (удобно если вам нужно отправить большой архив или тестовую сборку софта). В общем после базовой настройки под себя в качестве скриншоттера он становится абсолютно незаменимым и быстро вызывает привыкание. Да и видео он пишет гораздо более компактное, чем множество аналогов (что особенно критично при отправке через почту, какой-нибудь вечно тормозящий MS Teams, при аттаче на сайты с ограниченным размером вложений).

“Из коробки” ShareX позволяет использовать для хостинга imgur, облачные сервисы типа DropBox, Google Drive, MS OneDrive… но всё это сторонние решения, привязанные к аккаунту, требующие дополнительных расходов за увеличенный объём хранилища при активном использовании.

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

ShareX умеет аплоад по FTP, в расшаренную директорию… и для клёвых котанов по SSH! Последним мы и решили воспользоваться - это удобно, безопасно и обеспечивается штатными средствами большинства серверов. В купе с собственным сервером это даёт полный контроль над файлами, возможность быстрого исправления данных предоставленных по ссылке. В случае если уникальность ссылки не обеспечивает достаточной защиты доступ можно дополнительно ограничить штатными средствами веб-сервера, предоставив клиентам логин/пароль.

В итоге есть

  • удобный скриншоттер
  • редактор скринов
  • запись видео с экрана (через ffmpeg)
  • загрузка кусков кода
  • загрузка любых файлов
  • кастомизация всех действий
  • возможность доработки под свои нужды

При этом

  • избавились от зоопарка
  • избавились от дублирования
  • избавились от лагов сервисов
  • размеры файлов не ограничены
  • файлы больше никуда не пропадают со временем
  • полный контроль над файлами
  • прямые понятные ссылки
  • защищённый аплоад через SSH с ключами
  • ломаться нечему
  • уязвимости сведены к минимуму
  • работает уже несколько лет без боли и страданий с обновлениями

Базовый конфиг ShareX

В меню Destination нас интересует Destonation settings - File Uploaders - FTP/FTPS/SFTP. Нажать Add и заполнить в соответствии с вашими данными

Настройки в принципе тривиальны

Затем указать в Destination что картинки, текст и файлы нужно загружать не на Imgur и прочие свалки интернета, а на наш настроенный File uploader

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

После нажатия PrnScr картинка открывается в редакторе для нанесения на неё заметок, затем результат копируется в буфер обмена (удобно быстро вставить в чат/письмо/документ), сохраняется в локальный кэш. Из списка файлов ShareX или даже ещё из редактора можно выбрать Upload и картинка будет загружена на ваш кастомный сервер. Можно делать это автоматически, если включить пункт “Upload image to host”.

Ну а для загруженных в сеть файлов удобно чтобы ссылка на них тоже сразу копировалась в буфер для отправки людям. При этом нормальные IM даже сразу превью постараются сгенерить для картинок нормальное

Ну и немного поправим именование скринов

Name pattern for capture: %y%mo%d_%h%mi%s_%ra{4}

Задаёт имя файла в общем случае (например если вы через меню выбрали Upload from buffer или через проводник Send To - ShareX)

Name pattern for window: %pn_%y%mo%d_%h%mi%s_%ra{4}

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

Дополняется всё это временем скрина и 4 случайными цифробуквами (%ra{4}) добавленными чтобы нельзя было спрогнозировать и подобрать ссылку за адекватные сроки. Доступ по ссылке есть только у тех, кому вы её передали сами.

Базовый конфиг веб-сервера

Конфиг apache прост и не интересен

<VirtualHost *:80>
    ServerName share.OURCOMPANY.com
     
    DocumentRoot /var/www/share
    <Directory "/var/www/share/">
        Options FollowSymLinks
        AllowOverride All
        <IfModule mod_mime.c>
            AddType application/octet-stream .txt .flag .cmd
        </IfModule>
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/share-error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/share-access.log combined
</VirtualHost>

Для текста и cmd мы специально подменили mime-type чтобы они отображались как есть прямо в браузере.

Скрины, видео отображаются браузером нативно, без баннеров, СМС, редиректов и прочей чепухни.

Посолить поконфигурить на свой вкус и можно работать)

Недостатки

Главный минус и боль: привыкание к инструменту. Например его пока ещё нет под Linux :((( Хотя ребята и пробуют портировать, видимо до переезда на MAUI и принятия в основную ветку наработок maui-linux придётся грустить и обходиться на Linux невзрачными аналогами