Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Применение AOP для отладки чужой библиотеки

Разработка веб-сайтов*
На Хабре уже поднималась тема аспектно-ориентированного программирования (Aspect-oriented programming, AOP). Этой парадигме уже не так мало лет, но ее использование отнюдь не повсеместно. В комментариях регулярно обсуждается, а нужна ли она вообще или для каких целей всё же выгодно ее использовать.

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

Приходилось ли вам когда-нибудь сталкиваться ситуацией, когда не работает связка вашего кода со сторонней библиотекой или фреймворком. И есть смутное подозрение, что ошибка где-то у вас, но без отладчика ее найти тяжело. А потом вдруг оказывается, что у библиотеки нет исходников, или по какой-то другой причине отладка не доступна…

Если вам интересно, что можно сделать в таких обстоятельствах, добро пожаловать под кат.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Просмотры1.9K
Комментарии 9

Оптимизация алгоритма проверки условия Делоне через уравнение описанной окружности и его применение

Программирование*Обработка изображений*
Из песочницы
Расскажу секрет о том, как быстро проверить выполнение условия Делоне для двух треугольников.
Собственно сама оптимизация описана немного ниже(см.«Оптимизация алгоритма проверки условия Делоне через уравнение описанной окружности»), но расскажу обо всем по порядку.

В моем случае триангуляция применяется в трассировке изображения, для разбиения плоскости на примитивные сектора (треугольники). Как известно, она делится также на несколько этапов: корректировка, выявление границ, обход границ, заметание контуров. Это в самом общем виде. Я бы хотел остановиться, думаю, на самом сложном этапе: заметание плоскости.
Итак приступим
Всего голосов 14: ↑11 и ↓3+8
Просмотры13K
Комментарии 61

JavaScript трассировка, отладка, профилирование – заполнение пробелов

Я пиарюсь
Из песочницы
Годами я использовал Chrome DevTools, Firebug и даже Opera Dragonfly для отладки, трасировки и профилирования моего JavaScript кода. Замечу, что использовал эти замечательные инструменты не только для работы с JavaScript, но и для отслеживания событий сети, отладки CSS, работы с DOM.

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

image

Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Просмотры12K
Комментарии 21

[Неочевидные алгоритмы очевидных вещей] Алгоритм 2. Принадлежность точки треугольнику в пространстве

КодобредАлгоритмы*Математика*
Recovery mode
Серия постов [Неочевидные алгоритмы очевидных вещей] будет содержать алгоритмы действий, которые кажутся очевидными и простыми, но если задать себе вопрос «как это делается?», то ответ является далеко не очевидным. Разумеется, все эти алгоритмы можно найти в литературе. Под катом располагается алгоритм определения принадлежности точки P треугольнику ABC в пространстве.
Читать дальше →
Всего голосов 52: ↑16 и ↓36-20
Просмотры20K
Комментарии 16

Analyst Days: Ирина Сурова — Использование трассировок на практике

Блог компании Лаборатория тестированияАнализ и проектирование систем*
Tutorial
Публикуем статью, написанную на основании предыдущего доклада Ирины Суровой с прошлой конференции Analyst Days. В этом году Ирина выступает не только в роли докладчика, но и члена программного комитета будущей московской конференции.


Читать дальше →
Всего голосов 21: ↑10 и ↓11-1
Просмотры7.8K
Комментарии 8

Альтернативные методы трассировки приложений

Блог компании Журнал ХакерОтладка*Реверс-инжиниринг*
image

Трассировка используется во многих видах ПО: в эмуляторах, динамических распаковщиках, фаззерах. Традиционные трейсеры работают по одному из четырех принципов: эмуляция набора инструкций (Bochs), бинарная трансляция (QEMU), патчинг бинарных файлы для изменения потока управления (Pin), либо работа через отладчик (PaiMei, основанный на IDA). Но сейчас речь пойдет о более интересных подходах.

Зачем отслеживать?


Задачи, которые решают с помощью трассировки можно условно разделить на три группы в зависимости от того, что именно отслеживается: выполнение программы (поток управления), поток данных или взаимодействие с ОС. Давай поговорим о каждом подробнее...
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Просмотры14K
Комментарии 5

Как реализовать конвертацию из растра в черно-белый вектор на сайте

Блог компании .ioРабота с векторной графикой*
Все графические файлы делятся на два глобальных типа — растровые и векторные. Иногда нужно сделать конвертацию из растра в черно-белый вектор. Например, для трассировки черно-белых иконок, QR-кодов, штрих-кодов, картинок с растровыми надписями, чеков или картинок в блоге.

image
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Просмотры22K
Комментарии 5

Анализ производительности игры на WebGL при помощи about:tracing

Высокая производительность*Google ChromeHTML*WebGL*
Перевод
Tutorial
То, что не поддаётся измерению, не поддаётся и улучшению.
— Лорд Кельвин

Чтобы ускорить игры, написанные при помощи HTML5, для начала нужно определить их узкие места. Подсчёт FPS – это неплохой метод, но чтобы увидеть полную информацию, необходимо разобраться в нюансах поведения Chrome.

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

Он показывает вам всё, что делает Chrome, причём настолько детально, что сперва это даже может ошеломить. Многие функции Chrome изначально предназначены для трассировки, поэтому прямо из коробки для оценки производительности можно использовать about:tracing.

Для этого просто напишите about:tracing в адресной строке.

image

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

image

Да, сначала выглядит запутанно.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Просмотры6.8K
Комментарии 4

3D-лаборатория для людей из МИЭМа, сующих голову внутрь прототипов трассировки печатных плат

Блог компании КРОКРабота с 3D-графикой*


В конце 2014 года был сдан в эксплуатацию новый учебно-административный комплекс МИЭМ НИУ ВШЭ в Строгине, где реализовано много разных крутых вещей для обучения студентов. Один из таких проектов — лаборатория для прототипирования электронно-вычислительных средств. Под это дело был выделен небольшой бюджет, выбраны мы в качестве подрядчика. И дальше мы решали не совсем типичную задачу по созданию комнаты, где вокруг вас летают разные виртуальные 3D-объекты. Например, чтобы было удобно разбираться в электронных микросхемах.

Для достижения эффекта обратной проекции (это когда ты проходишь мимо экрана, но тень при этом на него не отбрасывается) пришлось применять творческое воображение и как раз ту самую математику, которую бодро осваивают студенты.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Просмотры11K
Комментарии 1

Современное искусство на экране инженера хардверной компании

Блог компании YADROFPGA*Программирование микроконтроллеров*
Всем привет! Меня зовут Максим, я работаю инженером в одной компании. Фирма делает серверы и другое железо на POWER-архитектуре (какое и почему именно такое — позже расскажут другие), а я пока хочу показать участок системной платы сервера — это моя зона ответственности.

Вообще здесь будет нечто вроде рабочего журнала (worklog-а)— вместе с коллегами будем постить рассказы о зарождении жизни в железках. Сначала про сервер, а дальше и про остальное.

Трассировка системной платы сервера

Как сюда лучше всего поставить преобразователи напряжения?
Что ещё покажете?
Всего голосов 46: ↑45 и ↓1+44
Просмотры23K
Комментарии 86

Каскадная трассировка воксельных конусов в игре The Tomorrow Children

Разработка игр*Алгоритмы*
Перевод

Что: трассировка каскадов воксельных конусов


Для The Tomorrow Children мы реализовали инновационную систему освещения, основанную на трассировке воксельных конусов. Вместо использования традиционных систем прямого или отложенного освещения мы создали систему, освещавшую всё в мире трассировкой конусов через воксели.

Таким способом обрабатывается и прямое, и отражённое освещение. Он позволяет нам рассчитывать на PlayStation 4 три отражения глобального освещения в полудинамических сценах. Мы трассируем конусы в 16 фиксированных направлениях через шесть каскадов 3D-текстур и выполняем поглощение света с помощью направленного затенения в экранном пространстве (Screen Space Directional Occlusion) и сферическими окклюдерами динамических объектов для получения конечного результата. Движок также поддерживает модель сферического освещения на основе гармоник, что позволяет рассчитывать освещение частиц и реализовать спецэффекты, например аппроксимированное подповерхностное рассеяние (approximating subsurface scattering) и преломляющие материалы.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Просмотры9K
Комментарии 5

[Екатеринбург, анонс] java.ural.Meetup @2 — анонс второго Java-митапа + видео докладов с java.ural.Meetup @1

Блог компании КонтурПрограммирование*Java*.NET*Конференции
В первый день зимы, 1 декабря, приглашаем принять участие во второй встрече java.ural.Meetup, которая пройдёт в конференц-зале в новом офисе Контура по адресу ул. Малопрудная, 5. Начало в 14:00.

Бонусом публикуем записи докладов со встречи java.ural.Meetup @1, прошедшей 15 марта в Екатеринбурге.

Что за java.ural.Meetup?


В начале года среди разработчиков Екатеринбурга разошёлся опрос «А нужны ли новые Java-движухи?». Была собрана положительная обратная связь — так мы решили, что митапам быть. Спустя почти два месяца был анонсирован митап. Ещё через две недели первая встреча java.ural.Meetup собрала более 60 разработчиков из Екатеринбурга. На встрече разработчики из Контура рассказали о своих актуальных задачах.

Под катом анонс второй встречи и видео докладов с первого митапа.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Просмотры1.9K
Комментарии 9

Логирование как способ отлаживать код

Тестирование IT-систем*Программирование*Анализ и проектирование систем*Отладка*
Из песочницы
Почему так важно запретить самому себе отладку руками?

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

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

Я уже не говорю о том, что люди в командах меняются, команды меняются и так далее. Человеко-часы уходят на одно и то же. Перестаньте делать это. Я серьёзно. Возьмите ответственность за других людей на себя. Помогите им не переживать тот же самый участок вашей жизни.
Читать дальше →
Всего голосов 44: ↑35 и ↓9+26
Просмотры46K
Комментарии 70

Трассировка печатной платы в KiCAD

Электроника для начинающих
Tutorial


Введение



Одним из критических замечаний к предыдущей статье было следующее: дескать фу таким быть, стрелять из пушки по воробьям да ещё проприетарным софтом за 10000$, к тому же наверняка украденным с торрентов. Оставляя за кадром моральную сторону вопроса, а так же презумпцию невиновности, обратимся к следующему вопросу — а что там у нас имеется в Open Source секторе, пригодное для решения задач проектирования электронной техники. В частности изготовления печатных плат. Наиболее достойной, на мой взгляд, оказалась кроссплатформенная программа KiCAD, распространяемая по лицензии GNU GPL. Имеются версии для Linux, Windows и macOS.

Рассмотрим этот инструмент подробнее применительно к уже решенной мною задаче — трассировке печатной платы для преобразователя уровней на базе MAX232.

Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Просмотры81K
Комментарии 69

SamsPcbGuide, часть 4: Трассировка сигнальных линий. Минимизация индуктивности

Производство и разработка электроники*Электроника для начинающих
Мир, трассировка печатной платы, май. Потому что трассировка печатной платы — это труд. И эта статья открывает целый блок, цель которого дать правильные инструменты для этой задачи. В ней обосновывается важность контроля траектории возвратного тока и минимизации индуктивности контура тока критических сигнальных линий, а также даются рекомендации по их оптимальной трассировке.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Просмотры13K
Комментарии 16

SamsPcbGuide, часть 5: Трассировка сигнальных линий. Искажения в линии и согласование импедансов

Производство и разработка электроники*Электроника для начинающих
Продолжаем рассмотрение трассировки печатных плат. Эту статью публикую из своего родного города Северодвинска, с благодарностью своим школьным учителям. Тема, которой она посвящена, базовая, и оттого важно с ней разобраться. Здесь будут рассмотрены отражения в сигнальных линиях и, как всегда, будут даны рекомендации по снижению искажений сигнала, в том числе с помощью различных методик согласования линий.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Просмотры10K
Комментарии 3

Blender: 3D-модель микросхемы для подключения в библиотеке KiCad

Работа с 3D-графикой*Производство и разработка электроники*
Tutorial
Когда проектируешь печатные платы, часто возникает потребность добавить трёхмерную модель электронного компонента на плату. Но не всегда получается найти готовый файл в интернете. Нарисовать такую модель с помощью CAD-программы труда не составляет: задать параметры корпуса и выводов дело десяти минут, если, конечно, нужна габаритная модель а не фотореалистичная картинка.

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

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

Читать дальше →
Всего голосов 54: ↑52 и ↓2+50
Просмотры8.1K
Комментарии 21

SamsPcbGuide, часть 6: Трассировка сигнальных линий. Модели потерь и перекрёстных помех

Производство и разработка электроники*Электроника для начинающих
Очень надеялся опубликоваться с настроением «Россия — в полуфинале», но немного не хватило. Хотя для меня всегда характер был выше результата, и характер я видел. Спасибо парням. Продолжаем совершенствоваться в том, что умеем. Они — в футболе, мы — в проектировании печатных плат. Поехали, шестая часть. В ней рассматривается влияние потерь в линии на длительность фронта сигнала, приводится модель перекрёстных помех и даются рекомендации по их снижению.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Просмотры6.3K
Комментарии 2

SamsPcbGuide, часть 7: Трассировка сигнальных линий. Дифференциальные пары

Производство и разработка электроники*Электроника для начинающих
Это седьмая статья из цикла и заключительная в блоке, посвящённом трассировке сигнальных линий. Дальше есть идея развивать проект и выходить на руководство по проектированию печатных плат в виде удобной книги, поэтому по публикациям, возможно. будет пауза. В статье рассматривается важная тема — дифференциальная схема передачи данных, получающая всё большее распространение в современных системах, и предлагаются рекомендации по трассировке дифференциальных пар, позволяющей обеспечить преимущества этой схемы.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Просмотры13K
Комментарии 16

Нюансы работы инструментов Target Length и Tuning Meter в PADS Professional/Xpedition

Блог компании НанософтCAD/CAM*Производство и разработка электроники*Лайфхаки для гиковЭлектроника для начинающих

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

В этой статье я попытаюсь объяснить логику работы инструментов Tuning Meter и Target Lengths, так как они не всегда рассчитывают значения длины проводников одинаково.

Как всегда, все самое интересное под катом.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Просмотры1.2K
Комментарии 0
1