?

Log in

Вт, 27 сент, 2016, 09:48
Как бороться с пропагандой.

Единственный верный метод -- это метод Бродского, который уверял что не знает кто теперь генеральный секретарь. Так же метод профессора Преображенского чтения советских газет. Так как для целей пропаганды не имеет значения как обсуждается, имеет значение лишь что (и когда) обсуждается. С пропагандистами же следует беседовать исключительно вежливо, в стиле "да что вы говорите, как интересно, продолжайте пожалуйста".

источник

Чт, 22 сент, 2016, 18:38
Revolution will not be televised.

Сменил все лампы в доме на светодиодные. Что могу сказать:
1. По цене это вполне оправданно, разница с остальными отсталыми (люминисцентные, галогеновые) в 2 раза (можно найти разницу и больше, конечно)
2. Свет на выбор: cold, natural, warm
3. Греются, но не сильно, в основном цоколь (видимо где 220v переделывают в питание диодов) -- работающую лампочку рукой вывернуть можно, но за цоколь держать не получится.
4. Утверждается что работать будут годами, 5 лет гарантия (в чем я лично сомневаюсь -- вылетят не сами диоды, а преобразователи напряжения).

Если так посмотреть, то это третье поколение устройств с весьма революционными характеристиками (цена/потребление/долговечность): лампы накаливания -> люминисцентные/галогеновые -> светодиодные.

источник

Ср, 21 сент, 2016, 15:36
Elixir.

Как известно Elixir это ещё один язык который компилируется в BEAM. Что позволяет использовать библиотеки Erlang в Elixir, и наоборот. Библиотеки Erlang широко используются в языке Elixir, однако наоборот весьма редко, дескать, тулинг плохой. Тулинг в rebar3 значительно улучшился -- есть плагин для указывания elixir-зависимостей (https://github.com/barrel-db/rebar3_elixir_compile), и мне стало интересно на чём бы его применить. Оданкось оказалось что на hex.pm из top-20 скачиваемых библиотек все Erlang. Так что вопрос открытый -- чего бы такого из Elixir применить в Erlang-проекте.

источник

Пн, 19 сент, 2016, 11:15
Народ и партия.

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

Следует однако понимать что и обратную сторону картина не менее несуразная: в среднем требования "народа" к "власти" вполне себе идиотские и как правило не по адресу.

Причем нелепость процесса очевидна всем участникам, отчего наиболее сознательные разными способами уклоняются от участия, с обеих сторон. Что только усугубляет общую картину. Такая вот своего рода downward spiral.

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

источник

Пн, 19 сент, 2016, 00:22

Вот есть два человека. Один ходит в мечеть (церковь) регулярно, другой не ходит вообще. Какая между ними разница? Скажем, если бы один ходил в спортзал, а другой нет, то разница была бы заметна невооруженным глазом на многочисленных примерах. Вот все эти сложные ритуалы обсессивно-компульсивного вида, набивание себе молельной шишки на лбу, и прочее -- а что на выходе-то? Ну кроме шишки.

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

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

Как с таким можно бороться? Как говорил Бернард Шоу "...never to wrestle with a pig. You get dirty, and besides, the pig likes it." У любой задачи есть минимум одно решение. Очевидное и неправильное.

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

источник

Пт, 16 сент, 2016, 06:12
Erlang tracing.

Виртуальная машина Erlang BEAM поддерживает весьма развитой трейсинг при помощи двух nif: erlang:trace/3 и erlang:trace_pattern/3. Трассировать можно всё, включая сообщения между процессами. Особенный интерес представляет трассировка вызовов функций другими функциями (вместо того, чтобы расставлять по коду отладочный вывод и убирать его). Так как параметров у erlang:trace и erlang:trace_pattern довольно много, и вид они имеют крайне запутанный, то неоднократно предпринимались попытки сделать к ним интерфейс с человеческим лицом: встроенный модуль dbg, не встроенная библиотека recon, и наверняка многие другие. Поэтому вот ещё одна:

https://github.com/jamhed/fs_sync, работает вот так:

(fs_sync@127.0.0.1)1> fs_tracer:go().
(fs_sync@127.0.0.1)2> fs_tracer:add(lists, seq).
(fs_sync@127.0.0.1)3> spawn(fun() -> X = lists:seq(1,5) end).
TRACE: lists:seq/2 <- [1,5]
TRACE: lists:seq/2 -> [1,2,3,4,5]


Устанавливаем трейсер выводить все использования lists:seq, показывается что пришло в функцию и что вышло.

Для большего можно пользоваться оригинальными nif и другими библиотеками. Большее включает в себя гранулирование трейсинга по портам и процессам, фильтр сообщений, трекинг сообщений (объединение в серии) и перенаправление сообщений в разные места.

Интересно было бы еще подумать на тему trace profiles (наборы функций к трассированию, и вписывать их прямо в код модуля атрибутами, хе-хе). А lager в топку.

источник

Пт, 16 сент, 2016, 05:46
Их нравы.

Стокгольм, случай в баре. Начнем с того что там, в Стокгольме, конские ценники на пиво: 8-10 евро за кружку, да и предпочитают они там, судя по распространённости, исключительно IPA градусов по 7-8 (видимо с целью на кружках экономить). В общем, заказываем по кружке пива у бара, и зашла речь о цене, что типа вот это подороже будет, и товарищ гордо сообщает, что ему пох сколько оно стоит (I don't give a shit, verbatim). Я бы на месте продавца немедленно обрадовался и попросил 3 цены. Ну или 4. И не потому что деньги нужны, а просто чтобы проверить насколько пох на цену. Но не таков оказался шведский продавец пива за барной стойкой: он сделал оскорблённое выражение лица и сообщил что слово shit ему не нравится. После некоторых разъяснений вида что слово shit относится не к нему лично, а факту стоимости пива, оскорблённый в лучших чувствах продавец пива отвернулся с целью таки продать пива (предварительно туда плюнув, видимо), но не тут то было: он развернулся обратно и сообщил что теперь мы смеемся за его спиной над ним. На вопрос когда он успел русский выучить он ответил что ему и так всё понятно. Смотрел при этом гордо и с чувством собственного достоинства. И стоящий рядом другой бармен посмотрел так и говорит, да, да, я тоже видел как вы смеялись (что правда, да, смеялись).

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

источник

Пт, 9 сент, 2016, 17:07
EUC 2016 Day 2

Итак, Simon Peyton Jones зажигательно рассказывает как писать оптимизирующий компилятор языка Haskell. Оказывается есть два языка Haskell: один с синтактическим сахаром и выводом типов, другой без, но значительно быстрее. Тот, который с сахаром преобразовывается в тот, который без, и там происходит проверка типов, и более не нужно лазить с отладчиком GDB отлаживать компилятор. Познавательно, да.

Новости OTP 19/20, рассказывает Kenneth Lundin. Релизы OTP планируются раз в год, между будут выходить исправления. В OTP 19 есть новый модный модуль gen_state. Далее, OTP планируют перевести на rebar3, который теперь переехал в домен erlang и видимо считается официальным. Также обещают поддерживать репозиторий hex.pm. Планируют разбить OTP на приложения, чтобы каждое жило своей жизнью со своими зависимостями (в текущем релизе 52 приложения, что типа перебор). С другой стороны проекты не включают зависимости от OTP, так что могут переломаться. Поэтому на первом этапе планируется выкинуть только редкоиспользуемые приложения, числом 12. Предложения и pull-request приветствуются.

Cuter, рассказывает Kostis Sagonas. Как тестировать приложения не выписывая тесты. Когда Erlang-программы написаны по человечески (let it crash), то в конструкциях языка постоянно встречаются констрейнты и pattern-matching. А так же присутствуют аннотации типов. Поэтому возможно построить дерево переходов, и бродить по этому дереву собирая все констрейнты на переменные. Потом используя SMT-солвер можно эти констрейнты отрицать, и получать набор тестовых данных. Все это вместе называется concolitic testing (conctrete + symbolic). Таким образом test-кейзы выписываются автоматически по имени функции и некоторым начальным значениям. Пока не совсем ясно можно ли таким образом протестировать вызовы gen_server (где дерево переходов кончится: на gen_server:call или на gen_server:handle). И можно ли обучить если есть 1-1 соответствие между gen_server:call и gen_server:handle.

Elixir showcase, рассказывает Andrea Leopardi. Сообщает что в Elixir намного лучше тулинг (mix, hex.pm), однако взаимодействие с Erlang-экосистемой в основном одностороннее: библиотеки Erlang постоянно используются в Elixir, тогда как наоборот имеются некоторые сложности (e.g. нет удобного способа подключить elixir-библиотеку в erlang-проект, например через rebar3).

Рассказывает Christopher Meiklejohn о своей бурной деятельности по запуску amazon-нод. Советует рисовать картинки всем, кто занимается разработкой и отладкой.

Как разгребать дамп beam.smp, рассказывает Julian Squires. В нагруженных системах даже просто включить трейсинг необдуманно может обрушить erlang-ноду, поэтому действовать надо аккуратно. С другой стороны erlang-нода есть обычный linux-процесс который можно мониторить незаметно средствами операционной системы. Хороший, годный способ это perf_events, другие способы (ptrace, ftrace) плохие, негодные -- останавливают обследуемый процесс. Далее (по получению perf_events) начинается веселуха как из дампа эрланг-ноды достать стектрейс эрланг-машины. Автор добился некоторых успехов, однакось всё это один большой хак.

Остальные выступления интереса не представляли, да и общая усталость сказывается.

--

Некоторые заключительные соображения, по горячим следам. Вообще есть BEAM, виртуальная машина с уникальными свойствами (можно запускать миллионы процессов, каждый процесс с почтовым ящиком, встроенные сообщения, долгие годы работы в бою). В настоящий момент в BEAM компилируется 2,5 языка -- Erang, Elixir и LFE (Joxa). Elixir видится как средство привлечь ruby-разработчиков, которых много. По неведомым причинам довольно много стартапов начинают с Ruby, потом получают денег и тратят эти деньги на переписывание ruby в Ruby, с понятным результатом. В этот момент их можно пересадить на Elixir, а потом рассказать как готовить beam правильно. Что должно привлечь в экосистему новых людей и больше денег.

Всякие средства по генерации и преобразованию erlang-кода упираются в pretty printer, написанный в свое время John Hughes. У этого pp есть генетический дефект -- код он форматирует только одним образом, без вариантов. Кому нужны варианты могут погрузиться в монадичный код John Hughes (желающих не много). По понятным причинам такой подход большой популярности не снискал (т.к. первое что делают команды разработчиков так это выдумывают собственный coding style, и много, плодотворно его обсуждают годами). Поэтому pretty printer должен быть настраиваемый, в идеале автоматически понимающий coding style, и генерирующий код в таком стиле. Вопрос, в общем-то, открыт.

Также популярная тема для обсуждения это scaling. Модель Erlang вида full membership (все ноды знают о всех нодах, и постоянно друг друга опрашивают масштабируется весьма ограниченно), однако альтернативы весьма туманны, но хочется всем.

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

--

Things to take away in 2016:
1. tracing
2. hex.pm/rebar3 (остальное выкинуть)
3. elixir<->erlang

источник

Пт, 9 сент, 2016, 00:19
EUC 2016 Day 1

Erlang user conference 2016, Day 1, выборочно.

Итак, выступает Fred Hebert. Проникновенно рассказывает какой ужасный в Erlang тулинг, особенно в сравнении с. Трудно поспорить. В Elixir тулинг лучше, но есть куда развиваться. Критикует проекты на github: куча клонов, нет документации и примеров, агитирует в пользу hex.pm. Разумно, да. Каждый публичный проект, с точки зрения Фреда, должен содержать ответы на следующие вопросы: что это, для чего это, зачем это, почему это, и для кого это. Без такого документа проектом пользоваться никто не будет, так что можно не выкладывать (можно подумать с документом будут). На вопрос кто это всё будет оплачивать Фред отвечает что никто, типа вы же сами себе время сэкономите на нубах. Ну-ну.

Трейсинг в Erlang. Рассказывает Lukas Larrson, улучшатель: в релизе 19 существенные улучшения по сравнению с предыдущими релизами. Ранее все сообщения трейсинга помещались в одну очередь из которой выгребал один тред. Сделано это так было для того чтобы избежать дедлоков, теперь переделано, и можно трейсить невозбранно (после того как удастся осилить match specs, хе-хе). Идея применять трейсинг вместо расстановки вывода отладки видится весьма продуктивной: трейсер можно настраивать по-процессно, по-модульно и вообще задавать условия на аргументы. Вообще унутре у них там неонка: в теле match specs можно писать небольшие программы, типа собирать сообщения в цепочки, и прочее.

Andreas Löscher весьма продолжительно рассказывает как они применили proper к nif, путем генерации стабов из h-файлов. Генератор называется nifty. В принципе можно было бы уместить в одно предложение.

CRDT. Рассказывает Annette Bieniusa, исследовательский проект Antidote на деньги Евросоюза. Берем CRDT, навешиваем на них транзакции, пытаемся собрать и всё это запустить. Трудности с поиском желающих писать на Erlang студентов, впрочем, преодоленные. Призывает всех желающих, как разработчиков, так и потенциальных пользователей. После применения dialyzer и c_unit качество кода значительно улучшилось. Примеры из социальных сетей, пользователь Алиса имеет в друзьях Боба, а потом не имеет (не надоело еще?). Поиска ещё нет потому что это сложно, так что пока просто KV.

LFE, рассказывает Robert Virdig. Берем BEAM, и LISP. Получается LISP обогащенный примитивами BEAM: типы данных, pattern matching. Потому что Virdig любит LISP и Erlang. And because he can. Есть существенные недоделки, но пользоваться уже можно. Вроде бы используется в двух местах. Некоторый смысл во всём этом есть -- получить метапрограммирование lisp из коробки, поверх OTP и pattern matching. Ну и регулярный синтаксис LISP, вместо кракозябров Erlang.

Как не надо писать на Erlang, рассказывает Erik Stenman, с примерами. Функция, которая строит все перестановки слов в некотором предложении внезапно съедает всю память (на предложениях с числом слов 12), и хочет еще, нода падает. Печаль. Разборщик XML вываливается с ошибкой, при попытке вывести эту ошибку в лог вместе с документом память не менее внезапно кончается (т.к. происходит разворачивание гигантского дерева с общими фрагментами в строку). После апгрейда Erlang система начала внезапно притормаживать: одни разработчики пишут в стиле let it crash, другие заворачивают всё в try/catch с выводом stacktrace. Внезапно 40k/sec вызовов stacktrace притормаживают весь сервер, из-за улучшений в get_stacktrace (добавили номера строк). При попытке загрузить модуль бизнес-логики нода падает. Потому что в модуле бизнес-логики слишком много try/catch, количество которых было захардкожено в 16k (уже улучшили, так что можно продолжать в том же духе).
Призывает не передавать параметрами имя модуля и функции, не изобретать dsl, не пользоваться parse transform и прочей ересью: подумайте о бедных инженерах, которые будут всё это поддерживать годами, пишите читаемый код. Ну-ну.

Как все это было, рассказывают хором Jane Walerud, Mike Williams, Joe Armstrong, Robert Virding и Garrett Smith. Рассказ посвящен созданию Erlang: фирму Eriksson убедили создать cs-лабораторию (потому что другие лаборатории уже были, включая лабораторию по паянию (soldering)), в которой означенные товарищи резвились невозбранно многие годы (имея целью запрограммировать автоматическую телефонную станцию). Спустя долгие годы когда Erlang стал более-менее похож на Erlang руководство Eriksson в лице CTO сообщило что Erlang не нужен, и запретило использовать внутри компании, и видимо не возражало против публикации как open source. Во всяком случае удалось убедить. Теперь приходится соответствовать. Ценные советы начинающим: учите разные языки (с разными подходами), учите математику и физику потому что это развивает мозг и способности решать проблемы систематически. Что можно было бы сделать по другому? Снизить входной барьер для Erlang изначально, как думает Jane Walerud. Однако Mike Williams активно возражает: понабегут идиоты, и толку от них (чем еще явно противоречит открывающему выступлению Фреда). Jane Walerud рассказывает о том, что знать что-либо недостаточно, надо еще уметь людей убеждать. Убеждение людей тренируемый навык, советует читать и применять книгу Influence, Robert Cialdini. Joe Armstrong активно соглашается, сообщая что был не прав, спорил и думал по другому (типа один технарь всегда поймет другого), а теперь вот передумал и полностью согласен.

Я лично согласен с ними обоими: технарей уметь убеждать навык просто необходимый для выживания и душевного равновесия. В противном случае придется лепить что то нелепое и противное потому что заведено так.

источник

Ср, 7 сент, 2016, 10:22
К предыдущему.

Между тем выяснять надо не кто с кем спал и в каком порядке и позах, а следующее:

1. Использовалось ли служебное положение с целью извлечения личной выгоды (в личной жизни, хе-хе)?
2. Были ли нарушены статьи УК?

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

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

источник

10 most recent