javascriptの非同期処理
・Promise
pending(実行中)、fulfilled(成功)、rejected(失敗)の状態を持つ。
fulfilledならthen、rejectedならcatchの中身が呼ばれる。
pending中は、処理の終了を待つ。
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を追加。
webプログラミングへの道
HTML&CSSとWebデザイン 入門講座
ゲームで学ぶJavaScript入門
webpack実践入門
Live2D SDK for Web
jQuery最高の教科書
TyranoScript
Web技術の基本
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;
}