現在開いているファイルの中身をDayOneに投稿する

先日、こんな記事を投稿しましたが,Vimでファイルを編集中に投稿できるようにしたいと思って作りました。作ったとはいっても1行のシェルスクリプトです。Vim中にCtrl+Dを入力すると投稿されます。

.vimrc

 nmap <C-d> :call  DayOne()


 function DayOne()
     let name = expand('%:p')
     execute '!/path/to/dayone.sh ' . name
 endfunction

dayone.sh

#!/bin/bash
cat $0 | dayone new
echo "created new entry!"

便利すぎてヤバイ。投稿をしすぎないように気をつけないといけないと思う。

コマンドラインからDayOneに記事を投稿する

DayOne、気に入っているけど好きなエディターで編集できないのが辛いと思っていたら、Day One Toolsのサイトからダウンロードしたスクリプトを使うと以下のコマンドを打つだけでDayOneに新しい記事を投稿できることがわかった。

hogeという記事を投稿
$echo "hoge" | dayone new

hogeという記事を一日前の日付で投稿
$echo "hoge" | dayone  -d="yesterday" new

hoge.mdの記事内容を投稿
$cat hoge.md | dayone new

これで好きなエディターでメモを取れる!

特定のポート番号で動いているWebサーバーをKillする

例えば5000番のポートで動いているWebサーバーをKillしたいときは

fuser -k 5000/tcp

とすればKillできる。今まで

ps ax | grep hoge

でプロセス番号を確認してからKillしてたからこれで時間短縮ができる。

ちなみにfuserはファイルやソケットを使用しているプロセスを特定するのに使われるらしい。

Don’t break the chain メソッドを参考にチェーンドライブというiOSアプリをリリースしました。

突然ですが,二ヶ月ほど前にApp Storeに提出したチェーンドライブというiPhoneアプリの告知をします。 (告知が遅れたのはPush通知周りの不具合の修正のためです…)

きっかけはライフハッカーのDon’t break the chain について 書かれていた記事(日本でもこちらの記事で言及されています) を読んで、早速自分でも実践したいけど適切なアプリが市場に出回ってなかったという些細なものでした。

Don’t break the chain とは自分が毎日の習慣にしたいと考えていることを選んで、それを実行した日はチェックオフしていくだけというシンプルなもの。 その習慣がなるべく途絶えないようにやるうちに、いつのまにか習慣が身につくという方法です。

チェーンドライブは特徴を列挙するとこんな感じです。

  • 当日チェックマークをつけるのを忘れてしまったら、もうチェックマークを付けることができなくなる。(Don’t break感を出したい)
  • 複数のタスクを登録できることができる。
  • その日のうちにチェックマークがついていないと、Push通知で知らせてくれる。
  • 継続日数に応じてタスクの色が変更する。

2ヶ月間自分が使ってみた感想

このアプリをリリースしてから約二ヶ月の間毎日使い続けているのですが、自分が習慣にしたいことを目に見える形にしてそれをこなすとチェックをつけるという 行為は想像以上に自分の意識が高くなるのが実感出来ましたし、特にチェックマークをその日つけ忘れたらそのタスクはもうチェックを付けることができなくなる という機能が効果的でした。このおかげでより「毎日するんだ!」という意識を高く持てています。

ちなみに自分が毎日続けられているタスクは

  • プログラミング
  • 英語のPodcastを聞く
  • ペンと紙を使う

です。このアプリを使うようになって、実際に毎日続けられているので始める前より確実にレベルが上がったことを実感しています。 無料ですのでもしよかったらチェーンドライブをダウンロードしてタスクを習慣化してみてください。

Alembicで変更したテーブルのカラムを自動で検知してマイグレーションファイルを生成する

Alembicを使ってDBのマイグレーションを行っているけど、自動で変更されたカラム名を判定して勝手にmigrationファイルを作ってる

alembic revision --autogenerate -m "upgrade"

という–autogenerateというオプションが有るんだけど、そのままだと動作しない。

動作させるにはenv.pyを以下の様なコードを追記しないといけない。

env.py

# create_appはFlaskのappを返すメソッド
from basic_app import db, create_app

app = create_app()
config = context.config

app.config[“SQLALCHEMY_DATABASE_URI”] = "your_db_path"
config.set_main_option(“sqlalchemy.url”,app.config[“SQLALCHEMY_DATABASE_URI”])
target_metadata = db.metadata

あとは

alembic upgrade head

でデータベースに変更を適用するだけ。

とても便利なライブラリだけど、 注意点としてカラム名の変更やunique等、制約の追加を判定することはできないので 、その時は手動で更新しないといけない。