macOS版の公式Gimp-2.10.appでPython-Fuを有効にするには
おはようございます。次男がこのところ、お腹が痛いと頻繁に言うので、気になり、小児科を受診しましたが、とくに問題なく胃腸薬を処方されました。次男は離乳食始めた頃、お腹を壊して長引いていたので心配してたのですが、ひと安心です。@kjunichiです。
背景
Gimpの2.10をWindowsに入れてみたので、macOSにも公式からDLしてインストールした。 しかし、Python-FuのメニューがmacOSには表示されなかった。
ソースからビルドのjhbuild祭り再びか?
の記事にあるように2.8系は以前ソースからビルドしたことがある。 また、ちょっと時間かかるが、やってみることにした。
ビルド祭り失敗
以前の記事を参考にためして、依然と同様に途中のファイルがDL出来ない問題が あり、これを解決して、gimpのビルドまでたどり着いた。
しかし、gimpのバージョンが2.8系のままだった。。。
仕方ないので、gimpの2.10系の最新版をDLして、jhbuildのシェル内で ./configureしたら、いろいろ依存ライブラリの最低バージョンが低すぎるぞ! とのお叱りを受け、気の遠くなるようなこれらの依存ライブラリのビルドを 実施した。
gimp 2.10系のビルドに辿り着くも。。。
こうして、gimp2.10本体のビルドにたどり着いたが、 ビルド中にgeglコマンドがセグフォしてしまう。
コマンド一行でPython-Fuを有効にできた!
途方に暮れて、Python-FuをmacOS版で使えないものかと調べたら、
を発見!
たった一行のコマンドでPython-Fuが利用可能に!
cd /Applications/GIMP-2.10.app/Contents/MacOS/; ln python python2
動いた!
あとがき
geglがmake中にセグフォする問題は
に挙げられており、geglを修正することで解決しそうだったが、 もう、Python-Fuが動いたからそこまで試す気力は今のところない。
以前は、開発用のコマンドが含まれていなかったのソースからビルドしたが、 今回の2.10は公式のバイナリでもコマンド本体は含まれおり、 コマンドに必要な.pcファイルもソースを持ってきたので入手済みのため、 .pcファイルを.appに中にでも置いて、PKG_CONFIG_PATHを設定すれば 動きそう。
参考資料
関連記事
10年前の記事
DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition insteadの警告を消すには
背景
gopheronで最近作ったnode.jsベースのgrpcのクライアントを動かすと以下の警告が表示されるようになった。
(node:5871) DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition instead
対策
@grpc/proto-loaderモジュールを使う
「Use the @grpc/proto-loader module」と言われているように「@grpc/proto-loader」モジュールをnpm installしてこれをrequireする。
npm i @grpc/proto-loader --save
const protoLoader = require('@grpc/proto-loader')
grpc.loadの箇所の変更
サンプルのhelloworldを例にすると、以下の様に変更する
grpc.load一行で済んでいた処理が、
- protoLoader#loadSyncでprotobufパッケージの定義をロード
- ロードしたパッケージ定義をgrp#loadPackageDefinitionでロードしてgRPCでプロトコル記述子を生成
- 生成されたプロトコル記述子から利用したパッケージ名を指定してクライアントを取得。
といったような流れに変更になった模様。
今回の変更でProtocol Buffersに依存した実装が、別パッケージの@grpc/proto-loaderに移ることで、 gRPCモジュール本体のProtocol Buffersへの依存をなくした模様?。 もしかすると、Node.js実装以外はすでにそういう実装だったのかも? とおもい、goのコードを眺めたが、go力が低すぎてよくわからなかったw
const packageDefinition = protoLoader.loadSync( PROTO_PATH, { keepCase: true, longs: String, enums: String, defaults: true, oneofs: true } ) const protoDescriptor = grpc.loadPackageDefinition(packageDefinition) const helloworld = protoDescriptor.helloworld
以降は、従来通りの模様。
const client = new helloworld.Greeter('remotehost:50051', grpc.credentials.createInsecure())
参考資料
今回の作業で@で始まるパッケージ名なんてあるんだと思ったら、以下の記事を見つけた。
結構前からこういう命名方法があった模様。
関連記事
マレーシアのペルヘンティアン島へ行ってきた5日目
背景
日中のKLCCの公園の様子
出発時の東京が酷暑の真っ只中だったので、クアラルンプールの方が、日中でも湿気も少なく、気温も低く過ごしやすかった。
KLCCのユニクロで万引きセンサーに止められる
エアアジアの機内が激寒なので、長袖の服が欲しく、写真のようにコンパクトに収納できるパーカーを購入。 しかし、店を出ようとしたら、万引きセンサーが反応!。
係の人が来て何か言ってきたが、よくわからず、カードで買ったよ。といま考えると訳の分からない返事をしてしまい、 係の人も苦笑い。
結局、奥さんがやってきて、レシート見せれば?の一言。
これで無事、購入が証明でき、なんと購入した商品に万引き防止タグが付けられたままだったと分かる。
教訓
買い物したら、店を出るまでは、絶対レシート捨てるな!
日本に台風来てたのに飛行機飛んじゃったよ
ちょうど台風が関東に接近していたので、そもそも飛行機が飛ぶのか、羽田じゃない空港に降ろされるのか?と ちょっと期待していたのですが、ほぼ定刻通り、飛びました。
機内食
行きは、夜の12時近くの出発だったこともあり、機内食事は食べませんでしたが、帰りは食べました。
機内で見る日没
子供や奥さんとは別の席でしたが、奥さんが窓側の席をとってくれたので、外の様子が見れて良かったです。 夕焼けがきれいに見えました。