仮想環境でWindows7を使う
プライベートではメインマシンにMacBook Airを使っています。
基本的にはこれ1台で事足りる生活をしておりますが、たまにMicrosoft Excelを扱うとなかなか使い慣れそうもなくて困っておりました。
メニュー周りとか見慣れないので探すのに手間取るんですよね。
で、ならば仮想環境でWindows7入れてExcel入れたらMacでWindows出来るし、マシンを増やさなくてもいいんじゃないかと思ったのでした。
とりあえずMacBook AirにVMをいれてみる
というわけで、とりあえずマシンにVMを入れるところから始めてみました。
VMと言えば色々とありますが、今回はOracleのVM、VirtualBoxをインストールしてみました。
何しろ無料ですし。
インストール自体はぽちぽちボタンを押してインストールするだけなので簡単でした。
次に、Windows7をインストールする、為の準備をする
勿体ぶりましたが、インストールするにも前もって準備がいりますからね。
ので、とりあえず持っていたWindows7のインストーラーディスクをisoファイルとして抽出。
Windows7をVMにインストールする。
その後、VMを起動してisoを起動ディスクとして設定し、Windows7を起動。
あとはちょちょいとExcelをインストールして完了です。
最後に
裏話的なことを。
上記のようにVMにWindows7を入れたわけですが、
何も考えずにMacに乗せたら、空き容量全部食い尽くしてくれました。
なんだよVM用のファイル、合計30GBって。
仕方なしにMac上のファイルを削除し、新たにUSBメモリ(64GB)を買ったのですが、
FAT32フォーマットがファイルサイズ上限5GBとか知らなかったので
「あれ、インストール毎回失敗するわー、なんでやー???」
となっておりました。
無知コワイ。
BlackBerry Q5を中古で買いました。
前回、友人に乗せられてNokia Lumia920を買ったわけですが、
流石に公式が言う程度には重い訳です、物理的に。
で、軽い端末を探して見つけたのがBlackBerry Q5でした。
ちょうど中古が安かったのでそれを購入。
見た目
見た目はiPhone5sより小さめで、物理キーボードがあるために画面サイズは小さいですが大変持ちやすい。
しかもめちゃくちゃ軽い。
びっくりするほど軽い。
キーボード
ぱっと見、キーボード小さくて打ちづらいかも?と思ったのですが、
両手でぽちぽち打ってる分には全然不満はないです。
プチプチとボタンを押す感じが個人的にはとても好きです。
動き
で、動きもさくさくですし、何よりAndroidのapkが使えるのがいいですね。 しかも、apkをBOXとかDropbox経由、またはプリインストールのAmazon Appを使えばインストール可能というのもありがたい。
まぁ、敢えて言うならばGoogle Play のapkをインストールして頂きたいところ。
上記のAmazon Appだとインストール出来るapkが限られているので、見つからなかったりするんですよね。
あと、apkインストール出来ないやつとか、インストールしたけど起動出来ないとかもあるので、全部が全部apk使えるわけではないですが。
でもBlackBerryのアプリストアはあんまりアプリの数がないので、それを考えるとだいぶ使えるアプリが増えます。
ネットワーク
このQ5、実はLTE対応と書いてあるのですが、日本で扱ってる帯域と被ってないらしいので
結果としては3Gを使っている様な形です。
でも、ちょっとメール見て、Webページ見てって感じで使う分には不足ないです。
というわけで、新たなおもちゃが増えました。
JavaのString#substringによるメモリリーク。
今の案件では、単体テストフェーズでJTESTを実施するようになっているのですが、
そこでたまに出てくる
CODSTA.EPC.UST
文字列の構文解析には、'indexOf()' や 'substring()' ではなく 'StringTokenizer' を使用する
という文言。
で、この辺なんでだろうと思ったら、どうもメモリリークを引き起こす可能性があるらしく。
String#substringによるメモリリークの可能性 - Qiita
String#substringは新しい文字列をnew Stringで生成するにも関わらず切り出し前の文字列を内部(のchar配列)で保持してしまっています。
本内容は通常は意識する必要はありませんが、巨大な文字列をsubstring操作する際はメモリリーク等につながる場合がありますので注意が必要です。 (String#splitにも同様の問題があります)
ということだったので、この記事を参考に修正をしました。
実際に直した際はこの書き方に修正。
String s3 = new String(s1.substring(5));
こういうのって「そうなんだー」とは思うけどなかなか「で、なんで?」を調べなかったりするのでメモメモ。
Javaでの日本語名ファイルのダウンロード。
先日、JavaでDBから取得したデータをCSVファイルにしてダウンロードしたいという要件があったわけですが。
ファイル名が日本語指定で、なにも考えずにIEでダウンロードしたらファイル名が文字化けしておろろ、という感じに。
で、色々調べてみました。
ダウンロード時のヘッダとして以下を設定すると上手くいきました。
response.setHeader("Content-Disposition", "attachment; filename=" + new String("ファイル名.csv".getBytes("MS932"), "ISO-8859-1"));
他にも調べると色々方法があるみたいなので、確認して一番使いやすい方法を選ぶのがいいかも。
Oracleのstart with/connect byで、子から親へ逆順のツリーを取得する。
select ID,OyaID,Level
from IDTable
start with OyaID is null
connect by prior ID = OyaID;
select ID,OyaID,Level
from IDTable
start with ID = 7
connect by prior OyaID = ID;
Androidアプリを作ってみる。その2
と言うわけで、前回から引き続きAndroidアプリを作ってみようと思ったり。
次は、開発環境を設定するところからやろうと、とりあえずADTを以下のサイトからダウンロード。
http://developer.android.com/sdk/
これはEclipse + ADT pluginで構成されてるSDKなので、自分で環境入れようと思えば入れられるけど、今回はめんどくさいのでこれをそのまま利用。
楽できるところは楽しないと、ね?(言い訳
これは英語版なので必要であればPleiadesをいれて日本語化をして使いやすいように。
私はめんどくさいので日本語化しました。(ぇ
日本語化の手順は、
- Pleiadesサイトからプラグインをダウンロード。
- ダウンロードしたファイルを解凍してそれぞれのファイル(pluginとか)の"中身"をADTのEclipseのファイル(pluginとか)を"開いて"コピペまたはD&D。*1
- Pleiadesのreadmeファイルを参考にeclipce.iniファイルに追記。
私の環境だとこんな感じなので、このiniファイルの末尾にPleiadesのパスを追記。
/Applications/adt-bundle-mac-x86_64/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini-javaagent:/Applications/adt-bundle-mac-x86_64/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
- 再起動すればあら簡単、日本語化されちゃう。
という感じ。
後は、ADTを最新化して、これでAndroidの開発環境は完成という感じで。
起動したついでに今回開発するためのプロジェクトを作成して完了。
次は、Twitterクライアントを作る上で必要になるTwitter4Jを用意。
以下のサイトからダウンロード。
http://twitter4j.org/ja/index.html
ファイルを展開したら、/lib/twitter4j-core-4.0.1.jar を、ADTで作成したプロジェクトの/libs にコピー。
これでライブラリの設置までは完了なので、次からは実際に利用するためのUtilを作成してく感じで。
おつかれさまでございました。
Androidアプリを作ってみる。
Android再入門 - Twitterクライアントを作ってみよう - Twitter APIを使うアプリを登録 - Qiita
上記記事を参考に、AndroidアプリでTwitterクライアントでも作ってみようかと思ったり。
とりあえず、まずはTwitterのデベロッパー登録を。
https://dev.twitter.com/
上記サイトで必要なアプリ情報を登録したり。
しようとしたら、アプリ名がありふれてて「既にあるけど」って言われてしまった。
こんな感じで入力項目に入力して、規約に同意したら作成ボタンで作成完了。
CallbackURLは設定しとかないとデスクトップアプリと認識されるらしいので、何かしら入力しておいた方がいいらしいです。
で、この状態だとアプリのパーミッションが読み取り専用になってるっぽいので、利用の用途に合わせてパーミッションを変更。
今のところDM使う予定はないので「Read and Write」に設定。
あと、APIが1.1になる前の記事なので、以下の補足記事も。
Twitter APIと開発者規約変更のインパクトまとめ:結局、Twitter API 1.1で何が変わる? 5つのポイント - @IT
今日は一旦この辺で。
次からは開発に向けて準備していきましょうかね。