dothikoのカクカクワールド2D REBOOT

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか色々。

mypaint 2.0.0-alphaへの追従で四苦八苦

Mypaintの自作ブランチにupstreamのmergeを長期間怠っていたら、大変な作業量が待っていました…備忘録的に 目に付いた主な変更点 ビルドシステムがSConsからsetup.pyへ移行している scons debug=trueに相当するのは、python setup.py build --debug この結果…

python2のpropertyとタプルの分解で苦労した話

検索ワードが思いつかず苦労しました。アンパックというのですね。 foo, bar = (100, 200) みたいなやつ。 例えばこんなクラスがあったとします class _Node: def __init__(self, x=0.0, y=0.0): self._v = np.array( (x, y, 1) ) @property def x(self): re…

python-OpenCV2のfillPolyで苦労した話

python-opencv2にて、普通に [[x1, y1], [x2, y2], [x3, y3] ....] 的な配列を突っ込んだら、np.int32だろうが何だろうが以下のエラーが出続けた話。 OpenCV Error: Assertion failed (p.checkVector(2, CV_32S) >= 0) in fillPoly, file /build/opencv-L2vu…

絶対に許せないmodemmanager@xubuntu 18.04.1

「絶対に許せない!」と言えばプリキュアの定番セリフですが(そうか?) 絶対に許せない現象が発生してしまいました というのもワタクシ、実はお絵かきの左手デバイスに赤外線テレビリモコンが使えるのでは?という思いつきを胸に実際に使ってみていまして…

systemdでstopした時にpythonのfinallyが呼ばれない問題について

systemdでsystemctl stop hoge.serviceすると、基本的にSIGTERM -> SIGKILLが送られてdaemonプロセスが終了します。 しかしながら、pythonのfinally節はSIGTERMで終了した場合は呼びだされません。 そのため、pythonでdaemonを作った時、finallyで必ず呼ばれ…

ubuntu 18.04.1でapt upgradeに失敗

正確には何をしたらおかしくなったのか分かりませんが… また、実際焦っていたのでエラーメッセージなども保存していない。スミマセン。 まず普通のデスクトップアプリ「ソフトウェアの更新」で更新しようとした しかし、幾つかファイルがダウンロードできず…

100均で見かけた電子工作向きっぽい容器

昔は自作の電子工作機器を収納するといえばブルジョワ都会人ならタカチ等のちゃんとしたケース*1、田舎だとせいぜいタッパー類似の食品密閉ケースがありがちなパターンでした。 タカチ電機工業 プラスチックケース SW-125B出版社/メーカー: タカチ電機工業メ…

セリア100円LEDライトの透明化改造

お絵かき用の左手デバイスとしてテレビの赤外線リモコンを使用しておりますが、中々良いです。 応答速度がやばいほど遅いのではと危惧しておりましたが、試しに作ってみたところ、全然大丈夫。 ローコストで入手性も高く実に良いと思うのですけどねぇ ちなみ…

安物マウスを至高の5ボタンマウスに改造

ナカバヤシのDigioシリーズ、個人的にはフォルムがかっこよくて好きなのでした。 そしてこのMUS-UKF148BK メディア: この商品を含むブログを見る 何が良いかってボディに忌々しいラバーコート部品が一切ないことですね*1。 これはメリット激高。 何故、各社…

GtkSourceViewを表示専用にする

GtkSourceViewを表示専用にする、その方法が分からなかったのでメモ Gtk+3入門作者: ToshioCP発売日: 2017/06/06メディア: Kindle版この商品を含むブログを見る はいアフィ入りました〜w というか他のGTK関連書籍は正直10年いや20年前のもので役に立たないと…

ソニーBDプレイヤーS5100をUbuntu 16.04から操作

何故か16.04なのは気にしてはいけない…というかドラフト記事のまま公開するのを忘れていました(^^) さて、レビューしたかどうかすら忘れてしまいましたが実はソニーのネットワーク対応BDプレイヤー、S5100を購入したわけであります。もう3年ぐらい前でしょう…

Ubuntu 18.04における液晶タブレットXP-Pen Artist 15.6の対応状況

Cintiq 13HDをいちいち持ち運ぶのに疲れ、実家用に買ってしまいました。 XP-Pen 液タブ 液晶ペンタブレット 15.6インチ バッテリフリースタイラス フルHD 筆圧8192レベル 6個エクスプレキー Artist15.6出版社/メーカー: XP-PENメディア: エレクトロニクスこ…

Xubuntu 16.04.4でkabylake Intel HD 620のログイン画面を改善する

安物マザボのためか、kabylakeであるにもかかわらず三画面できないため 現在、EIZO EV2436W + IIYAMA X2380HS + Cintiq 13HDを接続して、スクリプトでX2380HSとCintiqを切り替えて使用しています。 まぁこれはこれで使えるというか、こういう時にスクリプト…

Xubuntu 16.04.4 & HD Graphics 620でブラックアウト化現象

何が悪くなったのかわかりませんが、xorg.conf.d等いろいろいじっていたら、ログイン直後に3つのモニタすべてがブラックアウトして何も表示されない状態に…orz んでxorg.conf.dのファイルを戻したんですよ。 それでも治らないんですなぁ…一体何が…! やって…

Xubuntu 16.04.4でkabylake Intel HD 620を使用してみる

新しくA-DATAのSSD、SU650を購入したので、これをブートドライブにする…にしてもubuntu(xubuntu)18.04のリリースはまだだし、仮に出てもいきなり飛びつくのは経験上、アレ。 というわけで、実験的にとりあえず16.04.4を入れ(直し)、その最新カーネルでもっ…

SSDの寿命に関して再度

なにやらIntelからOptane 800pが出るとのことで 買おうかな〜と思って調べたら、TBWがなんか365TB?ぐらいしかないのですね。 3D XPointメモリは寿命1000倍と聞いていたのだけど、これだと5〜10倍程度なのでは?という。 うーむ。Optaneディスクを使ってもうt…

Xubuntu(Ubuntu+xfce)16.04でのトリプルモニタ環境の設定

Xubuntu 16.04 (≒Ubuntu + xfce) 、今までデュアルモニタ環境で快適に使っていましたが、実はコレ偶然の産物だった…という話。 前述のようにwacom cintiq13HDを導入したため、トリプルモニタ環境にしたのですね。ちなみにGPUはnvidiaのGeForce 750GTXです。 …

Gesturefyとevdevで作る快適3ボタンマウス環境

FirefoxのプラグインFiregestureが使えなくなったため、Gesturefyを導入しました。 これがまた、なかなか良い。 なお、ジェスチャー&ロッカージェスチャー*1は、現時点ではlinux/macにおいては、右ボタンが押下時にコンテキストメニューを発動するため、コ…

Blenderが起動しないように見えるとき(@トリプルモニタ環境)

遅ればせながら、あけおめことよろでございます。 さて私のPC環境は大きく変化し、Wacom cintiq13HDを導入したことでトリプルモニタ環境となりました。 ちょっと変則的ですが、正面と右にモニタを配置。これは今までと同じ。 次に、正面の下…つまり机の上にc…

SWIGオブジェクトから生のポインタを取り出すには

最近SWIGづいていますが… PythonのSWIG(SWIGのPythonか…?)ラッパーオブジェクトからポインタを取り出すにはどうすればいいのか? それも、自作のクラスオブジェクトでございます。 なんでこんなことをする必要があるのかというと、SWIG化クラス「foo」があ…

Gdk(pygi)でマウスカーソルを任意位置に動かすには

感動のあまりカキコ! 改造版mypaintのsizechangemode.pyから一部抜粋〜 def drag_start_cb(self, tdw, event): self._ensure_overlay_for_tdw(tdw) self._queue_draw_brush() # Storing original cursor position and some needed objects. dev = event.get…

SWIG関数にctypesからアクセス

ついでにこれも思いついたシリーズ。 すなわち例えば、SWIG側の内部にstaticで構造体ポインタのリストを持っておき。 idx = register_hogehoge(void *ptr)でそのリストに登録。 その後はidxを使って(OpenGLのテクスチャの名前みたいな感じで)、例えば draw_…

PythonでSWIGのC++関数中でGdkPixbufにアクセスしてみた

Pythonで作ったGdkPixbufを、SWIGのC++関数に送り込んでC++の中で最速描画ということを考えつきました。 さらに、そのpixbufはcairoから作ると、なお痛快でしょう。 と前々から思っていたのですが、遂に重い腰を上げて作ってみました。 そんなわけでそのサン…

Xubuntu 16.04でCintiq 13HDを自動設定するの巻

ついつい、勢いでwacomの液タブCintiq 13HDを買ってしまいました(^^; 旧モデルなのは、安いだけでなくLinuxで使うには何も考えなくて良くて都合が良いというメリットもあるのです。 どーでもよいのですがこの絵、tegaki_dtで頑張って書いてたらボタンの誤爆…

SWIG & python でundefined_symbolが出る時

何か超久々ですがとりあえず… とりあえず以下、例として、 Flagtileというクラスがあるとします python用のtestlib2モジュールに組み込まれます。 SWIG, g++ともコンパイルは問題なく通る C++内では普通に使えている しかし、SWIGでPythonモジュールに組み込…

PyGObject(PyGi)で「デフォルトのフォントサイズ」を取得する

PyGObject…でいいのでしょうか。PyGiなのか。未だによくわかりません。 とにかく新しい方のGtkのpythonバインディングで、コンボボックスのカスタムレンダラーで使うデフォルトのフォントサイズを取得したくなりました。 これはMyPaintにOpenCVのgrabCut関数…

SWIGとnumpyについて(ImportErrorとセグメンテーションフォールト)

何か「ハリーポッターと魔法のナントカ」みたいなタイトル… それはともかくSWIGとnumpyでハマってしまったので備忘録的にメモ。 現象としては hppでNO_IMPORT_ARRAYを定義して#include <numpy/arrayobject.h>すると、.pyファイルでSWIGモジュールをインポートした時点でimporterro</numpy/arrayobject.h>…

cgdbを用いてpython拡張モジュール(てか、mypaint)をデバッグする方法

これまた備忘録的に… 当然ながらgccとかg++はデバッグオプション(-g -O0) でビルド mypaintの場合はsconsを使っているため、SConstructに書いてあるようにdebugオプションを使う つまり、scons debug=true デバッグビルドができたらcgdb pythonとする b 関…

Python+SWIGでがんばってみた for mypaint (備忘録的)

MyPaintに塗りつぶし拡大ルーチンを設置すべく、Python+SWIGで頑張ってみますた!(`・ω・´) 結果は… 何とか動くようになった!?!? それで悩んだところを備忘録的に書いておこうと思います。 手こずったところ まずPyDict_SetItem()。これがキツかった。 …

PyGiで謎のワーニングに対処する

今試作中のMypaint向けスタンプツールでポップアップメニューをgladeで作るように変更しました (以前はコードから作ってたけど、見通しが悪いので) それでいろいろ試行錯誤した結果、Gtk.ActionGroupでアクションを作って、このアクションからcreate_menu_…