艦これ用タイマーアプリ 艦隊タイマーをWindowsストアに公開

遠征、入渠、建造の時間を一覧出来ます

遠征、入渠、建造の時間を一覧出来ます

スナップでもOK

スナップでもOK

遠征は選ぶだけ。遠征リスト上で遠征IDをキーボードから入力することで選択出来ます。 遠征を選んだ状態で時間を入力すれば途中からのカウントダウンもOK。

遠征は選ぶだけ。遠征リスト上で遠征IDをキーボードから入力することで選択出来ます。
遠征を選んだ状態で時間を入力すれば途中からのカウントダウンもOK。

建造も選ぶだけ

建造も選ぶだけ

入渠時間もキーボードから直接入力出来ます。

遠征の繰り返しも簡単

遠征の繰り返しも簡単

アプリを閉じていてもプッシュ通知が届くので他の作業に集中出来ます。

アプリを閉じていてもプッシュ通知が届くので他の作業に集中出来ます。

タイマーの設定は複数のデバイスで素早く同期されるで外出先、職場、自宅と忙しく艦隊を指揮する提督に最適です。

Windows ストア の Windows 用 艦隊タイマー アプリ

艦隊タイマーは2013流行語アプリ選手権&総選挙 by @IT Windowsタブレット向けアプリ開発にエントリーしています。気に入って頂けたら「クラウドで取り返す…… BaaS返し」部門は艦隊タイマーに投票お願いします。

投票所

PHPでの文字列の扱いには注意しよう、と自分への戒め

if ('0' == '00') {
    //trueになる
}

if ('0' === '00') {
} else {
    //falseになる
}
//文字列の比較には===、!==の3文字シリーズを使わないと事故るよ!文字列と文字列の比較でも数値に変換可能な場合は数値として比較されちゃうよ!

if ('0') {
    //falseになる
}
if ('00') {
    //trueになる
}
//ifに文字列を突っ込んでも何の判定にも使えないよ!

PHPをdisるのはプログラマの嗜みではあるけれど、disってもPHPは無くならないんだから戦い方を身に付けないとね。

幸いマニュアルは大変に親切な作りなので最大限に活用しましょう!

http://php.net/manual/ja/index.php

POPFileをWindowsからVPSのUbuntuに移行させたお話

POPFileのIMAPモジュールを使ってメールの振り分けをしていたけど、POPFileのためだけにデスクトップPCの電源を常時点けておくのは許せないし、かと言って常時持ち歩いているタブレットPCでPOPFileを動かすとバッテリーの減りが心配。

そこで以前から考えていた計画を実行に移した。さくらのVPSを借りてPOPFileを動かす!そこでメモも兼ねて手順を残すことにした。POPFileのお話なのでPOPFile固有じゃないところは出来る限り端折って書く。

POPFileのパッケージが用意されているディストリビューションの中ではUbuntuが一番簡単そうなので、カスタムOSの Ubuntu 12.04 amd 64 をインストールする。

VPSコントロールパネルからログイン。

SSHサーバの設定をしてSSHでログイン出来るようにしとく。

POPFileのインストール

sudo aptitude install popfile

 

libtext-kakasi-perlをインストール Thanks: http://mux03.panda64.net/diary/20070822.html#p01

sudo aptitude install libtext-kakasi-perl

 

lynxブラウザをインストール

sudo aptitude install lynx

 

Windows側にあるpopfile.dbファイルをSFTPか何かで何とかしてUbuntu側の /var/lib/popfile/ にコピー。所有者とパーミッションをchownコマンドとかchmodコマンドとかで元からUbuntu側にあるpopfile.dbファイルと同じにする。

lynxでlocalhost:7070にアクセス。これでPOPFileの管理画面に入れる。セキュリティタブの”リモートマシンからの HTTP 接続(ユーザーインターフェースの利用)を認める (POPFile の再起動が必要)”を”はい”にする。

Puttyとかでポートフォワーディングの設定をする。Windows側7070/tcp→Uuntu側7070/tcp。

Windows側のブラウザからlocalhost:7070へアクセス。これでUbuntu側のPOPFlieの管理画面に入れる。Windows側のPOPFileの設定をUbuntu側のPOPFileへ手動でポチポチと入力して設定する。

これで完了。試してないけど通常のPOP3で利用する場合にはPOP3用のポートもポートフォワーディングすれば大丈夫だと思う。

Arrows Tab Wi-Fi QH55/J買いましたよ。

まず外見、中々かっこいいです。安っぽさは皆無なので安心していいです。所有欲は満たせます。

重量ですが、片手で持っても疲れることはないでしょう。もっとも僕はすぐに一緒に買ったケースに入れたので重くなってしまったのでした。

パワーに関しては、まぁATOMって感じです。購入前に要件を満たせるだけの性能かよく検討した方が良さそうです。が、ふぃおの至高のデジライフ CPUリミッターを解除したArrows Tab WiFi QH55/Jが快適すぎるをやると見違えるようにサクサクになります。が、これはバッテリー動作時のCPU使用率を抑えるような電源設定になっていたためで、これを常に100%まで使用するように設定を変更するパッチが富士通よりリリースされました。やはり不具合だったようです。プリインストールされているユーティリティのアップデートナビより入手出来ます。また、富士通のサポートページからも入手可能です。

動作はそれなりにヌルヌルなのですが、それ以上にタッチパネルのコーティングがヌルヌルでとても気持が良いです。

あとタッチパネルの表面から液晶画面までの距離が近いので、デスクトップで小さいメニューをタッチするのも何とかなります。

富士通のWebサイトに書いてあることは信じて間違いないでしょう。概ね満足なので、気になる点を挙げた方が早そうです。

・電源ボタンが凹んだところにあって押しにくい。(間違って押したら困るからなんだろうな)

・ウィンドウズキーが反応しにくい。(これも意図せず反応するよりはいいのか)

・左側面のUSB端子がぐらぐらしてて頼りない。

続いて一緒に購入したケースについて。エレコムのこれです。

重さと引き換えに中々の高級感です。写真じゃわかりにくいフタが閉まったりスタンドになったりするギミックを画像にて。

f:id:anis774:20121125012750j:image:w360f:id:anis774:20121125012747j:image:w360

Windows8はタッチパッドでも快適

f:id:anis774:20121031120417p:image:medium

前のアプリに戻ります。繰り返すとアプリが順番に切り替わります。

f:id:anis774:20121031120416p:image:medium

Appバーが出ます。

f:id:anis774:20121031120415p:image:medium

チャームが出ます。

f:id:anis774:20121031120414p:image:medium

チャームを出して、指を離さず右に戻すと消えます。時計を見たい時に。

f:id:anis774:20121031120413p:image:medium

チャームを出して、指を離さずに上下に動かすと各項目を選択して実行できます。やっぱりやめたって時はそのまま指を右に戻します。

 

マウスでは使いにくいとか言われてるWindows8。タッチパッドだと尚のこと地獄だと思われそうなところ、これが意外と捗るのです。

タッチパネルじゃないノートPCじゃ意味がないなんて言わずにあなたのノートPCでWindows8を試してみては如何でしょう。

MetroスタイルアプリでUser-Agentを指定しつつクッキーも使ってHTTP通信したい

※この記事はWindows8RPについて書いていますがわかりません。当然今後のことも本当のところも分かりません。

User-Agent指定してダウンロードするコード

using System.Net.Http;
using System.Threading.Tasks;

static class Connection
{
    public static async Task<string> Get(string url)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("User-Agent", "Hogezilla");
            return await client.GetStringAsync(url);
        }
    }
}

 

とっても簡単です。でもこれクッキー使えないんですよね。

そこで、クッキー使えそうなコード。

using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;

static class Connection
{
	static CookieContainer cookies = new CookieContainer();
	static Encoding enc = Encoding.GetEncoding("Shift-Jis");
	public static async Task<string> Get(string url)
	{
		HttpWebRequest req = HttpWebRequest.CreateHttp(url);
		req.CookieContainer = cookies;
		req.UserAgent = "Hogezilla"; //←そんなプロパティねーよって怒られる
		req.Headers.Add("User-Agent", "Hogezilla"); //←そんなメソッドねーよって怒られる

		using (WebResponse res = await req.GetResponseAsync())
		using(Stream resStream = res.GetResponseStream())
		{
			byte[] resBytes = new byte[res.ContentLength];
			await resStream.ReadAsync(resBytes, 0, resBytes.Length);
			return enc.GetString(resBytes, 0, resBytes.Length);
		}
	}
}

 

確かにここを見るとUser-AgentヘッダーはHeadersプロパティから変えられないからUserAgentプロパティから変更しろって書いてるんだけどなー。

WinRTの時だけ違う方法があるのだろうか。かれこれ数日間悩んでるんで、上手く書けたらアウトプットしますよ。

 

ってことで数日悩んでやっと出来ました。HttpClientHandlerクラスが鍵でしたね。

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

static class Connection
{
	static CookieContainer cookies = new CookieContainer();
	public static async Task<string> Get2(string url)
	{
		using (var handler = new HttpClientHandler())
		using (var client = new HttpClient(handler))
		{
			handler.CookieContainer = cookies;
			client.DefaultRequestHeaders.Add("User-Agent", "Hogezilla");
			return await client.GetStringAsync(url);
		}
	}
}

 

VirtualBoxにWidows8 Cousumer Preview をインストールしてskkimeの設定と辞書を移行した

例に漏れずにWin8CP入れたんです。ホストOSがWin7の32bitで、ゲストにWin8CP64bit入れたら激重だったんで、ゲストは32bitにした。あとVM作成時に聞かれる仮想HDDの種類も速いって書いてあるFixedにした。他はまぁググったら出てくるような手順でインストール完了。これで何とか使えるかなってレベル。ちなみにホスト環境はAthlonX2の2.11GHzでメモリ3G。

最初に躓いたのが、”メトロのアプリが起動しねぇ…!”。Storeでアプリの更新して、WindowsUpdateしたら起動するようになった。どっちがキッカケかはわかんない。ググっても画面の解像度が云々ってのばっかり出てくるから、それ試しても駄目だった人がこの記事に辿り着きますように。

1920*1080のモニタ使ってるんだけど、Win8が画面一杯にならないし、やっぱりまだ遅い。VirtualBox Guest Additonsってのを入れるといいらしい。これに含まれてるDirect3D Supportってコンポーネントがホストマシンのグラボを直接制御してパフォーマンスが上がるらしい。しかし、ゲストのWin8がセーフモードじゃないとDirect3D Supportのインストールに失敗する。

Win8CPをセーフモードで起動しようにも、起動時にF8連打しても何も起こらない。ググったらやり方見付かった。Win8のスタート画面でそのまま”msconfig”ってタイプすると自動的に検索になる。これは便利。これでMSCONFIGを実行するとセーフモードで起動するオプションがあった。これでセーフモードにしてVirtualBox Guest Additonsのインストールが無事終了。これでやっと実用的なパフォーマンスが出るようになった。

次にskkimeの移行。僕は1.5系を使ってる。このインストールは問題なく成功。問題は設定画面の出し方。コントロールパネルを漁ってもskkimeの設定画面の場所がわからない。HDD内をskkで検索したら見付かった。”C:\Windows\IME\SKKIM15\skimconf.exe”にあった。これを実行するとskkimeの設定画面が開かれる。まぁ、結果的にはこの画面を操作することはなかったのだけれど。

まずホストOSに入ってる辞書ファイルをWin8に配置。続いて設定はレジストリに書かれてるのでregeditで”HKEY_CURRENT_USER\Software\TT\Windows\CurrentVersion\SKKIME”をエクスポート。これをテキストエディタで修正してWin8上でダブルクリックすれば設定移行は完了。修正箇所は”HKEY_CURRENT_USER\Software\TT\Windows\CurrentVersion\SKKIME\1.5\Dictionaries”にある辞書ファイルのパス。これをWin8での辞書ファイルの配置場所に合わせるだけで上手くいった。

これでめでたしめでたしとなるかと思ったら問題が見付かった。メトロアプリでskkimeが使えない!Windows+Spaceを押してIMEの選択画面出してもskkimeがグレーアウトしてて選べない。これは大問題である。解決策求む。かしこ。

IronPythonでインターフェースのイベントを実装する

Pythonにはイベントを定義する構文がないから困った。

そんなときはadd_イベント名(self, handler)、remove_イベント名(self, handler) を実装する。

例えば、INotifyPropertyChangedインターフェースのPropertyChangedイベントだとこう。

class NotifyObject(INotifyPropertyChanged):
	def add_PropertyChanged(self, handler):
		if not hasattr(self, "_propertyChangedHandlers"):
			self._propertyChangedHandlers = [handler]
		else:
			self._propertyChangedHandlers.append(handler)

	def remove_PropertyChanged(self, handler):
		if not hasattr(self, "_propertyChangedHandlers"):
			self._propertyChangedHandlers = []
		else:
			try:
				self._propertyChangedHandlers.remove(handler)
			except ValueError:
				pass

	def RaisePropertyChanged(self, propertyName):
		if not hasattr(self, "_propertyChangedHandlers"):
			self._propertyChangedHandlers = []
		else:
			for handler in self._propertyChangedHandlers:
				handler(self, PropertyChangedEventArgs(propertyName))

 

こんな感じでイベントハンドラの管理も自分でやる。

ハリオ カフェプレス・スリム

ハリオ カフェプレス・スリム ブラック CPS-2TBを買った。味がブレにくい抽出器具が欲しくて、初めはサイフォンを検討していたのだけど、安くてペーパードリップでもサイフォンでも得られない味わいを体験させてくれそうなフレンチプレスを購入。

書籍とかネットとかで見た抽出方法を色々試してみたんだけど、なんだかんだ言って外箱に書いてあるハリオ公式(?)の淹れ方、粗挽き、熱湯、2分抽出が美味しかった。

これは手軽に美味しいコーヒーが飲める良いものです。