Hello World / plɹoM ollǝH

Programmers Live in Vain

Visual Studio 2022 でグラフィックスデバッガーをインストールする

  1. Visual Studio Installer を起動して「変更」を選択

  2. 個別のコンポーネントタブから「DirectX用グラフィックスデバッガーおよびGPUプロファイラー」をインストール

  3. DirectX描画をしているプロジェクトを Visual Studio 2022 で開いて「デバッグ→グラフィックス→グラフィックスデバッグの開始」が選択できるようになっていることを確認する

f:id:dungeonneko:20220416033813p:plain

Windows10 で Brother の Bluetoothプリンタ PJ-663 のセットアップ手順メモ

仮想COMポートとか、SSPとか言われてもよくわからない。PCを変える度にハマりがちな気がするのでメモ

  1. プリンタの電源をいれる
  2. プリンタの追加からPJ-663を選ぶ
  3. パスコードを入力する(プリンタ本体裏のシリアルコードの下4桁)
  4. Win+R → control printers で「デバイスとプリンター」を起動
  5. プリンタのプロパティを表示しておく
  6. BrotherのWebサイトからドライバーインストーラをダウンロードして実行
  7. インストーラからBluetoothを選択してインストール
  8. プリンタのプロパティに表示されているCOMポートを選択
  9. ボーレート設定が設定できなかった旨が表示されるので、インストーラのダイアログに設定された値をプリンタのプロパティ側で設定
  10. 再起動
  11. Win+S →「プリンターとスキャナー」を検索・起動して PJ-663 の管理→テストページの印刷

WordPress で JWT Authentication を使って Python から投稿してみる

クライアントはWindows、サーバーはXserver。

1. JWT Authentication for WP REST API プラグインをインストール

wordpress.org

2. FTPソフトを自分のPCにインストール

WinSCPとかFFFTPとか

winscp.net

ja.osdn.net

3. FTPソフトからXserverのサーバーに接続

FTPサーバーの情報は、もっとちゃんとしたところに書いてありそうだが、とりあえず「Xserverのサーバーパネル→FTPサブアカウント設定→FTPソフト設定」から確認できた。ここに書いてある情報で手元のFTPソフトからサーバーに接続するとルートフォルダから見れる。

4. public_html/.htaccessを編集

プラグインのページに書いてある

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

.htaccessファイルに追加する

5. public_html/wp-config.phpを編集

↓の2項目を追記する

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
define('JWT_AUTH_CORS_ENABLE', false);

JWT_AUTH_SECRET_KEY は https://api.wordpress.org/secret-key/1.1/salt/ から適当なのを持ってくる(更新のたびに変わる)。 JWT_AUTH_CORS_ENABLE は Cross Origin Resource Sharing を許可する場合はtrueにする。

6. Pythonからtokenを取得して投稿

import json, requests, os

if __name__ == '__main__':
    r = requests.post('https://example.com/wp-json/jwt-auth/v1/token', json={
        'username': os.environ['USERNAME'],
        'password': os.environ['PASSWORD'],
    })
    token = json.loads(r.content)['token']
    r = requests.post('https://example.com/wp-json/wp/v2/posts',
                      json={
                        'title': 'Hello World',
                        'content': 'This is my post.',
                        'status': 'publish'
                      },
                      headers={
                          'Authorization': 'Bearer ' + token
                      })
    print(json.loads(r.content)['link'])

WIN32APIでコマンドライン引数を取得する

ブログを見ないで公式ドキュメントを読め docs.microsoft.com

  • GetCommandLine()
  • CommandLineToArgv()

を使ってリストで取得できる(要メモリ解放)

#include <windows.h>
#include <stdio.h>
#include <shellapi.h>

int __cdecl main()
{
   LPWSTR *szArglist;
   int nArgs;
   int i;

   szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
   if( NULL == szArglist )
   {
      wprintf(L"CommandLineToArgvW failed\n");
      return 0;
   }
   else for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]);

   // Free memory allocated for CommandLineToArgvW arguments.

   LocalFree(szArglist);

   return(1);
}

プログラム中のどこからでも呼べるのが時と場合によって便利

C++11 template で暗黙の型変換を防ぐ

先に普通の関数定義をして、そのあとテンプレート関数定義を書いて存在を消しておく

class Hoge {
public:
  void do_something(uint8_t* hoge) { printf(hoge); }
  template <class Ty> void do_something(Ty x) = delete;
};

int main() {
  auto hoge = Hoge();
  uint8_t c;
  uint32_t i;
  hoge.do_something(&c); // OK
  hoge.do_something(&i); // NG
};

VSCodeでBlenderスクリプト編集環境準備

1. VSCodeをインストール

code.visualstudio.com

2. Python Extension をインストール

File → Preferences → Extensions 左のカラムに Python とかあるので(無ければ検索欄に入力する)インストール

3. Python Interpreterを設定

  1. 実行したいスクリプトがあるフォルダを開く
  2. F1 → Command Prompt → Select Python Interpreter
  3. Blenderpythonを選択
C:\Program Files\Blender Foundation\Blender 2.91\2.91\python\bin\python.exe

4. Autocomplete をダウンロード

github.com

Blenderが最新すぎて↑になければ、古いものをインストールするか下記サイトの pypredef_gen.py を使ってAutocompleteのスクリプトを生成する

github.com

path_to_blender\Blender.exe -b -P pypredef_gen.py

5. VSCodeで Autocomplete が効くようにする

  1. File → Preferences → Settings → Workspace Settings
  2. 右上の Open Settings (JSON) を選ぶ f:id:dungeonneko:20210405002108p:plain
  3. autocompleteへのパスを追加
"python.autoComplete.extraPaths": [
    "C:/blender_autocomplete/2.91"
],
"python.linting.pylintArgs": [
    "--init-hook",
    "import sys; sys.path.append('C:/blender_autocomplete/2.91')"
]

6. Blender Development Extension をインストール

  1. File → Preferences → Extensions から検索欄に Blender Development 入力すると出てくるのでインストール
  2. スクリプトブレークポイント貼っておく
  3. F1 → Blender: Start → Choose Blender Executable ...
  4. Blenderのexeを選んで起動(VSCodeを管理者で実行していないとうごかない模様+Blenderのバージョンによってはうまく起動できないのでさっさと他のバージョンをいれたほうがいい)
  5. Blenderスクリプトエディタで自分のスクリプトを呼び出す
filename = C:\path_to_project\script.py
exec(compile(open(filename).read(), filename, 'exec'))

これでVSCode上でブレークポイントに引っ掛かるのを確認できた。複数スクリプトを使うプロジェクトを開発する場合はこちらを試すと良さそう。

PycharmでBlenderスクリプト編集環境準備

1. Pycharmインストール

www.jetbrains.com

2. Blenderインストール

www.blender.org

3. Autocompleteをダウンロード

github.com

Blenderが最新すぎて↑になければ、古いものをインストールするか下記サイトの pypredef_gen.py を使ってAutocompleteのスクリプトを生成する

github.com

path_to_blender\Blender.exe -b -P pypredef_gen.py

4. Pycharmのプロジェクト設定

File → Settings → Project → Project Interpreter → Project Interpreter から、Blenderフォルダ内の python.exe を選択 f:id:dungeonneko:20210404152438p:plain

さらに Show paths for the selected interpreter から Autocomplete のスクリプトフォルダにパスを通す f:id:dungeonneko:20210404152449p:plain

pycharm上でautocompleteが効くようになる f:id:dungeonneko:20210404152740p:plain

5. Blenderテキストエディタからスクリプトを実行

filename = "C:/path_to_your_pycharm_project/script.py"
exec(compile(open(filename).read(), filename, 'exec'))

備考