2019年6月23日

エンディアン盲?(LE/BE/NBO)

とっさに左右がわからなくなるのを左右盲というらしいけど、リトルエンディアン(LE)とビッグエンディアン(BE)がどちらか分からなくなることは多い。

あとネットワークバイトオーダー(NBO)ってどっち?とか。


まず、0xAB12CD34みたいな整数(16進表記)があったとして

リトルエンディアン...リトルがエンドだから、小さい桁からならべて「34 CD 12 AB」?
いや最初にくる桁から並べて「AB 12 CD 34」??

ってなってしまう。

正解は下位バイトから先に並べるので「34 CD 12 AB」。

何故こうなるのかというと、Little Endianというのが「(卵の)小さい方(little end=下位バイト)から先に割る人(-ian)」かららしい。

これが「EndianなのにEnd(末尾=最後に配置)じゃない!?」という混乱の元。

ネットワークバイトオーダーはネットワーク上におけるバイト順で、TCP/IPにおいてはBig Endian。対義語はホストバイトオーダー(各コンピュータ固有のバイト順)。

ホストバイトオーダーはx86 CPUがLittle Endian。PowerPCやMotorolaがBig Endian。

Bitcoinは整数格納(ブロックハッシュなど)がLittle Endianで、Scriptの中身とかは整数ではないのでそのままの順番。


あとは、ビット単位での並びにも順番はあるのだけれど、こちらはLittle Endian/Big Endianというとややこしいので(基本LE/BEはバイト単位)、MSB First/LSB Firstとか言うらしい。

...で、リトルエンディアンはどっちが先だっけ?(記事の最初に戻る)

2019年6月23日

Senorita しからずんば

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

Now a festa day カーン!!(金たらいの音)

...といううろ覚えしてたMMD動画があったので探してみることにした。

たしかたこルカ出てたはず...ということでたこルカで探すも見つからず。

MMD杯だっけ?ということでMMD杯で探すもこれも×。

結局「senorita caramba」で探す

※ここで補足すると「しからずんば」は私が勝手に「しからんば」から似た語感の日本語に置き換えて覚えてたので、違うのは分かってた。
しからんば=し+からんば、またsenoritaがスペイン語なのでスペイン語で「からんば」の音になる単語をGoogle翻訳で総当たりして見つけた。

するとCarlitoという歌がヒット。試聴してみるとまさにこれ。

あとはカリートで検索したらすぐ見つかった。

【MMD】愉快な仲間たちと『Go!Go!カリート!』PV【霊夢/リン/他いっぱい】

たこルカ一瞬しかいないやん!MMD杯でもないし...。おまけに金たらいではなく鉄球(ゴーン!)
さらにいうと「し caramba now a festa day」ではなく「say caramba now it's fiesta time」

まあ8年も前のことだし。

2019年6月11日

メモ:CentOS 7でInsight用のbitcoind系をコンパイルする呪文(./configure オプション)

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

./configure CXXFLAGS='-O2 -D_FORTIFY_SOURCE=2 --param ggc-min-expand=1 --param ggc-min-heapsize=32768' --disable-gui-tests --disable-bench --without-gui --disable-wallet --with-boost-libdir=/usr/local/lib

CXXFLAGSの説明

  • O2:最適化
  • D_FORTIFY_SOURCE=2:メモリあふれ検出をON(最適化と同時に指定)
  • ggc-min-expand、ggc-min-heapsize:メモリ使用量を減らす(VPSでコンパイルしているため)

オプションの説明

  • disable-gui-tests:GUI(qt)テストをビルドしない
  • disable-bench:ベンチマークをビルドしない
  • without-gui:GUI(qt)をビルドしない
  • disable-wallet:ウォレット機能を無効にする(Insightに必要なネットワークとフルブロックノードのみ使用する)
  • with-boost-libdir=/usr/local/lib:OSのBoostだとバージョンが合わないのでカスタムビルドしたものを突っ込んであるディレクトリを指定

2019年3月 8日

件のJavaScriptに対抗する防衛(?)JavaScript

半分ネタ。件のJavaScriptとは以下の記事を参照。

【??危険なプログラム??】"何回閉じても無駄ですよ?"と無限にアラートを出すサイトのコードを添削してみた。 - Qiita

内容としてはwhile(true)window.alert()を呼び出し続けている。

Firefox等では繰り返しalertを呼ぶと「もう表示しない」みたいなチェックボックスが出て止めることができるらしい(昔はChromeもできたような記憶がある)。
しかし、少なくとも今試したらChromeではタブを閉じない限りDevToolsも開けない。

ということで意味もなく(?)無限ループを止められるようにしてみた。

    window.alert = function(msg){
        if (!window.DISABLE_ALERT){
            if (!window.confirm(msg)){
                window.DISABLE_ALERT = true;
            }
        }else{
            throw new Error("alert diabled: this is not true Error.");
        }
    }

グローバル変数使ってるあたりあまりよろしくない気もするけど、これでもし無限alertを食らってもキャンセルをクリックすれば例外を投げてwhileを抜けることが可能。

そのままだと全てのalertが無効になってしまうので、DevTools等でwindow.DISABLE_ALERTfalse/null/undefinedに戻せばOK。

これをTampermonkey等で全てのページで読み込むようにしておけば、もう無限alertを恐れることはない!
...うっかり普通の(無限じゃない)alertでキャンセルをクリックして「あ゛ぁぁ」ってなってしまう未来が見えるけど気にしない。

2019年1月23日

[Windows 10]言語の同期に要注意?

時間が無いので手短に。

経緯

  • あるPC(Aとする)でキーボードレイアウトが英語に
  • しかしデバイスマネージャやハードウェアキーボードレイアウトは日本語
  • 調べてみるとIMEが消失(MS IMEがない)

原因

どうも言語設定の同期が原因らしい。
別のPC(Bとする)ではATOKを使っているけど、しょっちゅうMS IMEに戻るので鬱陶しくてMS IME自体を削除していた。
これがAに同期された結果、AにはATOKがないので強制的に英語にフォールバックしていたのかもしれない。

逆にA→Bの同期がかかった結果として、BでMS IMEに戻る現象が発生していたのかも。
いずれも推測の域を出ないけど...。

解決策

AにMS IMEを追加し、言語設定の同期をオフにした。しばらく様子見。

2018年12月25日

XPChain チェインパラメータメモ(0.17.0)

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

https://github.com/xpc-wg/xpchain/blob/1c1845a3276e176f70ab09b3ac7dc904f542e873/src/chainparams.cpp

主にinsight/explorerやSPV(軽量ウォレット)とかで使うものを中心に
ABPoS(minting/stake)関連を弄らないのであれば、bitcoinライブラリにこれらの値を入れれば動くはず

メインネット

  • P2Pポート:8798
  • RPCポート:8762
  • メッセージマジックバイト:0xfc,0x87,0xba,0xc0
  • Genesisブロック
    • ハッシュ:0x000000009f4a28557aad6be5910c39d40e8a44e596d5ad485a9e4a7d4d72937c
    • マークルルート:0xdaa610662c202dd51c892e6ff17ac1812a3ddcb998ec4923a3a315c409019739
    BASE58プレフィックス
    • 公開鍵:76 (0x4c)
    • script:28 (0x1c)
    • 秘密鍵:128 (0x80)
    • 拡張公開鍵:0x04, 0x88, 0xB2, 0x1E
    • 拡張秘密鍵:0x04, 0x88, 0xAD, 0xE4
  • bech32 HRP:"xpc"
  • チェックポイント:
    10275ブロック目=0x000000005a940193bddee51f6c649d3db5d14086201e856b0c8049f625e8e6b7

テストネット(testnet2)

  • P2Pポート:18798
  • RPCポート:18762
  • メッセージマジックバイト:0xfc,0x87,0xbb,0xc1
  • Genesisブロック
    • ハッシュ:0x00000000f04d3bdebf907f79b4b096a05d763ac890612202ff9c9cc685221617
    • マークルルート:0xdaa610662c202dd51c892e6ff17ac1812a3ddcb998ec4923a3a315c409019739
    BASE58プレフィックス
    • 公開鍵:138 (8a)
    • script:88 (58)
    • 秘密鍵:239 (ef)
    • 拡張公開鍵:0x04, 0x35, 0x87, 0xCF
    • 拡張秘密鍵:0x04, 0x35, 0x83, 0x94
  • bech32 HRP:"txpc"
  • チェックポイント:なし

共通

  • シートホスト:seed1.xpchain.io~seed3.xpchain.io
  • POW→POS切り替え:10275ブロック

2018年12月24日

【超辛口】XPChain( $XPC )エアドロップ受取方法【ネタです】

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

※以下の記事は口調・内容含め全てネタです。苦情は受け付けません。
(一応手順自体は間違っていないはずですが...)


さーてXPChainがリリースされたぞ。
ということでエアドロップの受け取り方を教えよう。

  1. 申請時のXP、メールアドレスを用意
    なに?申請してない?ならタイムマシンを発明してくるんだ。できなければGOX!

  2. Windows 10 PCにUbuntu WSL 18.04をインストール
    Windowsじゃない?GOX!
    Ubuntuの入れ方が分からない?GOX!

  3. XPChain公式のGitHubからソースをgit cloneだ
    Gitの入れ方がわからない?GOX!

  4. cloneしたディレクトリのdoc/build-windows.mdを読んで良い感じにdependencyを入れるんだ
    出来なければGOX!

  5. どうせなら独自のクライアント名にしてみよう
    src/clientversion.cppをvi(vim)以外で開いてCLIENT_NAMEを書き換えるんだ
    そうだな...例えばShigeruとかKasumiとかTakeshiとかな。
    出来なければGOX! vi(vim)使ってもGOX!
    viは敵!rm /usr/bin/vi!rm /usr/bin/vim!

  6. doc/build-windows.mdを読んでmakeだ
    そしてできたqtのexeを取り出すんだ
    ちなみにUbuntuの場所は「%userprofile%\appdata\local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs」だ(これは分かりづらいのでヒント)
    /mnt/c経由でコピーしてもいいぞ
    どこかで失敗したらもちろんGOOOOOOOOOOOOOOOX!

  7. qtを起動してアドレスを作るんだ
    segwitのbech32以外を作ったらGOX!

  8. XPChain 公式サイトの「GO TO AIRDROP」からフォームに飛び、必要な事項を入力するんだ
    手順書見るとかぬるいことやってたらGOX!

  9. メールが届くからリンクを開くんだ
    メールが届かなかったらGOX!
    迷惑メールに紛れてしまったらGOX!

  10. クイズに答えてアメリカ一周...じゃなくてXPCをもらうんだ
    高負荷時はADMC301エラーが出るけど焦らない焦らない
    クイズに間違えた?GOX!

  11. ヒャッハー!ついにXPCゲットだぜ!
    届いてなければGOX!
    承認に時間がかかるけどじっと耐えるんだ

  12. 後はstakeするなりtipするなりrainするなりGOXするなり好きにするがよい!

ネタだけだと酷いので、一応フォロー。
おこめさんが分かりやすい説明を書いてくれてるのでそっちを見てね。

【仮想通貨】XPCのエアドロップをもらう方法|おこめブログ

2018年11月16日

$XPC テストネットを遊び倒し中

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

暗号通貨eXPerience Chain(XPChain、XPC)、Discord上で使えるウォレットbotやInsightも公開されて、ますます楽しくなってきた。

私は技術系オタクだから、暗号のコードとか見るとちょっと(かなり)わくわくする。
XPC自体の活用アイデアとかはあまり出てこないけど...まあ、まだテストネットなので慌てない慌てない。

ということでテストネットだからこそということで、いろいろ弄って遊び倒す。
ある意味これもXPCの活用(?)かもしれない。

RPCコマンドを使ったrainもどきとかトランザクションの生成→署名→送信あたりはやったので、いよいよウォレットの外(Bitcoin系のライブラリとInsight)でいろいろやっていきたい。
と、その前に、アドレスや秘密鍵の関係を把握しておくことに。

※以下、XPC固有というわけではなく、Bitcoin 0.17~系にほぼ共通のはず(そもそもソースがBitcoinからフォークしてるので、ブロック構造とか使ってる暗号技術とかほほ同じのため)

※あくまで私が弄るために集めた最小限の知識やコードしか書いてないので、必ず他のサイトも参考にすること

※以下、バイト列はhex表記(ef0102dc...等)とする

2018年11月13日

$XPC テストネット始動

  • 投稿日:
  • by
  • カテゴリ:
  • コメント: 0件

コミュニティに参加・応援してる暗号通貨XPC(XPChain)のテストネットがついに公開。

XPChain Official Web(公式サイト、テストネット用ウォレットもここからDL可能)

このブログのblogchainはすっかりstallしてしまってるけど、XPCのほうはやや遅れながらも順調に進んでるっぽい。
開発体制にやや不明瞭なところはあるけど、その辺も含めしかるべき時がくればいろいろと明らかにされると思うので、今はじっと待つ。

とはいえテストネットが公開されていろいろ弄ることができるので、RPCで大量に投げたり1XPCずつの1475txの塊(元気玉)を返却したりと遊んでる。た~のし~♪
(通知が来るのをすっかり失念して10XPC爆撃してしまった件に関しては申し訳ない)

メインネットが公開された暁には、cvmu.jpにてノードをホスティング予定。
あとはRubyとかC#(VB?)で軽量ウォレット作ってみたりとかしたいけど、まだちょっとBitcoinやブロックチェーン関係の知識が足りなさそうなので少しずつ。

2018年10月21日

SSL証明書更新に失敗しかけたけどさくらに助けられた件

異世界に転生して...じゃなくて。

※没りそうになったので当初予定の9割削減でお送りしております。

  • Symantecがやらかしたせいで証明書更新が必要になった
  • その時の私の環境
    さくらインターネット(以下さくら)で以下の契約をしていた
    • レンタルサーバ:mcrn.jpに割り当て
    • VPS:cvmu.jpに割り当て
    • SSL証明書:上記2つそれぞれにラピッドSSLで用意
      mcrnは手動プラン、cvmuはレンタルサーバ用自動プラン
  • さくらではSSL証明書は2回更新が必要だった
    • 1回目の時は無事更新成功
    • 2回目の前に、諸事情でcvmu.jpをレンタルサーバからVPSに移行
      その際に、Let'sEncryptに失敗し、面倒なので期限の残ってたSSL証明書を引っこ抜いて流用
  • 2回目の通知が来たとき、それをすっかり忘れてcvmuの分を更新手続きし、放置
    • 当然レンタルサーバではなくなっているので自動で進むはずがない
    • 手続き後、すぐにレンタルサーバ側から認証ファイルをVPSに移動していれば問題なかったはず
  • 先日「まだ更新されてないよ、このままだとChrome70でエラーが」的なメールが来て気付く
    • 慌てて認証ファイルを移動するも当然時間切れ(変化なし)

で、ダメ元でさくらのサポートに連絡したら、認証局に連絡して新しい認証ファイル発行してもらい、無事更新完了した。

どう考えてもこっちの落ち度なのに対応してくれたし、かなりスムーズだった。
もしかして結構こういうユーザーいるのかな...?