たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

ハッシュポインタ

ハッシュポインタ

2)「電子署名とハッシュポインタを使用し改竄検出が容易なデータ構造を持ち...
「ブロックチェーンの定義」を公開しました | JBA

doublehash.me

ヒステリシス署名
履歴署名とも

ヒステリシス署名とは:電子行政用語集:日立

Bitcoinが考案される前から、 Bitcoinの特徴である
① 乱数とデジタル署名を用いた電子現金
② 分割可能性、open-loop性、匿名性の付与
ハッシュ関数や署名のchainによる改竄防止
については、様々な技術が考案され、実装されていたことが分かる。
https://www.boj.or.jp/announcements/release_2016/rel161128a.pdf

ハッシュチェーン

Hash chain - Wikipedia

Linked timestamping - Wikipedia

争点は少なくとも2つ
* 改竄
* 二重支払い(契約)

ある水準を満たすからいいとか満たさないからダメとか

生物学における有意水準aとか
どこかに水準があるとか考えるんじゃなくて、ある値が出る、それを参考に個々人が判断する、が自然だよね

バイオ・ニューロのジャーナルたち

(ジャーナル)インパクト・ファクターと、各紙に受ける印象

  • neuron: 14.0; 憧れる。様々な実験系で文句なく立証する感じ。
  • nコミュ: 12.1; 案外見かけない。まとまった仕事が多い印象
  • PNAS: 9.7; 良い仕事が多い!ってイメージ。技術開発系とか、手堅い発見系とかの印象
  • Current Bio: 8.9; 良い仕事多い!イメージ。新規性のある発見な印象?
  • eLife: 7.7; オープンアクセス。最近見かけるようになったなぁ、なイメージ
  • JNS: 6.0; 渋い仕事が多い。少なめの実験系でぐぐっと堅く示してく印象?
  • SciRep: 4.3; 玉石混交。これはなぁ…って論文をちらほら見かける、うーんあんま好きくない
    1. Comp. Neuro: 3.3; その情報が欲しかった!!が頻発。Scienceしてる、好印象。
    1. Neurophys.: 2.4; 一本槍でざくっと、なイメージ。地味で良い仕事、的な。

MVPとやら

Minimum Viable Product

思うところがあるのは、コアをminimum viableにするのが大事なんじゃないのってこと

最小限の機能で解決しようとしている問題を解決するプロダクト
地方からの価値生成 • 本当の最小限を絞り込むためのユーザーストーリーマッピング

viableが暗喩すぎないかなぁ…?
多分議論されてるから、文献を探し中

Minimal Viable Product « The W. Edwards Deming Institute Blog

#

MVPって雛形なのかな?
それとも検証用の使い捨てproductなのか?
まぁCase by Caseだよな

関連事項

  • プロトタイプ

成功案件を見て、共通法則を見つけること
と 共通法則に従うと、成功案件になること
は違うよ

d3.jsとデータの書き換え

入力値やインタラクションの結果をデータとグラフに反映する仕組みはd3.jsに備わっているのか否か

結論

d3.jsには双方向バインディングに該当する仕組みがない.
dataの取得・更新とrebinding、rebinding後の更新が必要. うーむ

There’s no data-binding magic à la angular that’s going to trigger a “redraw”. Just call .data and then re-set the attributes
javascript - How to update bound data in d3.js? - Stack Overflow

SVGのtextをその場で書き換える

下のtext要素をクリックしてごらん、なんと編集できるよ!!
私はtext要素。でも編集できるよ! (クリックしてみ)

わかる人向け: 仕組みを一言でいうと

contentEditableなHTML要素の下にtext要素を配置し、このセットをforeignObjectへ入れてSVG要素下に吊るす.

仕組み

contentEditable

HTML5にはcontentEditableという属性がある。

<div contenteditable>編集可能</div>

のように属性を付与すると、

divが編集可能 (クリックしてみ)

になる.

SVGのcontentEditable

contentEditableがSVGで使えれば万々歳、なのだが、使えない…
(次のSVGに導入しようぜ、という提案はされてたりする Add `contenteditable` attribute for SVG text elements · Issue #332 · w3c/svgwg · GitHub)

\\動かない例
<svg>
 <text contenteditable>SVGは編集不可 (クリックしても無駄無駄、無駄ァ)</text>
</svg>

SVGは編集不可 (クリックしても無駄無駄、無駄ァ)

しかし嬉しいことに、contentEditableなHTML要素の下にSVG要素を配置すると, contentEditableが引き継がれる https://github.com/w3c/svgwg/issues/332 (標準化された動作じゃない…と思う)
なので

<div contenteditable>
  <text>divに入れるとSVGを編集可能</text> // SVGのtext要素
</div>

とすると、

divに入れるとSVGを編集可能 (クリックしてみ)

になる.
やったねたえちゃん、SVGが編集できるよ

foreignObject

ここで問題になるのが<svg>下のHTML要素.
おそらくこのページに来た人は、SVGで作りこんだ図に編集可能textを入れ込みたいのだと思う.
つまり、<svg>要素下にrectやらcircleやら置いてあることになる.
textを編集可能にするために、上記の<div contenteditable>を利用すればよいわけだが…
<svg>下にHTML要素(例えば<div>)を置くことはできない javascript - How to append div tag into a SVG rect element? - Stack Overflow
そこで登場するのがforeignObject.
この要素を配置するとあら不思議、HTML要素をforeignObject下に配置しても無問題!!
よって

<svg>
 <foreignObject>
   <div contenteditable>
     <text>私はtext要素。でも編集できるよ! (クリックしてみ)</text>
   </div>
 </foreignObject>
</svg>

のようにすれば、
私はtext要素。でも編集できるよ! (クリックしてみ)

となる。

問題点

  • contentEditableはあくまでHTML属性
    • SVGの仕様で定められた、互換性のあるものではない
  • foreignObject要素への対応
    • 一部のブラウザでforeignObject要素を適切に処理できない場合があるとかないとか

まとめ

  • foreignObject下にcontentEditable HTML要素、その下にtextを置けば編集できる
  • 互換性などの点でベストとはとても言い難いよ、でも便利だね

おまけ

d3.jsと組み合わせると

HTML, non-contentEditable
HTML contentEditable
HTML, non-contentEditable. But enabled by d3.js!!
<div id="divv2">HTML, non-contentEditable. But enabled by d3.js!!</div>
d3.select("#divv2").attr("contenteditable", true);

d3.select("#svgEdit")
  .append("foreignObject")
    .attr("width", 600)
    .attr("height", 50)
    .append("xhtml:div")
      .attr("contenteditable", true)
      .append("text")
        .text("dynamic editable text by d3.js!!!");

test.js in はてな

HTML, non-contentEditable
HTML contentEditable
HTML, non-contentEditable. But enabled by d3.js!!

svgText?
hello