2013年12月14日土曜日

アングラ世界へ行ってみよう!Anoncoinのインストールと設定


AnoncoinのWalletをインストールしてみます。

まずは、ダウンロードページからインストーラをダウンロードし、ウィザードに沿ってインストールします。
Windowsだとインストーラがあって簡単ですが、Mac版やLinux版もあります。
Mac版はまだBeta扱いみたいですが。

簡単なはずでしたが、インストール完了と共に、Norton先生が「Suspicious.Cloud.9」がどうのと警告を出しました。

大丈夫なんでしょうか?

これは「ウィルスやマルウェア発見!」ではなく、「ウィルスやマルウェア?なの?」程度の警告のようです。
サイトを見ると「危険度1: ほとんど影響なし」とありますが、Nortonのセキュリティ履歴を見ると、思いっきり「リスク高」となっています。


解決しましたって言われても。。。
しかもuninstall.exeのほうが脅威だったと?

ねぇ、本体のほうは?本体のほうは??

不安を抱えながら先に進みます。


初回起動時はblockchainのアップデートに5分程度かかるとありますが、自分の環境では、しばらくSyncが完了しませんでした。
恐らくPCスペックのせいだと思いますが、30分程度でやっと完了。

wallet.datファイルがそのままだと暗号化されていないので、暗号化します。
Settings > Encrypt Wallet からパスワード入れて再起動するだけです。

ちなみに再起動すると、またOut of sync状態になりますが、少し待てば復旧して、以下のような画面になります。


右下には現在の状態を示すアイコンがあり、左の鍵マークは暗号化されていることを表し、真ん中の電波マークはactive connectionsの数、右のチェックマークはSyncが終わっているということです。

で、右上にMiningというメニューがあったので触ってみましたが、CPU使用率100%になって何か計算している風ですが、ウンともスンとも言いません。

まぁそもそもソロでCPUで掘ろうというのが間違っているんでしょう。

ということで、次回はPoolを試してみます。


Read More...

2013年12月12日木曜日

次のBitcoinを探せ!!アングラ臭のするAnoncoin!


Bitcoinが盛り上がっていたので、この機会に類似の仮想通貨について調べてみます。


Litecoinぐらいになると、既に市場規模も大きくなってきていて面白くないので、どうせならこれから来るかも?みたいな通貨がいいかなぁということで、ターゲットはAnoncoinとします。

Anoncoinの公式サイトには、がっつりアノニマスのロゴや、ガイ・フォークスの仮面の画像が差し込まれており、まさにアングラという雰囲気です。




とあるサイトによると1ANCあたり7.74ドル(2013/12/11時点)とのことなので、Bitcoinの百分の一以下ですが、wikiによると2013年11月頃の市場規模は140,000ドルぐらいで、着実に拡大していっています。

思想的に面白いところは、Anoncoinは主にTORやI2Pで使われることを目的に作られた仮想通貨だというところです。

TORやI2Pはいわゆるアノニマイザで、TORはSOCKSプロキシ、I2PはHTTPプロキシの機能を持つプロトコルです。
TORは遠隔操作事件でも結構有名になったヤツですね。

ちなみに、SOCKSはレイヤー5のセッション層、HTTPはレイヤー7のアプリケーション層で動くプロトコルなので、違うレイヤーで動く同じような目的のプロトコルというところでしょう。

Anoncoinの仕様としては恐らく420万枚が上限で、上限まで徐々に速度を落としながら採掘されていく設定になっています。

完全匿名のネットワークで利用される、完全匿名の通貨。
Bitcoinなどと技術的にどう異なるのかはよく分かりませんが、なんだか他の類似通貨を駆逐して、アングラの世界を制覇しそうな気がしますね。

ということで、もう少し触ってみることにします。


Read More...

2013年12月9日月曜日

Bitcoinの採掘はもうオワコンか??


昔から気になっていたものの、日本語の情報も少なかったため特に触らずにいたBitcoinについて。

当時のレートは1BTCあたり10ドルも行かないぐらいで、まだその存在すら知らない人がほとんどでした。
それがいまや、1BTCあたり1,000ドルを超え、Bitcoinで決済できるものもかなり増えているそうです。
現在では流通量も80億ドル以上に跳ね上がっているそうで、かなりの加熱っぷりです。

しかし、通貨の価値が100倍になるって恐ろしい数字ですね。
まぁ、その後数日間で、また500ドル台まで急落したので、不安定なことこの上ないですが。

どうやら流通するBitcoinの半分ぐらいは中国人が持っているなんて話もあり、その中国が通貨として認めない的な声明を発表したことで、大幅な急落を見せたようです。
まぁまだ不安定なBitcoinですが、人民元よりはましと考えた中国人が多かったのでしょうね。


さて、現状どこまでいくのかまったく見えないBitcoinですが、いまさら採掘に参入するとかどうなのか調べてみました。

まず、自分一人で掘る場合。

孤独な採掘者も昔は普通に掘れたっぽいです。
倉庫に余って放置されている、ボロボロのPCを稼動させとくだけでBitcoinが手に入ったみたいです。

採掘というのは、特定の条件のハッシュ値を計算するproof of workと呼ばれる作業で、その見返りにBitcoinを得るというものです。
必要な計算は理論上10分程度かかるように常に難易度が調整され、採掘者側が進化すればするほど難易度も上がっていきます。

つまり、膨大な計算をいかに速く終わらせるかが、Bitcoin採掘の肝になる訳ですが、そうなると採掘競争はどんどん加速していきます。

元はCPUだけで計算していたのが、GPUを利用するようになりその速度は大幅に向上します。
また、それが一般的になっていくと、今度は専用チップを利用するようになり、もはや素人にはお勧め出来ない領域に突入しています。

余ったボロボロのPCでBitcoinを採掘するのは、地下数キロに埋蔵される資源をスコップで掘るようなものですね。

実際にやってみたわけではないのですが、たぶん仕組みから考えると孤独な採掘は無駄な電気代がかかるだけの不毛な作業になりそうです。


次に、一人で掘れないのであれば、集団採掘所で採掘に参加する場合。

有名どころはBitMinterBitcoin Plusなどで、参加者で協力して採掘し、それぞれの貢献度に応じてBitcoinが分配がされます。

具体的な仕組みは良く分からないけど、いわゆる分散コンピューティング的なことをしているんだと思います。

また、以下のようにブログに埋め込んで、閲覧者に掘ってもらったりも出来るみたいです。
このページで実行が要求されるJavaはこれです。
※邪魔くさいので消しました。

ちなみに、自分のPCでBitcoin Plusを稼動させてみましたが、1時間ぐらい稼動させて0.00000003BTCというなんだかよく分からない金額をゲットしました。
1BTCあたり700ドルで計算しても、月2円ぐらいですかね。
また、送金の最小単位が0.01BTCなので、初めて送金するまでに38年かかりますw

うーん。。

これってちゃんとGPUも使ってくれているんでしょうか?
PCスペックがヘボすぎるからなのか分かりませんが、この結果だけ見ると、人々を組織する側に回らなければ、どうしようもなさそうです。


こうなると採掘はあきらめて、普通の仮想通貨として購入するか、何かの対価として支払いを受けるしかありません。

広告を見るだけでBitcoinが貰えるBitVisitorや、指定されたYoutubeを見るだけのCoinTubeなど、良くある懸賞サイトのような仕組みでBitcoinを受け取れるサイトもあります。

なんだかSecondLifeのキャンプみたいになってきました。


ということで、素人のBitcoinとのかかわり方としては、もはやいわゆるユーザーとしてかかわるのが正解な気がしてきました。

あとは為替差益で儲けるぐらいだと思うので、キプロスの経済危機の時に跳ね上がった例もありますし、中国の経済崩壊へ向けて今のうちにBitcoin買っときましょうかね。



Read More...

2013年11月20日水曜日

WEBサービスを作ってみよう 第4回 Slim3の最新版へのアップグレード


この辺りからは、WEBサービス構築の概要というよりは、具体的な開発にかかわる話になってきます。
今回は、必要に迫られてSlim3のアップグレードを行ったので、その辺について残しておきます。


まず、WEBサービスを作るにあたって、JSONが大活躍します。

検証はしていませんが、Ajax的な作りでサーバ側はJSONを吐くだけにして、なるべくクライアント側で作業するようにしたほうがコストが安そうです。

やはり、特に無料枠に抑えたいという期待を持って開発するのであれば、いちいちServletやJSPがページをゴリゴリ生成して吐き出すような作りは、コスト的にマズイような気がします。


そこで、JSONの取り扱いですが、Slim3にはModelをJSONに簡単に変換してくれるメソッドがあります。
そのModelMeta.modelsToJson()で以下のエラーが出ました。

java.lang.NoClassDefFoundError: com/google/appengine/repackaged/org/json/JSONObject

Google先生に色々聞いてみたところ、ModelMeta.modelsToJsonでrepackagedなクラスを使ってるために起きているそうです。
repackagedなクラスというのは、SDKの変更で頻繁に変更されるので、あまり使うべきではないみたいですね。


で、解消方法がSlim3のバージョンを「1.0.15」から「1.0.16」にアップグレードすることでした。
Slim3はEclipseからインストールしているんですが、なんで初めっから最新にしてくれないんですかね?

理由は謎のままですが、最新版は以下からダウンロードします。

https://code.google.com/p/slim3/downloads/list

slim3-blank-1.0.16.zip


開発中プロジェクトでライブラリのアップグレードをするなんて、もろもろ動かなくなったりしそうで怖いのですが、やるしかありません。
公式などを見つつビクビクしながら以下の通り実行しました。

1.新しいバージョンのファイルをフォルダに投入

 「slim3-1.0.16.jar」を<Project>/war/WEB-INF/libに投入。
 「slim3-1.0.16-sources.jar」を<Project>/libsrcに投入。

2.プロジェクトのプロパティ >Javaのビルド・パス > ライブラリー からCLASSPATHの設定を変更

 「slim3-1.0.16.jar」と「slim3-1.0.16-sources.jar」を追加。
 「slim3-1.0.15.jar」を削除。

3.古いファイルをそれぞれのフォルダからも削除

4.注釈処理に関連した新しいバージョンのファイルをフォルダに投入

 「slim3-gen-1.0.16.jar」を<Project>/libに投入。

5.プロジェクトのプロパティ > Javaコンパイラー > 注釈処理 >ファクトリーパス からファクトリパスの設定を変更

 「slim3-gen-1.0.16.jar」を追加。
 「slim3-gen-1.0.15.jar」を削除。

6.古いファイルをフォルダから削除。


これで今のところは、ちゃんと動いています。


Read More...

2013年11月10日日曜日

WEBサービスを作ってみよう 第1回 利用言語とインフラ


なんかWEBサービスを作ってみようと思います。
たいした知識も無いのですが、作りながら必要な知識は身につけていけば良いということで、とりあえずやってみます。

あえてタイトルに第1回と付けたのは、いつもこの手のことは継続出来ないので、自分を追い込むための儀式のようなものです。


まずは、どこのインフラを使うかということで、世の中のWEBサービスのインフラに何が使われているのかから見ていきます。

この辺を見てみると、どうやらAmazonさん一人勝ちな雰囲気です。

AWS(Amazon Web Services)はいわゆるIaaSというやつで、仮想化されたインフラをクラウドで提供するサービスです。
正確にはAWSサービス群の中のAmazon EC2がIaaSなんですかね?

AWSには無料枠もあって必要に応じてスケールアップすることが出来ます。

サイトを作ったところで人っ子一人訪れないであろう事を考えると、あまりお金をかけたくないですし、うっかり盛り上がってしまった時に手軽にスケールアップ出来るのは魅力です。

しかし、仮想マシンが無料で使えるなんてすごい時代になったものです。

サイトを見ても無料枠がどこまでなのか非常に分かりにくいのですが、月750時間分のマイクロインスタンスと書いてあります。
良く分かりませんが、色んな用途のインスタンスが用意されている中で、恐らく一番しょぼいやつ750時間分の稼動というところでしょうか。


次にPaaSも見てみます。
PaaSはIaaSにOSとミドルウェアを乗っけたものと考えればいいでしょう。

代表格はGoogle App Engineです。

こいつもなかなか優れたやつで、Python、Java、Goまで使えてしかも無料枠があります。

一昔前は無料でJavaを使おうと思ったら、自宅サーバしかなかった気がするのですが、PaaSでJavaいけちゃうんですね。
データベースがRDBではないなど一癖ありそうな感じではありますが。

1日28時間の無料インスタンス時間とありますので、月840時間ってとこですね。
こちらは日単位なので、日が変わるとリセットされるということでしょうか。


しかし、最大手がこれだけのサービスを無料枠ありで提供していて、各社が出しているVPSのサービスとかどうやって顧客を獲得しているんでしょうか。

無料枠のインスタンス単位というのが直感的に分かりづらいので、それが敬遠されて月額固定のサービスに流れているだけなのか、それともすぐ無料枠上限に到達してしまうということなんでしょうか。

まぁ良く分かりませんが、無料枠突破してくれるほどアクセスがあるならむしろ嬉しい悲鳴なので、とりあえずGoogle App Engineを使ってみようと思います。

言語はGo(笑)と言いたいところですが、Javaにしておきます。


Read More...

2013年11月4日月曜日

WEBサービスを作ってみよう 第3回 Slim3の概要


Slim3をいくらか触ってみたので、その概念について。


まず、Slim3の基本的な構成はController、Model、Serviceとあり、それぞれControllerは画面遷移、Modelはデータオブジェクト、Serviceはロジックの役割を持ちます。

Slim3におけるControllerは、URLに関連付けられたServletで、基本的な流れはまずControllerを呼び出して処理し、そこからjspを出力するという感じです。
ModelはDatastoreに永続化するクラスで、データベースオブジェクトの設計部分になります。
ビジネスロジックが書かれたServiceから、DatastoreのModel読み出しや、保存を実行します。


開発にはEclipseを使うのが一般的で、Slim3 Plugin for Eclipseをインストールして利用します。
Antが使えるので、Antタスクを使ってControllerを作成すると、ControllerとJSPとTestCaseを同時に生成出来、ControllerはURLに関連付くので、servlet-mappingの設定など面倒な作業は不要です。
当然、ServiceやModelを作成する際も、TestCaseを生成してくれます。


Slim3はTDD(Test DrivenDevelopment)という開発手法を推奨していて、コード本体が完成していない状態でまずテストを書いてテストが失敗することを確認し(テストファースト)、次にそれが動くコード本体を書くという流れを繰り返します。

コード本体の書き方も、まずは定数を返すなどの仮実装を行い、徐々に変数を用いた本来のコードに仕上げていって洗練していくという流れです。

この設計手法にはとても共感出来ます。
いっきにコードを書き倒して、もはやどこでしくじったのか訳が分からなくなり、数時間ハマるなんてことを良く経験するので、それを回避出来ます。

TestCaseの生成の重要性が良く分かっていませんでしたが、なるほどこれは重要ですね。


ちなみに、はじめにAntを動かしてみたところ、gen-controllerのところで思いっきりハマりました。

Antを実行すると

 java.lang.SecurityException: SHA1 digest error for org/eclipse/swt/graphics/GC.class

と言われてControllerが生成出来ません。

色々調べてみたところ、

実行 > 外部ツールの構成 > 「JRE」タブ > ランライム JRE > 「ワークスペースと同じ JRE で実行」にチェック

で解決しました。

どうやらJREのバージョンが異なることで起きていたようで、これで無事Controllerが生成されました。


さて、フレームワークを使うと開発が効率化されるというのがなんとなく分かってきましたが、さらにSlim3はHOT reloadingをサポートしています。
何それ?という感じですが、所謂HOT deployの別称で、アプリケーションサーバを立ち上げたままでも変更したクラスがリロードされるので、いちいち再起動が不要という代物です。

いくつかハマるケースもあるみたいですが、Servletを書き換える度に再起動するのに比べると恐ろしく効率的です。


世の中の人が便利と言ってるモノは、やっぱり便利ですね。
今後は素直に先人の知恵には従おうと思います。


Read More...

WEBサービスを作ってみよう 第2回 フレームワーク


前回、インフラはGoogle App Engineを使って、言語はJavaと決めました。

今回は次のステップとして、利用するフレームワークについて考えます。

効率的な開発にはフレームワークは欠かせないらしいので、なるべく楽に開発していくためにもここは重要なポイントになります。

どんなものがあるかとGoogle先生に伺うと、Google App Engineで動きそうなものだけでも大量にhitします。
この辺にもGoogle App Engineで使えるフレームワークのリストが載ってますが、まぁ色々な用途の色々なフレームワークがあるようです。

Spring
Tapestry
Wicket
DWR
Tiles
SiteMesh
Grails
Struts 2
...

正直、それぞれどんな用途でどれが最適なのか調べているだけで日が暮れそうです。

また、効率的な開発はとても重要ですが、そもそもフレームワーク無しで作ったことが無い人間が、フレームワークありで作ったところでそのありがたみは分からないでしょう。

ここでめんどくさくなって開発が止まってしまうぐらいなら、フレームワークなんて考えずにゴリゴリ書き始めたほうが良いのではないか?

なんて事を考えていたのですが、検索結果の中に気になるフレームワークがありました。

Slim3

Slim3は、「Google App Engine/Java 用に最適化されたフルスタックのMVC フレームワーク」であり、また「単にDatastoreのフレームワークとしても使用出来る」とのことで、この手のものでは珍しく日本発のフレームワークだそうです。

Slim3 Datastoreに関しては、Bigtableに特化したLow level APIの薄いラッパーで、Google App EngineのデータストアをJavaから利用する場合の一般的な選択肢であるJDO(Java Data Objects)よりも高速に動作するそうです。

開発の効率化に加えて、そもそもの動作も高速化するということであれば、これは使ってみるしかないでしょう。

ということで、フレームワークはSlim3を使ってみます。

Read More...