В последнее время все чаще встречаются упоминания о некоем волшебном средстве — тестировании на основе свойств (property based testing, если надо погуглить англоязычную литературу). Большинство статей на эту тему рассказывают о том, какой это классный подход, затем на элементарном примере показывают как написать такой тест используя какой-то конкретный фреймворк, в лучшем случае подсказывают несколько часто встречающихся свойств, и… на этом все заканчивается. Дальше изумленный и воодушевленный читатель пытается применить все это на практике, и упирается в то, что свойства как-то не придумываются. И к большому сожалению часто на этом сдается. В этой статье я постараюсь расставить приоритеты немного по другому. Начну все-таки с более-менее конкретного примера, чтобы объяснить что это за зверь такой. Но пример, надеюсь, не совсем типичный для подобного рода статей. Затем попробую разобрать некоторые проблемы, связанные с этим подходом, и как их можно решить. А вот дальше — свойства, свойства и только свойства, с примерами куда их можно приткнуть. Интересно?
Читать полностью »
Рубрика «Совершенный код» - 22
Как перестать беспокоиться и начать писать тесты на основе свойств
2018-12-22 в 23:59, admin, рубрики: contracts, property-based testing, tdd, Программирование, Совершенный код, Тестирование IT-систем, Тестирование веб-сервисовPylint изнутри. Как он это делает
2018-12-19 в 9:02, admin, рубрики: pylint, python, Блог компании Конференции Олега Бунина (Онтико), Разработка веб-сайтов, Совершенный кодРазные помощники в написании классного кода нас просто окружают, линтеры, тайпчекеры, утилиты для поиска уязвимостей, всё с нами. Мы привыкли и используем не вдаваясь в детали, как «черный ящик». Например, мало кто разбирается в принципах работы Pylint — одного из таких незаменимых инструментов для оптимизации и улучшения кода на Python.
А вот Максим Мазаев знает, насколько важно понимать свои инструменты, и нам рассказал на Moscow Python Conf++. На реальных примерах показал, как знание внутреннего устройства Pylint и его плагинов помогло уменьшить время code review, улучшить качество кода и вообще повысить эффективность разработки. Ниже расшифровка-инструкция.
Путешествие gocritic’а в прошлое
2018-12-11 в 19:54, admin, рубрики: bugs, Git, git log, Go, go-critic, go-lintpack, gocritic, golang, linter, lintpack, open source, static code analysis, Программирование, Совершенный код, управление разработкой
Хочу поделиться результатами работы последних нескольких дней, которые включали в себя анализ git истории некоторых крупных Go проектов с целью нахождения коммитов, которые исправляли ошибки c последующей их формализацией для детектирования в случае их появления в новом коде.
Во второй части статьи рассмотрим некоторые новые диагностики в go-critic, которые позволяют находить код, который с высокой степенью вероятности содержит ошибку.
Дружба, благодаря которой Google вырос до огромных размеров
2018-12-06 в 15:21, admin, рубрики: Google Brain, Hadoop, MapReduce, TensorFlow, анб, высокая производительность, Джефф Дин, машинное обучение, парное программирование, поисковые технологии, Санджай Гемават, Совершенный код
Программируя вместе за одним компьютером, Джефф Дин и Санджай Гемават изменили курс компании — и весь Интернет. На иллюстрации: лучшие программисты Google иногда кажутся двумя полушариями одного мозга. Рисунок Дэвида Планкерта
Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. Произошло ЧП: с октября 1999 года остановились краулеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. На карту было поставлено больше, чем предполагали инженеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
Читать полностью »
Дзен и искусство поддержки чистого кода
2018-11-30 в 14:00, admin, рубрики: agile, continuous delivery, бизнес-модели, Блог компании Издательский дом «Питер», высокая производительность, Лайфхаки для гиков, поддержка, Программирование, Совершенный код, чистый код
Привет!
Говорить о чистом коде можно бесконечно, но следующая статья Дэйва Николетта очень метафорична и, надеемся, действительно достойна перевода. Пусть и немного «назидательна», о чем автор заранее преуведомляет читателей в оригинале статьи.
Приятного чтения.
Читать полностью »
Страдать на работе — не обязательно
2018-11-26 в 11:51, admin, рубрики: happiness, Блог компании Инфопульс Украина, Лайфхаки для гиков, Программирование, Совершенный код, управление персоналомСмотрел я тут на днях выступление Kate Gregory на конференции Pacific++ 2018.
Кейт — хороший программист и отличный спикер. Сам доклад поднимает много интересного о программировании на С++ и программировании вообще (стоит посмотреть). Но больше всего меня зацепила одна высказанная ею (буквально вскользь) мысль. Кейт удалось очень кратко и по делу обозначить мотивацию программистов. Звучала она так: «Программист во время работы стремится максимизировать своё счастье». Это звучит банально, но ведь так оно и есть.
Мы можем говорить, что болеем за проект, заказчика, компанию, человечество и мир во всём мире (и это даже может быть правдой). Но давайте будем честны. Мы люди и, как все люди, в первую очередь стремимся максимизировать своё счастье — глобально во всей жизни, стратегически в карьере, тактически в текущем проекте и мелочно здесь и сейчас, при написании вот этой функции, вот этой строки кода. Да, мы это делаем и было бы хорошо разобраться, что делает нас более счастливыми, а что — менее. Это позволит нам лучше понимать коллег, подчинённых да и самих себя.
Сразу хочу вынести за скобки вопросы оплаты труда, условий работы, начальства, коллектива и прочего. Если вы работаете там, где работаете — то всё это вас примерно устраивает. Давайте сфокусируемся на том, что делает нас счастливыми и несчастными при непосредственной работе над кодом.
Читать полностью »
Студентам-технарям: автоматизируем оформление курсачей в таблицах Google
2018-11-26 в 11:09, admin, рубрики: Google Cloud Platform, Совершенный кодКогда учился в универе, было обязательное требование к оформлению расчетов задач, курсовых и т.п.: должны быть видны цифры, которые подставляются в формулу.
Т. е. так нельзя: S = π⋅R² = 314 [м²]
надо так: S = π⋅R² = 3,14⋅10² = 31,4 [м²]
Причина в том, что расчеты сдавались на бумаге, а профессорам проверять все это не видя цифр неудобно. Обычно расчеты мы делали в Excel, оформлять формулы и подстановку цифр приходилось вручную, и если исходные данные менялись, все автоматом пересчитывалось и оформление снова переделывали вручную. Я то понимал, что с такой примитивной задачей, как подставлять циферки в формулы, компьютер может справиться самостоятельно, но, как оказалось, такой возможности не реализовано ни в Mathcad, ни в Mathematica, ни в Excel.
Читать полностью »
Ускорение SQLAlchemy для архитектурных космонавтов
2018-11-22 в 23:01, admin, рубрики: python, sql, sqlalchemy, архитекурный космонавт, Блог компании Qrator Labs, Проектирование и рефакторинг, Совершенный код
Хабр, это доклад инженера-программиста Алексея Старкова на конференции Moscow Python Conf++ 2018 в Москве. Видео в конце поста.
Всем привет! Меня зовут Алексей Старков — это я, в свои лучшие годы, работаю на заводе.
Теперь я работаю в Qrator Labs. В основном, всю свою жизнь, я занимался C и C++ — люблю Александреску, «Банду Четырех», принципы SOLID — вот это всё. Что и делает меня архитектурным космонавтом. Последние пару лет пишу на Python, потому что мне это нравится.
Собственно, кто такие «архитектурные космонавты»? Первый раз я встретил данный термин у Джоэля Спольски, вы наверное его читали. Он описывает «космонавтов», как людей, которые хотят построить идеальную архитектуру, которые навешивают абстракцию, над абстракцией, над абстракцией, которая становится все более и более общей. В конце концов, эти уровни идут так высоко, что описывают все возможные программы, но не решают никаких практических задач. В этот момент у «космонавта» (это последний раз, когда данный термин окружен кавычками) кончается воздух и он умирает.
Я тоже имею тенденции к архитектурной космонавтике, но в этом докладе я расскажу немного о том, как это меня укусило и не позволило построить систему с необходимой производительностью. Главное — как я это поборол.
Краткое содержание моего доклада: было / стало.
Читать полностью »



