• Как выполнить перевод 8-ми битного отрицательного числа из десятичной системы счисления в шестнадцатиричную?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот из википедии. Как из положительного сделать отрицательное в формате ДК (дополнительный код).

    int twos_compl_abs(int a) {
        if (a < 0) a = (~a) + 1;
        return a;
    }


    Инвертируем и добавляем единичку.

    Для числа -100. Берем сначала по модулю. 100 - это 64 + 32 + 4

    0110 0100

    Инвертируем

    1001 1011

    И прибавляем 1

    1001 1100

    В хекс-системе тоже число будет

    9C
    Ответ написан
    Комментировать
  • Какие инструменты можно использовать для создания утилиты в консоли windows?

    @kalapanga
    В Windows всяких утилит много. А если ещё использовать powershell, то с огромной вероятностью можно обойтись без программирования. Хотя, написание скрипта - это уже тоже программирование. Так что дело вкуса - используете Вы встроенные средства системы или напишете на любимом языке своё приложение с блэкджеком...
    Рекомендую гуглить по такому сценарию:
    Windows командная строка "такое-то действие"
    или
    Windows powershell "такое-то действие"
    Ответ написан
    Комментировать
  • Какие инструменты можно использовать для создания утилиты в консоли windows?

    Adler_lug
    @Adler_lug
    Любой ЯП вам в помощь
    Ответ написан
    Комментировать
  • Для чего в модуле psycopg2 нужна функция wait_select?

    iglebov
    @iglebov
    Backend-разработчик
    Попробуйте добавить аргумент async=1 в функцию connect
    psycopg2.connect(ваши_аргументы_функции, async=1)

    Из репозитория psycopg2 в GitHub видно, что wait_select зачастую используется при асинхронном подключении.
    Скриншот фрагмента кода удалён модератором.

    Возможно вы обновили модуль и его поведение немного изменилось.
    Ответ написан
    1 комментарий
  • В каких проектах наиболее актуальна миграция БД?


    программу-утилиту для удобной миграции бд на питоне

    А не изучал альтернативы?

    А по нужности - в любом вебе, где схема базы меняется вместе с развитием проекта нужны миграции, очевидно.
    Ответ написан
    4 комментария
  • Почему именно при таком обращении к матрице мы получаем все ее элементы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты работаешь скорее всего не с матрицей а с зубчатым массивом (jagged array). Или его еще называют
    массив массивов. Кстати строки этого массива вовсе не обязаны быть равными. Тоесть не квадрат.
    Их можно делать разного размера. И если смотреть на них сбоку - то получается картинка "зубов".

    *(*(matrix + i) + j)
    в данном выражении идет 2 разыменования. Первый - прыжок на зуб. И второе - прыжок к нужной ячейке
    массива зуба.

    В альтернативном варианте - можно создать просто массив из 100 элементов и доступ получать по формуле

    matrix = new int[100];
    cout << matrix[j + i * 10]


    И этот подход более рациональный с точки зрения менеджера памяти. Мы выделяем 1 кусок а не 10.
    Что вобщем экономит память т.к. аллокатор может резервировать больше памяти чем мы запрашиваем.
    И с точки зрения когерентности по памяти это лучше т.к. мы точно знаем что соседние строки матрицы
    лежат физически рядом а не разбросаны черт знает где.
    Ответ написан
    3 комментария
  • Как в указатель на базовый класс вложить ссылку на класс наследник?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Правильно - вот так:
    object = new Kvadrat();

    Теоретически, можно было бы делать как вы пытаетесь:
    object = &kv;

    Но конкретно в вашем коде - это будет UB, потому что kv - это локальная переменная и у нее очень огранниченная область видимости - внутри if. И вот за пределеами этого if, где вы и попытаетесь, очевидно, использовать указатель object, эта локальная переменная будет уже уничтожена. У вас будет т.н. висячий указатель - указывающий туда, где данные были, а сейчас там может быть все, что угодно.

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

    Но лучше, все-таки, не плодить лишних сущностей и создавать объект сразу в куче с помощью new. Тогда он сам нигде не уничтожится.
    Ответ написан
    1 комментарий
  • Почему результат операции равен 3?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все правильно. 3 по модулю 10 это три.
    Ответ написан
    Комментировать
  • Почему 'ТНЭ-12' имеет тип unknown?

    phoinixrw
    @phoinixrw
    Архитектор информационных систем
    decodes(class_tne, 'ТНЭ-1Т'::text, all_cur, 0))  as generation_off_t


    Потому, что приведение типа надо делать, иначе как догадаться, что у вас:
    'a,b' - TEXT, CHAR(3), VARCHAR(), ...
    '1' - SMALLINT, INTEGER, BIGINT, TEXT, ... 
    '{a,b}' - TEXT[], CHAR(1)[], VARCHAR(...)[], ...
    '{1,2}' - TEXT[], SMALLINT[], INTEGER[], BIGINT[], ...
    '{"a":"b"}' - JSON, JSONB

    Поди догадайся, что имелось ввиду.
    Ответ написан
    Комментировать
  • Как правильно переопределить данную функцию в postgresql?

    @alexalexes
    1. Открываете функцию замены текста в тестовом редакторе.
    2. Включаете режим использования регулярных выражений.
    3. Используете регулярки:
    - для поиска:
    '([\-]*[\d]+)'
    - для замены:
    '$1'::character varying
    4. Если текстовый редактор подсвечивает результат поиска в тексте, то убедиться, что захватывается именно то, что нужно.
    5. Провести пошаговую замену текста (если не уверены в результате) или запустить полную замену.
    Ответ написан
    Комментировать
  • Можно при создании таблицы указать имя столбца в двойных кавычках?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Postgres по умолчанию - регистро-нечувствительный. И Oracle тоже.

    Тоесть можно сделать так.
    dh=> create table tab(id int);
    CREATE TABLE
    dh=> select * from tab;
     id 
    ----
    (0 rows)
    
    dh=> select * from TAB;
     id 
    ----
    (0 rows)

    Работать легко. Case-Insensitive. Как в языке Паскаль. И высоту регистра делать чисто для красоты. Например выделять ключевые слова SQL или сами идентификаторы.

    Но если по бизнес-задаче окажется что есть идентификатор для которого регистр ИМЕЕТ значение то мы его отковычиваем. Выглядит как при программировании на C++/Java. Вот в данном случае индекс FTS у нас записан аж тремя способами и все это разные колонки.

    dh=> create table "Market"("SnP" text, "FTS" text, "Fts" text, "fts" text);
    CREATE TABLE
    dh=> select * from "Market";
     SnP | FTS | Fts | fts 
    -----+-----+-----+-----
    (0 rows)


    Но работать в консоли становится неудобно. Больше надо клавиш нажимать.

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

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Да. Можно. Если в названии неоднозначность (пробел, например), то обязательно. Ещё пишут, что название в кавычках будет регистрозависимое, но подтверждение этому в документации не нашёл.
    Ответ написан
    1 комментарий
  • Почему тут выдает ошибку: syntax error at or near "WITH"?

    rozhnev
    @rozhnev Куратор тега SQL
    Fullstack programmer, DBA, медленно, дорого
    WITH RECURSIVE tmp AS (
        SELECT REPORT_DATE rdate FROM ODK_INT_rep_p2 WHERE ODK_INT_rep_p2id IN ( 
        SELECT nvl((SELECT ODK_INT_rep_p2id FROM ODK_INT_rep_p2 WHERE TYPE = 2 AND report_date = (SELECT report_date FROM ODK_INT_rep_p2 WHERE ODK_INT_rep_p2id = (SELECT max(ODK_REP_P2ID) FROM odk_svodka_skc2))),
           (SELECT ODK_INT_rep_p2id FROM ODK_INT_rep_p2 WHERE TYPE = 2 AND report_date = (SELECT report_date 
            FROM ODK_INT_rep_p2 WHERE ODK_INT_rep_p2id = (SELECT max(ODK_INT_rep_p2id) AS ODK_INT_rep_p2id 
            FROM ODK_INT_rep_p2 WHERE TYPE = 1 AND trunc(report_date)= trunc(current_timestamp))))) AS id1
             FROM
     dual)),
     WITH cte_months (day) AS (	
    ...   
     )
    Ответ написан
    Комментировать