Dreamhost はデフォルトで Subversion をサポートしていますが、もちろん Git も使えます。詳しくは こちらの公式 Wiki (英語) を参照してください(公式サポート外とはいえ丁寧に解説されています)。

さて、Git に大量のファイルを入れていると、サーバーサイドの Git プロセスが重くなり Dreamhost のリソース上限にヒットしてしまい、巡回プログラムに Kill されるケースが増えてきます。

Yikes! One of your processes (git, pid 4323) was just killed because your
processes are, as a whole, consuming too much memory. If you believe you've
received this message in error, please contact Support.
Killed

この問題の対処方法として、サーバーサイトで下記のような設定を行い、リソースの消費を制限することで問題を回避できました。今では 公式 Wiki にも書いてありますね。

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global core.packedGitWindowSize "1m"
git config --global core.packedGitLimit "100m"

VPS プランを導入するのも勿体無いし… という場合などにお試しくださいまし。

僕は当初、この問題への対処法がわからず、Unity 関連のソースファイルは Bitbucket に移動してしまったんですが、もっとよく Wiki を読んでいれば回避できたようです。

おそらく多くの人々がそうであるように、僕も会社/自宅とも Mac を使っています。
Mac で Windows は動くけど、逆はライセンス的に禁止されているので、ソフトウェアエンジニアは iOS/Android/Windows/Web の開発を行う必要性から Mac に縛られがちです。
そして僕の場合、職業柄 Windows が常時起動している必要があるため、どうしても Parallels が必要になり、ここ数年は毎年購入しています。

そしてどうやら Parallels Desktop 11 は「当たり」のバージョンアップのようです。

続きを読む

放置状態だった各種アカウント(Twitter や Blog など)の整理を始めて、いわゆるオンラインプロファイルを maeashi 名義に統一する作業を行っています。

深い理由はありませんが、複数ドメインにわたる維持管理手数料を圧縮したり、各種メモやらソースコードのコミット先を統一したりするのが緩い狙いです。今まで書き捨てていたものなども、この Blog あたりにまとめられるといいなと思っています。

その一環で trendcatcher.net ドメインから丸ごと過去記事を移行しました。

旧ドメインは Dreamhost のレンタルサーバーで動かしていましたが、ここ maeashi.com は Windows Azure で動かしています。

続きを読む

例によって iPhone 5 を購入しました。
この投稿では、iPhone 4S から iPhone 5 に機種変更して良かったと思える点を書きたいと思います。

iPhone 5

なお、今回も ソフトバンク オンラインショップ で注文しました。当日に受け取れるかは微妙なところですが、列に並ぶ必要がないのでオススメです。今回は、プレオーダーが始まった当日21時頃に予約、日曜日の午前中に配達という感じです。

以下、ほぼ丸一日使ってみての感想となります。

続きを読む

スキーマレスの Azure Table Storage では、文字列のContainsを使ったQueryはサポートしないようですね。(ただし StartsWith は CompareTo を応用することで使えるらしい…)

Linq to Azure Table では普通に書けるので、ダメもとで下記のコードを試してみたのですが、500 Error が返されるため、ちょっと調べてみました。

var query = from t in this.CreateQuery(EntitySetName)
            where (t.PartitionKey== ProductTable.PartitionKey) && t.Tags.Contains(tag)
            select t;

return query.ToList();

MSDNを漁ってみると、下記のような投稿が見つかりました。
LINQ SubString Query Using Azure Table Storage…

また下記のBlog記事を見るように提案されています。
Implementing a Simple Word Search Using Azure Table Storage

結局のところ、部分文字列の検索に関しては、自前でインデクス化したテーブルを別途作ってやるのが早道のようですね。確かに理にかなっています。

今回の(僕の)用途では、タグ付けされたアイテムを抽出するだけですから、アイテムの登録・更新時に、検索用テーブルにアイテムを登録してやることで実装したいと思います。

英語の記事ですが、ASP.NET MVC で多言語対応するための、素晴らしい記事です。

ASP.NET MVC 2 Localization complete guide

まさに完全ガイドですね。

ASP.NET MVC のローカライゼーション手法については、ローテクな雰囲気を感じますが、いかにも MVC っぽくて良いのかもしれません。

着手しているプロジェクトでは、運営コストの観点から、ASP.NET MVC は REST API の提供と、管理者サイトUIのみで使われる予定なので、今回は、この記事の出番は少ないかも。

今回は、ASP.NET MVC 2 が自動生成する View (Webフォーム) にて、各項目のラベル表示を変更する方法について調べてみました。

まず、View を追加するまでの方法については、MSDN の下記の記事が参考になりました。
10 行でズバリ !! ASP.NET MVC におけるデータの取得から画面表示までの流れ (C#)

上記を参考にしつつ、Azure Table ストレージに作ったテーブルに、TableServiceEntity の派生クラスを挿入するコードまでは、簡単に書く事ができました。

でも、このままだと、下記のように、変数名がそのまま表示されちゃうんですよね。

image image
こんなコードが自動生成される。 こんな感じで 変数名 が表示される。

 

解決方法としては… なんかググったら下記のプレゼンテーションがヒットしました。 (^_^;
ASP.NET MVC 2 ~新機能の紹介~
上記は 技術ひろば.net 様が公開して下さっているようです。ありがとうございました。

要するに LabelFor() の処理では 、Windows Form の PropertyGrid と同様、System.ComponentModel 名前空間にある DisplayName 属性の値を表示しているんですね。

using System.ComponentModel;
  :
[DisplayName("画像 (サムネ)")]
public string ImageSmall { get; set; }          // 画像(小)
[DisplayName("画像 (詳細)")]
public string ImageLarge { get; set; }          // 画像(大)

という訳で、表示対象のクラス定義にて、上記のように DisplayName 属性を加えてやったところ、無事に下記のような表示になりました。簡単ですねぇ。

image

通常の用途なら、このあたりで十分かもしれません。めでたし、めでたし。

ただ、多言語対応を考慮すると、下記のように DisplayAttribute の派生クラスを自前で定義するほうが良いかもしれませんね。 -> Localization of DisplayNameAttribute

さて次回は、この調子で多言語対応について調べてみたいと思います。

最近、個人的に Windows Azure で動作するサービスを書いてます。

やっぱ Azure で書くなら MVC だよね~、という訳で、これから幾つか備忘録的なポストをしていく予定です。正直、MVC も Windows Azure も実戦は初めてなんですが。

まずは、Azure 向けの開発で参考になった記事をまとめてみます。

業務システムでWindows Azureを使うための42の覚え書き
とても良記事でした。実際にサービスを稼働させる上で考慮すべきポイントが簡潔にまとまっていてすごく参考になりました。 PowerShell の専用コマンドレットを使って Windows Azure のDeployment を制御するという辺りが特に実用的でした。

PowerShell で始める Windows Azure アプリケーション管理
課金体系を考えると、Windows Azure のアプリケーション管理は切実な問題です。(現在の課金方法では、サーバーにアプリを配置しているだけで課金される)
この記事では、PowerShell を使って、開発マシンから適切に Windows Azure を管理する手法が詳細に説明されており、とても参考になりました。

コードで学ぶ Windows Azure アプリケーション開発入門
実際の開発方法については、こちらの連載が参考になりました。下位の概念についても丁寧に解説されているため、理解が深まりました。

Windows Azure ストレージによるアプリケーション エンジンの強化
実際に各種ストレージを実装する際に、とても参考になりました。この記事では Queue と Table について簡潔に解説されています。着手しているプロジェクトでは SQL は使いたくなかったので、この記事だけで用が足りてしまいました。

とりあえず、以上です。

これ意外にも、MSDN を筆頭に、とても実践的な資料が沢山公開されていますね。
書店では、さっぱり関連書籍を見かけませんが、オンライン資料は非常に充実していて驚きました。

そろそろ旬の技術、という事でしょうかね~。

iPad メモ帳iPad の日本語入力は、iPhone のフリック入力ほど特殊ではありませんが、覚えておくと便利な機能があります。高速な日本語入力を行うための参考資料として、スクリーンショットを交えて記事にしてみます。

今回のトピックは iPad のキーボード レイアウト設定 です。 下記について、それぞれ解説していきます。

  • iPad では、日本語キーボードのレイアウトを4種類から選択できる。
  • 技術文書または英語を書く機会が多い場合、キーボード レイアウトを QWERTY に変更することを検討してみる。
  • レイアウトの切り替えにより、日本語の変換候補の順序も変更される。 

続きを読む

image

すこし前になりますが、上海問屋の格安モニターアーム を導入してみました。

他の製品と比べて大幅に安いのが気になりましたが、購入してみたら、全く問題ないどころか、素晴らしかったので記事にしてみます。

こんな感じになりましたよ!

 

モニターアームを導入すべき4つのポイント

  • 付属スタンドより、はるかに自由な位置/角度にモニターを配置できます。
  • モニターの高さ/角度を微調整できるので、長時間労働による疲労感を軽減できます。
  • モニター下部の空間を有効に活用できます。
  • 配線がシンプルになり掃除がしやすく、デスク周りを清潔に保つことができます。

それでは、実際に設置した様子を見ながら、順に説明していきます。

続きを読む