• Есть ли смысл использовать Git?

    toxa82
    @toxa82
    История изменений. Возможность возврата к любому коммиту, вернуть что удалил если вдруг понадобилось снова. Та и обновлять проще с гитом, чем каждый раз архив лить.
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Git?

    @Vitsliputsli
    Можно. Но, например, когда проект начнет работать вам понадобится добавить новую фичу, а следовательно у вас появится 2 версии и нужно будет их как-то легко разделять. Пока вы будете делать эту новую фичу, нужно будет сделать еще одну побыстрее, уже 3 версии. Можно наделать отдельные директории и переключаться между ними, использовать внешние утилиты сравнения, а можно использовать git.
    Когда через год понадобится разобраться, а зачем так было сделано, можно найти коммит, в рамках которого было внесено изменение и понять зачем. Еще лучше, если коммиты связаны с тасками в системе управления проектом.
    Когда наскучит вручную таскать код на сервер. Когда устанешь копировать файлики между версиями для переноса функционала. Когда все сломал, и понимаешь, что легко бы нашел причину, если бы фиксировал предыдущее стабильное состояние. И это только то, что первое приходит в голову.
    Ответ написан
    Комментировать
  • Существует ли способ быстро запускать текущий файл в среде NodeJS?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    1. В корне проекта создайте папку .vscode (если ее еще нет)
    2. Создайте в папке .vscode файл tasks.json со следующим содержимым:
    {
      "version": "2.0.0",
      "tasks": [
        {
          "label": "Run current file in node.js",
          "type": "shell",
          "command": "node",
          "args": ["${file}"]
        }
      ]
    }
    Если такой файл уже есть, то просто дополните массив tasks содержимым выше.
    3. Нажмите Ctrl+Shift+P и введите команду Preferences: Open Keyboard Shortcuts (JSON), должен открыться файл keybindings.json, добавьте в конец массива следующий объект:
    {
      "key": "alt+f5",
      "command": "workbench.action.tasks.runTask",
      "args": "Run current file in node.js",
      "when": "editorTextFocus && editorLangId == javascript"
    }


    Все, теперь по Alt+F5 в тектовом редакторе будет запускаться текущий файл нодой, если он js файл
    Ответ написан
    1 комментарий
  • Как запустить docker на MacOs без Docker Desktop?

    @q2digger
    никого не трогаю, починяю примус
    Colima - https://github.com/abiosoft/colima
    использую вместо докер-десктоп на маке, легкая и простая.
    Ответ написан
    Комментировать
  • Sysvol не реплицируется через DFS?

    @BudNejnee Автор вопроса
    Решение:

    "Если репликация не пойдет, то дело может быть в том, что MPADSERV слишком долго не реплицировался с партнером (умершим) и репликация на нем остановлена: такая проверка (с макс. сроком в 90 дней по умолчанию добавлена начиная с Win2012). Про это пишется в журнал событий DFSR сразу после запуска службы (один раз), ЕМНИП код события 4012. Если так, то для возобновления репликации надо отключить эту проверку через WMI:
    wmic.exe /namespace:\\root\microsoftdfs path DfsrMachineConfig set MaxOfflineTimeInDays=0"
    Ответ написан
    1 комментарий
  • Почему экранирование не работает?

    hint000
    @hint000
    у админа три руки
    null здесь неуместен. Для обозначения пустой строки используют кавычки, между которыми ничего нет, а не null.
    ...
    if "%attributes%" EQU "" (
    ...
    Ответ написан
    Комментировать
  • Как получить текущий путь в BAT файле?

    @res2001
    Developer, ex-admin
    Именно так и узнавать текущий путь: %CD%
    Это не важно где лежит батник, т.к. исполняется не сам батник, а cmd.exe. Т.е. когда вы 2ПКМите на батнике, лежащем на раб.столе запускается команда: cmd.exe /c c:\users\user\Desktop\file.bat
    При этом путь где лежит батник никакого отношения к текущему пути не имеет. cmd.exe обычно запускается с текущим каталогом %SystemRoot%\System32.
    Чтоб перейти в каталог, где лежит батник, используйте команду: cd /d "%~dp0"
    Пути можно получать из параметров батника, указанным способом, то же самое можно делать для переменных цикла, и параметров процедур. Список доступных модификаторов (буквы после %~ доступны в описании команд call и for.
    Ответ написан
    1 комментарий
  • Почему Git-команда ведёт себя так?

    @qwazimord
    Интроверт
    Эта команда выводит конфиг постранично. Если нажать пробел - появится следующая страница, если q - то команда завершится и снова можно будет вводить команды. Перед нажатием q убедитесь, что раскладка английская, а не русская.
    Ответ написан
    3 комментария
  • Как с помощью регулярного выражения поставить переносы строк?

    @Herest
    Открываем меню редактора Search > Replace (или быстрым сочетанием клавиш Ctrl + H) и устанавливаем режим поиска Regular expression. Просим найти (\d{3} ) и заменить найденное на <br>\n$1. Дальше жмем кнопку Replace All и получаем результат.

    62aa0db4bac8a950489258.png
    Ответ написан
    Комментировать
  • Возможно ли обезопасить себя имея два роутера?

    @rPman
    для полноценной защиты тебе нужно 3 простых роутера
    1 роутер выходит в интернет, в нем локальная сеть 192.169.0.0/24
    каждому клиенту роутеры 2 и 3, в каждой из них настроена своя сеть, отличающаяся от сети первого роутера (маловероятно что роутеры сумеют NAT-ить если ip совпадут, хотя в принципе такое возможно), пусть будет 192.168.1.0/24, при этом WAN порты этих 2 и 3 роутеров подключены к портам локальной сети 1 роутера.

    в этой схеме оба клиента максимально изолированы друг от друга (читай vlan) но будет очень нехороший недостаток - не будет работать upnp, а для настройки перенаправлений портов нужно будет доступ к роутеру 1 и роутеру 2 и 3 соответственно, т.е. один пользователь должен иметь доступ к первому роутеру и оба клиента к своим.
    Ответ написан
    Комментировать
  • Что выбрать: Syncthing vs nextCloud vs Seafile vs OwnCloud vs Другой сервис?

    @Vallefor
    На днях пробовал ownCloud, NextCloud и Seafile.
    ownCloud / Nextcloud:
    Серверная часть написана на PHP + БД (точно умеет работать с mysql и sqlite).
    Для фронтенда обязательно иметь Apache2+php или nginx+php.
    Без настройки redis в помощь - тормозной просто до невозможности. С redis все становится на много лучше. Все операции по сканированию и проверке идут через крон, который по умолчанию запускается раз в 15 минут (кстати, при установке серверной части - не предупреждают о том, что это нужно сделать).

    Все клиенты работают через WebDAV это просто супер-минус:
    Так как при синхронизации клиент сканирует по очереди все серверные папки, отправляя кучу запросов. Каждый файл при загрузке отправляется тоже отдельным запросом со всеми накладными расходами - в результате куча маленьких файлов синхронизируется просто невыносимо долго (10гб мелких файлов на сервер с 1Гбит линком может отправляться 10-20часов). Все это, в случае краша просто останавливается.
    А крашнуться может по разным причинам (перечислю то, что было у нас):
    • При загрузке больших файлов может отвалиться и nginx и php-fpm. Почему они не загружает их по умолчанию частями - это странно. При том, что вебдав это поддерживает.
    • php-fpm может крашуться, если придется отдать очень много файлов в одной папке (так и не получилось вылечить).
    • Крашится из-за ограничений линукс (255 байт на имя файла) - например, на маке файлы могут иметь более длинное имя.
    • От монтирование того же самого WebDAV в finder MacOS можно сразу отказаться, работает очень медленно и нестабильно. При этом при монтировании через Cloudmounter все ок. В Linux с монтированием тоже все ок.


    После каждого краша синхронизатор просто останавливается. Через какое-то время перезапускается, опять доходит до ошибки и опять останавливается. Я конечно понимаю, если нужно каждому юзеру выделить 1-5 гб места, то наверное все ок, но когда дизайнерам надо засинхронизировать 200Гб макетов и программистам по 5-20гб мелких файлов, то это решение можно смело обойти стороной.

    Единственный плюс owncloud/nextcloud это то, что он файлы хранит файлами.

    Интересно то, что не смотря на то, что вроде вся опенсорс тусовка ушла в nextcloud, в owncloud сейчас есть и виртуальная ФС и diff синхронизация, чего все еще нет в nextcloud.

    Seafile
    Разработчики говорят, что ядро сервера написано на C и оно очень быстрое. Остальное похоже написано на питоне. В качестве БД использует MySQL или sqlite.
    Для фронтенда можно использовать apache2 или nginx. А можно подсоединяться по IP.

    Первый день тестируем. Пока вообще все на столько хорошо, что даже не верится. 10Гб мелких файлов засинхронизировал вообще без всяких вопросов и ошибок менее чем за 1 час.

    Файлы хранятся в какой-то собственной структуре, это минус, но есть утилита seaf-fsck, которая, в случае беды может экспортнуть все файлы. Не получится так сделать только с зашифрованными библиотеками. Но никто не мешает настроить резервирование базы и данных на отдельное хранилище или по крайней мере хранить все на райд-массивах, чтоб обезопасить себя.

    Остановимся пока на Seafile. Скорость и глючность Nextcloud/owncloud своlит все его плюсы на нет.
    Ответ написан
    Комментировать
  • Как организовать совместную разработку нескольких проектов в git?

    solotony
    @solotony Автор вопроса
    покоряю пик Балмера
    коллеги!

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

    после внимательного изучения гита я нашел решение наиболее подходящее для моей задачи - это sparse checkout

    p.s. а для дистрибуции я решил использовать множественные репозитории для 1 проекта (указывая --git-dir).
    т.е. при необходимости провести деплой конкретного проекта (через git причем что бы на сервер заказчикак никак не попадал "левый" код), я из рабочего sparse checkout делаю репозиторий .git-"имя проекта"
    Ответ написан
    3 комментария
  • Как создать ветку -@#%=]! в git?

    Lynn
    @Lynn
    nginx, js, css
    Ну развлекайтесь

    $ git update-ref 'refs/heads/-@have-fun!' @^{commit}
    $ git switch -- '-@have-fun!'
    Switched to branch '-@have-fun!'
    $ git branch -v
    * -@have-fun! 734a4af Docker
      master      734a4af Docker
    Ответ написан
    Комментировать
  • Как достовлять проджект на тест, на прод и к чертовой матушке?

    BorLaze
    @BorLaze
    Java developer
    три ветки в гите - дев, тест и мастер
    CI/CD

    вся локальная разработка базируется на ветке дев

    как только фича закончена, мержим ее в тест
    CI/CD настроен так, что по новому пушу в тест он выкладывает новую ветку на сервер
    тестируем ее на тест-сервере

    когда фича протестирована, мержим ее в мастер
    CI/CD настроен так, что по новому пушу в мастер код выкладывается на прод

    начинаем цикл по-новой
    Ответ написан
    Комментировать
  • Как настроить deploy в Gitlab? Какая версия необходима?

    @ArturF
    php dev
    Как указали выше можно использовать Jenkins. В свое время немного использовали его, но в итоге пришли к встроенному Gitlab CI.

    Устанавливать Gitlab CI отдельно не нужно, он идет в комплекте с самим Gitlab. Дополнительно нужно будет установить runner - один или несколько, в зависимости от поставленных целей (например, для простого деплоя может вполне хватить одного SSH-раннера).

    В блоге у них есть статьи на эту тему, которые в общих чертах показывают суть процесса:
    https://about.gitlab.com/2016/08/26/ci-deployment-...
    https://about.gitlab.com/2016/08/05/continuous-int...
    Ответ написан
    Комментировать
  • Как настроить deploy в Gitlab? Какая версия необходима?

    Я бы посоветовал завести себе какой-нибудь сервис для Continous Integration, например Jenkins.
    Он позволит несколько усложнить задачу (кто бы мог подумать, что усложнить - это что-то хорошее!), например:
    * Мониторит git / svn / hg / что угодно на предмет новой версии
    * Забирает новую версию
    * Прогоняет тесты
    * В случае невыполнения тестов отправляет провинившемуся разработчику push / email
    * В случае выполнения тестов выполняет деплой, и/или например отправляет артефакт в репозитарий, или образ докера в репозитарий.

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

    У нас как только не используется: и собирает докер образы (в случае успешной сборки и тестов - в репозитарий), и собирает java-артефакты (аналогично, собрался - пошёл в maven). Собирает приложения на spring-boot, копирует их на целевой сервер, делает из них сервис и сам его перезапускает.

    Да, многое можно возложить на хуки, но:
    * хуки выполняются на компьютере разработчика (и зачем мне у себя выполнять 300 тестов при каждом коммите, если рядом специально обученный сервер стоит?). К тому же, бывали ситуации, когда что-то собирается на компьютере разработчика только потому, что у него есть какие-то локальные хаки. И потом приходит новый человек (или он меняет компьютер) и два дня только и делает, что настраивает себе всякое :). С отдельным сборщиком такого не бывает.
    * деплой и редеплой может запускать специально обученный PM, а не разработчик. Или вообще кто угодно.
    * Есть всякие красивые графики, что успешных тестов выполняется всё больше и больше, например. В любой момент PM может посмотреть, какие изменения были в каждой конкретной сборке.

    Видел всякие разные конфигурации, даже такую, когда для сборки проекта покупалась виртуалка на amazon, делала сборку и уничтожалась :) Вопрос лишь в извращённости сознания администратора Jenkins. Ну и, конечно, максимально хорошо он интегрирован с Java. JetBrains TeamCity, Atlassian Bamboo - в общем-то тоже.
    Ответ написан
    3 комментария
  • Как скачать с github отдельную папку?

    MobiLux
    @MobiLux
    https://lysak.github.io
    Просто указать папку и нажать скачать https://downgit.github.io
    Ответ написан
    Комментировать