Search
Write a publication
Pull to refresh
-9
0.1
Send message

Если вы используете моки, то вы хоть что-то тестируете?

Reading time6 min
Views17K

Было ли у вас ощущение, что ради тестирования вы делаете код труднее для чтения? Допустим, у вас есть код, который ещё не тестировался. У него есть ряд побочных эффектов, и вас просят сначала прогнать тесты. Вы начинаете следовать советам вроде передачи глобальных переменных в виде параметров или извлечения проблемных побочных эффектов, чтобы сделать вместо них заглушки в тестах.

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

Вы останавливаетесь и задумываетесь: «Допустимо ли менять сигнатуры кода ради тестирования? Тестирую ли я реальный код или совершенно другой класс, в котором не происходит то, что нужно?» Перед вами может возникнуть дилемма. Вы уверены, что стоит и дальше придерживаться этого подхода? Или это потеря времени?

Вопрос на миллион: для устаревшего кода нужно писать модульные тесты или интеграционные?
Читать дальше →

Первые шаги с Unicorn Engine

Reading time14 min
Views14K

При поиске "Unicorn Engine" на Хабре, я с удивлением обнаружил, что этот инструмент еще ни разу не попадал в статьи. Я попробую заполнить эту пустоту. Начнем, пожалуй, с азов, и посмотрим на пример использования эмулятора в реальной жизни. Для того, чтобы не изобретать велосипед, я решил просто перевести этот мануал. Перед началом скажу, что все мои комментарии или замечания будут выглядеть так.

Читать дальше →

Разряды “Гризли” или супер дрель

Reading time5 min
Views25K
В этой статье хочу рассказать об электрических разрядах, которые способны грызть различные металлы и стали. Речь пойдет в основном про электроэрозионную обработку.

Прокачиваем беговую дорожку

Reading time11 min
Views27K
Недавно я решился на очень странную для себя покупку. Да, я купил себе беговую дорожку.



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

Так я решил сделать что-то подобное и с беговой дорожкой: подключить её к смартфону или планшету, чтобы собирать и отображать статистику.

Как просмотр порно влияет на продуктивность работы и учебы

Reading time10 min
Views100K
В 2010 году компания Nielsen Company анонсировала результаты очень интересного исследования. С помощью провайдеров компания проанализировала запросы более чем 21 миллиона американских компьютеров.

Оказалось, что 29% жителей США смотрит порно на работе. Колоссальное число, если подумать. В среднем за месяц такой любитель порно тратит на просмотр видео для взрослых 1 час 45 минут.

Но тут в 2020 начался карантин, большинство сотрудников перевели на удаленную работу, а PornHub неожиданно открыл бесплатный доступ к премиум-пакету. И понеслась. Официальной статистики пока нет, но мы уверены, что потребление порно-контента на карантине увеличилось многократно. В том числе и в рабочее время.

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

Читать дальше →

Как сделать работу с Microsoft Remote Desktop лучше

Reading time7 min
Views172K
Хочу поделиться несколькими советами по настройке удаленного подключения к рабочим местам по RDP. Расскажу как проапгрейдить древний RPC-HTTP до UDP, похвалю и поругаю Windows 10 и AVC, разберу решение нескольких типичных проблем.

Считаем, что для подключения используется Remote Desktop Gateway (RDGW), а в качестве серверов выступают рабочие станции. Использовать RDGW очень удобно, потому что шлюз становится общей точкой входа для всех клиентов. Это дает возможность лучше контролировать доступ, вести учет подключений и их продолжительность. Даже если VPN позволяет подключиться к рабочим машинам напрямую — это не лучший вариант.

RDGW настраивается быстро, просто, а Let's Encrypt и win-acme легко решают проблему с доверенным сертификатом.

Есть три транспортных протокола по которым клиент может подключиться с серверу:

RPC-HTTP (плохо)
HTTP (лучше)
HTTP+UDP (отлично)

Под сервером будем понимать рабочую машину, под клиентом — домашнюю.
Первое, с чего стоит начать, это «плохо» превратить в «отлично».
Читать дальше →

Как я за 4 часа решатель японских кроссвордов написал

Reading time9 min
Views6.3K
Лениво просматриваю выложенный недавно коллегами из «Сириуса» список курсов, проведенных у школьников… Так, а это что такое? «Поиск комбинаторных объектов с помощью SAT-солверов»? «Мы сделали решатель судоку, японских кроссвордов и прочего»?

В памяти всплывает мысль о том, что переборные NP-задачи сводимы одна к другой, и в частности, сводимы к поиску выполнимости булевой формулы. Эту мысль один из авторов Хабра высказывал здесь, и честно говоря, для меня она подобна магии.

Конечно, как человек, прошедший курс дискретной математики и сложности алгоритмов теоретически я знаю, что задачи сводимы одна к другой. Но обычно заниматься этим сложно, и лучше я поверю на слово профессорам и другим умным людям.

Но тут же это предлагается… ШКОЛЬНИКАМ! Внутри зашевелилось шило в п... творческое начало и заявило: «Ну это, наверное, несложно прикрутить, раз ученикам предлагают. Неужели я не разберусь?? Вон, обещают, что питоновскую библиотеку используют, а питон я в целом знаю...»

А времени было около 9 вечера, что несколько притупило мой критический взгляд на сложность проблемы… (собственно, далее хроники 4-часового программирования)
Читать дальше →

Язык R для пользователей Excel (бесплатный видео курс)

Reading time6 min
Views34K

В связи с карантином многие сейчас львиную долю времени проводят дома, и это время можно, и даже нужно провести с пользой.


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


Если всю работу с данными в компании, в котороый вы работаете принято по-прежнему вести в Excel, то предлагаю вам познакомится с более современным, и при этом совершенно бесплатным инструментом анализа данных.


Читать дальше →

Познакомьтесь с апскейлерами

Reading time8 min
Views7K

Заскучали, сидя дома? Попробуйте восстановить старый сериал или фильм




Бывает, что какой-нибудь сериал или телефильм производят на ребёнка неизгладимое впечатление. А когда ребёнок вырастает и вновь смотрит тот же самый материал, он может оказаться разочарованным – особенно если смотреть видео на современном экране с высоким разрешением. Однако фанаты со всего мира пытаются использовать технологии для того, чтобы подтянуть стандарты прошлого до уровня современности. Знакомьтесь – апскейлеры.

Можно вспомнить множество примеров профессиональных проектов, пытавшихся как сохранить, так и улучшить старые фильмы. CBS потратила кучу денег на новые компьютерные эффекты для перевыпуска фильмов «Звёздный путь» и «Звёздный путь: Следующее поколение» на Blu-ray. В Британии компания BBC десятилетиями сотрудничает с профессиональными фанатами «Доктора Кто», подчищающими и восстанавливающими классические эпизоды сериала.

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

Книга «Управление памятью в .NET для профессионалов» в правильном переводе команды DotNetRu

Reading time5 min
Views18K
Совсем недавно в издательстве ДМК-пресс на русском языке вышла замечательная книга Конрада Кокосы «Управление памятью в .NET для профессионалов».

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

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


Читать дальше →

Как научиться разработке на Python: новый видеокурс Яндекса

Reading time6 min
Views257K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →

Использование Graylog и NLog для сбора логов от приложений на C#. Личный опыт

Reading time14 min
Views22K

КДПВ

Хабр, приветствую!

Описанное ниже ни в коем случае не tutorial или best practice. Я решил всего лишь агрегировать и задокументировать свои достижения в поставленном вопросе.

Надеюсь, содержимое данной статьи позволит ищущим информацию по логированию почерпнуть что-то новое или принять какое-либо решение. И, само собой, надеюсь получить конструктивный фидбек от сообщества. Это даёт шанс делать что-то лучше.
Читать дальше →

Зачем нужно ASIO для аудиофилов?

Reading time8 min
Views261K
Каждый, кто сталкивался с вопросом о качественном воспроизведении звука рано или поздно встречается с аббревиатурой ASIO, как важной и необходимой опцией.



Что это и в чем практический смысл?
Читать дальше →

Книга «Конкурентность в C#. Асинхронное, параллельное и многопоточное программирование. 2-е межд. изд.»

Reading time6 min
Views17K
imageПривет, Хаброжители! Если вы побаиваетесь конкурентного и многопоточного программирования, эта книга написана для вас. Стивен Клири предоставляет в ваше распоряжение 85 рецептов работы с .NET и C# 8.0, необходимых для параллельной обработки и асинхронного программирования. Конкурентность уже стала общепринятым методом разработки хорошо масштабируемых приложений, но параллельное программирование остается непростой задачей. Подробные примеры и комментарии к коду позволят разобраться в том, как современные инструменты повышают уровень абстракции и упрощают конкурентное программирование. Вы научитесь использовать async и await для асинхронных операций, расширять возможности кода за счет использования асинхронных потоков, исследовать потенциал параллельного программирования с библиотекой TPL Dataflow, создавать конвейеры потоков данных с библиотекой TPL Dataflow, задействовать функциональность System.Reactive на базе LINQ, использовать потоково-безопасные и неизменяемые коллекции, проводить модульное тестирование конкурентного кода, брать под контроль пул потоков, реализовывать корректную кооперативную отмену, анализировать сценарии на предмет объединения конкурентных методов, пользоваться всеми возможностями асинхронно-совместимого объектно-ориентированного программирования, распознавать и создавать адаптеры для кода, в котором используются старые стили асинхронного программирования.
Читать дальше →

Простая самодельная VGA видеокарта

Reading time2 min
Views91K
Насколько мне известно, довольно многим интересно подключить микроконтроллер к обычному монитору и попробовать что-либо вывести на экран. В этой статье пойдёт речь о создании простейшей VGA-видеокарты на базе микроконтроллера atmega168-20.

Сценарии заражения в конкретных городах на основе датасета передвижения людей по России

Reading time17 min
Views57K

Статистика для Москвы в сценарии «люди стараются сидеть по домам, нет авиасообщения» — к ноябрю модель показывает 5 миллионов переболевших. Это ограниченный прогноз на основе неполных данных, ниже будут детали. За ноль принято 22 марта.

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

Кроме нас.

Туту.ру с радостью делится данными с журналистами уже 16 лет (огромная часть новостей в духе «Заметен аномальный спрос на Анталию» — это нарезка наших информационных витрин). Но мы исторически никогда не раскрывали сами данные по перемещениям людей целыми блоками.

Мы собрали датасет передвижений людей по России за апрель 2019 и передали его в сообщество Open Data Science. Если вы их не знаете — это объединение преимущественно русских дата-сайнтистов (но со всего мира), которое перерабатывает открытые данные на полезные модели. Некоммерчески.

Ниже выводы, таблица с прогнозом по каждому крупному городу, сам датасет (если вы хотите попробовать с ним что-то сделать). Про то, как работает модель и какая математика и ограничения лежат внутри, расскажет ODS через пару часов. И выложит исходники. UPD: вот.
Читать дальше →

Конвертация xls в xlsx и xml на C#

Reading time10 min
Views16K

В этой статье я постараюсь рассказать об одном из возможных путей конвертации документов формата xls в xml.


Непосредственно моя задача выглядела примерно так:


Дано:


  1. 1-2 дня времени на поиск и реализацию решения
  2. Найденное решение должно быть настолько бесплатным, насколько это возможно
  3. Известна примерная структура, размер и содержание файла, которые должны быть обработаны, что снимает необходимость читать графики, диаграммы и иные медианные из документа.
  4. Использовать Interop, равно как и иные библиотеки, которые требуют установки Office нельзя, так как это создает лишнюю нагрузку на сервер и требует дополнительной установки офисного пакета.
Читать дальше →

[Flipper Zero] отказываемся от Raspberry Pi, делаем собственную плату с нуля. Поиск правильного WiFi чипа

Reading time4 min
Views90K


Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущий пост [1].

Много всего произошло с момента первого поста про флиппер. Мы усердно работали все это время и проект претерпел радикальные изменения. Главная новость в том, что мы решили полностью отказаться от Raspberry Pi Zero и делать свою плату с нуля на базе чипа i.MX6. Это значительно усложняет разработку и полностью меняет всю концепцию, но я уверен, что оно того стоит.

Также мы до сих пор не нашли правильный WiFi чипсет, который поддерживает все нужные функции для WiFi-атак, при этом поддерживает диапазон 5Ghz и не устарел на 15 лет. Поэтому я приглашаю всех поучаствовать в нашем исследовании.

В статье я расскажу, почему мы приняли такое решение, на каком этапе находится проект, текущие задачи, и как можно принять участие.

Open Source Guides: Запуск проекта с открытым исходником

Reading time13 min
Views13K


Предисловие переводчика


Пару месяцев назад на Гитхабе случайно наткнулся на ссылку «Open source guides» и не мог оторваться. Где-то за неделю я внимательно прочитал все 10 разделов. Конечно, я и раньше знал про open source: читал разные статьи (например, «Понять Open Source»), использовал такие проекты в работе, обращался с вопросами к сообществам, сообщал о багах, рыскал в issues и, даже делал неуклюжие попытки что-то улучшать, хотя бы документацию. И само собой, сердцем я был с этими ребятами, которые делятся софтом и знаниями по его использованию. Тем не менее, понятие об open source у меня было скорее смутное и обрывочное. А эта статья добавила ясности.

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

Вне зависимости от вашего отношения к open source, думаю, вы найдёте в этой серии из 10 статей много интересных идей и фактов: организационных, психологических, юридических, этических и технических.

Я дал прочитать этот текст нескольким непрограммистам, они сказали, что всё поняли. А в заголовке статьи я намеренно поставил «исходник» без «кода», потому что данная тема актуальна не только для программистов, а почти для любой интеллектуальной деятельности в формате открытого проекта.
Читать дальше →

Как я самостоятельно выучил новый язык за 12 месяцев: тотальный гайд

Reading time31 min
Views164K
От А0 до B2 за год

Чуть больше года назад я был полностью монолингвом, говорящем только на английском, с нулевыми познаниями во французском языке. А спустя двенадцать месяцев, я с лёгкостью сдал международный экзамен DELF B2. Если вы не знаете, что значит «В2», посмотрите шкалу CEFR.

Более того, все мои успехи — это результат домашнего обучения и практики. Моё обучение было полностью самостоятельным, без каких-либо специальных учебных программ. Это стало возможным только благодаря множеству удивительных ресурсов, доступных в Интернете, многие из которых бесплатны. Немаловажно, такой результат был достигнут потому, что я отдавал предпочтение продуктивному общению, в частности, проводя много времени за разговорами с теми, кто хорошо знает французский.

Стоит отметить, что мой темп обучения был несколько агрессивным, поскольку за последний год я посвятил изучению французского много времени, однако, это всё ещё значительно меньше, чем фултайм обучение.

Не могу сказать, что полностью свободно говорю, но чтобы вы лучше понимали, каких результатов удалось достичь, приведу список того, что больше не вызывает у меня проблем:

  • Беседа на французском в течение нескольких часов;
  • Понимание различных видов французских СМИ (например, новости и видео на YouTube);
  • Чтение статей, написанных для носителей французского языка;
  • Построение мыслей на французском;

Конечно, я всё ещё очень далёк от уровня носителя. У меня точно есть слабые места, и я не могу выражаться на французском так же хорошо, как на английском. Тем не менее, я очень даже доволен своим уровнем владения французским и думаю, что многие изучающие язык тоже были бы довольны.
Читать дальше →

Information

Rating
5,603-rd
Registered
Activity