Задать вопрос
  • Почему способ создания String влияет на результат сравнения?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Потому, что Java String pool
    (вопрос встречается на собеседованиях, кстати)
    Ответ написан
    Комментировать
  • Высшее образование Java программисту, нужно ли?

    @prince_pagani
    flutter developer
    уже 4 работа на собесах и слова про образование не промелькнуло хотя в HH требовали
    Ответ написан
    3 комментария
  • Высшее образование Java программисту, нужно ли?

    Zoominger
    @Zoominger
    System Integrator
    Образование, если у вас нет подтверждённого опыта работы - это огромный плюс.
    Если опыт есть (2-3 года), то с радостью возьмут и без образования.
    Ответ написан
    4 комментария
  • Как найти прямую ссылку на TV канал?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    1. DRM - всё уперается в него. По этому ссылки на любой телеканал, хоть платный или бесплатный, нельзя взять бесплатно от правообладателя.
    Если на территории канал транслируется бесплатно, то это не означает, что в интернете он должен быть так же легко доступным. В интернете должны быть ограничения по территории.
    2. Кто-то оформляет подписку у какого-то платного провайдера и берёт ссылку на поток от них. А далее два варианта. Легально смотришь или организовываешь ретрансляцию через своё оборудование и тогда таже наука2.0 становится практически бесплатной.
    Сервис выносят за границу, запрещают просмотр в стране базирования канала и всё. Условная наука2.0 может и не знать, что её транслируют, к примеру в Европе, бесплатно.
    3. Исходя из всего этого, вы не можете получить бесплатную ссылку hls на какой либо телеканал, так как телеканалы оберегают авторские права на контент, делают ограничения на трансляции и хотят окупить затраты на трансляцию в интернет.

    P/s вообще, вещатели любят работать с компаниями, которые будут ретранслировать их контент. Так они получат больше денег, больше аудиторию.
    А работать с отдельным клиентом им не выгодно.
    Ответ написан
    Комментировать
  • Восстановить ранее закрытые вкладки в Хроме?

    @TheBigBear
    СтарОдмины мы
    Нажать Ctrl+H
    проставить галочки
    нажать открыть
    ИМХО - это извращение держать столько открытых вкладок. Есть Избранное для хранения
    Да хоть эксельку создать со списком
    Ответ написан
    1 комментарий
  • Почему INSERT присваивает только один символ вместо полного значения?

    @SunTechnik
    У Вас тип данных в колонке: char, то-есть 1 символ.
    Туда больше данных не лезет....
    Ответ написан
    1 комментарий
  • Почему INSERT присваивает только один символ вместо полного значения?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Ну, наверное, потому, что тип поля CHAR(1) - то есть более одного символа в поле тупо не помещается.
    Ответ написан
    Комментировать
  • Как работает аутентификация Яндекса через QR-код?

    @knigaman
    Абсолютно банально работает эта схема. На бекэнде генерируется токен который отправляется в браузер и из него формируется QR код который ты и видишь. Каждую секунду (или другой промежуток времени) браузер делает запрос на сервер с этим токеном и ждет команды на вход в аккаунт или какое-то другое действие (к примеру отклонение входа или устаревание токена и, соответственно, QR кода - это нужно чтобы иногда менять QR коды в целях безопасности). Если мы со своей мобилы сканируем QR код и одобряем вход то с мобилы летит на бекэнд команда для одобрения входа. Когда браузер снова обратится на бекэнд с токеном то бекэнд поймет что этот токен одобрен и выдаст сессию браузеру (кукисы или jwt токены или еще что).

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

    UPD: Тут важный нюанс: если мы показываем токен в QR коде и потом им же стучимся на бекэнд за сессией то возникает уязвимость - любой прохожий отсканирует этот QR код и начнет в своем браузере стучаться с этим же токеном, ты одобряешь вход и в состоянии гонки злоумышленник может достучаться первым до бекэнда и перехватить твою сессию, а ты останешься с носом. Поэтому нужно генерировать пару открытый токен-закрытый токен. Открытый будет загоняться в QR код, а по закрытому будем стучаться к бекэнду за сессией. В этом случае не залазя в устройство перехватить вход будет невозможно.
    Ответ написан
  • Контейнер rabbitmq docker стартует раньше чем сервис nginx. Как указать согласованность запуска?

    @Zerg89
    Насколько помню если нужно согласовать несколько контейееров то это docker-compose
    И в нем должно быть что-то типа такого
    celery:
       depends_on:
         - rabbitmq # старт после старта контейнера rabbitmq
       command: sh -c './wait-for host:5432 -- cmd' # ожидаем
    Ответ написан
    4 комментария
  • Как такое сверстать?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    Держи
    Недавно нашли, нам очень помогло, переменные можешь так же, отрегулировать

    Можно еще что-то тут глянуть
    Ответ написан
    1 комментарий
  • Перевод бэкенда с PHP на NodeJs?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1-2: Фреймворк/ОРМ не принципиальны — накосячить и страдать можно абсолютно с любым или без. Определитесь для начала с вашими конкретными требованиями к нему, а уже потом собираете список подходящих под ваши требования, щупаете каждый и выбираете тот, что вам больше нравится.

    3: Описать в ОРМ модели на текущий момент времени и дальше новые миграции делать в рамках данной ОРМ. Ну и проверять на тестовой БД перед деплоем, конечно же.

    4: Нет, смысла нет. Сегодня оно есть — завтра нет или ещё что. А ещё есть проблемы совместимости и сама незрелость проекта. Производительность — понятие относительное. Если она вам нужна — для этого есть такие вещи как "Нагрузочные тесты", "Профилирование", "Оптимизация" и прочее. И использовать это надо тогда, когда у вас встанет такой вопрос. Ну или осваивать Go/Rust/C#/C++.

    Иметь внятные способы/библиотеки для WS-соединений

    uWebSocket — потому что на сях и активно развивается.

    возможность само-перезапуска в случае, если совсем "ой"

    pm2 или аналоги типа luster.

    бэк на js - тот же зоопарк, что и фронт на js. В связи с чем нужна помощь.

    Зоопарк сейчас вообще везде. Вот именно для помощи в вашем конкретном случае вам следует нанять опытного NodeJS разработчика как минимум для первичной консультации и регулярного общего контроля хотя бы. А именно: собрать ваши требования и детали по проекту, подготовить как минимум общее ТЗ и уже по результатам консультации принимать какие-то конкретные решения.
    Ответ написан
    Комментировать
  • Какие нужны навыки начинающему junior сис админу и каков его карьерный рост?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Компании разные, ставки разные, поэтому и требования довольно разнообразные. На старте полезно иметь кругозор пошире, знать как можно больше всего, пусть даже по верхам, и уметь быстро углубиться в пригодившуюся тему. С карьерным ростом специализация будет всё уже, а глубина знаний в выбранной области всё больше. Обычно из эникейшика админ вырастает в настоящего сисадмина, который не в принтерах копается и не под столами с обжимником лазит, а управляет серверами и активным сетевым оборудованием. Потом сисадмин сосредотачивается либо на сетях, либо на администрировании серваков какого-то определённого типа и превращается в сетевого инженера, администратора баз данных и т.п. Если админ ещё и код писать умеет, то часто превращается в devops'а. Впрочем, сейчас девопсами называют всех подряд, кто умеет настроить дженкинс и кубик. Параллельно со специализацией растёт и размер подответственной инфраструктуры, от десятка компов маленькой компании до сети транс-национальной корпорации, покрывающей территорию нескольких стран. На каком-то этапе роста появятся подчинённые, а потом и подчинённые у подчинённых. Появляется необходимость забивать голову всякими там ITIL'ами. И однажды себя обнаруживаешь на должности какого-нибудь там CIO.
    Ответ написан
    Комментировать
  • Туннель Wireguard — всё?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Судя по симптомам - да похоже на блок со стороны РКН.
    И да - в нынешних реалиях возможно поднять туннель, для вас можно начать с awg, чтобы решить проблему с наименьшими потерями времени в настройке.
    Ответ написан
    3 комментария
  • Туннель Wireguard — всё?

    smorman
    @smorman
    When In Rome do as The Romans do...
    Сделай обфускацию WG с помощью:
    Обфускация
    WG+Wstunnel

    и всё будет работать...
    Ответ написан
    Комментировать
  • Как опубликовать Django приложение, чтобы работали картинки .jpg?

    @Everything_is_bad
    Публиковал на render.com
    да когда же вы доки используемых сервисов научитесь читать https://render.com/docs/deploy-django#set-up-stati...
    Ответ написан
    Комментировать
  • Как проверить, наследует ли объект в обобщённом методе?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Получить список интерфейсов объекта из его типа и проверить есть ли среди них нужный вам универсальный интерфейс:
    if (item != null
        && item.GetType().GetInterfaces().Any(
            i => i.IsGenericType
            && i.GetGenericTypeDefinition() == typeof(IEnumerable<>))
        )
    {
        IEnumerable<object> collection = (IEnumerable<object>)item;
    }
    Ответ написан
    3 комментария
  • Как запустить две копии программы в Linux?

    Зависит от конкретной программы.
    Обычно достаточно просто два раза её запустить - будет два разных процесса.
    Если программа обращается к каким-то файлам, то надо смотреть в конфиг самой программы, как два разных экземпляра натравить на разные файлы (передать разные конфиги или working directory).

    Ещё может быть вариант, что программа требует эксклюзивного доступа к каким-нибудь ресурсам - тогда только при помощи виртуализации
    Ответ написан
    Комментировать
  • Почему после изменений в css на сайте нет изменений?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    во время разработки всегда используйте этот режим:

    spoiler
    68ed3b4cb4e83141316563.png


    и проблем у вас не будет.
    Ответ написан
    Комментировать
  • Что происходит с VLESS+REALITY на серверах aeza?

    @Drno
    массовая, не только у аеза
    spoiler

    Почему перестал работать ваш VLESS?
    Скорее всего, вы использовали популярный метод маскировки: в настройках вашего VLESS в качестве SNI был указан какой-нибудь "белый", разрешенный домен, например, www.google.com, cdn.discordapp.com или что-то подобное.

    До недавнего времени эта схема работала. DPI видел, что вы подключаетесь к IP-адресу вашего сервера, но в SNI было указано google.com. Система думала: "Ну, может быть, это какой-то хитрый роутинг, но раз домен хороший, пропущу".

    Новая логика блокировки РКН основана на несоответствии (mismatch):

    DPI видит ваш пакет: Он идет на IP-адрес вашего сервера (допустим, 12.34.56.78).

    DPI читает SNI: Внутри пакета он видит SNI, например, www.google.com.

    Проверка соответствия: Система DPI мгновенно делает DNS-запрос: "А какой реальный IP-адрес у www.google.com?". Она получает ответ, например, 142.250.203.196.

    Блокировка: DPI сравнивает IP-адрес назначения (12.34.56.78) с реальным IP-адресом из DNS-запроса (142.250.203.196). Они не совпадают! Это явный и очень надежный признак того, что кто-то пытается замаскировать свой трафик под Google. Такое соединение немедленно блокируется или обрывается.

    Вот что случилось с вашим VPN. Старый метод маскировки, когда SNI и реальный IP-адрес сервера не совпадали, был раскрыт и теперь активно блокируется.
    Ответ написан
    13 комментариев
  • В чем разница символической ссылки и скопированного пути?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Простой пример. Скрипт ежесуточно создаёт папку с текущей датой в названии и делает на неё символическую ссылку /some/directory/today. В настройках программы /some/directory/today указана как папка для сохранения каких-то файлов. В результате файлы каждый день сохраняются в отдельную папку, а программе не надо менять настройку.
    Ответ написан
    Комментировать