machine learning

Погружение в machine learning

До недавнего времени я занимался исключительно разработкой програмного и немного аппаратного обеспечения, но смена места работы подтолкнула меня открыть для себя целый новый мир машинного обучения. Хоть я и был знаком с реализацией некоторых методов ML ещё с университета, но осознание масштабов его применения стало для меня открытием.
Приведу нуже ссылки материалов, которые посчитал полезными:

Курсы

coursera.org/learn/vvedenie-mashinnoe-obuchenie — курс по ML, который отлично «вправляет мозги»

Модели

rusvectores.org/ru/ — word2vec модели для русского языка

Библиотеки

tensorflow.org/tutorials/ — туториалы к библиотеке по ML, которые объясняют почему модели работают. Например отличный разбор word2vec.
scikit-learn.org — swish army knife дата саентиста. Для тех, кто хочет чтобы «просто работало». До меня медленно доходило, что применение нового инструмента часто приносит больше пользы, чем мучительное допиливание старого. Т.е. для проверки гипотез рекомендовал бы именно эту библиотеку вместо более низкоуровневых и дающих больше контроля вроде tensorflow.
Читать далее »

arduino AVR electronic USB

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

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

Читать далее »

libreoffice lifehack office

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

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

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

Иконки LibreOffice

Читать далее »

desktop html5 java javascript programming

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

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

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

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

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

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

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

Читать далее »

enterprise event java programming

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

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

javaone2015

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

JavaOne_Cuba_Logo_Final_transparentjavaone

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

Читать далее »

git linux

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

kernel-zip-src

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

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

Читать далее »

fun soul

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

20160117_032235

 

Читать далее »

browser chrome firefox lifehack web

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

google-chrome-hidpi

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

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

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

Читать далее »

java programming web

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

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

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

  • Google
  • Vaadin
  • Sencha
  • Arcbees
  • LinkedIn

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

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

Читать далее »

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

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

Читать далее »