生物分布観測報告システム考2(GASとGithubに寄生しよう!)

やあ (´・ω・`) ようこそ、セルフまとめへ。 このテキーラはサービスだから、まず飲んで落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このまとめタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って(という建前で)、このセルフまとめをまとめたんだ。 続きを読む
1
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

「生物分布観測報告システム考1(お米の国のWebサービスに寄生しよう!)」をトゥギャりました。 togetter.com/li/1466559

2020-02-10 00:42:07
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

いっそgithubに全面寄生するか? フルオープンでデータはgitでプッシュ。 プルリクはgithub actionで自動マージ そう言う感じで自律的にデータを集めて集計するリポジトリを構築する的な。 出来るはず。フルオープンなので個人情報は勘弁してとは思うけど、そんなのはじく余裕はなさそう。

2020-02-05 12:56:27
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

天下のMS子会社だから永続性の心配は無いが、問題は虫屋とかギフハブとか言っちゃうユーザーはどうやって使うのよこれ的な面を何とかしなければいけない。 githubpagesにUI設けて接続ですかね。ブランチ版バンバン切るのをデータ保存として。うーむ。 多分無料枠awsとか噛ませないとムリポ

2020-02-05 12:59:37
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

あとお米の国に制裁食らってる国のIPアドレスからは見れないし、ドメインがその国だと垢バン食らうという。 一方で中華な大陸からは金盾越しに見えるというGithub。 うーむ。リポジトリに有る限りは容量無制限なのかな・・・リポジトリが無制限、GithubPagesが1GBまでと言うのは見たが・・・

2020-02-05 23:36:34
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

うーむ。 とにかく情報は欲しいがネットワーク転送量やらストレージ代を払わずに済む方法。 一方でレイテンシーを損なわずにデータ永続性に優れた方法。 情報は原則公開。 これが求められる。

2020-02-05 23:44:50
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

UIはGithubPagesに設けて、 ・AWSの無料枠にデータを投げる ・そのままGithubにコミットプッシュ ・GithubActionで情報を整理し、再コミット、GithubPagesに公開。 という流れかな。 リポジトリが大量に作れるなら、リポジトリ自体をキーに加えても良いかもしれない(垢バン食らいそうやな)

2020-02-05 23:59:19
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

メリットは何かといえば、やはり天下のGithubがストレージになるので、見放題だよ! バージョン管理も出来るよ! フォークもバックアップも自由だよ! マジでこの点だけでも涙が出てくるな。 これは有りかもしれない。人類の観測データがGit管理でと言うのは夢が有るな!

2020-02-06 00:01:46
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

いやまあ、Githubと交信できるだけなら、GoogleAppScriptsでもええやがな。AWSいらんがな。 お、コレは一個何かできるかもしれませんね。 必要なのはメールアドレスだけ! なんだかやる気が出てきたぞ!

2020-02-06 00:06:32
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

とは言っても、GitをGASで使えるのか?という根本的な駄目な点が・・・JSでGitでもだめやろうなぁ・・・ やっぱりAWSか すごく高く付きそうな予感がひしひしとする。 リポジトリクローンしてコミットするまでは良いとして、それをプッシュする所があーあーって感じで。 でも投稿時だけだからいいのか

2020-02-06 00:27:31
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

流石にGithubでWebシステム組んでる人間を探すキーワードを思いつかない・・ プログラム開発用だからね、もうキーワードが全部それで埋まってるの。 先達の偉業を見たいのだが、どうすればいい? うーむ。

2020-02-06 01:11:32
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

肝はGithubを公開ストレージに使おうぜなので、 raw.githubusercontent.com のドメイン配下にダイレクアクセスが可能である以上、 URLさえ正確に記述できればストレージとしては使える。 入力がGitでPushなのが面倒くさいし、速度は出ないけど。

2020-02-06 01:36:01
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

github.com/isomorphic-git… おうっふ、やっぱりGithubには使えないのか・・・ ※GASだと動くんじゃね?疑惑は有る。 がES5じゃそもそも動かんじゃろうという気がしなくもない。

2020-02-06 01:43:51
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

お、 matsubara0507.github.io/posts/2017-05-… GithubAPIをコールすればいいのか・・・なるほどなるほど。 コレならマジで実装可能な気がする。 おおお、いいねぇ。

2020-02-06 01:44:48
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

コミットが出来れば問題ない。 フィルタリングはGASで出来る。 画像もBASE64で圧縮して。 でも消したい場合には対応できないね。 歴史改変するしかない。 なので、データ投稿時にブランチ切ってコミットマージか。

2020-02-06 09:49:11
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

githubとGASを組み合わせてデータ容量無制限のbbsを作ろうぜ、計画。 最大の難関はレイテンシかな。投稿してから反映されるまでの時間が読めない。 ネックはapiの呼び出し回数リミットだと思われる。 githubは最大5000回毎時なので それ以上の書き込みはアカウントを分けるしかない。

2020-02-06 12:20:35
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

2ちゃんの板みたいなbbsはまあいいんだよ。 問題は集計処理どうやんの?という問題はある。 基本、全部データを取れるので、君gitクローンしてやな、自分で集計してや。が成立するといえばする。 うん。 でも出来れば、WEBページのスマホ上で完結させたいというのがある。

2020-02-06 12:25:10
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

まず、githubに実証実験プロジェクトを作ろう。 でGASはバッファリングとバリデーションのみ存在。 即座にgithubapiでコミットを実施するが非同期で。 データは1レコードをjwtで保管、クライアント側で生成。 作者IDとライセンスも込で。 ユーザー情報もパスワードもgithubにフルオープンやなぁ。

2020-02-06 12:35:14
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

フルオープンにした際に、その独自性を維持できるか? ユーザーIDは平文公開状態になるので、存在の確認は出来るとしてパスワードについてはハッシュ+2要素認証TOTPとかか。ってTOTPのキーもフルオープンなんだよなぁなりすませる。まあ、パスワード平文からのハッシュなら tech.buty4649.net/entry/2015/05/…

2020-02-07 01:33:55
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

平文→ハッシュ→一致→パスワード認証OK→ 平文→別Saltかけて→再ハッシュ→TOTPやってみようか かなー。 うーん 公開鍵とかで署名もしたいが、秘密鍵を置く場所がない。 GASに置くしか無いのかな。署名のチェックもGAS任せになっちゃうね。

2020-02-07 01:37:03
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

さて、刑事罰が課される違法情報(児童ポルノ画像)と刑事罰が課される著作権法が存在する以上、人生を防衛するために免責を得られるように消す場合を考慮しなくてはいけない。 Gitのリポジトリから消す。そのコミットがあったことさえもすべて。 ※Cloneされた場合は考慮しない。しらんがな。

2020-02-07 01:40:13
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

Gitからコミットを消す qiita.com/kamorits/items… これをGASから打ち込む必要が有る。 いや消した形跡自体はあっていい。 問題はデータがコミットログ上からも追えない状態で消えていること。 しかしGithubAPIから出来るのか?うーむ。

2020-02-07 01:50:07
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

developer.github.com/v3/git/commits/ うん、コミット作成しか無いね。 じゃあ、打ち消しコマンドを含めたコミットを入れてGithubActionでgitコマンド経由で消す処理を入れないと駄目っぽそう。 まあ、出来るっぽいのはわかった。 後は、履歴管理まで出来れば完璧だ。 でもどうやってやるんだろうか。イメージが

2020-02-07 01:58:56
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

Session管理はどうするか? jsにcookie発行させて順当だが、iosではTPAで即消される。 ブラウザのパスワード記憶に頼るのか? なおドメイン規制は働かないのでcookieでは他のリポジトリから覗き見られてしまう。 見られても良いようにするか? 単純にデータ記録だけならlocalstrageなんだけど。

2020-02-07 09:53:45
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

要件は、 ・画面リロードを噛まされてもログイン状態を維持する ・他のリポジトリのGithubPagesからjsでiframeを展開されてもセッション情報が漏洩しない なんだが、前者簡単、後者は難しい 今のブラウザのデータ境界がドメイン基準なので、同じドメイン配下では無理。 この前考えた方法で行くか。

2020-02-08 00:42:08
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

・ブラウザ起動時ログイン認証する ・ログイン認証時、認証キーを計算、さらにハッシュ値を計算 ・ハッシュ値をURLのhashに書き込む ・同じハッシュ値をパスの一部分としたURLをiframeで開く ・iframeのURLパス配下Cookieに期限付きで認証キーを書き込む ・リファラー全面禁止 qiita.com/wakaba@github/…

2020-02-08 01:14:35