• Как реализовать хранение изображений отдельно от кода и запрос нужного размера на лету?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Это болючая задача которую мне приходится решать на каждом проекте.
    "Готовое" решение для симфони - liip imagine bundle, но пока все конфиги изучишь - неделя пройдет.

    Я обычно подключаю вручную:
    1. свой класс отвечающий за масштабирование + обрезку + смену формата на webp
    2. 2 маршрута API - один называю blueprint, второй image. Блюпринт выдает JSON-ом все возможные ссылки с предустановленными параметрами, а image - отдает картинку
    3. и оборачиваю это в phpleague flysystem, чтобы при случае переключиться на амазоновское, дропбоксовое или свое собственное хранилище, а изначально использовать родную файловую систему
    4. для обрезки подключаю gumlet, он может не идеален, но немного проще чем использовать встроенный gd или устанавливаемый imagick, где придется учить настройки, гумлет все-таки немного преднастроен по качеству и сжатию (под капотом все равно gd или imagick используется, просто обертка)

    Вот пример на тестовом сайте:
    /api/v1/uploads/image/2024/02/000029_1605538227_415880_big1.jpg?presets=group.all
    /uploads/image/size-original/2024/02/000029_1605538227_415880_big1.jpg
    /uploads/image/size-jpg2webp/2024/02/000029_1605538227_415880_big1.webp
    /uploads/image/size-jpg2webp-100-100/2024/02/000029_1605538227_415880_big1.webp

    65f2b0d786d48373675526.jpeg

    Но там много моментов, которые так просто не описать.
    1. Во первых сначала масштабирование. Тут придется думать по длинной стороне, короткой стороне, или по aspect ratio.
    2. Потом обрезка, если идеально привести не удалось. Отдельно придется подумать где точка центра - вверху-центре или в центре-центре.
    3. Потом после обрезки скорее всего ты получишь raw content изображения, чтобы его сохранить в файл нужно его поймать ob_start()/ob_get_clean(), и обеспечить чтобы входящая ссылка всегда приводила к созданию картинки с тем же путем, и если она уже есть - не тратила время а отдавала готовую. Опять же - если сделать "произвольный размер" - то твой сервер очень легко нагнуть, сделав мини-ддос, чтобы он сгенерировал все возможные сочетания размеров от 0 до 2000 по X/Y, получится 4 миллиона картинок. Поэтому так или иначе надо предусматривать ключ или пароль, позволяющий это делать, чтобы снаружи не долбили ерундой.
    4. Потом форматы. Родное изображение было в .jpg, а итоговый хочется webp. Получается что итоговое изображение будет либо с двумя расширениями (и пхпшная функция pathinfo еще заставит попотеть), либо оригинальное разрешение будет получено из jpg2webp, а итоговое можно указать любое, но работать должно только если оно webp.

    В общем, гемор что надо тебя ждет. Но реализуемо.
    Ответ написан
    1 комментарий
  • Как узнать конкретный компьютер с которого подключились по rdp протоколу?

    @NortheR73
    системный инженер
    В системном журнале безопасности (Security Log) смотрим события 4624 (успешная аутентификация - An account was successfully logged on) или 4625 (ошибка аутентификации - An account failed to log on) с LogonType=10.
    В описании события имя пользователя - в поле Account Name, имя компьютера - в Workstation Name, IP-адрес - в Source Network Address
    Ответ написан
    Комментировать
  • Как узнать пользователя за каким компьютером работает из active directory?

    @NortheR73
    системный инженер
    Например, для единичного компа можно так
    Get-CimInstance –ComputerName CLIENT1 –ClassName Win32_ComputerSystem | Select-Object UserName

    Для множества компов - запихать вышеприведенный код в цикл и обходить все компы домена или выборочно по списку
    Ответ написан
    1 комментарий
  • Пару вопросов по использованию докера в продакшене?

    Griboks
    @Griboks
    Использовать докер в продакшене - нормальное решение?

    Да, но есть один нюанс... Судя по вашему вопросу, вы его точно не учли.

    Не упустил ли я какие-то важные команды, которые не используются при разработке, но нужны перед сборкой продакшена?

    Выкидываете build и git, создаёте docker registry, предварительно собираете образы (без гита, только полезные файлы в slim образе), пушите их в реестр, на проде прописываете нужные образы нужных версий. Поднимаете через compose + устанавливаете restart = unless stopped.

    после чего память на сервере закончилась

    Выкидываете git, делаете docker system prune раз в месяц, ставите в настройках демона ротацию логов.

    Автоматический бекап базы данных - ответственность самого сервиса (в коде делать дамп), докера (использовать какой-то image для бекапов) или сервера (непосредственно на сервере настроить крон)?

    Docker image не используется для бэкапов, потому что он не может изменять свои файлы. Файлы изменяются в контейнерах, volume или маунтах.
    Поэтому бэкап - это задача сервера. Только бэкапить надо не рядом с базой, а на другой сервер.

    Как не терять данные из бд при перезапусках контейнера?

    Контейнер не теряет файлы при перезапуске. Скорее всего, вы его тупо удаляете, а затем пересоздаёте.

    Но тк приложение работает в докере, я не могу выполнить nano app.logs для просмотра логов.

    Писать логи в другое место/ docker attach / docker cp / экспорт логов и метрик в сервис мониторинга.

    p.s.
    Вот вам линтер для обучения.
    Ответ написан
    Комментировать
  • Что учесть при поднятии домена на Windows Server?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Зайду немного с другой стороны и опишу неочевидные новичку вещи...
    1) Про "мощность" забудьте, она ниже плинтуса. Но нужен ли вам только контроллер домена? А будет к нему файловый сервер? А желателен ли ему дисковый кэш? А будет дедупликация данных и DFS?
    2) Да, старые ОС иногда есть смысл ставить сначала, создавать домен на них, но потом сразу и обязательно мигрировать на свежую ОС и выводить старый из работы. Иногда это решает проблему странных специфических глюков совместимости в разнородной среде. Но ваш ли это случай?
    3) Лишнего избыточного не надо, но второй обязателен. И если будут филиалы - функцию запасного можно засчитать как второй контроллер в другом филиале, но... Будет у вас сервер DHCP? А как он будет дублирован? В общем сперва подумайте, сколько конкретно ВАМ надо контроллеров.
    С виртуалками есть один нюанс - в домене время должно синхронизоваться, желательно И с внешним источником И внутри. Ставя машины на виртуалке, вы можете забыть снять галку "синхронизация времени", тогда ваша виртуалка станет жить не по времени домена, а по времени гипервизора. С печальным итогом... Еще не додумайтесь оживлять "консервы" - если контролер домена выбыл на ощутимое время из сети (например на месяц) - потом его лучше не возвращать. Он может попортить вам ключи шифрования в домене.
    Про линукс забудьте, вам и так проблем на первое время хватит...
    4) Характеристики, как я уже писал, пофиг, но если у вас есть DFS и есть несколько серверов с файловым ресурсом - то как минимум не должно случиться переполнения на меньшем по объему диске. А еще есть теневые копии. Стоит под них тоже рассчитывать пространство (например на одном диске в 5ТБ - выделить 1 ТБ, а остальные реплики DFS диски ставить по 4ТБ, но уже без теневых копий).
    5) Собственно даже если у вас не будет ни одного сервера на физической машине - ничего страшного в этом нет. Делайте как надо лично вам, рекомендации - просто для сведения.
    6) Операционки не имеют значения, но есть такое понятие, как режим контроллера домена - т.е. к первому 2012-му вы сможете потом добавить 2022, но к первому 2022 добавить 2012 не выйдет, если явно не ставить сразу старый режим.
    7) Много:

    Миграция пользователей - начинайте с молодых и однотипных.

    Перемещаемые профили. Раскурите. Очень хорошо потом помогает от воплей ВСЁ ПРОПАЛО! ВСЯ РАБОТА БЫЛА ТОЛЬКО НА РАБОЧЕМ СТОЛЕ! ДИСК СДОХ! ПОЧЕМУ МНЕ КУПИЛИ ДИСК, КОТОРЫЙ ЧЕРЕЗ 8 ЛЕТ СДОХ?! Есть минусы, но там не так всё плохо, и всё настраивается.

    Политики безопасности - ВНАЧАЛЕ продумайте, разделяйте и властвуйте. Это ОЧЕНЬ важно.

    Ни в коме случае не работайте под админкой администратора домена и не давайте ее пользователям. Организуйте группу локальных админов, которые могут админить только свои ПК. И лучше всего им запретить доступ на всё рабочие станции по сети (от сетевых червей спасёт). А для целей доступа админа по сети - лучше сделать третью группу (например для автоматизированного развертывания ПО).

    Сервер печати - сразу все принтеры собирайте на него и раздавайте их через политику. Не надо бегать к каждому пользователю.

    Сетевые диски - сразу разворачивайте через DFS и цепляйте через политики. Не делайте по старинке через "расшаривание".

    Резервное копирование данных - рассматривайте все, вообще все негативные сценарии, а не только отказ одного диска в RAID массиве. Это может и полный отказ массива, и вполне легитимное удаление данных пользователем, и работа злоумышленника (оборудованного ГОЛОВНЫМ МОЗГОМ), и шифрование в каникулы, чтоб к выходу с них у вас зашифрованные данные оказались и в резервной копии тоже, и т.д. и т.п.

    Удаленка - учтите ограничения программ, типа anydesk и сразу думайте про переход на серверы терминалов. А потом вы поймете, что пользователи ВСЕГДА сливают пароли. И к вам на удаленку полезут злоумышленники с головным мозгом. Поэтому для таких случаев двухфакторная авторизация (без паники, это бесплатно).

    Себе админку на удаленке не открывайте в интернет. Только VPN, IPSec, Wireguard и т.п.

    Гадящие мессенджеры и яндекс-диски - создают 100500 тыщ мильёнов файлов в профиль пользователя. Убираем из синхронизации с серверной копией сразу.
    Ответ написан
    Комментировать
  • Как работает Wins и DNS?

    Есть две разных задачи:
    1. Список обзора, его поддерживает служба обозревателя на которую давали ссылку выше. Список обзора поддерживается по каждому домену/рабочей группе. Это то, что вы видите когда открываете "сетевое окружение". Роль обозревателя выполняет один из хостов в каждом сегменте (обычно с наиболее свежей версией Windows и максимальным аптаймом, если его выключить - список может пропасть, т.к. анонсы рассылаются каждым хостом с некоторой периодичностью, через некоторое время будет выбран новый обозреватель и постепенно он соберет анонсы компьютеров сегмента). Соответственно этот механизм работает на броадкастах, Но при наличии домена, контроллеры домена собирают и реплицируют списки обзора по своим доменам между сегментами.
    2, Разрешение имени хоста в IP адрес. Здесь штатно в Windows используется три механизма:
    - DNS имя (ищется имя в домене к которому относится хост)
    - WINS (если он есть и сконфигурирован, то хосты динамически в нем регистрируются)
    - широковещательная рассылка (NBName)
    и файл lmhosts, где соответствия можно прописать руками
    DNS и WINS уникастны, если они есть, то их IP прописаны в сетевых настройках или получены через DHCP.
    Приоритет этих операций (например "сначала использовать WINS, если не получилось - броадкаст) задается параметром который называется "тип узла", им можно управлять. Если в вашей домашней сети нет домена или специально настроенного на динамическую регистрацию DNS сервера, то используется броадкаст.

    Но могут быть и другие механизмы, например если установлен iTunes/службы Apple то будет дополнительно использовать bonjour, это механизм на мультикастных рассылках
    Ответ написан
    Комментировать
  • Есть ли смысл делать анимацию без JS?

    SagePtr
    @SagePtr
    Еда - это святое
    Да, браузеры смогут оптимизировать анимацию средствами CSS и решать, с какой частотой её воспроизводить, в целях экономии ресурсов и батареи.

    При декларативном подходе (CSS) мы говорим браузеру, что именно сделать, а он уже сам решит, как именно сделать это оптимально для себя и для устройства, на котором он работает. При императивном подходе (JS) мы контролируем каждый шаг и не даём свободы, браузер вынужден делать то, что автор скрипта скажет, даже если ту же самую задачу он может решить лучше и оптимальнее него.
    Ответ написан
    Комментировать
  • Есть ли смысл делать анимацию без JS?

    neuotq
    @neuotq
    Прокрастинация
    Анимация = анимации рознь.

    Конкретный ответ со списком вы тут не увидите, это будет большая статья, со множественными "а вот тут", "но здесь" просто потому что многое зависит от контекста, задач, планирование.
    Главные рекомендации это не делать на js то, что отлично реализуется с помощью css. Этим к сожалению часто болеют многие фронтендеры, особенно из тех кто принципиально не любит вёрстку. Банальные примеры некоторые виды трансформаций объектов при булевых сменах какого параметра(условно навел/убрал наведения, вкл-выкл и тп).

    Но нужно иметь ввиду, что там где у вас выходит сложная логика, разные усложнённые сценарии, динамические параметры запуска и тп и тд. Без js естественно никуда.

    Поэтому просто зная возможности css, имея здравый смысл, вы будете видеть и знать где что использовать.
    К счастью css тоже в последнее время активно развивается давай нам всё больше возможностей.
    Поэтому - простая штука, что-то типа одноразовых анимации, простого повторения, туда сюда - подумать про css.
    Если к этому добавляются всякие реакции на сложные тайминги, старт-пауза перемотать остановить на промежутке и тп - js.
    Ну и безусловно разные сложные, многоходовки с завязкой друг на друга - однозначно js.

    В целом информации на эту тему достаточно в интернете, мудрить здесь особо не стоит. Поэтому повторюсь: просто здравый смысл и держать в уме знание css и не брезговать его использовать. Нередко кстати сами верстальщики уже готовят эти анимации, но это уже отдельный разговор организации команд и внутрипроектной кухни. Я сторонник того что фронтэндер, пусть и не обязан прям верстать верстать, но знать вёрстку/css должен на очень хорошем уровне.
    Ответ написан
    Комментировать
  • Как Кинопоиск делает черный квадрат в захвате экрана?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Тут прям все теории заговора придумали с DRM (хотя доля истины в этом тоже есть)

    но никому не приходило в голову что видео в некоторых форматах через оверлей отображается, который не попадает в скриншоты и в захват экрана тупо потому что через отдельный механизм видеоподсистемы компа на экране отображается? (и не для целей drm, а просто потому что так устроено)
    Я такие удивленные вопросы еще лет 15 на форумах читал, когда drm-ом еще и не пахло (массово), а mpeg-ускорители уже во всех практически видеокартах были

    в линуксе это работает в т.ч. потому что там видеоподсистема по другому работает и велика вероятность что ускорение видео тупо не функционирует
    Ответ написан
    Комментировать
  • Может ли физ лицо создавать интернет-проекты?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Создавать сайт не запрещено, и на это не нужно никаких специальных разрешений, получения лицензий или ещё каких-то бессмысленных телодвижений. Это же не медицинская деятельность, производство продуктов питания, строительство или банковское дело.

    Квалификация данных как персональных очень разнообразна, в некоторых странах под них подапают IP-адреса, электронная почта, куки итд. Также сложно сказать, что именно решит судья в тех случаях, когда сайт будет ответчиком или иной стороной в судебном деле. В России так особенно сложно.

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

    Кроме того, в некоторых случаях политика конфиденциальности требуется не для соответствия законам, а по правилам тех или иных сайтов и сервисов. Например, для прохождения review приложения в Facebook у него обязательно должна быть опубликована политика конфиденциальности. Когда мне потребовалось пройти этот квест (по работе), я взял текст с сайта своей компании и немного отредактировал, даже гуглить примеры не потребовалось.
    Ответ написан
    Комментировать
  • Может ли физ лицо создавать интернет-проекты?

    php666
    @php666
    PHP-макака
    Вопрос, на самом деле, довольно сложный, если у вас нет знакомого юриста.

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

    Пришлось срочно ознакомиться с вопросом "кто я" и "что я делаю" и заплатить за онлайн-консультацию у юристов.

    Советую автору зайти на правовед.ру и почитать то, что там накоплено в базе по ответам юристов. Ключевые слова: "информационный посредник", "политика конфиденциальности для сайта", "оферта для сайта" и тд.

    По поводу всяких политик конфиденциальности и прочего. Если вы более-менее выходите на уровень с вашим проектом, то лучше нанять юриста для написания документов. Сами вы качественно ничего не напишите как технарь.

    Нужно понять, кто вы с точки зрения закона - являетесь ли вы информационным посредником, прочитать про степень его ответственности. Ознакомиться с законом о рекламе. Ознакомиться с законом "Об информации, информационных технологиях и о защите информации".

    Почитайте текст от одного юриста с правоведа (Дмитрий Васильев) что он пишет в открытом доступе как реклама своих навыков: https://pravoved.ru/question/604239/ и отчасти ответы на банальные вопросы владельцев сайтов.
    Ответ написан
    4 комментария
  • Как захостить сайт на NodeJS на Windows сервере?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://tatham.blog/2011/03/16/node-js-on-windows/

    как то так. Единственно закройте все порты кроме 443 + 3389
    И поставьте запрет на логин всех кроме одной учетки через рдп и установите https://bite-byte.ru/operatsionnye-sistemy/windows...
    Ответ написан
    Комментировать
  • Как в Google Sheets вывести курс валюты по конкретной дате?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    У вас массив 2×2. Нужно получить значение из определённой позиции — для этого есть функция INDEX. Вуаля!
    =INDEX(GoogleFinance("Currency:USDRUB";"price";"20.10.2022");2;2)
    Ответ написан
    5 комментариев
  • Недостатки видеоуроков?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Нужен огромный и продолжительный труд, чтобы написать приличную книжку.
    Чтобы в ней было не 10 страниц, а много хорошего материала, с примерами, с задачами, с изложением. Оформить, вычитать, отредактировать, договориться с издателем, выпустить, получить какую-то отдачу.
    Хорошую книгу ты читаешь долго. Месяц, два, год. Перечитываешь.

    Текст ты читаешь в удобном для себя темпе, легко пересматривая и перечитывая абзацы.
    Остановившись на странице книги, ты можешь просто просмотреть глазом предыдущую страницу и продолжить чтение. С видео так не получается - из головы вылетает все, и надо просматривать как минимум пару минут перед этим, если отлучился на час-два.

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

    Также видео делать сложнее, чем писать текст. Гораздо дольше. Гораздо дороже.
    Редактирование видео вещь в разы более муторная, поэтому чаще просто переснимают короткие блоки, а это опять таки непросто.
    То есть сделать видео с таким же качеством материала и с такой же плотностью материала - в десятки раз дороже по всем ресурсам - деньги, время, оборудование.
    И при этом никто не будет смотреть месяц видео (160 часов, например). Никто не будет делать поиск внутри видео, закладки на нужные отрывки и использовать видео как справочник.

    Перенести материал из книги перенести в видео - это непомерный труд с одной стороны и совершенно невостребованный с другой стороны.
    А поэтому никто не делал, не делает и не будет делать видео с таким же наполнением материалом, как это можно сделать в тексте.

    Видео - это разок посмотреть на чей-то практический материал, разок посмотреть как это делает кто-то другой.

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

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

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

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

    P.S. Одним из самых важных минусов видео я считаю то, что ты не можешь получать информацию в комфортном для себя темпе, с возможностью быстро перечитать слово/фразу и обдумать ее. Сам читаю множество лекций, и эта проблема, когда скажешь 2-3 предложения быстрее, чем обычно и половина учеников отваливается с бессмысленным взгядом. Так на живом курсе ты можешь обратить на это внимание и перефразировать, а записанное видео уже не изменишь.
    Ответ написан
    1 комментарий
  • Что означает "!!~"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сокращалка, удобная для indexOf(), который возвращает -1 если не найдено, или индекс от 0 и больше.

    Для логики приложения часто бывает нужно узнать только, найдено или нет: т.е. -1 или иное значение. Можно просто сравнивать if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.

    Битовый оператор НЕ ~ хорош тем, что выделяет -1: только -1 с этим оператором даст 0. Прочие числа дадут какое-то ненулевое значение.

    ~(-1) === 0

    Остаётся привести значение из численного в булево. Для этого два воскл. знака — два логических НЕ.
    • для варианта «найдено» из числа от 0 и больше получилось тоже ненулевое число, и !! даст true
    • для варианта «не найдено» из -1 получится уникальный 0, и !!0 вернёт false
    Ответ написан
    4 комментария
  • Как получить SSL cертификат от Let’s Encrypt для MikroTik?

    Получится. А вот и скрипт который делает это автоматически https://github.com/gitpel/letsencrypt-routeros
    Можно выкинуть из него лишнее, если он делает больше необходимого
    Ответ написан
    1 комментарий
  • OpenSSH в Windows 10. По какой причине доступ запрещен?

    @MaxKozlov
    Добрался до компа, напишу уж тут :)
    В логах сервера видно что за проблема - не те права у того самого файлика, что я упоминал в комментарии
    debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
    Authentication refused.

    При подключении к OpenSSH-серверу, установленному, на win и использовании аутентификации по ключу, необходимо обращать внимание на два момента:
    1. Если пользователь админ - его публичный ключ должен быть указан в C:\ProgramData\ssh\administrators_authorized_keys
    2. Убедиться что владелец файлов *authorized_keys правильный: системных - система, юзерских - юзер, и без лишних доступов.
    Например, установить права для системного можно скопировав их с другого файла:
    $acl = Get-Acl C:\ProgramData\ssh\ssh_host_dsa_key.pub
    Set-Acl -Path C:\ProgramData\ssh\administrators_authorized_keys -Acl $acl

    Ещё в комплекте c GitHub идут специальные скрипты для тех же целей:
    FixHostFilePermissions.ps1
    FixUserFilePermissions.ps1

    Они что-то ещё в реестре вроде бы правят

    Вариант обхода настроек для этого файла -закомментировать в конфигах его упоминание:
    Match Group administrators
           AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
    Но это не рекомендуется

    Ну, и, как замечено в комментариях, необходимо убедиться в правильной кодировке файла
    https://github.com/PowerShell/Win32-OpenSSH/issues...
    Если коротко, то оказалось что кодировкой *authorized_keys по дефолту является UCS-2 LE BOM, вместо ожидаемого UTF-8. После смены кодировки все заработало так как надо.

    Мои лично файлы все в ASCII
    Ответ написан
    4 комментария
  • Как организовать хранение множества тегов в БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А что вам мешает в таблицу questions_tags добавить несколько записей с одним question_id и разными tag_id?
    Ответ написан
    2 комментария
  • Как правильно спроектировать БД?

    sarapinit
    @sarapinit
    Точу водой камень
    Если бд имеет поддержку json, то общие поля сделать полями таблицы, а добавочную часть положить в виде json в ещё одно поле таблицы.
    Ответ написан
    Комментировать