Blog

BitTorrent Tracker

February 7, 2008 23:01 | Author: Oleg | написано в рубрике: Олег | 575 views

Сегодня проводил подготовку к запуску на нашем серваке Битторрент трекер. За базу взял стандартный bittorrent, написанный на python.Все отлично заработало из коробки. Но когда я включил опцию –allowed_dir в логах увидел ошибку:

Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/BitTorrent/RawServer.py", line 467, in _make_wrapped_call
function(*args)
File "/usr/lib/python2.5/site-packages/BitTorrent/track.py", line 796, in save_dfile
h.write(bencode(self.state))
File "/usr/lib/python2.5/site-packages/BitTorrent/bencode.py", line 135, in bencode
encode_func[type(x)](x, r)
File "/usr/lib/python2.5/site-packages/BitTorrent/bencode.py", line 115, in encode_dict
encode_func[type(v)](v, r)
File "/usr/lib/python2.5/site-packages/BitTorrent/bencode.py", line 115, in encode_dict
encode_func[type(v)](v, r)
File "/usr/lib/python2.5/site-packages/BitTorrent/bencode.py", line 106, in encode_list
encode_func[type(i)](i, r)
File "/usr/lib/python2.5/site-packages/BitTorrent/bencode.py", line 106, in encode_list
encode_func[type(i)](i, r)
KeyError: <type 'float'>

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

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

--- bencode.py.org      2008-02-07 22:00:01.000000000 +0200
+++ bencode.py  2008-02-07 22:02:15.000000000 +0200
@@ -14,6 +14,8 @@

from BitTorrent import BTFailure

+import string
+
def decode_int(x, f):
f += 1
newf = x.index('e', f)
@@ -25,6 +27,23 @@
raise ValueError
return (n, newf+1)

+def assert_finite(n):
+  """Raises ValueError if n is NaN or infinite."""
+
+  valid_chars = '0123456789.-+eE'
+  if repr(n).translate(string.maketrans('',''), valid_chars) != '':
+    raise ValueError('encountered NaN or infinite')
+
+def decode_float(x, f):
+    f += 1
+    newf = x.index('e', f)
+    try:
+        n = float(x[f:newf].replace('E', 'e'))
+        assert_finite(n)
+    except (OverflowError, ValueError):
+        raise ValueError('encountered NaN or infinite')
+    return (n, newf+1)
+
def decode_string(x, f):
colon = x.index(':', f)
n = int(x[f:colon])
@@ -55,6 +74,7 @@
decode_func['l'] = decode_list
decode_func['d'] = decode_dict
decode_func['i'] = decode_int
+decode_func['f'] = decode_float
decode_func['0'] = decode_string
decode_func['1'] = decode_string
decode_func['2'] = decode_string
@@ -75,7 +95,7 @@
raise BTFailure, _("invalid bencoded value (data after valid prefix)")
return r

-from types import StringType, IntType, LongType, DictType, ListType, TupleType
+from types import StringType, IntType, LongType, DictType, ListType, TupleType, FloatType

class Bencached(object):
@@ -91,6 +111,10 @@
def encode_int(x, r):
r.extend(('i', str(x), 'e'))

+def encode_float(x, r):
+    assert_finite(x)
+    r.extend(('f', repr(x).replace('e', 'E'), 'e'))
+
def encode_bool(x, r):
if x:
encode_int(1, r)
@@ -119,6 +143,7 @@
encode_func[Bencached] = encode_bencached
encode_func[IntType] = encode_int
encode_func[LongType] = encode_int
+encode_func[FloatType] = encode_float
encode_func[StringType] = encode_string
encode_func[ListType] = encode_list
encode_func[TupleType] = encode_list

Данный патч касается версии bittorrent 4.4.0-5, которая не менялась со времён Fedora 7.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Метки: ,

Комментариев (4) »


Вышел Compiz 0.7.0

February 7, 2008 22:01 | Author: Oleg | написано в рубрике: Новости | 336 views

После 5 месяцев разработки анонсирован новый релиз композитного менеджера Compiz 0.7.0. Новшества:

  • Поддержка вывода на несколько мониторов;
  • Изменение в организации работы плагинов. Выделен core plugin, предоставляющий расширенный доступ к API базового модуля. Новый объектный механизм, позволяющий добавлять новые объекты, без изменения интерфейса плагинов или нарушения целостности API;
  • Приведение кода в соответствие с требованиями ICCCM (Inter-Client Communication Conventions Manual, стандарт определяющий правила взаимодействия X-сервера и X-клиента);
  • Улучшение контроля прорисовки видимой области в cube plugin;
  • Возможность настройки реакции на нажатие средней или правой кнопки мыши в gtk-window-decorator, задействования колеса прокрутки;
  • Добавлен KDE4 порт kde-window-decorator. Исправлено несколько ошибок приводящих к краху kde-window-decorator;
  • Многочисленные исправления ошибок.
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Метки:

Комментариев (0) »


Доступны спецификации и открытый драйвер для звуковых карт Creative X-Fi

February 7, 2008 21:26 | Author: Oleg | написано в рубрике: Новости | 313 views

Компания Creative Labs передала разработчикам 4Front Technologies спецификации на звуковые карты серии X-Fi, для которых до сих пор не были доступны Linux драйверы (не считая бета версии бинарного драйвера для x86_64 архитектуры). 4Front Technologies, в рамках новой сборки Open Sound System 4.0 Build 1013, оперативно выпустили тестовую версию драйвера sbxf. Драйвер был выпущен под лицензиями GPLv2, BSD и CDDL.

Кроме того, разработчики проекта ALSA ожидают на следующей неделе получить от Creative Labs документацию и начать портирование X-Fi драйвера в дерево исходных текстов ALSA. К сожалению релиз ALSA 1.0.16 был выпущен несколько дней назад и новый драйвер окажется включен только в состав ALSA 1.0.17, релиз которого выйдет через 3-4 месяца.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Метки: ,

Комментариев (0) »


ATI Catalyst™ 8.452

February 7, 2008 10:29 | Author: Oleg | написано в рубрике: Олег | 368 views

Наконец дошли руки поставить новый fglrx. Правда, руки доходили и раньше, но! в livna ещё не было релиза, а то что в тесте лежало - не работало. Да, действительно решили проблему с максимальным разрешением и работой с мониторами типа Wide (широкоформатный). Все прошло гладко. Но понадобилась перезагрузка, т.к. ядро стояло более свежее, чем нужно для kmod-fglrx, маленькие манипуляции с rpm и yum - и поставил другое ядрышко. естественно, перезагрузка. Все закрутилось. Единственное остался глюк связанный с первым запуском glxinfo или amdcccle. Всегда кидает в штопор, но последующие запуски не затыкаются.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Метки: , ,

Комментариев (0) »