Задать вопрос
  • Как сделать автокоммит текстового файла в git при сохранении в Notepad++?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Можно сделать прямо внутри Notepad++ через плагин PythonScript.

    У PythonScript есть событие NOTIFICATION.FILESAVED, на которое можно повесить git add и git commit. Отдельный watcher или NppExec для этого не нужен.

    Проверил у себя — работает.

    Установка и настройка

    1. Открыть Plugins → Plugins Admin....
    2. Найти PythonScript, отметить его и нажать Install. Notepad++ после установки перезапустится.
    3. Открыть Plugins → PythonScript → Configuration....
    4. Для Initialisation выбрать ATSTARTUP. Заодно полезно включить Automatically open console on error, чтобы ошибки скрипта сразу были видны.
    5. Открыть Plugins → PythonScript → Scripts и startup (User). Если пользовательского startup.py ещё нет — создать через Plugins → PythonScript → New Script файл с именем startup.py.
    6. Вставить в него следующий код и сохранить:


    from Npp import notepad, NOTIFICATION
    import os
    import subprocess
    import datetime
    
    
    def on_save(args):
        filename = notepad.getBufferFilename(args["bufferID"])
        file_dir = os.path.dirname(filename)
    
        try:
            repo = subprocess.check_output([
                "git", "-C", file_dir,
                "rev-parse", "--show-toplevel"
            ]).strip()
        except subprocess.CalledProcessError:
            return
    
        rel_file = os.path.relpath(filename, repo)
    
        subprocess.call([
            "git", "-C", repo,
            "add", "--", rel_file
        ])
    
        changed = subprocess.call([
            "git", "-C", repo,
            "diff", "--cached", "--quiet",
            "--", rel_file
        ])
    
        if changed != 0:
            message = "autosave " + datetime.datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S"
            )
    
            subprocess.call([
                "git", "-C", repo,
                "commit",
                "-m", message,
                "--", rel_file
            ])
    
    
    notepad.callback(on_save, [NOTIFICATION.FILESAVED])


    После перезапуска Notepad++ обработчик будет регистрироваться автоматически.

    При каждом сохранении файла скрипт:

    1. получает путь сохранённого файла;
    2. через git rev-parse --show-toplevel определяет его Git-репозиторий;
    3. добавляет в индекс только этот файл;
    4. создаёт commit, только если содержимое действительно изменилось.


    Если открытый файл находится не в Git-репозитории, ничего не происходит.

    Разумеется, git должен быть установлен и доступен через PATH, а файл должен находиться внутри уже созданного Git-репозитория.

    Есть только один нюанс: стабильная версия PythonScript, устанавливаемая через Plugins Admin, всё ещё использует встроенный Python 2.7. Поэтому скрипт написан без конструкций современных версий Python.

    Если Git нужен только ради истории изменений одного текстового файла, то есть ещё более простой вариант — встроенный в Notepad++:

    Settings → Preferences → Backup → Backup on save → Verbose backup


    Он сохраняет отдельную предыдущую версию файла при каждом сохранении.

    И ещё: локальный Git без push — это история версий, но не полноценный backup. При потере диска вместе с рабочей папкой пропадёт и каталог .git. Если нужна именно резервная копия, репозиторий надо периодически отправлять во внешнее хранилище.
    Ответ написан
    3 комментария
  • Связка белый+серый ip оператора мобильной связи уникальна или нет?

    @default_route
    Так ли это на самом деле или я ошибаюсь?

    Так.
    Преимущества уникального серого IP в отсутствии конфликта адресов
    Ответ написан
    1 комментарий
  • Как звонить в mango talker с иностранным ip?

    @Drno
    поднимай ВПН сам, в РУ локации. ток так
    Ответ написан
    2 комментария
  • Выгорание, куда расти сисадмину?

    @Oszn75
    Попробуй в свободное время романы писать, у тебя к этому явный талант. И слог неплохой.
    Ответ написан
    Комментировать
  • На VPS в Debian 12: apt update зависает на 0% при загрузке InRelease?

    opium
    @opium
    Просто люблю качественно работать
    Похоже на IPv6 у финского провайдера. Глуши его в apt: apt -o Acquire::ForceIPv4=true update — если сразу пошло, дело не в зеркале. Ещё сравни, по какому протоколу конкретно зависает:
    curl -4 -v http://deb.debian.org/debian/dists/bookworm/InRelease -o /dev/null
    и то же с -6. Если и по IPv4 виснет ровно так же (коннект есть, данных нет) — тогда это PMTU/фрагментация где-то по пути, и аргумент хостеру простой: на немецком VPS та же связка работает, на финском нет.
    Ответ написан
    5 комментариев
  • Как заходить на российские сайты и с впн?

    opium
    @opium
    Просто люблю качественно работать
    самый надёжный вариант тут — второй браузер вообще без VPN: в нём открывай российские сайты и госуслуги, а Maxthon с Urban VPN оставь для всего остального. Тонко настраивать ничего не надо, просто держи два окна. Если в Urban VPN и правда есть исключения по доменам (bypass) — можно попробовать добавить туда нужные ru-сайты, но у браузерных расширений такой функции часто вообще нет, так что второй браузер надёжнее.
    Ответ написан
    Комментировать
  • Почему не переустанавливается винда?

    @Drno
    а с чего Вы нажимаете "да" ? когда вродь черным по белому написано что для установки надо нажать "нет"...
    Ответ написан
    2 комментария
  • Как решить проблемы с сертификатами сайтов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Российские банки перешли на российские сертификаты. Да, надо добавлять корневой и промежуточный сертификаты Минцифры в браузер или систему.
    А HSTS - это всего лишь инструкция браузеру, что данный сайт работает только по HTTPs, чтобы браузер не пытался подключаться по HTTP.
    Ответ написан
  • Как найти что блокирует пользователя анализируя логи Exchange?

    opium
    @opium
    Просто люблю качественно работать
    netwrix account lockout examiner, самый быстрый вариант: копает автоматом, без ручного парсинга логов. Руками — событие 4740 на pdc emulator, поле Caller Computer Name сразу укажет источник блокировки. Тип клиента (мобила или десктопный outlook) видно в iis-логах по User-Agent на 401-х: activesync это мобила, mapi/outlook anywhere это десктоп.
    Ответ написан
    2 комментария
  • Почему не работает become на хосте Ubuntu 26.04 LTS?

    opium
    @opium
    Просто люблю качественно работать
    В Ubuntu 26.04 заменили sudo на sudo-rs, у него другой формат промпта. Ansible 2.17.x его не распознаёт и таймаутится. Самый быстрый фикс — указать классический sudo в инвентаре: ansible_become_exe=/usr/bin/sudo.ws (он остался доступен в 26.04 рядом с sudo-rs). Или добавь NOPASSWD для ansible-юзера, тогда промпт не нужен вообще.
    Ответ написан
    2 комментария
  • Потери пакетов МТС, что делать и куда жаловаться?

    @66demon666
    Сетевой админ, АТС-админ
    Алгоритм классический - сначала убедиться что в вашей ЗО нет проблем, потом жаловаться в этот самый МТС. В вашем случае потери начинаются сразу после маршрутизатора. Для начала поднимите линк напрямую в комп (без роутера вообще), проверьте еще раз. Это в целом всё, что можно сделать с вашей стороны в общем-то. Можно исключить еще само устройство ваше (попробовать с телефона например или с другого пк), но это редкость
    Ответ написан
    Комментировать
  • По каким техническим критериям выбирать впн?

    CityCat4
    @CityCat4 Куратор тега VPN
    Жил да был черный кот за углом...
    Мы - стоимость аренды VPS и возможность оплаты рублями.
    Ответ написан
    1 комментарий
  • Шифрование флешек в домене AD. Как и чем?

    opium
    @opium
    Просто люблю качественно работать
    BitLocker To Go + GPO + certificate protector из доменного PKI — это рабочая схема именно для твоего кейса.

    Флешка шифруется и добавляется certificate protector:
    manage-bde -protectors -add X: -Certificate -ct <thumbprint>
    . GPO деплоит этот сертификат (с приватным ключом) на все доменные машины через autoenrollment — при подключении Windows автоматически ищет ключ и монтирует без запроса пароля. За пределами домена сертификата нет, данные недоступны. Чужие флешки отрезаются политикой "Deny write access to removable drives not protected by BitLocker".

    Из готовых решений: DeviceLock или Endpoint Protector (ранее CoSoSys) — они специально под такой сценарий, whitelist корпоративных устройств + auto-unlock в домене + блок всего остального, всё в GUI.

    p.s. EFS не подойдёт — это файловое шифрование, привязки к домену в нужном смысле нет.
    Ответ написан
    Комментировать
  • Сколько стоит лицензия RDP windows 10 в 2026 году?

    opium
    @opium
    Просто люблю качественно работать
    у Windows 10 Pro/Enterprise нет отдельных RDP-лицензий — одна входящая сессия встроена в ОС бесплатно. RDS CALы — это история про Windows Server, не про клиентскую ОС.
    Если нужно несколько пользователей одновременно — Windows Server + роль Remote Desktop Services + RDS CALы. Бывают Per User и Per Device, продаются штучно и пачками (5/10/20/50).
    Ответ написан
    4 комментария
  • Возможно ли узнать о наличии ВПН на телефоне?

    @Drno
    да. но незная как они это будут проверять, невозможно ответить как этого избежать
    Ответ написан
    Комментировать
  • Возможно ли узнать о наличии ВПН на телефоне?

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

    Настоятельно рекомендую изучить юридическую сторону вопроса, и, может быть, вам действительно дешевле и проще приобрести БУ смартфон и пользоваться им на своих условиях (естественно вне периметра организации и вне ее доступа в интернет)
    Ответ написан
    Комментировать
  • Как поднять контейнер mysql через wsl?

    opium
    @opium
    Просто люблю качественно работать
    rm -rf /var/lib/mysql/* внутри контейнера тут не поможет, потому что /var/lib/mysql у тебя примонтирован с хоста и для --initialize каталог должен быть полностью пустым. Если данные не нужны, удали именно хостовую папку:
    rm -rf ./data/docker-files/mysql-db && mkdir ./data/docker-files/mysql-db
    и пересоздай контейнер. На будущее для MySQL под WSL проще использовать именованный volume вместо bind mount — с ними таких проблем нет.
    Ответ написан
    4 комментария
  • Может ли гостевая машина самостоятельно ставить vlan метки на пакеты которые отправляет в\через hyper-v?

    opium
    @opium
    Просто люблю качественно работать
    Может, но по дефолту Hyper-V работает в access-режиме и режет теги от гостя. Чтоб CHR мог сам тегировать трафик, переключи адаптер в trunk через PowerShell:
    Set-VMNetworkAdapterVlan -VMName "CHR" -Trunk -AllowedVlanIdList "1-4094" -NativeVlanId 0
    . Ну и MAC Address Spoofing на этом адаптере тоже включи, для CHR как роутера скорее всего пригодится.
    Ответ написан
    Комментировать
  • Как убрать блокировку домена от spamhouse?

    opium
    @opium
    Просто люблю качественно работать
    Spamhaus сам DNS не отключает — это regway скорее всего поставил hold на домен. Пробей через whois статус домена и через check.spamhaus.org что именно в списке: домен (DBL) или IP (SBL). Если IP в SBL — проси у хостера другой, у дешёвых VPS грязные адреса это норма. А в саппорт regway напиши, запроси точную причину блокировки и приложи пруфы что сервер чистый.
    Ответ написан
    6 комментариев