Category Archives: 未分類

RESTとは何か

RESTがいつもわからなくなるので覚書

一行回答

HTTPプロトコルで単純なデータのやりとりのこと

目的

ステートレス

ステートレスとはURIのレスポンスがいつも一意で他の情報によってレスポンスが変わったりしないこと。よってクッキーが関わるとステートレスではない。

キャッシュできるように

クライアントからは見えないところで最適化できるようにするためにキャッシュできるようになってること。URIにセッション情報を含めるとできなくなるのでだめ。セッション情報とは個別のクライアントに設定される値のこと

それ以外

RESTSOAPなどとは違ってプロトコルではなくざっくりとしたスタイルのこと

何が嬉しいか

クライアントは難しいことを考える必要なく簡単にアクセスできる。

Visual StudioでThe ‘Global Hub Client Package’ package did not load correctly.

ソリューションを開くと以下のようなメッセージボックスでエラーが出て、ビルドができない。

原因と対策

おかしな環境変数が設定されているとこうなる。msys2などから起動した場合や、msys2経由のファイルマネージャから起動した場合は環境変数を引き継ぐと思うので、引き継がないようにする。

C++/CLIでListのソート

大変

基本

これは簡単。しかし要素がクラスだと難しい

SortはインターフェースIComparerを引数にとるので、まずはこれを継承するクラスをつくりその仮想関数Compareで比較をする。

自分のクラスで

自分のクラスMyClassstatic int Compareを定義する。次にMyClassComparerも定義する。こうしないでMyClassIComparerから派生させると、Sortの際に自分のクラスを渡すことになってなんかおかしい感じになる。

ソース:https://github.com/ambiesoft/blogprogs/tree/master/6085

エクスプローラに表示されるファイルのタイプを取得する

SHGetFileInfoを使う

古いWindows7のルート証明書の更新

ルート証明書が古いとhttpsでエラーが出るようなので更新したい。

最新のルート証明書を他のマシンからエクスポート

  1. 他の正常なWindows7で[Ctrl+R]mmcを実行。
  2. [ファイル][スナップインの追加][証明書][コンピュータアカウント]で追加
  3. 以下のようにエクスポート

取得した証明書を古いWindows7にインポート

上と同じような感じでエクスポートしたファイルをインポートする。

テストコード

Ubuntu Server建てた記録

サーバー移行手順

ubuntu-20.04.2-live-server-amd64.isoをダウンロードしてインストール
DiskのLVM管理は行わない
IPを固定に設定
サブネットマスクは192.168.3.0/24
IPアドレスは192.168.3.97に設定
ここはDHCPでは割り当てられないようになっている(ルーターで設定している)

途中でopen-sshを追加インストールする

ところで最近snapというパッケージ管理コマンドがあるが、これはUbuntuが開発しているパッケージマネージャでユニバーサルなパッケージマネージャを目指しているようだ。どのディストリでも使えるようにすることが目標らしい。

ubuntuインストールで running ‘curtin hook’がなかなか終わらない。
仕方ないのでrebootしてしまう。
とりあえず起動できた。

ssh-server

まずはsshサーバーを設定してパスワードで外部からログインできるようにする。(これは特に設定しなくてもできた)

githubにいろいろ置いてあるのでssh-keygenで公開鍵をgithubに登録する。

これで.ssh/id_rsa.pubに公開鍵ができたので、これをhttps://github.com/settings/keysに登録する。
これでgit cloneやpushができる。

bind

このサーバはウェブサーバにするのでローカルからドメインを参照したとき、ローカルのIPを返すようにbindをインストールして設定する。LAN内のPCからはこのサーバをnameserverに設定する。

/etc/bind/named.confに以下を追加

ここで追加した2つのファイルを追加する。

詳しくはわからないが、ambiesoft.comに対して192.168.3.97を返す。
再起動して試す

このコマンドは動くが、タブ補完が効かないうえに、–status-allの一覧にも表示されない。コマンドが変わったのか?(後記:bind9ではなくてnamedになっていた)(後記:さらにserviceではなくsystemctlを使うようだ)
bindが動いているかWindowsのコマンドプロンプトでチェック

多分動いている。
とおもったがforwarderが動いていない。google.comでも192.168.3.97を返している。
調べた結果dnssec-validation no;にしなければないないらしい。

古いマシンにはもう1つHDDがついているのでこれも移動する。まず新しいハードディスクに古いハードディスクの内容を丸々コピーしてから新しいマシンに接続してマウントする。
新しいマシンからHDDを見つけるにはlsblkやblkidコマンドを使う。

新しく追加されたディスクはsdbでUUIDはd81a8861-98d5-43a4-9924-d52b7f241887であることが分かったのでこれを/etc/fstabに追加する。

マウントする。

マウントできたのでリブートして確かめる。

mysqlをインストール

ハードディスクをコピーしてデータをそのまま使いたい。データは/theData/mysqlにある。
パーミッションがおかしいのでまず直す。

つぎにデフォルトのデータディレクトリ/var/lib/mysqlをシンボリックリンクにする。
$ cd /var/lib
$ sudo ln -s /theData/mysql mysql

起動
$ sudo service mysql start
Job for mysql.service failed because the control process exited with error code.
See “systemctl status mysql.service” and “journalctl -xe” for details.
$
apparmorがアクセスを拒否しているようなので設定を追加

無事起動した

phpmyadmin

いろいろ大変だった
やったこと

/etc/mysql/debian.cnfにdebian-sys-maintのパスワードが設定されている。
データをまるまるコピーしてるのでパスワードが合わないが、ここに古いパスワードを設定しても動かないので、mysqlの方のパスワードをかえる。
mysqlが8になっていろいろ変わったようでググったものでは動かなかった。
結局パスワードを変えるには以下

もともとこのユーザーがcaching_sha2_passwordで保存されてなければならなかったのか?プレーンパスワードだと設定できなかった。

いずれにしてもこれでhttp://192.168.3.97/phpmyadminにアクセスできて動いた。
セキュリティは後でまとめて行う。

apache2

phpmyadminのインストールでapacheもインストールされているので、あとは設定

Let’s encrypt

ウェブサイトの指示に従ったらできてた

samba

できた

vue

vue内部のaxiosで通信するところでエラーがでている。
原因はhttpsではなくhttpで通信していたからだった。

wordpress

ここに書いた。

wordpressで引っ越しするとき投稿内容に古いドメインが含まれる

C++/WinRTのプロジェクトが作成できない

以下のようなエラーが出て作成できない場合。

C++/WinRTの拡張機能をインストールする

ユニバーサルWindowsプラットフォーム開発をインストールする