LINUX.ORG.RU

Сообщения Xintrea

 

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

Форум — Talks

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

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

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

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

 ,

Xintrea
()

Да что вы знаете - 2: Разработчик взломал компилятор C++ 28-летней давности, чтобы проект поддерживал исключения

Форум — Talks

Разработчик Начо Мелладо (Nacho Mellado) рассказал, что он взломал компилятор C++ 28-летней давности (Watcom C++32 версии 11.0 1996 года от Sybase Inc.), чтобы проект поддерживал исключения. Фактически это произошло за два года до того, как исключения стали частью первого стандарта C++.

В 1998 году Мелладо с друзьями выпустили библиотеку The DarkRising Library (TDL) обработки графики и аудио в реальном времени для DOS, в основном для игр и создания проектов типа demoscene. Проект Watcom уже тогда опередил своё время, но поддержки исключений там ещё не было.

Спустя годы Мелладо возобновил работу с библиотекой. Код для обработки в реальном времени в основном писался на ассемблере, но он начал добавлять поддержку C++ для более быстрой интеграции. Однако из-за повсеместной проверки ошибок код стал выглядеть слишком пространным.

Там было множество шаблонов типа «do this or fail gracefully», которые с помощью использования исключений+RAII можно было бы упростить, но при этом дать программе возможность исправить некритическую ошибку. Мелладо написал код с класами для RAII, которые игнорировали ошибки, но его исключения не перехватывались нигде в программе.

Оказалось, что Watcom компилирует try, catch и throw, но сгенерированный код вызывает хуки, которых нет ни в одной библиотеке, поставляемой с компилятором. Поиск по ретрофоруму этого проекта оказался безрезультатным. Судя по всему, команда Sybase готовила поддержку исключений, но тогда разработчики не выпустили её полностью в открытом виде.

Не имея документации, Мелладо фактически работал на ощупь. Итак, он провёл реверс-инжиниринг компилятора, создав множество программ, дизассемблировав сгенерированные двоичные файлы и формулируя гипотезы, пока не объяснил и не понял все двоичные файлы проекта.

Эта доработанная модель компилятора позволила Мелладо кодировать хуки и иметь исключения! С исключениями+RAII приведённый выше код теперь выглядит намного лучше.

Платформа оборачивает всё во внешний try-catch и автоматически обрабатывает ошибки и освобождение ресурсов. Мелладо пояснил, что итоговый код станет более кратким, поскольку класс Image будет включать в себя большую часть базовой простой структуры SLI.

https://habr.com/ru/news/806239/

 , , ,

Xintrea
()

PostgreSQL не хочет слушать порт на второй сети при загрузке. При старте сервиса все OK.

Форум — Admin

Имеется комп с PostgreSQL.

У него на eth0 несколько подсетей (далее нужна будет подсеть 222):

> ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1c:6f:65:96:54:bc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.95/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
...
    inet 192.168.222.95/24 brd 192.168.222.255 scope global eth0:7
       valid_lft forever preferred_lft forever

Чтобы PostgreSQL слушал порт на 222 подсети, сделана настройка:
Файл: /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = 'localhost,192.168.222.95'

и
Файл: /etc/postgresql/9.6/main/pg_hba.conf
host    all             all              192.168.222.0/24        md5

Если после внесения этих настроек перезапустить сервис postgresql, то все стартует без ошибок, а порт 5432 слушается на IP-шниках 127.0.0.1 и на 192.168.222.95.

Но если перезагрузить компьютер, то порт 5432 на IP 192.168.222.95 не поднимается.

В логах следующие ошибки:
СООБЩЕНИЕ:  не удалось привязаться к сокету IPv6: Невозможно назначить запрошенный адрес
ПОДСКАЗКА:  Возможно порт 5432 занят другим процессом postmaster? Если нет, повторите попытку через несколько секунд.
СООБЩЕНИЕ:  не удалось привязаться к сокету IPv4: Невозможно назначить запрошенный адрес
ПОДСКАЗКА:  Возможно порт 5432 занят другим процессом postmaster? Если нет, повторите попытку через несколько секунд.
ПРЕДУПРЕЖДЕНИЕ:  не удалось создать принимающий сокет для "192.168.222.95"
СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "pg_log".


Вот здесь я нашел возможную причину: говорят что сервис postgresql стартует раньше, чем инитится сеть, поэтому не на локальном IP PostgreSQL не может подняться.

Тогда я проверяю зависимости сервиса postgresql:
# systemctl list-dependencies postgresql
postgresql.service
● ├─postgresql@9.6-main.service
● ├─postgresql@9.6-main.service
● ├─system.slice
● ├─network-online.target
● │ ├─connman-wait-online.service
● │ └─networking.service
● └─sysinit.target
●   ├─dev-hugepages.mount
●   ├─dev-mqueue.mount
●   ├─keyboard-setup.service
...

Видно, что postgresql@9.6-main.service и network-online.target запускаются в параллель, а надо сделать зависимую загрузку.

Поэтому создаю файл /etc/systemd/system/postgresql.service.d/override.conf следующего содержания:
[Unit]
Requires=network-online.target
After=network-online.target

Потом выполняю:
systemctl daemon-reload
systemctl restart postgresql

И смотрю зависимости через list-dependencies, а они не изменились. Перезагружаюсь - то же самое, зависимости все те же, и PostgreSQL не поднимает свой сокет на 192.168.222.95.

Вопрос: где что еще надо крутить?

 ip-адрес, , ,

Xintrea
()

Не могу найти микросхему ST VIPer K41612 и понять есть ли аналог

Форум — Talks

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

На стиральной машинке при визуальном осмотре найдена сгоревшая микросхема.

На ней написано:

ST
VIPer
K41612
На микросхеме 8 ног. Рядом с микросхемой есть обозначение IC101. Судя по расположению, микросхема как-то связана с питанием.

Найти даташит не могу, не могу понять что это вообще за микросхема.

Где найти информацию по этой микросхеме? Где купить новую?

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



Перемещено Dimez из linux-hardware

 , микросхема

Xintrea
()

Какой ваш самый НЕлюбимый язык/языки программирования?

Голосования — Голосования

Недавно состоялся опрос по самым любимым языкам программирования. Для правильного понимания ситуации в языках, необходимо провести такой же опрос, только в обратную сторону. Может оказаться, что один и тот же язык будет в одном опросе одним из самых любимых, а в другом опросе — одним из самых нелюбимых. Это нужно проверить!

>>> Результаты

 

Xintrea
()

Как в Git сделать Tag или Notes в момент коммита, а не после?

Форум — Development

Никак не могу понять.

Такое впечатление, что в Git невозможно сделать коммит, который был бы помечен тегом или имел заданную Notes.

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

Получается, что так сделать нельзя? Надо вначале закоммитить изменения, потом выяснить ID этого коммита, а потом отдельной командой создать Tag или Notes? В момент коммита создать Tag или Notes невозможно?

 , , ,

Xintrea
()

Git-хук на bash дает ошибку «Неприменимый к данному устройству ioctl». На sh все в порядке

Форум — Development

Система Astra Linux 1.6

Имеется развесистый git-хук pre-commit, написанный на bash. Если сделать коммит, то в консоль вываливается три сообщения:

stty: 'стандартный ввод': Неприменимый к данному устройству ioctl
stty: 'стандартный ввод': Неприменимый к данному устройству ioctl
stty: 'стандартный ввод': Неприменимый к данному устройству ioctl

Вроде все работает, но эти сообщения нужно убрать.

Я стал разбираться, и сократил git-хук до такого состояния:
#!/bin/bash
echo "Hello pre-commit"
Но сообщения про ioctl все равно появляются.

Тогда я заменил в этом минимальном примере #!/bin/bash на #!/bin/sh, и сообщения об ошибке пропали!

И вот вопрос: скрипт хука весьма обширный, и переводить его с bash на sh - вообще не вариант. Что нужно докрутить, чтобы этих ошибок не было?


PS: Проверил то же самое на Debian 12, такой проблемы нет. Это именно Астровская проблема.

 , , , ,

Xintrea
()

const_cast - вселенная хочет, чтобы я запутался

Форум — Development

http://cppstudio.com/post/5343/

const_cast — константное приведение типов данных
Операция const_cast доступна только в C++. Константное приведение используются, чтобы константную переменную преобразовать в неконстантную. При этом, константным становится возвращаемое значение операции const_cast, а не сама переменная.

Видимо, автор должен был написать «При этом, неконстантным становится возвращаемое значение», но забыл частицу «не»?

 , ,

Xintrea
()

Как в qmake заставить перекомпилиться файл, в котором используется изменяемая DEFINE-переменная ?

Форум — Development

В корне каталога проекта имеется файл version.txt, он автоматически обновляется по определенным требованиям.

Содержимое этого файла передается в DEFINE-переменную:

# Установка qmake переменной с номером версии
SOFTWARE_VERSION = "$$cat(version.txt)"

# Проброс qmake переменной в C/C++
DEFINES += "SOFTWARE_VERSION=\"$$SOFTWARE_VERSION\""


Проблема в том, что если изменяется version.txt, то меняется и DEFINE-переменная SOFTWARE_VERSION. Однако исходные файлы проекта при этом, само собой, никак не меняются.

И проект не пересобирается, потому что изменений в проекте ведь нету. А он должен собраться с новой версией, установленной в version.txt. Причем не обязательно, чтобы пересобирался весь проект. Достаточно собрать с учетом того, что изменился один файл, в котором используется DEFINE-переменная SOFTWARE_VERSION.

Вопрос: как заставить собираться проект с новым значением, если изменился номер версии в файле version.txt?

Ограничение 1: проект большой, полная пересборка - это оверхед.

Ограничение 2: все должно конфижиться через *.pro-файл проекта, никаких дополнительных скриптов быть не должно.

 , , , ,

Xintrea
()

По следам гитарной битвы луноходов: розыск атомного кота

Форум — Talks

Аксакалы еще помнят адское действо, произошедшее на страницах ЛОРа много лет назад?

Призрак в опере? Нет проблем, обеспечим!

Практически то же самое сделал недавно товарищ Александр Пушной, только на более другом медийном уровне. При розыгрыше его гитары, ему накидали ~3000 каверов на рифф из программы Гилилео.

Вот обзор роликов (12 штук):
https://www.youtube.com/watch?v=QHQeVJqJ6m8&t=2125s

Проблема в том, что там нет ссылок на ролики победителей. А я их хочу найти. И даже нашел все, кроме номера 6:

https://webhamster.ru/mytetrashare/index/mtb0/1707837133sryjjed5a3

Проблема в том, что искать максимально сложно: YouTube ищет по названию, текстовым меткам и не более того. Да, можно искать по хештегу, но тебе вывалятся тысячи превьюшек, и среди них надо найти одно видео. Мало того, похоже, что при поиске по хештегу YouTube показывает не все ролики, ограничивается примерно тысячью, а искать надо среди трех тысяч. И поэтому YouTube на каждый запрос генерит случаный набор роликов.

В общем, предмет поиска следующий: ролик, в котором товарищ в футболке с котом играет на белой гитаре. Известно что автор - Сергей из Долгопрудного, типа у него есть группа Nuclear Cat. Кадры из ролика здесь:

https://youtu.be/QHQeVJqJ6m8?t=2922

Нужно найти ссылку на этот ролик.

PS: Линукс тут при том, что мой ролик про осциллограф для этого действа был полностью смонтирован в Linux: Audacity, Blender, OsciRender, FFmpeg, Gimp, Inkscape.

 , , ,

Xintrea
()

Не понимаю эти ваши замыкания в Go

Форум — Development

Читаю урок по анонимным функциям:


Преимуществом анонимных функций является то, что они имеют доступ к окружению, в котором они определяются. Здесь функция square определяет локальную переменную x и возвращает анонимную функцию. Анонимная функция увеличивает значение переменной x и возвращает ее квадрат. Таким образом, мы можем зафиксировать у внешней функции square состояние в виде переменной x, которое будет изменяться в анонимной функции.


Хорошо, то есть, анонимная функция будет иметь какой-то хитрый доступ к переменной x, существующей в функции square(). Надо это проверить, и вызвать square() между вызовами анонимной функции.

И что можно увидеть?

Код:

package main
import "fmt"

func square() func() int {
	var x int = 2
	fmt.Println("X variable in square function ", x)

	return func() int {
		x++
		return x * x
	}
}

func main() {
	f := square()
	fmt.Println(f())
	fmt.Println(f())

	square() // <---------- Проверка

	fmt.Println(f())
	fmt.Println(f())
}

Результат:
X variable in square function  2
9
16
X variable in square function  2
25
36

Получается, что анонимная функция не работает с переменной x, размещенной в square(). Происходит какое-то копирование переменной, и потом работа идет с этой копией. То есть, реальность для переменной x «расщепляется»: Внутри square() у нее одно значение, а при вызове анонимной функции - другое.

Как это можно понять? Как это можно уложить в голове? Как этим можно пользоваться?

 , , ,

Xintrea
()

Подключение монохромного RCA к VGA-монитору

Форум — Talks

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

Хочу подключить свою Микрошу к VGA-монитору. Фишка в том, что выход у Микроши низкочастотный и монохромный. То есть, не нужно разделять сигнал по цветовым каналам.

Покупал и возвращал 4 модели всяких преобразователей RCA to VGA, VIDEO to VGA и т.д. с RCA-шным входом и VGA-шным выходом. 3 из них вообще не выдавали изображение. Один преобразователь кое-какое изображение все-таки показал, но оно троилось по вертикали. Перепробовал все параметры в меню, добиться нормального изображения не смог. Тоже сдал.

Сейчас думаю, а если разделять сигнал не нужно, то можно ли просто этот сигнал навесить на один из цветовых пинов VGA-разъема и все? То есть два провода - сигнал и земля. Ну, может быть какое-то сопротивление добавить, видел что рекомендуют «нагрузить» RCA-вход сопротивлением 75 Ом. Но не говорят что имеют в виду - последовательно с сигналом поставить резистор, или сигнал завести на землю через резистор. Я в этих делах не соображаю.

Есть картинка: https://raw.github.com/xintrea/mytetra_syncro/master/base/170557880702eu9jpos...

1. Стоит ли попробовать такой конвертер «два проводка», или однозначно не будет работать?

2. А будет ли работать HD9800/GBS8200 типа такого: https://aliexpress.ru/item/1005006215879986.html?sku_id=12000036318620669&amp...
Или в нем то же самое что и в других конвертерах, и смысла его покупать нет?

 , , , , конвертор

Xintrea
()

Сделал научпоп видео «Как нарисовать звуком картинку? Дуэт гитары и осциллографа»

Форум — Science & Engineering

Пока вы доедали свое оливье, я пилил научпопное видео про визуализацию звука на осциллографе. Видео сделано в рамках акции #хочугитарупушного.

Вот само видео:
https://youtube.com/shorts/XdiwjLKXfT8?feature=share

Вот условия, если кто-то решит участвовать:
https://www.youtube.com/shorts/HlIEsIPFRhU

Не забудьте поставить царские лайки и поделитесь этим видосиком, как вы это обычно делаете. Очень бы не хотелось утонуть в тысячах заливов шортсов.

С новым годом!

(Linux тут при том, что весь монтаж сделан в Debian с помощью Blender, использовался Osci-render и Sunvox).



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

 , , , ,

Xintrea
()

Python3 и ALSA = Python int too Large to fit into C Long

Форум — Development

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

Пытаюсь запустить Open Source программу Nano-Basket (настройка MIDI контроллера).

Однако, на строке:

self.event = alsaseq.SeqEvent(alsaseq.SEQ_EVENT_SYSEX)

получаю вот такую ошибку:
Traceback (most recent call last):
  File "/home/daniel/configs/Nano-Basket/./nano_basket_main.py", line 33, in <module>
    Midi_Device = NanoKontrolAlsaMidiComm()
  File "/home/daniel/configs/Nano-Basket/nano_basket_backend.py", line 269, in __init__
    self.event = alsaseq.SeqEvent(alsaseq.SEQ_EVENT_SYSEX)
OverflowError: Python int too large to convert to C long

При добавлении отладочного вывода:
print( "alsaseq.SEQ_EVENT_SYSEX: "+str( int(alsaseq.SEQ_EVENT_SYSEX) ) )

Вижу следующее значение:

alsaseq.SEQ_EVENT_SYSEX: 315701287920557015231746469374140126848057806069433848520996442474077896118040280446827322192982778036935991159410458088858621034602855901831822090957249542454035237858266532406423746184667355646341406675495075296391155014596564577965062354643694753177171515765177344558231920888521336526729754327947612995730269459443629344404521191593403054625932096029258892212307592584049828939880259535763835214469305539836356735613249869911228799956675651622554103861445770814010219159244073507745648250000703350024591332758344364473173395846008868365451882145158578760695509550271688630463095098506898511291039425221333233770177236986045725391119505595248036570982953411623711955801825920921027729570846982511715262600778524621353825145851496489531652828983288054163031843801030412392727901417489077610047264934408166150555940608201872856407413511206173359083516070311558391028193972003488720183479039068178427806738027344778747038954436492511107004297589672250208699482162966403307666332800689253877198682790903233244322329549194860352982466072296480580866480878732354410609338974360551261336806132939982418266558599954613684533679936688065640543177104082203941847816956336839338

Значение несколько великовато как мне кажется.

Как можно исправить данную ошибку?

Страница с ошибкой тут: https://github.com/royvegard/Nano-Basket/issues/11

 , , ,

Xintrea
()

Можно ли управлять с MIDI-контроллера функциями на Yamaha-PSR Exxx?

Форум — Multimedia

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

В синтезаторе Yamaha PSR-E473 имеется настройка значений для различных функций инструмента.

Например, функция 009 - это функция M.Reverb - глубина реверберации для основного тембра, допустимые значения от 0 до 127.

Вопрос 1: если я куплю MIDI-контроллер типа LAudio EasyControl, возьму ноутбук, втыкну в него Yamaha и LAudio, то будет возможность настроить так, чтобы энкодеры на LAudio влияли на значения функций Yamaha? Как примерно это надо делать? Через DAW или есть более легковестные способы?

Вопрос 2: а можно ли сделать то же самое, но без ноутбука, через какой-нибудь MIDI конвертор/концентратор?

 , , , ,

Xintrea
()

А подскажите живой форум клавишников

Форум — Talks

Имею несколько вопросов по клавишам (имеются в виду музыкальные инструменты).

Нашел только два полуживых форума, с дикой кривой вёрсткой, на которых отвечают спустя пару-тройку дней:

http://sintezator-online.ru/forum/igraem-na-sintezatore

http://www.musicforums.ru/klavishnik/

А вы знаете нормальные русскоязычные форумы клавишников?

 , ,

Xintrea
()

Российский центр компетенций по импортозамещению отказался инвестировать в два проекта на базе Java

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

По информации из Центра компетенций по импортозамещению в сфере информационно-коммуникационных технологий (директор ЦКИТ — Илья Массух), из дорожной карты «Новое общесистемное ПО», работы по которой финансируются государством, исключены два проекта, связанных с языком Java:

  • Исключен проект «Доверенный репозитарий Java компонент», который компания «Бизнес коммуникации» должна была делать в интересах Центробанка. Стоимость проекта оценивается в 97 млн руб. В результате его реализации должна была появиться доверенная среда разработки и исполнения Java SE на базе проекта с открытым исходным кодом OpenJDK.
  • Исключен проект сервера приложений Java Libercat. Данный проект базируется на Apache Tomcat, поставляется в формате веб-сервера (TomCat) и сервера приложений в спецификации Jacarta EE (TomEE+). Его должна была реализовать компания «Белсофт» под торговой маркой AxiomJDK. Стоимость реализации проекта — 80 млн руб.

Причина исключения данных проектов из дорожной карты — отказ от бюджетного финансирования. По мнению экспертов, программные продукты для стека Java Enterprise Edition (Java EE) в настоящее время являются довольно устаревшей технологией. С другой стороны, эксперты соглашаются, что вышеперечисленные продукты имеет многомиллионную аудиторию в изначальных СПО-проектах. Для пользователей нет смысла переходить на новый продукт, к которому не сформировано доверие, особенно учитывая тот факт, что на рынке существует множество альтернативных СПО-решений.

Отказ от реализации обоих проектов на базе Java поможет сэкономить 177 млн руб.

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

 , ,

Xintrea
()

Определить программу-лупер под Android по видео

Форум — General

Привет, народ. Нашел видео на котором явно на Андроиде используется лупер:

https://www.youtube.com/watch?v=pdBw5c0G5DM

Автор видео говорит, что приложение называется Looper.

Я не могу его найти в AppStore.

Можете определить по экрану что это за приложение? Как правильно называется? Cсылка в AppStore какая?

 , , ,

Xintrea
()

Правильная расшифровка int (*a)[2] = new int[n][2];

Форум — Development

Имеется определение:

int (*a)[2] = new int[n][2];

И есть два варианта его понимания:

1. Создается переменная-указатель на 2 массива из значений типа int, что может рассматриваться и как указатель на массив из двух элементов типа int (так как общий размер массива одинаковый)

2. Запись int (*a)[2] представляет указатель на массив из двух элементов типа int.

Какой вариант однозначно правильный?

 , ,

Xintrea
()

Где прописывается запуск Qt Creator?

Форум — Development

Сегодня менял HDD, переехал на новый, все скопировал через dd, но произошло странное...

В системе был вручную установлен Qt 5.12.6 из официального инсталлятора с qt.io. Все было установлено в каталог /opt/qt_5_12_6. Там же и эта версия и лежит, никуда ничего не перемещалось. В этом наборе имеется Qt Creator 4.10.2.

Так вот, еще сегодня утром, если в меню DE тыкнуть Старт - Разработка - Qt Creator, то запускался Qt Creator 4.10.2.

А после замены HDD, если тыкнуть в меню тот же пункт, то откроется Qt Creator 4.6.2. Это старый Creator, который был давно еще установлен из официального репозитария дистрибутива вместе с Qt 5.11.0. Эти версии тоже как были когда-то установлены, так и стоят, никто ничего на диске не трогал.

В пункте меню используется команда:

qtcreator %F

Вопрос: почему изменился запускаемый Qt Creator? Как вернуть запуск Qt Creator 4.10.2 из /opt/qt_5_12_6 ?

 , ,

Xintrea
()

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