?

Log in

No account? Create an account
Кирилл Кирсанов [entries|archive|friends|userinfo]
Кирилл Кирсанов

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Внезапное открытие. [Jan. 4th, 2018|12:39 pm]
Кирилл Кирсанов
В самой популярной распределенной очереди заданий для Python -
http://www.celeryproject.org нет планировщика. Т.е. там банальный FIFO.

Так что придется делать свой.
linkpost comment

Рабочее [Dec. 26th, 2017|10:32 am]
Кирилл Кирсанов
Уже год отработал в банке(TM).

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

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



PS: XML-WSDL умеет многое, но практически никакая поддержка вне Java и килобайты XML на малейший чих заставляют страдать.
linkpost comment

Просто день открытий какой-то! [Oct. 3rd, 2017|11:20 pm]
Кирилл Кирсанов
1) + на float не ассоциативный.

2) Если приложение которое насилует БД ускорить по CPU в 2 раза, то БД будет насиловаться в 2 раза интенсивнее!
link13 comments|post comment

Жизнь это боль. [Sep. 21st, 2017|11:13 pm]
Кирилл Кирсанов
AVRO IDL поддерживает не все логические типы из AVRO Schema - https://avro.apache.org/docs/1.8.2/idl.html#logical_types
linkpost comment

Система массового унижения. [Sep. 21st, 2017|01:24 am]
Кирилл Кирсанов
Строю систему на 100500 микросервисах и питоне. Как обычно всё готовое - плохое и нужно делать своё.

План таков:

1) Для надежности - сервисы общаются через очереди Кафки - Послал и забыл (а если нужно вспомнить - пункт 3).
2) Что бы никто не шалил - очереди типизируются схемами Avro (пришлось в мейнтейнеры записаться и сделать чтоб работало).
3) Что бы распутать граф с циклами - каждое сообщение снабжается вариацией векторных часов, которые на самом деле не часы, а список UUID превращений, которые претерпело сообщение по пути на графе + тайминги начала\конца обработки.
3) Что бы мониторить - Из концевых вершин графа сообщения дублируются в агрегатор, который складывает Часы (которые не часы) в influxdb


Прототип этой красоты на рабоче-домашнем нуоте показывает 5-6 тыс сообщений\сек в 1 поток на каждый из 4 эзрац-сервиса.
linkpost comment

В защиту питона. [Sep. 8th, 2017|01:05 pm]
Кирилл Кирсанов
В питоне мне нужны random и uuid - они есть в стандартной библиотеке и в 99.99% проектах в гитхабе люди их и используют.

А в хаскеле в https://hackage.haskell.org/packages/search?terms=random и вижу 158 рандомов. Беру Sytem.Random и расстраиваюсь из за скорости, пробую System.Random.Mersenne.Pure64 - вроде норм, но остается еще 100+ не проверенных

Или вот дата-время (питонячий datetime.dateime). Изобретать ли мне свой тип, или брать чужой(какой, их там штук 10)
link1 comment|post comment

О рисовании [Sep. 5th, 2017|11:42 am]
Кирилл Кирсанов
Строю систему на микросервисах. Для передачи сообщений - кафка, т.е. pub-sub. Дополнительно жизнь усложняется циклами на графе и наличием нескольких (1-6) связей между компонентами

Если построить граф, где вершины - микросервисы, а ребра - потоки данных, то получается адское переплетение и ктулху. А вот если каналы передачи данных (топики кафки) так же сделать вершинами, то не смотря на увеличение числа вершин - разобраться становиться значительно проще.

Фактически это "подпись" ребра с помощью дополнительной вершины.
linkpost comment

Наброс. Ужасы питона. [Sep. 1st, 2017|03:54 pm]
Кирилл Кирсанов
Гвидо пишет...

Вопрос: почему в typing питона нет рекурсивных типов
Ответ: 'IIRC Brett and I tried and failed to come up with a recursive definition that worked in mypy'

и далее:
In my own code I use this:
JsonDict = Dict[str, Any]
which happens to cover perfectly what I'm doing

(C) https://github.com/python/typing/issues/182
link3 comments|post comment

И вновь продолжается бой. [Aug. 31st, 2017|02:51 am]
Кирилл Кирсанов
Бинарный AVRO хранит недокументарованый uuid в hex-string(36 байт), вместо fixed\bytes или пары int64.

Кажется я готов начать делать свой формат с блекджеком и схемой на yaml
linkpost comment

Новости avro. [Jul. 4th, 2017|03:12 pm]
Кирилл Кирсанов
AVRO для scala (https://github.com/sksamuel/avro4s) пишет decimal в string, хотя по стандарту должна быть пара big-endian целых - (unscaled*10^(-scale))


Когда брал AVRO в проект думал будет стандартЪ и строгость, а оказалось что даже в мире Явы это не так.
linkpost comment

Борьба с Avro [Jun. 14th, 2017|11:57 am]
Кирилл Кирсанов
Закончилась тем, что я стал ментейнером https://github.com/tebeka/fastavro
link2 comments|post comment

Опенсорс [Feb. 9th, 2017|06:12 pm]
Кирилл Кирсанов
Решили на новом месте работы навернуть Кафку, да не просто, а типизировав топики схемами, что бы била по рукам за левые данные в топиках. И тут, внезапно, decimal и datetime из коробки не умеет ни msgpack, ни protobuf, никто, кроме apache avro - http://avro.apache.org/docs/current/spec.html#Logical+Types

Но это только на бумаге. По факту поддержки нет, а то что только лежит в пулл-реквесте кривое и косое.

Например при передаче по схеме { "type": "bytes", "logicalType": "decimal", "precision":10, "scale":2 } Decimal("123.4") превращается Decimal("12.34")
linkpost comment

Неожиданно [Sep. 15th, 2016|01:53 am]
Кирилл Кирсанов
Этот код на rust отрабатывает за 0.001 с.

fn main() {
    let mut s:u64 = 0;
    for x in 1..18446744073709551615 {
        s+=x;
    }   
    println!("{}",s);
}

link6 comments|post comment

C# - очередной виток истории [Aug. 24th, 2016|10:59 pm]
Кирилл Кирсанов
3 дня назад, отчаявшись сделать вменяемый клиент к SOAP на питоне, начал делать его на C#.
Сам язык понравился, - гораздо приятнее чем его первая версия.

Но вот на что обратил внимание - когда то давно код GUI в Дельфи и VisualC++ состояли из двух частей ресурсов, где на специальном языке описывалось и собственно кода. Причина такого решения понятна - паскаль\C++ плохо подходили для декларативного описания интерфейса. Помню когда я смотрел winforms мне очень понравилось что интерфейс задается только кодом и изменения в коде приводят к изменениям в графическом редакторе интерфейса и на оборот.

Здесь же параметры подключений вынесены в app.xml солюшена. Туда же уходят настройки при создании веб-сервисов. Зачем так делать, - не представляю.

Мне нужно сделать ротацию сертификатов, а когда они по дефолту "вкомпилированы" в приложение это сделать непросто.
link4 comments|post comment

ГОСТ 19781-90 Обеспечение систем обработки информации программное [May. 20th, 2016|04:29 pm]
Кирилл Кирсанов
Машинный язык
Язык программирования, предназначенный для представления программ в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации.

Язык высокого уровня
Язык программирования, понятия и структура которого удобны для восприятия человеком


А низкого уровня и нет вовсе.
linkpost comment

Безумие. [Mar. 28th, 2016|06:15 pm]
Кирилл Кирсанов
​"На самом деле, любой программист может написать такую функцию, но удобнее просто взять уже готовую из npm. Этим и объясняется такая популярность left-pad." (С) https://meduza.io/feature/2016/03/28/kak-slomat-internet

Как вообще можно догадаться искать такую функцию в сторонних модулях?
link3 comments|post comment

Рабочее. [Jan. 15th, 2016|02:07 am]
Кирилл Кирсанов
По долгу  службы создал несколько различных информационных систем, которые активно общаются между собой, рисуют графики, строят отчеты и обрабатывают информацию.
У каждой системы свои директора\менеджеры, каждый из коотрых креативит свои бизнес процессы и всё это длится уже несколько лет. В результате прошлогодний креатив в одной системе противоречит креативу сегодняшнему.

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

Существуют ли в природе ситемы, ориентированные на менеджеров и способные ответить на вопрос - сломает ли новая хотелка предыдущие?

Картинка для привлечения внимания:
link5 comments|post comment

Рабочее [Dec. 21st, 2015|04:35 pm]
Кирилл Кирсанов
Я не думал что pgsql такой глупый.

SELECT Count(id) FROM A where A.b IN ( SELECT z FROM B WHERE xxxx)
работает 20 секунд, в то время как
SELECT Count(id) FROM A where A.b IN ( SELECT DISTINCT z FROM B WHERE xxxx)

0.02 сек.

PS: Oracle - аналогично http://www.dbspecialists.com/files/presentations/semijoins.html

Интересно, в каких случаях там distinct ненужен?
link14 comments|post comment

В фейсбуке увидел. [Jul. 25th, 2015|02:32 pm]
Кирилл Кирсанов


Вверху - совокупная энергия подземных ядерных испытаний.
Внизу - землетрясения с магнитудой больше 8.3

(С) "О некоторых корреляциях в сейсмодинамике и двух компонентах сейсмической активности Земли"
http://ufn.ru/ru/articles/2010/3/f/
link2 comments|post comment

Архитектура [Apr. 30th, 2015|01:56 pm]
Кирилл Кирсанов
Также в список попала башня-лаборатория ЦНИИ робототехники и технической кибернетики в Санкт-Петербурге, которую авторы назвали храмом сатаны.

link2 comments|post comment

Колмогоровская сложность. [Apr. 22nd, 2015|07:15 pm]
Кирилл Кирсанов
Гугл добавляет в JSON шаблонизатор и сранвивает получившееся с хаскелем: "ML is a functional language like Jsonnet. However ML is not pure, and also has strict evaluation. Haskell is a pure lazy functional language, but unlike Jsonnet it has static type safety. Providing static type safety means programmers have to understand type inference, unification errors, and also provide the occasional type annotation. Even then, some correct programs are rejected."


http://google.github.io/jsonnet/doc/index.html
linkpost comment

Пятиминутка ненависти [Jan. 29th, 2015|06:43 pm]
Кирилл Кирсанов
[Tags|]

На вопрос "Почему вы поменяли имена передаваемых параметров" партнер из солнечного Азербайджана ответил: "ну и что".
link3 comments|post comment

Первый пост про события на Украине. [Jan. 13th, 2015|11:44 pm]
Кирилл Кирсанов
Увидел у Кассада Мотороллу:

(C) http://www.youtube.com/watch?v=BM_wRtIrpOQ

Зачем ему Тотенкопф в ухе?
link4 comments|post comment

Новости гнезования. [Jan. 5th, 2015|04:16 pm]
Кирилл Кирсанов
Шуруповерт Dexter, купленный в Леруа за 2300 наконец разрядился.

Перед этим он поучаствовал в сборе платяного шкафа, 4х книжных шкафов c дверцами, двух верхних полок у ним (Billy из икеи) навешивании трех карнизов и 6-и вешалок для одежды.
Посмотрим, правда ли он заряжается за 30 минут
link2 comments|post comment

О безопасности. [Dec. 26th, 2014|03:23 pm]
Кирилл Кирсанов
Вчера в порыве традиционного "ааа-срочно-срочно-срочно" правил систему.
Т.к. база гугловская - то для удаления всех данных в таблице нужно городить циклический процесс, где за раз удаляется 300 записей. Сделал, но забыл (вернее поленился, url-то знаю только я) закрыть авторизацией. Вызвал через броузер (Chromimum+AdBlock) нужный урл и очистил таблицу.

А ночью(05:15) некий WebIndex c 92.242.35.54 обратился по тому же адресу и прибил всю таблицу.

Теперь осталось понять как этот веб-индексатор узнал урл, куда я заходил.

PS: До чего дошел прогресс - http://wizzard0.livejournal.com/483087.html
PPS: Разгадка - http://sporaw.livejournal.com/347832.html
link21 comments|post comment

Хакеры отакуют. [Dec. 3rd, 2014|05:45 pm]
Кирилл Кирсанов
Как сообщил источник, компьютеры ряда сотрудников получили настолько серьезный ущерб, что не подлежали дальнейшему восстановлению и были заменены.

(С)http://www.rbc.ru/rbcfreenews/547f19d7cbb20fd20625f194
link7 comments|post comment

История одного бага. [Nov. 18th, 2014|11:44 pm]
Кирилл Кирсанов
4 года назад сделал биллинг на Google appengine. Внутри там NoSQL Bigtable. Время поиска на любых объемах константное, но только без агрегирующих функций. Соотсветвенно статистика (сколько Вася Пупкин платил каждое полнолуние, когда марс виден с земли) делается через море мемкеша, поля велосипедов и горы дополнительных "таблиц"

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

Тем временем крон по ночам начал сходить с ума и запускать но 10-20 копий считалочного софта. В результате днем все хорошо, а ночью - менеджеры за сердце хватаются - суммы прыгают в самом широком диапазоне, - от "ща все сядем" до "завтра покупаем Maseratti, каждому". А утром - снова корректная статистика.
link4 comments|post comment

(no subject) [Nov. 18th, 2014|12:45 pm]
Кирилл Кирсанов

Это средневековая устрица.
link2 comments|post comment

Вот это поворот. [Oct. 14th, 2014|01:31 pm]
Кирилл Кирсанов
«Ростелеком» разместил извещение о тендере на написание ПО для игровой платформы. В качестве образцов для ее клиентской части оператор называет программы Steam и Battle.net. http://internet.cnews.ru/news/top/index.shtml?2014/10/13/588671


А стим, видимо, через закон о персональных данных закроют.
link3 comments|post comment

Конфиги, консоль, конпеляция. [Oct. 8th, 2014|11:38 am]
Кирилл Кирсанов


Свежеприобретенный t440p из коробки не может пробудить ssd после выхода из сна.

При этом Optimus\Prime (Nvidia) заработало без лишних телодвижений.
link1 comment|post comment

Ноутбуки [Oct. 7th, 2014|01:37 am]
Кирилл Кирсанов
Настало время выбрать новый ноутбук

Нужно - 14-15"", 8GB RAM, прочность
Хочется - IPS
приятный бонус - Geforce 730m или лучше

Каждый день ноутбук таскается минимум в 2 места в рюкзаке. 2 дня в неделю я вечером еще и институт\университет посещаю где то лекции читаю, то в лаборатории работаю. Т.е. в худшем случае 12 открываний\закрываний в день. Это если не считать полу походных условий в анагарах МЧС и конференций.


Read more...Collapse )

Смотрю на TP440p\X1 carbon - Испортили тачпад и IPS стоит дороговато.
Yoga2pro - непонятно как с надежностью + говорят Linux проблематично настроить
MacBook air\pro в бюджете только младшие модели без памяти.

И тут, о чудо - asus\acer делают бюджетные ноутбки с отличной (по сравнению с lenovo\apple за почти вдвое большие деньги) начинкой и IPS матрицей - (Acer V5-573PG, Asus N550JK)

Вопрос залу - изменилось ли за эти 5 лет качество сборки и надежность у асуса\acer?
link8 comments|post comment

Почему новая Windows получила номер 10? [Oct. 3rd, 2014|07:31 pm]
Кирилл Кирсанов
Разгадка одна - безблагодарность https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22%29
link3 comments|post comment

Blame! [Sep. 25th, 2014|02:16 pm]
Кирилл Кирсанов
Симулятор карабканья по лестницам, окруженным серыми стенами, окруженными серыми этажами серых структур, окруженных лкуообразной сферой Дайсона, (и этот лук - серый) окруженной еще более лукообразной мегаструкторй, служащей в качестве монохромного фона экзистенциальной борьбы бледного героя. http://bac9.tumblr.com/



PS: Когда читал оригинальную магну сильно удивился, когда наткнулся на цветную вставку и обнаружил, что мое цветовое восприятие отличается от авторского.
linkpost comment

Спортивное [Sep. 12th, 2014|01:11 am]
Кирилл Кирсанов
Помахал сегодня 67кг "гирей".

Ощущения совсем другие. Если от 32-ух устает только спина, то тут прилично забиваются еще и ноги, т.к. приходится демфировать.
linkpost comment

Немного топологии [Aug. 27th, 2014|06:31 pm]
Кирилл Кирсанов
Плоская визуализация Кубика Рубика, а в конце еще и Гиперкубика.


Подробнее http://www.gravitation3d.com/magictile/
link1 comment|post comment

Тайные знания оптом. [Aug. 25th, 2014|01:21 pm]
Кирилл Кирсанов
De Vermis Mysteriis и Die Unaussprechlichen Kulten без SMS и вирусов - http://magic-kniga.ru/shop/product/19917.html

Вот как работники МВД и прокуратуры начитаются Гоэтии, так начинается:
link3 comments|post comment

C++ [Aug. 21st, 2014|12:34 am]
Кирилл Кирсанов
Начиная с С++11 в языке появилась возможность определять лямбда-выражения, для которых, в случае, если у Вас всего один return оператор, можно не указывать тип возвращаемого значения — компилятор может вывести его самостоятельно. (С) http://habrahabr.ru/post/184606/

Что то я не могу понять - если в С++ строгая типизация, то какая разница сколько раз return, тип то все равно один.
link7 comments|post comment

Ужасы нашего городка [Jun. 24th, 2014|07:07 pm]
Кирилл Кирсанов
linkpost comment

Кровавый энтерпрайс. [May. 27th, 2014|07:21 pm]
Кирилл Кирсанов
Понадобилось в веб-проекте подцепиться к SOAP через SLL.

Питон из коробки этого не умеет. Если доставить разных модулей то умеет но падает один модуль не может в рекурсивные wdsl, другой без monkey-path не хочет по https ходить.

На яве один фреймворк страшнее другого. Так что пришлось на php писать.
linkpost comment

Физкультура. [May. 24th, 2014|11:17 pm]
Кирилл Кирсанов
Пробежал гонку героев. Теперь самомнение о моей физкультурной подготовке опустилось до должного уровня.
link2 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]