LINUX.ORG.RU

Сообщения Xintrea

 

Загадки исходников NVIDIA

 , ,

Имеется исходник:

https://github.com/NVIDIA/open-gpu-kernel-modules/blob/main/src/nvidia/genera...

И в нем не понятно, что это за конструкция в виде отдельного блока, завершаемого запятой «{...},» посреди других определений:

#if defined(BINDATA_INCLUDE_STORAGE_PVT_DECL)
BINDATA_STORAGE_PVT kgspBinArchiveBooterLoadUcode_TU102_patch_meta_storage_pvt;
#endif // defined(BINDATA_INCLUDE_STORAGE_PVT_DECL)

#if defined(BINDATA_INCLUDE_STORAGE_PVT_DEFN)
{
    12, // uncompressed data size (bytes)
    12, // compressed data size (bytes)
    kgspBinArchiveBooterLoadUcode_TU102_patch_meta_data, // compressed data pointer
    NV_FALSE, // is pData compressed?
    NV_TRUE, // contain information for file overriding?
    NV_FALSE, // is the data referenced during load? (Only valid when BINDATA_IS_MUTABLE is true)
},
#endif // defined(BINDATA_INCLUDE_STORAGE_PVT_DEFN)

#if defined(BINDATA_INCLUDE_DATA)
static BINDATA_CONST NvU8 kgspBinArchiveBooterLoadUcode_TU102_num_sigs_data[] = 
{
    0x01, 0x00, 0x00, 0x00,
};
#endif // defined(BINDATA_INCLUDE_DATA)

Эта конструкция «{...},» ничему не присваивается, то есть не участвует в инициализации, зачем она нужна? Встречается в этом файле несколько раз.

Xintrea
()

Почему на bestfonts.pro для DejaVu Sans нет правильного начертания?

 

Оnкрываю страницу википедии:

https://ru.wikipedia.org/wiki/DejaVu

Внизу есть картинка, как должен выглядеть шрифт DejaVu Sans:

https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/DejaVuSans.svg/198p...

То есть это прямой шрифт обычной толщины без засечек.


Иду на сайт шрифтов, открываю страницу этого шрифта:

https://bestfonts.pro/font/dejavu-sans

И среди всех вариантов нет прямого шрифта обычной толщины без засечек.

Почему так, куда он делся?

Xintrea
()

Есть ли какая-то консольная утилита, способная сравнить два HTML-файла по степени похожести?

 , , ,

Есть два HTML-кода. В одном - статья на одном сайте, в другом - копия этой статьи на другом сайте, прошедшая некие html/xml преобразования. То есть, до и после текста статьи - все в коде разное (header/bottom), да и сам текст статьи на разных сайтах отформатирован разными тегами. И еще текст статьи тоже может немного отличаться.

Так вот, есть ли какая-то консольная утилита, которая покажет некую метрику, через которую можно (хотя бы с некоторой долей вероятности) понять, что эти два HTML-кода содержат одинаковую статью? Или что один HTML-код содержит часть статьи (достаточно крупную) с другой страницы?

Чтобы в утилите была какая-то реализация string kernels или там косинусного подобия или чего-то такого.

Xintrea
()

Не могу понять, что там с deprecated QFlags в Qt 5.15?

 , , ,

Пытался собрать старенький проект на Qt 5.15.

Он даже собирается и работает. Но при компиляции куча варнингов про всякие deprecated. Один из варнингов следующий.

Сам код:

class RecordInfoFieldsEditor : public QDialog
{
  RecordInfoFieldsEditor( QWidget * parent = nullptr, Qt::WindowFlags f = 0 ); 


Варнинг такой:
In file included from src/views/record/RecordInfoFieldsEditor.cpp:11:
src/views/record/RecordInfoFieldsEditor.h:22:75: warning: ‘constexpr QFlags<T>::QFlags(QFlags<T>::Zero) [with Enum = Qt::WindowType; QFlags<T>::Zero = int QFlags<Qt::WindowType>::Private::*]’ is deprecated: Use default constructor instead [-Wdeprecated-declarations]
   22 |   RecordInfoFieldsEditor( QWidget * parent = nullptr, Qt::WindowFlags f = 0 );
      |                                                                           ^  

В документации на конструктор QDialog ничего внятного про прекращение поддержки флагов не написано:

QDialog::QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Constructs a dialog with parent parent.

A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent. It will also share the parent's taskbar entry.

The widget flags f are passed on to the QWidget constructor. If, for example, you don't want a What's This button in the title bar of the dialog, pass Qt::WindowTitleHint | Qt::WindowSystemMenuHint in f.

See also QWidget::setWindowFlags().



Да и для QWidget, от которого наследуется QDialog, тоже глухо:

QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Constructs a widget which is a child of parent, with widget flags set to f.

If parent is nullptr, the new widget becomes a window. If parent is another widget, this widget becomes a child window inside parent. The new widget is deleted when its parent is deleted.
The widget flags argument, f, is normally 0, but it can be set to customize the frame of a window (i.e. parent must be nullptr). To customize the frame, use a value composed from the bitwise OR of any of the window flags.

If you add a child widget to an already visible widget you must explicitly show the child to make it visible.

Note that the X11 version of Qt may not be able to deliver all combinations of style flags on all systems. This is because on X11, Qt can only ask the window manager, and the window manager can override the application's settings. On Windows, Qt can set whatever flags you want



Как исправить код, чтобы этого варнинга не было? Чего хочет Qt или компилятор? Что там с QFlags, их дальше в Qt не будет?

Достаточно ли просто убрать из прототипа и реализации параметр Qt::WindowFlags f и его установку по-умолчанию?

Xintrea
()

Работа с PHP DOM - как в XML заменить один тег на другой, сохраняя подчиненные элементы?

 , , ,

Имеется текст с XML-форматированием:

<div id="recordContent">
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</div>

Необходимо в нем заменить тег <div id=«recordContent»> на <body>, вот так:
<body>
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</body>

Для этого я написал следующий минимальный код:
<?php

$contents = <<<STR
<div id="recordContent">
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</div>
STR;

$htmlDom = new DOMDocument();
$htmlDom->loadHTML($contents);

// Поиск элемента с внутренними узлами
$element = $htmlDom->getElementById("recordContent");

if ($element) 
{
    // Создание нового элемента <body>
    $htmlBody = $htmlDom->createElement('body');

    // Копирование дочерних элементов из <div> в <body>
    foreach ($element->childNodes as $child) 
    {
        $htmlBody->appendChild($child);
    }

    // Замена элемента <div> верхнего уровня
    $element->parentNode->replaceChild($htmlBody, $element);

    // Получаем HTML-код внутри элемента
    $innerHtml = $htmlDom->saveXML();

    echo $innerHtml;
}    

?>

И этот PHP-код генерит вот такой текст:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><body>
    </body></body></html>

Вопрос: что не так, почему вместо замены одного головного элемента происходит не то что ожидается?

Xintrea
()

psycopg2 не имеет элемент sql?

 , , ,

Использую Astra Linux 1.6

Установлен пакет python3-psycopg2 версии 2.6.2-1.

Пишу минимальный код:

#!/usr/bin/python3

import sys
import enum

from psycopg2 import connect
from psycopg2 import sql

И при запуске вижу ошибку:
Traceback (most recent call last):
  File "./sample_import.py", line 7, in <module>
    from psycopg2 import sql
ImportError: cannot import name 'sql'

То есть, connect импортируется нормально, а sql - нет.

Это потому что кривая (старая) библиотека, как у этого товарища: https://github.com/OCA/openupgradelib/issues/193
Похоже, что SQL string composition появилось только в версии 2.7?

А как же тогда раньше генерировали безопасные запросы, которые имеют динамические имена объектов БД? (Имеется в виду именно динамические имена объектов БД а не представление данных, пишущихся в БД).

Получается, что все что написано здесь:
https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries
и здесь:
https://www.psycopg.org/docs/sql.html
в моем случае неприменимо, т. к. система сертифицирована и замена пакетов не допускается.

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

Xintrea
()

psycopg2 генерирует неправильные команды для комментариев и схем

 , , , ,

Продолжаю пытаться использовать библиотеку psycopg2. Проблема подкралась откуда не ждали.

Итак, код написан в соответствии с документацией:

https://www.psycopg.org/docs/usage.html

В которой сказано, что psycopg2 в методе execute() сама делает подстановки в SQL-запрос из переданного кортежа, и делает это правильно. Однако, по факту оказалось, что это не так.

Следующие ошибки демонстрируют, что psycopg2 не понимает где пользовательские данные, а где обращение к объектам. Она просто все подстановки анализирует на переданный базовый Python-тип, и вставляет данные соответственно этому типу. Если это строка - то она будет заключена в одинарные кавычки. Если целое число - будет вставлено число без кавычек.

А что делать, если в кортеже передано имя объекта БД, значение которого не нужно заключать в кавычки? Об этом авторы документации ничего не говорят.

Поэтому, например при использовании комментариев к таблице или при работе со схемами возникают ошибки:

Команды:

cursor.execute( "COMMENT ON TABLE %s IS 'version=%s';", (tableName, tableVersion) )

cursor.execute("CREATE SCHEMA IF NOT EXISTS %s;", (dbSchema,) )


Ошибки:

File "./sample.py", line 205, in setTableVersion
    cursor.execute( "COMMENT ON TABLE %s IS 'version=%s';", (tableName, tableVersion) )
psycopg2.ProgrammingError: ОШИБКА: ошибка синтаксиса at or near "'devices'
LINE 1: COMMENT ON TABLE 'devices' IS 'version=12';
                         ^

File "./sample.py", line 89, in connect
    cursor.execute("CREATE SCHEMA IF NOT EXISTS %s;", (dbSchema,) )
psycopg2.ProgrammingError: ОШИБКА: ошибка синтаксиса at or near "'service'
LINE 1: CREATE SCHEMA IF NOT EXISTS 'service';
                                    ^

В этих командах значения devices и service не должны заключаться в кавычки. Но они заключаются, чем и ломают саму команду.

Вопрос: а как же правильно передавать значения в execute() ?

Xintrea
()

psycopg2 не может работать со схемой «validate»

 , ,

Продолжаю разбираться в связке PostgreSQL+Python+psycopg2.

Вот код, который создает схему our_scheme и создает таблицу в этой схеме:

# Подключение к БД с заданными параметрами
connection = psycopg2.connect(**pgConnectionParameters)
cursor = connection.cursor()

# Переключение на заданную схему
dbSchema = 'our_schema'
cursor.execute("CREATE SCHEMA IF NOT EXISTS %s" % dbSchema)
cursor.execute("SET search_path TO %s" % dbSchema)

# Проверка текущей схемы
cursor.execute("SHOW search_path;")
result = cursor.fetchone()
print( result )

# Создание таблицы
cursor.execute("CREATE TABLE IF NOT EXISTS our_table (id varchar(128) UNIQUE, name varchar(128))")

Все прекрасно работает. Но теперь берем и меняем название схемы:
dbSchema = 'our_schema'
на
dbSchema = 'validate'

И код резко перестает работать. Появляется ошибка:
$ ./sample.py
('validate',)
Traceback (most recent call last):
  File "./sample.py", line 31, in <module>
    cursor.execute("CREATE TABLE IF NOT EXISTS our_table (id varchar(128) UNIQUE, name varchar(12
8))")

psycopg2.ProgrammingError: ОШИБКА: схема для создания объектов не выбрана
LINE 1: CREATE TABLE IF NOT EXISTS our_table (id varchar(128) UNIQUE...

Я проверяю те же самые команды в чистой консоли psql - все работает, схема validate создается, в ней создается таблица.

Но почему-то эти же команды через psycopg2 выдают ошибку.

Почему так?

Xintrea
()

psycopg2 не может вернуть текущую схему через команду «SHOW search_path;»

 , , ,

1. Создаю собственную схему,
2. переключаюсь на нее,
3. и сразу хочу посмотреть какая схема используется.

Делаю это следующим кодом:

# Подключение к БД с заданными параметрами
connection = psycopg2.connect(**pgConnectionParameters)
cursor = connection.cursor()

# Переключение на заданную схему
dbSchema = 'our_schema'
cursor.execute("CREATE SCHEMA IF NOT EXISTS %s" % dbSchema)
cursor.execute("SET search_path TO %s" % dbSchema)

# Проверка текущей схемы
result = cursor.execute("SHOW search_path;")
print( result )

А результат None. Соответственно, даже fetchone/fetchall от результата вызвать не могу.

Вопрос: почему переменная result равна None?

Xintrea
()

Понять структуру бинарного файла прошивки - получить максимальную информацию

 ,

Привет, народ.

Имеется вот такая прошивка для гитарного процессора BOSS GT-1:

https://static.roland.com/assets/media/zip/gt1_sys_v109.zip

В архиве лежит незашифрованный бинарник.

Нужно понять две вещи:

1. Что за структура у этого бинарника? Похоже, что вначале идет нечто вроде таблицы разделов какой-то файловой системы. Но какой - по сигнатуре нагуглить не могу. Или это какие-то таблицы смещений? Или еще что-то?

2. Надо понять, где начинается код. И какой архитектуры этот код. ARM? MIPS? Что-то еще? Каким инструментарием смотреть?

Свои мысли я начал записывать здесь: https://webhamster.ru/mytetrashare/index/mtb0/17186974979qcubc1ew5 , хочу расширить понимание как устроена эта прошивка.

Xintrea
()

Представлен МП21 — одноплатный компьютер на базе процессора «Эльбрус-2С3»

 , ,

Группа Hardware and Drivers

ИНЭУМ им. Брука (входит в холдинг «Росэлектроника» Госкорпорации Ростех) выложил в разделе промышленных компьютеров информацию о новом одноплатном компьютере на базе процессора «Эльбрус-2С3». Материнская плата имеет размеры менее 10x10 см.

Данная разработка маркируется как МП21 (ТЕГР.467144.004). Работает на базе полноценного двухъядерного процессора «Эльбрус-2С3» с тактовой частотой 1600 МГц. Оперативная память стандарта DDR4 (ECC) объёмом 8 ГБ распаяна прямо на плате, и использует один канал SDRAM. Для удешевления, под нужды заказчика, имеется возможность поставки платы с 4 Гб ОЗУ.

( читать дальше... )

>>> Подробности (rostec.ru)

Xintrea
()

А вы знали, что в глубинах Firefox используется протокол chrome:// ?

 , ,

Запускаем Firefox, на новой странице нажимаем ПКМ на логотипе или на надписи Firefox. И получаем следующее:

chrome://branding/content/about-logo.png
chrome://branding/content/firefox-wordmark.svg

Как вам?

Xintrea
()

Новая Unix-like ОС Bunnix, дошедшая до релиза меньше чем за месяц

 ,

Группа Linux General

Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc, платформы совместной разработки SourceHut и языка программирования Hare, сообщил, что он смог написать собственную реализацию клона UNIX всего за 27 дней. Автор назвал свою операционную систему Bunnix.

Система является монолитной Unix-like операционной системой, написанной на Hare с небольшими включениями языка C.

( читать дальше... )

>>> Подробности (drewdevault.com)

Xintrea
()

Как любители Linux выводят копеюшечки из Binance наиболее выгодно в 2024 году?

 , ,

Знаю, что тут есть специалисты по крипте. Я просто не успеваю разбираться в вечноменяющемся интерфейсе и вечно меняющихся правилах и ограничениях на Binance.

Сейчас хочу вывести эквивалент двухсотпятидесяти $ из валюты ETH в рубли. Начал разбираться, везде информация разная, включая официальные страницы Binance, которые явно устарели.

Пишут что можно через P2P биржу, которая есть в Binance, вывести на рублевую карточку, указав Зеленый или Желтый банк. Начинаю искать где это и как. Ничего похожего не нахожу. В P2P - интерфейсе подсовывается соглашение на суточные ограничения для C2C. Я ничего не понимаю, при чем тут C2C. Потом не могу найти в этом P2P вывод в рубли RUR или RUB. Даже вывода в USD нет. Зато в EUR есть. Почему так - непонятно. Можно ли эти EUR на валютный счет в Сбере или в ВТБ перевести - нигде информации нет. Какой курс и комиссии при этом будет - тоже невозможно выяснить.

В общем, сейчас вижу только одну схему - конвертнуть в пределах Binance ETH в USDT, вывести на WebMoney кошелек WMT, а из него уже на ихней бирже Exchanger получить за WMT рубли. Но я не знаю насколько это выгодно. Может, есть какой другой более простой или более выгодный способ?

Xintrea
()

Почему не обновляется значение поля через триггер и функцию в PostgreSQL? (Отладочный вывод в наличии)

 , , ,

Имеется таблица our_table с полем change_time типа TIMESTAMP DEFAULT CURRENT_TIMESTAMP.

Необходимо менять поле change_time при действиях INSERT и UPDATE.

Для этого в базе создан триггер со следующим кодом:

CREATE TRIGGER our_table_update_change_time
AFTER INSERT OR UPDATE
ON our_table 
FOR EACH ROW EXECUTE PROCEDURE update_change_time_column();

Этот триггер использует следующую функцию, в которой есть отладочное сообщение:
CREATE OR REPLACE FUNCTION public.update_change_time_column()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
  RAISE NOTICE 'Trigger our_table_update_change_time is run'
  NEW.change_time: = now();
  RETURN NEW;
END;
$function$;

Изменение значения в таблице приводит к вызову триггера, а из него и кода функции. Это видно из вывода:
UPDATE our_table SET about='Any new text' WHERE id='1';
ЗАМЕЧАНИЕ:  Trigger our_table_update_change_time is run
UPDATE 1

Казалось бы, все работает? Нет. Изменения значение поля change_time не происходит.

Что здесь сделано неправильно? Как заставить изменяться поле change_time?

Xintrea
()

Блокировка частых запросов с одного IP средствами nginx

 , , ,

Делаю блокировку примерно как в пункте 5 вот этой статьи:

https://cloud.vk.com/blog/zaschita-ot-ddos-atak-sredstvami-nginx

Заодно читаю официальную документацию:

https://cloud.vk.com/blog/zaschita-ot-ddos-atak-sredstvami-nginx

И в моем случае конфигурирующие опции прописаны такие:

# Файл /etc/nginx/sites-available/mysite

limit_req_zone $binary_remote_addr zone=ipAddrZone:10m rate=5r/m;
...
server {
    ...
    location /punbb/register.php {
        limit_req zone=ipAddrZone;
    }

Nginx перезагружен.

И ничего эти настройки не блокируют. Я захожу на страницу /punbb/register.php, обновляю ее хоть каждую секунду по 20 раз непрерывно, ответ от сервера всегда нормально приходит.

Вопрос 1: Почему не работает блокировка?

Вопрос 2: Что должно происходить с запросом, когда он по заданным условиям превысил лимит? Он по-умолчанию просто не обрабатывается и выбрасывается? На него выдается ответ с кодом ошибки 503? Он ставится в очередь и будет обработан по истечении периода проверки? Что конкретно?

Xintrea
()

Как установить библиотеку psycopg2 в древней Astra 1.3 (без pip и без интернета) ?

 , , ,

Имеется древний дистриб Astra Linux 1.3 Смоленск

В нем есть Python 3.2 и некоторое количество библиотек.
Но в нем нет pyhon-библиотеки psycopg2.
И нужно эту библиотеку установить, чтобы заработали python3-скрипты, которые работают с PostgreSQL.

Проблема 1 - в том, что в Astra 1.3 нет pip, и я не могу сделать установки из выкачанного заранее whl-файла.

Проблема 2 - попытка сборки psycopg2 из исходников через команду

python3 setup.py build
...приводит к тому, что появляется ошибка на f-строках, так как они появились в Python 3.6, а в системе стоит Python 3.2.

Вопрос: как можно извратиться, и установить psycopg2 в Astra 1.3?

Xintrea
()

Стоит ли покупать гитару у перекупа с МегаМаркета?

 , ,

Linux тут при том, что я с него пишу.

В общем, оказывается, сейчас люди заморачиваются с тем, что покупают вещи на Мегамаркете с большими кешбкеми в виде бонусов Спасибо, которые фиг поймешь где можно потратить и в каком количестве. Но расчет (в моем случае) примерно следующий:

- Покупается вещь за 60000
- На него дается кешбек 34%, то есть 20400
- Вещь выставляется на авито за 60000-20400+2000(навар)=41600
- Нигде, ни на Ozon, ни на Яндекс.Маркет такой цены нет, в лучшем случае 49000-51000

Плюс в том, что в отличие от заказа в онлайн-магазине, вещь можно прийти и посмотреть.

Каковы минусы такой покупки? Какие подводные камни?

Xintrea
()

Подскажите российский аналог GitHub/GitLab без ограничений для открытых проектов

 , , ,

1.

Заглянул сейчас на GitFlic.ru, думал перенести на него проекты с буржуйского GitHub. Смотрю на ограничения, а там размер репо не более 4Gb. А у меня куча реп, и одно из них 4.3Gb.

Так что GitFlic.ru не для меня.


2.

Решил зайти на hub.mos.ru, а там регистрация в департаменте с полным указанием ФИО, сотового телефона и электронной почтой. А если хочешь зайти через Госуслуги, то будут переданы данные:

* Просмотр данных вашего военного билета
* Проведение входа в систему
* Просмотр вашего ИНН
* Просмотр номера вашего мобильного телефона
* Просмотр СНИЛС ребёнка
* Просмотр фамилии, имени, отчества (при наличии) ребёнка
* Просмотр пола ребёнка
* Просмотр вашей фамилии, имени и отчества
* Просмотр ИНН ребенка
* Просмотр вашего места рождения
* Просмотр данных вашего заграничного паспорта
* Просмотр вашего СНИЛС
* Просмотр ваших контактных данных (номер мобильного телефона адрес электронной почты), адресов регистрации и проживания
* Просмотр данных вашего свидетельства о рождении
* Просмотр даты вашего рождения
* Просмотр вашего пола
* Просмотр данных ваших транспортных средств
* Просмотр данных вашего вида на жительство
* Просмотр данных о вашем документе, удостоверяющем личность
* Просмотр списка ваших организаций
* Просмотр даты рождения ребёнка
* Доступ к данным вашего личного кабинета на портале гос. услуг (интерактивные формы)
* Просмотр вашего адреса электронной почты
* Просмотр данных вашего разрешения на временное проживание
* Просмотр данных вашего водительского удостоверения
* Получение сведений о свидетельстве о рождении ребенка

Которые, естественно, будут скопированы и аккуратно сложены туда, где они лежать не должны.

Как-то не адекватно передавать такие данные чтобы сделать удаленный репозитарий.


3.

Подскажите хотя бы один бесплатный российский репозитарий, в котором нет ограничений для Open Source и который не страдает синдромом вахтера.

Xintrea
()

Я стал больше понимать, зачем нужны словари синонимов

 ,

... после того, как увидел информацию о текстовых запросах. Синонимы каких слов и выражений ищут пользователи?

Вот вам свежие данные с synonyms.su:

Последние синонимы пользователей

вот это да, ничосе  [ Дарьядесит ]
теребить стручок    [ Софья ]
вы мне не интересны [ Mary ]
писечка бритая      [ gusorus1 ]
точить шпагу        [ Артём ]
рукотворчество      [ Яна ]
одно дно            [ Жак ]
надрачивать         [ Софья ]
наяривать           [ Софья ]
блаженство          [ Наталья ]
Софья с gusorus1 явно чем-то озабочены. А Жак, как всегда, прав.

Xintrea
()

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