LINUX.ORG.RU

Сообщения ymuv

 

Проброс порта через SSH на сайт

Есть DVR, ip=dvr (192.168.1.3).

Нужно получить доступ к DVR (80 порт) через интернет, используя малинку (имеет белый IP адрес, работает через роутер) IP = 192.168.1.2.

Можно ли пробросить этот 192.168.1.3:80 используя малинку и как?

 ,

ymuv
()

Gentoo нет звука (alsa, nvidia HDMI)

На новой машине нет звука.
Конфиг ядра: https://pastebin.com/xidRtskF
alsa-info: http://www.alsa-project.org/db/?f=5103cbc1df65f7674b8826f58dd09206a3626f71
Пульс-аудио не установлен, мир собран без этого юз-флага.

$ lsmod  | grep  -E "snd|nvidia"
snd_hda_intel          28672  0
nvidia_uvm            622592  0
snd_hda_codec_hdmi     45056  1
snd_hda_codec          90112  2 snd_hda_intel,snd_hda_codec_hdmi
snd_hda_core           49152  3 snd_hda_intel,snd_hda_codec,snd_hda_codec_hdmi
snd_hwdep              16384  1 snd_hda_codec
snd_pcm                86016  4 snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hda_codec_hdmi
snd_timer              28672  1 snd_pcm
nvidia_drm             45056  1
nvidia_modeset        835584  3 nvidia_drm
nvidia              12963840  42 nvidia_modeset,nvidia_uvm
drm_kms_helper        110592  1 nvidia_drm
drm                   274432  4 nvidia_drm,drm_kms_helper
snd                    53248  6 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_hda_codec_hdmi,snd_pcm
soundcore              16384  1 snd

$ aplay -l 
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
# cat /proc/asound/cards 
 0 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xc7080000 irq 42
# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, HDMI 0
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
    HDA NVidia, HDMI 1
    HDMI Audio Output

Но

speaker-test -c 2

speaker-test 1.1.3

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.4.1/work/alsa-lib-1.1.4.1/src/pcm/pcm_dmix.c:1099:(snd_pcm_dmix_open) unable to open slave
Playback open error: -2,No such file or directory


Для теста пробовал загрузиться с ядра с убунты (17.04), звука тоже нет. В убунте звук есть, но выводиться через пульсу, если пульсу убить, та же проблема.

Пользователь в групе audio (также запускал от рута).

Пробовал создать файл .asoundrc

pcm.!default { 
type hw 
card 0
} 

ctl.!default { 
type hw 
card 0
}
результата нет.

 , ,

ymuv
()

Gentoo парсинг cflags в ebuild

Нужно в ebuild посмотреть, стоит ли флаг -fomit-frame-pointer и выставить

GLOBALCMAKEARGS=(
DENABLE_OMIT_FRAME_POINTER=OFF/ON( в зависимости от того, найден ли -fomit-frame-pointer в CFLAGS.)

Как такое сделать?
megabaks Pinkbyte

 ,

ymuv
()

Асиметричная криптография

Есть приложение, оно обменивается данными по сети (UDP), данные шифруются AES.

На сервере (упрощенно):

rawData = Serialize(Login, md5(pass), data);
data = AES(rawData, AES_password);
send (data)
Хочу применить асимметричную криптографию.
Насколько я понимаю, код должен быть таким:
clientPubKey = receivePubKey();
rawData = Serialize(Login, md5(pass), data);
dataCrypted = Crypt(rawData, clientPubKey, serverPrivateKey);
send(dataCrypted);


Верно?

 

ymuv
()

Найти файлы где 2 пробела.

Есть много файлов сорцов.
В некоторых остался старый синкасис: 2 пробела (сейчас 4).
Нужно пройтись скриптом и выдать список файлов, где подряд пробелов точное количество: 2, 6, 10 ....

Из того что удалось нагуглить искало не менее 2 пробелов, то есть реагировало в том числе и на файлы где отступ 4 пробела.

Помогите написать скрипт.

Заменять буду из IDE.

 , ,

ymuv
()

Контроль отправки данных по сети

Имеется некая структура, которую я передаю по сети.
Сейчас, когда структура сериализуется, я делаю так (псевдокод):

static uint32_t magicNumberBegin = ...
static uint32_t magicNumberEnd = ...
stream << magicNumberBegin << struct << magicNumberEnd;
send(stream);
на другой стороне проверяю сходятся ли начальный и конечные числа, если да - считаю что передача удалась, то есть:
read(stream);
stream >> magicNumberBeginTmp >> struct >> magicNumberEndTmp;
if (magicNumberBeginTmp == magicNumberBegin && magicNumberEndTmp == magicNumberEnd) {
    // OK
} else { 
    //fail
}


Размер структуры - ~60 килобайт.

Вопрос: правильно ли я делаю? Если нет, какие предложение будут?
Считать, что порядок байт не имеет значения.

Вопрос 2: как контролировать, что с serial порта считались валидная строка? Строка будет <20 символов. Планирую приблизительно так же.

//device
send(magicNumberBegin, stringSize, string);
//reader
read(magicNumberBeginTMP, stringSizeTMP, string);
if (magicNumberBeginTmp == magicNumberBegin && stringSizeTMP == string.size()) {
    //OK
} else {
    //fail
}

 ,

ymuv
()

libreoffice git

Назрел вопрос: есть ли плагин/внешняя утилита по типу git для libreoffice/MS office, чтоб можно было сравнить 2 версии side by side diff вместе со шрифтами, отступами, стилями, ....

 

ymuv
()

boost serialization set Max version

Сериализирую объекты бустом приблизительно так.

    std::ostringstream oss;
    boost::archive::text_oarchive toa(oss);
    toa << obj;

    toa.save_binary(&buff.at(0), buff.size());
  

    outStr = oss.str();

Другой метод десириализирует.

Запускаю на разных версиях linux с разными boost, где стоят разные версии boost и возникает исключение при десиализации: «unsupported version».

Cобираю на cubieTrack (boost 1.58; версия сериализатора: 12), gentoo (boost 1.56; версия сериализатора: 11),
orangepi (boost 1.54, версия сериализатора: 10).


Вопрос: можно ли задать максимальную версию сериализатора? Желательно в рантайме, но также подойдет и в компайлТайме.

Собирать boost нет желание

 ,

ymuv
()

Popen PIPE пишет много раз

Нужно чтоб питон-скритп запустил программу и через некоторое время написал строчку в программу.

Если просто представить, то есть CPP программа:

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
   std::string input;
   int i = 0;
   ofstream myfile("/var/tmp/result.txt", ios::out);
   while (1)
   {
      std::cin >> input;
      std::cout << "get: " << input << "; i = " << i << std::endl;
      myfile << "get: " << input << "; i = " << i << std::endl;
      i++;
      if (i > 10 )
         return 0;
   }
}
И питон скрипт:
#!/usr/bin/python
from subprocess import Popen, PIPE
import time

CMD="/home/y/test/build-console-Desktop/./myApp"
handle = Popen(CMD, shell=True, stdin=PIPE) 

time.sleep(2)
print "write now"
handle.stdin.write("123")
handle.stdin.flush()
handle.stdin.close()
time.sleep(2)

Я ожидаю, что программа один раз зайдет в цикл и будет ждать пока не будет повторно что-то записано.
Но на практике я получаю вывод:
$ ./test_py/test_small.py
write now # - это пишет питон
get: 123; i = 0 # это и до конца CPP
get: 123; i = 1
get: 123; i = 2
get: 123; i = 3
get: 123; i = 4
get: 123; i = 5
get: 123; i = 6
get: 123; i = 7
get: 123; i = 8
get: 123; i = 9
get: 123; i = 10

Вопрос: как сделать чтоб CPP программа читала только 1 раз? Очень желательно без изменения CPP кода.

 , ,

ymuv
()

Использумые методы

Есть либа liba.so
В либе есть класс

//A.hpp
class A
{
public:
 A();
 void foo(double a);
private:
 void bar(double b);
}
inline void A::foo(double a) {/*...*/}
//A.cpp
A::A() {}
void A::bar(double b) {}
И есть бинарь, который линкуется с либой ( в коде подключается A.hpp)
Вопрос: можно ли получить список методов, которые использует бинарь?
Смотрел string binFile , но туда попадает приватные методы. (хотя в самом заголовке класса он только об'явлен, реализация в либе).
И инлайн методы туда не попадают.

Есть несколько десятков классов в бинаре и больше сотни в либе, перебирать руками долго будет.

Была идея передавать в опции компилятора бинаря -fno-inline -fno-inline-small-functions ; а в опции линкера -flto -fwhole-program , но не уверен насколько результат будет правильным.

UPD: попробовал с опциями, инлайн функции появились, но приватные не пропали.

 ,

ymuv
()

Узнать где находиться функция

Командой strings -f fileName | grep symbolName можно узнать есть ли символ в бинаре или либе.
К примеру

strings -f  binFile liba.so libb.so | grep test_func
binFile: test_func
liba.so: test_func
libb.so: test_func 

1. Можно ли узнать, в какой либе эта функция находится?
2. Есть ли утилита, которая получает на вход бинарь/либу и символ, и показывает, где символ определен. (что-то типа продвинутого ldd), то есть результат должен быть похож на:
magic_utility binFile test_func
 binFile(test_func) => libb.so

magic_utility liba.so test_func
 liba.so(test_func) => libb.so

magic_utility libb.so test_func
 libb.so(test_func) => libb.so
 

 , , ,

ymuv
()

AA 1.2В vs 1.5В

Есть фотоаппарат Kodak Z8612 IS.

Для него нужны батарейки/аккумуляторы: CRV3 || 2*AA.
CRV3 - имеет.
AA батарейка тоже 3 вольта.
Но аккумулятор 1.2 вольта. (2*1.2 = 2.4; 2.4 < 3).
(для примера: http://070.com.ua/product/akkumuljator-nikel-metallogidridnyj-ni-mh-aa-r6-sos... )

Поэтому вопрос: можно ли брать 1.2 вольтовые аккумуляторы?

 ,

ymuv
()

git цепочка бранчей

Можно ли проследить цепочку последних N бранчей?
К примеру git hist (git log --graph --pretty='format:%C(yellow)%h%Creset %s%C(bold blue)%d%Creset'
) показывает что-то вроде:

* 5555555 commit4 (HEAD -> some_branch3)
* 4444444 commit3 (some_branch2)
*   3333333 Merge pull request #2... (origin/master, origin/some_branch, master)
|\  
| * 2222222 Commit1
* |   1111111 Merge pull request #1


Хочу чтоб команда выдала
$ git branch-hist
some_branch3 -> some_branch2 -> master

 ,

ymuv
()

SSE -> no SSE(NEON)

Есть библиотека, в которой много используется SSE инструкций.
Под arm (ARMv7 Processor rev 3) естественно не собирается.

Пробовал использовать SSE2NEON (https://github.com/jratcliff63367/sse2neon/blob/master/SSE2NEON.h) но автор видимо имплеминтировал только то, что ему нужно.
И после нескольких дней дописываний просто заглушек функций надоело.

Поэтому вопрос: есть ли заголовочный файл, чтоб конвертировать SSE инструкции в обычные?

 , ,

ymuv
()

g++ -E для template

Есть ли возможность «раскрыть» шаблоны? (не в уме).

К примеру результат препроцессора можно посмотреть g++ -E, есть ли что-то похожее для шаблонов?

К примеру:

template<typename T>
T add(T& t1, T& t2)
{
        return t1 + t2;
}
                                                                                                                     
int main()                                                                                                           
{                                                                                                                    
        int i1 = 1, i2 = 2;                                                                                          
        add(i1, i2);                                                                                                 
}

чтоб раскрылось в
int add(int& t1, int& t2)
{
        return t1 + t2;
}
                                                                                                                     
int main()                                                                                                           
{                                                                                                                    
        int i1 = 1, i2 = 2;                                                                                          
        add(i1, i2);                                                                                                 
}

 , , ,

ymuv
()

После перехода на Qt-5.5.1 не работает dolphin

Вернее работает, но не работает клик мыши на файл/директорию ни правой ни левой кнопкой. Так же не работает клик по Places.
По меню, по кнопкам работает.

Проблема возникла когда собрал Qt-5.5.1 (раньше было qt-5.4.2) (раньше проблема возникала на Qt-5.5.0 но не разбирался, а откатился на 5.4.2).

emerge -avep dolphin http://pastebin.com/U6rSijD0

 , , ,

ymuv
()

Размер песни

Есть хорошая песня:
Scorpions - Born To Touch Your Feelings
Вопрос: какой у нее размер?
Я думаю что 6/8, но 2-е людей после муз.школы говорят что 4/4. (сам я не музыкант и муз.образование нет вообще, немного на гитаре играл)

Нормальных нот не удалось найти.
Сама песня:
https://www.youtube.com/watch?v=vxuhNmjnK9M
https://www.youtube.com/watch?v=IUwqbI49DE8
А линукс тут при том, что эта песня включается на Gentoo.
Что такое размер https://ru.wikipedia.org/wiki/Размер_(музыка)

 , ,

ymuv
()

Подмена сертификатов HTTPS и SSH

Заметил что начали подменять сертификат HTTPS.
С HTTPS ничего страшного, не буду ходить куда не надо, но страшнее SSH. Как узнать подменили ли сертификат SSH?

На машине за натом:
ssh-keyscan MY_IP
# MY_IP SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
MY_IP ssh-rsa AAAAB...57
# MY_IP SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
MY_IP ecdsa-sha2-nistp256 AAAAE2....Y=
Такие же результаты на нормальной машине. Это дает уверенности что сертификат не подменен?

 , , ,

ymuv
()

Максимальный обьем оперативной памяти

Есть процессор Core i5 430M и чипсет Intel HM55 http://ark.intel.com/ru/products/43537/Intel-Core-i5-430M-Processor-3M-Cache-...

http://ark.intel.com/ru/products/43183/Intel-BD82HM55-PCH С сайта интел о процессоре:

Макс. объем памяти 8 GB

Но в /proc/cpuinfo пишет

address sizes : 36 bits physical, 48 bits virtual

Что будет если вставить больше 8ГБ ОЗУ?

 ,

ymuv
()

2 видеокарты - 2 монитора

Есть ноутбук со встроенной видеокартой nvidia gt 330m.
К ноутбуку подключена внешняя видеокарта gt 730.

При попытке вывести изображение на обе видеокарты со включеной xinerama - черный экран, при этом в Xorg.log ничего подозрительного нет. Без xinerama работает.

xorg.conf(cгенерированный nvidia-settings):

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 1680 0
    Screen      1  "Screen1" 0 735
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0" # 1 - не работает
EndSection

Section "Files"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "LG Electronics L204W"
    HorizSync       28.0 - 83.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Nvidia Default Flat Panel"
    HorizSync       29.0 - 59.0
    VertRefresh     60.0 - 61.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GT 730"
    BusID          "PCI:16:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GT 330M"
    BusID          "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


Танцы с бубном:
- менял BaseMosaic (по советам из интернета).
- пробовал разные версии драйверов.

OS: gentoo; kernel 3.15.0-pf5; nvidia drivers 340.93 (последний, который поддерживает 330m).

Встроенную видеокарту для вывода на монитор использовать не могу.

Как заставить работать xinerama на 2-ох видеокартах?
(логи смогу выложить позже, если нужно).

 ,

ymuv
()

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