LINUX.ORG.RU

Сообщения LIKAN

 
Форум — Desktop

Регулировка ярокости с клавиатуры

 

Всем бобра! После долгой паузы вернулся на онтопик. Arch потребовал немедленного обновления - сделал. После в xfce 4.12 довольно хреново работает регулировка яркости экрана с клавиатуры. (Сам ничего не настраивал - дефолт дефолтом) (Fn+F6/F7). После нажатия указанной комбинации система намертво повисает на секунду. Отвисает уже с новым уровнем яркости. (Уровня яркости в настройках я так кстати и не нашел). Как определить какой софт в операционке за это отвечает? Как его прибить или настроить по нормальному? ЗЫ fujitsu lh532 video - intel.

LIKAN
()
Форум — Talks

Посоветуйте мультиметр

 ,

Харе Кришна! Господа, понадобилась в жизни такая штука, как мультиметр, омы, вольты и амперы мерить. Типа DT-830. Но вот зараза, большинство из них питаются со всяких крон или ещё более странной ерунды. Можете посоветовать модельки, которые можно запитать элементами размера AA or AAA, стоимостью до 800р ? (пайку собственных схем просьба не предлагать)

LIKAN
()
Форум — Development

Вычисление собственных векторов в pca

 , ,

Собственно мое понимание PCA. У исходной матрицы А - колонки - это измерения, строки - это наблюдения/эсперименты Считаем ковариационную матрицу - А' * A вычесть среднее. Потом у ковариационной матрицы находим нужное кол-во собственных векторов - они и будут главными компонентами.
Но при попытке разобраться в opencv-шной реализации PCA меня ждал сюрприз. Допустим, что у нас матрица 2х10000. Т е явно хочется снизить размерность. Если мы посчитаем A' * A - то получиться вычисление ковариационки - 10000 х 10000, что over 9000. Отчаянные парни из opencv делают следующее. Они умножают A * A' , получают ковариационку - 2 х 2. Считают её собственные вектора, которые имеют размерность 2 и их 2 штука. (упаковывают их в матрицу 2х2 - eigenvectors). Потом они считают вектор средних для А, который будет иметь размерность 1 х 10000. Потом дублируют его как строку столько раз, сколько строк в матрице изначальной (ну и получают размерность, как изначальная матрица) - назовём её mean_mat. И потом происходит следующий финт, даже не ушами, а чем-то похлеще. Eigenvectors = Eigenvectors' * mean_mat. В итоге получается матрица 2 * 10000. Как я понимаю - это 2 «собственных» вектора по 10000 каждый. Т е по крайней мере размер векторов получается такой, как если бы они изначально ковариационку правильно посчитали - A' * A. Только вот почему эти ребята имеют право так поступать? Есть у этого алгоритма ловкого вычисления собственных векторов имя? И почему его не используют в lda реализации из opencv (там честно считают ков. матрицы 10000 х 10000).

LIKAN
()
Форум — Development

Использование LDA для снижения размерности

 

LDA - общеизвестен как алгоритм классификации. Но в большинстве статей указывается, что он также может быть использован для снижения размерности. Вопрос, каким образом это будет осуществляться? Понятно, что если есть трехмерные данные, которые хорошо линейно разделяются на два класса, то данные можно ловко спроектировать на пл-ть, перпендикулярную к разделяющей, и получить снижение размерности на 1. (То же для случаев большей размерности) Но такое скромное снижение размерности не выдержит ни какой конкуренции с каким нибудь PCA. Можно ли LDA рассматривать, как конкурент PCA? Как, в случае первого, осуществляется снижение размерности?

LIKAN
()
Форум — General

Конфигурация большого кол-ва видео-карт

 , ,

Есть конфигурация пк с двумя дискретными видео + видео-выход на материнке (очевидно есть ещё встроенная видюха). Так вот всякая служебная инфа при загрузке машины (выход в efi меню) + меню граба отображается ТОЛЬКО через выход одной из дискретных видюх. А вот весь установочный гуй убунты ТОЛЬКО через встроенную. Система поставлена. Теперь граб не отображается вообще нигде. А декстоп убунты можно получить, только заранее вставив кабель монитора в выход материнки. Как бы всю эту ерунду разрулить. Наиболее предпочтительный вариант - это если всё будет идти через выход дискретной карты. Да и граб-меню увидеть бы хотелось бы, у меня дуалбут. Если важно - то вся система на ссд, грузиться все очень быстро.

LIKAN
()
Форум — Development

Генерация тестового набора данных

 

Есть в opencv утилита opencv_createsamples. Служит для генерации положительного набора данных при создании каскада Хаара.
На вход подается шаблон, на поиск которого тренеруется каскад, и несколько файлов фона. Программа как-то деформирует шаблон и размещает его случайным образом поверх фона. Есть флаг, отображающий рез-тат в окошке. Выходом данной программы является .vec файл. Но хочеться сгенерировать тестовый набор данных. Те сделать то же самое, что и эта програмка, только чтоб выходом был набор картинок. Как это осуществить?

LIKAN
()
Форум — Desktop

Помогите настроить энергосбережение

 ,

Есть ноутбук fujitsu lh532. Ноутбук под виндой живет в два раза дольше, чем под онтопиком, хотя в (arch) linux все очень тайлово, минималистично и не ярко (подсветка - 17%). powertop выглядит примерно вот так вот

The battery reports a discharge rate of 7.41 W
The estimated remaining time is 1 hours, 7 minutes

Summary: 1202,8 wakeups/second,  172,4 GPU ops/seconds, 0,0 VFS ops/sec and 8,0% CPU use

                Usage       Events/s    Category       Description
             17,0%                      Device         Display backlight
             17,0%                      Device         Display backlight
             27,5 ms/s     957,0        Process        /usr/bin/Xorg.bin :0 -seat seat0 -auth /run/lightdm/root/:0 -nolist
            100,0%                      Device         USB device: USB Mouse (A4Tech)
              0,0 pkts/s                Device         Network interface: enp3s0 (r8169)
              0,0 pkts/s                Device         Network interface: wlp4s0 (iwlwifi)
             17,3 ms/s      57,8        Process        /home/likan/.xmonad/xmonad-x86_64-linux
              3,4 ms/s     147,9        Interrupt      [30] i915
              7,0 ms/s       6,9        Process        /usr/lib/chromium/chromium --ppapi-flash-path=/usr/lib/PepperFlash/
              5,1 ms/s      32,3        Process        dzen2 -x 0 -y 752 -w 450 -h 16 -ta l -fg #9d9d9d -bg #020202 -fn -*
              4,5 ms/s      19,6        Process        dzen2 -x 0 -y 0 -w 950 -h 16 -ta l -fg #9d9d9d -bg #020202 -fn -*-m
              3,6 ms/s       5,9        Process        dzen2 -x 450 -y 752 -w 916 -h 16 -ta r -fg #44aacc -bg #020202 -fn
              2,4 ms/s      28,4        Process        xmonad-x86_64-l
              2,9 ms/s       2,0        Process        dzen2 -x 950 -y 0 -w 416 -h 16 -ta r -fg #9d9d9d -bg #020202 -fn -*
              0,8 ms/s      21,5        Process        [irq/31-iwlwifi]
              1,2 ms/s       7,8        Process        /usr/bin/xfce4-terminal
            197,7 us/s      19,6        Process        [rcu_preempt]
              0,7 ms/s       1,0        Timer          posix_timer_fn
             79,9 us/s      17,6        Interrupt      [31] iwlwifi
            335,6 us/s       7,8        Timer          tick_sched_timer
            138,8 us/s       9,8        kWork          ieee80211_iface_work
            372,8 us/s       1,0        Interrupt      [9] RCU(softirq)
            337,7 us/s       1,0        kWork          i915_gem_idle_work_handler
            296,0 us/s       1,0        Interrupt      [7] sched(softirq)
             93,7 us/s       3,9        Process        /usr/lib/chromium/chromium --type=gpu-process --channel=1148.0.5543
Установлен и настроен по вики пакет TLP. Используется встроенная карточка. Как узнать подается ли питание на дискретную карту? Как проверить активен ли bluetooth?
ЗЫ Была замечательная статья megabaks, но статья 2010 года. Хочется что-то точно такое же, но посвежее.

LIKAN
()
Форум — Development

Помогите разобраться с синтаксисом scala

 

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

for(i <- 0 until count) {
                // enemy: The name of this enemy
                // dist: The distance to your cannon of this enemy
                val Array(enemy, _dist) = readLine split " "
                val dist = _dist.toInt
            }
Что за ерунда? readLine split " " - вернет Array[String]. А это Array(enemy, _dist) - что за динозавр? Как к нему потом обращаться? Что такое _dist и как оно может существовать за пределами Array? Как потом обращаться к этим переменным(или как правильно по русски называть объект val) за пределами for?

LIKAN
()
Форум — General

Не могу получить доступ к устройству

 

Есть у меня вот такое у-во

$ ls -l /dev/ttyUSB0 
crw-rw---- 1 root uucp 188, 0 дек 29 15:39 /dev/ttyUSB0

И есть программка, которая к нему обращается. Добавляю я своего юзера в группу uucp
$ cat /etc/group | grep uucp
uucp:x:14:likan
Пытаюсь запустить програмулину от этого пользователя и получаю
Cannot open serial device /dev/ttyUSB0
От рута все работает. ЧЯНД?

LIKAN
()
Форум — General

Открыть программы в разных вкладках терминала

 ,

Действующие лица - xfce4-terminal и 4 самописные софтины которые постоянно пишут кой-что ценное в стандратный поток вывода. Задача написать такой скрипт, который открывал бы окошко терминала с четырьмя вкладками по софтине в каждой. Пытался сделать как-то вот так вот

xfce4-terminal -e "softina1" &&
xfce4-terminal --tab -e  "softina2" &&
xfce4-terminal --tab -e "softina3" &&
xfce4-terminal --tab -e "softina4"
на практике, кол-во открываемых вкладок зависит от погоды на марсе.

LIKAN
()
Форум — Development

Фильтр по колонкам

 

Как в R получить список имён или номеров колонок, которые соответствуют заданному условию?

LIKAN
()
Форум — Development

Сохранить модель в файл

 

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

LIKAN
()
Форум — Development

Помогите разобраться с sendto

 ,

Есть такая вот функция

int send_sres(uint8_t *rand, char *imsi, uint8_t *sres)
{

	//const char* cmdPath = DEFAULT_CMD_PATH;

	//char rspPath[200];
	//sprintf(rspPath,"/tmp/OpenBTS.console.%d.%8lx",getpid(),time(NULL));


	//printf("command socket path is %s\n", cmdPath);


	// the socket
	int sock = socket(AF_INET,SOCK_DGRAM,0);
	if (sock<0) {
		perror("opening datagram socket");
		exit(1);
	}
	FILE *bts_addr;
	bts_addr = fopen(DEFAULT_BTS_ADDR,"r");
	if(bts_addr == NULL)
		perror("Error while loading bts_addr file\n");
	char *inaddr=NULL;
	size_t inaddr_len=0;
	getline(&inaddr,&inaddr_len,bts_addr);
	fclose(bts_addr);
	// destination address
	struct sockaddr_in cmdSockName;
	memset(&cmdSockName, 0, sizeof(struct sockaddr_in));
	cmdSockName.sin_family = AF_INET;
   	cmdSockName.sin_addr.s_addr = inet_addr(inaddr);
   	printf("Server addr %s\n", inaddr); 
   	cmdSockName.sin_port = htons(5065); 
	

	// locally bound address
	struct sockaddr_in rspSockName;
	memset(&rspSockName, 0, sizeof(struct sockaddr_in));
	rspSockName.sin_family = AF_INET;
	rspSockName.sin_addr.s_addr = inet_addr("127.0.0.1");
	rspSockName.sin_port=htons(5066);
	
	if (bind(sock, (struct sockaddr *) &rspSockName, sizeof(struct sockaddr_in))) {
		perror("binding name to datagram socket");
		free(inaddr);
		exit(1);
	}
	

		char *randc;  //fgets(inbuf,199,stdin);
		//char *cmd; 
		char buf[128];

		randc=osmo_hexdump_nospc(rand,16);

		 strcat(strcat(strcat(strcpy(buf, "getsres "), imsi), " "), randc);
		 printf("rand : %s\n",buf);


	

		// use the socket
		if (sendto(sock, buf, sizeof(buf),0,(struct sockaddr*)&cmdSockName,sizeof(struct sockaddr))<0) {
			perror("sending datagram");
			printf("Error sent to socket\n");
		}
		else{
			printf("We successfully sended rand\n");	
		}

		const int bufsz = 100000;
		char resbuf[bufsz];
		int nread = recv(sock,resbuf,bufsz-1,0);
		if (nread<0) {
			perror("receiving response");
		}
		resbuf[nread] = '\0';
		printf("%s\n",resbuf);
		if (nread==(bufsz-1)) printf("(response truncated at %d characters)\n",nread);
	 	osmo_hexparse(resbuf,sres,4);
	free(inaddr);	
	close(sock);

}
Попытка выполнения заканчивается следующим
rand : getsres 250016387796246 89eef4f1949bb3d686fc49179d415847
sending datagram: Invalid argument
Error sent to socket

В чем дело, какой из аргументов левый?

LIKAN
()
Форум — Development

Обработка данных в R

 

Есть таблица, хочу убрать из неё колонки, где процент значения N/A выше порогового (порог задать руками). Как это сделать?

LIKAN
()
Форум — Development

Неожиданное снижение размерности

 

Есть такой вот код на R

dim(training)
[1] 11776   160
 dim(testing)
[1] 7846  160
numIndex <- sapply(training, is.numeric)
preProc <-preProcess(training[,numIndex],method="pca",pcaComp=50)
trainPC<-predict(preProc,training[,numIndex])
modelFit<-train(training$classe~.,method="rpart",data=trainPC
testPC<-predict(preProc,testing[,numIndex])
length(predict(modelFit,testPC))
[1] 170
Что за ерунда? Почему было 7846 строк, а стало 170, как так?

LIKAN
()
Форум — Development

3d plot на R

 

Есть у меня таблица о четырех колонках. В трех - циферки, в четвертой буковка. Как бы мне визуализировать эту табличку, чтоб циферки стали координатами x,y,z, а буковка обозначалась цветом точки. Для трехмерного случая (две координаты и цвет) это делается очень просто

plot(train$x[,1],train$y[,2],col=train$letter)
А вот для четырехмерного (три координаты и цвет) я сделать никак не могу. И ещё было б неплохо, чтоб все это дело можно было вращать.

LIKAN
()
Форум — Development

Куда пропадают пакеты?

 ,

Есть два приложения, использующих zmq, на первом развернут zmq_router

void *context = zmq_ctx_new ();
mitm_socket = zmq_socket (context, ZMQ_ROUTER);
int rc = zmq_bind (mitm_socket, "tcp://*:5556");
....
zmq_send(mitm_socket,((struct osmocom_ms*)ms)->name,strlen(((struct osmocom_ms*)ms)->name)+1,ZMQ_SNDMORE);
    
    if(zmq_send (mitm_socket, json_dumps(root,0), strlen(json_dumps(root,0))+ 1,ZMQ_NOBLOCK) == -1){
		//zmq_close (requester);
    	//zmq_ctx_destroy (context);
    	vty_notify(ms,"Inside send\n");
		return -2;
	}
На втором zmq_dealer (оно слушает сразу 2 сокета, в данном случае интересен только osmo)
int ling_period_osmo=3000;
    int recv_timeout_osmo=3000;
    void *osmo_context = zmq_ctx_new ();
    void *osmo_socket = zmq_socket (osmo_context, ZMQ_DEALER);
    zmq_setsockopt (osmo_socket, ZMQ_IDENTITY,identity, sizeof(identity));
    zmq_setsockopt (osmo_socket, ZMQ_LINGER, &ling_period_osmo, sizeof(int));
    zmq_setsockopt (osmo_socket, ZMQ_RCVTIMEO, &recv_timeout_osmo, sizeof(int));
    if(zmq_connect (osmo_socket, "tcp://localhost:5556") == -1){
        printf("Couldn't connect to osmocom\n");
        return NULL;
    }
rc=receive_message_from_router(main_socket, &buffer);
        printf("Thread %d: recv status from bts %d\n",*(int*)arg, rc);
        if(rc < 0){
            //printf("Waiting from osmo\n");
            rc=receive_message_from_router(osmo_socket, &buffer);
f(rc >=0){
                printf("Thread %d:Reseive from osmo   ",*(int*)arg);
            }
        }
        else
            printf("Thread %d:Reseive from bts ",*(int*)arg);
......
int receive_message_from_router(void * responder,zmq_msg_t *buffer){
    zmq_msg_t last;
    zmq_msg_init (&last);
    zmq_msg_t message;
    zmq_msg_init (&message);
    int result;
    while(1){
        result = zmq_msg_recv (&message, responder, 0);

        if(result == -1)
            return -1;
       else
           printf("Data from router \"%s\"\n",zmq_msg_data(&message));
        int64_t more;           //  Multipart detection
        more = 0;
        size_t more_size = sizeof (more);
        zmq_getsockopt (responder, ZMQ_RCVMORE, &more, &more_size);

        if (!more){
            zmq_msg_copy (&last, &message);
            break;

        }//  Last message part
    }
     zmq_msg_copy (buffer, &last);
     zmq_msg_close(&last);
     zmq_msg_close (&message);
    return 0;
}
Так вот, zmq_dealer шлет некоторую команду, когда приложение с zmq_router её выполнит оно шлет дилеру какое оно хорошее (или не хорошее). Так вот, столкнулся с такой бедой, что время от времени zmq_router замолкает полностью. Команды принимает, приложение их выполняет, ф-ция zmq_send возвращает не -1. А вот пакета нет, ни zmq_dealer, ни в wireshark-е его не видно (тут я конечно могу наврать, в полотенце вывода пакет можно просто не рассмотреть). С чем такое поведение может быть связано? Никакой корреляции с внешними событиями проследить не могу. Сетевое соединение надежное.

LIKAN
()
Форум — Development

ошибка: ожидается идентификатор

 

Помогите разобраться. В программу входят вот такие строки

#include <sys/ptrace.h>
....
struct syscallentry syscall_ptrace = { 
    .name = "ptrace",
    .num_args = 4,
    .arg1name = "request",
    .arg1type = ARG_OP,
    .arg1list = { 
        .num = 25, 
        .values = { PTRACE_TRACEME, PTRACE_PEEKTEXT, PTRACE_PEEKDATA, PTRACE_PEEKUSR,
                PTRACE_POKETEXT, PTRACE_POKEDATA, PTRACE_POKEUSR, PTRACE_GETREGS,
                PTRACE_GETFPREGS, PTRACE_GETSIGINFO, PTRACE_SETREGS, PTRACE_SETFPREGS,
                PTRACE_SETSIGINFO, PTRACE_SETOPTIONS, PTRACE_GETEVENTMSG, PTRACE_CONT,
                PTRACE_SYSCALL, PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP,
                PTRACE_KILL, PTRACE_ATTACH, PTRACE_DETACH, PTRACE_GETSIGMASK,
                PTRACE_SETSIGMASK },
    },  
    .arg2name = "pid",
    .arg3name = "addr",
    .arg3type = ARG_ADDRESS,
    .arg4name = "data",
    .sanitise = sanitise_ptrace,

    .flags = AVOID_SYSCALL,
};
Компиляция заканчивается вот такой ерундой
lcc: "/usr/include/sys/ptrace.h", строка 33: ошибка: ожидается идентификатор
    PTRACE_TRACEME = 0,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 37: ошибка: ожидается идентификатор
    PTRACE_PEEKTEXT = 1,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 41: ошибка: ожидается идентификатор
    PTRACE_PEEKDATA = 2,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 49: ошибка: ожидается идентификатор
    PTRACE_POKETEXT = 4,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 53: ошибка: ожидается идентификатор
    PTRACE_POKEDATA = 5,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 61: ошибка: ожидается идентификатор
    PTRACE_CONT = 7,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 65: ошибка: ожидается идентификатор
    PTRACE_KILL = 8,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 70: ошибка: ожидается идентификатор
    PTRACE_SINGLESTEP = 9,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 94: ошибка: ожидается идентификатор
    PTRACE_ATTACH = 16,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 98: ошибка: ожидается идентификатор
    PTRACE_DETACH = 17,
    ^

lcc: "/usr/include/sys/ptrace.h", строка 112: ошибка: ожидается идентификатор
    PTRACE_SYSCALL = 24,
    ^
Файл <sys/ptrace.h> у меня выглядит следующим образом http://pastebin.com/dVaMfCzr

Сделал тестовый файл

#include <stdio.h>
#include <sys/ptrace.h>

void main(){
	printf("HW %d\n",PTRACE_SYSCALL);
}
Работает отлично, в чем может быть дело?

LIKAN
()
Форум — Development

Что за константа MODULE_ADDR

 , ,

Портирую небольшую програмулину на e2k. В програмулине есть некоторая константа MODULE_ADDR, которая объявляется отдельно для каждой архитектуры.
Для i386: MODULE_ADDR 0xa0000000
Для x86_64: #define MODULE_ADDR 0xffffffffa0000000UL
Для arm

 
#define PAGE_OFFSET     0xC0000000
#define MODULE_ADDR     (PAGE_OFFSET - 0x00800000)
Что это за константа, и как её в операционке найти?

LIKAN
()
Форум — Development

Как определить, по какому адресу загружено ядро в память

 

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

LIKAN
()

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