sitelogo

By

Простейший программатор JDM для PIC на пассивных компонентах

За основу предлагаемого программатора взята публикация из журнала «Радио» №2, 2004г, «Программирование современных PIC16, PIC12 на PonyProg». Это мой первый программатор, который я использовал для прошивки PIC микросхем дома. Программатор представляет собой упрощенный вариант JDM программатора, оригинальная схема имеет преобразователь RS-232 на TTL в виде микросхемы MAX232, она более универсальна, но ее «на коленке» уже не соберешь. Данная схема не имеет вообще ни одного активного компонента, не содержит дефицитных деталей и очень проста, может быть собрана без применения печатной платы.

Читать далее

By

Тестирование дальнобойных WiFi адаптеров в Linux

За определенное время у меня собралась небольшая коллекция WiFi адаптеров, на троих из которых имеются разъемы для подключения внешней антенны. А ещё у меня есть два типа антенн — несколько штук классических всенаправленных и одна направленная панельная. Также у меня есть некоторый опыт использования этих адаптеров в Linux. Надеюсь, это поможет кому-нибудь сделать правильный выбор при покупке. Хотя, я считаю, что ни один адаптер из описываемых трёх не оказался лишним, и в каждой конкретной ситуации выручает.

Читать далее

By

Advanced marshaling в C#

Сейчас работаю над сложным, но интересным проектом в C# с кучей хаков и перехватчиков API и COM интерфейсов. И у меня появилось несколько новых вещей которые я бы хотел записать. Надеюсь поможет кому-то при написании чего-то подобного, не сорвав сроки. Подобная документация конечно имеется в интернете (маршалинг в С#) тем не менее я хочу расширить тему и остановиться на конкретных примерах импорта из DirectX и других библиотек.

В сети есть полно разных оберток для использования этих технологий, и все же, мне не нравится использовать непереносимые, монструозные решения типа C++/CLI или кучи дополнительных DLL, когда размер DLL обертки имеет размер, приближенный к самой DLL, которую импортируем (пример — SlimDX).

Читать далее

By

Синхронизация OpenSSL в многопоточных приложениях

Сегодня на работе пофиксил багу, связанную с зависанием при выходе из приложения. Реализация класса TLS сокетов иллюстрировала попытки разработчика впихнуть невпихуемое, но показать этот код я к сожалению не могу. Если кратко, были три основных метода Receive, Send и Close, работавшие из разных потоков. В каждом методе было по мьютексу, так как класс еще и обязан был поддерживать блокирующие и неблокирующие сокеты. Если бы использовался один мьютекс на весь класс, тогда блокирующий SSL_read мог бы заблочить все остальные потоки, когда те попытались бы записать данные или закрыть сокет.
Читать далее