LINUX.ORG.RU

Сообщения Xintrea

 

Понимание других людей: что обозначает иконка?

Форум — Talks

Я давно уже перестал понимать людей из инторнета.

Вот, например, иконка на всем доступном сервисе:

https://ibb.co/WKDGVPg

Что она обозначает? Только я не понимаю?

UPD: Я даже дам подсказку: это как-то связано с иностранными языками.

 ,

Xintrea
()

Не могу правильно вставить рекламный блок Yandex 220x300 (коряво в Firefox)

Форум — Web-development

Здравствуйте, уважаемые веб-мастера.

Не могу нормально вставить рекламный блок Yandex размером 220x300.

Вот как выглядит вставленный блок:
https://ibb.co/ykGKmBC

Сама страница здесь:
https://webhamster.ru/mytetrashare/index/mtb0/340

Код такой:

...
<td rowspan="2" style="background-color: #eae9e0; 
                       padding:0px; 
                       vertical-align: middle;" 
                       width="220px" 
                       height="300px">
 <div style="text-align: center;">
  <div style="display: inline-block;">

   <!-- Yandex.RTB R-A-259917-2 -->
   <div id="yandex_rtb_R-A-259917-2">
   ...

Как видно, этот блок отображается со странными полями сверху и снизу. При просмотре свойств элементов никаких отступов не установлено. Но рекламный блок, почему-то, обрезан сверху и снизу.

Проблема в старых и новых (102.12.0esr) Firefox.
В Chrome такая проблема не наблюдается.

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

 , ,

Xintrea
()

Что означает Default для Experimental QUIC protocol в браузере Chrome?

Форум — General

Ели в Chrome в строке адреса ввести команду:

chrome://flags/#enable-quic

То будет отображена страница настройки значения Experimental QUIC protocol:

Experimental QUIC protocol
Enable experimental QUIC protocol support. – Mac, Windows,
Linux, ChromeOS, Android, Fuchsia, Lacros

#enable-quic


Возможные варианты: Default, Enable, Disable.

Вопрос: как понять, что означает Default?

 ,

Xintrea
()

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

Форум — Development

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

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 нет правильного начертания?

Форум — General

О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-файла по степени похожести?

Форум — Development

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

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

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

 , , ,

Xintrea
()

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

Форум — Development

Пытался собрать старенький проект на 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 заменить один тег на другой, сохраняя подчиненные элементы?

Форум — Development

Имеется текст с 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?

Форум — Development

Использую 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 генерирует неправильные команды для комментариев и схем

Форум — Development

Продолжаю пытаться использовать библиотеку 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»

Форум — Development

Продолжаю разбираться в связке 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;»

Форум — Development

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
()

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

Форум — Talks

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

Имеется вот такая прошивка для гитарного процессора 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
Группа Hardware and Drivers

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

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

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

>>> Подробности

 , ,

Xintrea
()

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

Форум — Talks

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

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

Как вам?

 , ,

Xintrea
()

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

Новости — Linux General
Группа Linux General

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

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

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

>>> Подробности

 ,

Xintrea
()

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

Форум — Talks

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

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

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

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

 , ,

Xintrea
()

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

Форум — Development

Имеется таблица 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

Форум — Admin

Делаю блокировку примерно как в пункте 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 и без интернета) ?

Форум — Development

Имеется древний дистриб 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
()

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