Задать вопрос
  • Как в выборке sql обратиться к предыдущей записи?

    @shupike Автор вопроса
    Вы знаете, я, наверное, странноватый человек :-), но сделал в итоге вообще не так:
    ////////
    $result = pg_query($conn,"select name,model,inventory_code,s_n,device_type_code from public.main where device_type_code=1 order by main.s_n");
    if (!$result) {
    echo "An error occurred.\n";
    exit;
    }

    echo "
    Название Модель Инвентарный номер Поступил Число перемещений
    ";
    while ($row = pg_fetch_row($result)) {
    $serial_number = $row[3]; //записываем значение серийного номера в переменную $serial_number
    //и создаем вложенный запрос, в котором по каждому ноутбуку (по серийному номеру)
    //будем извлекать историю перемещений

    $result2 = pg_query($conn,"select main.s_n, employers.employer, history.date from main inner join (employers inner join history on employers.employer_code = history.device_code where s_n='$serial_number' order by history.date");>
    //полученные результаты сортируем по дате и подбираем самую свежую дату
    $count=0; //счетчик перемещений по каждому ноутбуку
    while ($row2 = pg_fetch_row($result2)) { //идем по выборке
    $last_date = $row2[2]; //собираем дату
    $last_owner = $row2[1]; //и владельца; последняя такая строка и будет последним владельцем ноутбука
    $count=$count+1; //считаем число перемещений устройства
    }
    $discount=$count-2; //спускаемся до предшественника
    //теперь смотрим нахождение ноутбука по последней дате - если это был Склад, то выводим в таблицу, если нет - пропускаем
    if ($last_owner == "Склад") {
    if($count=='1') {
    $owner_prev="Не было перемещений";
    }
    else {
    $row_prev = pg_fetch_row($result2,$discount);
    $owner_prev = $row_prev[1];
    }
    echo "
    $row[0] $row[1] $row[2] $last_date $count $owner_prev
    ";

    }
    }
    ///////
    И это работает - для контроля вывел еще один столбец (временно) с числом перемещений по каждой позиции. Предложенные варианты с DESC LIMIT2 не помогли, надо сказать.
    Ответ написан
  • Не работает VPN по мобильному интернету?

    @shupike
    Не знаю, кто там что банит - у меня и сейчас работает тупо Wireguard с сервером в Стокгольме (сам собрал на Убунте). Ну понятно, что там еще vless есть, но даже не задействую. Москва, если что.
    Ответ написан
    9 комментариев
  • Приложение для винды -- на чем написать новичку?

    @shupike
    Я вообще на древнем Visual C++ ваяю (6-я студия). И работает железно вплоть до Win11 (exeшник занимает сотни килобайт).
    Ответ написан
    Комментировать
  • Почему не удается авторизоваться под юзером postgres?

    @shupike Автор вопроса
    В итоге привел к такому виду:
    # DO NOT DISABLE!
    # If you change this first entry you will need to make sure that the
    # database superuser can access the database using some other method.
    # Noninteractive access to all databases is required during automatic
    # maintenance (custom daily cronjobs, replication, and similar tasks).
    #
    # Database administrative login by Unix domain socket
    local all postgres trust

    # TYPE DATABASE USER ADDRESS METHOD

    # "local" is for Unix domain socket connections only
    local all all trust
    # IPv4 local connections:
    host all all 127.0.0.1/32 md5
    host all postgres 192.168.20.0/24 md5
    # IPv6 local connections:
    host all all ::1/128 scram-sha-256
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local replication all trust
    host replication all 127.0.0.1/32 scram-sha-256
    host replication all ::1/128 scram-sha-256

    И да, я забыл, что пользователь Ubuntu и пользователь базы - разные вещи. Сделал вот так:
    sudo -u postgres psql
    и там:
    ALTER USER postgres PASSWORD 'postgres_password';
    Заработало и в консоли, и из pgAdmin. Попутно проапргрейдил версию сервера с 16 до 17. Всем огромное спасибо.
    Ответ написан
    Комментировать
  • Как вызвать Excel из приложения на Visual C++ 6 (MFC)?

    @shupike Автор вопроса
    Не поверите :-) - залез в архивы, нашел саму первую программку, где использовал OLE (еще в 2004), вспомнил, что нужно было вытащить определенные классы из *.olb-файлов (свои для Word и для Excel). Похоже, я сейчас просто перепутал - стал вызывать Excel классами Word'a... В итоге попробовал аккуратно и отдельно по Word и по Excel, но самое главное, что я забыл (даже записал теперь в ReadMe) - вот эти строки:
    BOOL COfficeApp::InitInstance()
    {
    // Initialize OLE libraries
    if (!AfxOleInit())
    {
    AfxMessageBox("Could not initialize COM dll");
    return FALSE;
    }
    AfxEnableControlContainer();
    Нужно было добавить в InitInstance() в файле *.cpp проекта - перед AfxEnableControlContainer(); Вроде заработало. Спасибо за поддержку в любом случае :-)
    Ответ написан
    Комментировать
  • Как настроить сохранение Отправленных в другой ящик?

    @shupike Автор вопроса
    Да надо бы научиться :-) - но тут больше проговорил проблему - уже полегче стало :-)
    Это оно?
    Set-Mailbox mary@contoso.com -MessageCopyForSentAsEnabled $true

    Updated: Нашел параметр, включил - при отправке сохраняется копия и в Отправленных делегированного ящика, и в своих Отправленных - а можно ли оставить только сохранение в делегированном ящике? Это уже в свойствах аутлука отключить сохранение Отправленных?
    Ответ написан
  • Как выполнять отладку на php?

    @shupike Автор вопроса
    Тем временем выкрутился просто через nano в консоли :-) - но на будущее присмотрю отладчик из перечисленных выше. Спасибо!
    Ответ написан
    Комментировать
  • Как в Exchange 2019 создать автоответ всем, кроме одного отправителя?

    @shupike Автор вопроса
    Вот смущает насчет отправки только один раз - это точно не подойдет. Нужно в любом случае отправлять ответ всем, даже одному и тому же отправителю столько раз, сколько он напишет. А просто правилами не получится выстроить такой алгоритм?
    Ответ написан
  • Почему поиск на Exchange стал работать только с определенной точки?

    @shupike Автор вопроса
    Проблема шире - оказалось, что после неудачного обновления 13 июля перестали индексироваться вновь поступающие сообщения. 22 июля я перезагрузил сервер, проверил sfc /scannow и посмотрел статистику по всем ящикам. Где-то 52 элемента непроиндексировано, где-то 1961. В зависимости от активности того или иного сотрудника. Но после перезагрузки и проверки системы новые сообщения уже стали попадать в поиск, образовалась как бы "дыра" с 13 по 22 июля. Почитал мануалы - рекомендуют в том числе перемонтировать такие ящики на другую базу. У нас 4 базы, попробовал этот метод - с некоторыми ящиками проблема полностью решилась, у некоторых все равно 5-7 элементов остаются непроиндексированными. Логику не вижу. Это что - вот так руками придется все 90 ящиков перемещать между базами, пока не исправится?
    Ответ написан
  • Почему не удается подключиться к Exchange через PowerShell?

    @shupike Автор вопроса
    Порядок, скрипт запускается и выполняет команды. Но остался нюанс - я запускаю от своей учетки, а нужно все это делегировать коллеге, а его учетка не входит в Organization Management (Microsoft Exchange Security Exchange Groups). И он не видит списка учетных записей в Active Directory, которые считывает скрипт при запуске. Достаточно будет его учетную запись добавить в эту группу? При этом он также получит полный доступ к управлению Exchange-сервером? Тут как бы хотелось ему предоставить только добавление/удаление ящиков, чтобы не зашел в ECP. Как это лучше реализовать?
    Ответ написан
  • Почему при перемещении сообщений они не исчезли с сервера?

    @shupike Автор вопроса
    Еще вот что недопонял - у меня в EAC роли Mailbox Import Export просто нет. Она должна быть или ее нужно создать?
    66421ea43c441095146777.jpeg
    Ответ написан
  • Как вывести сетевые папки через RemoteApp?

    @shupike Автор вопроса
    В итоге в коллекцию добавил explorer.exe, в параметрах прописал имя файлового сервера - теперь открывается через RemoteApp список сетевых папок. А как все-таки запретить копирование через RemoteApp? Ну чтобы пользователь не смог там увидеть проброшенные диски своего ноута и не скопировал что-нибудь.
    Ответ написан
  • Почему OpenVPN-клиент на роутере работает с лимитом скорости?

    @shupike Автор вопроса
    А точно никак повысить скорость в туннеле нельзя? Может, шифрование попроще сделать?
    Ответ написан