Search
Write a publication
Pull to refresh
27
0
Артур @avrfun

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

Send message

Юнит-тестирование для чайников

Reading time15 min
Views1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper

Вышел бесплатный профессиональный видеоредактор Lightworks

Reading time3 min
Views102K
“Бэтмен навсегда”, “Остров проклятых”, “Отступники”, “Король говорит”, “Авиатор”, “Карты, деньги, два ствола”, “Криминальное чтиво” — это далеко не полный список фильмов, смонтированных с помощью Lightworks за его более чем двадцатилетнюю историю. С 1989 года Lightworks сменил несколько владельцев, пока в 2009 его не приобрела компания EditShare — производитель систем хранения видео для ТВ и киностудий. Новые хозяева решили порвать с традицией продавать подобный софт за тысячи долларов, и теперь профессиональная версия Lightworks стоит 60$, а базовая — бесплатна. Причём эта “базовая” версия мало чем отличается от платной и не уступит многим профессиональным версиям других редакторов. Но и это ещё не всё — EditShare собирается в ближайшем будущем выпустить версии для Linux и Mac (именно в таком порядке) и открыть исходники.


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

27+ ресурсов для онлайн-обучения

Reading time5 min
Views971K

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

Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

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

Обработка Excel файлов с использованием Python

Reading time4 min
Views209K
image
По работе пришлось столкнуться с задачей обработки xls файлов средствами python. Немного по гуглив, я натолкнулся на несколько библиотек, с помощью которых можно работать с файлами excel.
Читать дальше

Немного про py2exe

Reading time4 min
Views128K
Есть такое приложение. Называется py2exe. Оно позволяет упаковать, сконвертировать программу на python в exe файл (ну, точнее, exe и еще кучку других). Зачем оно все надо? Ну, далеко не у всех пользователей windows установлен интерпретатор python с нужными библиотеками. А вот упакованная программа в идеале должна запуститься на любой windows-машине.
Читать дальше

Управление рисками интернет-стартапа. Часть первая

Reading time17 min
Views56K
Написано по личному опыту и впечатлениям. Это не полный материал, скорее небольшая выжимка.
Пожалуйста, отметьте, что понравилось, напишите в личку замечания и вопросы.
Читать дальше →

Простое устройство мониторинга энергопотребления

Reading time7 min
Views176K
Сейчас все больше и больше людей интересуются темой мониторинга потребляемого электричества.
В некоторых случаях эти знания имеют очень большое значение (например, для вашего загородного дома выделили 8кВт мощности и вам необходимо понять, насколько близко вы находитесь к разрешенному пределу и т.п.).
Есть уже готовые изделия, одно из них уже было героем обзора на Хабре.

Но мы не из тех, кто ищет легких путей и сделаем вот такое устройство:

Об устройстве и том самом датчике, что предлагается подключить...

NooLite-2, или умный дом для чайников

Reading time16 min
Views157K
После успешной проверки работы системы, я замахнулся на замену всех выключателей в доме на пульты управления, и построение «умного дома», хотя бы в части освещения.
image
В итоге получилась система, сочетающая включение/выключение света как с помощью выключателей, так и через интернет — с помощью кнопок на веб-страничке.
Как это получилось — читайте под катом.
Читать дальше →

Немножко философский пост про то, как мы в глаза смотрели

Reading time10 min
Views62K
В статье я расскажу небольшую историю про маленькую техническую задачку и о том, как её решали разные люди вокруг. Быть может этот рассказ поможет читателю вынести несколько уроков о том, какие временами встречаются ошибки.
Немножко матана инклудэд.
Три цвета
Идея распознавать людей по радужной оболочке появилась в далёком 1987 у доктора Джона Доугмана и была запатентована в 1989. Примерно тогда же появился прототип. На тот момент это была вершина технологии. Пару лет до первой коммерческой цифровой камеры + алгоритм обработки изображения на компьютерах уровня i386/i486. До сих пор я не представляю, как можно получать на таком оборудовании стабильный результат.
Задачка о которой я хочу рассказать появилась на свет где-то в 2006-2009 годах. Процессоры к этому времени несколько ускорились, появились хорошие камеры, патент 1989 года истёк и системы распознавания по глазам теперь получил право делать каждый. Люди, которые решили сделать клон системы захотели использовать современные технологии и улучшить алгоритм. Самое первое, что бросалось в глаза — старый алгоритм сравнения глаз использовал изображение глаза в близком ИК диапазоне. То, что глаза бывают цветными не учитывалось.

Как научиться писать книги

Reading time9 min
Views534K
Полгода назад здесь была опубликована статья, которая меня возмутила. В комментариях я обещал, что напишу свою версию. С другой стороны мне не хотелось этого делать, так как получу закономерные вопросы: «А ты собственно кто такой?». Не люблю подписываться в интернет-постах, у меня портилось мнение о многих писателях после того, как читал их жж-блог. Читаешь книгу, думаешь: «Классный чувак!», почитаешь блог, мнение меняется: «Что за кретин?». Такая разница возникает из-за того, что книга проходит пост-обработку, много раз редактируется.
Данная статья переписывалась несколько раз, в этом варианте, считаю, что она получилась наиболее взвешенной. Статья вполне подходит для хабрахабр, так как от людей технической направленности выходило немало известных произведений. И кому-то из вас захочется написать свою историю.

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

Параллельное программирование в Python при помощи multiprocessing и shared array

Reading time6 min
Views102K

Введение.


Python замечательный язык. Связка Python + NumPy + Matplotlib, на мой взгляд, сейчас одна из лучших для научных расчётов и быстрого прототипирования алгоритмов. Но у каждого инструмента есть свои светлые и тёмные стороны. Одной из самых дискутируемых особенностей Python является GIL – Global Interpreter Lock. Я бы отнёс эту особенность к тёмной стороне инструмента. Хотя многие со мной не согласятся.

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

Один из способов преодоления GIL при помощи потоков на C++ был недавно рассмотрен в статье: Использование Python в многопоточном приложении на C++. Я же хочу рассмотреть другой способ преодоления ограничений GIL, основанный на multiprocessing и shared array. На мой взгляд, этот способ позволяет достаточно просто и эффективно использовать процессы и разделяемую память для прозрачного параллельного программирования в стиле множества потоков и общей памяти.
Читать дальше →

LG SmartHome в каждый дом

Reading time2 min
Views15K
Всем привет! Не так давно прошла международная выставка бытовой электроники CES 2013, и многие компании показали свои новинки, разработки, видение будущего и прототипы устройств, которыми, по их мнению, люди будут пользоваться в ближайшем будущем. А есть компании, которые принесли технологии завтрашнего дня в сегодняшний.

Image #1694468, 415.2 KB

Одна из таких технологий — “Умный дом” — была продемонстрирована нами на CES, а главное — весь функционал присутствует в уже серийно выпускающихся элементах, а подход к организации системы и управлению техникойотличается от того, что уже есть на рынке.
Читать дальше →

Симисторный регулятор мощности с микроконтроллерным управлением

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

Итак, начнём с теории. Все знакомы с так называемой широтно-импульсной модуляцией, позволяющей управлять током в (или, что реже, напряжением на) нагрузке с максимальным КПД. Лишняя мощность в таком случае просто не будет потребляться, вместо того, чтобы рассеиваться в виде тепла, как при линейном регулировании, представляющем собой не более чем усложнённый вариант реостата. Однако, по ряду причин такое управление, будучи выполненным «в лоб», не всегда подходит для переменного тока. Одна из них — бо́льшая схемотехническая сложность, поскольку требуется диодный мост для питания силовой части на MOSFET или IGBT транзисторах. Этих недостатков лишено симисторное управление, представляющее собой модификацию ШИМ.
Читать дальше →

TextTest — кроссплатформенный фреймворк на python для тестирования GUI и не только. Часть 1

Reading time7 min
Views13K
Лого Предлагаю поговорить сегодня о замечательном фреймворке для тестирования TextTest. Это кроссплатформенный инструмент для функционального тестирования с «record-replay» парадигмой. Как следует из названия TextTest пропагандирует довольно необычный на сегодняшний день подход текст-ориентированного тестирования, который позволяет легко и просто писать и читать тесты. Помимо TextTest мы поговорим о StoryText — являющимся строго говоря отдельном инструменте для тестирования GUI, но совместно с TextTest он позволяет делать это гораздо приятнее. Так же упомянем о третьем модуле от автора — CaptureMock.

Всем кому интересна эта тема, прошу под кат

Термометр, джойстик и ноутбук в одном шкафу, не считая ардуино

Reading time8 min
Views76K

С чего всё началось


Однажды давным давно стоял у меня в шкафу в прихожей домашний сервер под дебианом. Работал круглосуточно, поддерживал вторичный DNS, бэкапы делал, торренты покачивал, служил медиасервером, и прочее, и прочее (ну вы сами знаете для чего бывает нужен домашний сервер). В то же самое время охота мне было иметь указатель погоды на улице, чтобы перед выходом из дома нужной тёплости штаны надевать. Термометр за окном на эту роль не годился — из-за всяких паразитных воздушных потоков у стен многоэтажки показывал он что попало, да и кроме температуры для правильного выбора штанов интересно знать ветер и влажность. В итоге у сервера появился монитор на наружной поверхности шкафа. А сам сервер научился забирать сведения о текущей погоде в формате METAR из ближайшего аэропорта (он относительно недалеко, и его метеосводка очень близка к тому, что за дверью), а сведения о прогнозе на ближайшие сутки в XML с gismeteo.ru. Все это через простекций веб-интерфейс показывалось автоматически стартовавшим при загрузке сервера браузером. Потом на страничку добавились сведения о загруженности канала в интернет, текущем состоянии торрентов (у rTorrent-а есть соответствующий программный интерфейс для этого), изображение камеры видеонаблюдения за дверью, что-то ещё… Выглядело это примерно так:
image

Через некоторое время стали очевидными два недостатка. Во-первых, чтобы поглядеть, скажем, температуру за бортом приходилось включать монитор (держать его постоянно включенным плохо — и монитор деградирует, и свет от него ночью мешает). А включается монитор не мгновенно, и эти вот несколько (казалось бы!) секунд раздражают. Во-вторых, полное отсутствие устройств управления существенно ограничивает возможности применения этого хозяйства. Сильно, например, не хватало возможности управления камерой наблюдения (она с приводом по курсу и тангажу). А потом вообще все кончилось. Сервер после ряда модернизаций и роста нагрузки стал перегреваться в шкафу, а домочадцам надоел его шум. В конце концов он был сослан за пределы жилых помещений. А потребность в термометре и всём другом осталась…
Ставим задачу

Проект «робот-грузчик»: определение ориентации

Reading time8 min
Views17K
Месяц назад я писал об определении моим роботом-грузчиком собственного положения. (Жаль, ту статью я запостил в неудачное время в ночь на субботу, так что её мало кто увидел.) Как я отметил, показания колёсных датчиков позволяют роботу определять своё положение достаточно точно — медленно накапливающаяся ошибка корректируется, как только робот сканирует баркод на любой из полок склада. С другой стороны, накапливающуюся ошибку направления корректировать было нечем.

Я обсудил свои затруднения с девушкой-гуманитарием, и спросил, какие ей известны способы ориентации в пространстве. По её словам, в Лондонском музее науки она застала экспозицию, посвящённую ориентации муравьёв по виду вертикально вверх над головой. Посетителям предлагалось взять зеркало и идти по комнате, разглядывая в это зеркало узоры на потолке и ориентируясь лишь по ним. (Карта потолка прилагалась.)

Я решил проверить: что видит на потолке склада мой робот?

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

Программирование под Android для начинающих. Часть 1

Reading time5 min
Views1.2M
Здравствуйте. Сегодня на глаза попался пост о курсе программирования под Android на сайте Linux Foundation, а вместе с ним — и немало комментариев о том, что хотелось бы видеть и перевод этих уроков. Поскольку я сейчас, после четырех лет разработки под микроконтроллеры, начал изучать и программирование для мобильных устройств, то параллельно решил сделать перевод первой части урока.

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

Одно предложение, которое делает нас сильнее

Reading time2 min
Views93K
Это мой самый короткий топик, суть которого в одном предложении. Часто именно с этого предложения начинается успешный стартап, бизнес и любое другое начинание.

Это шаблон описания сути вашей компании или проекта в одном предложении. Я открыл его для себя во время стажировки в США. Составив его, мы реально становимся сильнее. В последствии мне это помогло выбрать правильный курс, сфокусироваться и расставить приоритеты.
Читать дальше →

OpenWeatherMap – как энтузиасты делают погоду

Reading time7 min
Views121K

Мы живем в удивительное время, то что раньше казалось очень сложным внезапно становится доступным и простым. Задачи для решения которых надо было создавать научные институты и крупные организации, сейчас решаются саморганизованными группами энтузиастов. Энтузиасты создают карты и энциклопедии снимают фильмы и разрабатывают software. Я хочу рассказать о той области, в которую этот свежий ветер перемен еще не подул в полную силу – это погода. И нашим проектом – OpenWeatherMap — мы хотим изменить эту ситуацию!

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

Играемся с изображениями в Python

Reading time3 min
Views256K
В этой статье я хотел бы разобрать различные способы преобразования изображений с помощью Python. Для примеров я решил взять несколько наиболее известных. В статье не будет ничего сложного, она ориентированна в основном на новичков.
Картинка для испытаний:


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

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity