Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как добавить свойство в меню редактирования элемента?

Лучший ответ:
Ошибки в js видимо, ставьте обновления или пишите в ТП

Худший ответ:
Как вариант, обратиться к разработчику вашего проекта. А так да, походит на то, что не отрабатывает javascript. Можно посмотреть, что прилетает в ответе после клика на "шестеренку". Так при нормальной работе в ответе есть последняя строка в виде кода js, которая отвечает за вывод кнопок . А сам шаблон выводимой формы находиться в файле bitrix/modules/main/interface/settings_admin_form.php. Также можно посмотреть в консоли на предмет ошибок .
Вопрос: Делаете ли вы скидки своим клиентам?

Лучший ответ:
Нет. Если он начал с тобой работать за определенную сумму и его все устраивает, то для чего делать скидку?
Возможно только если объем работ будет достаточно большой, не просто так не нужно делать

Худший ответ:
если просит даю 10%
если не просит не даю
Вопрос: Как сверстать переход между блоками в виде волны?

Лучший ответ:
svg + box-shadow
https://tympanus.net/codrops/2013/10/03/a-collecti...
https://tympanus.net/Development/SectionSeparators/
вот эту волну svg-шкой, а здание ниже и текст div2 через margin-top приподнять
ps: но ввиду особенной геморройности я бы сделал картинками :)))

Худший ответ:
Легко же. Берешь PIXI.js, добавляешь две группы, в каждой нужна картинка, создаешь маску для картинки, где одна сторона будет волной (это синус от точки на горизонтали). Далее добавляешь к нему некое изменяющееся значение,  пихаешь в ticker или в requestAnimationFrame, зацикливаешь и получаешь крутой аниммированный бэкграунд. И тот див тоже можешь двигать, ведь нужную точку ты будешь знать (выбери подходящую из тех что сгенерировал синусом), привяжи положение дива к этой точке, и получится вообще крутяк!
Вопрос: Почему выполнение скрипта всегда идет по ветке ELSE?

Лучший ответ:
grep -q всегда пустая строка, [ -n '' ]всегда будет false
Если нужно проверить exit code, можно сделать if cat /etc/passwd | cut -d: -f1 | grep -q "$CUSTOM_USER"; then
Вообще grep не очень подходит для определения наличия пользователя, лучше сделать if id  $CUSTOM_USER &>/dev/null; then

Худший ответ:
а почему должно быть не false?if [[ -n  `id $CUSTOM_USER 2>/dev/null` ]]; then
Вопрос: Как поставить лайк в вк с помощью curl?

Лучший ответ:
В целом правильно, но строго говоря не параметры, а URL HTTP-запроса, все его заголовки, тело если POST и параметры если GET, и как отследить это тоже вопрос, способов много, на Windows удобнее всего Fiddler, но можно использовать например отладку в Chrome DevTools, простейший сниффер пишется самостоятельно в десять строчек кода, если работали с AJAX и вообще Front-end то будет гораздо проще.

Худший ответ:
С помощью curl вы поставите его только через API, в частности с помощью метода https://vk.com/dev/likes.add
Вопрос: Сервер nginx + php + net core возможно ли?

Лучший ответ:
Достаточно приложение на дотнете собрать с совместимым COM интерфейсом: https://docs.microsoft.com/ru-ru/dotnet/csharp/pro...
Потом такой код запросто подключается в пых: php.net/manual/ru/class.com.php

Худший ответ:
Звучит несложно. Не специалист по .net core, но думаю на нём можно организовать простенький http сервер, повесить его на любой порт, а в nginx проксировать запросы в локейшн /blabla/ в этот дотнет, дотнет уже будет отдавать json или что вам там нравится. В пхп отдавать js, который будет ходить в /blabla/ за json и рендерить ваши данные.
Вопрос: Зачем использовать private static в методах PHP?

Лучший ответ:
Он будет работать в пределах класса MyClass.

Худший ответ:
Чаще всего такое поведение наблюдаю в реализации паттерна синглтон https://refactoring.guru/ru/design-patterns/single...
Вопрос: Как получить следующее значение в массиве?

Лучший ответ:
/**
 * @param {string[]} items 
 * @param {string} element
 * @return {string}
 */
function getItem(items, element) {
  return items[items.indexOf(element) + 1] || items[0];
}
Но, как и написал Илья Герасимов, если в массиве будут одинаковые наименования - работать будет не корректно

Худший ответ:
И желательно с заданиями на фриланс.
Вопрос: Как разрешить доступ Open Server'у к файлу hosts?

Лучший ответ:
Дима, тебе нужно сделать свою учётку владельцем файла, применить. Закрыть диалог. Потом снова Свойства - Безопасность - Изменить - Добавить свою учётку с полным доступом.
Это если очень надо, чтобы openserver мог вносить изменения, а так, чтобы попроще - то решение Nik Gubin тоже подходит.

Худший ответ:
Как альтернативное решение: можете в настройка OpenServer на вкладке "сервер" поставить галку "Не вносить изменения в HOSTS файл" и вносить изменения в хост самостоятельно руками. У меня на работе права админа есть, но владельца у hosts изменить нельзя. Выше написанное решение спасло.
Вопрос: Зависит ли нагрузка на Wi-Fi точку доступа от выбора маски подсети (например: «255.255.255.0» и "0.0.0.0")?

Лучший ответ:
Нет, это вообще никак не влияет.
Единственное что приходит на ум - широковещание, ну так оно и в небольшой сети может зашкаливать.

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

Лучший ответ:
Смотри "Cel shading"

Худший ответ:
Этот мульт -- 3д.
https://www.youtube.com/watch?v=XbFiQJOD2Pg
Вопрос: Как составить запрос выбора из двух таблиц?

Лучший ответ:
Гугли JOIN. 
При такой структуреproduct.id
product.title
product.seller_id

seller.id
seller.name
seller.cat_id
Запрос будет видаSELECT * FROM product 
LEFT JOIN seller ON product.seller_id = seller.id 
WHERE seller.cat_id=1

Худший ответ:
Скорее всего нужно использовать JOIN, если таблицы oc_ms_product и oc_ms_seller  связанные между собой ключами
Вопрос: Как вывести таблицу с обращениями из логов к множеству сайтов по IP / Useragent?

Лучший ответ:
Почитайте про ELK, возможно это то, что вы ищете.
Видеообзоры с примерами:
https://www.youtube.com/watch?v=Kqs7UcCJquM
https://www.youtube.com/watch?v=4X0WLg05ASw
https://www.youtube.com/watch?v=Hqn5p67uev4

Худший ответ:
Еще вариант вывода нашел, тоже без вывода названия файла лога / домена:{ command1 ; command2 ; command3 } > output.txt
Вопрос: Как правильно сегодня собрать браузерный ES6?

Лучший ответ:
На webpack стоит переходить хотя бы ради адекватной инкрементальной пересборки в watch режиме и горячей перезагрузки работающей одинаково для всех браузеров.
Вместо babel лучше использовать typescript в режиме совместимости с js для старого кода (babel генерит совсем уж шайтан кашу и гораздо медленнее собирает). 
Новый код сразу на typescript писать. (подсказки в ide на выводе типов и @types/* для библиотек здорово ускоряют процесс написания и частично компенсируют отсутствие тестов в проекте, если за них не платят - то есть всегда :( )
Даже если ориентируетесь исключительно на новые браузеры, всегда стоит использовать транспиляторы на этапе сборки (typescript умеет это делать без записи выходных файлов) чисто ради проверки корректности кода и соответствия типов (уже это поможет выкинуть половину тестов из обычного js, ибо не зачем проверять в рантайме то, что уже проверил транспилятор).
Ну и опять же идеология webpack что все есть модуль (не зависимо от типа файла) и может подключать другие модули хоть и кажется по началу диковатой, но на практике оказывается гораздо удобнее в применении. 
Примеры 
- парсинг и преобразование файлов локализации на этапе сборки и распихивание переводов сразу в результирующий бандл.
- усечение файлов иконочных шрифтов, на основе используемых в коде классов.
- CSS Modules

Худший ответ:
На вебпак переходить не обязательно, трaспиляцей там занимается тот же babel. Но не помешает:)
babel-preset-env умеет использовать browserslist примерно так же, как это делает postcss.
Вопрос: Нужно ли все запоминать когда учишь HTML/CSS?

Лучший ответ:
Вы так говорите, будто есть какой-то особый рецепт создания регистрационных полей. Учите общие принципы и не стесняйтесь заглядывать в справочники.

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

Лучший ответ:
Для начала, в виде вводной и разминки, я бы посоветовал книгу "Удовольствие от X" известного математика Стивена Строгаца. Она просто и самое главное интересно рассказываем разные темы математики.

Худший ответ:
Можете здесь посмотреть, например.
Вопрос: (php+mysql) Как сделать масовые update данных в таблице?

Лучший ответ:
Транзакции, пачками по 300-500-1000, надо подбирать лучшее значение перебором, другого вроде ничего не придумали пока. И что за апдейты которые на 200к занимают час? Нормальный запрос выполняется 0,001 сек, на 1000 уйдет секунда, значит на 60к нужно минуту времени. 150к максимум 3 минуты. Возможно что с базой что-то не так, проверьте скорость работы update, сделайте explain, посмотрите какие индексы нужно добавить.

Худший ответ:
Я делаю так, если нужно очень много обновлять:
* сначала создаём временную таблицу с двумя полями: Id, balance: create table users_update_tmp(
  id,
  balance,
  primary key (`id`)
), тип таблицы и тип полей такие же как в "users";
* данные сливаем в временный csv-файл;
* затем делаем "load data local infile" из csv-файла во временную таблицу;
* затем обновляем целевую таблицу: "update users inner join users_update_tmp on users.id = users_update_tmp.id set users.balance = users_update_tmp.balance";
* затем удаляем временную таблицу;
* удаляем временный файл.
Не забудьте только повесить ключь на поле id во временной таблице, чтобы джойн в команде update работал эффективно.
Несколько миллионов кортежей такая схема переваривает легко. Самое тяжелое - слить данные в csv-файл.
Вопрос: Как сделать чтобы ноутбук не засыпал при закрытии крышки если подключен второй монитор?

Лучший ответ:
Создаем два плана электропитания - для одного и для двух мониторов, где настраиваем поведение крышки ноутбука и прочее. Затем в командной строке выполняем команду:powercfg /list
Она выдаст список планов с их GUID. Далее качаем nnCron, ставим как приложение, добавляем в автозапуск. В кронтаб добавляем следующую задачу (указав там GUID своих планов):#( Задача_103415092018
SingleInstance
WINAPI: GetSystemMetrics user32.dll
0 VALUE LastMonitorsCount
Action:
BEGIN
    80 GetSystemMetrics
    DUP LastMonitorsCount <> IF
        DUP 1 = IF
            \ Здесь указываем GUID плана для одного монитора
            START-APP: powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
        ELSE
            \ Здесь указываем GUID плана для двух и более мониторов
            START-APP: powercfg /setactive 238c9fa8-0aad-41ed-83f4-97be242c8f20
        THEN
        TO LastMonitorsCount
    THEN DROP
    5000 PAUSE
FALSE UNTIL
)#
Задача автоматически запустится в начале следующей минуты и будет работать в фоне, проверять раз в пять секунд, изменилась ли конфигурация мониторов и применять соответствующий план. Нагрузки на проц там доли процента.

Худший ответ:
Действие при закрытии крышки нужно отключить в настройках электропитания, там же и действие при нажатии кнопки питания настраивается, короче крышка это как кнопка питания, ACPI действие.
А то что выше написал товарищ - это по таймауту засыпание выключил.
Вопрос: Как получить комбинации из символов в php?

Лучший ответ:
Перебор возможных значений в PHP?

Худший ответ:
так в вложенном цикле же
или рекурсивно
Вопрос: Как проходит процесс оплаты услуг на фрилансе?

Лучший ответ:
Предоплату просить, если не соглашаются — сервисы безопасных сделок, их тьма. Пользоваться водяныными знаками (тут зависит от того, чем вы занимаетесь), никогда не высылать материал вперед оплаты. Не разговаривать по телефону, а фиксировать все письменно, хорошо заполнять ТЗ и оговаривать правки. 
• webmoney
• яндексденьги
• перевод на карту

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

Лучший ответ:
[a-z0-9]*[0-9][a-z]*
или
[a-z0-9]*(?=<)

Худший ответ:
Спасибо Дмитрий  за правильное решение 
(([a-z]+\d+)|(\d+[a-z]+))[a-z\d]*
Вопрос: Потери между Хецнером и Ростелекомом, что может быть?

Лучший ответ:
У вас в маршруте встречается 100... Это "серая" часть РТ. Появилась в прошлом году для "старых" сегментов. Нужно переходить на "новые" технологии — вернут нормальную магистраль.

Худший ответ:
у хетцнера проблемы с роутерами со вчерашнего дня. Возможно это причина вашей проблемы
https://www.hetzner-status.de/en.html
Вопрос: Какие из нижеперечисленных данных можно отследить?

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

Худший ответ:
ip адрес и юзер-агент.
Вопрос: Оптимальный RAID для NAS?

Лучший ответ:
А зачем вариант "Б"?
Вариант "А" для вас полностью оптимален.
Тем-более, диски работают не так что: поставил и забыл (диск сдох, заплакал).
NAS's умеют предупреждать если с диском что-то не так. Та и тем-более диски сделаны не из ваты, если брать новые диски (не Б/у) то они спокойно прослужат вам долгие-долгие годы.
Для NAS я лично от себя, рекомендую вам Western Digital RED. Это специальная серия дисков, выпущенная компанией Western Digital для хранения данных. Эти диски максимально отказоустойчивые. Могут работать 24/7, как заявляет производитель, время работы до окончание отказоустойчивости 1 000 000 часов!(если я не ошибаюсь) при чём 24/7. Так что не парьтесь, а даже если диск начнёт выходить из строя, NAS об этом предупредит, и вы сможете спасти свои файлы не получив даже минимальных потерь.
Всего доброго. ;)

Худший ответ:
Наличие RAID не отменяет необходимости полного бэкапа в отдельное место (крайне желательно!!!!!!!)
А то подхватите вирусню, шифровальщик, или raid контроллер подохнет.... и останитесь с живыми дисками без инфы...
Вопрос: Принцип работы VeraCrypt?

Лучший ответ:
Не очень понятен вопрос. Вера ставит драйвер работы с диском. Когда диск смонтирован, для любого приложения, работающего штатным образом с диском, шифрование/расшифрование данных происходит прозрачно, так как Вера всё это делает на более низком уровне. Данные, разумеется, пишутся сразу уже зашифрованные на диск.
Попытки читать с диска напрямую ничего не дадут -- будет прочитана зашифрованная информация. Шифрование в целом защищает от НСД в случае наличия у потенциального злоумышленника физического доступа к НЕСМОНТИРОВАННОМУ носителю. Т. е. от таких ситуаций, как утеря или кража носителя или всего компа. При работе, естественно, данные расшифровываются при доступе к ним, иначе как с ними работать вообще? Но в целом, если атака таргетированная (т. е. не метод широкого бредня, а именно ваш конкретный диск), то ничто не мешает врагам поставить троян на комп и читать носитель после того, как вы его смонтировали. Либо сдампить из RAM ключ шифрования, а затем, после получения каким-либо образом доступа к физическому диску, расшифровать его, пользуясь этим ключём.

Худший ответ:
При монтировании в системе создается обычный логический диск, с которым может работать любая программа. Фишка в том, что смонтировать и получить доступ без пароля нельзя
Вопрос: Как осуществлять авторизацию в SPA, если бекенд находится на другом домене?

Лучший ответ:
Авторизационная кука должна быть доступна для обоих доменов
В Вашем случае - домен у куки должен быть ".dom.com" - точка в начале обязательна
Сама сессия должна хранится в общем хранилище, к которому и фронт-энд и бек-энд имеют доступ (типа мемкеша или редиса).

Худший ответ:
Читайте про CORS, сервер должен поддерживать запросы их
Вопрос: Как подключить два разных файла с одинаковым именем?

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

Худший ответ:
Изменить имя локального файла.
Вопрос: Преобразовать целое тысячное число?

Лучший ответ:
Разделить на 1000, округлить до одного знака после запятой, приписать букву К

Худший ответ:
Более конкретное условие нужно.
Если просто, то примерно так https://jsfiddle.net/Politonius/6cyzo5ju/
Вопрос: Калькулятор покрытия площади плиткой и бардюрами на Vue.js?

Лучший ответ:
1. Можно даже динамисески создавать все списки)
https://ru.vuejs.org/v2/guide/forms.html#%D0%92%D1...
2. Смотреть что что-то изменилось и пересчитывать всё
https://ru.vuejs.org/v2/api/#watch
p.s. Но лучше записать в computed, тогда будет само всё отслеживать
Как пример:
https://codepen.io/andreysh/pen/ZwXPOjsnippet

Худший ответ:
Да я тут смотрю похожие вопросы, и понял, что немного не в ту сторону вообще пошел. 
Но пока я все равно заблудился =_=
Вопрос: А почему все блоки питания с разным значение вольт не делают с максимальным значением ампер?

Лучший ответ:
Во внутреннем устройстве. Увеличение силы тока - это усложнение и удорожание схемы, причем значительное.

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

Лучший ответ:
полоски - картинка на background псевоэлемента c повторением, количество за счет разного height псевоэлемента

Худший ответ:
repeat linaer gradient? Вместо картинки пошел бы...
Вопрос: Как правильнее задавать фон-картинку для списка?

Лучший ответ:
Градиент картинкой в 2016?
Сделай на CSS и не мучайся.

Худший ответ:
Если я правильно понял проблему, и если быть кратким, то:.parent {
         display: flex;
         justify-content: space-between;
}
Вопрос: Как редактировать конфигурационные файлы в Linux?

Лучший ответ:
Думаю что все таки конфиги это скипты башевские... Догадка верна?Нет.Не все же время в гугле искатьИменно искать. Нет никакого стандарта конфигурационных файлов. Каждое приложение использует свой формат.

Худший ответ:
думаю надо для этого надо пользоваться manman sudoers
Вопрос: Почему многие современные сайты верстают на флексах?

Лучший ответ:
очень часто вижу такое мнение что построение сеток на основе "float" или "inline-block" лучше, потому что флексы поддерживаются не всеми браузерами. Так ли это и почему в таком случае они так популярны?Это действительно так. Но я Вам больше скажу, даже CSS как таковой (или HTML-5), поддерживается не всеми браузерами (IE-1 насколько я помню, CSS не поддерживал). Но я не думаю, что это повод отказаться от CSS или HTML5. И вообще, само по себе выражение "не всеми браузерами" - довольно размытое, что-то из области "не все продукты одинаково полезны".и почему в таком случае они так популярны?По тому, что они дают довольно большую гибкость, сокращают количество "случайностей" (неожиданного поведения элементов), такой код в целом более читаемый, чем "простыни" из float'ов, и так далее...
P.S. А ещё по тому, что FLOAT'ы были придуманы изначально не для того, для чего их в последствии приспособили, впрочем как и некоторые другие параметры/свойства/атрибуты...

Худший ответ:
Flex!
caniuse.com/#search=flex
96%+ поддержка браузерами... Как мне кажется, float следует использовать только в редких случаев, когда поддержка старых браузеров действительно важна, но вообще это, конечно, нужно исходить из проекта/заказчика/etc
Вопрос: Битрикс CRM Получить ID контакта?

Лучший ответ:
Есть как минимум 2 варианта (без прямых запросов в базу) как это сделать:
1) Высокоуровневый (работает всегда). Метод с поддержкой обратной совместимости: CCrmContact::GetList (bxapi.ru/src/?id=183244)
Применение (за основу взял код описанный Артем):/* @var array Список контактов */
$arContacts = array();

if ( \Bitrix\Main\Loader::IncludeModule('crm') )
{
	/* @var array Сортировка полученного списка контактов */
	$arOrder  = array('ID' => 'DESC');

	/* @var array Условия получаемого списка контактов */
	$arFilter = array(
		"NAME"      => "Имя",
		"LAST_NAME" => "Фамилия",
		'CHECK_PERMISSIONS' => 'N' // Данный ключ необходим для того чтобы получить всех пользоватей,
								   // иначе, будет найден только если ответственным за него является тот,
								   // под кем запускается скрипт в битриксе
	);

	/* @var array Получаемые поля для списка контактов */
	$arSelect = array(
		'ID'
	);

	// NOTE: Запрашивайте только необходимые поля
	$res = CCrmContact::GetList( $arOrder, $arFilter, $arSelect );

	while( $arContact = $res->fetch() )
	{
		$arContacts[ $arContact['ID'] ] = $arContact['ID'];
	}
}

// Тут в $arContacts либо пустой массив, либо массив с ID контактами, которые соответствуют условию поиска
2) Низкоуровневый DataMapper (новый подход d7)use \Bitrix\Main\Loader;
use \Bitrix\Crm;

/* @var array Список контактов */
$arContacts = array();

if ( Loader::IncludeModule('crm') )
{

	$resContacts = Crm\ContactTable::getList(array(
		'select' => array('ID'),
		'filter' => array(
			"NAME"      => "Имя",
			"LAST_NAME" => "Фамилия",
		),
		'order' => array('ID' => 'DESC')
	));

	while( $arContact = $resContacts->fetch() )
	{
		$arContacts[ $arContact['ID'] ] = $arContact['ID'];
	}

	/*
	Начиная с 17 версии (вроде бы), можно делать так:
	foreach( $resContacts as $arContact)
	{
		$arContacts[ $arContact['ID'] ] = $arContact['ID'];
	}
	вместо while цикла
	*/
}
Преимущество первого подхода:
- Работает всегда, как для новых, так и для старых проектов
- Можно использовать уровни доступа
Преимущество нового подхода:
- Технологически универсален за счет d7 (можно в runtime прибавлять связи, доставать связанные сущности и т.п.)
- В DataMapper есть технология кеширования, т.е. можно закешировать результат просто добавив в массив getList еще один ключик
- Субъективно код легче воспринимается

Худший ответ:
Пример запроса:if(!CModule::IncludeModule('crm')) die('error');

$res = CCrmContact::GetList($arOrder = array('DATE_CREATE' => 'DESC'), $arFilter = array("NAME"=>"Имя", "LAST_NAME"=>"Фамилия"), $arSelect = array(), $nPageTop = false);
while($ob = $res->GetNext()){
	$arContacts = $ob;
}
- фильтр контактов по имени и фамилии. 
Метод: bxapi.ru/src/?module_id=crm&name=CCrmContact%3A%3A...
Вопрос: Обучение английскому по скайпу?

Лучший ответ:
долгий и давний вариант: пополняешь скайп ( на США копейки стоит звонить) и звонишь:
сначала автоответчикам, потом технарям (домены там купить) , ну а потом и обычным
иногда, правда, дозваниваешься до Гугл по за гарантию на планшет, саппортер выслушивает, обещает решить проблему, потом хвалит что "планшет хороший, сам бы купил, но на филиппинах $699 это большая зарплата"

Худший ответ:
Я общался с репетитором из Колумбии по скайпу всего за 200 руб за 60 минут это не дорого и эффективнее чем звонить кому попало так как он ещё и грамматику объясняет.
Вопрос: Мониторинг каталога и удаление файлов с уведомлением по почте, как реализовать?

Лучший ответ:
Есть PowerShell может все что вам нужно. Если у вас роль файл сервер, то можно ограничивать запись на ресурс всего кроме txt и в зависимости от настроек уведомлять администратора.

Худший ответ:
Готовых не знаю, я бы слабал скриптец на PowerShell/VBS, который это делает, запускаясь в виндовом аналоге крона. Пример отправки почты через VBS могу скинуть, а уж каталог мониторить - дело вообще никакое, примеров в сети полно.
Вопрос: Как отсортировать символы строки в порядке «AaBbCc...» в python?

Лучший ответ:
Один вариант вам уже подсказали, а я бы сделал иначе, без забивания всего алфавита в код:key = lambda c: (c.lower(), c.islower())
print(''.join(sorted(s, key=key)))

Худший ответ:
Да пофиг, сколько раз встречается:order = {c: i for i, c in enumerate(
    "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz")}

s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"

print(''.join(sorted(s, key=lambda c: order.get(c, 99))))