Задать вопрос
  • Как при вызове хранимой процедуры получать значения RAISE NOTICE?

    opium
    @opium
    Просто люблю качественно работать
    pyodbc нотисы из постгреса в норме не пробрасывает — ODBC-прослойка их теряет. Переходи на psycopg2.

    С ним всё просто: нотисы копятся в conn.notices уже после execute(). А если хочется ловить в реальном времени — переопредели список:

    class Log(list):
        def append(self, item):
            print(item.strip())
            super().append(item)
    
    conn.notices = Log()
    cur.execute("CALL my_proc()")


    Каждый RAISE NOTICE будет прилетать по мере буферизации, не ждать конца процедуры.
    Ответ написан
    2 комментария
  • Как запретить удаление полей класса?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Переопределить __delattr__?
    class foo:
        name: str
    
        def __delattr__(self, item):
            if item == "name":
                raise AttributeError(f"Нельзя удалять атрибут: '{item}'")
            #     print('что-то печатаем')
            #     pass  # или ничего не делаем
            super().__delattr__(item)
    
    
    tmp = foo()
    tmp.name = "test"
    try:
        del tmp.name
    except AttributeError as e:
        print(e)
    finally:
        print(tmp.name)


    >>>Нельзя удалять атрибут: 'name'
    >>>test
    Ответ написан
    3 комментария
  • Как перехватывать ввод со сканера?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    в C# можно все, что можно в винде, к примеру...
    internal static partial class user32
        {
            // hahdles
    
            [DllImport("USER32.DLL")]
            internal static extern int WaitForInputIdle(IntPtr hWnd, int dwMilliseconds);
    
            [DllImport("USER32.DLL", CharSet = CharSet.Auto)]
            internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            internal static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    
            [DllImport("user32.dll")]
            internal static extern byte VkKeyScan(char ch);
    
            //[DllImport("User32.Dll", EntryPoint = "PostMessageA")]
            [DllImport("User32.Dll")]
            internal static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
    
            [DllImport("User32.Dll")]
            internal static extern bool SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
    
            [DllImport("user32.dll", EntryPoint = "GetWindowText", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)]
            internal static extern int GetWindowText(IntPtr hWnd, StringBuilder lpWindowText, int nMaxCount);
    
            [DllImport("user32.dll", EntryPoint = "SetWindowText", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)]
            internal static extern int SetWindowText(IntPtr hWnd, string lpWindowText);
    
            [DllImport("user32.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            internal static extern bool IsWindowVisible(IntPtr hWnd);
    
            // Define the callback delegate's type.
            internal delegate bool EnumDelegate(IntPtr hWnd, int lParam);
    
            [DllImport("user32.dll", EntryPoint = "EnumDesktopWindows", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)]
            internal static extern bool EnumDesktopWindows(IntPtr hDesktop, EnumDelegate lpEnumCallbackFunction, IntPtr lParam);
    
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
            internal static extern IntPtr SendMessage(IntPtr handle, UInt32 message, IntPtr w, IntPtr l);
    
            internal static uint WM_CLOSE = 0x10;
            internal static void Close(this IntPtr hWnd) { SendMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); }
    
            [DllImport("user32.dll", SetLastError = true)]
            internal static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
    
            [DllImport("user32.dll", SetLastError = true)]
            internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
    
            [DllImport("user32.dll")]
            internal static extern int ShowWindowAsync(IntPtr hwnd, int nCmdShow);
            internal const int SW_MAXIMIZE = 3;
            internal const int SW_MINIMIZE = 6;
            internal static void Maximize(this IntPtr hWnd) { ShowWindowAsync(hWnd, SW_MAXIMIZE); }
            internal static void Minimize(this IntPtr hWnd) { ShowWindowAsync(hWnd, SW_MINIMIZE); }
    
            [DllImport("USER32.DLL")]
            public static extern bool SetForegroundWindow(IntPtr hWnd);
    
            [DllImport("USER32.DLL")]
            public static extern bool SetActiveWindow(IntPtr hWnd); 
    
            // grabs
    
            [DllImport("user32.dll")]
            internal static extern IntPtr GetForegroundWindow();
    
            [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
            internal static extern IntPtr GetDesktopWindow();
    
            [DllImport("user32.dll")]
            internal static extern IntPtr GetWindowRect(IntPtr hWnd, ref Bounds rect);
    
            // mouse
    
            [DllImport("User32.dll")]
            internal static extern void mouse_event(MouseFlags dwFlags, int dx, int dy, int dwData, UIntPtr dwExtraInfo);
    
            [Flags]
            internal enum MouseFlags
            { Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008, RightUp = 0x0010, Absolute = 0x8000 };
        }
    фрагмент кода из проекта бота поверх приложения написанного на qt, грабинг удался ))
    Ответ написан
    Комментировать
  • Какой девайс взять, чтоб за границей говорить и слушать иностранцев?

    Ge1i0N
    @Ge1i0N
    Переводчик от гугла вполне справляется, у него есть отдельный режим. Единственное, не в реальном времени будет, а "пошагово", сказали вы - перевело, сказал собеседник - перевело.
    В айфонах стандартный переводчик тоже в такое умеет.
    Ответ написан
    Комментировать
  • Какой девайс взять, чтоб за границей говорить и слушать иностранцев?

    Вы наверно стар трека насмотрелись? Я думаю, максимум на что вы можете сегодня расчитывать это на переводчики от яндекса или гугла на любом смартфоне, который вам нравится (ios или android имеется ввиду).
    Ответ написан
    3 комментария
  • Где найти воздушный ресивер?

    @AlexVWill
    А точно надо это все пневматически делать? Насколько я помню, все подобные установки работают механически, за счёт быстрого вращения двух валов, между которыми подаётся мяч. Удобно же, никакой пневматики, все работает от сети, значит не надо баллоны накачивать, проверять узлы на предмет удержания давления, допусков и т.д.
    Ответ написан
    Комментировать
  • Почему возникает синтаксическая ошибка: invalid decimal literal?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Открыть документацию, прочитать её и сделать в соответствии с инструкцией:

    class telebot.TeleBot(token: str)

    Ответ написан
    1 комментарий
  • Почему горит жёлтый индикатор над надписью dram на материнской плате при запуске компьютера?

    Adler_lug
    @Adler_lug
    Зачем что-то гуглить, если в инструкции на МП обычно описаны все индикаторы и что они означают на конкретно вашей материнской плате?
    Ответ написан
    Комментировать
  • Приложение для винды -- на чем написать новичку?

    GavriKos
    @GavriKos
    Микропетпроджект - https://voidtrack.space/
    C#.
    Ответ написан
    3 комментария
  • Как проверить наличие поля в JSON файле с помощью python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Применять метод .get() к строке не лучшее решение, попробуйте так:
    for item in response.json()['Employees']:
        first_name = item["User"]["FullName"]["FirstName"]
        last_name = item["User"]["FullName"]["LastName"]
        
        if "MiddleName" in item["User"]["FullName"]:
            middle_name = item["User"]["FullName"]["MiddleName"]
        else:
            middle_name = "отчество отсутствует"
        
        print(f"Имя: {first_name}, фамилия: {last_name}, отчество: {middle_name}")
    
    
    # Имя: Иван, фамилия: Иванов, отчество: Иванович
    # Имя: Петр, фамилия: Петров, отчество: отчество отсутствует
    Ответ написан
    Комментировать
  • Какая ошибка в коде?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. Составные конструкции имеет смысл писать так:
    case f of
        1 : begin 
                R1:=(a*sqrt(3)/4);
                writeln('R1=',' ',R1);
                { что-то ещё... }
            end;

    2. Есть большие сомнение что в R1 после этого: a*sqrt(3)/4) будет integer. Подумайте над этим.

    3.
    program case14;
    var f : integer;
    var a, R1, R2, S: Real; 
    begin
        writeln ('Введите цифру от 1 до 4 включительно!');
        Readln(f);
        Writeln('Введите значение стороны равностороннего треугольника');
        Readln(a);
    case f of
        1:  
            begin
                R1:=(a*sqrt(3)/4);
                writeln('R1=',' ',R1);
                R2:=R1*2;
                writeln('R2=',' ',R2);
                S:=sqr(a)*sqrt(3)/4;
                writeln('S=',' ',S);
            end;
    end;
    end.
    Ответ написан
    3 комментария
  • Как это можно расшифровать?

    ZERGeich
    @ZERGeich
    Во-первых, сообщение надо смотреть в HEXе, чтобы не было разночтений из-за символов в шрифтах.
    Во-вторых, надо исправлять кодировку или шрифт в терминале, чтобы русские символы отображались нормально.
    В-третьих: "Успешно: Процесс "ldplayer.exe", с идентификатором 17528, был завершен."
    Ответ написан
    1 комментарий
  • Как правильно реализовать большое приложение на c#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Организовать большую команду, состоящую из множества более маленьких команд, которые специализируются на своей части. Сам проект разбивается на множество более мелких проектов, а эти проекты на еще более мелкие модули. Для каждой задачи или группы проектов - своя команда. Разработка приложений такого объема занимают сотни тысяч и миллионы человеко-часов. Примерно так:
    1. Составляется краткое ТЗ
    2. Максимально подробно описывается проект в виде более детального ТЗ
    3. Нанимаете опытного IT менеджера
    4. Менеджер собирает команду для разработки частного ТЗ полностью со всеми деталями проекта
    5. На основе ЧТЗ формируются требования к командам для реализации проекта
    6. Подготавливается план разработки проекта
    7. Нанимается команда или команды сопровождения и поддержки - системные администраторы, менеджеры, аналитики, консультанты, бухгалтеры, юристы и прочие
    8. Организовывается рабочее пространство для команд разработки
    9. Нанимаются и организовываются команды разработки в соответствии с планом
    10. Ну и далее начинается основная работа - поэтапная реализация проекта
    Ответ написан
    Комментировать
  • Как удалить "лишнюю" языковую раскладку в Windows 10?

    @VasilKo
    Если нужно удалить раскладку клавиатуры которой - внимание - нет и в одном из установленных языковых пакетов, надо в реестре ключа в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout добавить IgnoreRemoteKeyboardLayout со значением 1:
    FileDownloadHandler.ashx?fid=36baf703-7b
    как указано на сайте Майкрософт
    https://answers.microsoft.com/ru-ru/windows/forum/...
    Ответ написан
    3 комментария