Чтобы добавлять сообщения и комментарии, .

@altrg:
altrg

Покопался с имеющимися готовыми пулами, из известных — poolboy и pooler. Оба могут мониторить вызывающие и вызываемые процессы, оба могут делать overflow, но из особо полезных отличий — пулбой умеет делать блокирующие вызовы (ждать воркера), а пулер зато умеет гасить их с задержкой (грабли кучи дергающихся тяжелых коннектов на overflow). Еще пулер может сам дернуть воркера из рандомной группы. Может прибить воркера по результатам вызова. У него тонкая настройка каждого воркера в отличии от пулбоя. Вобщем нраица!

@altrg:
altrg

Вчера полдня выковыривал из тектовых логов термы, чтобы воспоризвести одну проблему. При этом поимел большой гемор с конвертацией текста из :format("~p".. обратно в эрланг. В итоге все как обычно оказалось совсем несложно:

get_term(Str) ->
case erl_scan:tokens([], binary_to_list(Str)++". ", 1) of
{done, {ok, Tokens, _}, []} -> erl_parse:parse_term(Tokens);
Other -> {error, Other}
end.

@altrg:
altrg

Дано: сервер за семь фарволами, на нем нода с @127.0.0.1 именем. Открыт только ssh.

Требуется: прицепить консоль, пустить обсервер, сделать c:nl/1 и тп с девелоперской тачки за NAT.

Родилося:
#!/bin/sh
export ERL_EPMD_PORT=43690

PORT=`ssh target-host "/opt/target/erts-5.9.2/bin/epmd -names" | awk '$2 == "target-node" {print $5}'`

pkill -f ssh.*-fxN.*target-host
ssh -fxNL 43690:localhost:4369 target-host
ssh -fxNL $PORT:localhost:$PORT target-host
ssh -fxNR 9001:localhost:9001 target-host

erl -name dev@127.0.0.1 -setcookie target-cookie \
-kernel inet_dist_listen_min 9001 inet_dist_listen_max 9001 \
-eval "net_adm:ping('target-node@127.0.0.1')."

pkill -f ssh.*-fxN.*target-host

Усложним задачу. Пускает только с одной разрешенной тачки, где нет эрланга, но есть ssh?
Кладем на девелоперской тачке в ~/.ssh/config:
Host target-host
ProxyCommand ssh -q -A some-allowed-host nc -q0 target-host 22

@altrg:
altrg

быстро поднять графит с временной мордой на wheezy:
1) apt-get install graphite-carbon python-pip
2) /etc/default/graphite-carbon сделать true
3) invoke-rc.d carbon-cache start
4) pip install graphite-web django django-tagging
5) cd /opt/graphite/webapp/graphite/
6) в app_settings.py написать ченить в SECRET_KEY
7) mv local_settings.py.example local_settings.py, WHISPER_DIR = '/var/lib/graphite/whisper', добавить ALLOWED_HOSTS=['*'], разремить DATABASES = { ...
8) python manage.py syncdb
9) /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite

все, можно поливать данные и смотреть в морду

@altrg:
altrg

таргет майл ру апи документация

@altrg:
altrg

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

@altrg:
altrg

audacious рулит. Нахрен xine, gstream и тд

@altrg:
altrg

Странно насколько сильно отличаются бэкенды xine и gstreamer. Xine, покрайней мере на mp3 и mp4, дает какой-то слишком уж яркий, граничащий с искажениями звук. Gstreamer же, напротив, выдает звук темный, хочется подкрутить высоких. VLC похож на xine. Gstreamer сильно комфортнее (привычнее?).

@altrg:
altrg

Походу я начинаю понимать что не так с distributed gproc. Как на нем просто и быстро сделать штуку типа global:set_lock? Как на ходу вводить в него новые ноды?
Имхо для того, чтобы сделать уникальный процесс в кластере, наделить его свойствами, по которым можно будет делать селект и юзать его для pubsub — отлично вписывается связка global+mnesia(пусть даже ram_only)+pg2.
btw надо будет поковыряться с gen_leader, посмотреть какие ништяки он может предложить для этих целей

@altrg:
altrg

да, это блюз. высший пилотаж электронного блюза. великолепный вокал, глубокая музыка, прекрасный отточеный звук. браво depeche mode!

@altrg:
altrg

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

@altrg:
altrg

<Igor Karymov> кстати небольшой срыв покровов: в релиз можно не включать erts !
надо будет глянуть эту тему

@altrg:
altrg

Больше полугода упорно слушал Effortless English, добрался до середины 3-го уровня.. Сегодня, наконец, дошло что в нем не так — тексты там в основном от третьего лица. Мне же для свобдного общения с заказчиками нужно как можно больше забивать в башку фраз и построений от первого лица.. У Пильснера с этим все ок, но он сцуко своим нлп меня бесит :(
Надо поискать чегонить от первого лица на несложном инглише..

@altrg:
altrg

теперь, с Fiio Andes в качестве звуковухи, решил собрать отовсюду все свои уши домой и посравнивать
1. Сенхи PX100-II. Улица и только. картины нет, низ каша
2. iGrado. Звук теплый, очень комфортный, вся картинка на месте. Звук нравится, хотя может это дело привычки — хз. Сидят неудобно — давят за ушами, но сидел в них на работе полгода — впринципе норм.
3. Сенхи hd238. Раньше както неуважал, отправил играть в игрушки на комп — почему то не очень звучали с sansa clip+ — мутная картина, странные низы. Но с fiio вдруг заиграли. И вобщем-то хорошо заиграли. Очень комфортные лекгие удобные уши. Но все равно оставил дома — iGrado музыка все же привычнее, да и дома неудобно их резко скидывать за детями бегать
4. Shure 440. Пля когда я ж к ним привыкну. Единственные мои закрытые уши. Брал для шумоизоляции от детей, для работы дома. Звук ДРУГОЙ. Напрочь другой. Вроде все классно — картина очень четкая, все отлично, но я не узнаю свою привычную музыку. Амбиент не нравится. Рок супер. Синти/фьча не нравится. EBM/Industrial супер. Громоздкие. По мониторами жарко. Заказал на амазоне амбюшуры от 840, посмотрим еще — говорят звук менятся в лучшую сторону

@altrg:
altrg

сраный дабстеп у Mesh в заглавном треке. вот дермище

@altrg:
altrg

<kvakvs> век живи век учись, эрланг может матчить бинари посимвольно в utf8, и это быстрее чем другие способы подсчёта юникод символов <<X/utf8, _/binary>> от вдвое быстрее для неюникод строк до просто быстрее для юникод строк

@altrg:
altrg

надо будет реально подумать насчет своих конфигов.
github.com и module_app:config_change + application_controller:config_change/1