Monday, October 28, 2013

Неожиданный возврат интереса к Тайзицюань

Когда подобный интерес был, но быстро угас, не увидев быстрого практического применения данного искусства. Тогда был интерес к боевым искусствам.

Сейчас интерес - другой. Самопознание, развитие внутреннего мира, здоровье. Без агрессии и применения силы.

Почему именно тайзицюань? Очень просто - обилие доступного методического материала, в котором многое разобрано "по косточкам".

Friday, October 25, 2013

Вышел VirtualBox 4.3, но обновляться еще рано.

А я обновился. Меня сподвигло, то что обещано решение с сетью в MacOSX 10.9, на ВБ 4.2.8 сеть установить не удалось.

Прочитал анонс, что 4.3 "заточено" на новые версии ОС - Макос 10.9 и Виндовс 8.1. Для этого внесено в код много изменений. Мне бы тут насторожиться и почитать форум с отзывами на virtualbox.org... Но как вы понимаете, я этого не сделал и поставил 4.3.

Как итог. В МакОС10.9 сеть мне так и не удалось завести, устанавливается только без поддержки сети. ВинХП стала работать не стабильно, стабильно вылетая и тормозяяяяя внутри. При это если ВинХП находилась в простое, то на Хосте ВБ могла занимать 18-20% процессора. С загрузкой частично помогло переключение устройства ввода с USB Tablet на Мышь PS/2, но вылетать стало еще чаще.

И тут я пошел на форум виртуалбокса. А там. Все мои глюки уже описаны. У кого то еще в более тяжелой форме, у кого то такие, каких я (пока) не встречал.

Так как работать было невозможно, то решил откатиться на версию 4.2.8 и ждать 4.3.2 с фиксами. Были правда сомнения о возможности даунгрейда, но к всё получилось, хоть и пришлось прибегнуть к функции Repair, иначе существующие вирт машины не запускались. Ну и пришлось еще Guest Additions задаунгрейдить.

Но есть и "счастливчики", у которых всё работает на новой версии.



Tuesday, October 22, 2013

Глобальный хук на клавиатуру в Линукс

Если с МакОС более менее разобрался - примеры работают, то с Линукс ситуация довольно интересная. Примеры работают, но как то странно, не как заявлено в описании к примерам.

В линуксе метод перехвата нажатий клавиш использует X11. Но возможно сами оконные менеджеры могут добавлять отсебятинки. Кроме того, пока не удалось получить факт нажатия клавит Ctrl, Shift, Alt и т.п. Т.е. пока только буквы-цифры.

Есть еще один метод - читать напрямую файл устройства (в Линуксе весь ввод-вывод идёт через файлы, точнее выглядещее как файлы). Но для этого метода для программы требуется права root, что не айс.

Sunday, October 20, 2013

Про обои для рабочего стола

Удивительно, но в макос мне хочется иметь, видеть и менять периодически обои. В то время, как на виндовс я обычно отключаю их сразу.

Saturday, October 19, 2013

Realbasic стал Xojo

Xojo

Но ценник остался конским. В своё время меня очень заинтересовал Realbasic своей кроссплатформенностью.  Но ни каких финальных релизов так и не выпустил, хотя черновиков было довольно много.
Может только клиент для Puzzletron остался в публичном доступе.

Monday, October 14, 2013

Новые открытия в разработке приложений для МакОСХ

Оказывается, всё не так и страшно, как казалось на первый взгляд. Оказывается можно и нажатия клавиш отслеживать и генерить нажатия клавиш, типа SendKey() в Windows.

Вот только отслеживание изменений буфера обмена проходит через таймер, спасибо статье на хабре.

UPD Насчёт глобального отслеживания нажатия клавиш я поторопился написать, пока "ловит" только в своём приложении

Всё есть, всё работает, надо только было найти, то что надо. Никсовые корни МакОСХ сказываются.

Кстати, кейлогер просто так написать не получится. МакОСХ не передаёт нажатия клавиш в полях ввода паролей.

Saturday, October 12, 2013

Решаем проблемы высокой загрузки процессора в Inkscape

Предыстория такова. Инкскейп стоит у меня с незапамятных времён. Иногда запущу его, посмотрю да и закрою. А тут попался на глаза сайт с простыми уроками по Inkscape и решил я их проделать. Для этого обновил версию программы до последней текущей стабильной 0.4.8.4 и поехало дело.

Но заметил, что тормозит Inkscape на моей старушке виртуалке Windows XP. Один раз так зависло, что пришлось через менеджер задач убивать. Да и другие приложения притормаживает, даже при только что открытом одном окне. Посмотрел ТаскМенеджер - ба! да 33% потребляет в состоянии простоя. А уж сколько cpu usage будет при добавлении и редактировании объектов можно предположить.

Пошел искать в яндекс, как решить эту проблему. По русски ничего не нашел, задал запрос по английски да гуглу. Ага! Есть такая проблема у народа! Причем проявляется не у всех. Загадко!

Одно из решений, откатиться на более старую версию. Можно, но не очень хочется. Та что у меня была установлена уж очень старая, а ту что советовали на форуме сразу и не нашел. Решил поискать, как решить данный issue в последней версии программы.

И нашел!

Комрад mathog пишет

If your machine has this problem and you are using devlibs 32 here are two versions of libglib-2.0-0.dll, the first one
with the patch that eliminated the problem on my XP machine, and the second without the patch. Copy both into
$devlibs_path/bin. Copy one or the other over libglib-2.0-0.dll and look at the CPU time used when inkscape runs (it must
be restarted after the copy!) On my system the no15cpu version eliminates the CPU usage issue, whereas the has15cpu brings it back.
The no15cpu version also works when copied into an Inkscape distributions (no separate devlib).

Я скопировал no15cpu dll в папку Inkscape, переименовал, запустил. И загрузка процессора в простое стала 0. Однако прочтение всего топика по этому багу (или фиче) навело меня на мысль, что данный баг проявляется не всегда и не везде, но возможно только в некоторых конфигурациях Windows (особенно часто упоминается XP) и Inkscape.

И хотя в последнем посте упоминается, что данного бага нет в последней стабильной версии 0.4.8.4, у меня он проявился в 2 раза сильней - вместо 15% cpu load я имел все 33%.

Напоминаю, делайте резервные копии файлов, чтобы всегда можно было "откатиться" назад.

Удачный опыт научиться рисовать по книгам

Типа "Учимся рисовать тото тото" в стиле "Нарисуй круг, теперь дорисуй всё остальное"

Есть у кого нибудь такой удачный опыт?

Мой опыт - пока книга (веб страница) перед глазами что-то получается. Как только требуется повторить без подсказки или (о ужас!) что-то нарисовать своё - то всё. Лучше бы не рисовал.

Что это? Просто не хватка тренированности и надо рисовать рисовать рисовать (срисовывать), т.е. набивать руку или отсутствие требуемых врожденных качеств?

Thursday, October 10, 2013

Визуализация как обратная связь

Есть у меня программа Easy Copy Paste

Очень мне нравится ей пользоваться. Ставлю везде, где "приседаю" поработать за компьютером. Очень помогает при смене клавиатур.

Но есть в ней один существенный недостаток. То работающий, то не работающий вызов процедуры копирования в буфер обмена по нажатию Ctrl-Ctrl.

Код смотрел, дебаг делал. Но эта не определённость в работе-неработе уже реально утомляла. Причём для других клавиш всё работало. Да и тройной клик по контролу работал отлично (это операция Cut).

И буквально пару дней назад меня "осенило"! Чтобы запрограммированная процедура была вызвана (копирование, вставка и т.п.) необходимо нажать нужное количество раз нужную клавишу (клавиши), а потом подождать некоторое время, достаточное малое, чтобы программа считала, что была вызвана ключевая последовательность нажатий, а не просто сделанный пользователем набор на клавиатуре. А так же для того, чтобы различить двойное, тройное и так далее нажатия клавиш.

И при операция Вставка из буфера (SHIFT-SHIFT), вырезание выделенного фрагмента (Ctrl-Ctrl-Ctrl) и т.п. пользователь видит изменения вызванные программой на экране - появляется или исчезает текст, соответственно.

А при операции Копирования (Ctrl-Ctrl) ничего не меняется на экране! Выделенный текст остается таким же выделенным,  в независимости от того произошла обработка двойного нажатия клавиши или не произошла. И это отсутствие подтверждающей визуализации приводит к тому, что пользователь (я) нажимаю следующие клавиши достаточно быстро, да так , что EasyCopyPaste считает, что ключевой последовательности не набиралось.

Что я придумал? Добавил дополнительное нажатие клавиши после операции Копирования, которое снимает текущее выделение, тем самым подтверждая выполненную операцию.

И о МАГИЯ визуализации! Несрабатывания пропали!

Теперь тестирую данное изменения в работе. А потом опубликую новую версию.

PS Может изложено сумбурно, зато на эмоциях.



Saturday, October 05, 2013

Тетрадь со смеными блоками

тетради со сменными блоками мягкая обложка
Сегодня наконец то смог оценить преимущества тетради со сменными блоками, которую как то посоветовал Сергей Михайлов

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

Место про описание одного проекта подошло к концу, на листочке оставалось несколько свободных строчек. А дальше идёт другой проект. Ага! Но у меня же тетрадь, которая позволяет вынимать и вставлять страницы без разрушения блока. Что я и сделал, добавил чистую страницу к текущему проекту. И всё встало на свои места!

PS Только еще про мягкие обложки подумал, но пока такие не встречал.






Телепортаций нам не надо (при управлении игровыми объектами)

Столкнулся с тем, что часто объект управляемый игроком обладает свойством телепортации. Это когда новая координата прикосновения к экрану оказывается довольно далеко от старой.
Тогда объект просто исчезает на старом месте и появляется на новом. Это проявляется в простых играх и примерах, в нормальных играх такого нет конечно.

Ну и мне захотелось пофиксить. Оказалось всё довольно просто.
Надо в коде метода Update данного объекта применить примерно такой код:

      Local currentX: Float = obj.GetPosX()
      Local currentY:Float = obj.GetPosY()
      Local mX:Float = MouseX()
      Local mY:Float = MouseY()
   
      currentX = currentX + (mX - currentX) / 3
      currentY = currentY + (mY - currentY) / 3
   
      obj.SetPos(currentX,currentY)

Делитель (в данном случае 3) определяет скорость перемещения объекта к новому месту. Чем меньше, тем быстрее. Чем больше, тем больше будет отставание объекта от текущей точки ведения по игровому полю.

Код тестовый, поэтому так расписан. Можно обойтись без локальных переменных и всё записать в одну строку.

Кстати, эффект телепортации присутствует и на устройствах с управлением мышью. Для этого надо выйти мышью с одной стороны игрового поля (для оконных приложения) и войти с другой стороны игрового поля.

Особая пикантность отсутствие телепортации в том, что в момент передвижения объекта к новому месту положения, он (объект) может взаимодействовать с другими объектами игрового мира. А уж как это использовать, на то вольна фантазия автора.

Friday, October 04, 2013

Выращивание экосистемы

Первое, что приходит в голову, когда задумываешься о создании нового шедевра в мире игр (или программ).

Чтобы эта экосистема (хотя потихоньку) росла и поддерживала сама себя, расширяясь за счёт появления новых обитателей системы.