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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    А как работает маршрутизация в глобальной сети?

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

    Кто отвечает за выдачу IP-адреса абоненту провайдера?


    IANA

    Каким образом гарантируется, что один IP адрес не будет выдан двум и более устройствам?


    IANA выдает диапазон IP адресов региональным регистраторам. Те в свою очередь провайдерам. Все происходит по диапазонам, т.е. они не пересекаются.
    А каждый провайдер сам следит, чтобы выданные IP адреса у каждого клиента были разные (если он купил белый IP, т.к. обычный пользователь за NAT'ом сидит скорее всего)

    Что принимает решение, куда отправить интернет-пакет?


    Таблица маршрутизации

    Как выстраиваются цепочки маршрутизации?


    Тебе на L3 приходит пакет с X ip'шником. Ты смотришь, а есть в твоей локальной сети такие у-ва. Смотришь с кэш ARP, находишь MAC нужного у-ва и отправляешь ему (либо обновляешь ARP кэш).
    И так далее, пока есть дефолтный гейтвей и не знаешь таких устройств в своей локальной сети.

    Возможно ли изолировать отдельный сегмент интернета, не нарушив общую маршрутизацию?

    На это не знаю правильного ответа.

    Но знаю историю (очень расплывчато): в какой-то стране сломался какой-то провайдер и из-за этого сбоил интернет практически во всем мире. Точно не помню что за провайдер (да и провайдер вообще?).
    Короче говоря, все взаимосвязано
    Ответ написан
    6 комментариев
  • На каком языке лучше писать игры, если ты PHP-разраб?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Unity + C# (лайт) и Unreal Engine + C++ (хард)

    Но это мейнстримный ответ. Если по вопросу, то скорее всего тебе хочется написать что-то не на PHP, чтобы показаться серьезным программистом, либо не знаешь с чего начать.

    В любом случае, 1 и 2 вариант (выше) - это не простая задача. Unity и UE - это огромные фреймворки для самого широкого спектра задач и если тебе нужно сделать простенькую игру, то их (фреймворков) изучение будет оверхедом, займет большое кол-во времени.

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Я назвал 2 функцию не _end, а g и сработало. Возможно, gcc как-то по особенному интерпретирует это название - при дизассемблировании функции _end, даже не было.

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Явные блокировки таблиц, строк объявляются внутри транзакции. Следовательно, они тоже работают со снимком

    Откуда такие умозаключения?

    Для хранения блокировок используется отдельное место в общей памяти - они доступны всех бэкэндам.

    Снимки используются только для определения того, видны ли данные (кортеж) или нет - они локальны для каждого бэкэнда.
    Ответ написан
    Комментировать
  • Как правильно написать запрос на выборку данных в PostgreSQL?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Используй LEFT JOIN с группировкой и having фильтром. Примерно так:

    select m.id, min(s.sent_at) min_sent_time from message m 
          left join sent_log s on m.id = s.message_id
    group by m.id
    having min(s.sent_at) is null or min(s.sent_at) < :time;


    Вместо :time подставь свое значение
    Ответ написан
    Комментировать
  • Возможно ли ускорить выборку?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Не знаю бизнес-логику, но первый и второй запросы должны дать разные результаты - не факт, что у тебя ID будет указывать на точное расположение записи в этой таблице, т.е. LIMIT 100 OFFSET 95500 и WHERE id BETWEEN 95500 AND 95600 - это разные вещи.

    И еще - большая часть ресурсов уходит на то, чтобы вызвать jsonb_array_contents. ProjectSet узел дает больший вес. Скорее всего, это потому что там находится 95600 элементов в массиве.

    Скорее всего, ты хочешь реализовать пагинацию. В PostgreSQL для этого существуют курсоры:

    DECLARE array_elements CURSOR FOR
    select
      jsonb_array_elements(content->'blocks') as content
    from
      data
    where
      "order" = 2 and external_id = 1;


    А потом используешь его:

    FETCH 100 FROM array_elements;

    Но проблему это скорее всего не решит. Здесь лучше хранить эти элементы массива в другой таблице. Например, такой:

    CREATE TABLE array_elements(
       order integer REFERENCES data("order"),
       external_id integer REFERENCES data(external_id),
       element jsonb
    );
    CREATE INDEX array_elements_order_external_id_idx on array_elements(order, external_id);


    Использовать курсор при этом не запрещается.
    Ответ написан
    Комментировать
  • Как установить основную ОС на другой жесткий диск на уже запущенной машине?

    AshBlade
    @AshBlade Автор вопроса
    Просто хочу быть счастливым
    Все оказалось куда проще. Я накатил линукс с помощью qemu, но когда вставил не помогло.

    Но потом заметил, что там стояли 2 плашки озу, причем разные. Я на шару вынул одну и О ЧУДО о запустился. Вместе с VGA портом.
    Ответ написан
    Комментировать
  • Мультиязычность на python как стоит оптимизировать?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Либо кэшировать (что не особо трудно), либо храни это в сессии
    Ответ написан
  • Как использовать оконные функции в Order By?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Потому что сортировка происходит по названиям столбцов.

    Что ты хочешь получить, указывая ORDER BY w, какая логическая операция должна быть произведена? w это не скаляр, который можно сравнить, а внутренняя машинерия.

    Если хочешь по сумме этой отсортировать, то лучше так (добавить alias):

    SELECT sum(num) AS num_sum OVER w FROM my_table WINDOW w AS (PARTITION BY name) ORDER BY num_sum;
    Ответ написан
    Комментировать
  • Что делать с деобфусцированным кодом?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Почитал лицензионное соглашение (яндекс переводчик)

    4. Запрещается разрабатывать какие-либо производные версии, модифицированные версии или версии сторонних производителей для распространения на основе DESTOON полностью или в любой части.


    Я не юрист, поэтому как понял: Будешь распространять - накажут.
    Ответ написан
    2 комментария
  • Почему яндекс добавляет каналу ТГ "РКН: иностранный владелец ресурса нарушает закон РФ"?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Вообще-то, Яндекс добавляет это ко всем ссылкам телеграмма
    Ответ написан
  • Каков точный перевод термина concurrency?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Concurrency - термин, обозначающий в разработке одновременную согласованную скоординированную работу.


    Первый раз такое слышу. Отсюда взял?

    У этого термина нет точного перевода. Я просто говорю "concurrency", "параллельность", "конкурирующие". Вообще, есть много слов, которыми можно описать ситуацию, где concurrency на язык лезет
    Ответ написан
    1 комментарий
  • Каким образом можно подключить cshtml файлы на html при работе с представлениями asp net?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Подключаешь их как статические файлы и отдаешь
    Ответ написан
    Комментировать
  • Могут ли наказать разработчика open source проекта, если его код использовался во вредоносном ПО?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Смотря о какой стране мы говорим. В России например суды состязательны, то есть если тебе выдвинут эти обвинения, то надо будет доказать свою невиновность.
    Вообще, шанс влипнуть есть, но это если будет какой-нибудь состав преступления. Ведь ты можешь действительно в нем участвовать, но просто прикрываться добрым/пушистым владельцем библиотеки.
    Ответ написан
  • Как исправить ошибку при установке psd-tools "\meson.build:1:0: ERROR: Compiler cl cannot compile programs"?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Возможно, проблема с невыставленными переменными окружения. Если ты на винде вручную хочешь что-то скомпилировать, то необходимо запустить консоль разработчика (Developer Command Prompt) и дальше установить необходимые переменные окружения (команда call). Для 32 битной системы (целевой) - vcvars32.bat, для 64 - vcvars64.bat (путь к ним забыл, но где-то в пути Visual Studio, я их нашел с помощью проводника винды и да, для них нужно установить Visual Studio).

    После call vcvars64.bat уже можно запускать компилятор. Если работаешь через IDE, то после этого можно запустить ее через эту же консоль (я запускал VS Code, поэтому после call выполнял code D:/Path/To/Project)
    Ответ написан
  • Батчинг входящих запросов с неблокирующим ожиданием?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Когда-то решал уже похожую проблему. Только чтение батчей из кафки и сохранение в БД. Не знаю какой у тебя стек, но я решил так.

    Создаю Channel и BackgroundWorker, который из этой очереди читает. В эту очередь кладутся объекты по типу InsertContext. В ней хранится аргумент (данные для вставки), поле для результата и Task, который кончится по окончании.

    Работа bw организуется так (в вечном цикле):

    1. Читаем первую запись из Channel (infinite timeout)
    2. Создаем TaskCompletionSource с таймаутом и пока он не кончился читаем записи из Channel (без ожидания)
    3. Собираем все собранные данные
    4. Записываем их в БД
    5. В каждый элемент записываем результат и уведомляем о готовности


    Бесшовно добавить эту функциональность можно с помощью декоратора.

    Единственная проблема в данном случае - ошибки вставки. Если делать это единой транзакцией, то ошибка в 1 инвалидирует все. Но это можно обойти fallback'ом - если произошла ошибка, то вставляем по одному и ошибку возвращаем только тем, у кого они возникли
    Ответ написан
    1 комментарий
  • Почему в Python последовательность append-ов суммируется в O(n), а не в O(n logn)?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Потому что, здесь вступает в игру такое понятие как амортизированная сложность. Для динамических массивов, которые увеличиваются в несколько раз (т.е. не + 10, а *2 например), амортизированная сложность - O(1).
    Поэтому, у тебя O(n) * O(1) = O(n) (амортизированное)
    Ответ написан
    Комментировать
  • Важен порядок элементов в параметре типа список в SELECT чтобы избежать дедлока?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Да, в этом случае может быть дедлок. Общая рекомендация - сортировать такие списки переменных (еще и = ANY или in values).
    Ответ написан
    2 комментария
  • Почему не получается записать данные в память?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Попробуй вместо Read/WriteVirtualMemory - Read/WriteProcessMemory https://learn.microsoft.com/en-us/windows/win32/ap...
    Я так полагаю тебе надо работать с памятью другого процесса
    Ответ написан
  • Почему идентификатор TSID такой?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Чтобы уметь их сравнивать.
    Если использовать твое решение (без времени), то будет верным только 1 узел всегда (если в этом случае сравнение будет иметь смысл).
    Ответ написан