Заповедник репрессивной психиатрии

Вспомнил зачем нужен ЖЖ
metaclass
Это единственное место, где гугл находит фразу "рисовать чертей со спины".
К сожалению, я забыл первоисточник этой фразы, но точно известно что это кому-то приснилось.
Уважаемый гугловский алгоритм pagerank, пожалуйста обновите свой набор данных свежей фразой и ссылками: Козлопитоны винторогие

ЖЖ больше не нужен
metaclass
В связи с тем, что ЖЖ теперь с концами уехал в мордор, надо переселится в DW, а там видно будет.
Впрочем, сюда уже почти никто не пишет, так что разницы уже нет.

Firebird 3.0
metaclass
Как известно, после многолетних трудов был выпущен Firebird 3.0.
Если подключаться к нему клиентом от Firebird 2.5 то он выдает сообщение об ошибке "connection rejected by remote interface".
Если я правильно понимаю, это старый клиент так реагирует, когда его сервер посылает, когда обнаруживает устаревший wire-протокол, который по умолчанию запрещен (его надо разрешать в firebird.conf или использовать клиент от 3.0): https://stackoverflow.com/questions/30390465/connection-rejected-by-remote-interface-connecting-to-firebird-3-with-pdo

Еще в нем при инсталяции руками надо подключаться локально к произвольной базе (в примерах используется демо-база employee) и создавать юзера SYSDBA на весь сервер. Немного смущает что для манипуляции общей базой юзеров надо подключаться к частной базе - нелогично.
И еще надо давать пользователям - владельцам БД явные права на создание баз.

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

"Как много нам открытий чудных..."
metaclass
Недавно я узнал, что среди людей моего круга (всякого рода программисты-сисадмины-инженеры-ученые) существуют люди, которых устраивает отсутствие общественного порядка. Как то: насрано в подъездах, надписи на стенах, бухающие гопники, бомжи, машины на зеленой зоне, мусор выбрасываемый на землю и прочая такая нечисть.
А вот наведение порядка посредством установки камер видеонаблюдения, железных дверей и тотального полицейского сапога с zero-tolerance к мелким правонарушениям - не устраивает, ограничивает их вымышленную "свободу" вплоть до того, что они готовы ломать камеры и домофоны.

Уведомления для CI задом наперед
metaclass
Столкнулся тут с очередным порождением сумеречного хипстерского гения - CI сервер drone.io.
Сам сервер живет внутри докер-образа, собирает и тестирует софт тоже внутри докера - т.е. к одной хипсторятине добавляется еще и вторая - докер.
Далее, если я правильно понял из просмотра документации краем глаза - чтобы узнавать про изменения в репозиториях, этой софтине нужно зарегистрировать "приложение" в гитхабе, которому надо дать доступ к репозиториям и оно на них настроит хуки, которые будут дергать оный сервер за торчащий в интернет http-endpoint. Т.е. запустить его внутри локалки - это надо заниматься пробросом портов, а еще надо бы выяснить какими средствами аутентификации оно прикрыто (вроде OAuth, но с ходу во всей это конструкции из гитхаба, докеров, приложения и хипстософта непонятно, кто есть кто).

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

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

Поначалу данные в udp-пакетах с датчика выглядели так: 2016-10-29T21:26:40.990599,ff8601e440402eb92e
Потом вот так, чтобы сразу видеть концентрацию: 2016-10-29T23:48:35.310594,ff86027840042e305e,632

А потом я решил это дело засунуть сразу в эластик с кибаной, чтобы рисовать графики, причем у нас туда данные (мониторинг нашего софта) идут в виде json-объектов в сообщениях через mq-сервер. Наиболее прямой путь такое делать - это поля от датчика разложить в виде полей json-объекта, тогда эластик автодетектит типы полей и все становится сразу доступным для запросов и графиков.
Но прога, которая транслирует udp-пакеты в mq сообщения - вообще говоря, тестовый/отладочный клиент от моей mq-либы и впихивать в нее прибитые гвоздями имена полей от одного конкретного датчика - лютый грех, такой код должен быть универсальным, очевидно.
Поэтому формат пакета превратился в: "utc=2016-10-30T12:04:08.740605,hex=ff8602db40402e30bf,co2=731", а программа просто конвертирует это в json и добивает служебными полями от себя (уникальный идентификатор ноды, тип сообщения, и прочее такое). В таком варианте я смогу, например, добавить еще пакетов от других датчиков - давления, освещенности, влажности, радиации и температуры, не переделывая транслятор.

Фактически, это структурный тип данных - смысл данных определяется тем, какие в нем есть поля. Это очень удобно для обобщенной обработки.

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

LinkIt Smart 7688 и датчик CO2
metaclass
Дошли наконец-то руки запустить очередной бриколяж - датчики CO2 mh-z19 (https://geektimes.ru/post/272090/)
Наиболее прямым способом, без ордуин и прочего такого оказалось завести микрокомпутер с OpenWRT на борту - LinkIt Smart 7688 (http://wiki.seeedstudio.com/wiki/LinkIt_Smart_7688).

Подключение достаточно влоб: 3.3v usb-uart на пины земли, P9 и P8 для отладки загрузки c serial консоли, сам датчик на пины земли, +5вольт питания и P18(RX linkit)-P3 (TX датчика) P19(TX linkit)-P2(RX датчика).

USB-UART, похоже желательно подключать после питания - а то он через TX и защитные диоды начинает пытаться питать все это устройство, по крайней мере светодиод питания загорается сразу.

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

В принципе, можно и без консоли - при старте этот девайс включает точку доступа, к которой можно подключится и на адресе 192.168.100.1 найти его веб-морду и переключить в режим wifi-клиента и подключить к своей сети, или открыть полноценный веб-интерфейс openwrt, но с консолью удобнее, особенно когда оно с ума сходит.

Дольше всего времени ушло на то, чтобы чтобы разобраться с wifi - который не умеет каналы выше 11 по умолчанию, а у меня модем сел на 13 канал и его вообще не было видно и на то, чтобы вспомнить питон и как на нем отправить массив байт в uart и получить обратно ответ (2 и 3 питоны ведут себя по разному).

Тестовая прога на питоне: https://gist.github.com/metametaclass/fdcd53e4e699ed5a0a780bc74a8a5eca, отправляет результат опроса по udp на комп, где запущен nc на порту 49344 и всякие тестовые прожки на 49345.

Получается вот такая картинка, ночью - с закрытой дверью, днем с открытой и датчиком, на который я дышу: http://www.cacodaemon.org/co2/20161029_212640_20161030_153355.png

Сказочный мир поней
metaclass
http://ru-sysadmins.livejournal.com/2560263.html?thread=47788807&style=mine#t47788807
"На месяц труда более-менее квалифицированного специалиста, понимающего, что происходит на уровне СУБД, можно взять гигов 128 оперативки. Если не больше - я несколько не в курсе текущих цен."

Покажите мне, где такое бывает, а? Пока все что я вижу - это 1-2 месяца на согласование с заказчиками "нужно докинуть памяти/дисков/процессоров", а потом еще 1-2 месяца на то, чтобы это дошло до одминов, а потом еще и истерики с их стороны "почему у вас память на 100% не используется и почему у вас бэкапы на СТРАШНО ДОРОГОМ И БЫСТРОМ диске, а не на внешнем говносторадже". И это у тех заказчиков, где есть деньги на "докинуть еще памяти", а то у большинства белорусских госконтор истерика начинается уже на этапе "надо купить нормальный сервер".

PS: Расходимся, нас наебали: "Серьезно - вы знаете, проблемы SMB мне не интересны. Пусть идут в SAAS".

Майндфак стал нормой жизни
metaclass
Для разнообразия вместо того чтобы работать круглые сутки дома, хожу на работу и с работы.
За то время, пока я не был на улице, оказалось, что майндфак стал нормой жизни.
Во-первых, 99% людей в транспорте долбятся в смартфоны нечеловеческих размеров, кто в игрушки, кто в соцсети.

Во-вторых, вот висит афиша, на ней безумные надписи вроде "Арт-пикник в парке Дримленд" из которых сложно понять, что рекламируется, а внизу нарисована либо двухголовая девушка, по которой видно, что Богатый Внутренний Мир ей проел все мозги, либо двухголовый негр с гитарой на одной голове и выпученными глазами на другой.

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

И хэштеги, хэштеги, хэштеги на всех рекламах и афишах, типа кто-то пойдет этот хештэг вбивать в поиск.

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

Тул или пару строчек на баше?
metaclass
https://github.com/ahmetalpbalkan/govvv
Софтина на голанге, вызывающая go build с параметрами, устанавливающими переменные с версией, датой сборки, идентификатором ревизии гита и прочим таким.
Я бы в жизни не додумался искать такую софтину, сделал бы в скрипте вызов $(git rev-parse HEAD) и впихнул ее вывод в -ldflags, а вот однако ж - бывает. Хрен знает, насколько хорошо тащить все червей из всех закоулков гитхаба ради условного "взять готовое решение".

"Асинхронный" http api
metaclass
Вчера был на тусовке junolab, где их главные гуру рассказывали, как у них бекенд устроен.
В частности, на входе у них стоят гейтвеи с обычным http протоколом и минимальным набором фич - валидация, проверка авторизации по токенам и прочее такое, которые перекидывают запрос в MQ (nats.io).

При этом, насколько я понял, асинхронность там реализована поверх обычного http, без всяких http2, веб-сокетов и прочих не везде работающих протоколов - т.е. клиент api сначала делает запрос к гейтвею, ему сразу говорят - 200 ок, а потом он должен, по идее, дальше опрашивать гейтвей, пока для него из MQ придет ответ от микросервисов. Или у них там ответы от сервера бесконечно идут, я сходу не понял (т.е. ответ без content-length и соединение просто ждет пока придет что-нибудь, не помню, как эта техника называется).

В принципе, если keep-alive и соединение не обрывается - то реализация дуплексного протокола поверх синхронного http вроде приемлемая. Единственное, что в случае бесконечного ответа - если сервер и клиент долго ничего друг другу не говорят - промежуточные NAT и прочая сетевая муть могут соединение забыть, причем пока TCP keep-alive не проснется (а это два часа по умолчанию, вроде) - это обнаружено той стороной, которая молчит и ждет, не будет. Но теоретически это какие-то heart-beat слать можно со стороны сервера и запросы со стороны клиента.

Все правильно написано
metaclass
https://www.facebook.com/apazhe/posts/10155034492578102

"Фэйсбук в той или иной степени ненавидят все, кого я знаю. И при этом все, кого я знаю, имеют аккаунты в фэйсбуке. Потому что у всех, кого они знают, есть аккаунты в фэйсбуке. Ну да, ну да.

Как так вышло? Каким образом мы стали заложниками этого вороватого дегенерата, Марка Цукерберга? Как мы оказались в этой вонючей политкорректной левацкой помойке, модерируемой азиатскими тараканами за полрубля в час?"

Postgresql в убере
metaclass
https://eng.uber.com/mysql-migration/
http://postgresql.nabble.com/Why-we-lost-Uber-as-a-user-td5913417.html

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

C, магия макросов и отладка
metaclass
Судя по тому, что я наблюдаю в либах на Си (например, libuv), магия из макросов весьма популярна, в том числе и для реализации разного рода структур данных вроде списков, хэшей (https://troydhanson.github.io/uthash/) и прочего такого.

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

фейсбук-rape, продолжение
metaclass
http://jolaf.livejournal.com/768247.html
Успешный ебарь через N лет, прочитав хэштег #янебоюсьсказать, вспомнил, что когда-то уломал девушку на поебаться, не расслышав условное "нет".
Как по мне - так ситуация, в которой влюбленная девушка отказывает в сексе из соображений "не хочу быть еще одной победой успешного ебаря" - возможна только в вывернутой наизнанку культуре, пропитанной насквозь христианской моралью.
Вот спрашивается, что эта девушка объективно потеряла, переспав с автором поста? Психологический вред проистекает не из того, что ее условное "нет" проигнорили, а из того, что в голову вбиты тыщи тупых стереотипов на тему секса, девственности и прочего такого.

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

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

Общество потребления
metaclass
Каждый раз, когда я хожу по торговым центрам или торговым кварталам, меня очень сильно напрягают несколько вещей. Во-первых, то, что 99% магазинов торгуют едой или одеждой, во-вторых, то, что все, там продающееся, практически не нужно, а то что нужно - можно задолбаться искать среди ненужного.
Особенно вымораживают магазины ненужных сувениров в туристических городках. Все такое блестящее, разноцветное и интересное, но нахрен не нужное.
Одновременно свихнуться на почве минималистичного образа жизни и страдать от детских психических травм жизни в СССР, в котором ничего не было и любая прикольная или сложноустроенная вещица была поводом для радости - это жесть.
А еще практически нигде нет магазинов для DIY. В Варне единственный магазин, отличный от общепринятого - specrc, занятный гибрид жданов и авиамодельного кружка, в котором, при этом, выбор в 10 раз больше чем в алекс-весте, например. В среднем городе найти что-нибудь интересное и отличающееся от "магазин для ремонта бетонных хат белорусиками", практически нереально. Похоже, все переключились на прямой заказ из китайпосылторга.

фейсбук-rape
metaclass
Надо завязывать с чтением хэштега #янебоюсьсказать в фейсбуке, а то я во первых, уже почти поверил, что я и есть тот самый мизогинист-насильник, про которого там рассказывают, а во-вторых, мне вокруг начинают эти самые насильники мерещиться.

Язык ненависти
metaclass
http://mediakritika.by/article/3964/issledovanie-gendernye-aspekty-yazyka-vrazhdy-v-belarusskih-media

Как же удолбали эти защитники мигрантов то, а. Речь им в статьях не нравится, видите ли "конструирует мигранта как опасного". Что там на самом деле - опасный он, не опасный, статистика преступлений и прочее - полностью побоку, главное вслух про это не говорить никогда.

Праздник SQL запросов
metaclass
Если по-хорошему, то деноминация должна проводиться по велению задней левой пятки руководителя государства и заключаться в вызове SQL консоли и вводе запроса: "все поля с типом "сумма денег" поделить на коэффициент который сегодня пришел в голову". Конечно же, все базы данных должны быть с нормальной типизацией, а не так, что в поле numeric(18,4) хранится все, что в придет в голову, начиная от суммы, заканчивая координатами и размерами сисек.

И при этом должны меняться сразу все ценники (электронные) в магазинах, все 1С, SAP R/3 и прочие поделия адептов 4 действий арифметики.
И стоить это должно сугубо == стоимости электроэнергии потраченной на преобразование :)

Accept-Modality: header
metaclass
По мотивам просмотра вот этого http://www.artlebedev.ru/erlyvideo/process/ пришло в голову, что в браузерах должна быть опция "предпочительное представление" с вариантами "исходный код, текст, картинки, звук, видео" которая транслируется в специальный хидер, согласно которому меняется представление заглавной страницы сайта.

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

Вендекапец, наконец-то?
metaclass
https://www.facebook.com/sloneus/posts/636050909879742?comment_id=636074829877350&reply_comment_id=636385283179638&comment_tracking=%7B%22tn%22%3A%22R%22%7D

Слушайте, а чо слонеус и лапшин утверждают что винды в госсекторе больше нет и не будет?
Как по мне - так скорее бы это произошло (проще обслуживать, меньше тупизны вроде антивирусов на серверах БД, опять же - лучше бы бабло которое у клиентов идет на виндолицензии себе в карман положить, на доработки и обслуживание всякое), но по моим наблюдениям в РБ даже если где линукс в госконторах и есть - то там его все равно готовить не умеют, потому что доморощенные линуксоиды из БГУИР и прочих институтов инженеров заборостроения, которых не забрали в аутсорс и эмиграцию - это админы локалхостов в основном.

PS: соседний псто http://ru-sysadmins.livejournal.com/2524542.html: "Из минусов - Всё крутится на 2003 и 2008 виндах. Полувоенная организация со всеми вытекающими".
Ну и кому верить?

Опенсорс как рыночный вред.
metaclass
Возникла интересная дилемма тут, на тему свободы софта и опенсорса.
Этично ли сделать опенсорсный тул, который снизит доход продавцов аналогичного коммерческого тула, оставив им только оплату за услуги и консультации? А если у продавцов этого коммерческого часть дохода идет на разработку смежного бесплатного опенсорсного софта?

С одной стороны, торговать воздухом - как-то не хорошо. С другой - практически все, начиная от банкиров и чиновников и заканчивая всякими установщиками окон, официальными сервисами автомобилей и агентами по недвижимости занимаются тем, что продают воздух (в т.ч. и доступ к проприетарным данным). А уже как торгуют воздухом всякие SAP/Oracle/IBM/Google/Facebook, так вообще никому не снилось.

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

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

UX-пидарасы на службе у клоунов
metaclass
https://bugs.chromium.org/p/chromium/issues/detail?id=477424
В хроме нет API, которое позволило бы сделать расширение с вертикальными табами (не в отдельном окне, не в попапе, а в основном, рядом с контентом).
Попытку обсудить его реализацию закрыли WontFix с резолюцией "In the end we decided that the WontFix resolution was more in keeping with Chrome's core value of simplicity"

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

Доставайте голангистов из гробов
metaclass
Есть вопросы по языку для интеллектуального большинства:
1) Если я форкаю чужую библиотеку, а она унутре себя ссылается на сама себя - как с этим работать? SO советует сначала делать go get оригинальной, затем подключать git remote свою репу и потом править. Т.е. на всех других рабочих местах нужно будет повторять то же самое. По идее, это должен менеджер зависимостей делать в конечном итоге?

2) Что за херня с логгерами и обработкой в этом вашем голанге? В большинстве либ обработка ошибок сводится к log.Println(err) где err - строка в стиле "у вас произошла херня", без объяснений что, где и как, причем способа привязать логгер к пакету я чо-то не нашел.

?

Log in

No account? Create an account