PySide2 on Python2.7

久しぶりにMaya2020のスクリプトを久しぶりに書く機会があって、Python自体は特に覚えなおす必要はありませんでしたが、UI周り、PySide2のことをすっかり忘れてしまったので復習を始めました。

Mayaをいちいち起動するのはメンドクサイ、かといってWindowsのPython2.7へはPySide2は配布されていない。で思いついたのはMayaのPython環境を使ってしまおうって方法。

Visual Stuido Codeで.pyファイルを開くと、左下に使用するPythonインタープリタのバージョンが表示されます。

上の画像では「Python 3.9.6 64-bit」となっていますが、ここをクリックするとコマンドパレットが表示され「Enter Interpreter parh…」そして「 find…」と進んでファイル選択から以下にあるPythonを選択します。

C:\Program Files\Autodesk\Maya2020\bin\mayapy.exe

Maya2022はPythonのバージョンが選べるらしいので2つのmayapy.exeがあるんでしょうか?ともあれこれでPython2.7.11+ PySide2の環境になります。「import pymel.core as pm」とか実行するとMayaの機能も使う事が出来ます、UIが無いとは言えMayaを起動することになるのでインポートに時間がかかりますが。

Mayaのスタイルは適用されませんが過去作ったプログラムが無事実行できましたとさ。

代わってJavascript忘れるんやろな~。


ドラッグとドロップと

Electronでの開発の土台が出来たので、さっそく思いつくままに作り始める。ファイルのD&Dとvuedraggableを使った項目の並び替え。割と簡単!苦行の開発環境の整備が終わってようやく楽しくなって来たトコロ。

Font Awesomeのアイコンの呼び出しを自分のAPIキーを使っているので、このソースは配布できませんが…。


Electron Typescript

風邪引いて、子供と遊ぶことが出来ず週末はずーっとJavascriptのお勉強。

以前記事にした「Electron製アプリのセキュリティ」をTypescriptで実装し直しました。「nodeIntegration:false」と「contextIsolation:true」を設定したアプリの土台ですね。先日お勉強したVue SFCも含まれています。

package.jsonにあるnodeスクリプトの動作は以下。

  • “build”: Productionビルド
  • “watch”: Watchモード、Developmentビルド
  • “start”: 実行

レンダラ側のHTMLファイルは「html-webpack-plugin」を使用してテンプレートを元に作成されています。コンテンツセキュリティポリシーの「unsafe-eval」をProductionビルド時は書き込まない、Developmentビルド時はHTMLに書き込むようにするためです。Devビルドの場合はJavascriptバンドル時、eval関数が含まれるため「unsafe-eval」を許可しないと動作しません。

詳しくはwebpack.config.jsを、と言いたいところですが汚いです。


Vue + Typescriptのお勉強

VueをTypescriptで実装しようとしたら、方法がさまざまあって手こずる。Vue2を使用していますがVue3に向けてどれで慣れておいたらいいのかも迷う。

上のような表示をするだけのヤツを実装方法を変えて3つ。

  1. vue-class-component
  2. vue-property-decorator
  3. Vue.extend

どれもWebpackを使ってバンドルしています。あとデバッグ用なので特に必要はないですがwindow.appというグローバル変数を作成(global.d.ts)して、ViewModelをグローバルへ露出させています。

一つ目は「vue-class-component」

以下はソースの一部です、デコレータ部分がおっきくなりますね。あとpropへの参照が「$prop」とかエディタのサジェスト機能で初めて知りました。

import Vue from 'vue';
import Component from "vue-class-component";

@Component({
    template:'<li v-on:click="onClick">{{name}}</li>',
    props:{
        name:String
    }
})
class MyData extends Vue{
    onClick = ():void =>{
        console.log(this.$props.name);
    }
}
続きを読む “Vue + Typescriptのお勉強”

VirtualBox: NAT + Port Forwarding

VirtualBoxをインストールしてサーバソフトのテストをしようとしましたが、ゲストOSのネットワーク割り当てに迷う…。

デフォルトは「NAT」に設定されます。ゲストOSからホストOSに接続できますが、逆のホストOS→ゲストOSはできません。割り当てを「ブリッジアダプター」にすれば手っ取り早いのですがホストのIPアドレスに加えてゲストのIPアドレスが一つ増えます。「ホストオンリー」はホストOS→ゲストOSはできるものの、他のPC→ゲストOSが出来ません。

どこでも紹介されてますのでいまさらですが、仮想化ソフトなんてたまにしか触らないし、よく忘れてハマるのでね、以下解決法。

続きを読む “VirtualBox: NAT + Port Forwarding”