LINUX.ORG.RU

Сообщения gaga

 

[убунтопроблемы] затыкается сеть при закачке торрента

Комп под убунтой 10.04(знаю, знаю) используется в качестве локального сервера разработки и как шлюз в интернеты через юсб-свисток (pppd настроен автоматом через NetworkManager (тоже знаю)). При попытке качать торренты на виндовых машинах сеть через полминуты-минуту падает напрочь, т.е. пакеты от сервера ходить перестают. Если торрент тормознуть, коннект восстанавливается через секунд 5-10. Выглядит это так:

gaga@bughunter:~$ ping 10.10.12.108
PING 10.10.12.108 (10.10.12.108) 56(84) bytes of data.
...
64 bytes from 10.10.12.108: icmp_req=18 ttl=128 time=0.359 ms
64 bytes from 10.10.12.108: icmp_req=19 ttl=128 time=0.230 ms
64 bytes from 10.10.12.108: icmp_req=20 ttl=128 time=1233 ms
64 bytes from 10.10.12.108: icmp_req=21 ttl=128 time=871 ms
64 bytes from 10.10.12.108: icmp_req=22 ttl=128 time=9137 ms
64 bytes from 10.10.12.108: icmp_req=23 ttl=128 time=8137 ms
64 bytes from 10.10.12.108: icmp_req=26 ttl=128 time=5138 ms
64 bytes from 10.10.12.108: icmp_req=27 ttl=128 time=4138 ms
64 bytes from 10.10.12.108: icmp_req=32 ttl=128 time=0.249 ms
64 bytes from 10.10.12.108: icmp_req=33 ttl=128 time=0.455 ms
64 bytes from 10.10.12.108: icmp_req=34 ttl=128 time=0.253 ms
netstat показывает около 50 соединений, буферы пустые. iptables пустые, если не считать двух правил nat:
/sbin/iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Большая нагрузка на сеть по локалке переносится нормально. Куда деваются пакеты? Как можно отследить это дело?
Linux bughunter.local 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:23:39 UTC 2011 i686 i686 i386 GNU/Linux

gaga
()

[C] доступ к байту внутри int32

Вот такой код прекрасно компилится (что естественно)

  int32 a = 0xDEADBEEF;
  unsigned char *pa8 = (unsigned char*)(&a);
  printf( "%X %X\n", *(pa8+1), *(pa8+2) );
и выдает на х86 ожидаемый результат:
BE AD
А что будет, если целевая машина не-х86, и на ней нельзя обращаться к невыровненным на слово данным? Вылетит в trap? Ведь здесь мы читаем память из середины машинного слова. Или компилятор как-нибудь разберется?

 

gaga
()

[apache] Разные сайты на одном VirtualHost

У меня есть два сайта, один на руби, другой на питоне. Первый на рельсах, второй на Pylons и работают они, соответственно, через mod_passenger и mod_wsgi. По отдельности работают нормально. Я хочу сделать так, чтобы для пользователя они находились по одному адресу (в локалке), но в разных каталогах. Т.е. чтобы

http://192.168.0.1/rails-site открывал сайт на руби, а
http://192.168.0.1/pylons-site - питоновский.

Это возможно? Подскажите вид конфига апача. То, что я нагуглил, всегда использует две секции VirtualHost, соответственно и адреса у сайтов получаются разные.

( PS я знаю что конфигурация идиотская, а еще я нуб в апаче)

 

gaga
()

[syslog][поттерингосрач]логи в JSON

Почитал я тут срач в теме про journald, в принципе могу сказать, что скорее солидарен со сторонниками текстовых логов. Но я подумал вот что: существует же множество человекочитаемых форматов, которые также поддаются машинной обработке, например JSON. Пример:
{ «date»: «2011-11-23 23:25:36.0545 +0400», «pid»: 2104, «name»:«apache», «severity»:1, ...
«msg»: «127.0.0.1 - frank [11/Nov/2011:23:25:36 +0400] \„GET /apache_pb.gif HTTP/1.0\“ 200 2326» }
и т.д. Т.е. две строки для удобства грепания: строка самого syslog и строка приложения. На самом деле полей может быть дофига.

Преимущества перед простым текстом:
- формат легко и быстро парсится, быстрее регулярок
- формализованный заголовок
- можно написать набор утилиток, которые будут выдергивать текст перед грепанием, при этом добавлении произвольных полей в любую часть все продолжает работать как ни в чем не бывало
- можно легко создать SQL-подобный язык запросов. Например: SELECT msg FROM apache.log WHERE date >2011.11.22;
- приложения могут добавлять свои поля (они добавятся как поля «msg»), которые могут обрабатываться тем же способом теми же утилитами: SELECT pid, name from apache.log WHERE msg.code=200 AND date >2011.11.22
- можно одним запросом обрабатывать одновременно несколько логов
- можно в фоне строить индекс (кстати, для тескта тоже можно)
- если уж очень всралось, можно вставлять блобы в base64, они легко выкидываются парсером JSON

Преимущества перед бинарными логами
- текстовый формат. nuff said
- обрабатывается грепами, седами и прочими перлами на ура. Можно вообще не пользоваться сторонними утилитами
- скорость и простота
- добавляется в syslog элементарно
- расширяется просто путем добавления новых полей, при этом все старые скрипты и утилиты продолжают работать
- приложение само может регистрировать произвольные поля и объекты без гемора

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

 

gaga
()

[криокамера] Какой смысл производителям железа зажимать спеки?

Собственно, почему, например, ати не может выложить спеки своей карточки, чтобы можно было написать нормальные дрова? Насколько я понимаю, там жеж в основном «запиши то-то в такой-то регистр, получишь то-то на экране», не? Чего они боятся? Что их глючное говно вдруг начнет нормально работать? Или что по этому даташиту василий пупкин у себя в гараже спаяет такую же карточку и будет продавать дешевле? Почему вообще не открыть код драйверов, им же по идее от этого только выгода должна быть?

 

gaga
()

[C] comparison between signed and unsigned

Как бороться с сабжевым ворнингом?

Т.е. есть, например, хедер в котором объявлена константа uint MAX_DAYS_TO_BIRTHDAY. Она беззнаковая, что, в общем-то, логично, т.к. количество дней не может быть отрицательным. И теперь, если сравнивать ее с результатом функции int days_till_birthday(time_t birthday), то появляется упомянутый ворнинг. Решения, в общем-то, очевидны:

  • Объявить константу как знаковую. Но это не всегда возможно, особенно если либа не твоя, да и в unsigned все-таки содержится подсказка. Можно также не пользоваться по возможности константами, а пользоваться енумами.
  • Вырубить ворнинг ключом компилятора. Спорное решение.
  • Делать каст при каждом таком использовании, что делает код менее читаемым.
  • ???

    Кто как борется с этим?

 

gaga
()

[hg, gettext] Ширина строки gettext

В теме про Mercurial 1.9 я уже писал, что сделал его русский перевод. Он пока не полный, конечно, а самое главное, что очень корявый. Но я надеюсь поправить это к 1.9.1 или 1.9.2 и призываю желающих поучаствовать на bitbucket или писать мне на мыло.

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

(Скрин из бубунты 10.04, mg писал, что то же самое у него в Debian testing)

gaga
()

Комп в соседней комнате

Так слчилось, что у меня острая непереносимость шума кулеров (и не только их). У меня стоит мой старенький атлон2500, который служит мне верой и правдой вот уже почти 9 лет и при этом абсолютно бесшумен. При этом он работает круглосуточно, раздает торренты, файлопомойку, багтрекер, репозитории и другое добро.

Он меня всем устраивает, но я не могу на нем играть в говноигры (хочется раз в пару месяцев), смотреть хд- и флеш-видео и вносить вклад в мировую революцию (F@H, Bitcoin и т.п.). Поэтому хочется новый комп. Но он шумит как паровоз, перевод его в пассив так просто не дастся - это куча гемора и потеря гарантии. Значит, он должен стоять в соседней комнате.

Собственно, как бы можно это дело огранизовать? Пробовал RDP - тормозит. Иксы только под линукс. VNC не пробовал, но по слухам тоже будут тормозить, да и со звуком проблемы. Остаются только длиные провода, что ли?

gaga
()

Запретить системе вытеснять приложения в своп

Собственно, сабж.

gaga@ubuntu:~$ free -m
             total       used       free     shared    buffers    cached
Mem:          1002        986         15          0          0        96
-/+ buffers/cache:        889        113
Swap:         1600        426       1174
При свбодных 100 мб половина страниц приложений вытеснена на диск. Как запретить творить такое до полного исчерпания памяти?

Я знаю, что сейчас мне начнут объяснять, что это правильное поведение, оно позволит в два раза быстрее запустить приложение, которое потребует больше памяти чем есть и т.д. Но меня реально достало наблюдать выколупывание из свопа всякой херни по 10 секунд, когда я нажимаю мышкой на менюшке, которой не пользовался больше 30 мин.

Я слышал, что ядро с -ck патчами ведет себя так, но нет ли настроек в дефолтном ядре или еще где? vm.swappiness установлен в 0.

gaga
()

Кроссплатформенный NoScript

Пользуюсь NoScript и AdBlock в Лисе для блокировки богомерзкого флеша, жабы, рекламы и пр. Решение костыльное, работает только в фаерфоксе и не очень шустро. Хотелось бы поиметь то же самое, только в виде прокси или чего-нибудь схожего, чтобы для любого браузера.

Естественное решение Privoxy, но у него есть принципиальный недостаток: чтобы что-то поменять, надо лезть в конфиг(возможно, на другой машине) и применять его вручную. Это очень неудобно, если надо посмотреть, например, заблокированное флеш-видео, после чего снова его прибить. В НоСкрипт это делается одним кликом.

Хочется того же самого, но в виде отдельного приложения с быстрым включением-выключением элементов. Никто не знает, есть ли такие решения?

gaga
()

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