Архив за 20 августа 2017

Мутационное тестирование - 1 Юнит тесты помогают нам удостовериться, что код работает так, как мы этого хотим. Одной из метрик тестов является процент покрытия строк кода (Line Code Coverage).

Но насколько корректен данный показатель? Имеет ли он практический смысл и можем ли мы ему доверять? Ведь если мы удалим все assert строки из тестов, или просто заменим их на assertSame(1, 1), то по-прежнему будем иметь 100% Code Coverage, при этом тесты ровным счетом не будут тестировать ничего.

Насколько вы уверены в своих тестах? Покрывают ли они все ветки выполнения ваших функций? Тестируют ли они вообще хоть что-нибудь?

Ответ на этот вопрос даёт мутационное тестирование.

Читать полностью »

Liscript — web REPL: поцелуи, велосипеды и экскаваторы - 1

Некоторое время назад я написал интерпретатор лиспоподобного языка, который назвал Liscript. Опубликовал несколько статей на Хабре, посвященных особенностям реализации ядра, TCO, GUI, REPL-ботов и т.п. Недавно добавил web-интерфейс REPL-у (ссылка в конце статьи).

При чем здесь поцелуи и экскаваторы? Думаю, большинству известны такие аббревиатуры, как KISS (keep it simple stupid — делай это проще, дурачок), YAGNI (You ain't gonna need it — Вам это не понадобится), а также высказывания людей разной степени великости про архитектурных астронавтов, «все должно быть сделано так просто, насколько возможно, но не проще», и т.п.

Допустим, перед вами стоит задача — выкопать яму. Какие есть варианты решения? Взять лопату и выкопать самому — дешево и сердито, но долго и возможно неоптимально (зависит от вашего уровня владения лопатой и размеров ямы). Отдать на аутсорс таджикам (не будем рассматривать здесь этот вариант, хотя я должен был его упомянуть). Взять экскаватор — быстро и эффективно, но затратно: бензин/аренда, плюс не факт, что он проедет в вашу садовую калитку, значит надо сносить/восстанавливать забор и т.д. Также, необходимо определиться с моделью (порой из 100500 вариантов), а если вы будете управлять им самостоятельно, надо разобраться во всех его рычагах и педалях.

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

В общем, про выбор инструментов под задачи, и конкретные (подозреваю, что спорные) решения, которые я выбирал в процессе реализации проекта, под катом.
Читать полностью »

image

Привет! Предлагаю вашему вниманию свободный перевод статьи «Exploring Android Nougat 7.1 App Shortcuts» от Andrei Catinean.

Google выпустил Android Nougat с версией 7.1 (API 25). Появились некоторые интересные функции под капотом. Одна из этих дополнительных функций — app shortcuts. Эта статья расскажет, что они собой представляют, как они работают, и как вы можете их реализовать.

Читать полностью »

Морские водоросли трансформировали Землю

Планетарное поглощение океанскими живыми водорослями шестьсот пятьдесят миллионов лет назад было ударом, который трансформировал жизнь на Земле.

«Это один из самых глубоких эволюционных и экологических переходов в истории нашей планеты», — сказал ученый Йохен Бракс в интервью BBC.

События произошли сто миллионов лет до кембрийского взрыва. Следы в ископаемых, которые озадачили Дарвина, всегда оставляли вопрос о том, что есть еще какая-то биологическая предыстория.

Читать полностью »

image

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

Но теперь я могу сказать: я один из немногих, кто довёл свой первый проект до релиза! Сделал это, причём, не вложив в него ни копейки.
Читать полностью »

Недавно на ресурсе Medium были опубликованы две статьи от одного и того же автора, затрагивающие функциональность C# async/await.

Основными выводами были:

  • рекурсивный вызов асинхронного метода в C# подвержен StackOverflowException
  • goroutine'ы лучше задач (тасков) в .NET в плане производительности

Но главная проблема вышеприведенных публикаций — абсолютное непонимание модели кооперативной многозадачности в C# с вводом читателей в заблуждение. Сами же бенчмарки — бессмысленные, как мы увидим позже.

Далее в статье я попытаюсь раскрыть суть проблемы более подробно с примерами решения.

TL;DR

После небольшой правки кода исходных примеров, реализация бенчмарка на .NET оказывается быстрее варианта Go. Попутно решаем проблему переполнения стека у рекурсивных асинхронных методов.

NB: использоваться будут свежевыпущенный .NET Core 2.0 и Go 1.8.3.

Читать полностью »

Volkswagen ввел в производство электрический микроавтобус

Компания Volkswagen объявила, что создаст версию своего I.D. Buzz, который, как она надеется, поступит в продажу уже к 2022 году. Как рассказал источник, производственная версия концепции мало чем отличается от оригинала.

Читать полностью »

В Нидерландах откроют самый большой подземный парк в мире для велосипедов

Любой, кто посетит Нидерланды, сразу заметит, насколько сильно местные жители любят двухколесный транспорт. Велосипеды – повсюду.

Велосипедисты в Утрехте будут иметь очень большой подземный парк. Там есть тысячи мест.

В парке Stationsplein в настоящее время есть место для шести тысяч велосипедов, но к концу 2018 года свой «транспорт» сможет припарковать уже двенадцать тысяч человек.

Читать полностью »

Радиация помогает продлить молодость

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

Читать полностью »

Ученые указали на еще один вред от ночных перекусов

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

Читать полностью »