Blog

日本ブロックチェーンユーザ会: 第6回勉強会 に参加してきました

https://eventdots.jp/event/618410

http://www.unitedbitcoiners.com/blog/flare-lightning-network

難しい理論の話は置いといて、大きな枠組みとして以下のことがわかりました。

1. http通信のような、汎用決済プロトコルに成長する可能性が高い(もちろん既存の決済より圧倒的に効率的)
2. 現段階ではアカデミック先行であり、理論は多く出ているが実装や実験が不十分
3. 何をするにもキャズムに至(=普通の人が普通にビットコインを保有して使っている)らなければ始まらない

つまり「ポテンシャルは非常に高いが、芽が出るまでに時間がかかる」領域。僕は10年かかると思っています。

人工知能なんかは、Google検索やレコメンド、企業の業務フロー改善など金儲けに落とし込めるので、爆発的に進展しています。

これに対して、ビットコインは金融商品としての投機的需要・利益は高いのですが、堅実なビジネスというものがまだ実現できていません。
感覚的にもわかるように、一般人に普及していないのです。

まあ1と2の問題は時間が解決してくれるので、問題は3ですね。
ビットコインが人口に膾炙するシナリオが、まだ具体的に浮かばない。

javascriptで現在実行中のファイル名及び行番号を取得する方法

qiitaにも書いたけど、こっちにも載せておく。

Object.defineProperty(window, '__STACK__', {
get: function(){
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function(_, stack){ return stack; };
var err = new Error;
Error.captureStackTrace(err, arguments.callee);
var stack = err.stack;
Error.prepareStackTrace = orig;
return stack;
}
});
Object.defineProperty(window, '__FILE__', {
get: function(){
let filename = __STACK__[1].getFileName().replace(location.origin, "").replace(window.location.search, "");
if(!filename) filename = "/";
return filename;
}
});
Object.defineProperty(window, '__LINE__', {
get: function(){
return __STACK__[1].getLineNumber();
}
});
Object.defineProperty(window, '__HERE__', {
get: function(){
let filename = __STACK__[1].getFileName().replace(location.origin, "").replace(window.location.search, "");
if(!filename) filename = "/";
return filename + ":" + __STACK__[1].getLineNumber();
}
});
console.log("__FILE__", __FILE__);
console.log("__LINE__", __LINE__);
console.log("__HERE__", __HERE__);

なぜJavascriptはシングルスレッドかつ非同期通信なのか

http://indori.blog32.fc2.com/blog-entry-1298.html
同じ理由でJavascriptもシングルスレッドなのだと思う。

シングルスレッドだとファイルの読み込みなどの重い処理をしたときに次の処理まで長い待ち時間が発生しうる。
それだと使い者にならないので、そのような処理は処理を投げる(ファイル読み込みの場合はhttpリクエストをブラウザに投げる)ことだけをまず行い、イベントループにでぶち込んで他の処理を行う(他の処理も同じようにイベントループにぶちこむ)。

イベントループを監視してる最中に、その処理が終わっていたらFIFOでコールバック関数を実行する。
これが現実的な解決方法であり、非同期処理そのものだ。

海外旅行の際に空港でやるべきこと

前提
以下が終わるまで、出たら戻れないゲートからは出ない。出ると戻れなくなり、最悪ロンドン中央部までそのまま行かなければならなくなる。ゲートを出るのは「出なければ下記2つが行えない」と判明した場合のみ。

1.クレジットカードを使い、ATMで外貨(ポンド)を降ろす
クレジットカードのキャッシングを使えば、かなりいいレートでJPY/GBR(円/ポンド)変換できる。キャッシングは帰国したらクレジットカード会社に電話して繰り上げ払いすれば利息も3%(年利18%として1ヶ月分)しかかからない。これはほとんどの外貨交換所よりお得な計算である。
クレジットカードとATMの相性が悪く、使えない場合もあるので、クレジットカードは複数枚持っていくこと。(ほとんどは使えるが、3枚中2枚使えないということが1度だけあった
 英語での質問方法:Where is an ATM? / Where can I use an ATM? / Could you mind if you tell me where an ATM is? (かなり丁寧)

2.SIMカードを買う
前提として、携帯のSIMロックを解除しておくこと。海外旅行に行く前にはこれが必須。ほとんどの空港の到着場所には、短期滞在者用のSIMカードが売ってることが多く、これはイギリスもおそらく存在する(参考:https://scratchpad.jp/prepaid-sim-in-uk-2/ 注:情報が古いので今これがまだ正しいかは不明)。日本のキャリアの海外ローミングは極めて値段が高く、不便なことが多い。多少値が張ってもSIMを現地で買うべきである。個人的には、例えばロンドンで1週間程度滞在するのなら、5000円でも購入すべきだと思う(物価が高いので)。
SIMがないと、あらゆる点で困る。地図も調べられないし、安い交通機関もわからない。最近はネットで調べる人が多いのか、ガイドサービスも充実してない国が多い。英語がとても流暢ならいいが、そうでない場合はウザがられることもしばしば。ひどいときはタクシーなどでぼったくられる。SIM代をケチると、ストレスが溜まり、結局費用もかかるので、百害あって一利なし。
英語での質問方法:Where can I buy a SIM card for a mobile phone? / Could you mind if you tell me where a SIM card for a mobile phone is? (かなり丁寧)

SAOでファイルアップロードの際の注意

ページ遷移せずに2回目のファイルアップロードをしようとした場合、ブラウザによっては失敗することがある。

これは、input タグのvalue に既に値が入っていることが問題なので、以下のようにリセットすれば正常に動作する。

document.getElementById(“target_id”).value = “”;

jQueryなら以下。

$(“#target_id”).val(“”);