読者です 読者をやめる 読者になる 読者になる

既に誰かがやってそうな誰もお前を愛さない sl コマンドを作った

Linux Ruby

ls コマンドのタイプミスとして sl とタイプしてしまった時に機関車の AA が流れるのは有名なジョークコマンドだと思います。
Twitter でよく流れる 誰もお前を愛さない を表示するものおw作ってみました。 sudo でやってるのを見て書いたコマンドですが、きっと誰かが既に作ってそうな気もします。

f:id:k-side:20170224112316p:plain

GitHub からクローンできます。
Ruby が入ってれば OK です。

$ git clone https://github.com/KMR-zoar/sl-and_nobody_loves_you.git
$ echo "alias sl='`find ${PWD} -name "sl.rb"`'" >> ~/.bashrc
$ source ~/.bashrc
$ sl
And nobody loves you.

github.com

debian で node.js を使うときのメモ

debian

nvm でバージョン管理とか上手くいかず、Gentoo とか FreeBSD で node.js を使ってたけどこの方法なら上手くいった。

手順は次の通り。

  • ディストリの node.js と npm をインストール
  • npm で n をインストール
  • n で最新の node.js をインストール、npm の更新
  • ディストリの node.js と npm をアンインストールする
続きを読む

Amazon.co.jp で2段階認証を設定した

アメリカの Amazon では以前からできていた2段階認証ですが、最近日本でも2段階認証が設定できるようになったとえっちゃんに教えてもらったので設定してみました。

https://www.amazon.co.jp/

2段階認証はユーザーIDとパスワードの認証を通過した後に携帯電話の SMS やスマホの認証アプリに表示される数桁の認証コードを入力することで万が一ユーザーIDとパスワードが流出しても簡単にログインさせないようにする認証方式とかそんないい感じのシステムです。
GoogleMicrosoft が提供する認証アプリが使えるようです。

まずはサインイン

まず普通にサインインしてアカウントサービスを開きます。

f:id:k-side:20170217125548p:plain

アカウント設定からスタート

アカウント設定 の中にあるアカウント設定を変更をクリックします。

f:id:k-side:20170217125613p:plain

アカウント設定を変更 の一番下に高度なセキュリティ設定 があるので右側の編集をクリックします。

f:id:k-side:20170217125829p:plain

2段階認証の説明と設定が必要な理由が表示されます。
2段階認証ができるようになった時点でログイン時に設定を促す画面を出してくれた方がいいと思いますが…。
設定を開始 をクリックして設定をスタートしましょう。

f:id:k-side:20170217130015p:plain

コードの受け取り方の選択

認証コードの受け取り方がテキストメッセージか認証アプリを選べます。
いつも使っている認証アプリを選択しました。

f:id:k-side:20170217130221p:plain

画像では豪快に消していますが、 QR コードが表示されるのでこいつをスマホの認証アプリで読み取ります。

f:id:k-side:20170217130446p:plain

読み取りを行うと認証アプリに Amazon が追加され、6桁の認証コードが表示されるので、下側にあるテキストボックスへコードを入力してコードを確認して続行をクリックします。

バックアップ手段を追加

万が一スマホの認証アプリが使えなくなった場合に備えて認証コードを受け取るための予備の手段を設定します。
他のサービスも方法は違えど認証コードがなくてもサインインやログインできるようするなど、一つ目の手段がダメだったときの手段が用意されていることがほとんどです。

f:id:k-side:20170217130937p:plain

最初はテキストメッセージを選択して電話番号を入力したのですが、12時間以上経ってもコードが送られてこないので音声電話を選択して音声でコードを受け取りました。
今回この音声は音質が悪く、微妙にどんな数字を言っているのかわかりませんでしたが、なんとか数値を聞き取って入力することができました。

最後の確認

最終的に2段階認証を有効にする前に2つの注意事項(?)が表示されます。

f:id:k-side:20170217131214p:plain

  • 認証コードを入力する画面が出ない端末ではパスワードの後ろに認証コードを追加してサインインする
  • よく使う端末ではコードの入力を不要にする

といったところです。

必要であればこの端末ではコードの入力は不要です。にチェックを入れます。
自分はよく使う端末でも毎回コード入力をするようにしています。面倒なんですけどね。

同意して2段階認証を設定にするをクリックすれば設定が完了します。

おしまい

一度サインアウトしてもう一回サインインしようとすると認証コードの確認が必要になっているはずです。

いくつかのサービスで多要素認証、2段階認証を利用していれば簡単だと思える操作です。
というか2段階認証を使えることになったとアナウンスしてくれてもいいと思うんですが、自分の見落としでしょうか…。

以前より安心してサービスを使えるようになりますね。

おまけ

ちょっと書きましたがバックアップ手段を追加の段階でテキストメッセージを受け取れずに設定を停止していました。
翌日別の端末でバックアップ手段を追加の段階から再開することができていますが、なんで送られてこなかったのかはわかりません。

ちゃんと最後の同意して2段階認証を設定するをクリックするまでは2段階認証が有効にならないので設定を途中で抜けても中途半端な状態で2段階認証が始まるということはなさそうです。

さくらのクラウドの API を使ってみただけの話

さくらのクラウド

さくらのクラウドで利用できる API を使ってみたメモです。メモだけ。
API の操作に必要な API キーはクラウドの管理画面にある「設定」→「API キー」とたどると作ったり確認したりできます。

ローカル側は Windows から FreeBSD 11.0-RELEASE-p7 に SSH 接続したターミナルの bash から curl で叩いています。

使う API キーとか URL は変数に格納しておきます。

$ export sandbox="https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/"
$ export token="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
$ export secret="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

以下に出てくる12桁のXはディスクのIDとかサーバーのIDとかそんな感じなので、適宜読み替える。
curl の実行結果を jq に渡しているのはレスポンスの JSON を整形して読みやすくしてるだけです。なくても OK。

サーバーの作成とか

まずはサーバープランのプラン ID を確認

$ curl --user "${token}:${secret}" -X GET ${sandbox}/product/server | jq "."

確認したプラン ID を使って1コア 1GB のサーバーを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/server -d '{"Server":{"Name":"Test Server","ServerPlan":{"ID":1001}}}' | jq "." 

続いてディスクプランのプラン ID を確認

$ curl --user "${token}:${secret}" ${sandbox}/product/disk | jq "." 

確認したプラン ID から SSD プランで 20GB のディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","Plan":{"ID":4},"SizeMB":20480}}' | jq "."

保持しているディスクの一覧を表示

$ curl --user "${token}:${secret}" -X GET ${sandbox}/disk | jq "."

作成したディスクを作成済みのサーバーに接続

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/disk/XXXXXXXXXXXX/to/server/XXXXXXXXXXXX | jq "."

サーバーで利用するインターフェイスの作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/interface -d '{"Interface":{"Server":{"ID":XXXXXXXXXXXX}}}' | jq "."

サーバーがネットワークに出られるようにインターフェイスを共有セグメントに接続

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/interface/XXXXXXXXXXXX/to/switch/shared | jq "."

セットしたサーバーの電源を入れる

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/server/XXXXXXXXXXXX/power| jq "."

管理画面でサーバーを強制終了してからサーバーと共にディスクを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/server/XXXXXXXXXXXX/ -d '{"WithDisk:XXXXXXXXXXXX}' | jq "."

アーカイブの操作

もういっちょ SSD プラン 20GB のディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","Plan":{"ID":4},"SizeMB":20480}}'| jq "."

作成したディスクを元にアーカイブを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/archive -d '{"Archive":{"Name":"Test Archive","SizeMB":20480,"SourceDisk":{"ID":XXXXXXXXXXXX}}}'| jq "."

元になったディスクを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/disk/XXXXXXXXXXXX | jq "."

今度はアーカイブを元に新しいディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","SourceArchive":{"ID":XXXXXXXXXXXX}}}' | jq "."

アーカイブを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/archive/XXXXXXXXXXXX | jq "."

後は

さくナレも参考にして Rubyスクリプトを組みたい。

地理院地図のタイルと OSM を重ねて比較するページを作った

osmjp

国土地理院ベクトルタイル提供実験レポジトリ をフォークして地理院地図のラスタ/ベクタタイルと OpenStreetMap を重ねて表示するページを作りました。

地理院地図と OSM の比較

リポジトリはこちら GitHub

地理院地図と比較して OSM の中で不足しているオブジェクトを目視で判断したかった気がしたので作成したものです。
見ている画面の領域を JOSM で開くためのこの場所を JOSM で編集ボタンが右上の方にあります。

ローカルだと leaflet-hash があってもちゃんと動いたのですが、ロリポップのサイトにアップロードしたらうまくいかなかったので zoar.space の方はハッシュを表示しないようにしています。

スクリプトをいじると Potlatch 2 とか iD エディタでも編集できるようになると思いますが…。

Word を起動した時に「shredder.osi.office.net/shredderservice/api/aadgraph/gettenantdetails」へのサインインダイアログが表示される

Office 365 Business の契約で使えるデスクトップ版 Word を起動した時に次のようなサインインダイアログが表示されるようになってしまいました。

f:id:k-side:20161214145656p:plain

「なんだこれ」と思いググったところ、Microsoft の英語圏コミュニティで解決策が示されていました。

作業としては次のような感じ。

  • Word で表示されるダイアログをバツで消してから「ファイル」→「アカウント」→「サインアウト」とたどって Office 365 からサインアウトする

f:id:k-side:20161214151404p:plain

  • コントロールパネルから「資格情報マネージャー」を開く

f:id:k-side:20161214151401p:plain

  • 「MicrosoftOffice15_Data」または「MicrosoftOffice16_Data」で始まる資格情報を「資格情報コンテナーから削除」

f:id:k-side:20161214151400p:plain

  • 必要に応じて Word からサインインする

f:id:k-side:20161214151402p:plain

これで件のサインインしてっていうダイアログが出てこなくなります。

debian で VS Code が起動できなかったのでライブラリをいじった

debian VS Code

さくらのクラウドに X 環境構築してローカルから接続して開発とかどうだろうって遊ぼうとしたら VS Code が起動できなかった時のメモ。

環境は次の通り

deb ファイルから VS Code をインストールして、メニューから起動させようとしても何も起こらない。
tar ファイルを落として解凍して起動しようとしたら次のようなエラーが発生して起動しませんでした。

Xlib:  extension "XInputExtension" missing on display ":11.0".
Xlib:  extension "XInputExtension" missing on display ":11.0".
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Xlib:  extension "XInputExtension" missing on display ":11.0".
Xlib:  extension "XInputExtension" missing on display ":11.0".

既に GitHub の vscode リポジトリでは issue が作られていて、解決法も掲載されていました。

んで、次のような操作でとりあえず起動ができます。

$ mkdir ~/lib
$ cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ./lib/
$ sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1

この ~/lib ディレクトリを LD_LIBRARY_PATH に突っ込むと起動します。

$ LD_LIBRARY_PATH=$HOME/lib code

GUI から起動するメニューの内容も変更しておかないと GUI のメニューからは起動できません。

$ sudo vi /usr/share/applications/code.desktop

[Desktop Entry] の中にある Exec を変更します。

Exec=sh -c "env LD_LIBRARY_PATH\=\$HOME/lib  /usr/share/code/code" %U

これで GUI のメニューからも起動できるようになりました。