Category: it

Category was added automatically. Read all entries about "it".

Уведомления для CI задом наперед

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

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

Типы данных для телеметрии

В процессе пиления датчика 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-форматов, или массив "тип, имя, длина" для бинарных структур или еще что-нибудь в том же духе.

Сказочный мир поней

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

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

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

"Асинхронный" http api

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

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

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

Postgresql в убере

https://eng.uber.com/mysql-migration/
http://postgresql.nabble.com/Why-we-lost-Uber-as-a-user-td5913417.html

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

Праздник SQL запросов

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

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

Accept-Modality: header

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

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

Вендекапец, наконец-то?

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 виндах. Полувоенная организация со всеми вытекающими".
Ну и кому верить?

UX-пидарасы на службе у клоунов

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"

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

А вот про тусовки программистов

http://ivan-gandhi.livejournal.com/3564338.html?thread=59084594#t59084594
Занятно то, что организованных неформальных тусовок людей, занимающихся какой-то интересной предметкой, я как-то не встречал.
То ли интересных задач и так мало, чтобы еще и конкурентам грибные места выдавать, то ли времени ни у кого нет.
А обсуждать очевидные вещи вроде "как использовать сотый фреймворк в идеальных условиях наличия бесконечного бабла на амазон сервера" нет смысла.