Git for Windows

もはや、開発には必須とも言えるリビジョン管理システム。

Windows用のGUIクライアントはいくつかあるが、基本CUIで使う(正確にはEmacsやVS Codeなどから使う)ので、ほぼこれ一択。

正直、ネットワーク機能を除けばRCSで十分なのだが…

GUIクライアントが欲しい場合は、別途TortoiseGitなどをインストールのがよいだろう。

インストールにおけるオプションは、基本デフォルト設定。

「Choosing the default editor used by Git」でCUIでのデフォルトのエディタを選ぶ。多くの場合は、エディタ内の統合環境から操作することになるのでVimでもなんでもよいのだが、現在開発用としてよく使う「Use Visual Studio Code as Git’s default editor」を選んでおく。

[Adjusting your PATH environment]は、WSLがあるもののちょっとした操作でUNIXツールが使いたくなることもあるので「Use Git optional Unix tools from Windows Command Prompt」にする。

[Configuring the line ending conversions]は「Checkout as-is , commit as-is」。改行コードの処理は、エディタの仕事だという考えから。改行コードに関する理解が浅いメンバーがいるチームで使うのであれば、自動変換も検討に値するかもしれない。

「Choosing HTTPS transport backend」は「Use the OpenSSL library」を選ぶ。

「Configureing extra options」では、「Enable file system caching」、「Enable Git Credential Manager」にチェックする。

なお、オプションはバージョンによって頻繁に変更があるので、毎回きちんと検討する必要がある。

もっとも、設定はすべて%USERPROFILE%.gitconfigに記録されるのであとから修正するのは容易。

エクスプローラの再起動などは、特に発生しなかった。

アップデート

アップデート通知からアップデートした場合、インストーラー自体は、ダウンロードフォルダーに保存されることは無い。

初回インストール時に設定する一部のオプションについては、再度設定する必要がある。


特に、新しかったり選択肢の追加があったオプションについては、再設定が必要になるようだ。

アップデートの最初に、「新しいオプションだけ表示するか」というチェックボックスがある。

VirtualBox

Windows上で動作する仮想環境を実現するソフトウェアには、VirtualBox、Hyper-V、VMWare Workstation(Player)などがある。

Hyper-Vが若干速度的なメリットがあり、Windowsの機能の一部ということで使っていたが、Windows May 2019 UpdateにしたらDirect Xが動作しなくなってしまった。 RemoteFXのサポート終了関連の影響かと思ったが、深く追求せずVirtualBoxに移行した。

Hyper-VのホストOSとクライアントOSを同じレイヤーにおいて動作させるという仮想環境の実現方法が、あまり好ましくないことが多かったという事情もあるのだが…

  • ホームページ: https://www.virtualbox.org/
  • ダウンロードファイル: VirtualBox-6.0.10-132072-Win.exe (インストーラー版)
  • インストール方法: ダウンロードしたファイルを、実行してインストール。
  • 動作確認バージョン: 6.0.10 (Windows 10 Pro May 2019 Update 1903)

インストーラーのオプションは基本的にデフォルトで進めていく。
「Warnng: Network Interface」という警告が出るが、これは「一時的にネットワークが切れる」というもの。使っている最中でなければ特に気にする必要はない。

環境設定は特に行わなくても良いが、仮想マシンのデータの置き場所はUsersの下からは外したいのと、フォルダー名にスペースが入るのが望ましくないの2つの理由から変更することにしている。
[一般]-[デフォルトの仮想マシンフォルダー]でデフォルトの「C:\Users\nor\VirtualBox VMs」から「D:\VirtualBoxVMs」に変更した。

VirtualBoxは6になってから、Hyper-Vとの共存が可能になったとのことだが、うまくいかない、不安定などの話も多い。
実際にHyper-V有効のままVirtualBoxを試してみたが、仮想マシンの起動直後に「Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED).」というエラーが出てしまい、仮想マシンが起動しなかった。
「コントロールパネル」-「プログラム」-「プログラムと機能」-「Windowsの機能の有効化または無効化」から、「Windows ハイパーバイザー プラットフォーム」を有効にすると動作するという情報もあったので試してみたが、だめだった。

Windowsのパスワードリセット方法

Windows PCのパスワードを紛失してしまってログイン不能になってしまった場合でも、以下の手順でパスワードをリセットすることができる。

概要


Windowsのパスワードを忘れた場合でも、電源を入れればログオン画面までは進む。

そして、ログオン画面の左下に小さなボタンが表示されている。

これは「コンピュータの簡単操作」というメニューを表示させるボタンなのだが、この「コンピュータの簡単操作」の実態は「utilman.exe」というコマンドになっている。

そこで、このutilman.exeをcmd.exeに差し替えて、コマンドプロンプトを立ち上げてパスワードを操作するというのが、このパスワードリセット手順の概要。

utilman.exeをcmd.exeに入れ替える

utilman.exeをutilman.bakという名前に変更し、cmd.exeをutilman.exeという名前でコピーする。

今回は、Windows 8.1のインストールディスクを使うが、NTFSを操作できればLinuxのLive ディスクでもなんでもよい。

Windows 8.1のインストールディスクをドライブに入れ、PCを立ち上げる。この時、当然ながらBIOSなどで起動優先順位をCD/DVDドライブを内蔵ハードディスクより優先にしておくこと。

Windows セットアップの画面が立ち上がったら、キーボードのShiftキーとF10キーを同時に押す。

コマンドプロンプトが管理者モードで立ち上がる。

Windowsの場所を確認するため、Cドライブから順にディレクトリの中身を見ていく。

> dir c:
> dir d:

Windowsが存在したら、そのドライブに移動する。

> d:

Windowsが存在したら、そのドライブに移動する。

> cd \windows\system32

utilman.exeをutilman.bakという名前に変更する。

> ren Utilman.exe Utilman.bak

cmd.exeをutilman.exeという名前でコピーする。

> copy cmd.exe Utilman.exe

コマンドプロンプトを終了する。

> exit

インストールディスクを取り出し、「Windows セットアップ」ウィンドウの右上の「×」をクリックしてセットアップを終了する。

「Windowsのインストールを取り消しますか?」の画面で「はい」をクリックすると再起動が始まる。

パスワードを再設定する

再起動して、ログオン画面が表示されたら、右下のボタンをクリックする。

コマンドプロンプトが表示されたら、設定されているユーザーを確認する。

> net user

Administratorのパスワードを変更する。passwordの部分は新しいパスワードを入力する。Administrator以外でも、特定のユーザーのパスワードを変更したければAdministratorの部分をそのユーザーの名前にする。

> net user Administrator password

コマンドプロンプトを終了する。

> exit

これで、設定し直した新しいパスワードでログインできるようになる。

utilman.exeを元のものに戻す

ここで、そのままAdministratorでログインして、utilman.exeを元のものに戻してしまいたいところだが、utilman.exeには特殊な属性がついているため、入れ替え時同様にWindowsのインストールディスクなどでPCを立ち上げて、コマンドプロンプトから操作するのが楽。

入れ替え時同様の手順でコマンドプロンプトを立ち上げる。

Windowsがあるドライブに移動する。

> d:

\Windows\System32フォルダーに移動する。

> cd windows\system32

中身がcmd.exeのutilman.exeを削除する。

> del Utilman.exe

utilman.exeを元のものに戻す。

> ren Utilman.bak Utilman.exe

コマンドプロンプトを終了する。

> exit

インストールディスクを取り出し、「Windows セットアップ」ウィンドウの右上の「×」をクリックしてセットアップを終了する。


「Windowsのインストールを取り消しますか?」の画面で「はい」をクリックすると再起動が始まる。

以上で、パスワードの再設定手順はすべて完了。

MediaPad T1の強制初期化手順

Android端末においてロックを設定していてパスワードを忘れてしまったり、そもそも正常に起動しなくなった場合には、強制的に出荷状態に初期化するしかない。

MediaPad T1の強制初期化の手順は以下。
どうやら、2016年〜2019年くらいの間に生産されたHUAWEIの端末はこの方法で強制初期化できるものが多いらしい。

  1. 事前に、十分に充電を行っておき、電源ケーブルは抜く。
  2. 電源ボタンと音量大ボタンを押して起動する。再起動ではなく、あくまで電源オフ状態からの起動でないと初期化メニューは表示されない。
  3. 端末名やメーカーロゴが表示されたら電源ボタンのみを離し音量大ボタンを押し続ける。
  4. EMUIのロゴが表示され、その下に「Reboot system now」、「Wipe data/factory reset」、「Wipe cache partition」の3つのメニューが表示される。
  5. 音量大ボタンから指を離す。
  6. 音量ボタンで「Wipe Data/factory reset」を選択した状態にして、電源ボタンを押す(画面のタップでは反応しない)。
  7. 「Comfirm wipe off all user data?」と表示されるので、音量ボタンで「Wipe data/factory reset」を選び、電源ボタンを押す。
  8. 10数秒待ち、初期化が完了すると、「Reboot system now」というメニューが表示されるので、音量ボタンでそれを選び、電源ボタンで決定し、再起動する。

ちなみに、私が強制初期化が必要になったのは、「電源を入れ起動後、HUAWEIロゴから通常の背景に移った瞬間に再起動がかかってしまう。そしてまた再起動の無限ループ」となってしまったため。

Path Copy Copy

エクスプローラー上で、コンテクストメニューからパス名をさまざまな形式でクリップボードに収納する。

  • ホームページ: Path Copy Copy <https://pathcopycopy.github.io/>
  • ダウンロードファイル: PathCopyCopy16.0.1.exe (インストーラー版)
  • インストール方法: ダウンロードしたファイルを、実行してインストール。
  • 動作確認バージョン: 16.0.1 (Windows 10 Pro October 2018 Update 1809)

インストールは、パスの形式の選択肢をどの程度増やすかの質問があるだけで特に悩むことはなく、再起動も不要。
質問には、「All commands, including power-user commands」という一番選択肢が多いものを答えておき、インストール後に実際に試してみて、不要なものは表示しないようにするのがよいだろう。

Settingsでは、コンテクストメニューの1段目に表示するもの、Path Copyの下に表示するものを選ぶことができる。

その他、パス名をダブルクォートで囲むか、さらにはスペースが含まれる場合のみダブルクォートで囲むかなど、細かい好みにまで対応したオプションが設定できるのは、オープンソースのよいところだろう。

Firefox

現在メインのWebブラウザ。

  • ホームページ: https://www.mozilla.org/ja/firefox/new/
  • ダウンロードファイル: Firefox Installer.exe(インストーラー版)
  • インストール方法: ダウンロードしたファイルを、実行してインストール。
  • winget ID: Mozilla.Firefox
  • 動作確認バージョン: (Windows 10 Pro 20H2, Windows 11 Pro 21H2)

宗教的理由と移行が面倒と言う理由で使い続けているけれど、残念ながらお勧めできる方はとても少数。

ライトユーザーであれば、Windowsとの親和性(たいしたメリットではないとは思うが)でEdgeを勧めるし、ヘビーユーザーであればChromeのGoogle連携や拡張機能の充実が便利だろう。

使う宗教的理由とは、Webの自由という考え方に対する共感と、商業的利益を考えた開発とは距離をおいてくれるだろうという期待。どちらも、人にはお勧めするための理由としては弱いね。

アドオン

Evernote Web Clipper

WebページをEvernoteに記録するアドオン。

クリップするときに、ノートブックやタグを指定でき、しかもそれをそこそこ正確に予想してくれるのが優れもの。

現在、Evernoteの主な用途がWebページの記録になっており、必須。

Evernote Web

アドオンのアイコンをクリック、もしくはAlt+Pで、ピン止めしてあるEvernoteのタブを表示してくれるアドオン。

Evernoteに課金していない場合、同期できるデバイスの数に制限があるので複数のデバイスでEvernoteを使うには便利。

ただ、この機能の日本語の説明が意味不明。日本スタッフがいるのだからこの程度は自動翻訳を修正してよ…

拡張子アイコンをクリックすると、固定されたタブで最もお気に入りのウェブサイトにリダイレクトされます。 この目的を達成するために、キーボードショートカットを使用することもできます。

Format Link

表示しているページへのリンクを、いろいろな書法に基づいてクリップボードに収納するアドオン。

デフォルトのText、HTML、Markdownなどの他にも、自分で書式を定義することもできる。

org-mode、Scrapbox、WordPress用の書式を定義し、便利に使っている。

  • Markdown: [{{text.s(“\[“,”\[“).s(“\]”,”\]”)}}]({{url.s(“\)”,”%29″)}})
  • Scrapbox: [{{url}} {{text.s(“\[“,”[”).s(“\]”,”]”)}}]
  • Text: {{text}}\n{{url}}
  • HTML: <a href=”{{url.s(“\””,”&quot;”)}}”>{{text.s(“<“,”&lt;”)}}</a>
  • org-mode: [[{{url}}][{{text}}]]
  • reST: \href{{{url}}}{{{text}}}
  • WordPress: [{{text.s(“\\[“,”\\[“).s(“\\]”,”\\]”)}} &lt;{{url.s(“\\)”,”%29″)}}&gt;]({{url.s(“\\)”,”%29″)}})

Greasemonkey

JavaScriptによりWebページのDOM操作などを行い、表示内容を加工するアドオン。

もちろん、表示内容の加工以外のことも可能だが、Greasemonkeyの用途の9割以上は表示内容加工だろう。

私の場合は、見やすくするとか、無駄なものを省くとかいった用途で使うことはあまり無い。そのページを訪問した場合にかならずコピーする箇所を、ページの最下部にピックアップして表示する、というようなかなり特殊な用途で使っている。

Kee

オープンソースのパスワードマネージャーKeePass Password Safe 2とFirefoxを連携するためのアドオン。

以前はKeeFoxという名前で、最近Key Vaultという独自のパスワードマネージャーを実装したようだ(KeePassありきで使っているので、詳細は不明)。

Pushbullet

プッシュ通知を行うサービスPushbulletをFirefoxで使うためのアドオン。

テキストやURL、ファイルの送信なども行うこともでき、ChromeやAndroidなどとの連携も行うことができる。

デバイス間でのちょっとしたデータのやりとりにはとても便利。

ResizeIT 2

あらかじめ設定した4つのサイズに、Firefoxのウィンドウを合わせるアドオン。

Webページの作成時に使う。

Ultimate QR-code Generator

現在表示しているURL、入力したテキストなどからQRコードを作成し表示するアドオン。

PCで開いているページを、スマホなどで見たいときなどはかなり便利(Pushbulletでもよいが、QRコードであれば連携していないデバイスにも渡すことができる)。

uBlock Origin

広告をブロックするアドオン。

日本向けのカスタムフィルタ「豆腐フィルタ <http://tofukko.r.ribbon.to/abp.html>」も合わせて導入する。

Firefox DevTools ADB Extension

Androidのリモートデバッグに使うアドオンのようだが、特に使っていない。どころかインストールした記憶も無い。

WebIDEを使うと自動的にインストールされるようだ。

Sizer

アクティブなウィンドウを、あらかじめ指定した大きさ、位置に変更するタスクトレイに常駐するソフト。
特定のモニター解像度で使用するプログラムを作る時に使う。

デフォルトではCtrl+Wn+zでサイズなどを設定するコンテクストメニューが開く。

  • ホームページ: http://www.brianapps.net/sizer4/
  • ダウンロードファイル: sizer4_dev570.zip(ポータブル版)
  • インストール方法: ダウンロードしたファイルを展開して、任意の場所にコピー。
  • 動作確認バージョン: 4.0 dev570(Windows 10 Pro October 2018 Update 1809)

Thunderbird

もう10年以上使用しているメーラー(MUA)。

Thunderbirdの前は、Wanderlust、Mew、MH-eといったEmacs上のメールソフトを使っていたが、諸事情により移行、今に至る。
アドオンも豊富だが、60系でWebExtensionが有効化されたため、旧来のアドオンがかなり使えなくなった模様。
最近は、あまりアドオンは使用しない方針で使っているため、私的にはそれほどダメージは無い。

どこがよいか

開発体制がしっかりしたオープンソースである。メーラーは欠かすことのできないソフトウェアなので、安定と長期的なしたメインテナンス体制が欠かせない。そのためには、一企業の方針により終了してしまう可能性のあるものは避けたい。

マルチプラットフォームである。Windows、Mac、Linuxなど動作する環境が多い(Emacs上にelispで実装されたものにはかなわないが…)。もちろん、それぞれの環境に優れたメーラーはあるが設定の移行などが楽な点は無視できない。

残念な点

フィルターログがローテートしてくれればよいのだが、そこまでは贅沢な要求というところ。

あとは、そもそもOutlook側が悪いのだが、TNEF形式をデコードできるようになってくれると助かる。

まあ、そんなことくらいしか思いつかないくらいに、満足度は高い。

設定

アーカイブ

アーカイブフォルダーを使うと、用件が完了した後にも保存しておきたいメールなどを簡単に整理することができる。いつも使っているフォルダーの中に残るメールの数を増やしたくない場合には有効な機能。

メッセージペインの上部にあるアーカイブボタンをクリックすると、そのメールはアーカイブフォルダーに移動される。

デフォルトでは、アーカイブフォルダーは、その下にさらに年ごとのフォルダーを作り、メールはその中に移動されるようになっている。

年ごとのフォルダー分けにはあまり意味を感じないため、アーカイブフォルダーを年ごとに分けないようにする。

「ツール」-「アカウント設定」-「設定したいアカウント」-「送信控えと特別なフォルダー」-「メッセージの保管」で、「アーカイブの保存先」にチェックがついていることを確認し、「次のアカウントの”アーカイブフォルダー”」が、設定したいアカウントになっていることを確認する。

さらに、「アーカイブオプション」で「単独のフォルダー」に設定する。

Google連絡先との同期

現在のThunderbird102はCardDAVに対応しており、これによりアドオン無しでGoogleの連絡先と同期する事ができる。

Google連絡帳を導入する手順は以下の通り。

  1. アドレス帳を開く
  2. [新しいアドレス帳]から[CardDAVアドレス帳を追加]を選ぶ。
  3. [新しいCardDAVアドレス帳]ダイアログボックスで、[ユーザー名]にGoogleアカウントを入力する。
    すると[場所]に「gmail.com」が自動的に表示されるので[次へ]。
  4. おなじみのGoogleアカウントの認証画面が表示されるのでアカウントとパスワードを入力、2段階認証を設定しているので認証を行い権限を与える。
  5. [利用可能なアドレス帳]が「Address Book」でチェックが付いている事を確認して[次へ]。

これで、アドレス帳の中に「Address Book」というGoogle連絡先のアドレス帳ができる。名前はプロパティから変更可能。

双方向での同期が可能で、同期間隔も設定できる(デフォルトは30分)。

アドオン

デフォルトで付いてくるLightning アドオンは不要なので削除(クライアントを問わないGoogleカレンダーを使用)。

Header Tools Lite

Header Tools Lite :: Thunderbird向けアドオン

メールヘッダを編集するアドオン。
基本的なヘッダであれば各項目ごとに、そうでなければ ソースまるごとをテキストボックスで編集できる。

項目ごとの編集

基本的には、届いたメールのヘッダは触らないのだが、例外が2つある。
ひとつは、SpamAssassinでSpamと誤判定されたメールから、SpamAssassinの判定ヘッダを削除する場合。これをしておかないと、Thunderbirdのフィルタによって再度Spamとして扱われてしまうことがある。
もうひとつは、不正なヘッダがありThunderbirdなどでの処理に支障があるとき。

メールのデータを直接編集

ImportExportTools

Thunderbird 102では既に利用できないので、無効化中。

後継の、ImportExportTools NGが存在するようだが、現在の所必要ないので、導入はしていない。

ImportExportTools

フォルダーを対象に、メールをインポート、エクスポートする。
mbox、eml、テキスト、HTML など様々な形式に対応。

QuickText

thundernest/quicktext: An extension for Thunderbird that lets you create templates that can be easily inserted into your own emails.

定型文を本文に挿入するアドオン。
挿入する文は複数設定でき、メールのヘッダ情報やファイルの内容の挿入など、多彩な挿入設定が可能。
GitHubでオープンソースの開発が行われているので、Thunderbird自体のバージョンアップへの追従などの開発継続には期待できる。

ただ、実際には前書きと後書きの挿入に使っているだけ。

本当のところ、メールのBODYに宛先と自分の名前を書くというビジネスメールのマナーというのが、嫌いだ。
To、Fromを見ればわかることで、紙の手紙を出すときにそんなことはしないだろう。
あえて必要なのは、共用のメールアドレスを使っている相手の時に指名するときくらいだろう。

Remove Duplicate Messages (Alternate)

mozdev.org – removedupes: index

重複したメッセージを見つけるアドオン。

通常の使用では使うことはないが、メッセージをコピーしたり、バグなどで同じメールが複数表示されてしまう時にそれをピックアップして削除する。

PQI Air Card IIを常時Wi-Fiクライアントとして使う

いまさら、旬を過ぎた話ではあるのだけれど…

PQI Air Card II(以下Air Card)は無線LAN機能を内蔵したmicroSDカードアダプタ。アクセスポイント(親機)としても、クライアント(子機)としても動作する。

デフォルトではアクセスポイントとなりスマホやPCから一対一接続して使うのだが、クライアントとして動作させると、LAN環境やテザリング環境でさらに便利に使えるようになる。Linuxで動いており、FTPも自由自在。

ということで、常にクライアントとして動作させるようにする。

参考サイト: デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方

接続先の登録

クライアントとして動作させるには、事前に接続に行く先のSSIDとパスワードを登録しておく必要がある。

購入時点では当然登録されていないので、まずはカメラなどにAir Cardを入れて、カメラの電源を入れデフォルトのアクセスポイントモードで立ち上げる。

そしてPCやスマホでSSIDがAir Cardのネットワークに接続し、ブラウザで192.168.1.1もしくはhttp://air.card/ に接続すると、設定画面が表示される。

ここで左のメニューから[Wifi Setup]を選び、HotspotsのAPに使いたいネットワークのSSIDとKEY(パスワード)を登録する。

3つまで登録できるので、優先順に無線LANアクセスポイントのものや、スマホのテザリング用のSSIDなども登録しておくとよいだろう。

今後もアクセスポイントモードとして動作させることがあるのならば、パスワードも設定する。

また、このとき[Main Page]で表示されるMacアドレスも控えておく。

クライアントモードでの立ち上げ設定

Air Cardをクライアントとして動作させる公式の手順は、カード内にある緑色の写真を消去すること。これにより、自動的にクライアントモードに切り替わる。

が、Air Card IIはLinuxで動作しており、/usr/bin/w2コマンドによりクライアントモードにすることができる。

そして、microSDカードのルートディレクトリにautorun.shというスクリプトを置いておくとカード起動時の最後に実行される。普通にPCなどから書き込んで構わない(もちろん改行コードはLF)。

#!/bin/sh

sleep 5
/usr/bin/w2

(sleep 5は動作が安定するまでの余裕)

autorun.shを書き込めば、次回の起動時からは先に設定したSSIDにクライアントとして接続するようになる(接続先の優先順位は上から)。

固定IPアドレスの設定

最後はLAN内のPCなどからAir Cardに簡単にアクセスできるように、固定IPアドレスを割り当てるようにする。

クライアントとして接続する場合はDHCPによってIPアドレスを取得するわけだが、このIPアドレスが動的割当だとAir Cardのアドレスを探すところから始めることになるからだ。

DHCPサーバでAir CardのMacアドレスに対しては固定IPを与えるように設定する。

うちでは一番使用するネットワークのDHCPサーバはdnsmasqを使っているので、/etc/dnsmasq.confに以下の行を加えた。

ルータのDHCP機能を使っている場合は、ルータのインターフェース上で設定することになる。

dhcp-host=10:66:82:xx:xx:xx,aircard,192.168.1.22,12h

そして、dnsmasqを再起動。

$ sudo systemctl restart dnsmasq.service

これで、ブラウザやftpで192.168.1.22にアクセスすることにより、SDカードの中身を操作できるようになる。

正直、この固定IPアドレスを付与するだけのためにdnsmasqを使っている。NTTひかり電話ルータが、固定IPアドレスの設定すらもできないという仕様なのは困ったものだ。

動的IPアドレスをTwitterで通知する

Air Cardをテザリングしているスマホに接続した場合、割り当てるIPアドレスを固定することはできない。

だが、いちいちスマホの[設定]の奥深くまで潜って、割り当てたIPアドレスを調べるのはあまりに面倒。

参考にした「ひとりぶろぐ」さんではTwitterのメンションを飛ばす方法でIPアドレスの通知をしていたが、私は非公開アカウントがあるので、そこにツイートすることにした。

常用しているPushbulletに通知を飛ばすのが理想なのだが、PushbulletのAPIはhttps接続を前提としており、Air Cardに載っているwgetがhttpsに対応しておらず、この手段が取れないのが残念。

autorun.shを以下のように書き換える。
「ひとりぶろぐ」さんのスクリプトとほぼ同じようなものなのだが、私の好みの書き方ということで以下。

#!/bin/sh

TOKEN=TOKENtokenTOKENtokenTOKENtokenTOKEN
TWITTER_ID=MyTwitterID
STEWGATE='http://stewgate-u.appspot.com/api/post/'
WGET=/usr/bin/wget

sleep 5
/usr/bin/w2

IP=`ifconfig mlan0 | grep inet | perl -nlpe 's/^ +inet addr:([0-9\.]+).+$/$1/'`

${WGET} -O - --post-data="_t=${TOKEN}&msg=http://${IP}/%0ARAND - ${RANDOM}" ${STEWGATE} 2> /dev/null

使う人は、TOKEN、TWITTER_IDの部分を自分のものに書き換えてください。

IPアドレスをURLの形にしているのは、Webインターフェースにも簡単にアクセスできるようにするため。

${RANDOM}を設定しているのは、同じツイートを連続して書き込むと、制限がかかるため。それでも、このスクリプトを連続実行する(Air Cardのオンオフを短時間で繰り返す)と、Twitterから制限がかかる可能性もあるので注意。

もちろん、LANに接続した場合もツイートはされてしまうのだが、LANの場合は固定IPなのでいちいち見ることもない。それでも、接続確認の役にはたつのでそれはそれでよいだろう。

なお、「PQI Air Card II搭載のwgetコマンドは動作がおかしい」とのことだったが、特に問題なく動作した。Firmwareのバージョンが違うのかな…

残念なこと

Air CardのWi-Fiが弱く、接続先のそばに置いておかないといけない。

PCやスマホの無線LANであれば、余裕で接続できるような距離でもAir Cardでは接続できなかったりする。とくに仕事場ではメインのPCのそばでは接続できないので、アクセスポイントのそばにカメラを置いて、PCのそばに移動して作業するというのはちょっと面倒。

まあ、長時間接続していろいろやるわけではなく、写真のデータさえ取り出すことができれば良いので大きな問題ではない。

Xacti DMX-CG9では、動作しない。

もちろん、ただのSDカードアダプタとしては使えるのだけれど、 Wi-Fiが有効にならない。

一眼の方はまとめて取り出すことが多いので、どちらかといえばAir Cardはちょこちょこ使うXactiで使いたかったのだが、残念。

もはや高くなってきている

投げ売りの時期も過ぎてしまったようで、今Amazonではアダプタのみで2,800円もする。

まあ、利便性を考えれば2,800円出しても買う価値はあると思うけれど、というか予備機としてもう一つ買っておきたいくらいだ。

いくつか残念なことはあるが、以前のようにケーブルを繋いだり、カードを抜き差しするのに比べれば圧倒的に楽。そもそも銀塩時代を考えれば極楽のはずなのだが人間堕落するものだ。

検討すべきこと

以前、うまくクライアントモードで接続しないときがあった。

最近はほぼ問題は発生していないのだが、またうまくいかなくなるようだったら、”iwconfig mlan0″の出力からESSIDの値を取り出し、それによって”/usr/bin/w2″を再試行するようにすると良いかもしれない。

wsl-start

WSL上から、Windowsのファイルを開くスクリプト。

以下のように、パスが通ったコマンド、関連付けしてある拡張子のファイルをWindowsで開くことができる。

$ wslstart notepad
$ wslstart /mnt/c/foo/bar.pdf

Windows上でEmacsを使うための一番の情報源と思われる、NTEmacs @ ウィキの管理者さんの作成。

導入の一番の目的は、WSL上で動作するEmacs上でURLを指定して、Windowsのブラウザで開くこと。

とりあえず、ブラウザを開くのに必要そうなwslstartとwslcommonのみをダウンロードして使ってみることにする。
他にも便利に使えそうなものも揃っているので、あとでじっくり見てみよう。

.emacsに以下のコードを追加して、URLをWindowsのブラウザで開くことができるようになった。

(setq browse-url-browser-function 'browse-url-generic)
(setq browse-url-generic-program "wslstart")