辞書にキーを動的に追加していく

collections.defaultdictを使うと、毎回毎回キーが 格納されているかどうかをチェックして、キーをセットする 手間が省けて便利。


import collections

tree = lambda: collections.defaultdict(tree)


root = tree()
root["menu"]["id"] = "field"
root["menu"]["items"] = [1,2,3]


print(data["menu"]["id"])

 

Crontabの使い方

crontabというツールを使用すると定期的にコマンドを発行してくれます。 自分はこれを使用してDBのバックアップを取ったり、サイトを巡回プログラムを走らせています。 毎回調べるのも面倒なので、ここに簡単な流れを記しておきます。

設定方法

crontab -e でcrontabファイルを開いて編集できます。

フォーマットは * * * echo “hello”

となり、左から分、時、日、月、曜日(0-7)となります。

サンプル

1時間に1回処理を行う。

0 * * * * echo "called hourly"

1日に1回処理を行う。

0 1 * * * echo "called daily"

毎月10日の9時に処理を行う。

0 9 10 * * echo "called monthly"

確認

crontabが動いているかどうかは/var/log/syslogの中を除くと確認できます。

tail -f /var/log/syslog | grep CRON

特定のメソッドの処理にかかる時間を調べる

実装コード (timer.py)

import time
class Timer:
    def __init__(self):
        pass

    def __enter__(self):
        self.start = time.time()
        return self

    def __exit__(self,*args):
        self.end = time.time()
        self.secs = self.end - self.start
        self.msecs = self.secs * 1000

メモ

  • __enter__はwith文のコンテキストの中に入った時に処理が呼ばれる。
  • __exit__はwith文のコンテキストが終了した時に処理が呼ばれる

使い方

#hogehogeメソッドにかかった時間を表示する

with Timer() as t1:
    hogehoge()
print(t1.msecs)

現在開いているファイルの中身を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

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