2013年12月1日日曜日

東芝のNB100をサーバ化

NB100にCentOS 6.4をインストールしました。

事前に準備するもの
USBメモリ 1GB
CentOS-6.4-i386-minimal.iso(http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.4/isos/)
Fedora LiveUSB Creator(https://fedorahosted.org/liveusb-creator/)
NB100のパーティションを20GB分切っておきました。

手順
Fedora LiveUSB Creatorを使い、CentOS-6.4-i386-minimal.isoのLiveUSBを作ります。
作成し終えたら、USBメモリの中にCentOS-6.4-i386-minimal.isoも入れておきます。

NB100にUSBメモリをさして起動します。
このとき、インストール元をLiveCDとかにすると失敗します。
がんがんいって問題ないです。
きっとインストールが終わっています。

設定
とりあえず、Ethernetの設定だけします。
ここを参考にして作りました。
http://blog.quall.net/linuxserver/182/

2013年11月23日土曜日

Mac book AirでX Window Systemのプログラミングをする為に

Mac book AirでX11がないと言われた

http://xquartz.macosforge.org/landing/

Mac book Airを購入していたから設定のメモ

・capsをcommandへ割り当てる

・homebrew入れる
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

・Alfredを入れた
option + spaceで起動

・zshにかえる
zshのパスを確認
cat /etc/shells
Terminalで使うものをzshに変更
chsh -s /bin/zsh
bash時代の設定とかを移す
ファイルを作ってここへ書く
touch ~/.zshrc
source ~/.zshrc

2013年11月6日水曜日

Win7からMBAに乗り換えて

この時期にMacbook Airを購入しました。

・実際に使用した際の戸惑い

  1. スクロールがWindowsと逆
  2. commandとcontrolについて
  3. 半角/全角キーがない
  4. backspaceがdeleteで、後ろの文字を消去するキーはない

1については慣れることで解消しましたが、設定でWindowsと同じにすることが可能です。

2については、GUIで使用していてcommandがCtrlと同じなのかなと思いきや、TerminalではcontrolとCtrlが同じだったりしたので、慣れが必要です。

3については、JISキーボードの場合、Spaceの横にある英数、かなを使用します。
USの場合は、自分でSpaceの左右に割り当てることにより実現しているそうです。

4についてはそのまんまです。特に不便はないです。

・Boot Campを使用した際の戸惑い
Windows 8 64bitを入れました。

USBフラッシュメモリと外付けDVDドライブとインターネットに接続できる環境が必要でした。

初めにBoot Campのパーティションを切って再起動した際には、なぜかインストールをせずにOS Xが再起動されただけでした。
2回目は、もう一度パーティションを切り直したところ、無事インストールができました。
しかし、Windowsの初期設定でキー入力を受け付けず電源を強引に落として、
「command」「 option」「 p」「 r」を同時に押しながら電源を入れました。

多分これで、設定を乗り切った。

そして、使用感の戸惑いでは、半角/全角キーがないので困った。
その他、キーの割り当てで悩みました。
他には、電源の持ちが悪いことや、紙芝居ゲーをしていると発熱がすごい。
70℃くらいまで上昇していました。


・購入してよかったかどうか

すごく使いやすいと感じた。
これから購入するのはきっとApple製品になると思う。
しかし、どうしてもWindowsでないとできないことがある。それは、Wordなどの資料や外部モニタでMacが使えない場合があるからだ。
サブで一応もっておくことも必要なのかな。。。。



スマホメーカー、曲がるディスプレーを競って開発を読んで


記事


以上を読んで感じた事。

これから、プラスチックの製造分野が伸びるかどうかはわからないが、お金を投入する企業がいっぱいいるので、材料系の企業に投資しておけばいいと思うよ。

ウェアラブルに力入れてきてんなって記事でしたね。

2013年10月16日水曜日

Androidで艦これをやる方法の考察

経緯
Androidで艦これをやるには、Flashや音声データ、その他Effectは無駄だと思えた。
というか動作が重い
なので、まともに艦これをやるために、専用ブラウザを作成することを考える。


艦これをしている時の通信を眺めていたところ、特に暗号化はされていなかった。
よって、APIを使用するだけなら、技術的なハードルは低いことがわかった。

次に、APIを使用するために、艦これのサーバとのセッションを作成する方法だが、これも簡単っぽい。(省略)

最後に、DMMへログインしてセッションを作成する。
必要なのは、token,mail address,passwordらへんだと思う。
tokenはログインページに直接に記述されていた。
あと、Cookieにsession idっぽいのがないとダメだとわかった。
どこから、Cookieをもってくるのかわかんね。詰んだ。

とりあえず、正しいログインができたとして、戻ってくるコードが302 Foundだった。
302 Foundから2回リダイレクトして、ようやくログインが成功する。

とりあえず、Cookieをどうにかしないといけないので、解決さくを考えた。

  1. ひたすらJavaScriptを読んで解析
  2. WebViewを使用する

1はどうせ、CookieをつくるのにJavaScript使ってんでしょ?とか言って、人力スクレイピング。
2はAndroidを使うんだから、しんどいところはWebViewを使ってログインしようぜ!ついでにCookieも取り出しちゃおうぜ!

とりあえず、試したところCookieは取れったっぽいから、WebViewは閉じて、Cookie使って、艦これtoken作ってAPI叩くところまで、妄想







2013年10月9日水曜日

JavaのRMIをつくるには


実装すべき内容
・サーバに名前をつけたインスタンスを保持させる
・クライアントはサーバにあるインスタンスを操作する
・クライアントでは、interfaceを持っているだけで、実装はサーバで行う。

サーバに名前をつけたインスタンスを保持させる
これは簡単で、HashMapを使用する。
KeyをStringにして名前を入れてしまえばよいからだ。


クライアントはサーバにあるインスタンスを操作する
これがめんどうである。
簡潔に言えば、プロキシインスタンスを作成しメソッドを実行したら、そのメソッド名と引数をサーバへ送り、サーバで実行し結果をクライアントへ返すという工程だ。

そして、この前段階にサーバのプロトコルを決めておこう。
RMIでは、サーバのアドレスとインスタンスの名前を送ることで、プロキシインスタンスを作成しているので、これに習ってみる。
ObjectOutputStreamでStringで名前を送る。
サーバでは、Stringを受信した時に、クライアントでプロキシインスタンスを作成するためのinterfaceを送信する必要がある。
なので、名前をつけて登録したインスタンスから共通のinterfaceを取り出すことにした。
reflectionを使用することで、インスタンスへ実装されているinterfaceの配列を取り出すことができる。
取り出すために、共通のinterfaceにはシンボルとして、Comfaceというinterfaceを作成し継承させることにした。
interfaceの配列からComfaceを継承しているものをクライアントへ送り、それでプロキシインスタンスを作成する。

次に、私はサーバにあるインスタンス名、実行したメソッド名、メソッドの引数の型、引数、を保持するクラスを作成した。
この際、シリアライズできるようにSerializableを実装する。
サーバでは、このオブジェクトの時にはメソッドの実行をするようにする。

プロキシインスタンスでは、InvocationHandlerを実装したクラスを渡すことで、メソッドの実行に細工ができる。
メソッドの実行時には、メソッドの名前や渡された引数がわかるので、それをサーバに送る事でRMIの真似事ができるのだ。
void型などのメソッドには気を付けること。