『Spherize』を書く火曜日

『Spherize』の更新 『僕らの生存戦略』執筆(TCS) NLの執筆(TCS) 8:00 おはようございます。今日は『Spherize』の更新日なので、それを書いて、あとは進行中の企画案を二つ進めます。だんだん忙しくなってきていますね。 ただ、今日は妻がお休みなので、午後からはお出かけデーになるかもしれません。 モーディング・コーディング 朝一にダッシュボードが表示されるのはなかなか良いです。 直近のスケジュールはこれこれです。直近のプロジェクトはこれこれです。とターミナルに出力してもいいかもしれません。それだとより秘書っぽいですね。 なんであれ、「目に触れる・目に入れる」が大切だと感じます。 こうなると、次なるステップは、作業記録→ダッシュボードです。作業記録に何かを書けば、それがダッシュボードの素材となるテキストファイルに転記される。 そういう処理を書く場合、大切なのは処理のタイミングです。普段は、作業記録に記述を書き足すたびに、makeを走らせて共有ファイルを作成しているのですが、それと同じように処理してしまうと、重複が発生してしまいます。毎回原本ファイルのすべてを変換しているからです。 作業記録は、記述をさかのぼって追記、変更することがあるので、「新しく追記した部分だけを変換する」方式はうまくいきません。 ということは、作業記録から共有ファイルを作る変換と、ダッシュボードの素材を作る変換は別に考えたほうが良さそうです。 作業記録は、一日経てば後から編集することはなくなるので、ようは一日経った後に処理すればいいでしょう。つまり、一日を「クローズする」タイミングです。 というわけで、以前と同じように、一日の終わりにそのコードを実行する、たとえばJuizにお疲れさまと言う(英語でお疲れさまってなんていうんですかね、とりあえず goodby juizとか)ことでそのコードを実行する作戦も思いつきました。 が、よくよく考えれば、次の日の朝にhey juizというコマンドを実行するわけですから、そこで処理してもいいのでは、と思い至りました。ようは、「次の日のダッシュボードが表示される」までに処理が実行されればいいわけで、Hey juizは、まさにそのぎりぎり直前のタイミングだと言えるでしょう。 まず、その日の作業記録ファイルがあるかを確認して、存在していなければ、昨日の作業記録ファイルの処理も終わっていないと判断して、そこで処理を走らせる、というやり方ができそうです。 あるいは、処理を終えた原本ファイルは、eYYYYMMDDDのような名前にリネームしておくことで、処理済みかどうかを見分けられるようにする手もありますね(識別子は頭ではなく後ろがいいかもしれません。ソート的に)。そうするなら、Hey juizとは別のタイミングで処理することもできそうです。 つまり、最初に想定したgoodby juizで処理してもいいし、それを忘れても、hey juizで処理してくれる(処理してあるならスキップする)のような。おお、結構有能な秘書っぽいですね。 まずは、中核となる、原本ファイルから記述を抜き出して素材ファイルに転記するpyファイルを作り、後は、それをさまざまに呼び出せるように設定すればOKでしょう。 というわけで、今日は(忙しそうなので)ファイルを作るだけに留めます。 「convertlogtodata.py」 というファイルを作りました。中身は明日以降です。 作業記録: 現状の作業記録のカタチが少しずつ分かってきた。一つはh3で作られるブロックの構造。もう一つは、まだ記述のスタイルが定まっていないけども、単行だけで存在するインラインの構造(たとえばメモなど)。 これをどう整えて行くかはわからないけども、なんとなくバレットジャーナルと近しい雰囲気を覚えた。 現状、インラインの構造はそのまま、思いついたタイミングで書き込んでいるが「あとで読む」のように一箇所にまとめておくのでも良いかもしれない(でないと、読むととっぴな感じがするので)。 『Spherize』: ゆうびんやさん側の連載が終わったので、私の方もそろそろ締めに向かいたいところです。 * * * 1時間ほどで書きました。まとめの回です。 第十回:自分という圏を紡ぐ|倉下忠憲|note 9:00 noteのエッセイコンテスト あなたが考えるやさしさとは?Panasonic×noteで、投稿コンテスト「#やさしさにふれて」を開催します!|note公式|note 特に賞には興味ありませんが、テーマがちょっと気になりました。 あとで読む I use my Public Folder app on my Mac to keep local folders in sync with locations on S3. It works flawlessly, and perfor… Nigel Shafran’s Notebooks ほぼ日手帳でなくなる年 「Apple One」が提供開始――サブスクリプションサービスをお得に利用 Amazonにアリの一穴 EC業者の駆け込み寺 ヘイとBASE :日本経済新聞 英単語: heavy-duty 酷使に耐える、頑丈な

大きな執筆を小さく進める月曜日

『僕らの生存戦略』の執筆 NLの執筆 substackを書く 9:00 おはようございます。本日は、二つのプロジェクトの執筆と、できれば小さい文章をいくつか書きたいところです。 メモ: ライフハックニュース的なものを書く場所 読んだ本の書評ではなく、本を読んでいく記録 LAは、情報のまとめ場所として割り切る ダッシュボードと作業記録の連携 ScrapboxのFeedをIFTTT経由でテキストファイルにする 『テキストファイルの思想史』という本が読みたい Obsidianの良いところを書く あとで読む: 別の語へ波及する閃光 mini5の時代が本格的に到来.デザイン秀逸で使い勝手も抜群なmini5:PLOTTERのmini5 5ドルのシェイクにこだわる『パルプ・フィクション』 『マインドセット「やればできる! 」の研究』(草思社) - 著者: キャロル・S・ドゥエック - キャロル・S・ドゥエックによる本文抜粋 iOS 14の「メモ」アプリで4つの新機能を使いこなそう 受刑者立ち直り、お薦め本で支援 ATSUSHIさんら ローソンが全国の外食企業35社とコラボした商品を発売 地域の名店を元気に ファミマ、クックパッドの商品を受け取る宅配ボックスを70店舗に設置 相乗効果見込む ミニストップが「極小コンビニ」を展開 オフィスや工場内で商品を販売 高速道路からの風景 A Dylan Thomas Notebook 最近気になったWebサービスを11個紹介します(2020年10月版) 360度ぐる~り「本棚劇場」 角川武蔵野ミュージアム 答えが出ないランダムノート Evernote ベーシックへの変更について | Evernote 日本語版ブログ 本に囲まれ、読みふけるぜいたくを 築300年を改修したホテル「蔵書の館」オープン | 神戸新聞 Why I Switched: A deep dive into Roam vs.

メルマガを仕上げて本と戯れる日曜日

メルマガ読み返し メルマガ配信予約 ジュンク堂に行きたい 8:00 モーディング・コーディング 朝一に、hey juizを叩いたらエラー。そんなファイルはないぞ、と言われた。 よくよく考えたら今日はもう11月で、ログが保存されるフォルダが10/から11/に変わっていなければならないが、それが存在しない。 Finderで11月のフォルダを作れば即時解決だが、手作業を入れておきたくないので、コードに書いておく。 日付を扱うモジュールの関数として。 1 2 3 4 5 [code] def checkMonth(): mPath = "/Users/Tadanori/Dropbox/dailylog/content/posts/" + ty + "/" + tm if not os.path.isdir(mPath): os.mkdir(mPath) これは月しか扱わないので、年のチェックも必要。別の関数にしてもいいが、どちらにせよ、このコードは毎回の起動時に確認する必要があるから、checkDateとでもして(月替わり、みたいな英語がいいかもしれない)、年と月の両方を確認しておくとよさそう。 1 2 3 4 5 6 7 8 [code] def checkDate(): yPath = "/Users/Tadanori/Dropbox/dailylog/content/posts/" + ty if not os.path.isdir(yPath): os.mkdir(yPath) mPath = "/Users/Tadanori/Dropbox/dailylog/content/posts/" + ty + "/" + tm if not os.path.isdir(mPath): os.

メルマガを書き、冬支度をする土曜日

メルマガ(前半)を書く メルマガ(後半)を書く メルマガ(はじめに)を書く 9:00 おはようございます。今日は土曜日なのでメルマガを書きまくります。 あと月末ですが、それよりも寒さへの備え(ストーブの清掃など)を優先したいですね。 モーニング・コーディング 昨日考えた機能を実装していきましょう。 まず、ファイルが存在するかどうかを確かめます。 pythonでファイルの存在を確認する - Qiita 1 2 3 [code] #ファイルの存在を確認する print(os.path.isfile(fpath)) たぶんこれでいけるでしょう。で、これを使ってIfを書けばOKなはずです。 もしファイルがあるなら、ファイル作成処理をスキップするか、「ファイルがありますが、作成しますか?」を尋ねるか、まったく別の処理に分岐するかすればよいでしょう。 とりあえず、明日はif文を書きます。 あとで読む Exceed Notebook Review Dot Grid Journal at Walmart - Notebook Stories 「Evernote 10.1」iOS向け最新版をリリース。検索結果でオプションを並び替えられるようになるなどの機能追加といくつかの問題点の修正 | moshbox Evernote、素早くノートやスクリーンショットを取れるメニューバー常駐型のコンパニオンアプリ「Evernote Helper」を導入したEvernote for MacをMac App Storeでリリース。 | AAPL Ch. 学術会議問題の核心 菅政権が目指す恐るべき「反知性主義的統制」 最注目の政治学者が特別寄稿 白井聡 - 毎日新聞 10:00 メルマガ(前半)を書きます 今回は読書週間にちなんだ特集号にしようと思います。 * * * 一時間ほどで2000字ちょっと書きました。 11:00 メルマガ(前半)を続けます * * *

シゴタノ!を書く金曜日。

シゴタノ!原稿執筆 『僕らの生存戦略』1000字執筆 NL 1000字執筆 妻の病院付き添い 8:00 本日は金曜日なのでシゴタノ!です。前回の続きとして『独学大全』を読み込んでいく記事になりそうです。 あと本日から、プロジェクトNLを書き始めます。いったい何をどう書けばいいのか全然分かっていませんが、とりあえず何かを書き始めます。 午後からは、妻の病院の付き添いがあるので、午前中に頑張って進めましょう。 作業記録:テンプレート化の拒否 どうせ毎日書くのだからと、たとえば「モーニング・コーディング」の部分も作業記録作成時に自動的に入力させておこうかと思ったけども、昨日はコーディングではなくてリーディング(読書)をしたので、やっぱりテンプレートにしない方がいいなと思った。 リーディングでなくても、ライティングとかランニングとか、いろいろできる。朝一に時間をとって何かをする、ということが大切なのであって、「朝はコーディングをしなければならない」となると、少し違う。 いや、そこまでの強制力はないのだけども、コーディング以外の選択肢があらかじめ抑制されているのはやっぱり「行きすぎ」な気がする。 モーニング・コーディング 行頭に「¥」がついている行は、共有ファイルにはうつさない処理ができたので、次は変換に乗り込んでみます。 まずは、最近よく使っている、Hugoでコードを表示するためのショートコードが覚えられないので、それを変換するためのコードを書きます。 *そのままショートコードを書くと、それがHugoで処理されてしまうので日本語にしました。 1 2 3 4 5 6 7 8 9 10 11 12 [code] newbody = [] for n in l: if (re.match(r'^¥', n)): pass if (re.match(r'^\[code\]$',n)): newbody.append('ここにショートコードの開始を') if (re.match(r'^\[/code\]$',n)): newbody.append('ここにショートコードの終了を') else: newbody.append(n) 以下のような感じです。match(r'^[code]$'の部分は正規表現ですので、気になる方はぐぐってください。 おそろしく単純な方法で書きました。変換したいものが増えるほど、ここが長大になっていく仕様ですが、それはまあ仕方がないですね。最終的には関数にして、リストを渡せば、変換済みのリストが返ってくる形にするのが良いでしょうか。 あと、朝一にダッシュボードが自動的に開くようになったので、たとえば、そこに過去の作業記録を表示させることもできそうです。つまり、振り返りが捗りますね。 内容をピックアップして表示させてもいいし、一行タイトルだけをいくつか並べてクリックできるようにしてもいい。 今、ここまで書いた分をアップロードしようとして、makeコマンドを履歴から叩こうと思ったら、間違って一つ前に走らせた「hey juiz」をうっかり叩いてしまい、そのまま実行されて、今日の原本ファイルが上書きされてしまいました(つまり白紙に)。 幸いDropbox上のファイルだったのでバージョンで復帰できましたが。 プログラミングでよくある「ファイルの存在を確認し、存在していなければ作成する」という手順が必要ですね。あるいは、どこかでキャンセルできるようにするか。 TODO:原本ファイルの存在を確認してから上書きする 9:00 まずはシゴタノ!を書きましょう。 『独学大全』を読み返しながら、記事を書いていきます。 * * *

うちあわせCastと執筆スタートな木曜日

うちあわせCast収録 NLプロジェクトの進め方を検討→結果をメールする かーそる第四号の原稿を読む 10:00 おはようございます。今週は好例のうちあわせCastです。それ以外にも新企画の進め方を決めたり、いくつか細々したタスクが山盛りです。頑張っていきましょう。 散歩をしてアイデア巡り * * * 次の本をどう書いていくのか、どんなことを書くのかを長めの散歩をしながら考えておりました。 モーニング・リーディング 今日は朝から『私の生活技術』を読みます。 「休息する技術」と「指揮する技術」を読みました。 どちらも、知的生産系の本ではあまり出てこない話題で、しかも納得いくことばかりでした。 11:00 妻の昼食準備 12:00 コーディング 日付を扱う関数の整理。 1 2 3 4 5 def getTodayDate(): return td.strftime("%Y-%m-%d") def getIOSformatDate(): return now.isoformat(timespec='seconds') 以上を書いて、すべての日付処理をモジュールの方に移動できました。 そうすると、もともとコードでimportしていたモジュールが削除できます。同じpyファイルに多様なモジュールをimportしている状態よりは、モジュールに機能を持たせ、その機能に合わせたモジュールをインポートする方がコードとしても自然で、メンテナンスがしやすいですね。 12:00 かーそるの原稿読みを進めます 共有してもらった原稿を確認のため読みます。確認といっても正否を判断するとかではなく、誤字脱字のチェック程度です。 DONE:原稿提出確認表をScrapboxに作ること 非常に個性的な原稿ばかりで、「これをまとめて一冊の雑誌に仕上げる」という難業が待ちかまえているのが予見されます。楽しい仕事です。 方法を肯定すること 「教養のない人」がビジネス書を読むと、「命取り」になりかねない理由(読書猿) | 現代ビジネス | 講談社(5/6) あなたの方法で良いんです – R-style その人の方向を肯定することは、(存在としての)「その人」を肯定することである。 13:00 NLをいかに進めるか 新しい企画案は、どのように執筆を進めていきましょうか。 現在試している『僕らの生存戦略』の進め方もあり、とりあえずこれまでと同じようにではなく、新しい進め方を試していきたいところです。 企画案のときもそうでしたが、「パスを長く持たない」が一つの(進め方の)テーマになりそうです。 うちあわせCastの準備を進めます 15:00 収録終わりました 編集も終わり、公開されました。 第四十八回:Tak.さんとセルフパブリッシングで本を売るために大切なことについて by うちあわせCast • A podcast on Anchor

病院&企画案の練り直しな水曜日

『僕らの生存戦略』の1000字執筆(TCS) 企画案の練り直し Slackの招待 9:00 おはようございます。本日は午後から心療内科なので、大切な仕事は午前中に終えておきましょう。 あと、企画案のリテイクに取り組みたいと思います。個人的にむしろここからエンジンがかかる感じです。 モーニング・コーディング 原本ファイルから共有ファイルへの変換時に、一行だけスキップするやり方を考えてみます。 単純にやるのなら、正規表現で、マッチする行だけを削除すればいいのですが、他の変換作業を行う場合に、そのやり方だとうまくいきません。 取得した行をループで回していくのが良さそうです。 テストしてみる。 原本ファイルではこうなっています。 しかし、Webページではどうでしょう。あ〜ら不思議、その記述がありませんね(おおげさ)。 1 2 3 4 5 6 7 8 9 10 11 #inputPathの中身を取得 with open(inputPath) as f: l = f.readlines()[1:] #inputの中身を変換する newbody = [] for n in l: if (re.match(r'^¥', n)): pass else: newbody.append(n) こんな感じで、中身を取得して、一行一行取り出し、行頭に¥がある行は放置する、という書式です。もし必要ならば、この行を別のファイルに追記することも可能になりますね。 これで、私の小遣いメモをここに統合して記録できるようになりました。 あと、日付関数の共有化がすごく中途半端なところで終わっているので、明日はそれを続けたいところです。 作業記録について: 検索で十分、という話を以前考えた。ファイルをいちいち作る必要はないのではないか、と。 しかし、たとえば、朝一のダッシュボード作りで、そうしたデータを使う場合は、別ファイルを作っておいた方が処理がしやすい。 あと、たとえばiPhoneからそれらのデータを抜き出してみたい場合は、iOS版のVS Codeはないので、非常に困難になる。 ということは、以下の要件を満たすものは、別ファイルに抜き出すという方針で良いのではないか。 ダッシュボードで表示させたい情報 iPhoneから確認したい情報 要検討、である。 10:00 『僕らの生存戦略』を1000字進めましょう。 * * *

『Spherize』を書く火曜日

『Spherize』を書く 『僕らの生存戦略』を1000字進める(TCS) 8:00 おはようございます。本日は『Spherize』を書き、ひさびさに『僕らの生存戦略』に着手したいと思います。 さて、うまく書けるかどうか。 モーニング・コーディング モジュールの作成の続きから。適切なモジュールの関数設計のフレームワークがまったくわからないので、一番小さい単位で求めているファイルをパスを返す関数を書いてみた。 1 2 3 4 5 6 7 8 def printToday(): print('today is ' + td.strftime("%Y-%m-%d%A")) def getInFilePath(): return ty + '/' + tday + '.md' def getOutFilePath(): return "/Users/Tadanori/Dropbox/dailylog/content/posts/" + ty + "/" + tm + "/" + tday + ".md" これで、機能はまったく変わっていないけれども、ファイルのパスを変更したくなったら、この関数を変更するだけで、すべてのコードに影響を与えられる。 あと、現状切実な問題は、上のようにコードを挿入するときにHugo用のショートコードでサンドイッチしているのだけど、それを覚えていないので毎回昨日の作業記録からコピペしている点。単語登録してもいいけど、変換してみたい。 開始と終了のショートコードを、自分でも覚えられる程度の短さにしておいて、それを変換して利用する。 9:00 『Spherize』を書きます * * * 一時間くらいで書けました。一応中盤の佳境です。 第九回:膜と現象としての自己|倉下忠憲|note WorkFlowyの検索 当たり前だけども、WorkFlowyでは検索はできるけども、正規表現での検索はできない(当たり前なのか?)。 ということは、たとえば「2020/11/9 hogehoge」みたいな記述が一杯あるときに、日付がある行だけを抽出ということができない。そのかわりに、#Schedule のようなハッシュタグを入れておけば抽出できる。 この二つが同じことをしていることを理解しておくことは大切だろう。 作業記録について: 朝一にやりたいこと。「一週間のルーチン業務」と「直近スケジュール」と「抱えているプロジェクト」を一覧したい。

臨時うちあわせCastを収録する月曜日

うちあわせCastの収録 今日からのプロジェクトの進め方を検討 9:00 おはようございます。今日は、プロジェクトの進め方の整理と、臨時のうちあわせCastの収録を行う予定です。 モーニング・コーディング 日付文字列を作成する共有関数(モジュールと呼びましょう)の続き。 地域情報を設定して、mondayではなく月曜日と表示されるように。 1 2 3 4 5 6 7 8 import datetime import locale locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8') td = datetime.date.today() def printToday(): print('today is ' + td.strftime("%Y-%m-%d%A")) あとは、この関数の利用方法を検討すること。生成される日付がどのように利用されているのかを分析すればよいでしょう。 今後のやることの方向性 日付モジュールの作成 変換機能の強化(たとえば共有には移さない記法を設定する) 朝一のダッシュボード表示(たとえば一週間の予定) あとで読む ハーンスタイン&マレイ『ベルカーブ:アメリカ生活における知能と階級構造』(1994) - 山形浩生の「経済のトリセツ」 再燃するZINE:ネット時代に花開くコミュニケーション・カルチャーの真髄 | FUZE fragment:一年間に1000冊も本を読む 一年間に1000冊も本を読んでいるというひとは、もちろんほとんどの本を「まともに」は読んでいません。 一方で、そうやって「まともに」読まなくても、何かの経験を得ている、ということもまた確かです。 作業記録: 最近は、VS Codeを二つ開いている。一つは、この作業記録を書き込む用のworkspaceで、もう一つは着手するプロジェクト用のworkspace。後者のworkspaceを適宜切り替えながら、作業を進めている。 一つにしないのは、プロジェクトの作業をしているときでも、作業記録にメモしたいことが発生するから。 では、ターミナルから、この作業記録に記録できるようになったらどうなるだろうか。 基本的に新規メモは、下に下にと追記していくのだから、コーディング的には難しくない。ターミナルでinputを要求して、受け取ったものを、今日の日付からファイル名を作成して、そこに追記すればいい。 ただし、inputでは単行しか受け取れない。作業記録用のメモは一行で終わることもあるけど、そうでないこともある。 複数行を受け取るには、繰り返し処理だが、最初から回数はわかっていない。 python — ユーザーから複数行の入力を取得する方法 1 2 while input() !

メルマガを仕上げてゆっくりする日曜日

メルマガ読み返し メルマガ配信予約 What’s this? 9:00 おはようございます。本日は午前中にメルマガを仕上げ、午後からは書店に出かけるか、あるいは家にこもって読書をしたいところです。 あと、zennを少し試すかもしれません。 Zenn CLIをインストールする GitHubリポジトリでZennのコンテンツを管理する MEMO:プログラミングとライティング MEMO:デジタルでいかに考えるのか 作業記録のアイデア hey juizコマンドから、たとえば何かしらのWebページを開く、という手はある。 あとで読む 高速道路からの風景 nonoc「mement」 nonocのアニメ『Re:ゼロから始める異世界生活』の2期ED「mement」という曲がむちゃくちゃMYTH & ROIDの曲調に似ているなと思ったら、作曲がTom-H@ckさん(MYTH & ROIDの作曲の人)だった。 曲を買いました 『Broken Sky』(富田美憂) 10:00 メルマガ読み返しを進めます * * * 終わりました。配信予約作業を進めます。 * * * 終わりました。 メルマガのmakeコマンドの編集 現状以下のようにimportにテキストファイルを指定しているけども、すべてテキストフィルであることが前提なので、拡張子の入力を省きたい。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def fetchFile(filepath): filepath = filepath + '.txt' with open(filepath) as f: l = f.