• Как в Git в организовано хранение файлов?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. Гит в истории целые файлы, уже измененные, но сжатые (изменения хранит SVN, но у него другая модель работы)
    2. Сравнение файлов происходит через сравнение хэша файла. История изменений хранится в виде графа, поэтому переключение - это по сути: 1. Найти общего предка 2. Откатиться до этого предка 3. Применить изменения до новой ветки. Дополнительно, если у тебя есть незакоммиченные текущие изменения, то гит тебе об этом скажет
    3. Скачивается вся история изменений из удаленного репозитория и потом HEAD выставляется на ветку, которую клонировал (в основном это main/master)

    Почитай как работает git

    UPD: спасибо Saboteur за важное замечание
    Ответ написан
    1 комментарий
  • Важен ли работодателю тот факт, что сотрудник состоит на нарко. учете?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    трит ли (по вышему опыту) работодатель на данный факт, или ему по барабану?

    Смотрят в основном компании от средних и выше, у которых имеется человек под эту задачу. Помимо этого, могут смотреть судимости, долги, административные производства итп.
    Ответ написан
    Комментировать
  • Что это такое и как защититься?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По двору прошелся жулик и попытался хакнуть эксплойтом для "майбаха" (условно) все тачки в вашем дворе. Майбахов не нашлось, этот жулик пошел дальше и забыл уже про ваш дворик.

    Надо ли защищаться от атаки, не релевантной вашему сетапу? Не надо.
    Надо ли делать выводы об уязвимости того или иного оборудования? Надо.
    Надо ли проверять свои конфигурации на эксплойты? Надо.
    Надо ли реагировать на всякую нерелевантную хрень в логах с ошибками порядка 400? Не надо.
    Надо ли позаботиться об оркестрации быстрого развёртывания ваших серверов на случай взломов или проблем с железом? Конечно надо!

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

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

    Это взгляд дилетанта по безопасности, если чего пропустил -- поправьте. Если где не прав -- расскажите.
    Ответ написан
    3 комментария
  • Как перевести этот блок if в математическую функцию?

    LaRN
    @LaRN
    Senior Developer
    Можно так попробовать например:
    F(X) = 30+(1-X)*20, где X - функция от t.
    X(t) = sign(int(t/10)), если t меньше 10, то X всегда 0, если больше, то всегда 1.
    Ну и F(0)=30, а F(1)=50.
    Но есть нюанс, я не знаю разрешены ли отрицательные числа, этот вариант только для положительных t.
    Ответ написан
    Комментировать
  • Java или Kotlin для андроид?

    xez
    @xez
    TL Junior Roo
    Джава точно не умирает.
    Для андроида надо писать на котлине.
    Ответ написан
    Комментировать
  • Почему пушатся коммиты которые я не делал в ветке?

    Aetae
    @Aetae
    Тлен
    Не бывает совсем "новых" веток - все ветки откуда-то растут.
    Если в запушеной ветке два коммита вместо одного, значит один из них уже был в той ветке, от которой вы отпочкованли "новую".
    Ответ написан
    Комментировать
  • Как забрать файлы из другой ветки?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если нужно вытащить отдельные файлы из другой ветки, используйте checkout
    git checkout ветка -- путь/к/файлу
    Это извлечет файл в рабочий каталог. Останется только его закоммитить в текущей ветке.
    Ответ написан
    Комментировать
  • Как в bash-скрипте ограничить ввод двумя вариантами?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Запретить, разумеется, ничего нельзя. Но можно ограничить количество введенных символов ( -n), проверять введенное значение, и выводить запрос повторно, если оно не соответствует контрольным.

    Причем в данном конкретном случае можно проверить только на у, а любой другой ввод расценивать, как "нет".
    Ответ написан
    Комментировать
  • Как пушить нескольким пользователям с одной учетной записи компьютера?

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

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

    git config --local user.name ...
    git config --local user.email ...

    Если хочется непременно разные аккаунты на гитхабе, то

    Как разлогиниться в гитхабе?

    Если отправляете по HTTPS, то придется каждый раз сбрасывать авторизацию после предыдущего пользователя
    echo "url=https://github.com" | git credential reject

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

    Для этого мы создаём в файле конфигурации ~/.ssh/config несколько виртуальных хостов
    Host github-alice
            Hostname github.com
            IdentityFile=/home/user/.ssh/alice_key
    
    Host github-bob
            Hostname github.com
            IdentityFile=/home/user/.ssh/bob_key

    И поправьте ссылки на origin в своих репозиториях используя псевдоним виртуального хоста
    git remote set-url origin git@github-alice:OWNER/alice-repo.git

    Есть официальная инструкция
    How do I use multiple accounts with the same hosting provider using SSH?
    Ответ написан
    Комментировать
  • Как пушить нескольким пользователям с одной учетной записи компьютера?

    @Drno
    варианты работать под разными пользователями?))
    Ответ написан
    Комментировать
  • Как скопировать файл на ext4 image без прав root?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Да, можно, используя debugfs:

    $ dd if=/dev/zero of=test.img bs=1M count=10
    $ mkfs.ext4 test.img
    $ debugfs -w test.img
    debugfs: write my_file.txt new_file.txt
    Ответ написан
    1 комментарий
  • Как показать работодателю реализованные проекты?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В портфолио показывают не код, а запущенный проект.
    Ответ написан
    Комментировать
  • В чем разница между сервлетом и контроллером?

    xez
    @xez
    TL Junior Roo
    Контроллер - абстракция над сервлетом.
    В контроллер можно принимать уже объект - фреймворк его сам извлечет из http запроса и десериализует на основании mediatype.

    Сервлет оперирует объектами HttpServletRequest/HttpServletResponse. Там все вышеперечисленное нужно реализовывать самостоятельно.
    Ответ написан
    Комментировать
  • Возможно ли выполнять c++ код введенный в переменную?

    vabka
    @vabka
    Токсичный шарпист
    Тк C++ язык компилируемый - нужно в приложение встроить компилятор
    Ответ написан
    Комментировать
  • Смотрят ли на оценки в дипломе при устройстве на работу?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Даже на наличие диплома редко смотрят, внутрь вообще никто никогда не заглядывает.
    Ответ написан
    Комментировать
  • Как правильно просить повышения зарплаты?

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

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

    @vitaly_il1
    DevOps Consulting
    А вот человеческий ответ:
    - из серии плохих советов - выдерните кабель из DC и посмотрите что сломается. Или из файлового сервера.

    Если серьезно, то например
    1) мониторинг, мониторинг и еще мониторинг, включая логи. (Есть ли у вас ответ на вопрос "когда и откуда логировался Виталий?", "кто использовал админ аккаунт?" и т.п.)
    Позднее на основе мониторинга можно строить Security information and event management, SIEM for short.
    2) на вашем лаптопе/десктопе попробовать разные способы эскалации привилегий и прочих запретных дествий. Получилось? Не получилось? Что видно в мониторинге - см номер 1.
    3) Привилегии - действительно ли каждый имеет минимальные требцемые привилегии как положено по теории?
    Не может ли Виталий случайно или специально стереть все файлы компании на файл-сервере?
    4) а если может, то есть откуда восстановить?

    и т.п.
    Ответ написан
    3 комментария
  • Как правильно итерировать?

    Vindicar
    @Vindicar
    RTFM!
    Зачем обращаться к элементу списка по индексу, если простое итерирование через for позволяет получить элемент списка непосредственно?
    mylist = ['foo', 'bar', 'baz']
    for item in mylist:
        print(item)
    Ответ написан
    3 комментария
  • Почему не могу записать объект в массив классов?

    libalex
    @libalex
    Backend / Android Developer (Java, Kotlin)
    Вы создаёте массивы размером по 10 элементов, но не заполняете их объектами.
    Там лежат по 10 null-ов.
    Ответ написан
    2 комментария