AndroidでIPv4の値を取得する。

Android端末のIPを取得しようとしていたところ、IPv6の値を取得してしまったりしたので個人的なメモ。

とりあえず、ぐぐって取得した手順は以下の通り。

参考:androidIPアドレスを取得する

http://kamosan-android.blog.so-net.ne.jp/2011-05-03-1

これだと、IPv6の値を取得してしまう可能性があるので
14行目のループバックアドレス判定

if( ! ip.isLoopbackAddress() ) {

に取得したIPがIPv4フォーマットかどうかの判定を加える。
IPv4かどうかはInetAddressUtils内のisIPv4Addressで判定できる。
追加した条件は以下の通り

if (!ip.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ip.getHostAddress())) {

参考: How do I get IP_ADDRESS in IPV4 format
http://stackoverflow.com/questions/11015912/how-do-i-get-ip-address-in-ipv4-format

遊戯王OCGにリトライしてみた。

先輩の勧めで、1,2ヶ月程前から遊戯王OCGに手を出しています。
最初に買ったストラクチャーデッキはこれまた先輩の勧めで「ロストサンクチュアリ」です。
基本的にこのデッキの必須カードを3枚ずつ積んで、魔法、トラップ、エクストラデッキを補強したようなデッキになりました。
遊戯王自体は、中学校までがっつりハマっていたのですがここにきて熱が再来しました。\(^o^)/

東京に行ったり、おもちゃ屋の近くに行ったりコンビニに行く度にカードを買ってしまっています。
今月はちょっと自重しなければ。

ということで、現在の自分のデッキをついでに公開してみる。

モンスター

  1. オネスト
  2. シャインエンジェル(3枚)
  3. コーリング・ノヴァ(3枚)
  4. 創造の代行者ヴィーナス
  5. 神聖なる球体(2枚)
  6. 天空の使者ゼラディアス(2枚)
  7. ヘカテリス(2枚)
  8. 神秘の代行者アース(3枚)
  9. 光神テテュス(2枚)
  10. 大天使クリスティア(2枚)
  11. マスター・ヒュペリオン(2枚)
  12. 裁きの代行者 サターン
  13. マシュマロン

魔法・罠

  1. 光の護封剣
  2. 異次元からの埋葬
  3. 死者蘇生
  4. 天空の宝札(3枚)
  5. 神の居城-ヴァルハラ(3枚)
  6. 天空の聖域(3枚)
  7. サイクロン(2枚)
  8. 血の代償(2枚)
  9. リビングデッドの呼び声
  10. 神罰(2枚)
  11. 奇跡の光臨


(デッキ計:45枚)

エクストラデッキ

  1. ヴァイロン・ディシグマ
  2. ブラックフェザー・ドラゴン
  3. アームズ・エイド
  4. メンタルスフィア・デーモン
  5. マジカル・アンドロイド

(他にもエクストラデッキには入ってますが主に使うのがこれくらいのはず。。。)
サイドデッキは調整中。

戦略

  1. 作戦A:アームズ・エイドを召喚。相手モンスターに装備、天空の聖域を張ってシャインエンジェル、コーリング・ノヴァで自爆特攻をしかける。
  2. 作戦B:シャインエンジェル、コーリング・ノヴァ計4体を墓地へ送り最後にマシュマロンを召喚、クリスティアを効果で特殊召喚。攻守を固める。こっちは血の代償でガンガン追加召喚。
  3. 作戦C:マスターヒュペリオンでひたすら破壊&叩く。ヘカテリスやゼラディアスは積極的に墓地へ送って肥やす。
  4. 作戦D:アームズ・エイドを召喚、自らのモンスターに装備させライフをガンガン削る。もしくは、メンタルスフィア・デーモンでライフを回復していく。トドメにサターン。出来れば、死者蘇生やリビングデッドを活用してサターンの効果を2,3回発動できるといいのかも。
  5. 作戦E:テテュス&天空の宝札でガンガンドロー。召喚は血の代償で通常召喚扱いに。
  6. 作戦F:シャインエンジェル、コーリングノヴァを血の代償でガンガン召喚してヴァイロン・ディシグマを召喚。


何気に血の代償と天空の宝札、クリスティアは相性が良いですネ。
リクルータ組(シャインエンジェル、コーリング・ノヴァ)が複数枚手札に来ても、500のコストで次々攻めこんでいけるならいいんじゃないでしょうか。3枚以上あればヴァイロン・ディシグマも1ターンで召喚できますし。
神秘の代行者アースも通常召喚扱いなので効果を発動できますし、ヴィーナスやヒュペリオンを連れてきて追加で召喚できます。
ヴィーナスが居ればアームズ・エイドがシンクロ召喚できるので。。。

リクルータ組は大抵開始数ターン以内に手札に来るので、壁用のマシュマロンを引っ張ってこれます。

特殊召喚禁止で先手を打たれるとまずいので事故ったときはガンガン天空の宝札で手札を回したいところです。


除外にも墓地の効果が発動できず驚くほど弱いので、先にヘカテリスやシャインエンジェル等をガンガン先に墓地へ送っちゃいたいですね。
その時は、砂塵の大竜巻を追加して除外魔法などを阻止したいところです。
血の代償以外は罠を重要視しないので、サイドに王宮のお触れを追加していても良いのかも。
必須カード複数積みが多いので、ミラーフォースやブラックホール、激流葬、ライトニング・ボルテックスなどのモンスター除去カードを入れるスペースが無いのが残念。激流葬やブラックホールはヴァルハラと相性が良いのですが。。。
その分マスターヒュペリオンさんに頑張ってもらえばいいか。

必殺コンボを発生させるにはシンクロが必須なので、アースをうまく引っ張ってくる手段を考えたいところ。


個人的に、結構色々動ける分その場その場の最適な戦略を考えるのが結構難しい。
プレイングミスも何度もやらかしとります。


そして、オネストも血の代償もヴァルハラも活用するデッキなので、ここにアテナを追加したいのですがいかんせん売ってないですなー。
東京に行って余裕があったら買ってしまいたい所です。
まぁ、何のカードの代わりに追加するかも悩みどころですが。。。(アースが3枚いらないかなぁ。。?)

本当は神罰でなくて、魔宮の賄賂などを入れたほうがいいのかも知れませんが予算ガー!\(^o^)/
エクストラデッキにもスターダスト・ドラゴンや、氷結界の龍トリシューラ、AOJカタストル等汎用性の高いシンクロモンスター置いとくべきなのですが、これも予算が。っていうか、パック買わなければきっと買えてるはz(ry

パック買うのはやめて単体買いにしましょうかね。
色々引けてパックは面白いんですが。

地元のカレー屋へ行ってきました。


友人のshigPくんとaki_lacくんと地元のカレー屋「ラグパティ」へ行ってきました。
当日の会津若松は、GWということもあってかなかなかの交通量。


このラグパティ、他のインド料理店とちが点といえば、野菜ナンやチーズナン、バターナンなど様々な種類のナンが豊富に存在したり、
飲み放題、食べ放題のコースメニューもあるなどメニューがかなり豊富でした。


この日、自分は上記の写真のBランチの辛口を注文。

ナンかご飯は一回だけおかわり出来ます。


結構なボリュームでナンは比較的柔らかめでもちもちしてました。
カレーは辛口が自分には丁度良く、少し酸味を感じた気がします。
ご飯はちょっとべっちゃりした感じで、このお店ではナンだけでもいいかなー。
とも思いますがおかわりするならご飯があってもいいのかも。


美味しかったので是非もう一度行ってみようと思います。



そんなラグパティはここにあります。



大きな地図で見る


PS.
コメント機能を開放していたつもりになっていましたが、間違えて閉じられていたようなので開放しなおしましたOTL

Qt(キュート)に手を出してみた。


C/C++GUIを書くとなると、結構な手間でして、環境に合わせて必要なことをを覚える必要があって
結構敬遠していたところがありました。Javaとかだと、その点楽で良いのですが。。。


が、Qtというフレームワークを用いることで、マルチプラットフォーム
アプリケーションが開発できるというので、とりあえずつついてみることに。
あと、C++のみならずPHPなどのスクリプト言語にもGUIを提供できるのだとか。
素晴らしい。

Eclipse上に環境を整えよう。

せっかくなのでEclipse上で使えるようにインストールしました。
使用したEclipseディストリビューションはMergeDoc ProjectのUltimateを選択。
http://mergedoc.sourceforge.jp/

まぁ、例の如く参考にさせて頂いたページがありまして、

今回はこちらのサイトを参考にさせていただきました。
手順通りに行えばインストールは完了するはずなのですが、
どうも、MinGW(Windowsへ移植したGCC)がインストールされていないようだったので、
追加でインストール

また、Eclipseよりビルドしてみると、「mingw32-makeが見つからないー。実行できないー。」と、
エラーを起こすので、調べてみたところ、MinGWのパスが指定されてないようでした。
なので、
スタート→コンピュータ→システムのプロパティ→システムの詳細設定→環境変数→****のユーザ環境変数
に、PATHを追加。(すでにある場合は、その内容に「追加」(not上書き))
値はデフォルトにMinGWをインストールしたのならば「C:\MinGW\bin;」でいいはずです。
Eclipseを起動している場合は、再起動を行い再度ビルド。
無事、動作した模様ー。

ついでにOpenGLをつついてみる


ついでなので、OpenGLもちょこっとつついてみよう。ということで、

こちらを参考に実行。
が、何故かエラーを吐くので、調べてみたところ

//=======================================================================
// コンストラクター
//=======================================================================
simple_line::simple_line(QWidget *parent):QGLWidget(parent)
{
}

の部分がおかしいようで、

//=======================================================================
// コンストラクター
//=======================================================================
simple_line::simple_line(QWidget *parent){
}

に変更してみると、無事動きました。
大事な部分を継承してると思うので単に消しただけだと危ないと思うのですが、とりあえず動く。程度に。
実行結果が、トップの画像になります。
原因はもうちょっと勉強したら理解できる。。。。かと。

Java OpenGLを試してみた。

Java OpenGLを試してみた。

大学でOpenGLの講義をとっているので、Javaでも使えたら便利だよなぁ。
なんて思ったのでちょっと手を伸ばしてみたり。

参考に下のは以下のサイト様。

一応ビルボードな3Dゲーム風画面をつくってみたり。
合わせてJMF(JavaMediaFramework)の使い方も覚えたいところ。

もうちょっといじくったらまとめてみようと思いますです。

ソースコードを整理してみた

作っているモノのソースコードがあまりにも汚いので、すこしでも綺麗にしてみるために
ということで、研究室に置いてあった「Java言語で学ぶリファクタリング入門」
という本を読んでみることにしました。

今調べたのですが結構人気の本なのですね。

とりあえず、途中まで流し読みして個人的なメモとして必要な事を列挙。

  • シンボリック定数でマジックナンバーの置き換え
    • enum型を用いてシンボリック定数を表現
  • フラグの削除
    • できるだけ不必要なフラグはbreak,return で用いないようにする、使う場合はわかり易い名前で
  • アサーションの導入
  • 多すぎるnullチェックは、nullオブジェクトに置き換える
  • メソッドの抽出/インライン化
  • コメントで解説をいれるならそこにメソッドの抽出を行う
  • エラーコードは例外処理に置き換える

やー、結構当たり前のことなのですが、面倒臭がってやってなかった部分が多いですね。。。
本自体は(途中までですが)読んでみた感じ、サンプルも多くて読みやすかったです。
もうちょっと熟読して基本的な命名規則とか、Exceptionの有効的な使い方をおさらいしたいところ。。。