LINUX.ORG.RU

Сообщения cheerfulboy

 

Посоветуйте BT-донгл для воспроизведения звука на беспроводные колонки

Почитав интернет, я понял, что большинство оборудования работает как-то через жопу, поэтому прошу совета у тебя, ЛОРовец. Какой у тебя донгл и в какой ОС оно у тебя работает? Устройство нужно только для передачи звука на беспроводную колонку в Archlinux.

UPD: очень прошу, указывайте коммерческое наименование изделия, а лучше еще магазин, где купить

 , ,

cheerfulboy
()

Монитор после спячки включается только с помощью alt + ctrl + fN

С некоторых пор после длительного отсутствия за компьютером я могу заставить очнуться монитор только после нажатия комбинации alt + ctrl + fN, хотя раньше вполне хватало движения мышью или нажатия любой кнопки на клавиатуре.

И совершенно не могу сообразить, в какую сторону копать.

 , , , ,

cheerfulboy
()

LV занимает место, превышающее объем диска

Решил я тут увеличить размер lv по-максимуму:

$ sudo lvresize -l100%FREE -r vg0/home                                                                                                  
  Size of logical volume vg0/home changed from 120,00 GiB (30720 extents) to 350,32 GiB (89681 extents).
  Logical volume home successfully resized.

Как видите, он расширился до 350G, хотя размер диска, на котором находится этот lv составляет:

$ sudo pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg0
  PV Size               223,57 GiB / not usable 3,59 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              57233
  Free PE               0
  Allocated PE          57233
  PV UUID               5eLnUx-qlbM-GVE3-cIei-KeDV-GChI-AFgi5r

Мой vg0 состоит из некольких pv:

$ sudo pvs
  PV         VG  Fmt  Attr PSize   PFree  
  /dev/sda1  vg0 lvm2 a--  731,17g 120,00g
  /dev/sdb1  vg0 lvm2 a--  223,57g      0

 

cheerfulboy
()

Неточное расписание выполнения бэкапов

Добрый день! Для бэкапов приспособил рабочую тачку (кризис же). Дело в том, что она работает не постоянно. Чаще всего она просто засуспенжена и включается в неопределенное время суток на пару-тройку часов. Для запуска бэкапов использую вот такое:

$ sudo fcrontab -l
2016-05-06 02:57:16  INFO listing root's fcrontab
MAILTO=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

@daily          systemctl start rsnapshot@daily.service
@weekly         systemctl start rsnapshot@weekly.service
@monthly        systemctl start rsnapshot@monthly.service

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

 ,

cheerfulboy
()

ntpdate: no server suitable for synchronization found

Помогите заставить время синхронизироваться.

$ sudo ntpdate -v ru.pool.ntp.org
 7 Jul 11:06:12 ntpdate[21207]: ntpdate 4.2.8p3@1.3265-o Tue Jul  7 02:59:05 UTC 2015 (1)
 7 Jul 11:06:21 ntpdate[21207]: no server suitable for synchronization found

Больше подробностей (https://gist.github.com/a1beb303def85bfeafb3):

$ sudo ntpdate -dv ru.pool.ntp.org | wgetpaste
 7 Jul 11:14:54 ntpdate[22264]: no server suitable for synchronization found
Your paste can be seen here: https://gist.github.com/a1beb303def85bfeafb3

Немножко про файрволл:

$ sudo shorewall show zones
Shorewall 4.6.6.2 Zones at router - Вт июл  7 11:20:39 KRAT 2015

fw (firewall)
inet (ipv4)
   wan0:0.0.0.0/0
local (ipv4)
   br0:0.0.0.0/0

$ sudo shorewall show policies
Shorewall 4.6.6.2 Policies at router - Вт июл  7 11:22:06 KRAT 2015

fw      =>      inet    ACCEPT using chain fw-inet
fw      =>      local   ACCEPT using chain fw-local
inet    =>      fw      DROP using chain inet-fw
inet    =>      local   DROP using chain inet-local
local   =>      fw      ACCEPT using chain local-fw
local   =>      inet    ACCEPT using chain local-inet
$ sudo iptables-save | grep ' 123'
-A fw-inet -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A fw-inet -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A fw-local -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A fw-local -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A inet-fw -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A inet-fw -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A inet-local -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A inet-local -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A local-fw -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A local-fw -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A local-inet -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT
-A local-inet -p udp -m udp --dport 123 -m comment --comment NTPbi -j ACCEPT

 ,

cheerfulboy
()

Распознавание текста в изображении

Пишу грабер на Scrapy. Понадобилось распознавать телефоны в изображении. Большинство телефонов отлично распознаются с помощью Tesseract с помощью такого кода:

def parse_phone(self, response):
    # todo: добавить контракт
    phone = Image.open(StringIO(response.body))
    phone.load()
    image = Image.new("RGB", phone.size, (255, 255, 255))
    image.paste(phone, mask=phone.split()[3])  # 3 is the alpha channel
    image = image.resize((image.size[0] * 4, image.size[1] * 4), Image.BICUBIC)
    l = response.meta['loader']
    l.add_value('author_phone', tesseract.image_to_string(image, builder=tesseract.DigitBuilder()))
    return l.load_item()

Но есть такие, которые на которых Tesseract сильно гонит по причине слипшихся символов. Особенно часто этим страдает “4” и “-” (http://i.imgur.com/7DgTS0W.png). Мне же необходимо добиться 100% распознования номеров. Как посоветуете решать задачу, ребята?

 , ,

cheerfulboy
()

Горизонтальная прокрутка на странице темы

Заметил сегодня, что появилась горизонтальная прокрутка на странице тем. Используется chromium-35.0.1916.114-1, разрешение 1280x1080.

 , ,

cheerfulboy
()

Не могу дизассемблировать DSDT-таблицу

Сначала делаю как обычно:

$ sudo acpidump | tee acpidump.out
$ acpixtract acpidump.out 

Intel ACPI Component Architecture
ACPI Binary Table Extraction Utility version 20130823-64 [Aug 28 2013]
Copyright (c) 2000 - 2013 Intel Corporation

Acpi table [DSDT] - 81933 bytes written to dsdt.dat
Acpi table [SSDT] - 2545 bytes written to ssdt1.dat
Acpi table [SSDT] - 1067 bytes written to ssdt2.dat
Acpi table [SSDT] - 1509 bytes written to ssdt3.dat
Acpi table [SSDT] - 771 bytes written to ssdt4.dat
Acpi table [SSDT] - 281 bytes written to ssdt5.dat

$ iasl -d dsdt.dat

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20130823-64 [Aug 28 2013]
Copyright (c) 2000 - 2013 Intel Corporation

Loading Acpi table from file dsdt.dat
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed

Found 2 external control methods, reparsing with new information
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed
Disassembly completed
ASL Output:    dsdt.dsl - 644481 bytes

iASL Warning: There were 2 external control methods found during
disassembly, but additional ACPI tables to resolve these externals
were not specified. The resulting disassembler output file may not
compile because the disassembler did not know how many arguments
to assign to these methods. To specify the tables needed to resolve
external control method references, use the one of the following
example iASL invocations:
    iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>
    iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>

Послушаем совета умного дизассмеблера:

$ iasl -e 'ssdt1.dat,ssdt2.dat,ssdt3.dat,ssdt4.dat,ssdt5.dat' -d dsdt.dat

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20130823-64 [Aug 28 2013]
Copyright (c) 2000 - 2013 Intel Corporation

Loading Acpi table from file dsdt.dat
Acpi table [DSDT] successfully installed and loaded
Loading Acpi table from file ssdt5.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Loading Acpi table from file ssdt4.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Loading Acpi table from file ssdt3.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Loading Acpi table from file ssdt2.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Loading Acpi table from file ssdt1.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed

Found 2 external control methods, reparsing with new information
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

Parsing completed
Disassembly completed
ASL Output:    dsdt.dsl - 644336 bytes

iASL Warning: There were 2 external control methods found during
disassembly, but only 0 was resolved (2 unresolved). Additional
ACPI tables are required to properly disassemble the code. The
resulting disassembler output file may not compile because the
disassembler did not know how many arguments to assign to the
unresolved methods.

И как результат — невозможность скомпилировать dsl:

$ iasl -tc dsdt.dsl

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20130823-64 [Aug 28 2013]
Copyright (c) 2000 - 2013 Intel Corporation

Compiler aborting due to parser-detected syntax error(s)
dsdt.dsl   8445:                 If (CondRefOf (FPED))
Error    6126 -                  ^ syntax error, unexpected PARSEOP_IF

dsdt.dsl  11713: 
Error    6126 - syntax error, unexpected PARSEOP_SCOPE, expecting $end and premature End-Of-File

ASL Input:     dsdt.dsl - 11713 lines, 347859 bytes, 4064 keywords
Hex Dump:      dsdt.hex - 216 bytes

Compilation complete. 2 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

Коллеги, что делать-то?

 , ,

cheerfulboy
()

[alsa][mixxx][mic] Заставить играть в микрофон

Купил себе недавно ноутбук. Asus u33jc, если быть точным. И так, у нас есть:

  • Два выхода (микрофон и фронт)
  • Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)

Mixxx — это софт для сведения треков, для которого требуются два источника звука, первый — это общий, а второй — наушники dj. Я хочу воткнуть колонки во front, а наушники в mic, и абсолютно не понимаю, как заставить alsa играть в mic.

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

 ,

cheerfulboy
()

Выключение звука при блокировке экрана KDE

У кого-нибудь есть мысли, как это реализовать? Что-нибудь поэлегантней :) Ну и включение звука после разблокировки. А то на работе забываю делать mute, и коллеги слушают жесть, пока я на обеде.

cheerfulboy
()

Синхронизация данных (да, опять и снова)

Привет, ЛОР! Буквально неделю назад я устроился на работу в офис. А так как я до этого целый год просидел дома, занимаясь ничем иным, как фрилансом, привычка осталась, и я продолжаю работать дома по вечерам и выходным.

Все было бы замечательно, если бы я не занимался переписыванием конфига vim'a сначала на работе, а потом дома. А еще у меня есть бинарные базы keepassx, в которых я храню свои драгоценные пароли. Я их тоже люблю менять и дома и на работе. А еще у меня есть домашний сервер (как у почти любого посетителя ЛОРа), который будет выступать хранилищем.

И поэтому хотелось бы организовать примерно вот такую схему:

дом <-> хранилище <-> работа

Список требований:

  • (!!!) хоть какая-то возможность версионировать изменения (если я случайно удалю базу, и она потом умрет в хранилище, это будет epic fail)
  • мгновенная отправка изменений на сервер (очень хотелось бы)
  • возможность работать по ssh, smb
  • это не должно быть системой контроля версий. cvs, svn, git, hg, bzr, darcs не предлагать
  • возможность разруливать конфликты у текстовых файлов (примерно как в unison при помощи kdiff3)

С чем я сталкивался:

  • duplicity — да, вроде как есть версионность. Вроде как бинарные диффы даже.
  • csync — тут даже говорить не очем. Ничего интересного не умеет.
  • rsync — могу только представить связку inotify/incron+rsync+bash для удовлетворения 1 и 2 пункта
  • unison — проект забросили два года назад. Сомневаюсь, что стоит туда смотреть.

Еще много интересного на http://www.opennet.ru/prog/sml/87.shtml, но не думаю, что успею осилить за выходные весь софт, что там есть.

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

cheerfulboy
()

[mercurial][branches] Объясните, люди добрые

Ну, вот, допустим, у меня есть репозиторий (псевдовывод):

$ hg branches
0.x                          x:502665f0749f
1.x                          x:502665f0749f
client0-productname32        x:502665f0749f
client2-productname41        x:502665f0749f
client6-productname66        x:502665f0749f
client9-productname99        x:502665f0749f

Допустим, в бранчах 0.x и 1.x есть не очень похожее ПО (буду называть его библиотекой), которое было чем-то одним сначала, но потом начало развиваться совершенно разными путями, сохраняя лишь некоторый общий код, который так же время от времени требуется синхронизировать.

Все остальные бранчи только и делают, что берут свежие срезы библиотеки из 0.x или 1.x, потом библиотека может дописываться в бранче типа clientx-productnamex, и ее требуется мержить с веткой 0.x или 1.x. Каждый бранч clientx-productnamex содержит код библиотеки и немного своих файлов, использующих api библиотеки.

И как это сделать? Или я не должен этого хотеть? Просто когда я удаляю файл в одном бранче, он удаляется в другом. Такое поведение мне непонятно. http://mercurial.selenic.com/wiki/NamedBranches читал, признаюсь, не осилил.

 

cheerfulboy
()

[mercurial][ssh] Расскажите про bitbucket.org

Все знают такой замечательный сервис для хранения mercurial-репозиториев. Но места там чрезвычайно мало, да и закрытый репозиторий всего один для одного аккаунта. Поэтому вооружившись django, mysql-python и hg, хочу придумать свое хранилище репозиториев. Планируется реализовать на первых порах:

  • Регистрация пользователей (пока по инвайтам)
  • Создание репозиториев (приватные, публичные)
  • Доступ по http, https, ssh (по ssh и возник вопрос)
  • Файловый архив (ну релизы всякие загружать)
  • Все остальное взять из hg (changeset, browse, etc)

В будущем хотелось бы issue tracker и milestone. А потом все это отдать обществу, конечно! Ну а теперь собственно проблема:

Когда я зарегистрировался на bitbacket.org, создал свой репозиторий, сразу же добавил публичный ssh-ключ, чтобы коммитить по ssh. Если вы пользовались этим, то знаете, что все коммиты происходят от одного пользователя «hg». То есть примерно вот так:

hg push ssh://hg@bitbacket.org/username/reponame/

Теперь вопрос. Как bitbacket.org узнает, что мне можно коммитить в /username/reponame/, но нельзя коммитить в /login/testrepo/? Или что мне можно читать /username/repo2/, но нельзя читать /silence/secretrepo/?

Второй вопрос, как добиться такого поведения:

$ ssh hg@bitbucket.org
PTY allocation request failed on channel 0
ponq: what are you asking for, exactly?
Connection to bitbucket.org closed.

$ ssh hg@bitbucket.org ls -la
ponq: what are you asking for, exactly?

Заранее спасибо за ответы! Надеюсь, что правильно сформулировал вопросы.

 ,

cheerfulboy
()

Умер свич?

Еще вчера все прекрасно работало. Но после перезагрузки сетевая на сервере начала мигать обеими лампами раз в две секунды и бесконечно выдавать, будучи подключенным к моему TP-LINK TL-SG1005G (5-port gigabit ethernet switch):

May 12 14:26:41 router kernel: br0: port 1(lan0) entering forwarding state
May 12 14:26:42 router kernel: r8169: lan0: link down
May 12 14:26:42 router kernel: br0: port 1(lan0) entering disabled state
May 12 14:26:45 router kernel: r8169: lan0: link up

Причем в это время свич вообще не показывал линк на порту, где был подключен сервер. Все это было опробовано с разными патчкордами, сетевыми в сервере (там две r8169). Потом с разными версиями драйвера сетевой (6.012.00, 6.013.00 с офф. сайта, и 2.6.31-r10, 2.6.32-r7 из ядра). Но ничего не помогло. Порты на свиче тоже менял.

А ведь самое забавное, что со всеми остальными девайсами свич работает прекрасно. Нет потерь, скорость около 50 мбайт/сек. В чем может быть дело, товарищи?

cheerfulboy
()

Выбор PHP-фреймворка

Привет, ребята! Тема уже поднималась не раз тут, но хочу спросить еще раз. Вообще в последнее время очень полюбил джангу, и писать надо на похапэ, и поэтому встал выбор подходящего фреймворка. Интересует вот что:

  • ORM, генерация SQL из моделей
  • Возможность удобно делать миграции в бд
  • Шаблонизатором не должен быть сам похапэ
  • Возможность создавать многоязычные приложения
  • Хорошая, объемная документация
cheerfulboy
()

Троллинг на пасху

Собственно, как будете развлекать своих пгмнутых товарищей?

cheerfulboy
()

[python][django][html5lib] Обработка собственных тэгов

Сразу признаюсь, да, я не осилил документацию.

начал с html5lib — http://code.google.com/p/html5lib/wiki/UserDocumentation
потом нашел нечто про lxml — http://codespeak.net/lxml/dev/
наткнулся на это, немного не в тему — http://softwaremaniacs.org/forum/django/2350/

А задача стоит так — у меня есть некий код, к примеру вот:

<code lang="bash">
[[ abc =~ ^ab ]] && echo "good"
patch -p1 < filename.txt
</code>

<user id="1" />

<article id="243">название статьи</article>

И хотелось бы уметь заменить lang=«bash» на какой-нибудь class=«highlight[bash]», а так же сделать strip(), а потом django.utils.html.escape() для текста между <code>. Ну и другие преобразования с тэгами. И да, я совершенно не понимаю, куда смотреть и с чего начать. Пожалуйста, тыкните, пускай грубо, но тыкните. Спасибо за внимание!

 ,

cheerfulboy
()

[вещества][космос] Может я выдумал всю свою жизнь?

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

Так вот, о чем это я. Дааа! Значит, недавно я вспомнил, что примерно в 2000-2004 году был такой эксперимент. Запустили в космос спутник с огромным по площади зеркальным отражателем, который должен был лететь с темной стороны земли, отражать солнце и освещать нашу планету в том месте, где должна быть ночь. Но не могу вспомнить, получилось ли у них что-то, или проект провалился. И не могу нагуглить подробности этого проишествия. А, может, мне все приснилось?

Ребята, помогите. Все мои знакомые крутят у виска, когда я им это рассказываю. А я уже чувствую себя Ди'каприо в «проклятом острове».

 ,

cheerfulboy
()

r8169: link up

В общем, дела такие. Имеется роутер под гентой. Он является шлюзом в моей домашней сети. Когда из под натящейся тачки открываю eiskaltdc и начинаю качать порнуху, то на роутере появляется вот такая фигня:

------------[ cut here ]------------                                                                                                                          
WARNING: at net/sched/sch_generic.c:246 dev_watchdog+0xcf/0x152()                                                                                             
Hardware name: KT600-8237                                                                                                                                     
NETDEV WATCHDOG: eth0 (r8169): transmit queue 0 timed out                                                                                                     
Modules linked in: bridge stp llc pppoe pppox ipv6 iptable_mangle xt_TCPMSS xt_state xt_multiport iptable_filter ipt_MASQUERADE ipt_REDIRECT ipt_addrtype iptable_nat nf_nat_snmp_basic nf_nat_tftp nf_conntrack_tftp nf_nat_sip nf_conntrack_sip nf_nat_pptp nf_conntrack_pptp nf_conntrack_proto_gre nf_nat_proto_gre nf_nat_irc nf_conntrack_irc nf_nat_ftp nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack analog gameport i2c_viapro via_rhine rt61pci fan rt2x00pci rt2x00lib input_polldev r8169 eeprom_93cx6 thermal processor button thermal_sys fuse dm_snapshot dm_mirror dm_region_hash dm_log scsi_wait_scan sbp2 ohci1394 ieee1394 ohci_hcd uhci_hcd usb_storage hid ehci_hcd usbcore scsi_transport_fc                                                                                                 
Pid: 0, comm: swapper Not tainted 2.6.31-gentoo-r6 #1                                                                                                                                                      
Call Trace:                                                                                                                                                                                                
 [<c101cbaf>] ? warn_slowpath_common+0x5e/0x8a                                                                                                                                                             
 [<c101cc0d>] ? warn_slowpath_fmt+0x26/0x2a                                                                                                                                                                
 [<c12bdfcf>] ? dev_watchdog+0xcf/0x152                                                                                                                                                                    
 [<c101803c>] ? __wake_up_common+0x2d/0x52                                                                                                                                                                 
 [<c132cc3f>] ? sta_info_cleanup+0x0/0x106                                                                                                                                                                 
 [<c132cd25>] ? sta_info_cleanup+0xe6/0x106                                                                                                                                                                
 [<c12bdf00>] ? dev_watchdog+0x0/0x152                                                                                                                                                                     
 [<c1023008>] ? run_timer_softirq+0x101/0x145                                                                                                                                                              
 [<c1020246>] ? __do_softirq+0x5d/0xc7                                                                                                                                                                     
 [<c10201e9>] ? __do_softirq+0x0/0xc7                                                                                                                                                                      
 <IRQ>  [<c102003a>] ? irq_exit+0x25/0x4e                                                                                                                                                                  
 [<c1003ce0>] ? do_IRQ+0x66/0x76                                                                                                                                                                           
 [<c1002ce9>] ? common_interrupt+0x29/0x30                                                                                                                                                                 
 [<e146fdbf>] ? acpi_idle_enter_simple+0x11f/0x152 [processor]                                                                                                                                             
 [<c12981ed>] ? cpuidle_idle_call+0x57/0x8a                                                                                                                                                                
 [<c1001a80>] ? cpu_idle+0x23/0x3f                                                                                                                                                                         
 [<c149763a>] ? start_kernel+0x257/0x25a                                                                                                                                                                   
---[ end trace e35acfb8f17b6dc4 ]---                                                                                                                                                                       
r8169: eth0: link up
r8169: eth0: link up
r8169: eth0: link up

В этот самый момент сеть как бы «замирает». Продолжаем качать дальше — происходит постоянный link up то eth0, то lan0-интерфейсов (где eth0 интернет, а lan0 моя домашняя сеть). На каждый link up приходится одно замирание секунд на 10.

Сетевушки, как вы уже догадались, realtek r8169, что одна, что другая. Вот более подробно:

$ sudo lspci | grep Ethernet
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)

$ uname -a
Linux router.home 2.6.31-gentoo-r6 #1 Thu Dec 17 01:50:58 KRAT 2009 i686 AMD Athlon(tm) XP 2000+ AuthenticAMD GNU/Linux

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

cheerfulboy
()

Python/Twisted, фильтрующий http-прокси

На самом деле это продолжение уже отдной из моих тем, которая находится вот тут: http://www.linux.org.ru/view-message.jsp?msgid=4180540

Вкратце: я хотел проксировать и фильтровать http (подменять контент и заголовки, и только потом отдавать клиенту/серверу). Сначала пытался сделать icap-сервер для squid, но ничего не получилось (точней понял, что затраченное на это время совсем бесполезно).

Сейчас я пытаюсь написать обработчик на python, используя twisted. Изучив http.py и proxy.py, подготовил небольшую заготовку:

from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log


class ProxyClientFactory(proxy.ProxyClientFactory):
    pass

class ProxyRequest(proxy.Request):
    protocols = {'http': ProxyClientFactory}

class Proxy(proxy.Proxy):
    requestFactory = ProxyRequest

class ProxyFactory(http.HTTPFactory):
    protocol = Proxy

Запускаю вот так:

#!/usr/bin/python

import sys
import filter

from twisted.python import log
from twisted.internet import reactor


log.startLogging(sys.stdout)

reactor.listenTCP(8080, filter.ProxyFactory())
reactor.run()

И мне кажется, что наследуя парочку классов, я ничего не изменил в логике работы сервера. Но оно не работает. Я долблю 8080 порт браузером, телнетом (GET / HTTP/1.0\r\nHost: linux.org.ru\r\n\r\n), а оно не отвечает. И в логах ничего интересного не пишет. Я в тупике. Вот логи:

$ ./proxy.py
/usr/lib64/python2.6/site-packages/twisted/internet/_sslverify.py:4: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import itertools, md5
/usr/lib64/python2.6/site-packages/twisted/web/microdom.py:157: SyntaxWarning: assertion is always true, perhaps remove parentheses?
  assert (oldChild.parentNode is self,
2009-11-05 22:21:55+0700 [-] Log opened.
2009-11-05 22:21:55+0700 [-] filter.ProxyFactory starting on 8080
2009-11-05 22:21:55+0700 [-] Starting factory <filter.ProxyFactory instance at 0x7d4560>

Причем если не наследовать ничего из twisted, то все прекрасно работает. Признаюсь, я новичок в python, а тем более в twisted, вдруг что-то упустил из виду? Спасибо за внимание. Надежда только на вашу помощь.

cheerfulboy
()

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