あなたのノイズ、わたしのミュージック。

自分が何にどう関心を示したかの記録。

3/26のつめたい夕餉(即席版)

"涙と笑いとハイホーに満ちた傑作長編"とか評されるその筆致で人生を浚われたい。


3/26の晩御飯のおとも

放送大学 動物の科学 第12章

動物の脳とその機能。と言いつつほとんどヒトかも。

大脳は部位によってその機能の割り当てが決まっている。

脳機能は概ね左右対称に割り当てられているが、言語野だけは左に偏る。

この取ってつけた感が素敵。

あと気分と神経伝達物質との関係。だいたいモノアミンのせい。


エンジリッシュ

190問。たぶん単語70問・イディオム80問・フレーズ40問。


progate Sass

ちょっとしたきっかけがあり課金を続行することにしたprogate。

EXPERT出て以来ほとんどCSSすらほとんど触ってなかったので復習。引数まで使えたんかワレ……。


3/26の晩御飯

納豆ご飯。あと抗生物質が違うやつになった。快方?


2Q(注:弊社の区分に合わせて)の目標: なによりもまずは自分自身に実験を仕掛けること。

3/24のつめたい夕餉 放送大学 動物の科学 第9章・第10章 / 独習Git 第2章

おっかなびっくりなまま終えたひと仕事をはじめとして、

諸々を駆け抜けていったそのあとの虚脱感。


3/24の晩御飯のおとも

放送大学 動物の科学 第9章・第10章

第9章は生体情報を伝える神経系と内分泌系。

電気信号を作り出してはたらく神経系とホルモンを作り放出する内分泌系、生体情報を伝えるという点で共通点のあるこのふたつは、

協調的なはたらきをとり、その結果として適切なタイミングで生殖腺を発達させる。

ある動物が雌雄や個体ごとで生殖期に差があると失敗する確率が高くなるため、それらの条件間で足並みが揃うようにしているのである。

.

何かしら伝えるべき信号や渡らせるべきホルモンがあったとして、

シグナルとなる化学物質がその受容体に結合するようなのですが、

そのシグナルが水溶性分子であれば脂質の膜でできた分泌小胞にパッケージングされて受容体近くまで運ばれ放出されることによって行き着くし、

脂溶性分子なら細胞膜(脂質二重膜でできている)にそのまま溶け込んで通過し、細胞内にいる受容体にそのままアクセスできる、

こういう使い分けのバランス感覚すごい。あと開口放出がちゃんと示されたの2013年のことらしくてびっくり。

開口放出 - 薬学用語解説 - 日本薬学会

神経伝達物質の放出機構

.

第10回は親による子供への投資と性選択。

ここでいう"投資"は、より多くの子孫を残すべく、親がそれぞれの子供に資源を投じること。

投資は、配偶子を生産するという上で生じるもの(この投資の大きさは、膨大な数とはいえ極小である精子をつくる雄<大型の卵を作る雌)と、

産まれた子を育てる上で生じるもの(育てるものが片親か両親かによって雌雄間での投資量のバランスが変わる)とに大別される。

.

雌を奪うために雄同士が戦うもの、雄を奪うために雌同士が戦うもの、種によってその関係性は変わってくる。

この違いは、雌雄のどちらが子育てにエネルギーと時間を費やすようになっているかによって決まる。

ex. ベイトマンのキイロショウジョウバエの実験(あんまいい資料見つからなかったのでWikipedia)

ベイトマンの原理 - Wikipedia

また、異性を選ぶことには時間やエネルギーといったコストがかかるが、それでもやるのは何故なのか。

より優良な相手(たくさんの資源を持ってこられる、健康な体をつくる遺伝子をもつ、選ぶ側に選り好まれる遺伝子を持つ)を選ぶことで、

子育ての資源が確保できたり、次世代もまた優良な個体として育ちやすくなったりといったメリットがあるのではないかとされている。

.

また、多くの動物では雄と雌の数はほぼ等しく存在している。これはフィッシャーの性比理論によって説明されている。

各子供には父と母が1個体ずつ存在する。つまり、ある集団内で雄全体で残す子供の数と雌全体で残す子供の数は一致する。

雌雄どちらかが増加or減少した場合、投資効果は投資量の少ない性で大きくなり、そちらに投資する親はよりたくさんの適応度(孫の数)を稼ぐようになる。

→数の少ない性を増加させるように自然選択がはたらく。

その結果、性比は雌雄への総投資量が等しくなるところで安定する。

W・D・ハミルトン / ミツバチの話 - 生命と数学 - Cute.Guides at 九州大学 Kyushu University

フィッシャーの原理 - Wikipedia


第10章に関しては昨日友達に展開してた雑な論を若干ひっかいていくものがあり、少し心苦しいものがあった(感想)。


エンジリッシュ

150問。単語70問・イディオム60問・フレーズ20問。


独習Git 第2章

Gitとバージョン管理の概要。

Gitはバージョン管理のシステムとしてどのような特徴を持つのか(=分散リポジトリ・ブランチ・ステージングエリア)の確認。

および著者が準備したサンプルをクローンし、Git管理されたリポジトリを検分。

だいたいやったことあることだったけどblameというコマンドは使ったことなかった。

$ git blame master README.txt

出力

436cf890 (Rick Umali 2009-09-05 02:10:36 +0000  1) rickumali-index
436cf890 (Rick Umali 2009-09-05 02:10:36 +0000  2)
436cf890 (Rick Umali 2009-09-05 02:10:36 +0000  3) This is the software that generates the rickumali.com site.
436cf890 (Rick Umali 2009-09-05 02:10:36 +0000  4)
436cf890 (Rick Umali 2009-09-05 02:10:36 +0000  5) The best way to read this code is to start "from the cron jobs":
(以下略)

→README.txtというファイルに起こったことの詳細が確認できる。


3/24の晩御飯

近所のパン屋さんのおつとめ品と普通に買った桜あんぱんと盟友からのホワイトデーのお菓子。

3/22のつめたい夕餉(即席版)

今日がお休みだったので4連休、健康的に遊び呆けた前半戦でした。後半もたぶんそう

具体的にいうと昨日は崎山蒼志、今日はニトロデイと若いミュージシャンのライヴを立て続けに浴びた、

ついつい成熟のこととかに思いを馳せてしまう。

あと服代を計5万くらいやらかした。でもまだやらかせると思っている。


3/22の朝御飯のおとも

放送大学 動物の科学 第7章・第8章

第7章は動物の表現型可塑性とその進化。わかりやすいとこだと成虫になる季節によって色柄の変わるチョウとか。

アブラムシが化け物めいている。

春夏はメスの単為生殖によってのみ殖える。その際、餌となる農作物が足りないようだったら羽根つきの個体を産んで、他に移れるようにする。

秋になると卵の姿による冬越しの準備として卵が産める雌と、有性生殖に必要な雄が産まれる。

敵に回したくないタイプの生き物だが実際農業的観点から見たらがっつり害虫なので世知辛い。

.

第8章は動物の神経細胞のかたちとはたらき。だいたい脳の話。

脊椎動物の脳はその系統によって多様な形を呈するが、部位の並び方や基本の構造には共通点が多い。

吻側から順に、終脳→間脳→中脳→橋→小脳→延髄→脊髄。

あとのことはこないだ見ていた生理心理学の第3回の方が詳しいかも。

ニューロンと活動電位について。


エンジリッシュ

210問。単語80問、イディオム90問、フレーズ40問。


3/22の晩御飯

こないだ頼んで余してたピザを解凍。


分身の手段をご存知の方はコメント欄まで。

1/1 - 1/31の読書感想文

先週末-今週頭にかけてあまりに鼻水と頭痛がエグく、生活が破綻しかけましたわたしです。

内科で診てもらってもどうにもで耳鼻科にかかりなおしたら、風邪か花粉による鼻づまりからの副鼻腔炎というコンボが決まっていたことが判明。

これからは目には目を歯には歯を鼻には鼻をといった受診スタイルを心がけていこうと思います。


記事タイトルは誤植ではない、そうだったらいいのにな。

osouonna.hatenablog.jp

上記事に挙げた以外で、今年の1月に読んだ本の記録となります。


おしながき

いかにして問題をとくか / George Polya 訳:柿内賢信

プログラマの数学 / 結城浩

グラーフ・ツェッペリン 夏の飛行 / 高野史緒

逆数宇宙 / 麦原遼

史上最強図解 よくわかるフロイト精神分析 / 久能徹 太田裕一

やがて秋茄子へと到る / 堂園昌彦

続きを読む

3/11のつめたい夕餉 放送大学 入門微分積分(第9回) / SkillHub いちばんやさしいWebデザインの基礎入門 レッスン1〜3

3月の方が師走感あるよ


3/11の晩御飯のおとも

放送大学 入門微分積分(第9回)

vod.ouj.ac.jp

不定積分

積分定数の意味(積分微分の逆演算であり、対応する原始関数は多数考えられるためその不確定さをここに集約する)とか、各種関数の積分法とか、

未知の定数が含まれる式の積分のやり方(その定数が正である場合、0である場合、負である場合に分けてそれぞれ考える)とか。

以下適当に確認するのに良さそうなページ。

積分定数Cの意味を分かりやすく説明 - 具体例で学ぶ数学

積分公式一覧 | 高校数学の美しい物語

積分公式の効率のよい覚え方|数学|苦手解決Q&A|進研ゼミ高校講座|ベネッセコーポレーション


SkillHub いちばんやさしいWebデザインの基礎入門 レッスン1〜3

skillhub.jp

とりあえず用語とか概念知るところから始めなきゃなって思って探していて見つけたサービス。会員登録不要?

実際世に出てるWebサイトを例にとって確認する形で進行。

レッスン1: 構造

階層型: 階層が深くなると情報も詳細になっていくよう展開する

ファセット分類型: どのファセット=切り口からでも情報へのアクセスを可能とさせる

ポータル型: 様々なサイト同士をリンクする

ハブスポーク型: ひとつの拠点から複数のコンテンツを伸ばす

直線型: 目的地へとまっしぐらに誘導する

レッスン2: レイアウト

トップページ、一覧ページ、詳細ページ、フォームページからなるWebサイトがあったとして。

トップページ: そのサイトの内容がすぐわかるファーストビューを用意。

ビジュアルを押し出すかコンテンツを押し出すか広告を押し出すかはそのサイトの機能によりけり。

一覧ページ: 必要な情報(例. 美容院→店舗名、電話番号、住所、営業時間等)を配置、ここの情報だけである程度選択肢を絞れるように。

絞り込みのためのメニューや並び替え機能を設けると、さらにその検討を助けることができる。

詳細ページ: 情報自体の細かさだけでなく、その情報を見たユーザが次に取るであろう行動(例. 応募、購入、お気に入り追加等)を予測してコンテンツの配置をする。

フォームページ: ユーザが入力する手間を極力省けるように工夫(キー入力ではなく選択式、最低限必要な入力欄の可視化)

レッスン3: ナビゲーション

グローバルナビゲーション: どのページにいても表示されるメニュー。そのサイトの構造がわかるようにつくる。

その設計を考えるにあたっては、階層型、カテゴリ別、対象者別といった項目の分け方があること、

また人間の視線には決まった動き(アルファベットのZのような流れ)があるということを意識する。

ローカルナビゲーション: 各ページごとに設置するメニュー。

横並びにしたり、グローバルナビゲーションのドロップダウンメニューとして配置したり、ハンバーガーメニューのように畳み込んだり、

展開する端末のことも考えるとよい。

パンくずリスト: サイトの階層構造をユーザが把握できるように並べられたメニュー。

ステップナビゲーション: 登録や購入など、段階のある活動においていまどの地点にいるのかをユーザに示す。

そのほか、ユーザの行動を導く方法としては関連コンテンツの表示、特集ページの設置といった手段も。


そのほかかじったもの。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

70問。単語:イディオム:フレーズ = 3:3:1。

アメリカ版 大学生物学の教科書 第2巻 分子遺伝学

6.5: 細胞の減数分裂

染色体の数が増えるほど遺伝に多様性が生じる、ヒトは23対の染色体を持つため、単純な独立組合せだけを考えても2^{23}通りとなる。

組合せ?ってなったけどこの独立試行のことだってことでいいのかな?

6.6: 細胞死

ネクローシスアポトーシス。前者は損傷や栄養素の不足などによって、後者は不必要や個体への悪影響が予測されることによって。


3/11の晩御飯

納豆ご飯とお味噌汁、3割引で60円台になったキャベツメンチ×2。

3/8のつめたい夕餉 Flaskクイックスタート


3/8の晩御飯のおとも

Flaskクイックスタート

a2c.bitbucket.io

3/4の夕餉の続き。

今回ほとんどチュートリアル通りなのでさくっと、起動も前回同様python3.7 start.pyで。


ファイルアップロード

enctype="multipart/form-data" 属性をHTMLフォームにセットするのだけ忘れないでください。

そうしないとブラウザがファイル通信できなくなってしまいます。

読み切るよりも先に手を動かすのはやめようと思いました(なりました)。

start.py

from flask import Flask
from flask import render_template, request
from werkzeug import secure_filename

app = Flask(__name__)

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('アップロード用ディレクトリへのパス' + secure_filename(f.filename))
    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True)

upload.html

<!doctype html>
<title>Upload from Flask</title>
<form name="upload" action="/upload" method="POST" enctype="multipart/form-data">
    <p>Please select the file to be uploaded.</p>
    <input type="file" name="the_file"><br>
    <input type="submit" value="upload">
</form>

アップロード前

f:id:osouonna:20190309021458p:plain:w300

アップロード後

f:id:osouonna:20190309021531p:plain:w300

f:id:osouonna:20190309021547p:plain:w300

指定したディレクトリにファイルがアップロードされました!

なおファイル名の日本語部分は検閲により削除

ちなみにここでimportされているWerkzeugはFlaskの構成ライブラリのなかでも主要なひとつで、

Webアプリケーションをつくるのに便利な機能が詰まっているものなのだそう、WSGIに準拠。

今回はクライアント側で名付けられたもとのファイル名によってアプリケーションに悪影響及ばないように色々退けてくれる(つまりさっきの検閲により削除の検閲元)、

secure_filenameが使われています。

.

※参考(にしたい)リンク達

enctype="multipart/form-data"関連

フォームデータの送信 - ウェブ開発を学ぶ | MDN

enctype='multipart/form-data'ってなんだ? - MUGENUP技術ブログ

Werkzeug関連

Werkzeug Tutorial — Werkzeug Documentation (0.14)

Web Server Gateway Interface - Wikipedia

WerkzeugでFlaskを使ったPythonのWebAppをプロファイリングする

「werkzeug」でWSGIアプリをつくろう! — PythonMatrixJp

WerkzeugとJinja2の力を融合させたやつがFlaskみたいな感じなのだろうか。超魔導剣士ブラックパラディン的な


リダイレクト及び例外の発生

start.py

from flask import Flask
from flask import url_for, render_template, abort, redirect

app = Flask(__name__)

@app.route('/')
def index():
    return redirect(url_for('to_abort'))

@app.route('/abort')
def to_abort():
    abort(401)

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

if __name__ == '__main__':
    app.run(debug=True)

page_not_found.html

<!doctype html>
<h1>がんばれ!メロディー</h1>

この状態でhttp://127.0.0.1:5000/にアクセスすると、http://127.0.0.1:5000/abortにリダイレクトさせられた挙句に401 Unauthorizedのエラーが吐き出されます。鬼畜みたいな作例だ

また、/abortじゃなくて/aboutだったわとURL打ち直しても今回はabout.htmlを用意していないため、404 Not Foundのエラーとなるのですが、

f:id:osouonna:20190309031700p:plain:w300

URLは据え置きのままに表示が上記のpage_not_found.htmlの内容に置き換えられると、つまり独自のエラー画面を配置できるというわけですね。

余談ですが柴田聡子さんのがんばれ!メロディー、とても聴きやすくなっていいですね、っていうかアルバム名あまりにもずるい


セッション

前回ちょっと調べていくうちに足を踏み入れてしまったあたりだ。復習も兼ねて。

start.py

from flask import Flask
from flask import url_for, render_template, request, session, redirect, escape
import os

app = Flask(__name__)

@app.route('/')
def index():
    if 'username' in session:
        return 'Logged in as %s' % escape(session['username'])
    return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.secret_key = os.urandom(12)
    app.run(debug=True)

index.html及びlogin.html→前回と同じにつき割愛

f:id:osouonna:20190305004343p:plain:w300

/indexにアクセスすると前回と同じフォームが現れます。

このログインのほうのフォーム埋めてloginボタンを押すと、

f:id:osouonna:20190309033533p:plain:w300

遷移先のページでもusernameが保持されていることがわかる。まあ今回index.htmlにリダイレクトしてしまっているので遷移感薄いですが……。

この状態だといくら/indexにアクセスしても"Logged in……"のメッセージが出てきてしまうので、/logoutにアクセスしましょう。また最初のフォームが現れてくれます。

(ログアウトボタン作るの忘れていたのは内緒)

.

セッション使うときには秘密鍵の設定が必要みたいです。

今回はFlask.secret_keyにos.urandomで作った乱数ぶっこんで設定。

CTF的 Flaskに対する攻撃まとめ - Qiita


あとはこまごまだったり仕組み自体の理解が追いつかなかったり流石に眠かったりなのでここまで。

flask.pocoo.org

日本語訳されてるバージョンのクイックスタートだいぶ古いバージョンみたいでされてないバージョンは記法もPython3系であったし紹介されている昨日もとてもとてもなのとに気がついてしまったけどたぶん夢なので寝ます。

.

シンプルイズ奥が深い、いやたぶん見通しがいいからこそ奥まっているその様を把握しやすいのだろうか。

Djangoとか魔境めいたとこあるから……。


そのほかにかじったもの。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

今週全然手付かずなの、グラフのおかげでもろにバレる。

でもランクインしていたのでハッピー、総ユーザ数は知らんが

f:id:osouonna:20190309040308p:plain:w300

今日は単語70イディオム60フレーズ30。

アメリカ版 大学生物学の教科書 第2巻 分子遺伝学

カラー図解 アメリカ版 大学生物学の教科書 第2巻 分子遺伝学 (ブルーバックス)

カラー図解 アメリカ版 大学生物学の教科書 第2巻 分子遺伝学 (ブルーバックス)

  • 作者: デイヴィッド・サダヴァ,クレイグ.H・ヘラー,ゴードン.H・オーリアンズ,ウィリアム.K・パーヴィス,デイヴィッド.M・ヒリス,石崎泰樹,丸山敬,浅井将,吉河歩
  • 出版社/メーカー: 講談社
  • 発売日: 2010/05/21
  • メディア: 新書
  • 購入: 8人 クリック: 120回
  • この商品を含むブログ (23件) を見る

ブルーバックスのすごいやつ。

第6章 染色体、細胞周期及び細胞分裂の6.3節まで。

細胞分裂のうち有糸分裂の仕組みについて。


3/8の晩御飯

お昼たくさん食べたのでソイジョイとおもちでおしまい。

3/4のつめたい夕餉 Flaskクイックスタート / 放送大学 入門微分積分(第05回)

昨日買うたTIVOOがかわいい。音も良い。


3/4の晩ご飯のおとも

Flaskクイックスタート

a2c.bitbucket.io

これを言いたかったそれだけではじめたFlask。

いやうそデコレータの記法ちゃんとわかりたかったからがほんと

まだ全然その目的にまで理解を深められていないけれど、ルーティングとか機能ごとにファイル分けなくても、

実行するPythonファイルそのものを中心に組み上げていけるようにもなってるのが面白いなあって思ってます。

あといちいちサーバ再起動させなくてもデバッグ動いてくれててなんか認識したら止めてくれる(要設定)のとかもちょっとうれしい。

.

クイックスタートを中心に据えてぼちぼち試し、リクエストオブジェクトの項まで。

とはいえ想定する挙動をいまいち把握しきれておらず、

具体例試してるひとの記事とかパクりながら機能を把握しようと試みている。

難しい記法があるわけではないんだと思う(Python2系で書かれていることにちょっと気をつければ多分大丈夫)けどどうにもそそっかしく……。

そんなわたくしでも、とりあえず決まったusernameとpassword打ち込んだらログインできるフォームを実現するまではできました。

.

start.py(名前はflask.py以外ならなんでも良いらしい)

from flask import Flask
from flask import render_template, request, session
import os


app = Flask(__name__)


# app.routeでルーティングの制御をしている?
@app.route('/')
def index():
    return render_template('index.html')


# methodsで宣言したリクエストしか受けないことに注意
@app.route('/hello', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        name = request.form['name']
    else:
        name = 'no name'
    return render_template('hello.html', title='flask test', name=name)


@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] == 'yasen_chang' \
            and request.form['password'] == 'yasen':
            name = request.form['username']
            session['logged_in'] = True
        else:
            error = 'Invalid username/password'
    return render_template('login.html', name=name, error=error)


if __name__ == '__main__':
    app.secret_key = os.urandom(12)
    # サーバ起動
    app.run(debug=True)

HTMLまでもがめっちゃ雑だけど許されたい。

HTMLファイルは今回だとstart.pyと同階層にtemplateってディレクトリ構えてその中に放り込んでおけばOK。

index.html

<!doctype html>
<title>Index from Flask</title>

<form action="/hello" method="POST">
    <p>hello</p>
    <input name="name">
    <input type="submit">
</form>

<form name="login" action="/login" method="POST">
    <p>login</p>
    username:<input type="text" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="login">
</form>

hello.html

<!doctype html>
<title>Hello from Flask</title>

{% if name %}
    <h1>Hello {{ name }}</h1>
{% else %}
    <h1>Hello World!</h1>
{% endif %}

login.html

<!doctype html>
<title>Login from Flask</title>

<h1>Login {{ name }}</h1>

この状態でpython3.7 start.pyみたいにPythonファイル実行し、

http://127.0.0.1:5000/ にアクセスするととりあえず下記のフォームが出てくる。

f:id:osouonna:20190305004343p:plain:w300

上図のように入力した状態でhelloの方のsubmitボタン押すとこんな感じ、

f:id:osouonna:20190305004414p:plain:w300

loginの方のsubmitボタン押すとこんな感じ。

f:id:osouonna:20190305004435p:plain:w300

たいした挙動でなくとも、リクエスト内容に応じた表示がなされるとじんわりうれしい。

※参考にした記事などなど、まとめてて気がついたけどassert文のあたり立ち返れてないなあ

Flaskを触ってみる 1 - Doge log

[Python] assert文で超お手軽テスト - Qiita

はじめての Flask #2 ~POSTを受け取ろう~ - Qiita

python flaskねた - holly's wiki

ちょっとPython --Flaskでlogin!|donguri|note

.

もうちょい続きがあるようなのでちゃんと咀嚼しながら仕組みもわかっていきたい。


放送大学 入門微分積分(第05回)

vod.ouj.ac.jp

微分法の基本公式。だいたいネイピア数がすごい。対数もすごい。

媒介変数表示の微分、媒介変数tを介してxとyとがあるとき、xとyそれぞれをtについて微分してただけなんだけどなんであれで円について考えていけるのかあんまりわかってない。

【基本】媒介変数表示 | なかけんの数学ノート

とりあえず曲線を表現しやすくなるものであると把握。


そのほかのつまみぐい。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

日付変わっちゃったからうろ覚えだけど40問くらい、単語問題。


3/4の晩ご飯

納豆ご飯とインスタントなお味噌汁、卵が新鮮なやつだったのでまずまず幸福。


コードを書いた1日は早い。