LINUX.ORG.RU

Сообщения Divius

 

[Twisted Web] Unit-тестирование HTML-вывода

Собственно, как вы делаете сабж?

Имеем: Web-сервер на Twisted Web (язык Python, если что), шаблоны рендерятся при помощи Jinja2 (генерируется валидный HTML 4.01). В связи с постоянными регрессиями очень хочется в имеющуюся систему тестирования (на Twisted Trial) включить тесты для вывода web-сервера.

В голову приходит только парсить полученные странички в поисках нужны тэгов, но это значит завязывать тесты на дизайн, что очень-очень плохо.

Буду благодарен за любые идеи.

Divius
()

QTreeView падает на мой модели в drawRow()

Такая печальная история: пишу свою модель для построения дерева из БД. Вроде, написал, все unit-тесты проходит без вопросов, но на реальном примере, когда её впихиваешь в QTreeView, происходит странное падение: http://pastebin.com/gGqRpJPX. Район падения в GDB:

#0  _int_malloc (av=<value optimized out>, bytes=<value optimized out>) at malloc.c:4436
#1  0x01c5bf9c in *__GI___libc_malloc (bytes=138) at malloc.c:3660
#2  0x012bcb8d in qMalloc (size=138) at global/qmalloc.cpp:55
#3  0x0130fad4 in QString::fromLatin1_helper (str=0x16cb3c0 "TreeResourceModel::parent: No parent row for index %1,%2,%3", size=59)
    at tools/qstring.cpp:3603
#4  0x013158f4 in QString::fromAscii_helper (str=0x16cb3c0 "TreeResourceModel::parent: No parent row for index %1,%2,%3", size=88) at tools/qstring.cpp:3638
#5  0x0167ed65 in QString (this=0x82b9838, index=...) at /usr/include/qt4/QtCore/qstring.h:413
#6  IBD::TreeResourceModel::parent (this=0x82b9838, index=...) at ../pkibd-core/libibd-core/treeresourcemodel.cpp:525
#7  0x00b280cd in QModelIndex::parent (this=0x82b43d8, painter=0xbfffd28c, option=..., index=...)
    at ../../include/QtCore/../../src/corelib/kernel/qabstractitemmodel.h:389
#8  QTreeView::drawRow (this=0x82b43d8, painter=0xbfffd28c, option=..., index=...) at itemviews/qtreeview.cpp:1471
#9  0x00b334a9 in QTreeView::drawTree (this=0x82b43d8, painter=0xbfffd28c, region=...) at itemviews/qtreeview.cpp:1433
#10 0x00b365bd in QTreeView::paintEvent (this=0x82b43d8, event=0xbfffdae4) at itemviews/qtreeview.cpp:1266

Пробовал снести весь код из parent() - падает где-то ещё, но тоже в чём-то вызванном из drawRow(). Как я только не изгалялся в тестах с этим parent() - воспроизвести падение не могу, только на живой вьюшке. Гугл тоже ничем не помог.

Буду благодарен за любую идею, как изгнать баг!

Divius
()

Аналог Skylink на Украине

Собираюсь поездить по Украине, но очень нужен интернет. Сейчас имеется скайлинковский модем-роутер. Есть ли какой-нибудь местный провайдер, чью симку можно было бы запихнуть в этот модем? Если можно, укажите расценки/ссылку на таковые.

Заранее спасибо.

Divius
()

[Need help] Skylink забанен в гугле?

Всем привет!

Поставил себе роутер от хвалёного скайлинка и сразу же столкнулся с проблемой: http://www.google.com не открывается. При этом, можно открыть, например, gmail, но только пока он не полезет на гугловский сервер авторизации (который располагается на домене http://www.google.com). Поиск также не открывается.

Traceroute и ping:

$ traceroute www.google.com
traceroute to www.google.com (74.125.232.20), 30 hops max, 60 byte packets
 1  192.168.10.1 (192.168.10.1)  0.512 ms  0.949 ms  1.389 ms
 2  pdsn-m34-6cm6.msk.skylink.ru (212.119.106.156)  77.646 ms  101.198 ms  101.597 ms
 3  c6500-m34-1-vl101.msk.skylink.ru (212.119.106.2)  101.994 ms  101.991 ms  140.099 ms
 4  core-m9-2-ge1-3-0-0.cell.ru (212.119.97.9)  140.494 ms  147.858 ms  194.713 ms
 5  core-m9-1-ge1-3-0-0.cell.ru (212.119.97.20)  163.534 ms  163.933 ms  164.324 ms
 6  msk-ix-gw1.google.com (193.232.244.232)  164.318 ms  97.881 ms  96.733 ms
 7  74.125.232.20 (74.125.232.20)  135.252 ms  190.431 ms  182.093 ms

$ traceroute mail.google.com
traceroute to mail.google.com (74.125.87.19), 30 hops max, 60 byte packets
 1  192.168.10.1 (192.168.10.1)  0.622 ms  1.027 ms  1.479 ms
 2  pdsn-m34-6cm6.msk.skylink.ru (212.119.106.156)  77.676 ms  85.450 ms  85.845 ms
 3  c6500-m34-1-vl101.msk.skylink.ru (212.119.106.2)  124.542 ms  124.924 ms  132.207 ms
 4  core-m9-2-ge1-3-0-0.cell.ru (212.119.97.9)  148.115 ms  148.510 ms  148.904 ms
 5  core-m9-1-ge1-3-0-0.cell.ru (212.119.97.20)  148.897 ms  149.283 ms  149.679 ms
 6  msk-ix-gw1.google.com (193.232.244.232)  171.240 ms  75.225 ms  120.507 ms
 7  72.14.239.254 (72.14.239.254)  136.236 ms  136.613 ms  190.777 ms
 8  209.85.248.43 (209.85.248.43)  191.237 ms 209.85.248.47 (209.85.248.47)  198.624 ms  206.436 ms
 9  72.14.238.101 (72.14.238.101)  206.822 ms 72.14.232.217 (72.14.232.217)  207.206 ms 72.14.232.221 (72.14.232.221)  207.591 ms
10  hb-in-f19.1e100.net (74.125.87.19)  245.874 ms  246.270 ms  246.237 ms

$ ping www.google.com
PING www.l.google.com (74.125.232.17) 56(84) bytes of data.
64 bytes from 74.125.232.17: icmp_seq=1 ttl=58 time=93.3 ms
64 bytes from 74.125.232.17: icmp_seq=2 ttl=58 time=98.9 ms
64 bytes from 74.125.232.17: icmp_seq=3 ttl=58 time=97.6 ms
64 bytes from 74.125.232.17: icmp_seq=4 ttl=58 time=100 ms
64 bytes from 74.125.232.17: icmp_seq=5 ttl=58 time=111 ms
^C64 bytes from 74.125.232.17: icmp_seq=6 ttl=58 time=103 ms

--- www.l.google.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 25678ms
rtt min/avg/max/mdev = 93.398/100.947/111.465/5.634 ms

Прочие сайты работают нормально. Есть какие-нибудь идеи?

Заранее спасибо.

Divius
()

[Qt] QNetworkManagerAccess: как залить файл на FTP?

Всем ещё раз привет!

В документации к классу QFtp рекламируют новые высокоуровневые классы, как замену старым низкоуровневым, да и самому возня с QFtp надоела. Тесту ради написал следующий код (импорты и main пропущены):

class Test(QWidget):

	def __init__(self):
		QWidget.__init__(self)
		self.manager = QNetworkAccessManager();
		self.manager.finished.connect(self.finished)
		self.manager.authenticationRequired.connect(self.auth)
		self.l = QVBoxLayout()
		self.btn = QPushButton()
		self.btn.clicked.connect(self.put)
		self.l.addWidget(self.btn)
		self.setLayout(self.l)

	def finished(self, reply):
		print "Finished", reply.error(), reply.error() == QNetworkReply.NoError
		QApplication.quit()

	def auth(self, reply, auth):
		print "authenticationRequired", auth.realm()
		auth.setUser("ibdftp")
		auth.setPassword("111111")

	def put(self):
		print "Putting"
		self.f = QFile("/home/divius/test.tbz2")
		self.f.open(QIODevice.ReadOnly)
		self.request = QNetworkRequest(QUrl("ftp://127.0.0.1/Test/test.tbz2"))
		self.manager.put(self.request, self.f)
		print "Requested"

Не работает - auth вызывается 2 раза, после чего в finished() ошибка QNetworkReply.ContentAccessDenied. ЧЯДНТ?

 

Divius
()

[C++] Проблемы с «ромбическим» наследованием

Всем привет!

Имеется такой набор классов. Первые 2 НЕ мои, я их менять не могу:

class A
{
  public: virtual void f() = 0;
};

class B : public A // обратите внимание на отсутствие слова virtual!
{
  public: void f() {...}
};

И есть мой класс:

class C : public A // если это важно, класс C - чисто абстрактный
{
  ... // метод f() я не трогаю!
};

Теперь товарищ, пользующийся моим классом хочет сделать следующее:

class D : public B, public C
{
  ...
};

Сможет ли он сделать такую штуку, если нет, то могу ли я чем-нибудь ему помочь?

Заранее спасибо.

 

Divius
()

[awesome] как изменить размер окна в режиме tile

Изучаю awesome. Хочу сделать так, чтобы Geany, находясь в тэге с layout tile.right, занимал не 50% экрана, а, скажем, 75%. Имею такую конфигурацию:

{ rule = { instance = "geany" },
      properties = { tag = tags[1][3], floating = false },
      callback = function(c) awful.client.incwfact(0.25, c) end },
Не работает - ничего не меняется.

Так тоже не работает:

{ rule = { instance = "geany" },
      properties = { tag = tags[1][3], floating = false },
      callback = function(c) awful.client.setwfact(0.75, c) end },

ЧЯДНТ?

 

Divius
()

[Ubuntu Lucid] [Howto] Вернуть кнопки заголовка окна обратно

Авторы Ubuntu опять курнули лишнего переработали дизайн, и теперь в новой Убунте кнопки на заголовке ока по умолчанию располагаются слева, вот так. Ещё до меня был открыт баг. Если кому-то это нововведение тоже жизни не даёт, можете выполнить простую команду:

gconftool-2 --set /apps/metacity/general/button_layout --type string "menu:minimize,maximize,close"
или, если вы не используете кнопку «Меню», то
gconftool-2 --set /apps/metacity/general/button_layout --type string ":minimize,maximize,close"

Такие дела.

 

Divius
()

[webmoney light] [chromium] <- как подружить?

Экспериментирую с Chromium, встал вопрос о логине на WebMoney. Внимание, вопрос: есть ли в творении гугла нормальные средства для работы с сертификатами X.509?

 

Divius
()

[gmail] Что за режим новый появился: «Живая лента»?

Subj. Включается внизу («Включить обновление»), у кого нет.

 

Divius
()

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