LINUX.ORG.RU

Сообщения Xintrea

 

Зачем стандарт C++ 2003 года спрятали на официальном сайте open-std.org ?

Читаем статью:
https://webhamster.ru/mytetrashare/index/mtb0/16272556495cc7p2ixec

Переходим на официальную страницу стандартов:
https://www.open-std.org/JTC1/SC22/WG21/docs/standards

Нажимаем на N1316 в надежде получить стандарт 2003.

А нам вместо стандарта требуют ввести логин/пароль. Зачем? Другие стандарты доступны, а этот - нет. Это что за? Для чего?

 , ,

Xintrea
()

Баг в QColorDialog на Qt 5.15.8 ?

Имеется следующий код, который вызывает окно диалога выбора цвета:

QColor selectedColor;
QColor currentColor(Qt::white);

selectedColor = QColorDialog::getColor(currentColor,
                                       this,
                                       tr("Select color"),
                                       QColorDialog::ShowAlphaChannel );

Проблема в том, что нормально выбрать цвет невозможно: в окне, где нарисована градиентная цветовая «радуга», клик мышкой не приводит к выбору цвета.

Крестик выбора цвета, который перемещается вместе с курсором мышки, по-хорошему должен остаться на том месте, где кликнули мышкой. Но этого не происходит: он все время привязан к мышке. И поэтому когда пользователь кликает на нужный цвет, потом двигает мышку к кнопке Ok, то выбранный цвет меняется вместе с движением мышки.

Что за дичь? Это у меня одного так?

Система: Debian GNU/Linux 12.12, Qt 5.15.8.

UPD1: Минимально работающий пример (14 дней на хранение): https://dropmefiles.com/HDZaX

UPD2: Минимально работающий пример с CSS-стилем, который вызывает баг: https://dropmefiles.com/EiFba

 , , , ,

Xintrea
()

А чем нынче соединяются с Linux по SSH из-под Windows 10?

Вчера потребовалось зайти на Debian Linux хост из-под Windows.

1. По старой памяти скачал Putty, запустил, открыл соединение, увидел приглашение логина. При нажатии любой клавиши - вылет. Стал искать причину, посмотрел журнал, искал в интернете по тексту ошибки в журнале. Ничего не нашел. Только жалобные всхлипы, что Putty сегфолтится на логине, никто не знает почему. И все предлагают переходить на Kitty, типа Putty устарел.

2. Поставил Kitty. При логине виден только быстро мигающий курсор. Даже текста приглашения ввода логина не видно - ни одного символа не приходит. Найти причину неработы не смог.

3. Поставил mRemoteNG. Приглашение логина видно, после ввода логина запрашивается пароль. И как бы не вводил пароль, пароль не проходит и пишется Access denied.

4. Для проверки пароля зашел на Android-телефоне через Termux: «ssh myhost.com» - все работает, пароль проходит, SSH-соединение устанавливается.

Может, что-то с виндой не то (винда не моя, как ее мучали - я не знаю). Не помогает отключение виндового брандмауера. В системе нет антивируса. Как понять что не так - мне не ведомо.

Вопрос: чем опенсорчным нынче открывают SSH-терминал под Windows 10?



Перемещено hobbit из general

 , , , ,

Xintrea
()

Три года не мог увидеть иконки в Debian под LXDE. Наконец, я это сделал.

Предыдущая тема ушла в архив:

Нет иконок в стабильном Debian 11 - KolourPaint, Kwrite и другие

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

Как в Debian Linux настроить иконки в LXDE, если они отсуствуют

Сегодня, наконец, разобрался в этом вопросе.

Если кому интересно, то решение находится в статье:

Как заставить отображаться иконки в Debian 11, Debian 12 в программах KolourPaint, KWrite, Kate и других KDE приложениях?




Перемещено hobbit из general

 , , , ,

Xintrea
()

Чего у меня GitHub стал доступен раз-через-десять?

Пытаюсь с VPS на ihor.online получить что-нибудь с GitHub:

> wget "https://raw.github.com/xintrea/mytetra_syncro/master/base/1334038461klkfqycs96/text.html"
--2025-09-18 12:06:09--  https://raw.github.com/xintrea/mytetra_syncro/master/base/1334038461klkfqycs96/text.html
Распознаётся raw.github.com (raw.github.com)… 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Подключение к raw.github.com (raw.github.com)|185.199.108.133|:443... ошибка: Время ожидания соединения истекло.
Подключение к raw.github.com (raw.github.com)|185.199.109.133|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 503 hostname doesn't match against certificate
2025-09-18 12:08:19 ОШИБКА 503: hostname doesn't match against certificate.

Раза с десятого файл скачивается. Но чаще не скачивается.

На локальном провайдере тоже невозможно получить файлик:
> wget "https://raw.github.com/xintrea/mytetra_syncro/master/base/1334038461klkfqycs96/text.html"
--2025-09-18 12:05:59--  https://raw.github.com/xintrea/mytetra_syncro/master/base/1334038461klkfqycs96/text.html
Распознаётся raw.github.com (raw.github.com)… 185.199.108.133, 185.199.110.133, 185.199.109.133, ...
Подключение к raw.github.com (raw.github.com)|185.199.108.133|:443... ошибка: Время ожидания соединения истекло.
Подключение к raw.github.com (raw.github.com)|185.199.110.133|:443... ошибка: Время ожидания соединения истекло.
Подключение к raw.github.com (raw.github.com)|185.199.109.133|:443... ошибка: Время ожидания соединения истекло.
Подключение к raw.github.com (raw.github.com)|185.199.111.133|:443... ошибка: Время ожидания соединения истекло.
Подключение к raw.github.com (raw.github.com)|2606:50c0:8002::154|:443... ошибка: Сеть недоступна.

Что вообще происходит? Проблема на чьей стороне?


Перемещено hobbit из general

 , , ,

Xintrea
()

Через 20 минут после загрузки системы, PulseAudio само перенастраивается (Debian 12 без PipeWire)

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

Имеется Debian 12 с удаленным PipeWire (ведь все знают что в Debian 12 по-дефолту зачем-то ставится и PulseAudio и PipeWire, и они дерутся друг с другом за устройства). Debian запущен на ноуте HP 450, карта только та которая на борту, никаких внешних звуковух нет.

После загрузки системы, через ~20 минут, если пользоваться приложениями которые воспроизводят звук, что-то происходит с PulseAudio. Например, VLC перестает воспроизводить звук и пишет ошибки:

[00007ff680c17bf0] avcodec decoder: Using OpenGL/VAAPI backend for VDPAU for hardware decoding
[00005624e12f8310] pulse audio output error: overflow, flushing
[00005624e12f8310] pulse audio output error: overflow, flushing

Я заморочился, и снял вывод утилит с общей информацией об звуковой системе до и после отвала звука:
alsa-info
pacmd list-sinks
pacmd list-sources

Вот ссылки на консольный вывод.

До: https://webhamster.ru/mytetrashare/index/mtb0/1755634406ol8t7ca9if
После: https://webhamster.ru/mytetrashare/index/mtb0/1755637817tjfk5n8hov

Можно сравнить через Meld или чем там удобнее.

И отличия таки есть:
437c437
<   Converter: stream=0, channel=0
---
>   Converter: stream=5, channel=0

448c448
<   Converter: stream=0, channel=0
---
>   Converter: stream=5, channel=0

454c454
<   Converter: stream=0, channel=0
---
>   Converter: stream=1, channel=0

673,674c673,674
< crw-rw----+ 1 root audio 116,  3 Aug 19 23:02 /dev/snd/pcmC0D0c
< crw-rw----+ 1 root audio 116,  2 Aug 19 23:09 /dev/snd/pcmC0D0p
---
> crw-rw----+ 1 root audio 116,  3 Aug 20 00:05 /dev/snd/pcmC0D0c
> crw-rw----+ 1 root audio 116,  2 Aug 20 00:01 /dev/snd/pcmC0D0p

693c693
<   Subdevices: 1/1
---
>   Subdevices: 0/1

975,976c975,976
<                 value.0 0
<                 value.1 0
---
>                 value.0 3
>                 value.1 4

1309c1309
<         suspend cause: IDLE
---
>         suspend cause: (none)

1320c1320
<         sample spec: s16le 2-канальный 4410
---
>         sample spec: s16le 2-канальный 4800

1324,1325c1324,1325
<         linked by: 0
<         configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
---
>         linked by: 1
>         configured latency: 0.00 ms; range is 0.50 .. 1837.50 ms

1381c1380
<         suspend cause: IDLE
---
>         suspend cause: (none)

1390c1389
<         sample spec: s16le 2-канальный 4410
---
>         sample spec: s16le 2-канальный 4800

1395c1394
<         configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
---
>         configured latency: 0.00 ms; range is 0.50 .. 1837.50 ms

Сверху - было, снизу - стало.

Вот. Что и где надо крутить, чтобы звук нормально работал? Как понять, из-за чего происходит перенастройка? И почему после этой перенастройки звук отваливается?



Перемещено hobbit из general

 , , ,

Xintrea
()

Банк ВТБ заставил меня начать параноить

https://webhamster.ru/site/page/index/main/news/792

Оказывается, с некоторых пор процедура входа через десктопный браузер изменилась. Пользователю предлагается задать 4-6 значный код для удобного доступа к системе. Отказаться от этого нельзя.

Теперь мои параноидальные пароли over 25 символов не нужны. Все гораздо проще. Зашибись.

Пока что вместо задания этого кода я отказался от услуг ВТБ: код не задал, соответственно пользоваться сервисом не могу. Правильно ли я сделал?

 банк,

Xintrea
()

Качество книжек по Rust

Решил посмотреть что есть на русском языке по Rust для старта, и каково качество оригинала и перевода. Нашел книжку https://doc.rust-lang.ru/book/, решил посмотреть, хватит ли моих утомленных мозгов чтобы осилить введение в язык. Споткнулся в самом начале на элементарном примере:

io::stdin().read_line(&mut guess)
Вот что там написано:

Главная задача read_line — принять все, что пользователь вводит в стандартный ввод, и сложить это в строку (не переписывая её содержимое), поэтому мы передаём эту строку в качестве аргумента. Строковый аргумент должен быть изменяемым, чтобы метод мог изменить содержимое строки.

У меня когнитивный диссонанс. В одном предложении автор пишет что ввод надо сложить в строку, не переписывая ее содержимое. Окей. В следующем предложении написано, что аргумент должен быть изменяемым, чтобы метод мог изменить содержимое строки. Так будет переписываться строка или не будет?

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

Далее:

одним из главных преимуществ Rust является безопасность и простота использования ссылок. Чтобы дописать эту программу, вам не понадобится знать много таких подробностей. Пока вам достаточно знать, что ссылки, как и переменные, по умолчанию неизменяемы. Соответственно, чтобы сделать её изменяемой, нужно написать &mut guess, а не &guess. (В главе 4 ссылки будут описаны более подробно)

Что значит, что по умолчанию ссылки неизменяемы? Ведь мне только это достаточно знать. Неизменяем «адрес», хранимый в ссылке, или неизменяемы данные, на которые указывает ссылка? Что делает синтаксис «&mut guess» ? Он дает меняться «адресу», чтобы ссылка могла указываеть на другую область памяти, или дает меняться данным, на которые указывает ссылка? Почему, блин, с самого начала людей оставляют в неизвестности, не объясняя что конкретно происходит? Концепция владения в гл. 4 тут вообще не при чем.

Почему я пишу слово «адрес» в кавычках? Потому что я не смог понять, что такое ссылка. Поэтому я не понимаю механизм работы ссылки:

  • Ссылка Rust хранит адрес в памяти, где хранятся данные?
  • Ссылка Rust хранит адрес в памяти, где находится внутреннее описание переменной, на которую указывает ссылка? Через которое уже будет доступ к памяти, где хранятся данные?
  • Ссылка Rust вообще не хранит адрес в памяти, а хранит некий номер/дескриптор из какой-то таблицы доступных переменных, по которой получается адрес в памяти? Но тогда это адрес чего - самих данных или внутреннего описания переменной, по которой доступен адрес самих данных?
  • Может быть, конструкция вообще другая?

 

Xintrea
()

Как указать DPI при удаленном запуске графических приложений по ssh -X?

Поменяли мне на работе монитор на разрешение 2К. Все бы ничего, но когда я пытаюсь удаленно запустить GUI-приложения на удаленом сервере, они показываются с малюсенькими шрифтами.

Например, мне часто нужно удаленно запускать gitk и git gui, которые используют библиотеку Tk для интерфейса. И я не могу разобраться как изменить шрифт или рендеринг всего окна удаленной программы.

Я пытался сделать так:

export XFT_DPI=250
gitk

export XFT_DPI=96
gitk

Никакого эффекта.

Пытался запускать так:
export XRESOURCES="Xft.dpi: 250"
xrdb -merge <<< "$XRESOURCES"
gitk

export XRESOURCES="Xft.dpi: 96"
xrdb -merge <<< "$XRESOURCES"
gitk

Тоже никакого эффекта.

Вопрос: как для удаленной сессии по ssh -X изменить DPI или размер шрифта?

 , , , ,

Xintrea
()

Почему в Git один и тот же комммит показывает разные изменения?

Что-то я затупил. Имею репозитарий:

git clone https://invent.kde.org/utilities/konsole.git

Нахожу в нем следующий коммит, который содержит изменение для файла /src/Profile.cpp:
commit 9ea9d62785193ec06a8f37090dd6e7940626e1b8
Author: Jekyll Wu <adaptee@gmail.com>
Date:   Mon Oct 10 16:23:22 2011 +0800

    Reimplement the feature of "show/hide the size widget after resising"
    
    This is a follow up of commit b40a006d which closees BUG 169054.
    It turns out the old code already has most parts of similar logic.
    So remove duplicated logic in the code.

diff --git a/src/Profile.cpp b/src/Profile.cpp
index 06ef51960..d9706d17b 100644
--- a/src/Profile.cpp
+++ b/src/Profile.cpp
@@ -76,7 +76,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] =
...skipping...
+    , { BoldIntense, "BoldIntense", APPEARANCE_GROUP, QVariant::Bool }

     // Keyboard
     , { KeyBindings , "KeyBindings" , KEYBOARD_GROUP , QVariant::String }
@@ -179,6 +180,7 @@ FallbackProfile::FallbackProfile()

     setProperty(DefaultEncoding,QString(QTextCodec::codecForLocale()->name()));
     setProperty(AntiAliasFonts,true);
+    setProperty(BoldIntense,true);

     // default taken from KDE 3
     setProperty(WordCharacters,":@-./_~?&=%+#");

Я переключаюсь на него:
git checkout 9ea9d62785193ec06a8f37090dd6e7940626e1b8

И снова смотрю изменения файла /src/Profile.cpp для этого же коммита:
commit 9ea9d62785193ec06a8f37090dd6e7940626e1b8 (HEAD)
Author: Jekyll Wu <adaptee@gmail.com>
Date:   Mon Oct 10 16:23:22 2011 +0800

    Reimplement the feature of "show/hide the size widget after resising"

    This is a follow up of commit b40a006d which closees BUG 169054.
    It turns out the old code already has most parts of similar logic.
    So remove duplicated logic in the code.

diff --git a/src/Profile.cpp b/src/Profile.cpp
index 06ef51960..d9706d17b 100644
--- a/src/Profile.cpp
+++ b/src/Profile.cpp
@@ -76,7 +76,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] =
     , { LocalTabTitleFormat , "tabtitle" , 0 , QVariant::String }
     , { RemoteTabTitleFormat , "RemoteTabTitleFormat" , GENERAL_GROUP , QVariant::String }
     , { ShowMenuBar , "ShowMenuBar" , GENERAL_GROUP , QVariant::Bool }
-    , { ShowSizeWidget , "ShowSizeWidget" , GENERAL_GROUP , QVariant::Bool }
+    , { ShowTerminalSizeHint , "ShowTerminalSizeHint" , GENERAL_GROUP , QVariant::Bool }
     , { SaveGeometryOnExit , "SaveGeometryOnExit" , GENERAL_GROUP , QVariant::Bool }
     , { TabBarMode , "TabBarMode" , GENERAL_GROUP , QVariant::Int }
     , { TabBarPosition , "TabBarPosition" , GENERAL_GROUP , QVariant::Int }
@@ -161,7 +161,7 @@ FallbackProfile::FallbackProfile()
     setProperty(TabBarPosition,TabBarBottom);
     setProperty(NewTabBehavior,PutNewTabAtTheEnd);
     setProperty(ShowMenuBar,true);
-    setProperty(ShowSizeWidget,true);
+    setProperty(ShowTerminalSizeHint,true);
     setProperty(SaveGeometryOnExit,true);
     setProperty(StartInCurrentSessionDir,true);
     setProperty(ShowNewAndCloseTabButtons,false);

И эти изменения совершенно другие. Хотя хеш и описание коммита - те же самые. Как так то? Какие изменения на самом деле были то?

 ,

Xintrea
()

Почему в константном методе невозможно вернуть указатель?

Имеется следующий старенький код, в котором необходимо метод getTableData() сделать константным:

class TreeItem
{
 public:

    // Взятие ссылки на данные конечных записей
    RecordTableData *getTableData(void) const;
 
 private:
     RecordTableData recordsTable;
}

...

RecordTableData *TreeItem::getTableData(void) const
{
  return &recordsTable;
}

Насколько я понимаю, модификатор метода const должен следить за тем, чтобы в методе не происходило изменения объекта класса. И никакого изменения не происходит: берется адрес мембера и возвращается как указатель. Все. Что там будет происходить с переданными данными - будут они меняться по указателю, не будут - это не забота метода getTableData(). Он данные не изменил, а значит метод константный.

Но компилятор почему-то показывает ошибку:
TreeItem.cpp:632:10: error: binding reference of type 'RecordTableData' to value of type 'const RecordTableData' drops 'const' qualifier

Вопрос: как заставить компилироваться этот код, в котором метод должен быть помечен как константный? Если модификатор const убрать, то эта ошибка исчезает. Но мне нужно, чтобы данный метод был константный, потому что он используется в другом константном методе.

 , ,

Xintrea
()

Не пойму, заблокирован ли мой сайт Роскомнадзором

На днях, 6 дек. 2024  г. Роскомнадзор прислал требование на блокировку информации, размещенную на странице сайта:

https://webhamster.ru/mytetrashare/index/mtb0/1705912840ptzochzjmi

После получения абузы, провайдер мне в течении суток потушил виртуалку с сайтом. Сегодня сайт снова был включен, информация удалена с сайта.

Проблема в том, что браузеры и Firefox и Chromium теперь не могут показать сайт напрямую без VPN. Показывают ошибку: PR_CONNECT_RESET_ERROR или ERR_CONNECTION_RESET соответственно. Куки удалял, даже Firefox обновил, толку никакого.

Сертификат на сайте действителен до January 30, 2025.

Пинги до сайта проходят.

Полез искать свой сайт на https://eais.rkn.gov.ru . По строкам поиска webhamster.ru и https://webhamster.ru ничего не находится. Зато по полному вышеприведенному URL-у показывается такая информация:

Номер и дата основания для внесения в реестр: 2024-02-27-3849-СОБ от 04.03.2024
Орган, принявший решение о внесении в реестр: Роскомнадзор
Статус сайта: доступ ограничивается к странице


Как-то это странно: дата внесения в реестр 04.03.2024, а требование мне приходит 06.12.2024.  Сайт волшебным образом работал все эти месяцы, причем за это время приходило еще несколько штук абуз от Роскомнадзора, их я удалял, никаких проблем не возникало кроме временного простоя сайта.

В общем, я не пойму кто меня заблокировал на каком уровне. У меня нет доступа к сайту с рабочего компа и с мобильника (МТС).

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

 , , ,

Xintrea
()

Ogg-файл с музыкой из SuperTuxKart управляет системной громкостью?

Я сейчас наткнулся на такую дичь в Debian GNU/Linux 11 (LXDE, pulseaudio 14.2-2).

Качаю архив с игрой: https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/0.4/supertux...

Вытаскиваю из него файл: oggs/kart_grand_prix.ogg

Системная громкость стоит на ~50%. Запускаю файл на проигрывание в mpv. После 33-й секунды системная громкость вырубается в 0. То же самое происходит и где-то на 43-й секунде, если ее снова поднять. Что за дичь? Проверил несколько раз - реально, громкость в системе вырубается.

Думал, может какая-то проблема с mpv. Запустил в audacious. И наблюдаю то же самое!

Единственное что еще заметил - если исходная системная громкость небольшая - 10-20%, то она изменяться не будет. А если 50-80%, то вырубится в ноль.

Да как такое может быть? Как звук может управлять системной громкостью?



Перемещено hobbit из general

 , , , ,

Xintrea
()

Предсказатель переходов на Эльбрусе (v7)

Появились материалы доклада на форуме Встраиваемые системы реального времени 2024. (Было видео докладчика из МЦСТ, но утонуло в грубинах Telegram, найти не могу).

https://files.kpda.ru/upload/iblock/310/f2tgak1k9clukvwr0peykst9oh01vcyj.pdf

Так вот, смотрим 13-ю страницу. В 7-й версии архитектуры появился предсказатель переходов. Но как-то он вяленько добавляет производительности (около ~5%). Вопрос - почему?

Мои варианты:

1. На нативном коде предсказатель переходов много не прибавит, потому что и без него все оптимизировано, и FDO/PGO (Profile Guided Optimizations) дает свои плоды.

2. Этот предсказатель впихнули чтобы разогнать интерпретируемые/jit языки, а на нативном коде от него будет толку немного.

3. Это первая итерация предсказателя, странно было бы ожидать хороших результатов. Главное, что эффект от присутствия предсказателя на лицо, в следующих итерациях его надо развивать.

Ваши варианты.

 ,

Xintrea
()

Странная ошибка при создании функции в PostgreSQL

Имеется следующий короткий код на Python. В основе кода используется библиотека psycopg2. Весь код работает в одной транзакции.

Что делает код? Он должен просто создать функцию с именем update_change_time_column(). После создания, функция, естественно, существует одна на всю схему.

# Рекомендательная блокировка на момент создания функции
self.exec( "SELECT pg_advisory_lock(12345);" )

# Проверка что функция уже есть в БД
resultCursor = self.exec( """SELECT EXISTS (
                          SELECT 1
                          FROM information_schema.routines
                          WHERE routine_name = 'update_change_time_column'
                            AND routine_schema = current_schema()
                          );""" )
isFunctionExists = resultCursor.fetchone()[0]

# Если функции нет, она создается
if not isFunctionExists:
    self.exec( """
               CREATE OR REPLACE FUNCTION update_change_time_column()
               RETURNS TRIGGER AS $$
               BEGIN
                 IF current_setting('custom.disable_change_time_trigger', true) IS NOT NULL THEN
                   RETURN NEW;
                 END IF;

                 NEW.change_time = now();
                 RETURN NEW;
               END;
               $$ language 'plpgsql';
               """ )

# Рекомендательная блокировка снимается
self.exec( "SELECT pg_advisory_unlock(12345);" )

Важно: внешняя система может запустить данный код в параллель. Примерно 10 одинаковых копий этого кода работает одновременно. Не спрашивайте почему, это не моя разработка.

И при работе иногда возникает ошибка:
Ошибка при выполнении SQL-запроса
CREATE OR REPLACE FUNCTION update_change_time_column()
RETURNS TRIGGER AS $$
BEGIN
  IF current_setting('custom.disable_change_time_trigger', true) IS NOT NULL THEN
    RETURN NEW;
  END IF;

  NEW.change_time = now();
  RETURN NEW;
END;

ОШИБКА:  повторяющееся значение ключа нарушает ограничение уникальности "pg_proc_proname_args_nsp_index"

DETAIL:  Ключ "(proname, proargtypes, pronamespace)=(update_change_time_column, , 2200)" уже существует.

Вопрос: почему возникает такая ошибка?

Вроде как предприняты меры по блокировке на время создания функции. Функция создается только в случае, если ее нет. Все обернуто в транзакцию. Что еще надо учитывать чтобы ошибки не возникало?

 , , , транзакция,

Xintrea
()

Как сделать INSERT в таблицу, у которой есть RULE?

Имеется таблица calc, для которой написано правило:

CREATE RULE rule_insert_calc AS
ON INSERT TO calc 
DO  SELECT pg_notify('notify_insert_calc'::text, (new.id)::text) AS pg_notify;
В таблице, как видно из этого кода, есть поле id.

Теперь надо сделать команду INSERT так, чтобы если значение id уже есть в таблице, то запись не добавлялась.

Интернет советует писать так:
INSERT INTO calc (...) VALUES (...) ON CONFLICT (id) DO NOTHING;
Однако такой SQL-запрос вызывает ошибку:
INSERT c предложением ON CONFLICT нельзя использовать с таблицей, для которой заданы правила INSERT или UPDATE


Вопрос: как добавить данные в таблицу с RULE так, чтобы не добавлялись записи с уже существующими id?

 , ,

Xintrea
()

Создание пакета moc через checkinstall -D завершается ошибкой

Собрал я себе moc (mocp) из исходников:

http://moc.daper.net/download

И хочу его контролируемо установить в системе. Но при запуске команды checkinstall -D появляется ошибка:

2.6-alpha3" is not a
*** Warning: debian policy compliant one. Please specify an alternate one

Я пробовал задать в качестве версии «2.6.0~alpha3», но все равно появляется та же самая ошибка.

Вопрос: как побороть эту ошибку?

 , ,

Xintrea
()

Как заставить VSCode собирать Си-проект через Makefile?

Имеется готовый проект на языке Си. Для сборки в нем используется Makefile, который лежит в корне проекта.

Находясь в корне проекта я запускаю VSCode:

code .

Далее создаю каталог .vscode, в нем создаю файл tasks.json следующего содержания:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "make",
            "group": "build",
            "problemMatcher": []
        }
    ]
}

По идее, теперь при нажатии Ctrl+Shift+B должна происходить компиляция проекта.

Но ничего не происходит. Где в меню находится пункт Build или нечто подобное - я тоже не нашел.

Вопрос: как в VSCode запустить компиляцию проекта, который собирается командой make?

 , , , ,

Xintrea
()

Не могу прочитать JSON из командной строки в Python

Написал вот такой примитивный скрипт, который берет строку со стандартного входа и пытается сделать из нее JSON-объект:

#!/usr/bin/python3

import sys
import json

jsonData = sys.argv[1]

print("Получена JSON строка: ", jsonData)

try:

    config = json.load( jsonData )

except (Exception) as error:
    print("Некорректный формат JSON")
    sys.exit(1)

Запускаю его так:
./ourScript.py '{ "varName": "varValue" }'

И мне в ответ:
Получена JSON строка:  { "varName": "varValue" }
Некорректный формат JSON

Что тут такого неправильного?

 , ,

Xintrea
()

Подскажите адекватный минимальный GUI браузер с поддержкой JavaScript и CSS

Нужен GUI браузер для запуска на очень древнем 32-х битном железе. Установлен Debian 12 (32bit).

* Firefox - слишком медленен и тяжел.

* Min Браузер (https://minbrowser.org) - оказалось что есть только 64bit сборки.

* Links2 -g - работает хорошо, но в нем нет JavaScript.

Кто что еще реально пользовал на максимально слабом железе?

 , , ,

Xintrea
()

RSS подписка на новые темы