コミュニティに参加・応援してる暗号通貨XPC(XPChain)のテストネットがついに公開。
XPChain Official Web(公式サイト、テストネット用ウォレットもここからDL可能)
このブログのblogchainはすっかりstallしてしまってるけど、XPCのほうはやや遅れながらも順調に進んでるっぽい。
開発体制にやや不明瞭なところはあるけど、その辺も含めしかるべき時がくればいろいろと明らかにされると思うので、今はじっと待つ。
とはいえテストネットが公開されていろいろ弄ることができるので、RPCで大量に投げたり1XPCずつの1475txの塊(元気玉)を返却したりと遊んでる。た~のし~♪
(通知が来るのをすっかり失念して10XPC爆撃してしまった件に関しては申し訳ない)
メインネットが公開された暁には、cvmu.jpにてノードをホスティング予定。
あとはRubyとかC#(VB?)で軽量ウォレット作ってみたりとかしたいけど、まだちょっとBitcoinやブロックチェーン関係の知識が足りなさそうなので少しずつ。
イチからDiscord Bot 。for Ruby - Qiita
discordrb/eval.rb at master ・ meew0/discordrb
久々の記事がいきなりこれ。なんでDiscord?Ingressで陣営変更でもした?(※1)って、そういうわけじゃないけど。
流れを要約すると
- Twitterの某フォロワーがXPって
仮想通貨暗号通貨に手を出してた
- 以前からブロックチェーンとか興味あったので、勢いでXP買ってコミュ入った(※2)
- 開発メンバーがBot弄ってるっぽいけど、足を引っ張りそうなので参加は断念
- でもDiscordのBot弄ってみたかったので自分のDiscordサーバ立ててBot入れた
XPについては基本的に放置予定。ウォレット入れてPoSしてるけど。
自宅サーバを2013年に止めてから約4年3ヶ月ぶりにPC常時稼働中。
今後のロードマップとしては、ブロックチェーンのコンセプトコードとか書いてみて、適当な暗号通貨もどき(難易度とかプルーフがザルなもの)作って遊んでみようかな~。
どうもがちっとやろうとすると長続きせず飽きてしまうので、仕事じゃないし熱と勢いだけでがーっとやっちゃおう。
0の0乗の正解がネット検索しても見つからないので作成した。 | 子育ての達人 | 妊娠・出産・育児・子育ての毎日を楽しく
えええええ!?00=1じゃないの!?????
記事を要約すると「代数的には未定義(存在しない)、解析的には不定(2つの関数をどう定義するかによる)」らしい。
でもまあ、困ったときは神ならぬRuby頼みと言うことで...
puts 0**0
1
=> nil
我らがRuby様は00=1だとおっしゃった!
なので明日からも00=1で生きていきます。
新型Ruby開発へ 設計者表明、IT高度化・複雑化に対応 :日本経済新聞
2.4とかじゃなくて3.0なの?(2.3は既にtrunkになってるから出るとして)
とりあえず、期待することとしてはPythonぐらい処理速度が上がって、人工知能(機械学習、ディープラーニング)で使えるようになってほしい。
具体的にはTensorFlowをRubyで動かしたい。
さすがにそこまでの変化はないかな。でも、メジャーバージョン上がるんだから期待してもいいよね?
順番に入れていく。まだローカルでテストしてる段階なので、VPSに入れる時にはオプションとか変更するかも。
以下、特に断りがないかぎりバージョンは本記事公開時点の最新を選択。
CVMUプロジェクト自体、安定性より最新を重視してるので、さすがにdevelopment・canary・nightlyやβ版、RC版は使わないけど、正式リリースであれば出たばっかりのバージョンでもどんどん使っていくつもり。
※コマンドの先頭が「#」になってるものはroot権限が必要という意味で、実際はsudoでやってる場合もある。
一応、CVMUプロジェクト(※1)をゆっくり進めていこうということで、まずはサーバの仕様決め。
現時点で決まってる仕様は
- サーバ:さくらのVPS(プランはとりあえず白紙へ)
- OS:カスタム(CentOS 7 x64)
- Webサーバ:nginx
- Rails環境:Unicorn+rbenv+Ruby 2.2
今回はサーバのシェル(UI)をどうするか。
いろいろあって、当初の予定よりVPSのグレードを下げたい(512Mあたりで始めて、足りなかったら1Gに移行)ので、リソース的にはCUIにしたい。
でも、GUI管理コンソールなサーバも捨てがたいし、とりあえずGUIで入れて重かったらCUIに変更する方向で検討。
一時的にCUIを使うには、VirtualBox等だとCtrl+Alt+F2~F6。VPSで発行できるのかは不明。
恒久的にCUIを使うには、たしかランレベルを変更すればいいはず...ということで関係するコマンドやファイルを検索。
起動設定・ランレベルの設定
現在のレベルは/sbin/runlevel
で表示、変更は/etc/inittab
を編集。
ということで早速VirtualBox上で変更テスト。
なんてことはない、ただRubyでHTTPSなWebサーバにアクセスしてGETでデータをとってくるというだけの話なんだけど...
問題発生
まず思いついたのがこのコード。
require 'net/https'
Net::HTTP.get(URI.parse("https://mcrn.jp/ret.cgi"))
しかし、次のようなエラーが返ってきてしまう。
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
from C:/Ruby21x/lib/ruby/2.1.0/net/http.rb:923:in `connect'
原因究明
もしかしてSNIに対応していない?と思ったけど違った(4年以上前に対応してる)。
さらに調べて、以下の記事をヒントに証明書の場所を調べてみてびっくり。
エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - komiyakの通り道
require 'openssl'
p OpenSSL::X509::DEFAULT_CERT_FILE
"C:/Users/Justin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl/cert.pem"
=> "C:/Users/Justin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl/cert.pem"
Justin!?誰???(※1)
時間がかかるかと思ってたURLマッチングが思いの外早く終わったので、だらだらと更新の止まったブログを晒してても意味がないし、さっさと移行してしまうことに。
流れとしては以下のような感じで、すでに3.まで済ませてあったので後は残りをするだけ。
- 「約定期blog GS」(以下、旧ブログ)の全データをバックアップ
- 「Luvelcrak」(以下、新ブログ)にデータをインポート(noindex、follow設定)
- カテゴリの調整など
- 旧ブログのURLとタイトルのペアを収集するスクレイピングツールをRubyで書いて実行
- 新ブログのURLとタイトルのペアを書き出すテンプレートをMTに登録して発行
- 4.と5.で作ったリストを付き合わせて、.htaccess用の「旧URL→新URL」リダイレクトリスト(Redirect permanent)を作る(216行)
- さくらのサーバ上に旧ブログドメイン用のフォルダを作って、6.のリストにトップページ用のRewriteRuleと404/403処理を追加した.htaccessを設置
- さくらのサーバ設定から「さくらのブログ」に割り当ててたサブドメインを7.で作ったフォルダに割り当て直す
- 新ブログのnoindex、followをはずして、旧ブログにnoindex、nofollowを付ける。
Ruby - マイナンバーのチェックデジットを計算する - Qiita
何となく気になって、チェックディジット(デジット、サム)(※1)の計算方法を調べてみたんだけど、要するにこれを使えば「無意味な11桁の数字」からマイナンバールールに適合するのが作れるということになる。
ということで、上記記事にあったコードを弄ってみた。
def create_my_number(dmynum)
digits = ("%11d" % dmynum.to_i).chars.map(&:to_i)
raise "#{dmynum}" unless digits.length == 11
digits.reverse!
remainder = (1..11).inject(0) {|sum, i|
p = digits[i-1]
q = (i <= 6) ? i+1 : i-5
sum + p*q
} % 11
case remainder
when 0,1
check_digit = 0
else
check_digit = (11 - remainder)
end
%Q!#{"%011d" % dmynum.to_i}#{check_digit}!
end
rng = Random.new()
1000.times do
puts create_my_number(rng.rand(10**11))
end
終物語 ~ モンティ・ホール問題 - カモメのリズム
さーて、ゴリ押しのバカコードで検証検証♪
def montyhole(chg,doors=3)
a = (1..doors).to_a
goal = a.sample(1)[0]
me = a.sample(1)[0]
b = a.clone
b.delete(goal)
b.delete(me)
you = b.sample(1)[0]
if chg
c = a.clone
c.delete(me)
c.delete(you)
# raise "ERROR" if c.length > (doors - 2)
me = c[0]
end
if me == goal
1
else
0
end
end
doornum = 3
10.times do
stay = 0
change = 0
10000.times do
stay += montyhole(false,doornum)
change += montyhole(true,doornum)
end
puts "stay: #{stay}, change: #{change}"
end
結果、変えない方は約3333/10000(1/3)、変えた方は約6666/10000(2/3)。