You are viewing metaclass

Заповедник репрессивной психиатрии
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in metaclass' LiveJournal:

    [ << Previous 20 ]
    Friday, December 19th, 2014
    3:17 am
    Бездны творчества
    Запустил RabbitMQ+STOMP плагин, Apache.NMS STOMP клиента и дельфи STOMP-клиента.

    Даже протокол, у которого спецификация из десятка страниц https://stomp.github.io/stomp-specification-1.2.html эти товарищи умудрились сделать несовместимым между кроликом, ActiveMQ и клиентами, это не считая просто тупых ошибок вида "забыли обработать %nn коды в uri" и тому подобного.

    Клиенты явно тестировались и подгонялись под ActiveMQ.
    На кролике - дельфи виснет на чтении сети. NET клиент виснет на ERROR ответе, если логин неправильный, не показывая ошибок. После исправления - дохнет на парсере каких-то чисел, выдранных из строки message-id, явно прибитых гвоздями к внутренним кишкам представления ID внутри брокера.
    Thursday, December 18th, 2014
    4:44 pm
    Ад сексизма в ИТ
    Приходят на собеседование три женщины:
    Одна знает хаскель
    Вторая знает C#,F# и MSBuild
    Третья знает кложурь, линукс и жабаскрипт.
    Какую возьмут на работу?

    Правильный ответ: ту у которой сиськи больше собеседующему понравятся.
    Еще более правильный ответ: всех трех, потому что сисек много не бывает потребность в хороших работниках всегда есть.
    Friday, December 12th, 2014
    5:07 pm
    Интернет вещей
    Где-то 3-5 лет назад меня начала напрягать тенденция вида "приложения в веб", "игры на консоль", "музыку на плеер", "ваш персональный компьютер больше не ваш персональный", "десктоп заменяем мобильными приложениями" и прочая такая сегрегация и надругательство над идеей универсального компьютера.

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

    Извращенные варианты вида "ssh сервер на телефоне, connect bot на линуксовый сервер домой, с него smbclient на виндовый комп" не рассматриваем, это уныние, без клавиатуры неработоспособное (я только что в магазине чуть не сдурел вспоминать пароль к приватному ключу на домашний ssh сервер, чтобы посмотреть одну запись в записной книжке, которая сама тоже лежит под не менее сложным паролем).

    В норме, даже если раскидать все приложения по личным железякам - оно должно быть без красноглазых извратов доступно с любой относительно интеллектуальной железяки - компа (с виндой или линуксом), консоль, планшет, телефон. Как этого добится без клавиатуры с esc/tab(долбаное автодополнение в башах)/ctrl/alt/shift - я пока не придумал.

    Причем, если по хорошему - за пределы локалки/vpn это взаимодействие выходить не должно, т.е. никаких облаков под контролем NSA, ФБР, микрософта с гуглом и прочих государственных органов любых государств, а либо распределенная система, либо свой домашний сервак.

    Т.е. универсальный персональный компьютер остается таковым, только распространяясь по десяткам железяк производительностью от SOHO-сервера до stm32 с подключенным датчиком газа, влаги и температуры и кнопкой концевика на окне или водопроводно-газовом кране.
    Thursday, December 11th, 2014
    8:10 pm
    Rule of thumb
    Если в стандарте, документации или технологии упоминаются гуиды или в структурах присутствуют поля вида object_id, class_id, instance_id - с 99% вероятностью это будет дичайше непригодное к использованию ИТ-шайзе, придуманное людьми, которые не умеют делать нормальные API (или, что почти эквивалентно - не понимают, что такое системы типов) и вместо того чтобы подумать - делают "универсальное решение".
    Tuesday, December 9th, 2014
    1:39 am
    Как изъять фан из программирования?
    Ответ прост: сделать его промышленно-надежным. Вкинуть корявые баг-трекеры, инопланетные системы контроля версий, системы управления зависимостями и сборки, юнит-тесты и CI и даже самая маленькая интересная задача превращается в гребаного монстра, на который нужно 20 страниц документации только для того, чтобы можно было поправить мелкий баг.

    http://www.reddit.com/r/programming/comments/2bi4yz/just_let_me_code/

    PS: там в комментариях еще есть интересно про CI/CD системы.

    CD/CI is a good case in point. I've had quite some experience with a lot of difference systems by now, and all of them without exception are a pain to maintain and cost lots of time to use well. I've setup, used & maintained systems based on CC.NET, Hudson+Jenkins, Travis CI & Circle CI. Getting a CI system to really work well costs a lot of time. It's worth it - no question - but it's a huge investment nevertheless. And lots of that investment is ultimately just working around bugs+limitations. Passing around build artifacts is a pain. Managing differing configurations is a pain. This is a solved problem: we have these things called methods that have parameters and even higher-order functions in most programming languages, yet in a CI you tend to need to do lots of messy hackery just to pass around parameters cleanly.


    Если бы вы знали, КАК вот это все бесит - это слов нет. Сидишь пишешь на нормальном языке высокого уровня, с нормальными правилами видимости переменных, с всякими проверками компилятора на тему пропущенных переменных и прочим таким.
    И тут ХЕРАК, надо делать билд и тесты - переключаешься например на MSBuild или CC.Net - и там нет даже тех мелочей, которые есть в самых наираздинамических из динамических языков - ошибся в одной букве, переменная стала другой - похер, работаем, только с пустым значением. Методов нет, объектов нет, функций нет, переменные все глобальные, причем одна часть из них взята из системного окружения, вторая создается на ходу, третья создается где-то в проекте, импортированном из проекта, импортированном из проекта, импортированном из проекта, импортированном из проекта.
    Более ad-hoc говна, чем сборочные системы, сложно себе представить, ибо они все выросли из всякого уебища вроде make-файлов, косоручных бат-sh-cmd-файлов и несут на себе их родовой грех.
    Sunday, December 7th, 2014
    4:16 pm
    Политота от очередей
    У автора nanomsg в блоге, оказывается, много забавного на околоэкономические темы:
    http://250bpm.com/blog:29 - про трагедию общин и ее интерпретацию в стиле "общинное владение это плохо"
    http://250bpm.com/blog:32 - про то, что эффективность экономики надо снижать, или все умрут.
    и прочее такое.
    Friday, December 5th, 2014
    12:26 pm
    Гит, zeromq и двойная бухгалтерия
    Недавно vit_r писал про то, что гит не пригоден для промышленной разработки, т.к. позволяет вести "двойную бухгалтерию".
    Насколько я понял, речь шла про то, что код на рабочем месте разработчика, код в мастере и код в релизе могут быть совершенно разными, причем инструментом это прямо рекомендуется. Ну, по крайней мере, именно это меня привлекает в гите - мне постоянно нужны экспериментальные ветки в стиле "сохранился, заглянул за угол, увидел что там босс-монстр, загрузился и пошел другим путем".

    Внезапно, в процессе изучения ZeroMQ я наткнулся на прямую иллюстрацию такой двойной бухгалтерии.
    Вот например, стабильная версия 4.0.5, исходники под винду: http://download.zeromq.org/zeromq-4.0.5.zip
    Так вот, последние 230 коммитов в changelog этой версии напрочь отсутствуют в https://github.com/zeromq/libzmq
    Более того, в этой репе существует сугубо две ветки и ни одного тэга.

    Ну, то что мастер не собирается в 2010 студии из-за зависимости от крипто-либы sodium, а rc4.1.0 не собирается из-за отсутствующих файлов msbuild, это тащемта уже мелочи. Но по крайней мере, rc4.1.0 есть в гите.
    Thursday, December 4th, 2014
    3:44 pm
    nanomsg, zeromq и ассерты
    Продолжаю вникать в легковесные MQ библиотеки и ужасаюсь одной всепроникающей идее - ассерты в релизном коде, буквально на каждый возможный косяк.
    С одной стороны, fail-fast это правильный подход, пусть супервизор процессов разбирается что дальше делать.
    С другой - abort или RaiseException на виндах кидают messagebox, а messagebox в виндосервисе, если нет чек-бокса "разрешить взаимодействие с десктопом", это гамон, такой процесс можно только убить, он больше не подчиняется указаниям от сервис-контроллера. То же самое - запуск процессов из task scheduler, этот мессаджбокс будет "где-то висеть" в гребенях сессии в которой запущены сервисы.

    Далее, нормальная методика при обработке ошибок: try {} catch(exception) { log(сообщение, параметры вызова, exception);throw}. Т.е. я по крайней мере, по логам узнаю, что привело к исключению (за исключением совсем плохих вещей, типа полной нехватки памяти, умершего железа или выдернутого езернет-провода).
    В случае же assert - у меня процесс сдыхает (и не дай бог в соседних потоках писать на диск или работать с железом), причем если супервизор, который может прочесть stderr и скопировать сообщение в свой лок,отсутствует - сообщение об ошибке уйдет в никуда.

    Судя по тому, как друг на друга псят Martin Sustrik и Pieter Hintjens, отзывам про либы и тому бардаку, который творится в коде nanomsg(например, комментарий вида: /* For some reason simple CancelIo doesn't seem to work here. We have to use CancelIoEx instead. */ в коде, из-за которого nanomsg вообще не запускается на 2003 и xp), ситуация с этими либами откровенно нехорошая.
    1:32 pm
    СЛАВА РОССИИ! СЛАВА ПУТИНУ! СЛАВА БОГУ!
    http://wizzard0.livejournal.com/477156.html?thread=4965604#t4965604
    Люди на полном серьезе защищают блокировку гитхаба и требуют от него подчинения безумным законам потусторонних стран.
    http://lionet.livejournal.com/133527.html
    А здесь наоборот - доказывается, что блокировка информационных ресурсов это бред. Правда, эти умные люди давно уехали.
    Tuesday, December 2nd, 2014
    5:27 pm
    Запретите им.
    Есть определенная категория виндо-админов, которые очень любят ставить программы.
    Например, на сервер БД поставить антивирус (с файловым монитором, конечно же), а еще заодно кульную прожку, которая делает вид, что защищает от usb-флешек.
    Причем антивирус настроен так, что в самое время активности пользователей БД (днем) начинает обновлятся, а потом сканировать все файлы на сервере.

    Я надеюсь все таки когда-нибудь сбежать либо от винды с ее админами, выросшими из эникеев, либо от продуктов, устанавливаемых на сервера клиентов.
    Хотя это деградация в плане качества, десктопный интранет-софт обычно работает быстрее и аккуратнее, чем всякое облачное-веб-серверное.
    1:50 pm
    All hail the Command Line
    http://www.quora.com/Do-people-still-write-and-compile-programs-from-the-command-line-instead-of-an-IDE-Why-or-why-not
    Я вот кстати, не люблю студию запускать, бесит тормозами.
    Но без "программирования-через-точечьку" тяжело, упомнить всю стандартную библиотеку какого-нибудь .NET тяжеловато.
    А в кложе почему-то достаточно вот этой странички http://clojure.org/cheatsheet и заглядывания в jar с исходниками. Или (doc какой-нибудь-идентификатор) в репле, частично заменяет точечьку, за исключением того что идентификатор нужно помнить.
    Monday, December 1st, 2014
    5:41 pm
    mysql
    Правильно ли я понимаю, что `created_on` datetime NOT NULL в создании таблицы mysql воспринимает чисто как рекомендацию, но вставлять null в такие поля разрешает?
    Или это у меня просто руби и прочая кложурь падают от значения "00-00-0000 00:00:00" которое он туда по умолчанию впихивает при инсерте?
    Sunday, November 30th, 2014
    7:26 pm
    Объектификация женщин в ИТ
    http://instagram.com/p/v-djgymOf3/
    http://photos-b.ak.instagram.com/hphotos-ak-xfa1/10817903_566251066839289_1176592364_n.jpg
    Феминисток бы туда радикальных, чтобы они порвали контору в клочья :)
    2:20 pm
    Срок жизни разработчика в проекте
    Кстати, вот недавно мне еще рассказали странного: средний срок участия разработчика(джуниора, вроде бы?) в проекте - около года. Потом он начинает считать себя опытным и уходит на другую работу, причем никакие стимулы не помогают его задержать.
    Из-за этого кольчатые черви-менеджеры и прочие коллаборационисты на службе у бизнеса не желают инвестировать время и ресурсы в обучение работников, что, в свою очередь, приводит к нежеланию делать проекты нормальными способами (отличными от "наговнякать на жабаскриптах силами десятка недоучек то, что в норме можно сделать парой человек и аккуратно")

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

    Мы тут имеем какой-то вариант на тему трагедии общин - бизнес нещадно эксплуатирует общественный ресурс (вменяемых разработчиков) не поддерживая его самовоспроизводство (в каком угодно виде, самообучения, обучения других, да и вообще тупо физического размножения). Отношения же между бизнесом и разработчиками - это дилемма заключенного, одни не хотят вкладываться в потенциального "изменника", второй видел в гробу интересы бизнеса, потому что у него дома дети не кормлены и жена мозг кушает.
    1:53 pm
    Рабам свободное время не положено
    http://blog.jcoglan.com/2013/11/15/why-github-is-not-your-cv/
    http://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-and-the-oss-community
    По ссылке полезная статья на тему "почему требования наличия гитхаба и участия в OSS в целом - бред".
    Вкратце: не у всех есть свободное время и возможность заниматься опенсорсом.

    В принципе, любая "свободная" деятельность (не обязательно касающаяся софта) мгновенно перестает быть такой, когда за нее начинают давать какие-то вознаграждения или делают ее обязанностью.
    И, сколько бы не рыдали кольчатые менеджеры от программирования от этого, программисты делают свою работу лучше, когда над ними не стоят бабло, дедлайны, бизнес, жесткие рамки, "обязательства перед комьюнити" и прочая потусторонняя хрень.
    Wednesday, November 26th, 2014
    5:53 pm
    Скрестим ежа с ужом!
    Посетила мысль - чтобы снизить нагрузку на мозг себя и других, в кложе использовать префиксы для идентификаторов переменных навроде венгерской нотации. Чтобы по переменной было сразу видно - что за структура данных в ней живет и где объявлена.
    Например - gh-* - global hash-map, ga-* - global array, gv-* - global value и прочее такое.
    При отсутствии IDE с функцией анализа AST языка и "перейти к определению" это позволило бы хоть как-то упростить себе жизнь.
    5:23 pm
    Yan Cui и F#
    Нашел презенташку выступления, которое пропустил на конференции:
    http://www.slideshare.net/theburningmonk/learn-you-to-tame-complex-apis-with-fpowered-dsls
    Оказывается, там используется FParsec для клепания DSL, очень ок.
    Tuesday, November 25th, 2014
    11:33 pm
    Инструментация кода логгерами.
    Бредовые идеи про отладку программ на ходу.

    1. макрос/плагин компилятора, вызываемый при компиляции вызова любой функции или метода,а так же при компиляции тела этой функции.
    2. макрос строит дерево вызовов функций и делает из него статическую структуру в памяти программы, с флагом isDebug на каждую функцию. Структура доступа через какой-нибудь дико профайлинговый рантайм API
    3. в каждую функцию макрос добавляет проверку ее флага и если он включен - вывод уникального идентификатора стек-трейса вызова функции, параметров при вызове и вывод результата при выходе, в логи.
    4. чтобы стек-трейс не генерить в рантайме - в каждый вызов при компиляции добавляется статическая информация, "откуда меня вызвали", в виде ссылки на граф вариантов вызова этой функции.

    Ежели функции ленивые - то вместо стек-трейса будет что-нибудь вроде "где thunk создали, а где зафорсили", но это надо подумать, как такое представить наглядным образом.
    Monday, November 24th, 2014
    11:26 pm
    Виртуалки и время
    На серверах клиентов, установленных на виртуальных машинах, постоянно смещается время.
    Какие-то заморочки, с одновременной синхронизацией с временем хост-машины, гонками за таймерами и встроенной синхронизацией в винде.
    Причем, пока я не вникал - это и в vmware и в hyper-v так, или только у кого-то одного.
    10:58 pm
    Диверсионная PR-акция
    А прорекламируйте кто Леннарту Поттерингу хаскель, а?
    Я уверен, что именно он способен втащить его в кишки линукса, а потом мы будем менеджерам показывать - вот, на хаскеле линукс написан, значит и опердени можно :)

    PS: кстати, а ведь Поттеринг хороший продажник. Чтобы впарить индустрии единое решение - оно должно быть именно таким - с бинарными логами и монолитное на сишечьке. Иначе ж ведь обязательно нобигут олдскульные юниксоиды и в припадке юникс-вея наделают форков в меру своего понимания, и вместо одного продукта всем придется интегрироваться с гребаным десятком недоделанных вариаций. А так - хочешь поучаствовать - сишечьку и бинарные структуры в зубы и никакого, блядь, говна типа баша/няша/крымнаша и парсеров на седо-авках, с пиздиллиардом доморощенных вариаций на тему "как нам экранировать кавычки внутри кавычек внутри скобок внутри регэкспов".
    Собственно, вот этот текстово-пайпово-башескриптовый юникс-вей, он и есть одна из причин бардака в линуксятине - любой школьник при желании может намутить свой уберскрипт, не задумываясь ни о деплойменте, ни о совместимости, ни об эволюции оного вместе с версиями дистрибутива.
[ << Previous 20 ]
About LiveJournal.com