Pull to refresh
75
0

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

Send message

angelspie — управление окнами в X11, глобальные и не только горячие клавиши

Reading time2 min
Views1.8K

Название - отсылка к devilspie, похожей утилитой. Она примечательна тем, что конфиг пишется на диалекте лисп, несмотря на это у неё весьма ограниченные возможности. Тем более у утилит типа wmctl и т.п.

С помощью библиотеки wnck можно делать куда больше, а ещё больше если задействовать gdk.

Для глобальный горячих клавиш я использовал libkeybinder, раньше я делал такое на "голой" xlib, но так удобней(и переносимей). Впрочем xlib/xtest тоже используется - чтобы эмулировать нажатие кнопок. Но эти функции опциональны.

В качестве формата конфига я выбрал yaml. Более старые версии использовали конфиг на питоне, но я решил что yaml удобней конечным пользователям. Тем более в него можно встраивать код на python и sh.

В детали реализации я вдаваться не буду. Там много магии и метапрограммирования, часть кода сгенерирована.

Лучше покажу пример конфига, который использует часть возможностей. Кстати, новые правила можно генерировать из командной строки, оно возьмет name и class_group активного окна.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments1

Конечные автоматы и django

Reading time2 min
Views4.5K

При работе над django-проектом, есть ряд must-have сторонних библиотек, если не хочется бесконечно изобретать велосипед. Средстав отладки sql запросов(debug-toolbar, silk, --print-sql из django-extensions), что-нибудь для хранения древовидных структур, переодических/отложенных задач(кстати, cron-like интерфейс есть у uswgi. EAV всё ещё бывает нужен, хотя часто его можно заменить jsonfield. И одна из таких крайне полезных вещей, но почему-то реже обсуждаемая в сети - FSM. Не так часто почему-то сталкиваюсь с ними в чужом коде.

<cut>

Практически у каждой записи в БД есть некоторое состояние. Например, для комментария это может быть - опубликован/удален/удален модератором. Для заказа в магазине - оформлен/оплачен/доставлен/возврат и т.п. Причем переход из одного состояния в другое часто бывает размазан по коду и в нем присутствует бизнес-логика, которую надо обильно покрывать тестами(всё равно придется, но можно избежать тестирования элементарных вещей, например, что заказ может перейти в состояние "возврат денег" только после того, как он побывал в состоянии "оплачен".

Вполне логично было бы описывать такие переходы более декларативно и в одном месте. Вместе с необходимой логикой и проверкой доступа.

Вот пример кода из тестов библиотеки django-fsm

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments4

Django vue generator

Reading time1 min
Views5.2K
Как подружить проект на rest framework с vue? Можно создать в каталоге с django проектом проект на vue с помощью vue-cli. Перейдя в него и набрав yarn build, на выходите получим в каталоге dist файлы index.html и каталоги css и js. Ага, css и js можно положить в static, а из index.html сделать шаблон.
Читать дальше →
Total votes 7: ↑4 and ↓3+1
Comments0

Пишем многопользовательскую змейку на tornado

Reading time5 min
Views8.5K
Какое-то время назад решил написать небольшое приложение, чтобы потренироваться работе с вебсокетами. Из питоновских фреймворков мне показалось удобней изкоробочная поддержка их в tornado. Поскольку игрушка предельно простая, может кому-то показаться полезной как пример. Это многопользовательская «змейка».
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments3

Введение в pygtk/gtkbuilder: пишем калькулятор

Reading time3 min
Views6.8K
Разберем создание интерфейса на pygtk на примере самого примитивного калькулятора. Много картинок, немного кода.
gtkbuilder наиболее прогрессивный формат описания gtk интерфейса в xml,
если вы ранее использовали libglade, вы можете сконфертировать .glade файл в новый формат командой libglade-convert
Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments19

Расширение для chrome — загрузка файлов во внешнем менеджере загрузок(по ctrl+alt+click)

Reading time1 min
Views7.6K
Расширение позволяет вызывать из chrome сторонний менеджер загрузки файлов. Чтобы отрыть ссылку внешней программой, надо ткнуть в неё зажав ctrl и alt.
Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments4

Деревья в админке django

Reading time2 min
Views12K
Редактировать модели, представляющие собой деревья в админке django очень неудобно и ненаглядно. Сразу возникло желание выводить вместо списка объектов дерево, для этого можно использовать замечательную библиотеку jstree.
Чтобы эффективно работать с деревьями в django существует mptt, которая добавляет в модель поля для эффективной выборки и методы для этого, а также шаблонные теги для вывода деревьев и т.п.
Если вы не используете mptt, у вас есть просто ссылка на parent — jstree можно подключить к с помощью одного javascript, про это — отдельная статья.
Далее про модели, использующие mptt.
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments16

Играемся с гироскопом ноутбука thinkpad в linux

Reading time2 min
Views4K
В линукс показания с этого датчика можно считать из файла /sys/devices/platform/hdaps/position
Можно создать виртуальный джойстик и, например, катать им шарики в neverball, крутить google earth и т.п. :)
Всё это описано тут
Я тоже решил развлечься и написал небольшую программу, которая заставляет cairo-clock сползать по экрану в зависимости от наклона ноутбука.
подробности
Total votes 61: ↑57 and ↓4+53
Comments21

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity