Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как настроить на одну директорию сервера Apache защищенным соединением?

Лучший ответ:
Можете попробовать letsencrypt, он поидее всё за вас должен сделать и в конфиг апача прописать сертификат.

Худший ответ:
А с чего Вы решили, что кто-то будет Вам инструкции писать? Это Ваш сервер, что нам нем лежит, то и отображается, никто никаких инструкций Вам писать не будет. 
Одну директорию перевести не получится - https это отдельный сервер с отдельным дополнительным набором настроек, касающихся шифрования, сертификатов etc. Его можно распространить только на одну директорию, но все равно это будет отдельный сервер.
Вопрос: Почему функция обработки ошибок по какому-то «соглашению программистов» должна первым параметром принимать/возвращать код ошибки, а не сообщение?

Лучший ответ:
Все очень просто.
callback-функция в ноде принимает переменное число аргументов. Если возможную ошибку передавать последним аргументом, то тогда для каждой API-функции нужно будет помнить фактическое количество аргументов callback функции, чтобы ошибку записать в нужную переменную.
Если вам это не нравится - используйте промисы.

Худший ответ:
Все очень просто.
callback-функция в ноде принимает переменное число аргументов. Если возможную ошибку передавать последним аргументом, то тогда для каждой API-функции нужно будет помнить фактическое количество аргументов callback функции, чтобы ошибку записать в нужную переменную.
Если вам это не нравится - используйте промисы.
Вопрос: Нужен совет по замене крона?

Лучший ответ:
php.net/manual/en/function.flock.php
Не изобретайте велосипед, все уже придумано до вас
запустился скрипт, лочит файл, если удалось, работает, нет, умирает
если время лока больше ХХХ то предидущий скрипт завис, насильно снимаем блокировку, работаем

Худший ответ:
В чём проблема сделать проверку в скрипте?
Например: 
Скрипт запускаем кроном каждую секунду. В самом начале скрипта, в базе указываем, что скрипт выполняется. После завершения работы скрипта, указываем в базе, что скрипт больше не выполняется.
И при каждом запуске скрипта по крону, проверяем значение и либо выполняем дальше скрипт, либо завершаем работу.
Вопрос: Почтовый сервер для дома?

Лучший ответ:
1. Без dns и подключения к интернету выйдет полная фигня, с работоспособностью 0%.
2. Сервер рекомендую для ваших нужд opensmtpd - простой и поддреживает все что нужно.
3. Для imap - dovecot
4. Для забора почты с внешних адресов - fetchmail по крону
5. Хранить почту в формате maildir, никакие базы для этого не нужны!
6. Бекапить - простым копированием ящиков-папок maildir, ну или прикрутить urbackup или bareos.
Для вебморды почты ничего не посоветую, так как не пользую.
На настройки обратить внимание, dkim + spf в dns! 
Самый простой выход, которым я пользуюсь давно, держать всю почту на яндексе, ставить слейв-сервер с отправкой почты через ключи dkim яндекса (они по api яндекса отдаются).
Итого, почта приходит на яндекс, мейл сервер тянет с нужных аккаунтов через fetchmail почту, сам раздает эти ящики по dovecot-imap, отправляет почту от имени домена, прикидываясь вторичным сервером. Получаем полностью функциональный сервер с возможностью отправки и хранения почты, а всю работу со спамом и вебмордами отдаем яндексу.

Худший ответ:
Тема именно изъезжена вдоль и поперек. Посмотрите гайды про корпоративную почту.
Вопрос: Как закрасить пересечение кругов?

Лучший ответ:
https://jsfiddle.net/space2pacman/806Lqys1/2/ закрашенный бордер
https://jsfiddle.net/space2pacman/806Lqys1/3/ закрашенная область
Данил Сысоев нет ничего не возможного ))

Худший ответ:
Думаю что здесь посредством css не обойдешься.
Я бы посмотрел на твоем месте в сторону SVG.
Вопрос: Как разделить файл между двумя подкачки чтобы интернет летал?

Лучший ответ:
Память надо добавлять, а не файл подкачки двигать.
По поводу файла подкачки - без разницы, хоть куда можете положить.И еще какой бразузер лучше поставить ? Да любой. Главное в современный интернет не лазить. Если есть доступ в интернет 2000х годов - самое то.

Худший ответ:
Софтвейрный 0-й рейд???
Да ты самоубийца?
Он и не эффективен и не надежен.
Браузер - любой из современных Firefox, Chrome....
проблема только в том, что для приемлимой работы браузеру нужно 2 Г.
и никакой рейд вам тут не поможет.
я бы на такое железо поставил бы https://www.bunsenlabs.org/
Вопрос: Какое второе высшее лучше подойдёт для карьерного роста программиста?

Лучший ответ:
Для дальнейшего карьерного роста по карьере программиста, то есть именно в этой формулировке, - нужно профессиональное образование программиста. 
Которое, в связи с быстрыми изменениями в отрасли как официальное высшее образование - бессмысленно.
Учиться далее нужно самому. Только самому.
Другое дело, если вы специализируетесь в какой-то там конкретной области и собираетесь заниматься этим и в дальнейшем. Тогда вам пригодится узкоспециализированное в этой области образование или курсы. 
Про восхваливаемую тут математику скажу как человек-программист с двумя математическими "вышками" - математика чуть похожа на программирование. Видимо, от того, что люди которые вам советую сами не знаю куда двигаться - они математику и советуют.
Да, она действительно похожа, но не более того.
Если вы не собираетесь разрабатывать фундаментальные алгоритмы навроде новым методов шифрования, то математика вам уже не нужна. Все что нужно программисту от математики это школьный курс + самый минимум сверх него: логика, аффинные преобразования (и то нужно далеко не всем программистам) и т.п. простые вещи, ради которых не стоит тратить время на вторую вышку. Вы вполне самостоятельно эти вещи освоите за пару месяцев.
Если бы это была первая вышка, то можно было бы порекомедовать математику.
Не столько ради самой математики, а ради умения работать с книжными знаниями, ради общения с коллегами-студентами и коллегами-преподавателями. Математика тут более-менее подходящая для программиста специализация.

Худший ответ:
Однозначно, математическое. Прикладная математика, например.
Вопрос: Возможно-ли подделать серийный номер macbook pro?

Лучший ответ:
Попробуйте обратиться в другой оф. сервис, позвонить в службу поддержки apple, написать письмо в американскую подержку и тд. Настаивать, на том что у вас есть чек коробка и тд. и что это не ваша проблема что он был активирован раньше, что вы им пользуетесь менее 3 лет и покупали новым. Серийник изменить можно, но нужна будет крышка под этот номер. И это будет мошенничество. https://geektimes.ru/users/macmachine/topics/
Скиньте мне на почту серийный номер, я пробью по базе apple когда он был актирован.

Худший ответ:
Подделать можно и гравировку и номер в информации о маке, но глупо предполагать что они не знают об этом. При включении мака (не заходя в систему) также можно проверять, и подделать это уже будет просто нереально. Кстати если вас спалят, то будете иметь дело с законом)
Вопрос: В чем проблема с Redis?

Лучший ответ:
нужно поставить еще https://github.com/phpredis/phpredis

Худший ответ:
отвечу, может кому поможет 
у меня такая проблема была на мас os
как вариант в конфигурации database.php поменять redis -> client с phpredis на predis
и после сделать composer require predis/predis

второй вариант утстановить через gihub расширение и добавить в php.ini 
вот как здесь
Вопрос: Разница npn и pnp только в направлении тока(э-к и наоборот)?

Лучший ответ:
да - только в этом.

Худший ответ:
В принципе разница только в направлении тока, но есть нюансы. Например в NPN-транзисторе носителем тока являются электроны, а в PNP-транзисторе - дырки (вакансии), которые менее мобильны. Так-что в общем случае NPN-транзисторы более высокочастотны.
Немножко о транзисторах.
Вопрос: Взял выделенный сервер в облаке. Доставил в него аппаратный рэйд 10. Зачем mdadm?

Лучший ответ:
Это просто означает, что у вас установлен пакет mdadm. Если созданных mdadm массивов там у вас нет, проверяться ничего не будет. Т.е. просто можно не обращать внимание.
Ну и к облаку сервер отношения не имеет, всё же, вероятно. =)

Худший ответ:
Варианта 2. Или у вас всё же софтверный рейд массив или же просто в имейдже у хетцнера оно стоит по дефолту. На всякий проверьте /proc/mdstat.
Вопрос: Можно ли сейчас заработать на вёрстке?

Лучший ответ:
По самой верстке, честно говоря маловато заказов, а конкуренция очень большая. Поэтому если есть возможность, учите CMS Wordpress. Понимаете, клиент хочет сразу готовый полнофункциональный сайт из одних рук, это слишком напряжно для него сначала искать верстальщика, а потом еще человека, который натянет верстку на ВП, а потом еще одного человека, который пофиксит недочеты двух предыдущих исполнителей. Теперь почти никто так не распыляется - хотят все и сразу. 85% заказов на верстку сразу требуют натяжку на Вордпресс. А если сама верстка и с учетом снижения цены в 2 раза, то на русских площадках Вы врядли заработаете 20 кусков.

Худший ответ:
Заработать нереально. Миллионы людей могут верстать, там учить-то нечего.
Вопрос: Каким плагином сделать такой слайдер?

Лучший ответ:
kenwheeler.github.io/slick - пример Center Mode

Худший ответ:
slick + CenterMode + centerPadding
Кружки по бокам и расстояния между ними расставляются обычным padding в css. Стрелки стилизуй тоже сам в css
Всё очень просто
Вопрос: Почему unsafe код небезопасен и его редко используют в C#?

Лучший ответ:
Редко unsafe используют - потому что нахрен он нужен в языке, который принципиально улучшен как раз тем что код полностью managled.
Уж всяко не в вашем примере, а ради задач посерьезнее стоит заморачиваться с unsafe.
А прямая работа с указателями исключена - потому что как раз именно с указателями в С++ случается чуть ли не больше всего ошибок у программистов.
Плюс хуже работает сборщик мусора, когда вы используете указатели.
Считаете себя крутым и пишущим без ошибок (хотя это и не так, 100% не так) и вам не нравятся ограничения C# - ну и не пишите на C#, в чем проблем-то?
Но возмущаться что в одном языке одна идеология, а в другом другая - как то странно.Зачем бы были нужны языки с одинаковой идеологией.
Они очень разные.
С# и C++ только по синтаксису сходны. 
Не нужно чисто механически привносить в один язык подход из другого языка.
 Т.е. есть ситуация - у меня есть класс с 150 переменными (int), я хочу непосредственно эти переменные менять, передавая её в другой класс
Вероятность схлопотать сторонние эффекты очень велика.
Класс это ведь не просто одна переменная как правило.
Если вы эту переменную инкрементируйте, состояние всего класса как то может сильно поменяться.
Если вы меняете напрямую, не давая классу это проконтроллировать - непонятно к чему это может привести.
НО мне что, 150 функций
А их и не должно быть у вас 150.
См. антипаттерн - класс Бог.

Худший ответ:
Кто триппером не болел - тот не гусар -)
Небезопасный код совершенно не страшен и даже совсем безопасен, если мозгов пишущего хватает на то, чтобы предусмотреть все последствия.
Как показывает практика - даже у старух бывают фейловые прорухи. Зачастую глобальных масштабов.
Как примеры - те же до сих пор появляющиеся уязвимости на переполнении стека и прочих классических штук времен Моррисона
Вопрос: Какой Macbook выбрать для разработки? Air или Pro?

Лучший ответ:
Мне интересно, те кто пишут "конечно же Pro", от чего отталкиваются? От названия или просто от того, что сами купили Pro и его советуют. Пишу, как владелец обоих ноутбуков. Имел возможность сравнивать их в лоб, не 10 минут "посмотреть у друзей", а работал на них довольно долго. Профиль - web-разработка и разработка мобильных приложений. Модели Macbook Air 13" mid 2013 Core i7/8Gb/512Gb. и Macbook Pro 13" mid 2014 Core i5/8Gb/256Gb.
По сути они с 2013 года практически не менялись, там разница в пределах 10-15% с моделями 2015-2016.
Так вот, у Pro только одно преимущество - у него потрясающий экран. Всё. Он тяжелее, горячее, меньше работает от батареи, жрёт больше памяти, имеет менее отзывчивый интерфейс. Всё это вытекает из большого разрешения. Да, это отличный аппарат, он даст фору многим. Но если в лоб сравнивать его с Air, при моём профиле работы - Air выигрывает Pro по всем параметрам, кроме экрана.
Так что не советую прислушиваться к тому, что без аргументов написано выше, это ошибочные суждения. Pro имеет смысл брать, если очень нужен супер-качественный экран. Было сложно от него отвыкать, возвращаясь на Air. Но работать за Air у меня выходит более эффективно за счёт моментальной отзывчивости.
Из Pro линейки стоит рассматривать только 15" 2015 с полноценным Core i7 и дискретным видео, ему есть что противопоставить остальным.

Худший ответ:
Что за бред, извините  (несколько ide`шек [а-ля intellij idea], запущенных одновременно, с довольно большими проектами). 
а если по существу то конечно же Pro, странно вообще сравнивать эти два продукта
UPD: для разработки подойдет любой мало-мальский ноут
Вопрос: Как определить модель мобильного устройства клиента на сайте?

Лучший ответ:
Никак.

Худший ответ:
правильная первая ссылка в гугле
stackoverflow.com/questions/29048494/getting-devic...
искать надо по "js get device model"
Вопрос: Куда попадают удаленные файлы android/windows?

Лучший ответ:
После удаления из корзины файлов в виндовсе куда попадают эти файлы?Тут надо просто понимать что такое файл и как работает файловая система.
Файл это некоторый объем данных имеющий имя.
Когда вы записываете его происходит несколько вещей -
1)Данные записываются на диск, в конкретные "ячейки" диска имеющие номера.
2)Файловая система записывает в базу данных информацию о том что файл такой-то хранится в таких-то ячейках диска.
Рассмотрим перемещение в корзину.Корзина это обычная папка.
Если вы удаляете файл в корзину вы просто перемещаете его в другую папку. Никакого удаления нет. Просто перемещение.
А вот когда вы удаляете файл полностью, без всяких корзин, происходит следующее - 
файловая система удаляет из базы данных информацию о том в каком месте диска хранится файл.
И это место диска объявляется свободным. В него можно записывать новые данные.
А сами данные как лежали на диске, так там и остались, и будут там еще неизвестно сколько времени, пока кто-нибудь не запишет новые данные по этим адресам.

Худший ответ:
Не в тему но всё-же прочитайте.
Как выполнить низкоуровневое форматирование жесткого диска, флешкиpcpro100.info/nizkourovnevoe-formatirovanie-hdd
Вопрос: И все таки с чего начать новичку?

Лучший ответ:
Для Android - Java & Kotlin в среде Android Studio, эмулятор Genymotion.
Для iOS - Swift в xCode.
На C# и Delphi, которые позволяют сегодня создавать мульти-платформенные приложения, писать не советую. Там очень много нюансов, которые ухудшают производительность приложения и ограничивают возможности. Пиши на родном для платформы языке.

Худший ответ:
Сделайте выбор в пользу  кроссплатформенных решений. React Native и Javascript к вашим услугам. Примеры приложений :Facebook,Instagram,AirBnB,UberEATS,Bloomberg.Нативные платформы хороши,но  не конкурентноспособны,в случае если хотите в фриланс.
Вопрос: Какие преимущества IP камеры над AHD?

Лучший ответ:
В ip-системах это можно решить как экранированной витой sftp или оптикой, на которую наводки не влияют. Как вариант дамп wireshark будет с чёрными вкраплениями. Ip сильно в системах из одной камеры и более 32. На 1 камеру рег - большой overhead. Более 32 тяжко с протяжкой. Нельзя в шкаф посреди объекта воткнуть коммутатор, а дальше гнать по одному кабелю.

Худший ответ:
Собственно проблема в том, что AHD, HDCVI и прочее - они все-таки аналоговые, и подвержены наводкам, что частенько и происходит.
В IP такого бы не было, кроме совсем тяжелых случаев.
Вопрос: Как сделать такой двойной box-shadow для кнопки?

Лучший ответ:
Используй псевдо-элементы : before, after

Худший ответ:
Используй псевдо-элементы : before, after
Вопрос: Стоит пойти на этот курс по JavaScript?

Лучший ответ:
По содержанию сухая теория из книг. Знания которые быстрей и эффективней получить бесплатно, изучая по книге. Не удивлюсь если написали по известной книжке, ничего от себя не добавив. Пустая трата денег. Сколько за такое берут если не секрет?

Худший ответ:
Программа курса выглядит отлично. Вот еще один хороший практический курс по JS.
Вопрос: Объясните, как сделать разделенный на две части border?

Лучший ответ:
Псевдоэлементами. Например.

Худший ответ:
:before, :after с градиентом в прозрачность.
Как-то так::before{
content: "";
display: block;
width: 3px;
height: 100%;
background: linear-gradient(to bottom,  #000 45%, rgba(0,0,0,0) 45%, rgba(0,0,0,0) 50%, #000 50%);
}
Вопрос: ККТ и Upwork: вопрос к тем кто работает — как выглядят документы от Upwork — услуги оказаны upwork или физлицам?

Лучший ответ:
Всё на самом деле совсем неоднозначно.
Де-юре договор Upwork - это агентский договор. Т.е. Upwork - это посредник между вами и клиентами. В случае агентского договора вы обязаны включать в налоговую базу то, что клиент заплатил вашему агенту.
Де-факто: вы не знаете точную сумму, которую клиент платит в Upwork. И налоговая никак не может её проверить. Т.е. если вы работаете по агентской схеме, то налоговая, получается, должна на слово верить вашим данным (скриншотам из Upwork). Есть мнения, что в случае проверки налоговая очень расстроится. Особенно если например произошёл скачок курса и налоговая база уменьшилась, потому что вы указали дату платежа, когда курс был на минимуме.
Поэтому многие работают по простейшей схеме - сколько денег упало на р/с, столько и декларируют. Эта же сумма подтверждается в Confirmation of Services. Лично я сам так и работаю уже 3 года.
А ещё всё очень сильно зависит от конкретной налоговой и людей. Если хотите 100%-ый ответ, то решайте этот вопрос прямо со своим налоговым инспектором.Upd.
Самый простой способ обезопаситься - работать по патенту. Там налоговая база не зависит от доходов и ничего декларировать не надо. Если к вам придерутся, то просто исправите КУДиР и всё :)

Худший ответ:
Всё довольно просто, никакой ККТ не нужно – это можно понять уже из названия ФЗ "О применении контрольно-кассовой техники при осуществлении расчетов в Российской Федерации". Строго это следует из статьи 1 пункта 2 ФЗ-54:2. Настоящим Федеральным законом определяются правила применения контрольно-кассовой техники при осуществлении расчетов в Российской Федерации ...
Расчёты осуществляет не фрилансер, а иностранное лицо Upwork на территории иностранного государства.
Вопрос: Какой wi-fi роутер обладает лучшей дальностью?

Лучший ответ:
adast, обычно проблема не в мощности роутера, а в мощности конечного устройства (ноут, телефон) — у него антенна слабее. В итоге вы получите хороший даунлоад и нулевой аплоад, и — как следствие — большие задержки при открытии сайтов, например. Есть даже рекомендация уменьшать мощность передатчика роутера в таких случаях.
Подборка статей на эту тему:
https://habrahabr.ru/post/149447/
https://habrahabr.ru/company/beeline/blog/251899/
https://help.keenetic.net/hc/ru/articles/213968749
https://help.keenetic.net/hc/ru/articles/213968709
https://habrahabr.ru/post/117761/
https://habrahabr.ru/post/317220/
Как создать стабильную wi-fi сеть в загородном доме?
Как создать стабильную wi-fi сеть в загородном доме?
Как собрать Wi-Fi для квартиры с непробиваемыми стенами?
https://toster.ru/answer?answer_id=897306
Какой роутер выбрать с минимальными потерями скорости?
Какой роутер выбрать с минимальными потерями скорости?

Худший ответ:
Какой wi-fi роутер обладает лучшей дальностью?Нет такой характеристики у роутера.
Вопрос не имеет смысла без указания клиентского устройства, т.к дальность в большей степени зависит от него, плюс условия.
Без точного описания задачи ничего посоветовать не получится.
Указанные вами модели не рассчитаны на большие дистанции, это домашние устройства -там всенаправленные антенны.
На большую дистанцию нужно смотреть модели с узконаправленными антеннами.
Вопрос: Как поднять себе зарплату?

Лучший ответ:
Хочешь больше зп?
Найди новую работуАПДТеоретически, нужно поговорить с начальством. Да
Только вот какой уровень переговорщика у тебя для таких разговоров должен быть - никто не знает.
Если у тебя есть лояльность к текущему месту работы, то можешь попробоватьПосле того как получишь предложение перейти на другую работу с повышением зп
Тк исхода твоего разговора с текущим начальством тебе никто заранее не предскажет
Даже теоретики в коментахАПД2
У прохождения собеседования есть еще преимущества
- ты получаешь подтверждение своей квалификации и необходимости тебя на рынке
- ты получаешь денежный еквивалент своей ценности
- ты получаешь повышение навыка прохождения собеседований - ето отдельный навык, который не часто пересекается с навыком программирование/разработка/администрирование/...
- в случае провала собеседования у тебя нет никаких побочных еффектов
- ты получаешь срез навыков необходимых рынку

Худший ответ:
Подходишь и общаешься.
Это нормальный рабочий момент.
Зачем париться?
Если руководство видит тебя полезным - и денег добавит и новые перспективы покажет.
Мне никогда не отказывали.
Вопрос: На сайте около 5-6 страниц, нужно создавать в базе для каждой страницы свою таблицу?

Лучший ответ:
Нормальная практика - создавать таблицы для сущностей, а не для HTML блоков (они вообще никак не коррелируют)
Один HTML блок может быть статичным, а второй затрагивать 5 различных таблиц - здесь нет никакой прямой взаимосвязи. 
Страница может быть полностью статичной, может полностью грузиться из одной записи в одной таблице(накидали в админке в редакторе верстку и сохранили в базу), может динамически загружать данные из любого количества (в зависимости от наших целей) таблиц, может..
В общем, правило - оперировать необходимыми логическими сущностями, а не HTML страницами или блоками.

Худший ответ:
одна таблица под страницы, одна таблица под блоки, ну еще можно выделить под слайдер таблицу в зависимости от реализации, и его функциональности
Вопрос: Как правильно IPSec over GRE или GRE over IPSec?

Лучший ответ:
Вбивание IPSec-секрета при настройке GRE-туннеля как раз даёт GRE over IPsec. Считаю это более правильным подходом, ибо нефиг провайдеру знать, какие туннели мы строим (хотя, да кому мы нужны )). При таком подходе летает чистый ESP. При любой из описанных Вами конфигураций, сети будут видеть друг друга при правильно настроенной маршрутизации. Считаю IPsec с интерфейсом гораздо более удобным и понятным, чем IPsec в туннельном режиме.

Худший ответ:
Если я правильно помню, то для gre требуются белый ип с каждой стороны и он не проходит через nat. Лучше сделайте чистый IPsec.
Вопрос: Есть альтернатива скриншоту из мака для виндовс?

Лучший ответ:
и чем же вам ножницы не угодили?
если сильно приперло сделать такой же функционал - можно обойтись powershell-овским скриптом (как раз сегодня нужен кому-то был скриншоттер)[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
function screenshot([Drawing.Rectangle]$bounds, $path) {
   $bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height
   $graphics = [Drawing.Graphics]::FromImage($bmp)

   $graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)

   $bmp.Save($path)

   $graphics.Dispose()
   $bmp.Dispose()
}

$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, 1920, 1080)
$a=((Get-Date).ToLongTimeString()) -replace ':','-'
screenshot $bounds "D:\screen-$a.png"
В коде надо поменять размеры экрана на ваши (у меня 1920*1080), а так же путь сохранения скриншота (например "c:\users\user\desktop\screen-$a.png" ) и сохранить скрипт под каким-нибудь именем,например c:\users\user\scripts\screen.ps1
затем делаем на рабочий стол ярлык powershell.exe и после создания оного дописываем следующие вещи : 
после powershell.exe в поле "объект" -ExecutionPolicy RemoteSigned -file c:\users\user\scripts\screen.ps1
В поле "быстрый вызов" - нужное вам сочетание клавиш. Помните правда про стандартные сочетания клавиш windows, alt+f4 не стоит назначать.
чтоб было понятно : это принтскрин который автоматом кидает на рабочий стол файл :D

Худший ответ:
Monosnap, либо Paint и Alt+PrntScr.
Вопрос: Переписать Javascript на PHP?

Лучший ответ:
кажется, что так:function byteArray2hexStr(array $byteArray): string { // <- вот так именовать функции не стоит, кстати.
    return implode('', array_map('bin2hex', $byteArray));
}

Худший ответ:
Переписать Javascript на PHP?
Перепишите.