Hatena::ブログ(Diary)

くらげのChangeLog

2017-03-14

[]スタートレック:The Original Series(宇宙大作戦

視聴。

最初のスタートレックシリーズ。全3シーズン、79話からなる。

やはり最近のスタートレックに比べると話の筋が単純なものが多いという印象だった。

2017-03-12

[]斉藤 由美 「宇宙の瓶づめと猫と箱庭」

読了。

第3回『このマンガがすごい!』大賞。

シュールな魅力を持つ、詩集のような漫画作品。ジャンル分けができないというか、そもそもストーリーというものが希薄で、物語が形を成していない。素人が漫画家にあこがれて描いた落書きのような荒っぽさと、読者をグイグイ引き寄せる不思議な魅力が同時にある。

カットされていない宝石の原石のような漫画。

2017-03-11

[]GAS(Google Apps Script)をgithubで管理するuserscript

https://techblog.recruitjobs.net/development/maneged_google-apps-script_by_github

GoogleAppsScriptの編集画面に以下の機能を追加してくれるuserscript。

レポジトリ選択

・ブランチを選択

・Pull:サーバレポジトリの内容取得

・Pushl:現在の変更内容をコミットして、サーバレポジトリにPush

[]google apps script の 「Jail already initialized - returning」javascriptログについて

google.script.runサーバ関数を呼び出すと必ず出力されるログで、別にエラーとか問題があるとかではない。

以下のような非常に単純な処理でも、ボタンを押すとこのログが出力される。

function doGet() {
  return HtmlService.createHtmlOutput("<button onclick='google.script.run.serverFunc()'>button</button>");
}
function serverFunc() { Logger.log("called."); }

[]藤本正二「終電ちゃん」

鉄道の終電にまつわるエピソードを描いていく漫画。基本的には現代日本と同じだが「終電ちゃん」という終電の精霊のようなものが存在しており、それが普通に受け入れられているという一種独特の世界観をしている。

終電ちゃんは各路線ごとに特徴的なコスプレをした女の子のような姿をしているが、路線が生まれてからずっと年を取らない存在だったり、運行中に列車の屋根の上で過ごしたり、宝石のダイヤを知らなかったりと「人間のようだが、人間とは違うもの」として描かれておりその距離感が素晴らしい。

雑誌で読んだ時は終電間際のバタバタを起点にした人間ドラマものだと思っていたが、コミックスでまとめて読むと鉄道ウンチク漫画という側面もあることに気付かされて、その意味でも面白かった。

2017-03-10

[]Google Apps Script で、SpreadSheet は関数実行が終わるまで同じ内容しか取得できない→SpreadsheetApp.flush()すれば取得できる

GoogleAppsScriptでCometの仕組みを使ったチャットを作ってみようかと思ったらこの罠にハマってしまった……。

var ss = SpreadsheetApp.openById(SPREAD_ID);
var sheet = ss.getSheets()[0];
Logger.log(sheet.getRange("A1").getValue()); // "あいうえお"が取得できるとする

Utilities.sleep(10 * 1000); // この待ち時間の間に、別のタブに開いてあるスプレッドシートでセルの内容を変更する "あいうえお"→"かきくけこ"

Logger.log(sheet.getRange("A1").getValue()); // "かきくけこ"ではなく、"あいうえお"が取得されてしまう


いろいろ試したら

SpreadsheetApp.flush();

……という、本来は保留中のすべてのスプレッドシートの変更を適用するためのAPIを実行すると、即座に他のユーザが更新した内容を取得できるようになることが判った。

この対策を入れるとComet方式のチャットを作ることができた。

名前はflushだがリフレッシュ的な動きもしてるっぽい。

上の例だと、以下だとうまくいく。

var ss = SpreadsheetApp.openById(SPREAD_ID);
var sheet = ss.getSheets()[0];
Logger.log(sheet.getRange("A1").getValue()); // "あいうえお"が取得できるとする

Utilities.sleep(10 * 1000); // この待ち時間の間に、別のタブに開いてあるスプレッドシートでセルの内容を変更する "あいうえお"→"かきくけこ"
SpreadsheetApp.flush(); // ●この行を追加

Logger.log(sheet.getRange("A1").getValue()); // ●"かきくけこ"が取得できる!

[]Google Apps Script で、Logger.log の出力タイミングは関数実行が終わった後である

関数の実行途中に Utilities.sleep(100 * 1000); とか書いてログを見ようとしてもログは書き出されていない。実行が完了したあとでないと見えない。

2017-03-09

[]Google Hosted Libraries

https://developers.google.com/speed/libraries/

googleのCDNライブラリjQueryなどがある。

例えば

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

[]BLOB

http://e-words.jp/w/BLOB.html

Binary Large OBject。

データベースのフィールド型のひとつで、バイナリを保存できる型。

また、HTML5バイナリを扱うときに使うクラスの型の名前としても利用されている。

http://www.w3.org/TR/FileAPI/