SlideShare a Scribd company logo
1 of 34
Download to read offline
@maxmaxmaxmaxМАКСИМ КЛИМИШИН
CTO GVMachines Inc.
I/O в приложениях,
логи со смыслом
I/O?
Состояние?
Логи?
Проблемароста
Проблема
Сростомпользовательскойбазывозникают
проблемысредкимисобытиями.
Проблема
Багив кодеиливбизнеслогике,возникающие
при оченьредкомстеченииобстоятельств
превращаютсявовполнеконкретное время
командыподдержкии/илиразработки,
потраченныенаанализ
Причины
Проблема
Посколькуколичествовариантовпроизвольных
данныхнавходеивыходе требуютслишком
многовремени длятестирования,невозможно
ихисчерпывающепротестировать.
Решения
Перваямысль
Решения
‣ Больше тестов
‣ Больше QA
‣ Итеративноисправлять
Нуда…
Решения
Подходы
Решения
‣ Хранениесостояния,gdb,pdb,strace
‣ текстовыелоги
‣ логицепочек,логиизмененийобъектов
Состояние
Состояние
Всяинформациявоперативнойпамяти,к
которойприложениеимеетдоступвданный
конкретный моментвремени.
Состояние
1. Мыможемхранитьслепкисостояния
2. Мыможемхранитьвыводутилиттипаstrace,
tcpdump
3. Мыможемхранитьлогвсехизменений
внутриприложения(CREATE-UPDATE-
DELETE)
Состояние
Общийнедостатоктакихподходовявляетсято,
чтонабольшомобъемеэтоневозможносделать,
используя разумноеколичестворесурсов
Когдауместенанализ
Состояние
1. Когдамызнаем,вчемпроблема
2. Когдамызнаемгдепроблема
3. Когдамыможемчастичноограничить
выполнениеприложениядляисследования
Примерpdb
Состояние
# test.py
from remote_pdb import RemotePdb
RemotePdb('127.0.0.1', 4444).set_trace()
# client shell
$ socat readline tcp:127.0.0.1:4444
Пример strace
Состояние
# shell
strace -f python simple_numbers.py
# output:
read(3, "n = input("n=")na = range(n+1)na"..., 264) = 264
read(3, "n i += 1nprint lstn", 4096) = 22
close(3) = 0
munmap(0x7fe4f39ec000, 4096) = 0
stat("simple_numbers.py", {st_mode=S_IFREG|0644,
st_size=286, ...}) = 0
open("simple_numbers.py", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE
or TCGETS, 0x7ffea1fa1e60) = -1 ENOTTY (Inappropriate ioctl
for device)
Умныелоги
Простыелоги
Умные логи
1. Вовремяразработкивозникаетжелание
писатьтекстовыелоги
2. Взависимостиотзадачиидомена
подробностьлоговварьирует
3. Зачастую пишутсяколичественныепоказатели
(количествоэлементов,размерытп)
Умные логи
Основной принцип– разработчикпишетлоги,
которыеважныиуместныдлянеговпроцессе
разработкиитестирования,анев процессе
эксплуатации
Умные логи
Проблемав том,чтопрограммистпишетлоги,
которыепредположительнобудутполезныво
времяэксплуатацииприложения
Умные логи
‣ Важнознать когдапроизошлиизменения
состояния
‣ Надописать чтоизменилосьикогда
‣ Возможно,дампитьданные,которыебыли
удалены
Умные логи
obj X CREATE X
LOGAPP
…
…
TIME
obj X UPDATE X
Примерлога
Умные логи
# bad one
INFO 2016-02-13 02:32:30,901 invalidator 3351 Changed 1 ids
within User, start invalidation...
INFO 2016-02-13 02:32:30,916 invalidator 3351 Invalidation
of User finished within 0.0149869918823 seconds
# better one
INFO 2016-02-13 02:32:30 invalidator User 123123 created
INFO 2016-02-13 02:40:04 invalidator User 123123 updated
# best one
INFO 2016-02-13 02:32:30 invalidator User 123123 created
INFO 2016-02-13 02:40:04 invalidator User 123123 updated,
fields: name=Jo => John, phone= “” => 8572043434
Умные логи
‣ Можнопостроитьхронологию событий
‣ Можнопользоватьсяпростым grep-ом
‣ Можетразобратьсяпользователь,без
доскональногопонимания архитектуры
приложения
Вчемразница?
Умные логи
‣ Сделатьлоги сконтекстом – добавлятькусочек
JSON
‣ Дополнительнописатьдомен-специфичные
данные– результатывычислений,время
выполненияи т.п.
‣ Агрегироватьразныетипылогаисоздавать
цепочкисобытий
Ачтоещеможно?
Умные логи
‣ Splunk–Becauseninjasaretoobusy
‣ Logstash– ProcessAnyData,FromAnySource
‣ Graylog–Opensourcelogmanagementthat
actuallyworks
Чтоужеесть
Этогонедостаточно
Умные логи
1. Впервый деньиспользования Splunkмы
превысили5GB/деньтекстовыхлогов
2. Это было3.5годаназад!
Проблемыслогами
Умные логи
1. Объем– нужноаккуратнодобавлятьв
инструментыновыелоги,следитьзаобъемом
заединицу времени
2. Межнодовый трафик– нодыанализаторов
лучшедержатьводномдатацентрес
приложениями
Возможные решения
Умные логи
1. Ротировать скакой-тогранулярностью,
архивироватьи заливать
2. Держать всеводномДЦ
3. Уменьшать размерlogpayload
Выводы
Зачемэтонадопрограммисту?
Выводы
‣ Писатьподдерживаемыесистемыэтокрутои
ценно
‣ Думатьнашагбольшевперед –этоотличает
хорошихотлучших
Спасибо.
Thanks!
@maxmaxmaxmax

More Related Content

What's hot

Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Anton Baranov
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQLAlex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014Alex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеit-people
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruAlex Chistyakov
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентовNikolay Samokhvalov
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиковITCrowd Almaty
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык goDaniel Podolsky
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang productionAlina Dolgikh
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 

What's hot (20)

Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
Ryazan
RyazanRyazan
Ryazan
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
ETL на Python
ETL на PythonETL на Python
ETL на Python
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиков
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык go
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 

Similar to KharkovPy #12: I/O in Python apps and smart logging (russian)

Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыPavel Veinik
 
Вебинар: Гибкое управление требованиями
Вебинар: Гибкое управление требованиямиВебинар: Гибкое управление требованиями
Вебинар: Гибкое управление требованиямиTimofey (Tim) Yevgrashyn
 
Разработка бизнес приложений (4)
Разработка бизнес приложений (4)Разработка бизнес приложений (4)
Разработка бизнес приложений (4)Alexander Gornik
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneMax Klymyshyn
 
«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»DataArt
 
GrainTrack. ProAgro. Graintraders business process management
GrainTrack. ProAgro. Graintraders business process managementGrainTrack. ProAgro. Graintraders business process management
GrainTrack. ProAgro. Graintraders business process managementGraintrack
 
#несекреты документооборота с CMoD
#несекреты документооборота с CMoD#несекреты документооборота с CMoD
#несекреты документооборота с CMoDSergey Yakimchuk
 
Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.iProspect Russia
 
OSPconf. Big Data Forum 2015
OSPconf. Big Data Forum 2015OSPconf. Big Data Forum 2015
OSPconf. Big Data Forum 2015Ilya Gershanov
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потаповrit2010
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потаповrit2010
 
Кастомная разработка в области E-Commerce
Кастомная разработка в области E-CommerceКастомная разработка в области E-Commerce
Кастомная разработка в области E-CommerceDZ Systems
 
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)PCampRussia
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...SQALab
 
Сергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрикСергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрикLuxoft Education Center
 
От заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechОт заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechZlit
 

Similar to KharkovPy #12: I/O in Python apps and smart logging (russian) (20)

Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисы
 
AUG-1
AUG-1AUG-1
AUG-1
 
Вебинар: Гибкое управление требованиями
Вебинар: Гибкое управление требованиямиВебинар: Гибкое управление требованиями
Вебинар: Гибкое управление требованиями
 
Разработка бизнес приложений (4)
Разработка бизнес приложений (4)Разработка бизнес приложений (4)
Разработка бизнес приложений (4)
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get Done
 
«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»
 
GrainTrack. ProAgro. Graintraders business process management
GrainTrack. ProAgro. Graintraders business process managementGrainTrack. ProAgro. Graintraders business process management
GrainTrack. ProAgro. Graintraders business process management
 
#несекреты документооборота с CMoD
#несекреты документооборота с CMoD#несекреты документооборота с CMoD
#несекреты документооборота с CMoD
 
Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.
 
OSPconf. Big Data Forum 2015
OSPconf. Big Data Forum 2015OSPconf. Big Data Forum 2015
OSPconf. Big Data Forum 2015
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
 
Кастомная разработка в области E-Commerce
Кастомная разработка в области E-CommerceКастомная разработка в области E-Commerce
Кастомная разработка в области E-Commerce
 
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)
Как мы выкатываем большие изменения на прод (Дмитрий Петрашев, Wrike)
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
 
Сергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрикСергей Кащенко - Опыт внедрения метрик
Сергей Кащенко - Опыт внедрения метрик
 
IT basics for non technical CEO (Rus)
IT basics for non technical CEO (Rus)IT basics for non technical CEO (Rus)
IT basics for non technical CEO (Rus)
 
От заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechОт заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit Tech
 

More from Max Klymyshyn

Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON Datatype
Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON DatatypePapers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON Datatype
Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON DatatypeMax Klymyshyn
 
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTMax Klymyshyn
 
OdessaJS 2017: Groupware Systems for fun and profit
OdessaJS 2017: Groupware Systems for fun and profitOdessaJS 2017: Groupware Systems for fun and profit
OdessaJS 2017: Groupware Systems for fun and profitMax Klymyshyn
 
PyCon Ukraine 2017: Operational Transformation
PyCon Ukraine 2017: Operational Transformation PyCon Ukraine 2017: Operational Transformation
PyCon Ukraine 2017: Operational Transformation Max Klymyshyn
 
Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptMax Klymyshyn
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonMax Klymyshyn
 
Fighting async JavaScript (CSP)
Fighting async JavaScript (CSP)Fighting async JavaScript (CSP)
Fighting async JavaScript (CSP)Max Klymyshyn
 
React.js: Ускоряем UX/UI
React.js: Ускоряем UX/UIReact.js: Ускоряем UX/UI
React.js: Ускоряем UX/UIMax Klymyshyn
 
Изоформные приложения на React.js
Изоформные приложения на React.jsИзоформные приложения на React.js
Изоформные приложения на React.jsMax Klymyshyn
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Max Klymyshyn
 
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScriptТрансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScriptMax Klymyshyn
 
PiterPy 2015 - Трансдюсеры и Python
PiterPy 2015 - Трансдюсеры и PythonPiterPy 2015 - Трансдюсеры и Python
PiterPy 2015 - Трансдюсеры и PythonMax Klymyshyn
 
Robust web apps with React.js
Robust web apps with React.jsRobust web apps with React.js
Robust web apps with React.jsMax Klymyshyn
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsMax Klymyshyn
 
Инновации и JavaScript
Инновации и JavaScriptИнновации и JavaScript
Инновации и JavaScriptMax Klymyshyn
 
Odessapy2013 - Graph databases and Python
Odessapy2013 - Graph databases and PythonOdessapy2013 - Graph databases and Python
Odessapy2013 - Graph databases and PythonMax Klymyshyn
 
Angular.js - JS Camp UKraine 2013
Angular.js - JS Camp UKraine 2013Angular.js - JS Camp UKraine 2013
Angular.js - JS Camp UKraine 2013Max Klymyshyn
 
Зачем читать чужой код?
Зачем читать чужой код?Зачем читать чужой код?
Зачем читать чужой код?Max Klymyshyn
 
PyCon 2012 - Data Driven Design
PyCon 2012 -  Data Driven DesignPyCon 2012 -  Data Driven Design
PyCon 2012 - Data Driven DesignMax Klymyshyn
 
LvivPy - Flask in details
LvivPy - Flask in detailsLvivPy - Flask in details
LvivPy - Flask in detailsMax Klymyshyn
 

More from Max Klymyshyn (20)

Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON Datatype
Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON DatatypePapers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON Datatype
Papers We Love Kyiv, July 2018: A Conflict-Free Replicated JSON Datatype
 
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDT
 
OdessaJS 2017: Groupware Systems for fun and profit
OdessaJS 2017: Groupware Systems for fun and profitOdessaJS 2017: Groupware Systems for fun and profit
OdessaJS 2017: Groupware Systems for fun and profit
 
PyCon Ukraine 2017: Operational Transformation
PyCon Ukraine 2017: Operational Transformation PyCon Ukraine 2017: Operational Transformation
PyCon Ukraine 2017: Operational Transformation
 
Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
 
Fighting async JavaScript (CSP)
Fighting async JavaScript (CSP)Fighting async JavaScript (CSP)
Fighting async JavaScript (CSP)
 
React.js: Ускоряем UX/UI
React.js: Ускоряем UX/UIReact.js: Ускоряем UX/UI
React.js: Ускоряем UX/UI
 
Изоформные приложения на React.js
Изоформные приложения на React.jsИзоформные приложения на React.js
Изоформные приложения на React.js
 
Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)Изоморфный JavaScript (iForum 2015)
Изоморфный JavaScript (iForum 2015)
 
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScriptТрансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
Трансдюсеры, CSP каналы, неизменяемые структуры данных в JavaScript
 
PiterPy 2015 - Трансдюсеры и Python
PiterPy 2015 - Трансдюсеры и PythonPiterPy 2015 - Трансдюсеры и Python
PiterPy 2015 - Трансдюсеры и Python
 
Robust web apps with React.js
Robust web apps with React.jsRobust web apps with React.js
Robust web apps with React.js
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.js
 
Инновации и JavaScript
Инновации и JavaScriptИнновации и JavaScript
Инновации и JavaScript
 
Odessapy2013 - Graph databases and Python
Odessapy2013 - Graph databases and PythonOdessapy2013 - Graph databases and Python
Odessapy2013 - Graph databases and Python
 
Angular.js - JS Camp UKraine 2013
Angular.js - JS Camp UKraine 2013Angular.js - JS Camp UKraine 2013
Angular.js - JS Camp UKraine 2013
 
Зачем читать чужой код?
Зачем читать чужой код?Зачем читать чужой код?
Зачем читать чужой код?
 
PyCon 2012 - Data Driven Design
PyCon 2012 -  Data Driven DesignPyCon 2012 -  Data Driven Design
PyCon 2012 - Data Driven Design
 
LvivPy - Flask in details
LvivPy - Flask in detailsLvivPy - Flask in details
LvivPy - Flask in details
 

KharkovPy #12: I/O in Python apps and smart logging (russian)