たれぱんのびぼーろく

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

ライフログの保存と表示

集めたデータの可視化

上ほど低レイヤー

前提として集める意味があるか?

集めること自体に情熱を感じる-> good! 楽しんで!

何かに使えるか

Google Home

実はすごい使える。
ログの手動記録がいかにログを阻害していたかよくわかる

睡眠ログ

人類が寝ない日は来るか

寝ないと今のところ死ぬ
-> 死ぬ理由が解明されたら寝なくていいかも

睡眠は(今のところ)人間の本質
-> 睡眠ログの記録は使える

先駆者の皆様

hiroga.hatenablog.com

構築したシステム

Misfit -> IFTTT -> Google Calendar
なんとアプレットがもうあったので、オンにするだけ、hoooo!!!!
IFTTTはあまりに偉大なのじゃ…

かつてfor文というものがあった

for(let i; i < array.length; i++){ 
  print(array[i]); 
}

for文の改善ポイント

配列の要素を取り出して操作したい=>配列の何番目の要素を弄っているかはどうでもいい という場合でも、番号を渡される

for(let i; i < array.length; i++){ // いやiは別に知りたくないんだけど…
  print(array[i]); // i番目、ってのは別に知りたくないんだよなぁ…
}

改善策1

そう、i番目って情報は不要な場合が多い。要素を取り出して、操作したいわけ
=> 要素を取り出す

for (element of array){
  print(element);
}

ひゅー、i番目とか言う、(今回は)無駄な情報が無くなったぜ、coolだ.

  • JavaScript: for(elem of array){}
  • Python : for elem in array:
  • C# : foreach(int elem in array){}
  • Java : for(int elem: array) 拡張for文

考え中

for(elem of array){print(elem);}
array.forEach(elem=>print(elem));

情報量変わらない.

// forタイプ
let newArray = [];
for(elem of array){ array.push(elem*2);}

// mapタイプ
let newArray;
newArray = array.map(elem=>elem*2);

pushしたいわけじゃない. 各要素を倍にしたいだけ.
=> pushの情報いらなくね?
=> map (…おいmapの情報増えたぞ)

newArrayを空arrayとして用意するってのも、したいことではないんだよな.

for文を発展的に解消する利点の1つは、
無駄な手段(道具)を減らす…に見える.
最終目的の為に、道具としてiを使ってたけど、道具無しでもいけるやん、的な…
code長を減らすのではなくて、意識しなきゃいけない要素(道具)を減らす.

大会社はスモールビジネスを出来ないのか

  1. 中小企業と比較して、大会社は総売上の小さい商売をしづらいか否か

販管費(バックヤード)

per製品なら、むしろ大企業が安いくらい
3.中小企業の販管費比率|商工業実態基本調査|経済産業省

大商売向けのバックヤードを整備したら、小商売をするには立派過ぎる
→総売上あたりの共通バックヤード固定費が高過ぎる
…固定費なら、大商売が支えられる.
→バックヤード費用が人数に比例するからでは?
→ バックヤード総費用増えるのに、売上増がそれに見合わない的な

ブロックチェーン・ビットコイン

https://bitcoin.org/bitcoin.pdf

www.slideshare.net

jba-web.jp

ビットコインとブロックチェーンと分散合意 - 急がば回れ、選ぶなら近道

block = {
    timeStamp: 2017-05-27T19:35,
    previousBlockHash: cyjvif4663gi47rvujr,
    transactions: [tx0, tx1, tx2,...]
};

as a results,
block0 -> block1 -> block2 -> ….
chain of block == block-chain is made.

後方のハッシュが、過去全てのblockのハッシュから成るため、timestamp, transactionの改竄が高コストになる.
その点でblock-chainは改竄に強い.
=> 新しいblockは比較的改竄しやすいのでは?

改竄……誰による何の?

  • 第三者によるtransactionの書き換え => 公開鍵暗号で防止可能 (block-chainいらない)
  • 元所有者による二重支払い => timeStampで解決? (block-chainがtimeStampを保証?)

公開鍵暗号でtransactionの正統性と保証.
課題点:

  • 改竄
  • 二重支払い
  • peer-to-peer

プライベート・ブロックチェーン

hyperledger project

Linux fundationが支援するOSSプロジェクト.
分散型台帳など、ブロックチェーンをビジネスに生かすためのプロジェクト.

  • Hyperledger Frameworks
    • Hyperledger Sawtooth
    • Hyperledger Iroha
    • Hyperledger Fabric
    • Hyperledger Burrow
  • Hyperledger Tools
    • Hyperledger Cello
    • Hyperledger Composer
    • Hyperledger Explorer
    • Hyperledger Indy

Hyperledger Projects – Hyperledger

ニコラ氏は「スマートコントラクトと呼ぶよりセルフエンフォーシング・コントラクト(self-enforcing contract)、つまり『自力執行権のある契約』という表現の方がその性質をよく表しています」と話す。
qiita.com

japan.zdnet.com

JavaScriptのgenerator入門

generatorの概念

generator(という概念)とは、繰り返しを簡単に・見通し良く記述する仕組みである.

generatorの利用

generatorを利用することによって

  • 繰り返しオブジェクト(イテレータ)の容易な作製
  • 見通しの良い非同期処理コード記述

が可能になる.

generatorに関わる用語

  • generator関数
  • generator(generatorオブジェクト)
  • iterator

用語の説明まとめ

  • generator関数: generatorのコンストラクタ関数
  • generator(generatorオブジェクト): generator関数のinstance。Iteratorでもあり、またIterable interfaceでもある

generator関数とは

Thus the function call GeneratorFunction (…) is equivalent to the object creation expression new GeneratorFunction (…) with the same arguments.

ジェネレーターの説明

ジェネレーターは処理を抜け出すことも後から復帰することもできる関数です。ジェネレーターのコンテキスト (変数の値)は復帰しても保存されます。
function* - JavaScript | MDN

ECMAScript2016 language specification該当部分

25 Control Abstraction Objects …
25.2 GeneratorFunction Objects
Generator Function objects are functions that are usually created by evaluating GeneratorDeclaration, GeneratorExpression, and GeneratorMethod syntactic productions. They may also be created by calling the %GeneratorFunction% intrinsic.
https://www.ecma-international.org/ecma-262/7.0/#sec-generatorfunction-objects

25.3 Generator Objects
A Generator object is an instance of a generator function and conforms to both the Iterator and Iterable interfaces.
https://www.ecma-international.org/ecma-262/7.0/#sec-generator-objects

yeild

yeild*

yeild*は、子プロセスのyeildを親プロセスでyeildするための仕組み.

developer.mozilla.org

入門以上

Node.js streamとの組み合わせ

あまりwebに文献はないが、Node.js readable-streamとすこぶる相性がよい気がする.
read()の中でgeneratorを使えば、read()呼び出しのたびに1つずつyieldできるから.
再帰させてyield*と組み合わせたら、とても良いコードがかけた.

generatorとか、iteratorとか

要は、状態を抱え込む反復可能オブジェクト.
関数型とは相いれないものなのかなーと。関数型に興味がわいてきた.

引用が認められる範囲、特に学術の世界

某pixiv引用で議論があったから、調べた.

引用の法的根拠

(引用)
第三十二条  公表された著作物は、引用して利用することができる。
著作権法

公表された著作物が1つのキーワードみたい.
公表権という概念が絡んでくる

例えば、ラブレターを引用しても良いのか?
一般化すると、私的文書を引用していいのか.

著作権法は著作物も2つに分けてる.

  • 著作物
    • 公表された著作物
    • 著作物でまだ公表されていないもの

なるほど著作権セミナー
http://www.nakagawa.gr.jp/lecture/naruhodo1002.pdf

m.chiebukuro.yahoo.co.jp

  1. 会員しか見れないのに、引用していいの?
  2. 「会員」が特定多数であれば引用して良い

id:drunkghost
会員制で見たい人だけが見られるようにしてある物を引っ張り出してきても許される、引用や研究ってそんなに万能なんです…?
少なくとも引用は万能です。数人の仲間だけにパスワード教えて見せてたならともかく、捨てアドがあれば誰でも会員になれて、数万人規模の会員がいるところに、会員なら誰でも見られる状態で置いてあるものは、著作権法上公開されたものと考えていいと思います。なのでそれが適正な引用方式に従っていれば引用はオッケー、お国の法律が認めてくれてます。やったね!
(ていうかその理屈だと、お金払わないと読めない学術雑誌に掲載された論文は無断で引用しちゃいけないことになりますけど、それでいいんですかね……? NatureとかCellもウカツに引用できない世の中、やばくね?)

確かに、会員しか見れないから引用ダメ!だと、人の文を参考にする、ことがほぼ不可能になってしまいますな
会員というと曖昧だけど、有料電子小説は引用できるか、に置き換えたら、やっぱり出来る方が妥当そう

(公表権)
第十八条 著作者は、その著作物でまだ公表されていないもの(その同意を得ないで公表された著作物を含む。以下この条において同じ。)を公衆に提供し、又は提示する権利を有する。当該著作物を原著作物とする二次的著作物についても、同様とする。
著作権法

異民族の神聖な儀式を研究者が見てもいいか

真っ当な意見だと思う
anond.hatelabo.jp

  • 引用そのもの
  • 引用の影響

は分離しましょう. というのは至極真っ当だと思う

情報解析のための複製(著作権法第47条の7) コンピュータを使った情報解析のために、必要と認められる限度において、著作物を複製することができる。

  1. 他人の著作物を引用するときの注意点を教えてください。 また、出所の明示はどのようにすればよいのですか?
    A.「引用」とは、例えば論文執筆の際、自説を補強するため、他人の論文の一部分をひいてきたりするなどして、自分の著作物の中に他人の著作物を利用することをいいます。この場合、著作権者の許諾なしにその著作物を利用することができますが、「引用」といえるためには、「引用の目的上正当な範囲内」で行われるものであり、また、引用される部分が「従」で自ら作成する著作物が「主」であるように内容的な主従関係がなければなりません。さらに、かぎ括弧を付けるなどして引用文であることが明確に区分される必要があります。 なお、引用の際の出所の明示の仕方ですが、引用部分を明確にした上で、その後に誰のどの著作物であるかを表示するなど、少なくとも引用された著作物の題号や著作者名が明らかにわかるような表示が必要です。

javascript & HTML 実行環境

JavascriptとHTMLが動く環境、その詳細