netch80: (Default)
Век живи - век учись...

  struct sigaction sa;
  <...>
  sa = (struct sigaction) {
    .sa_handler = fatsignal,
    .sa_mask = currset
  };


не знал о таком приёме, хотя это ANSI.
netch80: (Default)
Гость показал жестами, что представляет фирму Huawei.
netch80: (Default)
Если пристрелить (SIGINT, ^C из консоли) один firefox, то с заметной вероятностью ещё несколько процессов скончаются по совершенно неожиданному:

g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting

Риторический вопрос - какой потомственный шлемазл решил, что отвал dbus это причина дохнуть всему процессу.
netch80: (Default)
> After finishing Oracle RAC update to 11.2.0.3.4

Несколько процессов стартуют одновременно и выполняют один и тот же запрос:

DELETE FROM shared_cookies WHERE sk_expires < :exp_ts;

база получает пачку запросов и... запросы начинают умирать по таймауту. Таймаут - 5 минут. База не загружена. В таблице 5 колонок и десяток записей. Видимо, быстро определить, что один запрос выполнился и отпустил лок, и передать следующему - оно не в состоянии.

Как-то я уже высказывался о нашем опыте работы с этим зверем. Продолжение последовало достаточно быстро.

UPDATE: всё проще - серверный процесс дох из-за бага.
netch80: (Default)
Задумчиво и героически наступил на стандартную граблю - функция в главном треде ожидает ответа от сервиса, коллбэк которого исполняется в том же главном треде.
netch80: (Default)
Патчи мержились, звеня и подпрыгивая.
netch80: (Default)
Что будет, если в git к репо одного проекта применить патч, вытащенный из репо совсем другого проекта, не имеющего ничего общего в целях и в коде, кроме всяких Makefile?
Практика показывает, что он успешно найдёт в них общее и даст смержить.
netch80: (Default)
В erlang-russian продолжается эпический тред под названием "Кот создавал сайты на Erlang".
При этом до сих пор не появилось ни одного кота.

UPDATE: кот уже тестировал сайты, использовал Riak... привет новым локальным мемам.
netch80: (Default)
Решил больше не тянуть кота за хвост и поменял мать+проц у домашнего десктопа.

Gigabyte H61M-S2PV + Pentium G860, выбраны по принципу "самое простое, понятное и дешёвое при обязательном соблюдении входных требований", и 2 * 4GB DDR3.

Сняв старую (M2NPV-MX + Athlon64 X2 4800+), убедился, что сделал это достаточно вовремя (некоторые кондёры уже явно собрались поднять шляпы и откланяться с наилучшими пожеланиями).

Для теста памяти и шины пересобрал две штуки gcc, нареканий нет, своп по нуле.

Заметные траблы возникли только с графикой. Напрямую драйвер intel не подключился. Почитав камасутру, подумал, что пока и на VESA поживём, а если точно не хватит - можно будет и такими... мнэээ... методами заняться. Как ни странно, на VESA даже видео отлично идёт, если не на совсем полный экран. Ещё попыткой проверить скорость tuxracer'ом пришёл к тому, что тот упал в корку, при этом видеорежим переключился в что-то в стиле 640x480, при сохранении полного размера графики (1600x900), попытка выправить его xrandr'ом не сработала, просто перезапустил. Непонятно, где брать параметры для xrandr (например, для --output). [UPD1: если сделать так: "xrandr -s 1024x768; xrandr -s 1600x900" - то есть переключить в другой режим и сразу восстановить обратно - всё восстанавливается.]

Набортная сетевуха - if_re, но у меня со старой матери торжественно переехал 3c905C-TX выпуска где-то 2000 года:)

А вот звука на переднюю панель нет. То ли я чего начудил в конфиге, то ли ХЗ.
netch80: (Default)
В переводе домашней фряхи на 64 бита была одна главная - скопировав старый конфиг, забыл добавить COMPAT_FREEBSD32, и одна поменьше - держал /usr/obj на ZFS. В остальном прошло без проблем по официальной инструкции.

А вот перевод рабочей машины всего-навсего с суси 12.2 на 12.3 увёл всю её вразнос, а восстановление через соседний Alt на том же диске дало всё, кроме загружающейся машины. Вот отдохну морально и на следующей неделе буду чинить внешним диском.
И когда "/etc/init.d/network start" тебе говорит "иди в сад, я тут не знаю, что реализует у вас сервис network", возникает очень обоснованное сомнение в умственной адекватности авторов systemd.

NBPRG wtf

Apr. 26th, 2013 12:23 pm
netch80: (Default)
На подъезде висит объява:



Как там звали изобретателей русских клонов линукса? По-моему, тут даже линуксом не пахнет. Но претензий - вагон.

P.S. А что такое "23 & 27"?
netch80: (Default)
... предоставляется интерфейс типа "гуяно".
netch80: (Default)
Debian Wheezy автоматом поставило grub-efi, заметив запах последнего в BIOS, несмотря на то, что диск не в GPT. Пока не заставил его явно поставить grub-pc-bios, не давало пройти дальше rescue mode. Ну что за чудеса...
Зато на коробке от материнки гордо написано про Windows 8 ready.
netch80: (Default)
На свежекупленной клавиатуре Gembird на клавише Esc добавлена надпись "АР2".

Но почему тогда на Enter не написано (сами знаете что)?
netch80: (Default)
Не заметил когда, но на домашней машине появились непонятные тени символов - где-то на 1/3 их ширины справа и очень блеклые. Но достаточные, чтобы изображение стало казаться "мыльным".
В начале грешил на gtk, потому что видел эффект только в pidgin и ряде страниц firefox'а.
Посоветовался с коллегами. Поменял по их подсказке видеодрайвер.
После этого эффект не исчез. Но я его стал видеть даже в xterm.
Пересмотр параметров иксов ничего не дал.
Проблема исправилась шевелением видеокабеля.

Чувствую себя разучившимся траблшутингу.
netch80: (Default)
Разбираю тикет - как себя вести, если идёт VoIP data поток с UDP source port = 0 (прописью: нулевой). Новые Quintum'ы такое посылают.

Пакет нулевой длины на UDP - это давно известно. Source port 0 - вот уже есть (через BSD sockets не создать, ну да ладно). Source IP 0.0.0.0 - норма для DHCP discover. А как понимать, если они все вместе в одном пакете?
netch80: (Default)
А почему бы её не делать через два пароля (обычный и мастер)?
Или через два email?
Почему все так тянутся делать это через мобилку? Ради желания побыть Старшим Братом?
netch80: (Default)
Мне от KDE ничего не нужно, кроме пары игр, когда голова не варит. Но что за кошмар сделали с ними в KDE4??? Нормально смотреть можно только на варианты из 3-го, без дурацких цветностей, анимаций, псевдорисунков от руки и тому подобного бреда.
Приходится искать варианты, как ставить игры от 3-го.
Примеры - ksudoku, knetwalk

О старшие боги, сделайте так, чтобы авторов KDE4 хватило мешком по голове и они больше не портили хорошо работающее.
netch80: (Default)
Период смешных ошибок с неожиданными последствиями.

Не моя: в pidfile пишется просто число - PID, ничем не терминируется, файл предварительно (или после) не зачищается. Работало под pid=12347, запущен новый с pid=3642, в pidfile оказалось 36427.

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

Пока не знаю, какие выводы тут делать.
netch80: (Default)
Опять наткнулся на баг sshd (openssh), что он вместо того ключа, с которым авторизовался клиент, вдруг применяет другой. Стимулирует срабатывание наличие forced command, но точные условия не могу пока воспроизвести.
Но по всему этому начинаю бояться держать на ключевых машинах один sshd. Нужна альтернатива.

Вообще openssh написан ужасно. Например, чем надо думать, чтобы вместо попытки предварительно определить тип ключа прочитать несколько первых символов строки и затем вызвать разбор нужного типа - вызывать последовательно попытки чтения каждым типом, замусоривая дебаг сообщениями типа "а я не знаю, как это читать". Или с той же forced command - пытается вначале прочитать ключ без параметров, а когда видит, что фигня - читает уже с параметрами.
У ssh2-fi было гибче - каждый ключ в отдельном файлике.
netch80: (Default)

Кто с ходу увидит ошибку?

    for i in range(0,3):                                                    
        test.acct_servers[i].handleAcctRequest = \                          
                lambda p: handleAcctRequest(test, test.acct_servers[i], p)  

Получившие данную шишку на лбу понимают, почему для порождения замыкания надо рисовать отдельную функцию.

UPD[2012-07-05]: от gegmopo4:
... lambda p, i=i: (далее по тексту)
Работает, но я не берусь отправлять такое в общее репо.

netch80: (Default)
Окружение: Linux/x86-64/glibc

I. Питон.

Берём небольшую тестовую программку:


import os, gc
def ps():
    os.system("ps -p %s -o vsz,rss | tail -n +2" % (os.getpid(),))
class A:
    pass
ps()
a = [A() for x in range(0,3000000)]
ps()
del a; gc.collect()
ps()


Если её запустить под 2.7 в описанном виде, получаем:

 20996  4456
1182596 1161900
936816 920336


Сделав одно небольшое изменение - A наследуется от object (и становится new style class) - получаем:

 20996  4452
314112 293528
 93032 76660


Формально new style легче буквально на десяток байт, но меняется что-то другое. Теперь запустим вообще под python3:

 28872  6956
249692 224164
 28872  7196


Раньше мы меряли потребление памяти тяжёлым процессом по пиковым нагрузкам, но это, как видно, уже неадекватный результат.
Кстати, окончательное освобождение из-под объектов происходит именно при gc.collect(). До этого чистится чуть-чуть (насколько я понял, собственно список, но не объекты).

Но!!! Как только мы создаём не пустой объект, а с реальным содержимым, память перестаёт освобождаться по удалению объектов:(

II. Уже Си (чтобы избавиться от возможных эффектов Питона). Тестовая программа порождает 50 тредов, после каждых 10 рассказывая объём процесса, каждый тред делает malloc(1) и уходит в вечный цикл сна. Запускаем... ой...

  6120   372
743572  2640
1480892 6736
2218212 8972
2365708 13068
2447668 13068


64MB на тред не включая 8MB стека до какого-то порога - это пять. косяков.
Теория см. здесь. И точно:

$ env MALLOC_ARENA_MAX=1 ./t1
  6120   372
612500  4688
694460  4688
776420  4868
858380  4868
940340  5060


А всего-то хотелось соотнести объём процесса с нагрузкой и придумать, как определять, что с ним что-то не так (например. забытый, но не удалённый и не отцеплённый, мусор в памяти). Но, видимо, просто не решится.
netch80: (Default)
Убийственный пример преобладания, нет, даже насилия традиции над здравым смыслом - тот интерфейс управления раскладками клавиатуры, который везде.
Что мешает сделать возможность "я вот прямо сейчас хочу включить украинскую/китайскую/etc., несмотря на то, что её нет в обычном списке"?
Не надо вспоминать XKB, устройство Windows и т.п. - это всё примеры того, как уже завязались на традиционный дизайн.

Переключение всех по циклу - почему только так? Почему из 5 возможных не оставить на цикле только 2?
netch80: (Default)
Старый принцип: чтобы настроить сеть на не-маршрутизаторе, надо знать IP адрес, маску и шлюз.
Новый: к этому добавилось MTU.
Ибо на первом 1500, на втором 2044, на третьем 4000, на четвёртом 9200.
Кто-то, может, в этом мире живёт давно, но мы влетели на днях.
netch80: (Default)
Никакие способности софта держанию нагрузки не работают, если поток поступает быстрее, чем приёмный процесс вообще способен его принять. Если регулировки потока нет и должны всё принимать, система будет неустойчива и будет выходить в турбулентный режим при переполнении некоторого уровня нагрузки. И неважно, Erlang это или что-то другое: или есть механизм ограничения приёма, потока, или система идёт вразнос.

Жизнерадостное игнорирование этого фактора - основная причина неадекватного поведения наших ранних версий.

А один общий mailbox процесса на все случаи приводит к тому, что управление потоком надо или делать через порты (в частности, выводя толстые потоки в TCP/SCTP/etc., даже если взаимодействуют ноды в кластере), или уметь явно говорить отправителю остановиться. Если бы было несколько очередей, с возможностью настройки каждой из них - можно было бы делать умнее; но сейчас - любое решение получается некорректным.

А существующие костыли закономерно повторяют старые добрые методы работы с очередями, реализованные в маршрутизаторах, начиная с Cisco. Только вот и они не помогают, когда процесс задумался непонятно о чём, а во входной очереди у него 730 тысяч сообщений. Здесь не кран надо менять, а всю систему.

Хочу много очередей с политиками. Размер очереди, простой дроп при заполнении, RED, GRED и так далее. Интересно, NIF'ами это можно сделать? Так, чтобы работало между нодами?
netch80: (Default)
Падает енода из-за того, что ETS таблица раздувается до 3GB, а на всю еноду целиком отведено 4GB.
На раздувание от старта до такого падения нужно около трёх минут.
И это всё на нужных и законных данных.

Ну да, после того как сел и переделал более по-умному, затраты сократились в сотню раз. Но сама по себе тенденция удручает.
netch80: (Default)
Из Infiniband Architecture Specification:


When initially powered up or reset, the value of all counters contained in PortCounters on all ports of a node shall be set to zero. During operation, instead of overflowing, they shall stop at all ones. At any time, writing (Set) zero into a counter shall cause the counter to be reset to zero.


Это - остановка по достижению предела, сброс только в ноль, отсутствие атомарного чтения и сброса - сделано одинаково и для 32- и для 64-битных счётчиков, только предел разный.
Вопрос: кто может мне объяснить глубокий смысл такого решения?

fi

Mar. 27th, 2012 03:41 pm
netch80: (Default)
Идея для аудиофильских производителей: кабеля, оптимизированные для конкретной географической широты.

А то злой Кориолис мешает нарезать правильные траектории.
netch80: (Default)
Когда вижу Karnaugh map, всё время хочется прочитать фамилию как "Карнаух".
netch80: (Default)
В свежем daily security check output домашней машины обнаружились попытки подбора ключей по sshd. Удивился, проверил файрволл. Как и ожидал, там в принципе эти попытки допускаются для ограниченного количества хостов.
Просмотр /var/log/auth.log показал, что они были 5 лет назад, а ротацию лога я куда-то потерял.
Вернул ротацию и думаю, хорошо ли это, что система не менялась тут с 2001-го года (только апгрейдилась).
netch80: (Default)
Который день подряд на secondary.net.ua идёт плотный поток запросов такого вида:

12:15:09.140941 IP 80.82.164.10.55750 > 195.149.112.1.53: 64562 A? ne08fwoeuhifn0ij.org. (38)
12:15:09.141387 IP 195.112.238.35.53418 > 195.149.112.1.53: 22014% [1au] A? nw98efhupnc98dshvui.org. (52)
12:15:09.141398 IP 91.143.63.9.49030 > 195.149.112.1.53: 27265 [1au] A? bef8iewuhfb.org. (44)

Знаю, что это какой-то троян, который через хэш получает доменное имя для центра управления, имя меняется каждый день. Конкретный троян неважен, их таких уже толпы.
Но имя зарегистрировано в DNS якобы с NS'ами primaryns.kiev.ua и secondary.net.ua и на обоих такая зона отсутствует.

Если кто-то убьёт бесплатный DNS, так это будут трояны.
netch80: (Default)
Обнаружили, что там, где мы раньше просто передавали счётчик в 8 байтах, надо передавать ещё два значения — типа "ошибка снятия" и "отсутствие источника". Расширять некуда — грубо говоря, это embedded, протоколы и форматы в общем установлены. Но параметры не так быстро растут, чтобы переполнить 64 бита.

Так что выдвинул на внутреннее обсуждение предложение: "на ходу" сократить его до 63 бит, а случай старшего бита равного 1 применить на спец-значения. Вот жду до понедельника, будут ли фатальные возражения...

Чувствую себя сотрудником Microsoft — согласно уровню извращений — заказчикам тоже придётся перестраиваться (хоть и не срочно).
netch80: (Default)
Рассматривая бенчмарки компиляторов, неизбежно приходишь к мысли о ценности бинарных сборок: есть возможность каждую функцию собрать именно тем компилятором, который для неё лучше всего, и при этом не лезть самому в ассемблер.

(А этот open64 забавный - у него мозги устроены совсем иначе, чем у gcc и clang.)
netch80: (Default)
Если Воля слишком устойчиво работает, то динамический адрес долго не меняется и DynDNS начинает присылать предупреждения, что акаунт, вероятно, неактивен.
netch80: (Default)
Есть очень сложный компонент. Автор недавно уволился. Передача дел практически не совершилась. Документации почти нет. Компонент должен перечитывать конфигурацию, но никто не мог понять, когда и по какому принципу. Стандартные методы (подписаться на обновление) оно не использует. Никто не мог понять, когда же происходит заветное событие.

Наконец выяснили у автора. Один раз в 12 (прописью: двенадцать) часов.
netch80: (Default)
Чему равно 84/5, если 8*8 = 54?

отсюда

В старой форме приходилось отвечать с заведомой натяжкой. Тут такого нет.

timsort

Jan. 8th, 2012 07:41 pm
netch80: (Default)
Отличный пример того, как происходят прорывы вроде бы в давно изведанных областях.

Гарантированно устойчивое O(n log n), с отличным постоянным коэффициентом и стабильным порядком. Хотя реализацию на пальцах не объяснить.
netch80: (Default)
С гуглом творится что-то непонятное.

Сначала они начали спамить напоминаниями про new look, на который всем надо срочно переключаться, а не то ой. Посмотрел, отплевался, переключился обратно. По-моему, этот new look хорош только для планшетов, но мне он на десктопе не нравится. Написал им "уберите эту гадость" и теперь игнорирую предложения.

Дальше они что-то поломали в движке фильтров. У меня был фильтр, который форвардит всё на другой адрес (почему не в общих настройках - потому что есть другой фильтр, по которому не форвардится). Ладно, они не могут разрешить задавать порядок фильтров (хотя за столько лет и двоечник мог бы это сообразить). Но почему ровно неделю назад этот форвард перестал работать, хотя тест на него даёт все нужные, а второй форвард (на одну рассылку) работает по-прежнему? Домен один и тот же.

Сегодня мне напоминание про ежедневное событие пришло с указанием, что оно в 15 часов, хотя пришло в 14. В вебе календаря написано, что у меня GMT+3 и это Киев. Ладно, переставляю на 14. Сохраняю. В списке снова написано оно в 15 часов...

По-моему, его тоже съели венчурные инвесторы и пора срочно искать что-то новое.

[x] [ ] [x]

Oct. 9th, 2011 08:42 am
netch80: (Default)
Вижу результаты голосования и считаю вправе окончательно возмутиться в адрес производителей сантехники, у которых если модный кран включен в горячую сторону, то спереди видна синяя метка (а красную надо ещё найти сбоку и догадаться, что смысл в повороте к ней), и наоборот.

Да, это проходной пост дежурной ненависти.
netch80: (Default)
В связи с этим (как-то сия феерическая дискуссия прошла мимо меня) и рассказом про "тупые HOWTO с лиссяры" вспомнил разборки совсем недельной давности.
Есть один дружественный провайдер colocall.net, к которому я регулярно хожу в гости на рюмку чая, где работал K+1 год назад и где у меня есть шелл. В этот шелл регулярно попадают строки лога из ipfw, задалбывают.

Выжимка из диалога с сисадмином тазика.

Я: а это действительно надо чтобы на zeus сообщения о том, что его спрашивают по ntp, сыпались всем на экраны?
А: Там на таз идёт немерянный поток udp пакетов, в среднем 8000-10000 пакетов в секунду. Это не временно. Это давно и постоянно. Если ничего не делать, то на сервере невозможно работать - всё рывками. Поэтому у меня там сделано так: ipfw в лог пишет информацию обо всех udp пакетах на порт 123. И запущен скрипт, который добавляет в файрвол запрет для IP адресов, с которых пришло более 50 udp пакетов в минуту.
А: Вообще не понятно, откудя такая активность? Может это вирусня какая-то? Но что им нужно от ntp сервера?

О как. Стало интересно. Проверил по ntp.org. Такого нет. Тогда решил ввести hostname в поиск... и что я вижу? Сотни, нет, тысячи копипаст одной и той же хаутушки "как сделать время на сервере", в которую вбиты конкретные хосты без каких-то предупреждений типа "не пробуйте использовать это за пределами Киева".
Вбил его IP - то же самое. И таки где одна из первых копий? Ну конечно, на лиссяре.

(Адрес открыт в основном постинге, потому что он легко угадывался по смыслу и его таки обоснованно угадали в комментариях.)

Далее пошло обсуждение того, как надо это лечить. Я предлагал жёсткие меры разного уровня радикальности. Например, отдавать всем за пределами сети провайдера время 5-летней давности или, наоборот, 25 декабря 2012 года. Или чуть помягче, например, каждые сутки на секунду медленнее, чтобы постепенно накапливать эффект. Но тот админ, похоже, страдает чрезмерным гуманизмом, и эти меры не были приняты.

Вот вам и вред от таких хаутушек - 10K левых запросов в секунду совершенно непричастным.
netch80: (Default)
OpenOffice (libre или нет, неважно) упорно приближается к винде. В Impress случайно зацепил и перетащил панель Slides, она стала отдельным окном. Перетащить обратно - не становится панелью, в контекстном меню ничего нет, закрытие/открытие и перезапуск не помогают, в меню и диалогах настройки нет. Гугл молчит. Греп по конфигам в хомяке не нашёл ни одного подходящего слова.
Только локальный патч Бармина в виде rm -rf ~/.config/.libreoffice помог.

Как-то страшно теперь с ним связываться, вдруг ещё чего выкинет. Чувствую себя начинающим виндомороном.

UPD[2011-10-07]: похоже, он особенно не подружился именно с WindowMaker. Логика должна срабатывать при перемещении окна slide pane над основным, и это не детектируется. Но независимо от проблем WM, я думаю, что это должно настраиваться.
netch80: (Default)
Был только на первом дне, впечатления разнообразные и неровные.
Ну девочек с рекламой описывать не буду, и так вся сеть в фотках. (Но на IT мероприятии я такого ещё не видел.)
Доклады нескольких видов. Заумь (включая мой - я только там увидел, насколько мы страшно далеки от основного народа). Несколько нормальных. Специально привезённые звёзды (по слухам в кулуарах, им бешено платят). Основная масса - муть или что-то сверхстранное. Например, от Mamba я ожидал более технического рассказа, а не прописных истин вроде "ломать надо в первой половине дня" (кто работал с телекомами, для тех это не новость, а прописные азы) или "саппорт должен быть качественный". Google тоже мутный, я еле удержался от едких вопросов "если вы такие моцные, то почему огромные проблемы надо решать через знакомых, а не штатные средства". Лапшин+erlyvideo, говорят, каждый раз слово в слово.
Много NoSQL, интересно, что не было ни одного доклада в стиле "ваши проблемы детские, мы с Postgres/MSSQL/Oracle такое решили K лет назад". Надо это ввернуть в качестве аргумента сторонникам реляционок:)
Низкоуровневая оптимизация C/C++ (не слушал, читал презентаху) - сборник очевидностей для тех, кто хотя бы по диагонали читает RSDN и аналоги, но для многих стало откровением. Значит, доклад таки полезный.
По рассылке почты - "у меня для вас посылка, но я вам её не отдам, потому что у вас документов нет." (Всё сказанное тривиально, всё нетривиальное скрыто.)
По самопальным HTTP серверам - комментарий Сысоева: "ну вот, логический круг замкнулся - были треды и FSM, а теперь есть и сопрограммы". Я хотел было влезть с вопросом "а каковы ваши перспективы в плане того, что все M:N, scheduler activations и прочее - вымерло нафиг", но пожалел докладчика;)
Что очень хотел послушать - вычислительная инфраструктура (Mirantis) и гипервизоры (Parallels), будем иначе изучать.
Никто не парился правами на картинкооживляж (было всё начиная от Симпсонов).
Организация проведения очень странная - дикая смесь высокого уровня и кошмара. Похоже, хозяева зала не умеют принимать столько людей (over 700) и обеспечивать IT. Попытка установить 40 accesspoint'ов в одном зале - явное ламерство, вроде только ко второму дню поняли, что не так. Трансляции всё время падали. Ну и многое другое по мелочам. Но в целом в плюс: кому нужно было, тому комфортно.

Проведение в дефолт-сити даёт, что присутствующие - одна большая тусовка с хорошей плотностью контактов. Белая ворона в моём лице еле нашла знакомых по сети.

По собственному докладу вынес в опыт* (кроме того, что первый блин на публике всегда комом) - что надо для такой аудитории не следовать рецептам "не будьте рабами powerpoint", а, наоборот, следовать за изображением: так хоть как-то понимают. И таки меньше волноваться, в устном виде меня постоянно заносило куда-то в сторону.

(*) теперь буду по-модному говорить "я увеличил свою экспертизу"
netch80: (Default)
По следам дискуссии сделал правку в раскладке: при русском нажатие '\' даёт прямой слэш (и '|' с Shift'ом). Бэкслэш на русской раскладке не нужен в принципе, и не понимаю, кто его туда и зачем впихнул.

Аналогично можно продумать идею поменять местами точку и запятую, потому что запятая в разы чаще, а точку кому надо и на дополнительной клавиатуре найдут. Но это значительно более серьёзный слом привычек.
netch80: (Default)
Кто-то уже в XX веке перефразиловал Маркса, что история может повторяться в виде фарса неограниченное количество раз.

В пятницу яндекс успешно повторил старый (10 лет назад) подвиг Lucky Net по вбросу всего BGP в OSPF. Последствия аналогичны, но масштаб и резонанс несравнимы.

Говорят, один из бывших нокеров LN тех времён начал работу в Google тем, что зарулил 40Gb/s поток в 2Gb/s канал. Потоки всего-то в 1000 раз толще того, с чем имел дело до того.:)
Большому кораблю - и торпеда со стадион.
netch80: (Default)
Я с ваших линуксов фигею.
Коллега создал бутерброд с несколькими KVM'ами. Внутрь каждого KVM идёт tap, который снаружи входит в bridge. Нормальная себе конфигурация, у нас в бою такие работают.
Дальше нужно рисовать бы, но облом. В общем, KVM1 выходит наружу через br0 хоста и имеет также внутренний интерфейс, который через xbm-br0 хоста подключается к KVM2.
К br0 подключен eth0 - единственный во всём этом зоопарке реальный физический, за ним мир. На br0 навешен маскарад 10-й сетки.
Пинги мира с KVM1 проходят без проблем, src IP меняется.
Пинги мира с KVM2 уходят без NAT (src IP остаётся 10.*)
Облизали правила iptables, прыгали между MASQUERADE и SNAT - ничего не нашли. NAT этот пакет тупо не видит.
Облизали таблицу раутинга - ничего не нашли.
Подключили Самого Опытного Коллегу. Тот сказал, что выход из бриджа может идти напрямую на L2 вместо L3 и тогда nat/POSTROUTING не работает, что это известные грабли бриджа. Но тогда бы и с KVM1 не работало. А в чём разница, спрашиваем? Афигегознаетъ.
Вечером коллега - автор конфигурации приходит офигевший. Перенёс, говорит, KVM2 домой, прокинул путь с местного бриджа туда туннелем - всё работает.
Получается, пакет, который пробежал только что через систему и ушёл наружу (через tap в KVM1), причём модулями NAT не замеченный, оставил какой-то след в ядре, который приводил к тому, что когда этот пакет снова входил в ядро уже через другой входной интерфейс, NAT его игнорировал несмотря на то, что не имел никакого отношения к первому проходу.
netch80: (Default)
Из того, что в принципе в документации есть, но так с ходу не заметишь.


handle_info(foo, State) ->
  NewState = #state{} = do_foo(State),
  {noreply, NewState};


если do_foo() случайно вернуло ерунду, а не нужный record, то без проверки = #state{} оно заметится только на следующем цикле, а это немного не то, что нужно:)

Аналогично можно сделать function clause на входе:


do_foo(#state{} = State) ->


(Альтернатива в виде dialyzer тяжеловата, мягко говоря, и не во всех случаях.)

diskcheckd

Aug. 18th, 2011 08:59 am
netch80: (Default)
Во FreeBSD5 одно время в базе был diskcheckd, потом убрали в порты. Я недавно посмотрел - ставится и работает.


# ps ax | grep disk
67114  ??  Ss     0:07.07 diskcheckd: ad6 2.05%, ad4 5.14% (diskcheckd)


В фоне читает все локальные диски на заданной скорости (можно делать ооочень медленно, чтобы не мешать обычной работе), если где-то плохо читается - будет громко жаловаться в syslog.
Эта деятельность "ортогональна" всяким smartmon, или помогает им (проверять блоки раньше, чем они реально потребовались).
netch80: (Default)
Дочке для школьной информатики требуется ТурбоПаскаль. 7-й. В предельно соответствующей обстановке, то есть в идеале это MS-DOS. На основной вероятной для работы машине живёт Debian с гномом, то есть можно поставить что угодно, но не в нужном виде.

Я уж молчу, что полный набор софта, который требуется для местного курса информатики, законно стоит пару десятков килобаксов на одно рабочее место (знакомый прямо спрашивал основных авторов учебников - они в принципе не понимают, в чём тут проблема и есть ли она вообще). Ладно, строим. В VirtualBox, чтобы переносимо и не мешать основным установкам.

И тут начинаются проблемы:
* MS-DOS не умеет сеть.
* Разные комплекты сетевой поддержки для него требуют ХЗ каких драйверов, строить всякие самбы, и я ничего уже не помню из того, как это делается.
* И даже не помню, как включать cd-rom в ней.
* Во FreeDOS есть всё, кроме работающего TurboPascal - он под ней тупо мрёт при попытке запуска чего-то.
* Запустить DOS с разных разделов требует чего-то вроде Symon boot manager, который уже фиг найдёшь, и вообще опасная тулза (не знаю, что будет, если порвётся транзакция).

Всё это настолько ввело в стопор, что конструктивное мышление остановилось. За несколько дней придумал только подключить в VirtualBox к системе с главной FreeDOS второй "физический" диск, налить на него дистрибутивы всего, что только можно, загрузиться с него и запустить инсталляции. При необходимости связи с внешним миром - снова уйти во FreeDOS и грузить оттуда.

Ах да, ещё можно W95OSR2 поставить, материал нашёлся. Но для этого тоже нужно её стащить с физического CD неизвестным путём => см. выше.

И самое обидное, что очередной апгрейд OpenSuSE на работе убил VirtualBox непонятным мне методом (молча виснет), так что идея задумчиво лечить в промежутке между приступами активного мышления - провалилась не начавшись.

P.S. А ещё VirtualBox (по крайней мере OSE) не умеет менять media дискеты или CD из файла на ходу:(

UPD[2012-09-12]: пока остановились на DosBox. Вроде всё, что нужно, даёт.
netch80: (Default)
Подробный список известных вариантов хранения с плавающей точкой на всех известных архитектурах - просто доставляет разнообразием и хитрыми решениями.

Несмотря на это, всё равно придётся делать своё - потому что должно тривиально читаться в hex-дампе.

(И вообще автор жжот нипадецки - но оценить его могут только те, кто работал с битово-ассемблерными потрохами минимум двух заметно разных рахитектур...)

Profile

netch80: (Default)
netch80

April 2017

S M T W T F S
      1
234 5678
9101112131415
1617 181920 2122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2017 10:22 am
Powered by Dreamwidth Studios