IPアドレス

・ipconfig
IPv4アドレス : 172.18.20.145
サブネットマスク : 255.255.255.0
 ネットワークアドレス部が172.18.20。サブネットの特定に利用。
 ホストアドレス部が145。サブネット内の端末の特定に利用。

・サブネット
プライベートアドレスを複数のサブネットに分ける仕組み
昔はクラスA/B/Cで分けていたが、大雑把すぎるのでサブネットマスクの仕組みが導入

IPアドレスの範囲
「10.0.0.0~10.255.255.255」「172.16.0.0~172.31.255.255」「192.168.0.0~192.168.255.255」をプライベートIPアドレスとして利用できる。
すべてのWANが、上記の全範囲を利用可能。
グローバルIPアドレスは、上記以外のアドレスが利用される。

サブネットマスクとCIDR
サブネットマスク255.255.255.0は、24bitをネットワークアドレスとして利用することを表している。
これをCIDR形式では/24と表し、172.18.20.145(/24)のように書く。

・WAN、VPNルーター、スイッチ
WAN : 離れた場所にある複数のネットワークを繋ぐ仕組み。
VPN : WAN上に作る仮想のプライベート通路。LANのように遠隔地同士が接続。
Desktop VPN : ユーザーPCからVPNに安全に接続するアプリ。
ルーター : 拠点の内外を繋ぐ機器。
スイッチ : たこ足配線のための機器。技術的にはルーターだけでサブネット化も可能。

・固定アドレスと動的アドレス(DHCP)
会社のプライベートIPアドレスDHCPによる自動割り当て。
その中の特定の端末を固定IPアドレスで利用したい。
その場合、DHCPサーバーの設定範囲を決めた上で、その範囲外のIPアドレスを端末で設定。

npm

・npm
Node Package Manager
Node.jsのライブラリを管理するツール

・ブラウザ/Node.js、クライアント/サーバーサイド、フロントエンド/バックエンド
クライアント/サーバーサイドは、物理的な実行場所
フロントエンド/バックエンドは、機能的な分担
 でも、意味的にはだいたい重なる。
 ブラウザはフロントエンドでクライアント側で動く。
 Node.jsはバックエンド。主にサーバーで動くがクライアントで動かしてもいい。
Electronは、Chrome(フロントエンド) + Node.js(バックエンド)

・npmコマンド
npm init : パッケージ初期化(package.jsonの作成)
npm install : package.jsonに基づいて必要なライブラリをインストール
npm install *** : 外部ライブラリをプロジェクトに追加
npm run *** : npm scriptsの実行
npm start : npm run startの省略形。startにだけ使える。

・package.json
必要なライブラリの定義
npm scriptsの定義

・webpack
バンドルのためのパッケージ
webpackコマンドでビルドでき、基本的にはnpm scriptsに以下のように定義する
 "build" : "webpack"
  コンソールでwebpackと打つとエラーが出る。npx webpackと打つ必要がある。
  npm scriptsではローカルライブラリを実行できるので、webpackだけでOK。
開発サーバーの立ち上げ
 "start" : "webpack serve"
webpack.config.js
 webpackの設定ファイル。手で作成する。
 モード、エントリーポイント、出力設定、開発サーバー設定などを記載。

・モジュール形式
IIFE : ブラウザ向けの古典的な形式。Cubism Coreなど。
ES Modules : モダンな環境
UMD : 色々な環境で利用可能。import文を使ってる場合はIIFEではなくUMDでビルド。

・ライブラリとしてのビルド方法(webpack)
webpack.config.jsに以下の記述を追加
 library : ライブラリ名
 libraryTarget : モジュール形式名

・TypeScript
npx tsc : tsファイルをjsファイルに変換
tsconfig.json : 必須ではないが、webpackなどを使う場合は必要

javascriptのソースマップまとめ

・配信アドレスとソースの場所
配信アドレス
 http://localhost:9090など。
 webpack.config.jsのdevServerの設定で決まる。
ソース(マップ)の場所
 webpack://dev-server/src/jsなど。
 dev-serverというのは、package.jsonのnameプロパティ。
 省略した場合webpack:///src/jsなどになる。

・webRootとsourceMapPathOverrides
webRoot
 プロジェクトのルートディレクトリ。package.jsonがある場所。
sourceMapPathOverrides
 ローカルとサーバーのソースの場所の対応付け
 "webpack://dev-server/*": "${webRoot}/*"など。

webpack-dev-serverとvscodeの組み合わせでデバッグ

javascript
https://github.com/kanosawa/npm_debug/tree/main/npm_debug_01

webpack.config.js : outputのpath/filenameにファイルを出力
devServer.static.directoryはCSSなどの配信にための設定(デバッグとは無関係)
devtool: 'source-map'でソースマップ作成。
launch.jsonでサーバーに接続。

☆「ビルド+サーバー構築」と「サーバー接続+デバッグ」で分かれている。

・TypeScript

https://github.com/kanosawa/npm_debug/tree/main/npm_debug_02

npm install typescript ts-loader
app.jsをapp.tsに修正。
tsconfig.jsonを追加
webpack.config.jsにmodule, resolveを追加。



Photoshop C++ SDKミニマムサンプル

#include "PIGeneral.h"

SPBasicSuite *sSPBasic = NULL; // これも頑張れば削除できる

extern "C" __declspec(dllexport) // macだと__attribute__((visibility("default"))))
SPErr AutoPluginMain(const char* caller, const char* selector, void* message)
{
    if (strcmp(caller, kPSPhotoshopCaller) == 0 && strcmp(selector, kPSDoIt) == 0) {
        // macはファイル出力などで代用
        MessageBoxA(NULL, "Hello from Plugin!", "Automation", MB_OK);
    }
    return kSPNoError;
}