Bittrexに公開されている草コイン概観①

bittrexには大量のあやしーいコインが上場されています。

正直どれを買ったらいいかわからない!ということでざっくり調査してみました。

 

評価基準は以下の通り。

①ホームページのクオリティ

githubのcommit、star、fork

 

①のホームページのクオリティについては、英語が苦手な私でも、

・なんとなく何がしたいかわかる!

・新しそう!

・怪しくない!

・値段上がりそう!

と思わせることができること。

②のgithubについては、

・開発頻度

githubでの注目度

を評価します。

github上でのcommit数は開発の頻度、starやforkは技術力があるかどうかの大きな尺度になりますのでその数値を見ます。

大事なお金、ちゃんと開発されていて、オープンソース・ソフトウェアとして

しっかりメンテされているものを選びたい。

 

ということで調べて見ました。たくさんあるのですごく雑に調べます。

せっかく草コインを買うなら一攫千金を狙えるまだ安い通貨から見ていきたい!!

ということで、流通量の少ないコインから順に見ていきます。

 

XBB - Boolberry

銀行置き換える系コイン、興味なし

 

AUR - AuroraCoin
定期的にBTCがもらえる系コイン

なぜ流行らないのかあやしすぎる

 

SWIFT - BitSwift
何をしたいのかよくわからない

 

XMG - MAGI
なんか普通のコインっぽいけどpoloでは取り扱い終了

 

BYC - Bytecent
よくわからん

 

SNRG - Synergy
ホームページ死んでる論外

 

ERC - EuropeCoin
何したいのかパット見でわからない

 

EBST - eBoost
eSports向けのコイン、それ自体はいいが
具体的なビジョンが見えない、ニュースがない、コードも非公開?

 

EFL - ELECTRONICGULDEN
ホームページ英語じゃない論外

 

HKG - Hacker Gold
Webページ落ちてる論外

 

AEON - Aeon
moneroを軽量化したよ!と言ってるけど、
去年のcommit数少なすぎ

 

BTA - Bata
広告費をブラウザ上でtoken払いできるようなシステムを目指す
ビジョンはよさ気ではあるがgithubのcommit数もstarもforkも少なく技術力を感じない

 

RBY - RubyCoin
とりあえずホームページ見ると汎用的で高機能なコインっぽい
githubのcommit数が少なくやる気を感じない

 

SEQ - Sequence
token発行の基盤サービスを目指している?
githubのcommitが数ヶ月止まってる

 

という感じでした。

何がしたいのかよくわからない&開発があまり活発ではないことが流通量の少ないコインの特徴かも・・・という気がしてきますね・・・。先が思いやられます。

 

あくまで私見ですが、あまり魅力を感じる銘柄は見つかりませんでした。

 

次回も下からみて行こうと思います。

 

Ubuntu17.04のログイン画面で突如keyboardの殆どのキーが効かなくなった

ある日ログインしようと思ったらkeyboardが入力でない。数字の1とかbackspaceとかは入るのだけど、他のキーが反応してくれない。

ログイン画面の右上のメニューにあるソフトウェアkeyboardに切り替えてみたいけど、同じように数字の1くらいしか入力できない。

という現象に出くわしたのでメモ。

recovery modeで起動してdpkg-reconfigure keyboard-configurationを実行すれば治りました。

以下参考にした記事のまとめ。

  1. ブートローダーからrecovery modeで起動(文字化けする場合は下記を試す)

    Ubuntu 16.04: recovery modeの文字化けを修正する - Narrow Escape

  2. キーボードの再設定

    キーボードレイアウト変更(ubuntu) - Qiita

Socket.io v2.0でnode.jsからsocket.io-clientを使う際にcookieを設定するには

node.jsでsocket.ioのテストを書く際にあれどうやってcookieつけるんだっけとちょっと困ったのでメモ。(ブラウザでsocket.ioを使う場合は、勝手にcookieをつけてくるので気にする必要はないです)

 

socket.io v2.0ではextraHeadersというオプションでcookieが付けられます

公式のドキュメントのextraHeadersというオプションの記述。

github.com

With extraHeaders

This only works if polling transport is enabled (which is the default). Custom headers will not be appended when using websocket as the transport. This happens because the WebSocket handshake does not honor custom headers. (For background see the WebSocket protocol RFC)

このオプションを使ってcookieを設定すれば、普通に認証できそう・・・・と思ったのですが、

クライアントがpollingでsocket.ioサーバに接続した場合にしか使えないオプションらしい。

 

websocketオンリーでsocket.ioを使う際にcookie認証できないの?

公式のドキュメント見ている限りでは方法がなさそう。

そもそもsocket.io的には、まずは全員pollingで接続してくれ、そのあとにwebsocketに移行してくれという方針らしい。

うーーーーーんなんだか微妙ですね・・・・・。いきなりwebsocket接続するようなクライアントは認証ができなくなってしまいそう。

 

socket.ioがonopenになった後に認証用のメッセージングを実行したほうがいいのかもしれませんね。

Web系に転職したい人の勉強記録

Web系に転職したいなーと最近たまに思うようになったので、それ向けて勉強を始めた。

まあ勉強なんて転職してからでもいいじゃない説はあるけど、損はないよね。多分。

なんとなくイメージとして、

  • 一通りの分野に常識的な知見があること
  • 時間かければそこそこのものが作れる

ってことが結構重要なのではないかという気がしているので、まずは前者の一通りの知見を身につけるべくお勉強をしていく。

とりあえずデータベース設計、API設計、インフラ設計、アルゴリズムかなぁと思ったので一冊ずつ本を選んでみた。

 

1.データベース実践入門

 業務でsqlのクエリを書いたりはするものの、正直なんとなくで書いていたのでデータベースが何なのかすらよくわかってなかったりするので下記を読了。

データベースは集合演算であるということ、効率的に集合演算を行うためには、DB設計が重要であること。が書かれている。とりあえずリレーショナルモデルの大事さはわかった。

わかったのだけど、正規化が必要って事実だけ頭に止めておけば、実務的にはフレームワークのmodels設計とかクエリの書き方とかのほうが重要度が高い気がする。別途勉強しなきゃなぁと思った。

2.Web API: The Good Parts

 APIの設計に関する本。読んでみると内容的に知ってることが多かったので流し読み。

Web API: The Good Parts

Web API: The Good Parts

 

 結局これもWebフレームワークの使い方のほうが重要度高いのではという気がした。

3.マイクロサービスアーキテクチャ

  最近良く聞くマイクロサービス。今の業務でもAPIサーバが大きくなってきて、サーバを分離したりしているのだけど、いまいち分離の方針がピンと来なかったりでもやもやしたので読んでみた。

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

 

 のだけど、ちょっと内容が抽象的で何を言っているのかよくわからなかった。

サーバの機能をどこで切り分けるか、サーバ間連携は同期か非同期か、等、書かれていることが重要なのはなんとなくわかるのだけど、さっぱり頭に入ってこない。

4.珠玉のプログラミング

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造

 

 はるか昔、大学生の頃にアルゴリズムとデータ構造の授業を取った気はするのだけど、実際にコーディングってほとんどしたことないんですよね。いやしてたのかもしれないけど頭から抜けている。業務でスーパーアルゴリズムを活用しなきゃいけないシーンってあんまりないと思ってるんですけど、アルゴリズムに強いプログラマってかっこいいよね!って気はするので一応勉強。

 

 

1,2読了、3放置、4現在進行系。

やっぱり昨今のデータベース設計にしろAPI設計にしろrailsの影響をめちゃくちゃ受けている気がするので、次はrubyrailsの勉強を本格的にしたほうがいいのかなぁという気分。

ちょろちょろチュートリアル読んで動かしていたりするのだけどruby全くよくわからんです。

ryzen 7 1700でubuntu17.04マシンを組んでみた話

ryzen 7は3GHz 8コア16スレッドで値段4万以下やねんで!!!!!という心の声に負けてPCを組んで環境構築した。税込み9万しなかった(確か)。

ハードウェア構成

  • CPU: Ryzen 7 1700
  • メモリ: DDR4 PC4-19200 CL17 8GB × 2
  • マザーボード: PRIME B350-PLUS
  • グラフィックボード: Raden R5 230
  • SSD: SDSSDA-120G-J26
  • 電源: SST-ST55F-G
  • ケース: Fulmo.Q ECA3360

グラフィックボードとケースをめちゃくちゃケチった。(どっちも3000円くらいの安物)

グラフィックボードに関しては今のところ画面が映れば文句ない。GPUで何か計算したくなったらちょっといいの買おうかな。

ケースは、作りが雑&中のスペースが狭くて、電源の位置を調整しないとマザーボードが入らなくて焦ったけど、デザイン的には結構気に入っている。小さくて軽い。

何か配線を間違えていたのかマザーボードは通電するのにCPUクーラーが回らなくて焦ったけど、配線し直したら普通に問題なく起動。

ソフトウェア構成

Arch linuxをインストールしようとしたのだけど、途中で/bin/bashが見つかりませんみたいなエラーが出てよくわからなかったので断念。情弱悲しい。

結局いつものUbuntuに落ち着いたのでした。私は職場でも家でもUbuntu

  1. ハードでもソフトでもハマりどころが少ない。Ubuntuで解決できなきゃ他でも大体厳しい。ネット上に情報が多い。
  2. 仕事の鯖も開発PCも家のPCもUbuntuに統一しておけばディストリビューションごとの設定の違いなどを意識しなくて良いので楽。

今のところ下回りにそれほど興味がないので楽なのがいい。
というわけで人権がいくらか回復しました!頑張ってコード書くぞー。

ビットコインの自動取り引きbotを作ってみた話

今流行りのビットコイン。儲かるならちょっと手を出してみるか〜〜〜〜と思って仮想通貨取引所zaifに登録してみました。仮想通貨取引所というのは、お金をコインに交換して株のように売買できるネットサービスです。

最初はシステムがよくわからなかったので200円ほどのコインを売ったり買ったりして0.05円儲かった!とかで喜んでいたのですが、次第に人の欲望はエスカレートしていきます。

 少しずつ取引額を増やしながら遊んでいたのですが、zaifのアカウントページを詳しく見るとなんとapi keysの項目があるではないですか

え、これってもしかしてお手軽にプログラムを書いて取り引きし放題なんですか!?神かビットコイン神サービスか?

botが毎日少しでもお金を増やしてくれるなら私は数年後には億万長者やで!!!!!!とすっかり興奮してしまい、自動取引botを作ることになるのでした。

 

結論からいうと自動取引は儲かるのか? 

私の実力では儲かりませんでした。儲かったらこんな記事書いてません。

あ、儲からないとは言っても、ここ数日の仮想通貨界隈はバブルで爆上げ状態でしたので、ある程度は儲かりましたよ。もちろん。

コインを買ってただずっと持ってるというスタイルに一週間近くbotを回して及ばなかった、という意味です。大変悲しい。

もちろん私が実装できなかっただけで、うまくやれば儲かる方法はあると思いますが。

 

そもそも市場が単調増加の時、最適な行動はただ持っていること

 大した成果が挙げられなかった原因の一つに、私がbotを動かし続けている間、ビットコインがほぼ毎日高値を更新する単調増加状態だったことがあるように思います。

値段が毎日あがるなら、ずっと持っているのが一番です。細かく売り買いしても、タイミングを逃せば売った時より高く買うだけになってしまいますから。

結構上下はしていましたけど、かなり値上がりしていたので、ただ持っているだけが十分効率的だったという気がします。

 

試したアルゴリズム1:コスト平均法

一日1%利益が得られれば、一年間で何倍になるでしょうか?1.01の365乗≒38です。10万円で初めても380万円になります。2%なら1億3000万円になります。

やばい。夢がある。人生勝組への道はここにあったか・・・・。ということで、一日1%から2%の利益率を目標に、アルゴリズムを試しました。

  •  手持ちの資産を24*60=1440分割して、毎分ビットコインを購入する
  • 2%値段が上がったら売却する

これだけです。非常に単純。ただし、このアルゴリズムだと一日にどれだけビットコインが値上がりしても最大で2%しか資産を増やすことができません。

また、このアルゴリズムで大金持ちになるためには、ビットコインの値段が一年間毎日ずっと2%程度上昇していかなければなりません。

一年間でビットコインの値段が今の1.02の365乗≒1300倍になることは到底有り得そうもない。

そこで、下記のように変更しました。

  • 手持ちの資産を4*60=480分割して、毎分ビットコインを購入する
  • 0.33%値段が上がったら売却する

このアルゴリズムは以下のような仮定をおいてます。

  • ビットコインの値段は一年間毎日約0.33%程度ずつ上昇し続ける
  • 一日に6回程度大きく値段を上下する

年間せいぜい0.33%上昇しても、年間で3.3倍程度にしかならない。一年でビットコインの値段が3倍・・・・ないとも言い切れない・・・。夢を見る程度の価値はあります。

でも毎日相場が爆アゲしてる今試すアルゴリズムじゃねーよなーーーーーーーということでボツ。超長期的に見るなら、資産を線形じゃなくて指数で増やすことができるので有効ですけど、目の前の大きな利益を捨てて試すことじゃあない。

 試したアルゴリズム2:とにかく全力で売り買い

自分の持っている全資産を常に全つっぱで売り買いする男気あふれるアルゴリズム。試して見て思ったのですがアルゴリズム1よりは成績がいいです。

でも、ずっと持ってるだけのほうがもっとよかったです。南無。

ランダムに売り買いする非常に雑なアルゴリズムを組んでしまったため、市場が単調増加の時は、買いそびれる確率が高くて危険です。

いずれにしてもある瞬間に値段があがるのか、下がるのかを一定以上の精度で予測できない限り、ずっと持ってるだけ戦術には勝てない気がします。

試したアルゴリズム3:とにかく細かく上下に売り買い

これが一番可能性がある気がします。ビットコインって手数料が非常に安くて、0.01%とかだったりします(zaifの場合はなんと-0.01%)。

今の相場って手数料の割に値段の細かい上下が激しいんですよね。

少しでも値段が上下すれば、売り買いをするという取り引きを超高スピードで回せば、いくらでも利益を出すことが理論上可能・・・・・・・なはず・・・・・。

でしたが、売りそこねたり買いそこねたりした不良債権が溜まっていくせいで、資産の回転率が低くて全然ダメでした。

それにAPIをやたらと叩きまくるのあんまり好きじゃないしね。

まとめ

上記のアルゴリズムはすごくシンプルなので、もう少し改善できないかと思っていくつか調整をしてみたりしましたが、結局ずっと持ってるほうが強いという結論は変わりませんでした

今はまだ、上がり調子下がり調子がすごくはっきりしてるしね。

ある程度の精度で値段の上下を予測する仕組みがないと、単純なルールベースじゃ無理なんじゃないかなーという気がしています(3の方法はもしかしたらその限りではないかもしれないけど)。

 

まあ、まだ他にもいくつかやってみたいことはあるのですが、とりあえず自分の中で結論がでるまで書きません。

ちなみにこれまでのコードはgithubにあるので気が向いたら試して見てください。

github.com