Search
Write a publication
Pull to refresh
196
0.1
Андрей Дмитриев @AndreyDmitriev

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

Send message

Intel® Inspector XE 2013: автоматическая верификация и отладка в реальном времени

Reading time8 min
Views10K


Тестирование и поиск ошибок – неотъемлемая и не самая интересная часть процесса разработки ПО. Для избавления себя от рутины этот процесс все стараются автоматизировать. И если для проверки функционала приложения создаются специализированные самодельные тесты, то поиск ошибок общего типа далеко не всегда ими покрывается. Проверяется ли, например, ваше приложение на наличие утечек памяти или гонок данных? В этой статье рассмотрим, как использовать обновлённый Inspector XE 2013 в двух ипостасях:

  • Для регулярного автоматического тестирования (regression testing)
  • Для ручного поиска причин проблемы в паре с отладчиком

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

Автоматизируем сбор информации о падениях программы

Reading time8 min
Views13K


Перефразируя известную поговорку: «не делает багов тот, кто ничего не кодирует». Каждый разработчик умеет и любит делать баги, но не любит потом их исправлять. Ошибки в коде в одном случае приводят просто к некорректной обработке данных программой, а в другом — к исключениям (вылетам, падениям, крашам). В этом посте я расскажу о том, как можно автоматизировать сбор данных о краше программы, чтобы сильно облегчить себе жизнь при разборе и устранении ошибок.
Читать дальше →

Battle City на unity за 1 день?

Reading time2 min
Views61K

Возможно ли сделать простенькую игру за один день на unity, не имея опыта в этом?
Вопрос был риторическим, пока мы не попробовали.
Есть такой проект — 2niversity. Появился этот проект недавно, но их цель мне очень понравилась — собирать молодежь и абсолютно бесплатно организовывать для нее однодневный интенсив с целью повышения навыков в какой-либо технологии

Когда мне позвонил менеджер этого проекта и предложил попробовать провести подобное мероприятие на unity, я задумался.
С одной стороны лично мне все казалось просто — 5-7 часов на простенькую игру и все готово, с другой стороны люди, которые участвуют в роли учеников, должны будут впервые использовать этот движок. Возможно им вообще впервые придется попробовать себя в роли создателя игр. Если интересно, чем закончился данный эксперимент, прошу под кат
Читать дальше →

Разработка через страдание

Reading time6 min
Views55K
От переводчика:
Немало копий сломано в спорах о том, когда уместнее KISS, а когда DRY, когда лучше как можно быстрее и проще решить задачу любыми средствами, а когда стоит создавать красивые и универсальные абстракции. Натан Марц, автор популярного фреймворка Storm, используемого в Твиттере, предлагает свой вариант. Чтобы не создавать тонны бесполезного кода ради абстрактной универсальности и в то же время не позволять системе превращаться в кашу из костылей, он использует «разработку через страдание» (suffering oriented programming).



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

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

Я придумал такую мантру разработки: «Сначала сделай, чтобы было. Затем — чтобы было красиво. Затем — чтобы было быстро».
Читать дальше →

Упражнения для тренировки мозга

Reading time3 min
Views126K

В силу склада ума или давнего увлечения скорочтением, мнемотехникой и прочим, у меня был повышенный интерес к играм состоящим из набора упражнений для тренировки мозга(BrainChallenge, Dr.Kawashima и др.). Переиграв практически во все что было на десктопе и nds, появилось желание использовать такие игры для каждодневных тренировок, но для этого они не совсем подходят(в тексте объясню почему). Поэтому на досуге решил написал небольшой сайт с набором такого рода упражнений.
Читать дальше →

Преодоление разрыва удаленного соединения при отсутствии действий пользователя

Reading time7 min
Views83K
При работе с GUI и терминальными приложениями нередко случается, что пользователь, работая в режиме удаленного доступа (как правило, через Интернет), покинув компьютер минут на 15, по возвращении обнаруживает, что программа зависла. На любое действие она отвечает ошибкой, содержащей примерно такие фразы: «Потеряна связь с сервером», "[WINSOCK] virtual circuit reset by host" и т.п. Наблюдается такое и при выполнении «долгоиграющих» методов (запросов к серверу), в которых не предусмотрен вывод прогресс-бара или какая-либо интерактивность.

Данная проблема характерна не только для GUI и терминальных решений на базе СУБД Caché и Ensemble компании InterSystems, а вообще для любого клиент-серверного взаимодействия по протоколу TCP/IP. Обычно она решается на прикладном уровне путём периодического обмена пустыми сообщениями специального вида, предназначенными лишь для того, чтобы просигнализировать о том, что приложение «живо».

Ниже о том, как можно решать эту проблему без программирования.
Читать дальше →

Необычная конструкция робота MorpHex

Reading time1 min
Views85K
Робот в шарообразном корпусе может катиться в указанном направлении, а в случае необходимости — раскрывается и идёт на шести конечностях.



Норвежский инженер Каре Халворсен (Kåre Halvorsen) уже много лет увлекается конструированием роботов. В 2006 году он сделал первого робота с шестью ногами, и с тех пор специализируется на бионике, то есть применении технических конструкций, которые можно встретить в природе: например, у насекомых или муравьёв. Однако, его робот MorpHex совершенно ни на что не похож.
Читать дальше →

Windows 8 – да будет SMEP!

Reading time5 min
Views53K

С приходом нового поколения процессоров Intel на базе архитектуры Ivy Bridge было представлено новое аппаратное средство безопасности. Оно называется Intel SMEP. Как и бит NX, предотвращающий исполнение кода на странице памяти, оно добавляет головной боли при эксплуатации уязвимостей режима ядра.

В свою очередь Microsoft реализовала поддержку SMEP в Windows 8, таким образом сделав эту ОС ещё безопасней. Однако, первая реализация «в лоб» поддержки SMEP получилась с небольшим изъяном, благодаря которому у атакующего всё ещё есть возможность относительно безболезненной для него эксплуатации уязвимостей.
Что такое SMEP?

Антипиратский робот в режиме паранойи

Reading time2 min
Views30K
Правообладатели присылают в Google всё больше запросов на удаление «пиратского контента» из поисковой выдачи, в соответствии с законом DMCA. Компания Google послушно выполняет запросы, но после этого публикует информацию об удалённых URL. Таким образом, усилиями правообладателей пополняется база нелицензионного контента.

Больше всего запросов на удаление в Google присылается от имени Microsoft — каждый день приходят тысячи адресов, где лежат пиратские версии Windows 8, Visual Studio или Office 2013. За последний год из индекса Google было удалено 4 826 032 URL с пиратскими продуктами Microsoft (в среднем, по 13186 в день).

Недавно автоматический фильтр борцов с пиратством дал конкретный сбой. В список на удаление, присланный агентством LeakID по запросу Microsoft, попали сайты Википедии, TechCrunch, BBC, CNN, различные научные журналы и даже несколько сайтов правительства США. Якобы, на них лежит «пиратка» Windows 8.
Читать дальше →

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть вторая)

Reading time8 min
Views14K
Это обещанное дополнение к моему предыдущему посту, в котором рассказывается про альтернативную технику установки ловушек на функции. Одним из недостатков реализации ловушек в предыдущем посте было постоянное переписывание кода в начале перехваченной функции. В качестве альтернативы было упомянуто решение, которое не требовало бы постоянной перезаписи. Принципиальная схема его работы предоставлена здесь:

image
Исходники, детали и пояснения под катом…
Читать дальше →

Перевод: Чему я научился за 30 лет программирования

Reading time5 min
Views78K
Оригинальная статья Джона Грэхем-Камминга.
Переведено и опубликовано с разрешения автора.


Я занимаюсь программированием уже более 30 лет, начиная с машин, уже устаревших (на процессорах Z80 и 6502) до современных, используя языки BASIC, ассемблера, C, C++, Tcl, Perl, Lisp, ML, occam, arc, Ruby, Go и многие другие.

Далее следует список того, чему я научился.
Читать дальше

Создание двухсторонней платы (видео)

Reading time1 min
Views43K
Привет хабр!

Думаю, что технология ЛУТ не является ни для кого секретом. Редкий радиоэлектронный блог обходится без статьи о том, как заутюжить печатную плату. Но тема создания двухсторонних плат почему-то освещается гораздо реже. Хотя они становятся все более востребованы: мы используем микросхемы в мелких и многоногих корпусах, и стараемся уменьшить размеры платы.

Хочу поделиться с вами видео, которое я сделал по ходу производства очередной платы. Оно неплохо демонстрирует один из методов создания двухсторонней платы.


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

Перехват видео в браузере или TCP сниффер под Windows на коленке (часть первая)

Reading time19 min
Views40K
Однажды, не очень давно, мне порекомендовали фоновую качалку потокового видео под названием Jaksta, которая позволяет записывать потоковое видео на диск прямо во время просмотра YouTube, Facebook видео, GoogleVideo и так далее. В результате ее установки я получил стойкий BSOD при каждой загрузке Windows. Переключившись в Safe Mode я снес нафиг это творение, но возникли вопросы.
Краткое изучение софтины показало что она устанавливет NDIS Miniport драйвер, который конкретно в моей системе стал умирать при загрузке. «Нафига такие сложности?», подумал я и решил поэкспериментировать с реализацией перехвата потокового видео из браузера без всяких драйверов.
Читать дальше →

Space Engine — Вселенная на ладони

Reading time8 min
Views100K
My God, it's full of stars!
Arthur C. Clarke

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

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

Но вот, чуть больше года назад, я совершенно случайно наткнулся на вселенную Space Engine, и она просто взорвала мне мозг и размазала его по полу своим масштабом и невероятной детализацией.
Читать дальше →

Руководство новичка по эксплуатации компоновщика

Reading time32 min
Views217K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →

Реализация синглтона в многопоточном приложении

Reading time14 min
Views17K


Введение


В настоящий момент сложно себе представить программное обеспечение, работающее в одном потоке. Конечно, существует ряд простых задач, для которых один поток более, чем достаточен. Однако так бывает далеко не всегда и большинство задач средней или высокой сложности так или иначе используют многопоточность. В этой статье я буду говорить об использовании синглтонов в многопоточной среде. Несмотря на кажущуюся простоту эта тема содержит множество нюансов и интересных вопросов, поэтому считаю, что она заслуживает отдельной статьи. Здесь не будет затрагиваться обсуждение того, зачем использовать синглтоны, а также как их правильно использовать. Для прояснения этих вопросов я рекомендую обратиться к моим предыдущим статьям, посвященным разным вопросам, связанным с синглтонами [1], [2], [3]. В этой статье речь будет идти о влиянии многопоточности на реализацию синглтонов и обсуждению вопросов, которые всплывают при разработке.
Читать дальше →

Как я СКАДу писал. Часть третья

Reading time8 min
Views11K
Снова всем вечер добрый.
Продолжаю цикл своих статей, предыдущая находится здесь.
Чем дальше в лес, тем толще партизаны, а времени в сутках все меньше и меньше. Но не смотря на своеобразный перегруз я все же упорно продолжаю совершенствоваться и прилагать свою неуемную фантазию с инженерными помыслами к своему детищу, на которое уже основательно подсел. На текущий момент на моей системе уже сделаны и внедрены 5 реальных объектов, три из которых сделали любопытные сторонние разработчики, которым было интересно пощупать систему в деле. Хоть объем их не так и велик, но все же это уже что-то, референс растет. Сам я, не размениваясь по мелочам, как тот, которому больше всех надо, лезу в самое пекло — итогом которого уже стали две крупные разработки на моей скаде: на 3000 точек ввода/вывода (система работает уже почти полгода и сейчас перешла в промышленную эксплуатацию) и вот недавняя на 5500. Но обо всех новшествах чуть ниже и по тексту...
Читать дальше →

Функциональное программирование для всех

Reading time33 min
Views354K

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

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

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →

Умный дом от любителя или HomeMatic & Co

Reading time14 min
Views145K
В этом повествовании я бы хотел описать свой собственный опыт в области домашней автоматизации на уровне любителя. В своих экспериментах я столкнулся с довольно простыми в использовании системами HomeMatic и X10, применение которых и хотел бы здесь затронуть.
В новостях часто появляются сообщения, что можно управлять чайником или новогодней гирляндой с iPhone (причем обязательно с iPhone, а то новость не будет понята воспринята массами). При этом у меня каждый раз появляется негодование: ну почему люди так бурно реагируют на такие сообщения? Ведь уже давно существуют решения, которые позволяют это сделать. При этом управлять домом из любого браузера, и да… с iPhone тоже!


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

Wi-Fi: неочевидные нюансы (на примере домашней сети)

Reading time14 min
Views1.4M
Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
[!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
Читать дальше →

Information

Rating
5,636-th
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity