Pull to refresh
13
0
Евгений Смирнов @jeen

Пользователь

Send message

Определение модульного теста

Reading time7 min
Views17K
В наших с вами интернетах недавно поднялся нешуточный шум по поводу того, жив ли TDD сейчас, нужен ли он, и в каком виде. Все началось со статьи Дэвида Хансона «TDD is dead. Long living testing», после которой последовали статьи многих авторов и живые обсуждения этой проблемы включая hangout вместе с Дэвидом, Кентом Беком и Мартином Фаулером (кстати, очередной hangout будет завтра, 16 мая).

Но немногие знают, что за несколько дней до этого все тот же Мартин Фаулер постарался дать определение модульного теста (bliki:UnitTest), перевод которого представлен ниже. А после перевода идут кое-какие мои мысли по этому поводу.
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments16

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

Reading time7 min
Views154K


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

Из-за этого большинство подобных материалов мало полезны, несмотря на то, что могут содержать толковые книги. Мне давно хотелось написать полезный обзор, который не станет навязывать определенные материалы, а позволит читателю выбрать наиболее подходящие.
Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments79

Цвет в дизайне

Reading time4 min
Views73K
Нет надобности расписывать, как важен цвет в дизайне. Удачное цветовое решение — это уже половина успеха проекта. В помощь развивающимся дизайнерам — немного теории цветового круга и подборка ссылок на полезные ресурсы.



Базовый цветовой круг пригодится в выборе наиболее подходящего сочетания цвета (или поможет гармонично совместить между собой определенные оттенки). Он изображает базовые и известные еще со школы правила смешивания основных цветов: красного, синего и желтого. Если смешать красный и желтый — получится оранжевый, синий и желтый дадут зеленый, а красный с синим — фиолетовый. Оранжевый, зеленый и фиолетовый — это вторичные цвета. Третичные цвета, как красно-фиолетовый и фиолетово-синий, получены от смешивания основных с вторичными.

Читать дальше →
Total votes 31: ↑25 and ↓6+19
Comments10

Shazam: алгоритмы распознавания музыки, сигнатуры, обработка данных

Reading time13 min
Views160K
В ресторане заиграла почти забытая песня. Вы слушали её в далёком прошлом. Сколько трогательных воспоминаний способны вызвать аккорды и слова… Вы отчаянно хотите послушать эту песню снова, но вот её название напрочь вылетело из головы! Как быть? К счастью, в нашем фантастическом высокотехнологичном мире есть ответ на этот вопрос.

У вас в кармане лежит смартфон, на котором установлена программа для распознавания музыкальных произведений. Эта программа – ваш спаситель. Для того чтобы узнать название песни, не придётся ходить из угла в угол в попытках выудить из собственной памяти заветную строчку. И ведь не факт, что это получится. Программа, если дать ей «послушать» музыку, тут же сообщит название композиции. После этого можно будет слушать милые сердцу звуки снова и снова. До тех пор, пока они не станут с вами единым целым, или – до тех пор, пока вам всё это не надоест.


Мобильные технологии и невероятный прогресс в области обработки звука дают разработчикам алгоритмов возможность создавать приложения для распознавания музыкальных произведений. Одно из самых популярных решений такого рода называется Shazam. Если дать ему 20 секунд звучания, неважно, будет ли это кусок вступления, припева или часть основного мотива, Shazam создаст сигнатурный код, сверится с базой данных и воспользуется собственным алгоритмом распознавания музыки для того, чтобы выдать название произведения.

Как же всё это работает?
Читать дальше →
Total votes 64: ↑58 and ↓6+52
Comments22

Использование Pester для тестирования при разработке PowerShell скриптов

Reading time9 min
Views15K
Когда пришлось писать сложные, большие скрипты на PowerShell и с течением времени изменять их, мне хотелось найти средство, которое позволит упростить проверку работоспособности моих скриптов. Таким средством оказался Pester — фреймворк для модульного тестирования.

О том, что он может и об основах его использования я и расскажу.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments8

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Сводная таблица по поддержке C++ 11/14/17

Reading time5 min
Views65K
Как любому C++ разработчику, следящему за новинками в отрасли и стандартами в частности, мне стало интересно, насколько полно вообще поддерживается стандарт C++ 11 (а также 1y и 1z) разными компиляторами? Да, существуют разные сводные таблицы, но чаще всего это сравнение двух компиляторов или двух версий одного компилятора, либо сводная таблица, но уже устаревшая, либо вообще неполный список. В общем, сел я да и сделал полную таблицу (на основе списка Clang-a и GCC) по четырем компиляторам: Clang, GNU C++, MSVC и Intel C++.
Таблица под катом
Total votes 73: ↑71 and ↓2+69
Comments46

Переезд IT-шника в Германию: от А до Я

Reading time20 min
Views99K
Привет.

Germany Blue CardВ этом посте я хочу подробно рассказать о моём опыте переезда на работу PHP-разработчиком в Германию — от момента, когда есть просто желание переехать, но не знаешь что и как делать, до момента, когда уже переехал, вселился в квартиру и получил вид на жительство. Кроме того, в конце поста я приведу немного полезной информации и ссылок по переезду в некоторые другие страны.

Ещё с универа я понимал, что в Украине ловить нечего и надо валить. В течение нескольких лет я исследовал вопрос эмиграции: читал блоги, форумы, сообщества, общался с друзьями и знакомыми, которые могли мне рассказать что-то новое и, естественно, за это время, учитывая и сам переезд, у меня накопился определённый багаж информации, которым и хочется поделиться.

Итак, если вы имеете IT-шное образование и вам интересна идея сваливания из печальной пост-совковой реальности, прошу под кат.
Читать дальше →
Total votes 211: ↑189 and ↓22+167
Comments163

1967 года рождения и моложе

Reading time6 min
Views220K
Прочитав этот и этот топики на печальную пенсионную тему я решил поделиться внутренними наработками нашей кадровой службы для наших сотрудников. Дальше много несмешного текста без картинок.
Читать дальше →
Total votes 98: ↑87 and ↓11+76
Comments116

Google Play — работаем легально!

Reading time4 min
Views179K
Привет, Хабр!



Сегодня, я хочу рассказать о том как сделать свое хобби по разработке Android-приложений пусть небольшим, но официальным бизнесом. О том, как легально получать деньги, заработанные на Google Play, о «страшном» валютном контроле и «таинственном» паспорте сделки.
Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments115

Премьера отечественного постапокалиптического фильма «Полигон 27»

Reading time1 min
Views26K
Сегодня автором был выложен в открытый доступ фильм «Полигон 27». Особенность его в том, что режиссером, сценаристом, оператором, композитором и специалистом по спецэффектам является один человек — Артем Мирошин, а актерами — энтузиасты из города Хабаровска.



Постядерный мир. Среди руин старого города возвышается город — убежище «Новый Хабаровск». В руки молодого парня и девушки попадает важная информация о местоположении технологий, с помощью которых можно восстановить экологию планеты. Оставшись без помощи и поддержки, они вынуждены совершить путешествие к этому месту и раскрыть заговор нависший над городом.

Трейлеры и ссылка на фильм
Total votes 129: ↑109 and ↓20+89
Comments104

Офис компании Boomburum

Reading time19 min
Views411K
image

Осторожно, трафик! Но можно хотя бы посмотреть картинки )

   Идея создать дома свой «рабочий кабинет» у меня зрела давно – как-то сам дошел до осознания его необходимости, хотя немалый вклад в начинания сделал этот давний пост на Хабре. У меня было своё рабочее место – большой удобный стол, где помещалось практически всё и даже больше… но, по сути, он был проходным двором – все время кто-то ходил, был рядом, отвлекал… такое очень часто мешает сосредоточиться и начать работать. Иногда, бывает, сидишь весь вечер за компом и понимаешь, что абсолютно ничего не сделал, хотя родным заявил «так, мне надо поработать».
Читать дальше →
Total votes 738: ↑625 and ↓113+512
Comments438

Переходим на Fusion Drive (Mac OS X Mavericks)

Reading time6 min
Views55K


UPDATE: От одного из читателей поступила информация, что собраный по данной методике FD не работает должным образом — не переносит часто используемые файлы на SSD. Возможно, это исключительный случай, но я проверю актуальность статьи для современных macOS. Ну а тем, кто решит воспользоваться статьей рекомендую иметь резервную копию системы и данных для возможности создания FD с нуля по моей первой статье, если что-то пойдет не так.

В статье Переходим на Fusion Drive я изложил способы, которые связаны с потерей информации на подопытных дисках. К счастью недавно появилась возможность этого избежать.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments17

Обзор безвентиляторного HTPC на базе корпуса HD-Plex

Reading time7 min
Views108K
Здравствуйте. В этом посте я хочу рассказать о своем опыте сборки безвентиляторного HTPC (по сути, компьютера-медиаплеера; при отсутствии HDD абсолютно бесшумного) на базе корпуса HD-Plex: о выборе, доставке, сборке и результатах. Надеюсь, кому-то мой опус будет полезен и, возможно, сподвигнет на сборку аналогичного устройства.

Под катом много фото.


Читать дальше →
Total votes 48: ↑42 and ↓6+36
Comments119

Памятка начинающему фотографу

Reading time2 min
Views150K
Хабраюзер nicothin сделал памятку начинающим фотографам — короткую шпаргалку, материал которой описывает тот крайний минимум, который необходим каждому, кто собирается снимать сознательно. Вкратце опишу что это и зачем.
Читать дальше →
Total votes 133: ↑103 and ↓30+73
Comments59

Подбираем видеокарту под miniITX-систему

Reading time6 min
Views213K
Как-то передо мной встал вопрос о покупке своим детям игровой ТВ-приставки, но после некоторых раздумий решил собрать игровой компьютер размером как раз как эти самые приставки — т.е. формата miniITX. Во-первых, под PC игры стоят дешевле, во-вторых, на PC можно играть в игры для игровой консоли не предназначенные и которые на приставках никогда не выйдут. К тому же хотелось, чтобы машина совмещала в себе еще и функции медиа-сервера. Ну, т.е. деткам и в игрушки поиграть, и мультики/кино посмотреть.

В соответствии с этим мне необходима платформа с отдельным современным процессором типа Core i3/i5 и современной дискретной видеокартой. Остальное (жесткий диск, Wi-Fi адаптер, пульты, джойстики, оптический привод) по вкусу. Сказано — сделано.

Но, как оказалось, не все так просто. Последний раз я лез с отверткой в системный блок лет семь назад и как-то не очень ориентируюсь в современных «железных» форматах и технологиях. Как оказалось, сборка miniITX-компьютера оказалась нетривиальной задачей со своими подводными камнями. Забегая вперед, скажу, что мне пришлось докупать/менять ранее приобретенные комплектующие, поработать ножовкой и напильником и в итоге я собрал две мини-системы — детям игровую машину и себе рабочую станцию.
Как собрать miniITX-систему с первого раза
Total votes 24: ↑16 and ↓8+8
Comments53

Жизнь разработчика (в картинках)

Reading time1 min
Views66K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

Инстанциирование шаблонов функций по списку типов (Часть 2)

Reading time5 min
Views9.5K
В первой части мы обсудили, как добиться переноса определения шаблона фунции из заголовочного файла в исходник, если набор типов, для которых должен быть инстанциирован шаблон известен заранее. В этой части мы посмотрим, как добиться этого красиво.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments8

Инстанциирование шаблонов функций по списку типов (Часть 1)

Reading time8 min
Views18K
Случалось ли Вам писать шаблон функции, который должен быть инстанциирован для определённого набора типов и больше ни для чего? Если нет, то эта статья врядли покажется Вам интересной. Но если Вы всё ещё здесь, то тогда начнём.

Cтатья будет состоять из двух частей. В первой части будет описана проблема и представлено её первичное, немного кривоватое, решение. Вторая часть будет посвящена усовершенствованию и обобщению изложенного решения.

Первым делом опишем проблему. Представьте себе, Вы обьявляете шаблон функции в заголовочном файле. Если шаблон должен быть потенциально пригоден для всего, что только можно, то и определить его нужно здесь же, в заголовочном файле. Это влечёт за собой сквозные зависимости, увеличение времени компиляции и срач в заголовочном файле. Но это всё же неизбежность. Конечно, можно определить шаблон в другом заголовочном файле и включить его внизу файла с обьявлением. Это избавит Вас от третьей проблемы, но не избавит от первых двух. Теперь обратная ситуация, когда шаблон должен быть использован(инстанциирован) только для парочки конкретных типов. Тогда вы смело переносите определение в исходник и явно инстанциируете Ваш шаблон для каждого отдельного типа. Немного трудоёмко в сопровождении, но всё же лучше чем гадить в заголовочном.

Наша ситуация находится где-то посередине. Есть шаблон функции, и он должен быть инстанциирован для конкретного списка типов, который где-то у Вас в проекте увековечен с помощью typedef'а. Ну, например:
typedef TypeList<int,char,bool,string, EmptyList> MyTypeList. 

О том, что такое список типов можно почитать у А.Александреску в «Современное проектирование на С++», а пример реализации — здесь.
Под катом самопальная имплементация(такая же как и у тысяч других, наверное). Она, мне лично, больше нравится, так как позволяет писать
typedef TypeList<int,char,bool,string, EmptyList> MyTypeList;
вместо классической записи
typedef TypeList<int,TypeList<char,TypeList<bool,TypeList<string, EmptyList>>>> MyTypeList;

Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments18

Коммунальный рай без забот и хлопот

Reading time7 min
Views45K
Конечно, до коммунального рая нам пока далеко, но позитивные сдвиги все-же намечаются. Сегодня я расскажу о том, как электронными системами управления отоплением в моем многоквартирном доме было сэкономлено 124 тысячи рублей кровных денег жильцов в отопительном сезоне 2013-2014 года. Как только это случилось — все стали довольны, но по началу эта история была практически детективной.
Как это было?
Total votes 94: ↑93 and ↓1+92
Comments45
1
23 ...

Information

Rating
Does not participate
Location
Дубна, Москва и Московская обл., Россия
Date of birth
Registered
Activity