Как стать автором
Обновить
9
0.9

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

Отправить сообщение

Аналоговые индикаторы против цифровых. Жертвы маркетинга против ретроградов

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров5.8K

На просторах сети частенько можно наткнуться на споры про то, что же лучше - стрелочные приборы или цифровые.

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

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии97

Display scaling в Linux. Часть 2 — определение scale factor для X11 приложений

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.6K

В первой части были рассмотрены системные настройки масштабирования, предоставляемые встроенными утилитами, и набор возможностей отличается кардинально. Почему? Потому что в Linux нет единого API для работы с масштабированием, каждое окружение конфигурирует по своему и каждый UI-toolkit определяет их по своему, в итоге шанс того, что что-то где-то будет отображаться криво очень велик.

В этой статье мы рассмотрим то, как определить коэффициенты масштабирования для X11 приложения самостоятельно.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Display scaling в Linux. Часть 1 — системные настройки

Время на прочтение5 мин
Количество просмотров27K

Дисплеи с высокой плотностью пикселей уже давно не редкость. И для того, чтобы UI не выглядел слишком мелко, применяется масштабирование. В разных системах используются разные подходы и имеются различные возможности настроек. Но одно объединяет их все - безмерное количество кривизны, костылей и глюков. Посмотрим как на сегодняшний день обстоит ситуация в лагере Linux.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии20

Изменение содержимого Web.config в runtime при отладке в Visual Studio и IISExpress

Время на прочтение8 мин
Количество просмотров5.3K
Технологически в этой статье ничего нового, просто еще одно полезное применение winapi-хуков для решения специфичной проблемы.

При работе с веб-проектами в Visual Studio существует одна неприятная мелочь — при использовании в процессе разработки нескольких бранчей, каждый из которых должен использовать свою копию окружения (например базу данных, или какие то внешние сервисы), возникает проблема с конфигурационными файлами в момент отладки — IISExpress использует только основной web.config в папке проекта, где обычно всякие connection strings содержат значения по умолчанию и где нет никаких специфичных для бранча настроек, и никаких трансформаций при запуске к нему не применяется. Можно конечно принудительно либо автоматически, либо вручную, применять трансформации к web.config, но во-первых измененный файл будет постоянно висеть в pending changes, что создает риск коммита нежелательных изменений, которые потом попадут в другие бранчи, а во-вторых это создает массу неудобств при его редактировании, поскольку перед коммитом каких-либо изменений в конфигурационном файле такие трансформации придется вручную убирать.

Рассмотрим как этого избежать.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии11

Используем HTML и WebBrowser control в качестве UI для обычных windows-приложений на C#

Время на прочтение6 мин
Количество просмотров33K
Как известно, контрол WebBrowser это просто обертка над ActiveX компонентом Internet Explorer. Следовательно он предоставляет доступ к полноценному layout-движку со всеми современными плюшками. А раз так, то попробуем (сам не знаю правда зачем) на его основе сделать пользовательский интерфейс для обычного windows-приложения.

Можно, конечно, было бы запустить в этом же процессе мини веб-сервер (на HttpListener например) и ловить запросы через него, но это слишком просто, скучно и неспортивно. Попробуем обойтись без сетевых компонентов, just for fun.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии27

Генерация P/Invoke сигнатур в C#. Нецелевое использование Interface Definition Language и OLE Automation Type Libraries

Время на прочтение20 мин
Количество просмотров16K
Это НЕ очередная статья о том что такое P/Invoke.

Итак, допустим в сферическом C# проекте необходимо использовать какую-либо технологию, отсутствующую в .NET, и все что у нас есть это Windows SDK 8.1 в котором имеется лишь набор заголовочных файлов для C/С++. Придется объявлять кучу типов, проверять корректность выравнивания структур и писать различные обертки. Это большое количество рутинной работы, и риск допустить ошибку. Можно конечно написать парсер заголовочных файлов… Тут просто и понятно все кроме количества требуемых на это человекочасов. Поэтому этот вариант отбрасываем и постараемся как либо иначе свести к минимуму количество необходимых действий для взаимодействия с unmanaged кодом.

Кроме того, полученный в результате код не будет зависеть от разрядности процесса, будет сохранена строгая типизация, будет применено автоматическое тестирование.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии3

Информация

В рейтинге
1 395-й
Откуда
Лимассол, Government controlled area, Кипр
Зарегистрирован
Активность

Специализация

Software Developer, Fullstack Developer