2011年11月24日木曜日
Visual Studio 2010で.Net Framework 4.0 Fullを使う
でもlog4netを使いたかったりすると、Full版が必要になります。(Client ProfileにはSystem.webが入っていません)
ちょっと検索をしてみると、
「プロジェクトのプロパティ」 → 「アプリケーション」タブに 「対象のフレームワーク」という項目がありそこから変更できる
っていうのを幾つか見つけられたのですが、プロパティを覗いてもそんな項目はみつかりません。
最初はVisual Studio 2010 Proのライセンスがうまく認識されていないのか、とか思ったのですが、そうではありませんでした。これ、C#とVBで設定項目の場所が違うのです。
C#だと 上記の場所で変更できるのですが、VBだと、
「プロジェクトのプロパティ」 → 「コンパイル」タブ → 「詳細コンパイルオプション」にて変更できます。
2011年10月19日水曜日
[Github] 詰まったこと色々
- 特定のコミットへのロールバックの仕方
git reset --hard <desired commit id> git push -f
commit idはgithub上のhistoryから確認できます。
あるいは下記の方法で確認します
git log
- cloud9からgithubにプッシュ
git add ./ git commit -m "some comment" git push origin master
- リモートをロールバック
ロールバックしたいコミットのIDをgit logで取得し、下記のコマンドを実行
git push -f origin <desired commit id>:master
2011年9月21日水曜日
Asus Transformer 3.1 日本版にカスタムROMを導入する
今回は前回の内容を踏まえた上で、TransformerにカスタムROMを焼きます。
事前にrootを取得する必要はありません。
カスタムROMはPRIME! v1.9.1を選択しました。
このROMの特徴は下記のようなものです
- Android 3.2
- Root取得済み(superuser, busyboxインストール済み)
- 起動時にzipalignを行う(apkファイルの最適化)
- 電源オプション(電源OFF、再起動、リカバリ)
- キーボードドック接続時に、通知領域にドックバッテリ残量が表示される
- テキスト入力中に、ナビゲーションバーから別のキーボードに変更できる
- 空きRAM容量が常時250-300MBくらいになる
- etc...
実際の手順は以下の通りです。
前提
バックアップ済み
作業用フォルダにnvflash.zipを解凍してある(前回のポスト参照のこと)
1. nvflash用のPRIME! v1.9.1ファイルを用意する
[ROM] PRIME! v1.9.1 | Latest Asus Build++ | HTJ85B.prime_epad-1.9.1-20110904
上記サイトから、nvflash用のROMファイルをダウンロードし、解凍します。
解凍してできたimgファイル3つをnvflash.exeと同じフォルダ(おそらくnvflashtf)にコピーします。
2. ROMを焼く
Transformerの電源を切り、ボリュームボタンの「+」を押しながらPCに接続します。
nvflash.exeと同じフォルダ内にあるdownload.batを実行すると、PRIMEの導入処理が開始されます。
このバッチファイルの実行前に、2番で用意したimgファイル3つがnvflash.exe、downlod.batがあるのと同一のフォルダ内にあることを確認してください。
この3つのimgファイルがないままdownload.batを実行すると綺麗な文鎮ができあがります。
処理が終わると再起動し、AndroidのWelcome画面が立ち上がります。
Google アカウントを設定しましょう。
3. 日本語キーボードレイアウトで使えるようにする。
PRIME!のインストールはこれで終了ですが、このままではキーボードが英字配列です。
日本語キーボードのレイアウトで使用するにはもうひと手間必要です。
[Info] Eee Pad Transformer - Japan version - FOTA 8.4.4.12
上記サイトの「Japanese keyboard layout」リンクをクリックし、JapaneseKeyboardLayout.zipをダウンロードします。
ダウンロードしたファイルを、解凍せずにMicroSDカードにコピー、Transformer本体にさします。
電源ボタンを押し、リカバリモードで再起動します。
CWMが起動するので、"install zip from sdcard" -> "choose zip from sdcard"と進み、先ほどコピーしたzipファイルを選択しインストールします。
以上でPRIMEでも日本語キーボードを日本語レイアウトで使えるようになります(注:設定画面上はUSキーボードのままです)。
ATOKで半角/全角キーが使えなかったり、という問題はありますが(Alt + Spaceで日本語切り替えできます)…
[update 20110929]
Transformer標準の日本語キーボード、FSKARENを含んだキーボードレイアウトzipファイルを利用すると、半角/全角キーによる日本語切り替えが行えます。
Atokを利用していない方はこちらもどうぞ。利用方法は上記キーボードレイアウトのみのzipファイルと同様です。(nepwkさん、ありがとうございます)
また、未確認ですが「日本語フルキーボード For Tablet」というアプリを利用すると、任意の物理キーに「半角/全角切り替え」を割り当てることができるようです。
[/update]
Asus Transformer 3.1 日本版でバックアップを作成する
2ヶ月ほど公式ROMで使って、結構満足しています。
しかし、公式の3.2がまだまだ遠そうなのでカスタムROMを導入してみることにしました。
今回はその前段としてバックアップ方法について紹介します。
※注意------------------------------------------------------------------------------------------------
本体シリアルナンバーの最初の三桁が「B70」以上の方はこの方法でバックアップが取れない可能性があります。
----------------------------------------------------------------------------------------------------------
環境Windows7 Home Premium
1. nvflashのダウンロード
[Tool] Nvflash unbricking released! にてWindows nvflashをクリックし、リンク先からnvflash.zipをダウンロードします。
2. 作業環境の準備
ダウンロードしたnvflash.zipを作業用フォルダに解凍します。
ここでは"tf101_work"とします。
[20110924 update]
あと、Android SDKのインストールと、Asus TransformerのADBドライバのインストールも行っておいてください。 私は別の作業で事前にインストールしてあったためわかりませんが、ADBドライバが必要かもしれません。
[/update]
3. バックアップ用バッチファイルの作成
tf101_workの直下に「backup.bat」というファイルを作成し、以下の内容をコピー&ペーストします。
cd %~dp0 cd nvflashtf
set yyyy=%date:~0,4%%date:~5,2%%date:~8,2% set time2=%time% set hhmmss=%time2:~0,2%%time2:~3,2%%time2:~6,2% set folname=..\backup\tf101- set BACKUP_DIR=%folname%%yyyy%-%hhmmss% md %BACKUP_DIR%
nvflash --bct transformer.bct --setbct --configfile flash.cfg --bl bootloader.bin --odmdata 0x300d8011 --sbk 0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98 --sync nvflash --resume --getpartitiontable %BACKUP_DIR%\partitiontable.txt nvflash --resume --read 2 %BACKUP_DIR%\02_BCT_raw.img nvflash --resume --read 3 %BACKUP_DIR%\03_PT_raw.img nvflash --resume --read 4 %BACKUP_DIR%\04_BOOTL_raw.img nvflash --resume --read 5 %BACKUP_DIR%\05_RECOVERY_raw.img nvflash --resume --read 6 %BACKUP_DIR%\06_KERNEL_raw.img nvflash --resume --read 7 %BACKUP_DIR%\07_BAK_raw.img nvflash --resume --read 8 %BACKUP_DIR%\08_GP1_raw.img nvflash --resume --read 9 %BACKUP_DIR%\09_SYSTEM_raw.img nvflash --resume --read 10 %BACKUP_DIR%\10_CAC_raw.img nvflash --resume --read 11 %BACKUP_DIR%\11_MSC_raw.img nvflash --resume --read 12 %BACKUP_DIR%\12_USP_raw.img nvflash --resume --read 13 %BACKUP_DIR%\13_PER_raw.img nvflash --resume --read 14 %BACKUP_DIR%\14_YTU_raw.img nvflash --resume --read 16 %BACKUP_DIR%\16_GPT_raw.img
pause
4. バックアップの実行
まず、Transformerの電源を切り、ボリュームボタンの「+(上側のボタン)」を押しながら電源ボタンを押し、その状態のままPCに接続します。すると、新しくドライバのインストールが始まりますが、おそらく失敗します。
コントロールパネル>デバイスマネージャで「APX」を探し、ドライバの更新を行います。検索するフォルダには、「tf101_work\nvflashtf\usbdriver」を指定しましょう。
次に、作成したbackup.batを実行します。
バックアップが終了すると、 tf101_workフォルダーの直下に"backup\tf101-yyyyMMdd-HHmmss"という形式のフォルダが作成されています。
バックアップイメージはその中にあります。
2011年9月5日月曜日
[ASP.NET]StrConvでひらがな・半角カナ変換でエラーが出る 時の対処法
StrConvでひらがな・半角カナ変換をしようとしたところ、 開発環境では動いたのに、サーバーにのせたら下記のエラーが出てしまいました。
System.ArgumentException: This system does not contain support for the Japanese locale.
原因は読んでそのまま、OSが日本語をサポートしていないからです。
まずは.NET Frameworkの日本語language packがインストールされているか確認しましょう。
インストールされていなかったらインストールしてください。
language packがインストールされているのにひらがな・ 半角 カナ変換できないぞゴルァ! という時は、OSの言語が日本語になっていない可能性があります。
そんな時はOSの言語を日本語に設定するか、あるいはStrConvの第三引数に日本語LocaleID(1041)を指定します。
Dim strExample As String = "ほげほげ"
Dim strResult As string = ""
strResult = Strings.StrConv(strExample, VbStrConv.Katakana + VbStrConv.Narrow, 1041)
'--------------------------------
'結果;
'strResult = "ホゲホゲ"
後々のメンテナンスとかサーバが変わった時のことを考えると、LocaleIDを指定しておいた方がいいような気がします。
2011年7月11日月曜日
[jQuery Mobile] headerに3つ以上のボタンを表示する
jQuery Mobileでは、header部にボタン要素を記述すると、1つ目は左寄せ、2つ目は右寄せ、と自動でレイアウトしてくれます。
しかし、ただ3つ以上ボタンを入れようとしてもレイアウトが崩れてしまいます。
これを回避して3つ以上のボタンを一列に並べる方法を2つ紹介します。
- controlgroupを使う
表示したいボタンをcontrolgroupとして、ひとつにまとめます。
<div data-role="header" data-backbtn="false" data-theme="b">
<a href="#beforepage" data-rel="back" data-icon="arrow-l" data-direction="reverse" data-theme="a">Back</a>
<h1>Header</h1>
<div data-role="controlgroup" data-type="horizontal" class="ui-btn-right" style="top: 0px;">
<a href="#hoge" data-role="button" data-icon="grid" data-iconpos="notext" data-inline="true">Relation List</a>
<a href="#" data-role="button" data-icon="search" data-iconpos="notext" data-inline="true">Search</a>
</div>
</div>
↓
このようにボタンを一列に並べることができます。しかし、controlgroupを指定したdivにstyle="top: 0px"を指定し忘れると、controlgroup要素が下寄せになってしまうので注意が必要です。
- divで囲う
上記の方法だと、右寄せにしたボタンがひとまとまりになってしまいます。 しかし、それぞれ個別のボタンとして表示したい、ということもあるでしょう。 その場合はただdivで囲えばOKです。
<div data-role="header" data-backbtn="false" data-theme="b">
<a href="#beforepage" data-rel="back" data-icon="arrow-l" data-direction="reverse" data-theme="a">Back</a>
<h1>Header</h1>
<div class="ui-btn-right">
<a href="#hoge" data-role="button" data-icon="grid" data-iconpos="notext" data-inline="true">Relation List</a>
<a href="#" data-role="button" data-icon="search" data-iconpos="notext" data-inline="true">Search</a>
</div>
</div>
↓
どちらの場合も、囲んだdivでひとまとまりと認識されるので、class="ui-btn-right"はdiv要素に記述してください。
2011年7月7日木曜日
[jQuery Mobile] input type="search"にキーボードイベントをバインドするには
jQuery Mobileで検索用入力エリアを作るには、
<input type="search">
を使います。これだけで、スマートフォンのネイティブアプリのようなスタイルを勝手に生成してくれます。
しかしこれだけだと、キーボードで入力しエンターキーを押しても検索を開始してくれません。
エンターキー押下時の処理が設定されていないからです。
ここで、エンターキー押下時の処理を追加するために下記のようなコードを書きます。
使用しているjQuery Mobileのバージョンは 1.0b1です。
<!-- html -->
<input type="search" id="searchinput">
/*--jQuery Mobile--*/
$("searchinput").keypress(function(e){
if(e.keycode==13){
//エンターキー押下時の処理
}
}
はい。通常のjQueryではこれで動くのでしょうが、jQuery Mobileではこれだと動きません。
jquery.mobile-1.0b1.jsの3672行目あたりを見るとわかるのですが、type="search"の要素はページ生成時にjQuery Mobile側で動的にdiv要素で囲われています。
そして、原理はよくわかりません(知っている人教えてください)が、inputにイベントがバインドできなくなっているようです。
そのため、検索ボックスにイベントをバインドしたいときは、下記のように書きます。
$("div.ui-input-search").live("keypress", function(e){
if(e.keycode == 13){
//エンターキー押下時の処理
}
}
動的に作成されるdivはui-input-searchクラスを持っているので、それを利用して指定しています。また、動的に生成されているdivですので、バインドにはlive()を利用する必要があります。