• Существует ли сайт-браузер или VPN без клиента?

    HMB
    @HMB
    Ответ написан
    Комментировать
  • Не работает таблица прерываний(IDT). Что делать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем может быть проблема?

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

    Вот эта структура:
    struct IDTPtr {
        uint16_t limit;
        uint32_t base;
    };

    должна быть определена с атрибутом packed, иначе компилятор вставляет паддинг для выравнивания поля base на границу uint32_t, из-за чего в IDT загружается неверный адрес.

    Ну и, вдобавок, нельзя делать iret из середины с++-функции, потому что компилятор организовал в ней кадр стека и вместо возврата iret снимает и интерпретирует мусор из этого кадра:
    001000e6 <SimpleOS::IDT::dividing_by_zero()>:
      1000e6:       55                      push   %ebp
      1000e7:       89 e5                   mov    %esp,%ebp
      1000e9:       53                      push   %ebx
      1000ea:       83 ec 04                sub    $0x4,%esp
      1000ed:       e8 15 01 00 00          call   100207 <__x86.get_pc_thunk.ax>
      1000f2:       05 06 11 00 00          add    $0x1106,%eax
      1000f7:       83 ec 0c                sub    $0xc,%esp
      1000fa:       8d 90 08 fe ff ff       lea    -0x1f8(%eax),%edx
      100100:       52                      push   %edx
      100101:       89 c3                   mov    %eax,%ebx
      100103:       e8 4c 00 00 00          call   100154 <SimpleOS::Terminal::print(char const*)>
      100108:       83 c4 10                add    $0x10,%esp
      10010b:       fa                      cli
      10010c:       cf                      iret
      10010d:       90                      nop
      10010e:       8b 5d fc                mov    -0x4(%ebp),%ebx
      100111:       c9                      leave
      100112:       c3                      ret
    Ответ написан
    9 комментариев
  • Как хранить диффы изменений файлов?

    grantur5707
    @grantur5707
    Full Stack Web Developer
    Вы можете хранить изменения файлов как набор патчей где каждое изменение записывается в виде разницы между состояниями файла. При чтении файла можно применить все патчи к базовому состоянию файла, чтобы получить актуальный контент.

    Пример кода для создания базового патча:
    struct FilePatch {
        int lineNumber;
        char* oldLine;
        char* newLine;
    };
    
    struct FileDiff {
        FilePatch* patches;
        int patchCount;
    };
    
    void applyDiff(char** fileContent, FileDiff* diff) {
        for (int i = 0; i < diff->patchCount; ++i) {
            int lineNumber = diff->patches[i].lineNumber;
            fileContent[lineNumber] = diff->patches[i].newLine;
        }
    }
    Ответ написан
    Комментировать
  • Что меняется при установке tsc=unstable в параметрах ядра?

    @dronmaxman
    VoIP Administrator
    на что влияет параметр tsc

    Если включить tsc=unstable:
    - Игнорируется TSC как источник времени, если он обнаружен как нестабильный.
    - Переключение на альтернативные таймеры, которые могут быть более стабильными, но немного медленнее в работе, например HPET или ACPI PMTIMER.

    Насколько я вычитал из гугла, это не баг, а следствие кучи технологий сохранения энергии типа динамической частоты, снижения энерго потребления. Процессору, а особенно двум тяжело синхронизировать время и они переходят на другой способ синхронизации HPET, что в свою очередь незначительно понижает производительность. Кстати HPET надо включить в bios (High Precision Event Timer).

    В большинстве задач использование HPET снизит продуктивность процессора на 1-3%, для виртуализации это может быть около 10%. Все зависит от систем которые будут использоваться, насколько эти системы критичны к времени, например база данных.

    Можно попробовать поиграться с настройками BIOS выключив настройки энегро экономии, разные acpi sleep state, dynamic frequency, C-states або SpeedStep

    Возможно есть свежий bios в котором пофиксили проблему. Более свежее ядро linux так же может помоч.
    Ответ написан
    2 комментария
  • Sury.org заблокирован для России?

    @NotSlow
    На упомянутом немецком зеркале только x86 и нет для arm (малинок например).
    Еще один вариант решения - поменять везде .org на .su
    Т.е. packages.sury.org -> packages.sury.su и все заработает безо всяких 451
    Это прозрачный прокси через евро-хост, там ровно тоже самое, что на .org
    https://sury.su/
    Ответ написан
    Комментировать
  • Почему youtube и google думают что я в Украине, хотя vpn стоит в Германии?

    @Misteg
    У google своя геобаза. До вас кто-то купил vps с этим IP и использовал его в Украине. Google хочет показывать IP адресу нужную рекламу и дополнительно определяет местоположение IP адреса по геолокации с телефона, ближайших точек Wi-Fi и телефонов вокруг. Не волнуйтесь, через некоторое время Google поймет что вы из России.
    Ответ написан
    Комментировать
  • Сколько оперативной нужно веб серверу?

    @Ozzarius
    Сервер Вацап на первом этапе с 96 гб памяти
    обслуживал 1 млн пользователей. Посмотрите конфигурацию этих серверов в интернете, и учитывайте что у них была репликация бд, highload 24/7... При этом они ни разу ни зависли, очень грамотная репликация и самого сервера приложения.
    Ответ написан
    1 комментарий
  • Можно ли с помощью vpn снова нормально смотреть youtube?

    @Drno
    Можно. Только ставить туда надо не опнеВПН, а sstp.
    Либо использваться xray vless+reallity - например панель с вебИнтерфесом - 3x-ui
    Готовьтесь, будет только хуже к сожалению
    Ответ написан
    Комментировать
  • Что это означает Warning: 1265 Data truncated for column?

    MasterGerold
    @MasterGerold Автор вопроса
    Проблема решилась таким способом. У меня стоит поле ENUM ''0,'1' а default стоит NULL. И на сколько я понимаю значение NULL длиннее чем 0 или 1. И когда я задаю напрямую 0 или 1 то всё работает. Спасибо Евгению за помощь!
    Ответ написан
    2 комментария
  • А возможно ли сделать свой дублирующий хостинг-сервер?

    @Timertatar
    Вопрос немного непонятно. Если вопрос состоит 7/24/365 работы хостинга, тогда уж иди на цод тиер3.
    А если прерывать на пару часов, максимум пол дня и некто не обидеться, тогда достаточно VDS+свой сервер.(На vds ставишь реверспрокси, впн, а сервера подключаешь к vds через впн).
    Но можно масштабировать. Vds+сервер дома, сервер на работе, сервер у друга и т.д. собрать кластер для отказоустойчивости. У меня сервера простые, по 5000 руб себестоимости( всякие i3 3220 , xeon 775сокета) главное качественно запитать и усе. Работает годами. Все на proxmox.
    Ответ написан
    Комментировать
  • Откуда берется /*!40001 SQL_NO_CACHE */ в запросе при создании дампа?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Отвечу всё же на заданный вопрос:
    Откуда это берется вообще? /*!40001 SQL_NO_CACHE */ и как это убрать?

    Это - комментарий с фрагментом запроса, специфичным для MySQL.

    Помещается в тело запроса (в т.ч. в дамп) для того, чтобы запрос, использующий какую-либо специфичную для MySQL конструкцию, мог быть выполнен в другом SQL-диалекте без внесения изменений в текст запроса. Т.е. MySQL обрабатывает содержимое такого комментария так, словно этот фрагмент не закомментирован, тогда как другие СУБД проигнорируют этот фрагмент как комментарий.

    Опциональное пятизначное число указывает минимальную версию MySQL, начиная с которой содержимое комментария должно обрабатываться (в показанном фрагменте - это версия 4.00.01), на более младшей версии комментарий останется комментарием. При его отсутствии (используется только /*!) - код из комментария обрабатывается любой версией.

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

    dyuriev
    @dyuriev
    A posteriori
    Да

    Вернее sury.org заблокировал Россию

    Пруф: https://github.com/oerdnj/deb.sury.org/issues/2155
    Ответ написан
    3 комментария
  • Есть ли готовые решения, для отмены действий на сайте, как бы SQL-undo?

    @alexalexes
    Проектируйте структуру базы данных так, чтобы сохранялась полная история действий над каждым классом данных, словно сохраняете лог для спец. служб.
    Api пользователя не должно использовать DELETE, только INSERT, и UPDATE только для выставления даты удаления записи, выставления метки последней актуальной записи истории. Операцию DELETE имеет право использовать только служебный метод для зачистки истории, когда устаревшие записи становятся неактуальными ни для одного актора системы.
    Ответ написан
    Комментировать
  • Как на PHP реализовать светофор?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Никакой интервал тут не нужен, достаточно знать точку отсчёта и стартовое состояние (у вас про них ничего не сказано, но за стартовое состояние по условию можно засчитать зелёный) и использовать простейшую математику, чтобы вычислить текущий сигнал.
    Хотя, если под вводимыми минутами понимается не таймстамп, а количество, прошедшее со времени включения, то в задаче есть все вводные для её решения элементарным алгоритмом.
    А сделать интерактивную смену на php вы всё равно не сможете*.

    *ну, есть, конечно, костыль с meta-тегом refresh, но это уже не про php.
    Ответ написан
    Комментировать
  • Как исправить ошибку JSON Parse Error: Expecting 'STRING' из результат json?

    @pantsarny
    function fixJSON($json) {
        $regex = <<<'REGEX'
    ~
        "[^"\\]*(?:\\.|[^"\\]*)*"
        (*SKIP)(*F)
      | '([^'\\]*(?:\\.|[^'\\]*)*)'
    ~x
    REGEX;
    
        return preg_replace_callback($regex, function($matches) {
            return '"' . preg_replace('~\\\\.(*SKIP)(*F)|"~', '\\"', $matches[1]) . '"';
        }, $json);
    }
    Ответ написан
    Комментировать
  • Facebook + Russia = fail при отправке confirmation code?

    DeusModus
    @DeusModus Автор вопроса
    Пришлось попросить товарища из Лондона дать его номер. Facebook мировая сеть. Да уж.
    Ответ написан
    1 комментарий
  • Какая есть литература про парсинг различных форматов данных?

    GavriKos
    @GavriKos
    У каждого формата есть спецификация - вот ее и читайте
    Ответ написан
    Комментировать
  • Как получить случайную дату между двумя датами?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Вычислить разницу между датами в днях/часах/минутах/секундах (смотря какая точность нужна) =INTERVAL
    Сгенерировать случайное число в диапазоне от 0 до INTERVAL =RAND
    Прибавить к начальной дате RAND дней/часов/минут/секунд
    Ответ написан
    Комментировать
  • Как получить случайную дату между двумя датами?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Посчитать число дней между датами,
    Получить случайное целое от 0 до этого числа дней.
    Добавить к меньшей дате полученные случайные дни.
    $start = new DateTimeImmutable('1878-10-11');
    $finish = new DateTimeImmutable('2009-10-13');
    $interval = $start->diff($finish);
    $daysDiff = $interval->format('%a');
    $randomDays = rand(0, $daysDiff);
    $randomDate = $start->add(new DateInterval("P${randomDays}D"));
    
    echo $randomDate->format('Y-m-d'); // 1896-06-24
    Ответ написан
    Комментировать
  • Как получить случайную дату между двумя датами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ничто не мешает таймстампу быть отрицательным.
    $t1 = (new DateTimeImmutable('1900-01-01T00:00:00'))->getTimestamp();
    $t2 = (new DateTimeImmutable('1950-01-01T00:00:00'))->getTimestamp();
    $t = rand($t1, $t2);
    print (new DateTimeImmutable())->setTimestamp($t)->format(DateTimeInterface::RFC3339);
    // 1915-10-14T19:08:14+00:00
    Ответ написан
    Комментировать