LINUX.ORG.RU

Сообщения tyro33

 

Это UB?

Форум — Development

Встретил в сишном коде такую наркоманию:

uint8_t buf[256];
uint32_t size_pic = *((uint32_t*)&buf[cnt]);
в C++ так нельзя, а как дела с этим в C?

 ,

tyro33
()

Поясните про сдвиг в C

Форум — Development

Корректен ли такой код, если нужно склеить 2 байта:

unsigned char a = 0xAA;
unsigned char b = 0xFF;
unsigned short c = (a<<8)|b;
Получаю 0xAAFF. Так и должно быть или это UB? Почему результат (a<<8) не 0?
Стандарт:

3 The integer promotions are performed on each of the operands. The type of the result is that of the promoted left operand. If the value of the right operand is negative ori s greater than or equal to the width of the promoted left operand, the behavior is undefined.

Как я понял, перед сдвигом имеет место приведение типа обоих операндов. Соответственно, результат (a<<8) уже не однобайтовый и дает 0xAA00. Если так, к какому типу приводится? От чего это зависит?

 ,

tyro33
()

Не стартует hostapd

Форум — Admin

Доброго времени суток.
Пытаюсь на убунту расшарить интернет с wi-fi свистка. Делаю по ману с арча. Но hostapd упрямо не стартует:

al@vb:~$ sudo /etc/init.d/hostapd start
 * Starting advanced IEEE 802.11 management hostapd                      [fail] 

Конфигурация:

/etc/hostapd/hostapd.conf

ssid=Ubuntu
wpa_passphrase=123456789
interface=wlan0
bridge=br0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

/etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

# Additional daemon options to be appended to hostapd command:-
# 	-d   show more debug messages (-dd for even more)
# 	-K   include key data in debug messages
# 	-t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""

/etc/network/interfaces

#loopbak
auto lo
iface lo inet loopback

al@vb:~$ uname -mrs
Linux 3.13.0-32-generic i686

al@vb:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:41:b8:0b  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe41:b80b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19745 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11823 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13103586 (13.1 MB)  TX bytes:1236265 (1.2 MB)

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1128 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:221051 (221.0 KB)  TX bytes:221051 (221.0 KB)

wlan0     Link encap:Ethernet  HWaddr 00:f1:40:85:19:07  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Подскажите куда дальше двигаться, в чем собака зарыта?

 , , ,

tyro33
()

Live CD Linux

Форум — Linux-install

Всем привет. Хотелось бы сделать загрузочный образ для своего линукса. Чтобы потом накатывать iso на съемный носитель и работать с приспособленным под себя дистрибутивом на других машинах без необходимости установки.
С чего начать? Какова последовательность действий? В гугле мануалов для моего дистрибутива нет и все они несколько отличаются по сути. Либо предлагают воспользоваться соответствующим софтом, но это не то что нужно. Хотелось бы уяснить общие принципы, как это делается

 ,

tyro33
()

Центрирование виджета в QGridLayout

Форум — Development

Всем добрый вечер.
Подскажите как быть: имеется QGridLayout на основной форме, внутри ячеек компоновщика нужно разместить по одному квадратному(!) виджету так, чтобы:

  • при масштабировании основной формы менялись размеры виджетов в ячейках (при сохранении квадратных пропорций)
  • виджеты были центрированы относительно ячеек


Пока не получается выполнить два условия одновременно. Такое ощущение, что я вообще что-то не так делаю.
Размещение виджетов в компоновщике выглядит следующим образом:


QWidget *workspace = new QWidget(this);
setCentralWidget(workspace);

QGridLayout *grid = new QGridLayout(workspace);
grid->setRowStretch(0,1);
grid->setColumnStretch(0,1);
grid->setRowStretch(1,6500);
grid->setColumnStretch(1,1);
grid->setRowStretch(2,6500);

Figure *f1 = new Figure;
Figure *f2 = new Figure;
grid->addWidget(f1, 0,0);
grid->addWidget(f2, 0,1);


Виджеты делаю квадратными через переопределение heightForWidth(). Для наглядности пропорций вдоль границ виджета рисую рамку:


Figure::Figure(QWidget *parent) : QWidget(parent)
{
    setWindowFlags(Qt::FramelessWindowHint);
    QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
    policy.setHeightForWidth(1);
    setSizePolicy(policy);
    setBaseSize(180,180);
    setMinimumSize(180,180);
    resize(180, 180);
}

void Figure::paintEvent(QPaintEvent *)
{
  QPainter paint(this);
  QRect r = geometry();
  int w=r.width();
  int h=r.height();
  paint.drawRect(3, 3, w-5, h-5);

  updateGeometry();
}

int Figure::heightForWidth(int w) const
{
  QRect r = geometry();
    if(w > r.height()) r.setHeight(w);
  return w;
}


Как это выглядит: при пропорциональном изменении основной формы по высоте/ширине все ок - вижу квадраты. При растягивании в высоту тоже. А вот при растягивании формы в ширину квадраты становятся прямоугольниками. Короче говоря, виджеты полностью заполняют все пространство ячеек, не центрируются, квадратные пропорции при растягивании в ширину нарушаются.


Пробовал так:

grid->addWidget(f1, 0,0, Qt::AlignCenter);
grid->addWidget(f2, 0,1, Qt::AlignCenter);


Виджеты центрируются, но пропорций не меняют.

 ,

tyro33
()

Не находит gcc

Форум — Linux-install

Всем привет. Помогите разобраться.
На виртуалке крутится новая lubuntu. В процессе установки vmware tools (скрипт vmware-install.pl) столкнулся с такой проблемой:

Searching for GCC...
Detected GCC binary at "/usr/bin/gcc".
The path "/usr/bin/gcc" appears to be a valid path to the gcc binary.
Would you like to change it? [no] 

Searching for a valid kernel header path...
The path "" is not valid.
Would you like to change it? [yes] 


В интернетах написано, что лечится доустановкой/обновлением пакетов из числа gcc/linux-headers/build-essential/libglub2.
Но все это добро самых последних версий у меня и так установлено. В чем может быть загвоздка?

 , ,

tyro33
()

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