LINUX.ORG.RU

Сообщения ox55ff

 

Нужен хитрый SQL запрос с объединением трёх таблиц с доп логикой

Вводная:
Захотел в списке пользователей отмечать звёздочкой тех, кто является владельцем. Признак владельца храниться в виде роли, которая прикрепляется к пользователю. У пользователя может быть несколько ролей. Роль храниться в виде строки в отдельной таблице.

Структура БД:

Users:
UserId|UserName
     1|Вася
     2|Петя
     3|Коля
     4|Боришполь

Roles:
RoleId|RoleName
     1|Owner
     2|AnotherRole

UserRoles:
UserId|RoleId
     1|1
     1|2
     3|2

Я хочу получить следующее: если у пользователя есть роль Owner, то в столбце должно быть true, иначе false. Не важно есть там какая-нибудь роль или null.

UserId| UserName|IsOwner
     1|     Вася|true
     2|     Петя|false
     3|     Коля|false
     4|Боришполь|false

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

СУБД постгря 10+.

 ,

ox55ff
()

Убрать всплывающее окно при изменении громкости в KDE

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

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


UPD1. Решение по хардкору, пока не вышло исправление. Перенёс в самый верх. Убрал значёк, оставил только progressbar. Уменьшил время показа. Выглядит так.

Установка костыля: здесь /usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/osd/ заменить файлы на эти. Потом перезапустить плазму killall plasmashell; kstart5 plasmashell.

UPD2. Можно проще: Параметры системы → Поведение рабочей среды → Основные параметры → Показывать уведомления при регулировке устройств

 ,

ox55ff
()

a1batross, не по чину берешь!

Сообщение удалено a1batross по причине 4.3, 4.2 (-7)

@a1batross, за что -7 здесь? Там -2 максимум. Я бы ещё понял, если был троллем со стажем. Я тут один из самых законопослушных. Но тут в пятницу гномеров немножко палочкой ткнул и на тебе! Беспредел, верни скор. Сам то накидывал на вентилятор: раз, два, три. Придумайте более оригинальный способ убить ресурс. Он на подколах и держится, для всего остального есть opennet.

 ,

ox55ff
()

Нормализовать ссылку на youtube через regex

Перед записью ссылок в БД хочу нормализовать их, чтобы находить дубли. У ютубчика есть много разных форматов ссылок, которые ведут на одно и то же видео. Например:

youtube.com/watch?v=Bo_F8KTEpss
youtube.com/embed/Bo_F8KTEpss
youtu.be/Bo_F8KTEpss

youtube.com/watch?v=Bo_F8KTEpss?t=1113
youtube.com/embed/Bo_F8KTEpss?t=1113
youtu.be/Bo_F8KTEpss?t=1113

Хочу с помощью регулярки вырезать Bo_F8KTEpss, чтобы потом сгенерировать ссылку в нужном формате. Помогите запилить регулярку, чтобы провернуть всё это дело. На всякий случай скажу, что пишу на c# под dot net core. Я не знаю, что там за движок регулярок.

 , ,

ox55ff
()

GCC на фряхе всё!

Набор компиляторов GCC удалён из дерева исходных текстов FreeBSD. Да здравствует шланг!

remove GCC 4.2.1 build infrastructure

 ,

ox55ff
()

При линковке изолировать от остального проекта символы из библиотеки

Есть SDK для IP камеры от китайцев в виде библиотеки (на выбор .a и .so) и заголовочного файла, исходников нет. К этой библиотеке статически слинкована другая библиотека live555. Китайцы через неё тянут поток по rtsp. Всё прекрасно работает.

Но мне в проекте тоже понадобилось использовать live555, но новой версии и собранной с нужными ключами. При попытке собрать это в рамках одного приложения происходит облом. Я пытался по-разному. Либо конфликты при линковке (ругается на __cxx что-то там и таблицы виртуальных функций) либо китайский live555 берёт верх и мой код начинает работать со старой китайской версией. Пробовал использовать -fvisibility=hidden, методы классов перестали торчать, но вот служебная c++ требуха всё ещё торчит.

Вопрос. Как-нибудь можно их изолировать друг от друга в рамках одного адресного пространства? В идеале, чтобы из китайца торчали только нужные мне функции. Хоть внутри там c++, но API у библиотеки сишный. Или это невозможно из-за одинаковых имён символов?

 , , , ,

ox55ff
()

SFINAE по количеству аргументов у функции

Можете ржать, но я не осилил запилить SFINAE.

Темка такая. Мой код работает с некой библиотекой. В одной из версий у функции из этой библиотеки изменилось число аргументов. Было 3, а стало 4. Нужно написать код, который сможет работать с обеими версиями. Мне лень обмазывать код дефайнами и вносить изменения в сборочный скрипт.

Я хочу, чтобы шаблонная магия проверила сколько у функции аргументов и в зависимости от этого подставила нужное количество параметров. Накидал минимальный пример. Там у foo два аргумента, но компилятор залезает в первую шаблонную функцию, где передаётся три аргумента и умирает. Надо как-то отучить его туда ходить.

Стандарт C++14.

 ,

ox55ff
()

Телефон на android за 15-20к ₽

Вопрос закрыт, купил A50 Телефон на android за 15-20к ₽ (комментарий)

Избавился от своего распильно-откатного Inoi R7 на Sailfish OS и откатился на старенький Samsung Galaxy S4 из тумбочки. Но это никуда не годится, надо что-то новенькое.

Понты не интересуют, игры тоже. Телефон нужен, чтобы звонить и лазить в интернете. NFC обязательно, хочу платить телефоном, как белый человек.

Хотел было купить Samsung A50, но в интернете поливают говном сканер отпечатка пальца и камеру. Нужна помощь экспертов с ЛОРа.

 , , , ,

ox55ff
()

Как готовить i3wm?

Хочу попробовать тайлы. Накатил вчера на арч i3, но в голом состоянии это просто кусок говна. Даже к wi-fi подключиться нечем. После установки nm-applet заработало, но при каждом подключении просит ввести пароль. У меня в кедах был kwallet, а для i3 что используют?

Красноглазить не хочется, хочется быстро стартануть. Нужны готовые конфиги и истории узбека.

 , , ,

ox55ff
()

Создать deb пакет для Ubuntu 18.04

Есть одна тян софтина, которую нужно опакетить. Но софтина не простая, а работающая с локальной бд postgresql. Что нужно сделать:

  1. Установить файлы софтины
  2. Создать desktop файл
  3. Подтянуть по зависимости постгрю из PPA
  4. Настроить постгрю: создать базу и залить схему

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

Мне нужен postgresql 9.6. В репах убунты 18.04 есть только 10 версия, значит нужно тянуть из PPA. Как это лучше сделать? Засунуть в preinst скрипт добавление стороннего репозитория и импорт ключа? Лично я был бы не доволен, если мне без моего ведома прописали репу. Как это лучше сделать?

Вторая проблема - настройка. Нормально ли работать с бд из postinst скрипта?

Цель - максимально упростить установку для конечного пользователя. Чтобы было: далее, далее, готово. Иначе целевая аудитория не осилит.

ЗЫ. Арчевод и в сортах deb пакетов не разбираюсь.

 , , ,

ox55ff
()

Запитать смартфон напрямую от БП

Есть смартфон Samsung Galaxy S4, который не заряжается. В определённую фазу луны можно зарядить до 2% и дальше не идёт. Будет ли он нормально работать если батарею выкинуть и подсоединить провода от БП к контактам в телефоне? БП родной: 5V, 2A. Хватить ли мощщи, чтобы писать видео с подсветкой? Меня интересуют реальный опыт или теоретическое обоснование. До варианта подключить и посмотреть я и сам догадался, но оставлю его на потом.

каст jewy

 ,

ox55ff
()

Что печатать на 3D принтере?

Купил себе на днях принтер, распечатал пару тестовых кубиков и теперь не знаю, что с ним делать. В общем всё в духе потреблядства. Накидайте каких-нибудь идей, а то на thingiverse сложно разгребать тонны хлама.

ПС1. Принтер Anycubic Kossel Linear Plus.
ПС2. Линукс при том, что я с него новую прошивку заливал в принтер.

 

ox55ff
()

Лоровец, а ты пойдёшь завтра (в субботу) на работу?

Собственно, сабж. Из-за переносов праздников опять работаем в субботу.

Линукс при том, что на рабочем компе у меня арчик.

 , ,

ox55ff
()

VPN без создание сетевых интерфейсов

Все мейнстримные vpn клиенты работают через виртуальный сетевой интерфейс. Есть ли что-нибудь в виде .so, с чем можно слинковаться и пускать свой трафик через туннель без возни с маршрутизацией? Надо слать tcp и udp.

 , ,

ox55ff
()

Удобный copy-paste в vim

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

Например Times->Delay. Я в четвёртой строке написал Delay вместо Times и мне понравилось. Я хочу сделать так во всех остальных местах. Выделяю Delay, жму y. Как мне теперь заменить текст в других местах. Ведь, если я удалю что-то, то это затрёт скопированную строку. Шаманство с указанием регистров не предлагать. Это долго, а меня уверяли, что вим это быстро. Я не собираюсь махать руками как пианист, чтобы провести замену слова.

FRandomStream Stream((int32)FPlatformTime::Cycles());
for (int32 Index = 0; Index < NumSamples; Index++)
{
    Delay[Index] = Stream.GetFraction();
}
// ave = .5
for (int32 Cube = 0; Cube < 2; Cube++)
{
    for (int32 Index = 0; Index < NumSamples; Index++)
    {
        Times[Index] *= Stream.GetFraction();
    }
}
// ave = 1/8
for (int32 Index = 0; Index < NumSamples; Index++)
{
    Times[Index] *= 0.00001f;
}
// ave = 0.00000125s
for (int32 Zeros = 0; Zeros < NumSamples / 20; Zeros++)
{
    int32 Index = Stream.RandHelper(NumSamples);
    Times[Index] = 0.0f;
}

Пример кода синтетический и взят из репы UE4. В данном случае можно найти другой более простой способ сделать эти действия. Но мне нужен способ именно с копированием-вставкой. Макросы, набор вручную или глобальная замена не подходят. Если в этом примере это прокатит, то в других нет. Слова могут быть длиннее, а вставку нужно будет делать в середину слова и т.д.

 , ,

ox55ff
()

KDE, Wayland и сломанный значок раскладки клавиатуры

Пересел на кеды под вяленным. Пользоваться уже можно, но есть несколько печальных косяков.

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

Может быть кто-то сталкивался с подобным поведением ранее? Даже в иксах. Мне бы понять в какую сторону копать.

P.S. Заявления, что вяленный или кеды не нужны - не нужны.

 , , , ,

ox55ff
()

Применить ко всем файлам в директории команду и отформатировать вывод

Нужна помощь bash джедаев.

Суть задачи. Есть куча библиотек, мне нужно просмотреть их все на наличие определённого символа. Информация извлекается с помощью команды nm:

$ nm -g lib_hidefog.so
0000db68 B __bss_end__
0000db68 B _bss_end__
0000d7f0 B __bss_start
0000d7f0 B __bss_start__
         w __cxa_finalize
0000203c T DehazeExtRegsDefault
00002104 T DehazeRegsDefault
00002320 T DehazeRegsUpdate
00002e50 T ISP_AlgRegisterDehaze
Далее нужно отфильтровать по искомому символу, например:
$ nm -g lib_hidefog.so | grep ISP_AlgRegisterDehaze 
00002e50 T ISP_AlgRegisterDehaze
И теперь загвоздка. Нужно сделать скрипт на bash, который будет просматривать библиотеки. И если символ найден, то выводил имя файла и результат grep.

Пробовал так, но имя файл съедается:

$ find . -iname '*.so' -exec sh -c 'echo "{}" ; nm -g "{}"' \; | grep ISP_AlgRegisterDehaze

 , ,

ox55ff
()

Кросскомпиляция новым GCC и линковка со старыми библиотеками

Есть железка на arm cortex-a7. Есть к ней тулчейн от производителя GCC 4.8.3 + uClibc 0.9.33.2. Хелловорлды компилируются и запускаются. Всё хорошо.

Однако, мне нужен с++14. Поэтому решил обновить тулчейн. Взял gcc-linaro-7.2.1. Там используется glibc, поэтому я сделал sysroot на тулчейн от производителя. Но собранная им программа не запускается. Выдаёт:

/var/tmp # ./test 
-sh: ./test: not found
Файл существует и разрешение на запуск имеет.

Можно ли добиться работы от такой связки или придётся обновлять все библиотека и собирать новым компилятором? Busybox и uClibc я ещё могу пересобрать. Но у меня есть библиотеки от производителя с закрытым кодом. С ними нужно будет как-то линковаться.

P.S. на устройстве ядро 3.4.

 , , , ,

ox55ff
()

Маршрутизация ethernet <-> docker

Помогите настроить маршрутизацию.

Нужно слить прошивку с ip камеры. Внутри у неё есть u-boot, который может отправить прошивку на tftp сервер. Для этой цели был создан docker контейнер с сервером tftp. С компьютера, на котором крутится контейнер доступ к tftp есть. Проверил на чтение и запись.

Но камера, подключённая к ethernet порту этого же компьютера не может ничего закачать на tftp сервер. Причём файл создаётся, но имеет нулевой размер. Если поднимать сервер на хосте без докера, то всё работает.

Настройки Ethernet порта:

IP 192.168.0.100
mask 255.255.255.0
Настройки контейнера:
IP 172.20.0.2
mask 255.255.0.0
В камере выставлены следующие адреса:
ipaddr=192.168.0.10      // IP камеры
netmask=255.255.255.0
gatewayip=192.168.0.100  // IP шлюза == IP ethernet порта
serverip=172.20.0.2      // Адрес контейнера с tftp сервером
Компьютер:
> netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlp3s0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
172.20.0.0      0.0.0.0         255.255.0.0     U         0 0          0 br-50e78d3a68c2
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp2s0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0

ifconfig

http://pastebin.com/tw4nSPzY

Inspect сетевой части контейнера

docker inspect tftp-server

http://pastebin.com/KvHiF00K

IP forward включен

> cat /proc/sys/net/ipv4/ip_forward
1

 , , , ,

ox55ff
()

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