arduino AVR electronic USB

Аппаратный эмулятор нажатий клавиш для Windows

Возможно вы просто искали способ эмуляции нажатия клавиши в приложении, и хотели найти SendMessage(WM_KEYDOWN)+SendMessage(WM_KEYUP) или SendInput(), но если вы уже столкнулись с тем, что этот способ вам не подходит, как, например, в играх, которые специально защищаются от подобных методов для усложнения жизни ботописателям, добро пожаловать под кат.

read more »

libreoffice lifehack office

Отличные иконки для LibreOffice как в MS Office 2013

Я много раз начинал пользоваться LibreOffice и постоянно не понимал, что же мне в нём не нравится.

Теперь я знаю ответ на этот вопрос — меня раздражают иконки инструментов.

Иконки LibreOffice

read more »

desktop html5 java javascript programming

Как разрабатывать HTML 5 Desktop приложения на Java?

vaadin-desktopМотивация

Кому могут понадобиться Desktop приложения, использующие веб-страницы в качестве UI? Отвечу прямо — всем! Всем кто страдает, пользуясь неудобными и некрасивыми приложениями.

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

Так что же такое есть в веб-приложениях, чего нет в настольных?

  • Разнообразие визуального оформления
  • Адаптивные и идеально-масштабируемые интерфейсы
  • Развитые анимации
  • Богатый набор компонентов и библиотек для разработки UI

Похожими возможностями обладают WPF для .NET приложений и JavaFX из мира Java. Но их компоненты не могут угнаться за стремительно развивающимися web-технологиями.

read more »

enterprise event java programming

JavaOne 2015 и все-все-все

Как я попал на JavaOne ?
Если я буду рассказывать с самого начала, то мне придётся рассказывать 5 долгих лет, так что вкратце.

javaone2015

Мы приехали на JavaOne со своим продуктом, платформой для разработки приложений на Java — CUBA Platform.  На выставке у нас был свой стенд, а на самой конференции выступал наш Developer Advocate с докладом о разработке расширяемых продуктов. Кроме того, я вёл занятия Hands on Lab для участников конференции, на которых они могли попробовать создать небольшое приложение на CUBA.

JavaOne_Cuba_Logo_Final_transparentjavaone

В этом топике я постараюсь передать атмосферу конференции и поведать вам немного о докладах и стендах выставки.

read more »

git linux

Компактное хранение исходного кода

kernel-zip-src

При реализации проекта DistTest возникла необходимость собирать ядро linux из разных версий исходников. И первым решением было загружать готовые архивы исходников с kernel.org для каждой отдельной версии. Но вскоре стало понятно, что данный подход требует значительного дискового пространства: 0.5-1ГБ на каждую версию, которых в данный момент порядка 1000. А также данные подход позволяет собирать только именованные версии, но не версии соответствующие отдельным коммитам.

Для решения проблемы дискового пространства можно хранить несколько базовых версий и приводить их к необходимому виду с помощью патчей, но это приводит к значительному объёму I/O со случайным доступом, что выполняется медленно на HDD и приводит к износу SSD. Тот факт, что исходники необходимой версии требуются лишь временно, подсказывает использовать tmpfs. Но есть более эффективный подход в плане использования оперативной памяти — хранить в tmpfs только отличающиеся от уже имеющихся файлов, что позволяет сделать aufs.

read more »

fun soul

Очередные часы медитации

20160117_032235

 

read more »

browser chrome firefox lifehack web

Тюним масштабирование браузера для hidpi Windows

google-chrome-hidpi

Имеется: ноутбук 14″ с разрешением Full HD 1920×1080, Windows 8.1 и браузеры Firefox и Chrome

По умолчанию Chrome и Firefox достаточно хорошо масштабируют картинку, но для некоторых приложений получается уж слишком большое изображение и на экране помещается мало контента.

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

read more »

java programming web

Самое важное на конференции GWT.create 2015

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

Основные компании участники:

  • Google
  • Vaadin
  • Sencha
  • Arcbees
  • LinkedIn

По ощущениям, вся конференция затевалась, чтобы заявить миру — GWT жив и будет жить. Считаю, что у них совсем неплохо получилось.

Ну а теперь про сами доклады.

read more »

c sharp groovy java programming scala

Типобезопасный биндинг данных для UI компонентов

Хныканье про UI биндинги

Мне по долгу службы приходится иметь дело с UI компонентами и их API. Я постоянно разрабатываю их, расширяю и интегрирую существующие, пишу к ним тесты и документацию. За 5 лет я видел много разных подходов и хотел бы обсудить одну существенную деталь из мира UI разработки.

Связь с данными — довольно болезненный вопрос при работе с различными полями ввода. Мы постоянно используем различные сложные абстракции — Property, DataSet, DataSource, Binding,  Adapter и ещё в довесок кучу костылей вроде ручной реализации реакции на изменение данных в модели и в компоненте. При этом основных подходов для подключения источника данных к UI компоненту всего два:

  1. Реализация интерфейса Property { get; set; }
  2. Подключение свойства объекта при помощи рефлексии по имени

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

suspension_bridge

Давайте помечтаем. Ах вот если бы у нас был такой волшебный оператор, который бы в статически типизированной форме вернул нам по члену класса его имя.

read more »

linux virtualization

Запуск дистрибутива linux как приложения

Запуск виртуальной машины с последовательным портом в качесте консоли и перенаправлением его в stdio процесса qemu:

Для примера работы эмулятора будем использовать дистрибутив tinycore linux:

Пересборка initrd образа:

Пример вывода(перенаправление консоли ядра отключено для наглядности):