14:24:57 # Life 今月読んだ本の読書メモ。
21:04:26 # Life 確定申告の儀。今年もとりあえずなんとかやっつけた。先週完了したつもりだったけど修正して再度提出。期間内なら何度提出しても良いはず。 毎年ある程度悩んでいるはずなんだが毎回メモが散逸している。 今回まずマイナンバーカードをQRコード認証をやろうとしたらChromeOSのChromeからはできないと進むことができなかった。推奨環境ではないのはわかっているが 試すこともさせないとはなんでだろうか。 最近は警告はするが使わせてくれるようになっていた気がしたが、とりあえずID/パスワード方式にして手動で色々と入力。 終了してからはとりあえずここ数年分の保管していたよくわからない銀行からの通知とか、控除の基準に達しなかった医療費の領収書とかを廃棄しておいた。
10:50:20 # Life 国外転出特例対象財産とはというのを調べていたら定義に有価証券が出てきた。 有価証券ってなんだ。NTAによる一覧がでていた。 なるほど。わかるようなわからないような。 12月31日時点で解約できないものについてはどういう扱いなんだろう。
10:42:20 # Life Elementのdataset property. 久しぶりに見るとなんでだったか思い出せないやつ。 HTML Elementにはdatasetというプロパティーがあって data-ではじまるAttributeをDOMStringMap形式でもってくれる。なぜその変換をしてくれるのか、Snake CaseをCamelCaseに変換する必要なんてあったんだろうか、Overkillなんじゃないのか?Attributeへのアクセスではだめだったのだろうか?という疑問がわくのだが、なんでこんなものがあるのか?
14:54:57 # Life Third Party Cookieの警告が出まくっているので修正するのか。 しらべたけどよくわからない。何が壊れるんだろうか、面倒だな。 Chrome Extensionはウェブアプリのようでウェブアプリではないので、Third Party Cookieが使えてほしいと思うんだが、 Third Party Cookieが使えてほしい場合に強制する方法とかあるんだろうか。 とりあえずChromeに--test-third-party-cookie-phaseoutをつけて再起動してからアプリケーションを動かしてみたけどアプリケーションとして動作しているっぽい。 これでいいんだろうか。
16:54:04 # Life trampでControlMasterの設定を使う。 なんだかTrampが遅いとは思っていたのだが、どうやらTrampは何も設定しないと既存のControlMasterなどの設定を無視するらしい。 (setq tramp-ssh-controlmaster-options "")を追加した。 これで自分で設定したControlMasterを再利用するようになり、すでにある接続を再利用してくれる。 Emacs Tramp側で使っていた設定がどれくらいのものかよくわからないのだけれどもこっちのほうが再利用される期限とかも長いっぽい。 これ以外にも色々いじったけどこの設定が一番高速になった気がする。
09:07:58 # Life Google DocsのGASで自動でエントリーを追加する。 日記を書いていたら毎回毎日の日付を入力するの面倒だなぁ、 毎週の会議のその週のエントリーを追加したりするのが面倒だとおもいませんか?僕は思うので、自動化しました。 onOpenメソッドを用意しておくと開いたときに起動するスクリプトが用意できて、その中で日付を確認して追加することができます。 例えば日記ドキュメントを用意しておくと最初の行に最新の日付がついていなかったら追加するというのはこれでできます。あら便利。
/** * @OnlyCurrentDoc */ function onOpen(e) { DocumentApp.getUi().createAddonMenu() .addItem('Add today', 'addToday') .addToUi(); addToday(); } /** * Add today's date string to top of the document. */ function addToday() { if (!LockService.getDocumentLock().tryLock(10000)) { Logger.log("Could not get lock"); return; } var body = DocumentApp.getActiveDocument().getBody(); var paragraphs = body.getParagraphs(); var firstParagraph = paragraphs[0].getText(); var d = new Date(); var todayDate = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate(); Logger.log('today is %s and your doc says %s', todayDate, firstParagraph); if (todayDate != firstParagraph) { body.insertListItem(0, "").setGlyphType(DocumentApp.GlyphType.BULLET); body.insertParagraph(0, todayDate).setHeading(DocumentApp.ParagraphHeading.HEADING1); Logger.log('inserted today!'); } }
しかしLockServiceを使っているんだけど同時に複数実行するとドキュメントの変更が反映されるまえにドキュメントを参照しに来る気がする。
09:20:05 # Life Emacsで週報を書く。 ここ数年自分で週のまとめをつくっているのだが、週の最後に書くんじゃないくて毎日アップデートしている方がよいということがわかった。今週何をするかというのを毎日更新していって結果として週のまとめになっているという形式。日報形式も試したんだけど僕の場合は日報は細かすぎてなんか達成感がない。 そこで週報をかんたんに書く方法を考えるんだけど、Markdownを決まった場所においてある手元のファイルで書くというのに落ち着いた。そしてファイルを細かく分けるのも結構面倒で、巨大になるのも微妙で、結局年ごとに分けるということにした。elispでいうとこんな感じ。多分色んな人がやっておるんじゃろうなとおもうがこれがとりあえずシンプルでよかった。
(defun snippet () "Open up personal weekly snippet summary file. Creates file in ~/personal-weekly/YEAR.md" (interactive) (find-file (concat "~/personal-weekly/" (format-time-string "%Y") ".md")) (goto-char 1) (if (re-search-forward "^## Weekly notes" nil t) t ;; Insert a title (insert "## Weekly notes\n\n")) (beginning-of-line) (next-line) (let ((title (concat "## " (format-time-string "Week %W ")))) (if (re-search-forward (concat "^" title) nil t) ;; there was a match t (insert (concat "\n" title (format-time-string "%m-%d\n\n") "- Health\n- Family\n- Learning\n- misc\n")))))
06:41:43 # Life 気づいたら2月になってしまった。Rust関連のDebianパッケージいじろうかなと思ってはや何ヶ月たったんだろうか。環境がめんどくさすぎるのでなんとかしないと。