• Как работает сетевое окружение в Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    за это отвечает сервис, который раньше назывался Computer Browser.
    В одноранговой сети шировокещательными пакетами выбирается самый главный Computer Browser, который собирает информацию о всех хостах, и если кто-то запрашивает список компьютеров в локалке, он его отправляет.
    Выбор идет по старшинству систем. XP важнее чем 2000, Vista важнее чем XP, семерка важнее чем Vista, десятка важнее, чем семерка. 64бит важнее чем 32 бита, а сервер в принципе важнее рабочих станций.

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

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

    А если это не одноранговая сесть, то там выбор не происходит, за список отвечает домен контроллер.
    Ответ написан
    Комментировать
  • Как работает глобальный Интернет?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    Ваш провайдер имеет аплинки к другим провайдерам (зачастую к трансмагистральным провайдерам, которые лично владеют коммуникационными каналами на далекие расстояния - например провайдер сам является международным и у него есть оптические каналы проложенные к его датацентрам в других странах, либо у двух крупных провайдеров есть какой-то канал, который они вместе построили и проложили под землей или через океан. Там вообще могут быть коммуникации купленные вскладчину несколькими участниками.

    Стоимость прокладки таких каналов стоят огромных денег. Это и непосредственно сами работы и огромное количество разрешений на эти работы, которые должны быть согласованы со всеми владельцами и странами. Поэтому окупается это так, что между провайдерами всегда идут какого-то рода взаиморасчеты за передачу траффика. Кто генерит контент, то собственно больше и получает, кто скачивает - тот платит.
    Но стоимость этих взаиморасчетов может быть разная на разном уровне. Где-то определенный объем входит в абонплату. Где-то трафик ночью дешевле. Где-то можно сделать дешевле но медленнее. Условия разные и гибкие.
    Поэтому в свитчах провайдеров всегда настроены довольно сложные правила и для минимизации этой цены, и для обеспечения отказоустойчивости (если какой-то маршрут нарушен, автоматом может пустить по другому каналу, возможно более медленному). Плюс ошибки админов.

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

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

    Так и живем.

    P.S. Ах да, еще - пинг и скорость это разные показатели, не всегда релевантно относящиеся друг с другом, но в отдельных моментах ширина канала может аффектить пинг. Если посчитать скорость света с минимальной затратой на проход пакета через маршрутизаторы, можно сказать что самый большой пинг в пределах Земли должен быть около 400 мс между точками-антиподами. Но тут естественно нужно учитывать между этими точками только оптика, или что-то еще.

    P.P.S. хорошая статья на Хабре от amarao https://habr.com/ru/post/186282/
    Ответ написан
    7 комментариев
  • Что считается технологией в программировании?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Технология - это определенный способ что-то делать.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Ну так для начала сделайте в админке управление пользователями. Потом допишете что-то еще.
    Опять же действительно - поставь себе любой форум или вордпресс, зайди в их админку, проведи там часик, посмотри что есть.
    Не обязательно писать в админку сразу все что нужно. Напиши минимум, а потом добавляй - твой же проект. Будешь сам видеть чего тебе не хватает.
    Ответ написан
    Комментировать
  • Android или Unity?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    как та и та ветка себя чувствует во фрилансе

    Да ну что за бред. 30 лет а ума нет.
    Во фрилансе рулят софт скиллы и умение себя продать. А конкретная ветка развития не значит ничего. Во фрилансе работу ты себе будешь искать сам, и если ты думаешь что можно зайти на биржу и набрать себе работы, то это уже совершенно не так.

    Так как я хотел работать больше на себя, чем в конторе

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Отключаясь от сессии, вы посылаете своему шеллу и всем дочерним процессам (scp, rsync) сигнал SIGHUP.

    Есть несколько воркэраундов как этого избежать.

    1. Запускать процесс через nohup &
    2. Использовать менеджер сессий - screen или tmux
    3. Запустить процесс в фоне и заранее отвязать его от своего шелла ( &; disown )
    Ответ написан
    2 комментария
  • Какую программу родительского контроля выбрать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Информационная безопасность
    software engineer
    Логи и ремень.
    Ответ написан
    Комментировать
  • Использована неинициализированная переменная "а"?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    1. Используйте тег форматирование для вашего кода

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    1. git хранит всю историю. Но встроенный garbage collector может удалять коммиты, которые не привязаны ни к какой ветке. Поэтому для начала:
    * Удалите ненужные бренчи.
    * Выполнте "git gc --aggressive --prune" после удаления бренчей.

    2. Затем нужно разобраться с тем, что у вас занимает место. Если вы напихали крупных файлов в ваш гит репо и они присутствуют в активном бренче, то никак их не удалить. Точнее можно попробовать удалить сами файлы вручную или при помощи bfg-repo-cleaner, но при этом надо синхронизировать это со всеми участниками. Если у вас гит репо локальный и никто им не пользуется, это проще. Но при этом вы ломаете коммиты - откатиться на них уже будет нельзя.

    3. Наконец следует потратить вечерок и почитать про git-flow, или даже посмотреть 3-4 ютуб ролика от разных авторов которые показывают разные флоу работы с гитом. Там вы поймете почему и зачем люди пользуются rebase, squash, зачем удаляют ненужные ветки и содержат dev/master в хорошем состоянии, когда там нет промежуточных коммитов с commit message типа "апечатка" "забыл" "еще" и подобного мусора. И гит репо занимает минимальный объем.
    Ответ написан
    Комментировать
  • Не работает команда в bash скрипте, где ошибка?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Смотреть PATH нужно не из вашей сессии, а прямо из cron.
    Когда юзер логинится интерактивно, выполняются его персональные профайлы - .profile, .bashrc, .login и др.

    Крон же просто запускает с правами указанного юзера, не читая его профайлы.

    Варианты как это чинить:
    1. Использовать в скриптах полные пути к файлам
    2. Задать PATH прямо в вашем скрипте
    3. Задать PATH в самом кронтаб вначале, например

    PATH=$PATH:/home/user/mypersonalbin/
    00 09 * * * /mnt/pve/backups/sensors.sh >> /root/myscript.log 2>&1


    crontab формат позволяет задавать переменные, которые будут работать для всех скриптов запускаемых из вашего кронтаба.
    Ответ написан
  • Как сочетать умную перезапись файла с правами доступа?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Как вариант - скопировать предыдущий документ во временный файл, а потом перезаписать текущий файл. Если операция успешна - то удалить временный файл. Если операция не успешна, то либо восстановить данные из временного файла, либо если программа крешнулась, на диске будет предыдущий документ в другом файле (да, с другими правами, но будет).
    Ответ написан
  • Как запустить уже остановленную программу в фоне не переходя в foreground?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нужно понимать два момента

    команды jobs, bg и fg являются внутренними командами шелла, и работают с дочерними процессами именно этого шелла.
    Если вы приостановили дочерний процесс (Ctrl-Z) или запустили его сразу в бэкраунда (ping google.com &), то командой fg вы выводите его на передний план. Это все равно что в винде вы взяли и поставили мышкой фокус на окне блокнота, после чего нажимая клавиши вы будете писать в этом блокноте.

    А если вы приостановили процесс Ctrl-Z и продолжили его через bg, он будет продолжаться в фоне, а на переднем плане будет ваш шелл - вы можете писать другие команды. Все равно что мышкой в винде вы кликнули в рабочий стол рядом с блокнотом, и поэтому нажимая клавиши вы будете писать не в блокноте а на рабочем столе (стрелки по иконкам бегают, какие-то хоткеи могут работать, Enter запустит текущую иконку)

    Для понимания потренируйтесь так:

    sleep 100
    CTRL-Z
    jobs
    bg 1
    echo I am still in shell
    fg 1
    CTRL+C


    И второй момент - можно запустить программу в фоне, и отсоединить ее от текущего шелла вообще (запустить ее через nohup sleep 100 & и отключитья от сессии, или выполнить
    sleep 100 &
    jobs
    disown
    jobs
    ps aux | grep sleep

    в этом случае bg/fg уже не помогут, так как программа запущенная в фоне уже имеет другого родителя, и не подконтрольна внутренним bg/fg - вернуть ее как дочерний процесс под текущий шелл уже не выйдет.

    Поэтому Ctrl+C, Ctrl+Z - это просто сигнал который ты отправляешь в текущий "foreground" процесс, с которым ассоциирован stdin
    Ответ написан
  • Будет ли хорошим подспорьем сертификат DBA для бекенд-разработчика?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Те, кто работает именно как DBA, это не курсы.
    Там где DBA это действительно отдельная позиция, а не сисадмин, который бэкапы делает, там DBA это разработчик баз данных, раньше был в основном Oracle (SQL/PL), где логику бизнес приложений переносили в процедуры оракл базы, и считалось что Оракл такие расчеты будет выполнять лучше и быстрее, так как лучше знает как работать с собственными данными.
    Сейчас процедуры уже есть и в постгрес и в облачных базах.
    Обычно DBA-шник лучше понимает как должно работать приложение чем фронтендер или даже бэкендер - именно с точки зрения бизнес-флоу, точнее бизнес-данных флоу.

    И также есть разделение на высоконагруженные проекты.

    Правда в последнее время вести логику в базах выходит из тренда, и остается больше высоконагруженные приложения и облачные базы.

    Как это связано с бэкенд разработкой? Ну не знаю...
    Просто научитесь хорошо в SQL и nosql, а там решайте куда выхотите специализироваться.
    Ответ написан
    Комментировать
  • Для получения визы должно быть профильное образование?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Виза это вообще не про ИТ. Спрашивать и искать информацию нужно непосредственно в посольстве той страны, куда вы собрались.
    Политика получения визы может меняться из года в год, и то, что было 5 лет назад, на сегодня может вообще не работать.
    Визовый офицер вас может завернуть даже не объясняя причин и будет в своем праве.
    Опять же, смотря какую визу ты хочешь. Чтобы новичку без опыта получить визу, нужно быть исключительным и самостоятельным.
    Ответ написан
    Комментировать
  • Как начать понимать UML-схемы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    А может быть их и не нужно понимать, т.к. их редко используют?

    Именно так.
    Если часто будешь использовать, научишься понимать.
    Если редко - будешь разбираться, а потом забывать.

    Но UML это всего лишь один из вариантов, как фиксировать контракты. Может быть и достаточно удобный и стандартизированный, но не все им пользуются, ибо нарисовать UML это тоже время и задача.
    Ответ написан
    Комментировать
  • Почему Windows 10 не понимает символических ссылок Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    потому что windows умеет работать с NTFS, а не posix-файловыми системами.
    Чотбы понимал, надо юзать встроенный WSL или не юзать виндовс.
    Почитайте про то, как устроена файловая система Windows и Линукс, и поймете, что git не будет переносить сущности линукса на винду.
    Ответ написан
    Комментировать
  • Как быстро разобраться в чужом проекте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Доков особо нет. Что точно должно быть задокументировано?

    Все логины, пароли, хостинги, зависимости, версии использованного ПО и либ, структура БД, политика бэкапов.

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

    Если лениво поддерживать, то уведомив о рисках что проект неизвестный, можно неторопясь разбираться.
    Ответ написан
    Комментировать
  • Как проще и правильнее перенести одну запись из бэкапа?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Нет естественно. Никто не знает что у вас за структура и в каких таблицах что лежит.
    Нужно искать.
    Как вариант, админ мог удалить юзера, не удаляя его сообщения и заказы.
    Ну это нужно руками смотреть.
    Если у вас кастомный софт, то только самому лазить и искать все.
    Ответ написан
    Комментировать
  • Если я подниму свой DNS сервер, я смогу регистрировать домены бесплатно?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ну, допустим, я подниму свой DNS сервер дома. То я смогу сам добавить домены, чтобы получить их бесплатно? Смогут ли на такой домен зайти другие пользователи?


    В интернет существуют корневые DNS сервера и все домены первого уровня идут через них, дальше распределяются по зонам первого уровня и так далее. таким образом все DNS сервера иерархически связаны.
    С вашим же не будет связан никто.

    Ваши домены будут видеть только те, кто в своих настройках пропишет ваш DNS сервер напрямую.
    Ответ написан
    Комментировать
  • Как заархивировать папку в zip и сразу переместить в другую папку одной командой?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    а сразу делать в нужном каталоге?

    zip -r /MY/ANOTHER/DIRECTORY/danilkonev.zip /home/admin/web/danil-konev/
    Ответ написан
    Комментировать