Задать вопрос
  • Как работает эмуляция локальной сети?

    @Drno
    Это обычные VPN сервисы
    Связываются они через сервер с белым IP, по своим внутренним в VPN сети IP адресам
    Ответ написан
    Комментировать
  • Как работает эмуляция локальной сети?

    hint000
    @hint000
    у админа три руки
    Давайте разберём на примере шпионов. В городе N работают два глубоко законспирированных шпиона - Агент Икс и Агент Игрек. Каждый из них не знает, где живёт другой (серые адреса). Им и не полагается знать, чтобы если провалится один, он не смог выдать другого. Но для выполнения задания им нужно обменяться информацией. Для этого Агент Икс берёт свою рацию и связывается с Центром (сервер Hamachi, AnyDesk, AmmyyAdmin, TeamViewer и т.п., который имеет белый адрес и всегда готов к сеансу связи с любым агентом), передаёт (в зашифрованном виде, конечно), что у него такая-то информация для Агента Игрек. Через некоторое время Агент Игрек берёт свою рацию и связывается с Центром, ему говорят, что для него есть информация от агента Икс, он очень быстро обдумывает новые сведения (шпион должен быстро соображать) и передаёт (в зашифрованном виде, конечно), что у него такой-то ответ для Агента Икс. Через некоторое время Агент Икс берёт свою рацию... и т.д.
    Вот так могут общаться через Центр, хотя Центр не может сам с ними связаться и они напрямую не могут друг с другом связаться.
    А еще есть другой вариант. Агент Икс говорит Центру: назначаю рандеву Агенту Игрек в понедельник в час дня в цветочном магазине возле Эмпайр Стейт Билдинг; Агент Игрек выходит на связь, Центр передаёт ему место и время встречи и они встречаются напрямую, Центр уже не знает о чём они говорят или какими документами обмениваются. Это называется "пробитие NAT", для этого используются методы TURN или STUN и подобные, при которых Центр нужен только в момент установки связи, а дальше агенты общаются напрямую, пока не разорвут соединение. Как разорвали - им снова потребуется Центр для связи.
    Ответ написан
    7 комментариев
  • Как быть с кэшированием файлов (css, js, svg...) при их изменении?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    ведь его браузер новые стили не прочитает
    Бразуер кеширует конкретный файл. Соответственно, для сброса кэша просто меняют путь к файлу.
    Простой вариант: добавить get-параметр, в котором будет содержаться время последнего изменения. Но этот вариант требует чтения с диска на сервере, чтобы узнать mtime (не велика беда) и работает не со всеми reverse proxy (некоторые криво настроенные могут игнорировать get-параметры).
    Поэтому уже лет десять существуют системы сборки фронтенда, которые прямо в имя файла подставляю хэш от его содержимого. Сейчас это есть для абсолютно любой системы - gulp, webpack, что угодно.
    Называется это Cache Busting, вот вам первая попавшаяся статья: https://www.keycdn.com/support/what-is-cache-busting
    А ещё, кэш - это не только "не запрашивай файл 365 дней", там много различных функций: https://jakearchibald.com/2016/caching-best-practices/

    при их изменении на стороне клиента
    Такая формулировка подразумевает, что это клиент что-то меняет. Я уж обрадовался: "о, какой интересный вопрос, есть над чем подумать!"...
    Ответ написан
    2 комментария
  • Доступна ли работодателю эта информация?

    @Drno
    Если смотрят вашу анкету - узнают.
    Если не смотрят - не узнают
    Ответ написан
    2 комментария
  • Что можно делать с помощью Docker?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Docker это набор сервисов и утилит созданных для удобного управления встроенными в ядро Linux технологиями Namespace (для изоляции процессов) и CGroups (для управления ресурсами).

    По мимо Docker существует ряд инструментов призванных делать тоже самое Systemd-Nspawn, LXC, Podman, etc - все они работают похожим образом и точно так же изолируют Linux-овые процессы. Docker самый распространённый и популярный из-за стандартизации процесса сборки образа и удобных утилит для управления жизненным циклом контейнера, Docker это как libc - только в разрезе контейнеров.

    Контейнер можно запустить не имея ни одного из этих инструментов с помощью утилиты unshare - она позволяет точно также управлять Namespac-ами (управлять ресурсами придётся вручную добавив процесс в CGroups).

    Контейнер это изолированный Linux процесс - соответственно запустить получиться только Linux-овый софт и больше ничего. Контейнер это не маленькая виртуальная машина, контейнер это не Java для всего. Конетейнер это только средство запустить Linux-овый процесс в изолированной среде (и, возможно, ограничить его по ресурсам), например запустить приложение требующее наличия в системе конкретных зависимостей, но отсутствующих по факту. Или запустить в целях разработки конкретную версию PHP, Python, Ruby, etc при этом избежав конфликта зависимостей и Dependency hell из-за несовместимых библиотек на хостовой машине.

    Представь себе ситуацию, когда ядро Linux загрузилось и запустило только один (какой угодно) процесс, присвоив ему PID 1 - вот так контейнер выглядит изнутри.

    PS
    Есть конетйнеры на Windows Core они запустятся только на Windows и служат для изоляции только Windows софта и для них есть набор утилит, которые распространяются в виде набора бинарных файлов тоже, почему-то, под именемем Docker (не путать с Docker-Desktop, так как Docker-Desktop - это набор сервисов позволяющих виртуализировать ядро Linux и тем самым получить возможность запустить Linux процессы на Windows или MacOS).
    Ответ написан
    Комментировать
  • Как «обновить» ячейки SSD с данными?

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

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

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Просто смотрите на ножки/контакты под разными углами.
    Они всегда должны выглядеть как ровные ряды.
    Вообще замятый сокет/погнутые ноги - это из разряда брака - менее 1% случаев.
    Ответ написан
    2 комментария
  • Как узнать найти и извлечь PaReq, не будучи программистом?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Найти программиста, дать денег.
    Ответ написан
    Комментировать
  • Как правильно сложить дату-время в массив?

    bingo347
    @bingo347
    Crazy on performance...
    use chrono::prelude::*;
    use std::sync::mpsc;
    use std::sync::mpsc::{Receiver, Sender};
    use std::{thread, time};
    
    fn main() {
        println!("- - - - -");
        let mut children = Vec::with_capacity(3);
    
        for id in 0..children.capacity() {
            let child = thread::spawn(move || {
                let mut date_times = Vec::with_capacity(5);
                for i in 0..date_times.capacity() {
                    let t: DateTime<Local> = Local::now();
                    date_times.push(t);
                    println!("{:?}_ поток, задача _{:?}, время: {:?}", id, i, t);
                    thread::sleep(time::Duration::from_millis(3));
                }
                (id, date_times)
            });
    
            children.push(child);
        }
    
        for child in children {
            let (id, date_times) = child.join().expect("Дочерний поток паникует");
            println!("thd_{} = {:?}", id, date_times);
        }
        println!("- - - - -");
    }
    Ответ написан
    1 комментарий
  • Как кодировать аудио на ascii?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    UUE
    Возможно у вас частный случай задачи передачи двоичных данных через канал только тестовых символов. В текущих условиях имхо проще использовать base64.
    Ответ написан
    Комментировать
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

    И что делать с базой данных? Это тот еще вопрос. Я почти готов спорить что вы базу пилить не будете.
    И что в результате будет? Иммитация микро-сервисов? Где слабая связность?

    Тоесть если у вас нет таких кричащих ситуаций что оргазниация требует или нужно баланс
    нагрузки как-то разнести - то тебе вообще-вообще нет смысла ходить ни в какие микросервисы.

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

    Тоже очень полезно для управления сложностью. И пускай себе будет монолит зато будет сильный
    контроль за изменениями.
    Ответ написан
    6 комментариев
  • Что за шифр или комбинация шифров?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище так нельзя делать. Криптоанализ предполагает что ты знаешь что ищешь.
    Из какого приложения ты это скопировал? Что ожидается? Хешированный пароль?
    Магнитная ссылка? И мы должны знать контекст. А может ты взял задачу на cryptohack
    и пришел сюда за подсказкой? Так нельзя! Иди в тот форум и там спрашивай.

    У них условие даже есть что участники не обсуждали задачи на стороне.
    Ответ написан
    Комментировать
  • Как на ipthone поменять текс входящего смс?

    maccree
    @maccree
    freelance backend developer
    Никак
    Ответ написан
    Комментировать
  • Как на ipthone поменять текс входящего смс?

    @Drno
    попросить выслал смс с нужным текстом
    Ответ написан
    1 комментарий
  • Выходит ошибка tns:protocol adapter error?

    Lorien_Elf
    @Lorien_Elf
    Keep calm and drop database
    Например, могло поменяться значение на сервере в файле sqlnet.ora:
    SQLNET.ALLOWED_LOGON_VERSION=9

    Судя по логу, вы пытаетесь подсоединиться клиентом версии 9, для которой, возможно, выключен соответствующий протокол на сервере.
    Ответ написан
    Комментировать
  • Какие гипервизоры есть для замены Hyper-V / VMware по импортозамещению?

    @Drno
    Proxmox - дешего, сердито, удобно
    KVM из консоли - еще более надежно, но требует более высокой квалификации

    Насколько я помню российские системы построены на KVM + своя \ измененная веб морда
    Ответ написан
    6 комментариев
  • Можно ревью супергрязного(наверное) кода на с#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Найди .gitignore для шарповых проектов, чтобы не тащить мусор в виде временных и исполняемых файлов на гит
    Ответ написан
    Комментировать
  • Можно ревью супергрязного(наверное) кода на с#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже добрый сегодня.

    Общее впечатление что код - пенопласт. В нем очень много строк но очень мало бизнес логики.

    1) Во первых непонятно где фокусироваться. Смотреть формочки - не интересно они состоят в
    основном из шумящих событий которые радуют глаз но делают очень мало действий. Это как смотреть
    байткод LLVM или Java.

    2) Вот такой комментарий я-бы не писал. Он звучит как капитан-очевидность. И ежу понятно что это Main.

    /// <summary>
            /// Главная точка входа для приложения.
            /// </summary>
            [STAThread]
            static void Main()


    Если твой преподаватель требует - то пускай будет. Но я-бы убрал.

    3) Вот такие название как Classes, надо убрать. Они считаются дурным тоном. У тебя-же есть понимание
    что внутри? Вот прояви фантазию и дай какое-то бизнесовое название. У тебя в названии вообще висит
    газо-анализатор. Используй это.

    4) Вот здесь имеет смысл вводить поясняющую переменную. Это основы рефакторинга
    о которых писал Кериевски.

    Mixtures[mixture].measurementResults[cycle] = gasType == "mixture" ? concentration : Mixtures[mixture].measurementResults[cycle] - concentration;
            }//сохранение текущего результата в конкретный цикл конкретной смеси


    И комментарий должен стоять над кодом а не внизу.

    5) Я не знаю зачем в 21 веке так сложно конкатенировать строку. Это не Си и не Java1.1.

    table.GetControlFromPosition(i, table.RowCount - 1).Text = String.Concat("СКО", ":", Mixtures[i].sko.ToString());


    Вот я специально посмотрел в learn портал https://learn.microsoft.com/en-us/dotnet/csharp/ho... и там пишут что вполне можно брать операцию плюс или стринговую интерполяцию.

    Вобщем старайтесь писать меньше слов. Это - хорошая точка приложения сил для развития как разработчика.
    Ответ написан
  • Можно ревью супергрязного(наверное) кода на с#?

    @OwDafuq
    Вы промазали, это не фриланс, где можно заказать ревью кода.
    Но я сегодня добрый:
    0) ВинФормы не актуальны, извините, переходите в Web или WPF.
    1) Именования: что за Form1, Form2, Form...? Какую смысловую нагрузку они несут?
    2) Classes.cs где нет ничего похожего на названия файла? Имхо, но лучше уж MixtureController сделать отдельным файлом, Mixture так же, отдельным файлом и желательно куда-то в папочки это спрятать (первый статик класс, например, в Services, а второй, например, в Models).
    3) static - зло, тем более если у вас оно используется в форме для контроллов, поддерживать это будет очень больно и сломать будет очень просто. Не используйте static без надобности вообще.
    4) не используйте "+" для конкатенации строк, уже давно есть string.Format, интерполяция, StringBuilder и пр.
    5)
    mixture.cylinderNumber
    в C# принято называть публичные свойства в CamelCase, а не lowerCamelCase.

    За остальной код кто-то другой дополнит
    Ответ написан
    1 комментарий
  • Можно ли перепаять разъем на клавиатуре logitech g pro с micro USB на USB C?

    @alexalexes
    Не надо покупать дорогие клавиатуры как хлеб - не глядя.
    Эту клавиатуру верните в магазин, указав причину, озвученную в вопросе.
    Выберите уже другую клаву с бОльшим пристрастием к просмотру характеристик, отзывов, видеообзоров.
    Ответ написан
    Комментировать