LINUX.ORG.RU

Сообщения ubik

 

Имплементация А* на С

Всем привет. Понадобилось забацать поиск пути в игрушке, которую пишу на С. Несколькоминутный поиск привёл к алгоритму «А звёздочка». Поискал описание алгоритма, нашёл неплохое объяснение вот здесь и здесь. Раскурил листинг на питоне, а вот как это портировать на С? Даже не знаю с чего начинать. Буду рад любым советам/ссылкам/посылам/etc ☺

 , ,

ubik
()

Упал LVM2

Всем привет. После перезагрузки хоста падает lvm, в который было воткнуто 2 диска sdb и sdc.

Выхлоп journalctl:

Mar 29 09:13:06 localhost systemd[1]: Starting Activation of LVM2 logical volumes...
Mar 29 09:13:06 localhost lvm[180]:   Couldn't find device with uuid sccmIu-CRmu-jS2G-a009-J2Zl-N1YL-D7RMpv.
Mar 29 09:13:06 localhost lvm[180]:   Refusing activation of partial LV lvm/volume.  Use '--activationmode partial' to override.
Mar 29 09:13:06 localhost lvm[180]:   0 logical volume(s) in volume group "lvm" now active
Mar 29 09:13:06 localhost systemd[1]: lvm2-activation.service: Main process exited, code=exited, status=5/NOTINSTALLED
Mar 29 09:13:06 localhost systemd[1]: lvm2-activation.service: Failed with result 'exit-code'.
Mar 29 09:13:06 localhost systemd[1]: Failed to start Activation of LVM2 logical volumes.

pvscan -vd выводит следующее:

localhost ~ # pvscan -vd
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
  Couldn't find device with uuid sccmIu-CRmu-jS2G-a009-J2Zl-N1YL-D7RMpv.
    There are 1 physical volumes missing.
  PV [unknown]  VG lvm             lvm2 [<465.76 GiB / 0    free]
  PV /dev/sdc   VG lvm             lvm2 [<465.76 GiB / 0    free]
  Total: 2 [<931.52 GiB] / in use: 2 [<931.52 GiB] / in no VG: 0 [0   ]

pvck:

localhost ~ # pvck -vyd /dev/sdb1
    Scanning /dev/sdb1
  Could not find LVM label on /dev/sdb1
localhost ~ # pvck -vyd /dev/sdc
    Scanning /dev/sdc
  Found label on /dev/sdc, sector 1, type=LVM2 001
  Found text metadata area: offset=4096, size=1044480

vgdisplay:

localhost ~ # vgdisplay 
  Couldn't find device with uuid sccmIu-CRmu-jS2G-a009-J2Zl-N1YL-D7RMpv.
  --- Volume group ---
  VG Name               lvm
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                1
  VG Size               <931.52 GiB
  PE Size               4.00 MiB
  Total PE              238468
  Alloc PE / Size       238468 / <931.52 GiB
  Free  PE / Size       0 / 0   
  VG UUID               MfU6QF-MqPN-1rzE-RpwR-c3yd-SZnY-qY6LEz

Как починить?

 

ubik
()

Выбор юнита на тайловой карте

Здравствуйте, господа.

Подскажите пожалуйста, как выбрать определённого юнита, расположенного на тайловой карте? Есть «лобовой» вариант перебирать массив юнитов и сравнивать координаты каждого юнита с координатами тайла, на котором находится курсор, но меня этот вариант не сильно устраивает, т.к. если на карте будет 100к юнитов, то перебор будет занимать очень много времени.

Буду крайне благодарен за советы и идеи. Спасибо.

 , ,

ubik
()

Проблемы архитектуры...

Здравствуйте, товарищи погромисты :)

Немного поигравшись и вкусив все прелести изометрии решил её отложить в сторону и сделать «скелет» в 2D. Сейчас, реализовывая передвижение тайла по нажатию ПКМ, я «размазал» его по нескольким функциям: main.c: updateInput(), main.c: update() и main.c: moveCharacter(), что мне собственно не очень нравится, т.к. хотелось бы держать всё в одном месте. Натолкните, пожалуйста, на идею как можно сделать проще/красивее/иначе.

BTW, за критику и другие советы буду благодарен :)

main.c

репозиторий с кодом

 , , , ,

ubik
()

SDL2: не рендерятся текстуры

Всем привет. Решил поиграться с SDL2, взял пример с Lazy Foo и запустил его на Cишке. Программа стартует, но текстуры, кторые я загружаю не рендерятся. В чём может быть проблема?

Код

Выхлоп

 ,

ubik
()

Makefile: rule дёргающий другой rule

Все добра и счастья ☺

Есть такой Makefile для сборки ассемблерного говна в сэндбоксе:

.PHONY: cleanall cleanobj

DYNLINK = /usr/i686-pc-linux-gnu/lib/ld-linux.so.2
LINKPATH = /usr/i686-pc-linux-gnu/lib
LIBARCH = elf_i386

ASFLAGS := -m32 -gstabs+
LDFLAGS := -dynamic-linker $(DYNLINK) -L$(LINKPATH) -m $(LIBARCH) -lc

%: %.o
	$(LD) $(LDFLAGS) $< -o $@

# all: %.o

%.o: %.s
	$(AS) $(ASFLAGS) $< -o $@

claenall: cleanobj
	-rm program

cleanobj:
	-rm *.o

При вызове make test получаю такой выхлоп:

make test
cc -m32 -gstabs+ -dynamic-linker /usr/i686-pc-linux-gnu/lib/ld-linux.so.2 -L/usr/i686-pc-linux-gnu/lib -m elf_i386 -lc  test.s   -o test
cc: error: elf_i386: No such file or directory
cc: error: unrecognized command line option '-m'
make: *** [<builtin>: test] Error 1

ЧЯДНТ?

 

ubik
()

как правильно зашить ubi имидж?

Всем привет.

Есть таска сделать апгрейд на борде с NAND'ом в 256 метров. Идея следующая: я отрезал кусок от основного rootfs в 64Mb для rescue имиджа

root@varsomam33:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00020000 00020000 "NAND.SPL"
mtd1: 00020000 00020000 "NAND.SPL.backup1"
mtd2: 00020000 00020000 "NAND.SPL.backup2"
mtd3: 00020000 00020000 "NAND.SPL.backup3"
mtd4: 00040000 00020000 "NAND.u-boot-spl-os"
mtd5: 00100000 00020000 "NAND.u-boot"
mtd6: 00020000 00020000 "NAND.u-boot-env"
mtd7: 00020000 00020000 "NAND.u-boot-env.backup1"
mtd8: 00800000 00020000 "NAND.kernel"
mtd9: 04000000 00020000 "NAND.rescue-rootfs"
mtd10: 0b600000 00020000 "NAND.main-rootfs"
Дальше гружусь с NAND.main-rootfs и запускаю скрипт:
#!/bin/sh                                                                                                                                                                                                             
/etc/init.d/weston stop  
/etc/init.d/lighttpd stop
/etc/init.d/mysqld stop    
/etc/init.d/udev-cache stop
/etc/init.d/udev stop
/etc/init.d/syslog.busybox stop
/etc/init.d/syslog stop
                                    
ubiattach /dev/ubi_ctrl -m 9 -O 2048
mount -t ubifs ubi1:rootfs /media
mount -o noatime,move /proc /media/proc
                                 
pivot_root /media /media/old-root
pushd /
mount -o noatime,move /old-root/sys /sys
mount -o noatime,move /old-root/dev /dev
mount -o noatime,move /old-root/run /run                  
mount -o noatime,move /old-root/var/volatile /var/volatile
                                                                     
exec chroot / sh -c 'exec /sbin/init U </dev/ttyS0 > /dev/ttyS0 2>&1'
Проблема заключается в том, что дальше мне нужно сделать:
umount /old-root
ubidetach /dev/ubi_ctrl -m 10
flash_erase /dev/mtd10
ubiformat /dev/mtd10 -f <NEW_IMAGE.ubi> -s 2048 -O 2048
reboot
но lsof после chroot'a показывает следующее:
root@varsomam33:~# lsof 
1       /sbin/init.sysvinit     /dev/initctl
698     /old-root/bin/busybox.nosuid    /dev/null
698     /old-root/bin/busybox.nosuid    /dev/null
698     /old-root/bin/busybox.nosuid    /dev/null
698     /old-root/bin/busybox.nosuid    pipe:[2970]
698     /old-root/bin/busybox.nosuid    pipe:[2970]
716     /old-root/bin/busybox.nosuid    /dev/null
716     /old-root/bin/busybox.nosuid    /dev/null
716     /old-root/bin/busybox.nosuid    /dev/null
716     /old-root/bin/busybox.nosuid    socket:[3202]
1047    /old-root/bin/login.shadow      /dev/ttyS0
1047    /old-root/bin/login.shadow      /dev/ttyS0
1047    /old-root/bin/login.shadow      /dev/ttyS0
1047    /old-root/bin/login.shadow      socket:[3590]
1057    /old-root/bin/bash      /dev/ttyS0
1057    /old-root/bin/bash      /dev/ttyS0
1057    /old-root/bin/bash      /dev/ttyS0
1057    /old-root/bin/bash      /dev/ttyS0
т.е. пока я не убью все процессы из old-root, отмонтировать я его не смогу. А если убить эти процессы, то как дальше сделать прошивку имиджа?

 , , , ,

ubik
()

iptables magic

Всем привет. Есть правила в iptalbles на хосте c tun0 [10.8.0.6] и enp0s25 [10.0.121.5]

[root@fedorahost ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 214 packets, 20051 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 14 packets, 483 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     udp  --  tun0   enp0s25  0.0.0.0/0            0.0.0.0/0            udp dpt:7011
    7   245 ACCEPT     udp  --  enp0s25 tun0    0.0.0.0/0            0.0.0.0/0            udp dpt:7011
    0     0 ACCEPT     udp  --  enp0s25 tun0    0.0.0.0/0            0.0.0.0/0            udp dpt:7700
    1   188 ACCEPT     udp  --  tun0   enp0s25  0.0.0.0/0            0.0.0.0/0            udp dpt:7700

Chain OUTPUT (policy ACCEPT 172 packets, 82904 bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@fedorahost ~]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 4 packets, 804 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2    60 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:7011 to:10.0.121.8:7000
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3389 to:10.0.121.2:3389
    1   188 DNAT       udp  --  *      *       10.8.0.0/24          0.0.0.0/0            udp dpt:7700 to:10.0.121.8:7700

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    3   248 MASQUERADE  all  --  *      enp0s25  0.0.0.0/0            0.0.0.0/0
    0     0 MASQUERADE  all  --  *      tun0    0.0.0.0/0            0.0.0.0/0
C хоста 10.8.0.14:7700 я кидаю пакет на 10.8.0.6:7700 и вижу такую картину в tcpdump на хосте c iptables:

tun0 interface

10:08:58.497766 IP (tos 0x0, ttl 63, id 13586, offset 0, flags [DF], proto UDP (17), length 188)
    10.8.0.14.7700 > 10.8.0.6.7700: [udp sum ok] UDP, length 160
        0x0000:  4500 00bc 3512 4000 3f11 f1fb 0a08 000e  E...5.@.?.......
        0x0010:  0a08 0006 1e14 1e14 00a8 7d58 8064 9f15  ..........}X.d..
        0x0020:  0000 0000 ac7a 2405 4100 0000 0000 0000  .....z$.A.......
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0070:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00b0:  0000 0000 0000 0000 0000 0000            ............
enp0s25
10:02:22.601014 IP (tos 0x0, ttl 62, id 28979, offset 0, flags [DF], proto UDP (17), length 188)
    10.0.121.5.1024 > 10.0.121.8.7700: [udp sum ok] UDP, length 160
        0x0000:  4500 00bc 7133 4000 3e11 c4f0 0a00 7905  E...q3@.>.....y.
        0x0010:  0a00 7908 0400 1e14 00a8 63c8 8064 e0cf  ..y.......c..d..
        0x0020:  0000 0000 ac7a 2405 4100 0000 0000 0000  .....z$.A.......
        0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0070:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00b0:  0000 0000 0000 0000 0000 0000

Мне нужно, чтобы пакет с 10.0.121.5 выходил из порта 7700, а не из 1024 и проходил ту же самую цепочку обратно. ЧЯДНТ?

 ,

ubik
()

yocto symlink's

Всем привет.

Есть свой леер в yocto project и в нем есть image рецепт, который депендится от другого имиджа, с таким содержанием:

# Arago console image
# gives you an image with basic media libraries

require recipes-core/images/arago-image.inc

COMPATIBLE_MACHINE = "(?!arago)"

# The size of the uncompressed ramdisk is 32MB
ROOTFS_SIZE = "32768"

# DM646x have many modules, bump to 40MB
ROOTFS_SIZE_dm6467 = "40960"

# AM3517 have many modules, bump to 64MB
ROOTFS_SIZE_am3517-evm = "65536"

# Double beagle/hawk/overo ramdisk size, due to gazillions of kernel modules
ROOTFS_SIZE_beagleboard = "81920"
ROOTFS_SIZE_hawkboard = "81920"
ROOTFS_SIZE_overo = "81920"

IMAGE_INSTALL_append = "\
    packagegroup-arago-base \
    packagegroup-arago-console \
    packagegroup-arago-tisdk-graphics \
    packagegroup-arago-qte \
    lighttpd \
    mariadb \
    php \
    openssh-sftp-server \
    packagegroup-arago-qte-toolchain-target \
    stm32flash \
    "

export IMAGE_BASENAME = "test-image"

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

 , ,

ubik
()

draw network diagram

А чем вы рисуете диаграммы сетей? Смотрел на dia, но там как-то совсем <= 2000 год получается :-(

 ,

ubik
()

прокрастинация

Всем привет.

Какие способы борьбы с прокрастинацией вам известны? Какие для вас работают?

Спасибо ☺

 , ,

ubik
()

Самоучитель для игры на акустической гитаре.

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

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

Спасибо ☺

 , , , ,

ubik
()

Не запускается bitbake в контейнере

Всем привет и здравия ☺

Проблема в следующем: Насетапил контейнер для сборки имиджа Yocto в нём (несколько скриптов вытягивают нужные рецепты, лейеры и т.д.) Когда делаю

MACHINE=varsomam33 bitbake tisdk-rootfs-image
то получаю следующую ошибку:
bitbake tisdk-rootfs-image
ERROR: Timeout while attempting to communicate with bitbake server
ERROR: Could not connect to server False:
Если билдить на хосте или на виртуалке, то всё ок. В чём может быть проблема?

 ,

ubik
()

как вы вливаетесь в новый проект?

Всем привет.

Например, вас взяли на проект где уже написано 100500 строк кода, при чём проект пережил несколько этапов эволюции: писался разными людьми, которые уже не работают, с разным уровнем скиллов и т.д. Другими словами — «сборная солянка» ☺

Вы сразу берёте какую-то таску, пусть будет «на починить» или «реализовать» что-то и понеслась...

Как вы будете это делать?

У меня что-то хреновенько выходит ☹ Реализовывая/чиня что-то, я пытаюсь применять алгоритмы поисков вглубину и ширину. Но проблема заключается в том, что дойдя до самой глубокой ноды я уже не понимаю как и зачем я сюда добрался. Записи и рисовалки не помогают. С шириной всё ещё хуже — инфы набирается столько, что теряю нить её применения и приходится несколько раз начинать сначала.

Интересен любой опыт над любыми проектами... ну, и техники «вливания»

 , ,

ubik
()

Ораторское искусство

А посоветуйте, пожалуйста, хорошую литературу по сабжу. Спасибо.

 

ubik
()

json-c: JSON parsing

Здравствуйте.

Есть JSON выхлоп с yahoo weather такого вида:

{
   "query": {
     "count": 1,
     "created": "2016-06-27T13:12:50Z",
     "lang": "en-US",
     "results": {
       "channel": {
         "units": {
           ...
         },
         ...
         "location": {
           "city": "City",
           "country": "Country",
           "region": "Region"
         },
         "wind": {
           ...
         },
         ...
         "item": {
           ...
           "condition": {
             "code": "28",
             "date": "Mon, 27 Jun 2016 03:00 PM EEST",
             "temp": "30",
             "text": "Mostly Cloudy"
           },
...

Мне нужны значения query->results->channel->location->city query->results->channel->item->condition->{temp, text}. Как это сделать более красиво, используя json-c библиотеку, нежели в этом говнокоде:

static void get_json_items(struct json_object *jobj, const char *key)
{
    struct json_object *tmp;
    struct json_object *location;
    struct json_object *condition;
    struct json_object *temp;
    struct json_object *text;
    
    int exists;

    /* enum json_type type; */

    exists = json_object_object_get_ex(jobj, key, &tmp);
    if (!exists) {
        printf("%s is not found in JSON\n", key);
        return;
    }
    exists = json_object_object_get_ex(tmp, "results", &tmp);
    if (!exists) {
        printf("\"results\" is not found\n");
        return;
    }
    exists = json_object_object_get_ex(tmp, "channel", &tmp);
    if (!exists) {
        printf("\"channel\" is not found\n");
        return;
    }
    exists = json_object_object_get_ex(tmp, "location", &location);
    if (!exists) {
        printf("\"location\" is not found\n");
        return;
    }

    exists = json_object_object_get_ex(location, "city", &location);
    if (!exists) {
        printf("\"city\" is not found\n");
        return;
    }
    
    exists = json_object_object_get_ex(tmp, "item", &tmp);
    if (!exists) {
        printf("\"item\" is not found\n");
        return;
    }

    exists = json_object_object_get_ex(tmp, "condition", &condition);
    if (!exists) {
        printf("\"condition\" is not found\n");
        return;
    }

    exists = json_object_object_get_ex(condition, "temp", &temp);
    if (!exists) {
        printf("\"temp\" is not found\n");
        return;
    }

    exists = json_object_object_get_ex(condition, "text", &text);
    if (!exists) {
        printf("\"text\" is not found\n");
        return;
    }

    
    printf("DBG >>>\n");
    /* printf("---\nlocation: %s\n---\n", json_object_to_json_string(location)); */
    /* printf("---\nitem: %s\n---\n", json_object_to_json_string(tmp)); */

    printf("city: %s\n",
           json_object_get_string(location)
           );

    printf("temp: %s\n",
           json_object_get_string(temp)
           );

    printf("text: %s\n",
           json_object_get_string(text)
           );
    
    printf("DBG <<<\n");

    
}

Вот сам выхлоп бинарника:

gcc -Wall -Wextra -Wpedantic -std=c99 -I/usr/include/json-c/ -g3 -lcurl -ljson-c foo.c -o foo && ./foo
foo.c: In function 'main':
foo.c:218:25: warning: unused variable 'tmp' [-Wunused-variable]
     struct json_object *tmp;
                         ^~~
DBG >>>
city: City
temp: 23
text: Cloudy
DBG <<<

 ,

ubik
()

pointer on the stack

Всем привет. Есть такой кусок Сишного кода:

#include <stdio.h>

void reset(int *x)
{
    x=0;
}

int main()
{
    int x=1;
    reset(&x);
    printf("x is now 0.\n");
    return 0;
}

на первом фрейме получаю такое:

   0x0000000000400539 <+0>:	push   %rbp
   0x000000000040053a <+1>:	mov    %rsp,%rbp
   0x000000000040053d <+4>:	sub    $0x10,%rsp
=> 0x0000000000400541 <+8>:	movl   $0x1,-0x4(%rbp)
   0x0000000000400548 <+15>:	lea    -0x4(%rbp),%rax
   0x000000000040054c <+19>:	mov    %rax,%rdi
   0x000000000040054f <+22>:	callq  0x400526 <reset>

присваиваем x 1 (очевидно):

x/d $rbp-4
0x7fffffffdabc:	1
в %rdi находится адрес x
p/x $rdi
$3 = 0x7fffffffdabc
далее... на втором фрейме (вызванном reset):
   0x0000000000400526 <+0>:	push   %rbp
   0x0000000000400527 <+1>:	mov    %rsp,%rbp
   0x000000000040052a <+4>:	mov    %rdi,-0x8(%rbp)
=> 0x000000000040052e <+8>:	movq   $0x0,-0x8(%rbp)
   0x0000000000400536 <+16>:	nop
   0x0000000000400537 <+17>:	pop    %rbp
   0x0000000000400538 <+18>:	retq
у нас сформировался новый стек фрейм и все манипуляции проходят внутри этого фрейма, а потом он уничтожается и «выравнивается» %rbp.

Я не понимаю почему именно так? Я думал, что если x = 0 внутри reset(), то по сути он и должен указывать на 0x0 после выхода из reset().

 ,

ubik
()

qemu: проброс видеокарты intel hd 4000

Всем привет. Есть хост с такой конфигурацией:

lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 3rd Gen Core processor DRAM Controller [8086:0154] (rev 09)
00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04)
00:16.0 Communication controller [0780]: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 [8086:1e3a] (rev 04)
00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 [8086:1e2d] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)
00:1c.0 PCI bridge [0604]: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 [8086:1e10] (rev c4)
00:1c.1 PCI bridge [0604]: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 [8086:1e12] (rev c4)
00:1c.2 PCI bridge [0604]: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 [8086:1e14] (rev c4)
00:1d.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 [8086:1e26] (rev 04)
00:1f.0 ISA bridge [0601]: Intel Corporation QM77 Express Chipset LPC Controller [8086:1e55] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] [8086:1e03] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller [8086:1e22] (rev 04)
02:00.0 System peripheral [0880]: Ricoh Co Ltd MMC/SD Host Controller [1180:e822] (rev 07)
03:00.0 Network controller [0280]: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] [8086:0085] (rev 34)
Возмжоно ли пробросить/расшарить видеокарту в гостевую ОС без наличия второй? Я собрал кернел с IOMMU:
 [    0.000000] Kernel command line: BOOT_IMAGE=/kernel-virt root=PARTUUID=f50ff0ca-82e4-4b1b-99ac-60b9987f634f zswap.enable=1 disable_ipv6 resume=/dev/sda3 "acpi_osi=!Windows 2012" intel_iommu=on
[    0.000000] DMAR: IOMMU enabled
[    0.004716] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.311330] iommu: Adding device 0000:00:00.0 to group 0
[    0.311419] iommu: Adding device 0000:00:02.0 to group 1
[    0.311509] iommu: Adding device 0000:00:14.0 to group 2
[    0.311600] iommu: Adding device 0000:00:16.0 to group 3
[    0.311689] iommu: Adding device 0000:00:19.0 to group 4
[    0.311779] iommu: Adding device 0000:00:1a.0 to group 5
[    0.311868] iommu: Adding device 0000:00:1b.0 to group 6
[    0.311957] iommu: Adding device 0000:00:1c.0 to group 7
[    0.312044] iommu: Adding device 0000:00:1c.1 to group 8
[    0.312133] iommu: Adding device 0000:00:1c.2 to group 9
[    0.312235] iommu: Adding device 0000:00:1d.0 to group 10
[    0.312327] iommu: Adding device 0000:00:1f.0 to group 11
[    0.312415] iommu: Adding device 0000:00:1f.2 to group 11
[    0.312505] iommu: Adding device 0000:00:1f.3 to group 11
[    0.312594] iommu: Adding device 0000:02:00.0 to group 12
[    0.312684] iommu: Adding device 0000:03:00.0 to group 13
[    0.326767] [drm] VT-d active for gfx access
Какие следующие шаги нужно выполнить, если это возможно?

 , , ,

ubik
()

python+selenium: Получаю ElementNotVisibleException при expected_conditions

Всем привет.

Есть такой кусок кода:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementNotVisibleException
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import WebDriverException

import time

class Component:

    def __init__(self, driver):
        self.driver = driver

    def TypeText(self, selector, value):
        input_field = self.FindElement(selector)
        try:
            input_field.send_keys(value)
        except ElementNotVisibleException:
            # time.sleep(1)
            input_field.send_keys(value)

    def Click(self, selector):
        element = self.FindElement(selector)
        # try:
        #     element.click()
        # except ElementNotVisibleException:
        #     # time.sleep(1)
        #     element.click()
        # except WebDriverException:
        #     # time.sleep(1)
        #     element.click()
        element.click()

    def FindElement(self, selector):
        # element = WebDriverWait(self.driver, 5).until(
        #     lambda driver: driver.find_element(By.CSS_SELECTOR, selector))
        #     # EC.presence_of_element_located((By.CSS_SELECTOR, selector)))
        element = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, selector))
        )
        print(element)
        return element

Очень не хочется вставлять sleep'ы, потому что, на сколько мне известно, для этого существуют wait'ы в селениуме. Даже при

       element = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, selector))
я получаю эксепшн:
Traceback (most recent call last):
  File "./main.py", line 40, in <module>
    run()
  File "./main.py", line 36, in run
    p.setDateFilter(STARTDATE, ENDDATE)
  File "/home/int/dev/python/den/lib/core/page.py", line 40, in setDateFilter
    date.Click(self.locators['BankShifts.dateicon'])
  File "/home/int/dev/python/den/lib/core/core.py", line 33, in Click
    element.click()
  File "/home/int/dev/python/den/lib/selenium/webdriver/remote/webelement.py", line 74, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/int/dev/python/den/lib/selenium/webdriver/remote/webelement.py", line 457, in _execute
    return self._parent.execute(command, params)
  File "/home/int/dev/python/den/lib/selenium/webdriver/remote/webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
  File "/home/int/dev/python/den/lib/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Stacktrace:
    at fxdriver.preconditions.visible (file:///tmp/tmp5fwmfvli/extensions/fxdriver@googlecode.com/components/command-processor.js:10092)
    at DelayedCommand.prototype.checkPreconditions_ (file:///tmp/tmp5fwmfvli/extensions/fxdriver@googlecode.com/components/command-processor.js:12644)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmp5fwmfvli/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmp5fwmfvli/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmp5fwmfvli/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
Как решить эту проблему?

 ,

ubik
()

The Eudyptula Challenge

Всем привет.

В С у меня вообще нет опыта, но очень интересен кернел. Копаясь в интернетах, набрёл на The Eudyptula Challenge проект с таким описанием:

What is it?

The Eudyptula Challenge is a series of programming exercises
for the Linux kernel, that start from a very basic "Hello world"
kernel module, moving on up in complexity to getting patches
accepted into the main Linux kernel source tree.

What skills do I need to take this?

A basic understanding of the C programming language is required.
No previous Linux kernel coding experience is needed, but that
of course will help.
и очень заинтересовался ☺ Но меня немного смущает порог вхождения. Я никогда не писал ничего серьёзного в юзер-спейсе, кроме хеллоуворлдов из упражнений в K&R (сейчас по-тихоньку разруливаю вот это, хотя, в сишке более-менее ориентирусь (по крайней мере, мне так кажется ☺). Вопрос: стоит ли вообще рыпаться с этой едиптулой, или лучше набить скиллов, лет 10-15 практикуясь в обычных С проектах?

 , ,

ubik
()

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