月別アーカイブ: 2015年12月

[sqlite]日付と時間についての関数

sqliteは以下にある5つの日付と時間を扱う関数がある。

date(timestring, modifier, modifier, …)
time(timestring, modifier, modifier, …)
datetime(timestring, modifier, modifier, …)
julianday(timestring, modifier, modifier, …)
strftime(format, timestring, modifier, modifier, …)

これら全てはゼロ及び修飾文字列で構成されるtime string型を引数としている。strftime関数は第一引数としてtime string型を指定している。
日付と時間の関数はISO-8601に準拠している。date()はYYYY-MM-DD、time()はHH:MM:SS、datetimeはYYYY-MM-DD HH:MM:SSを返す。julianday()はユリウス日を返す。strftime()は第一引数で日付や時刻の形式を受け、標準Cライブラリ及び%fと%Iを加えた変換を行う。

%d day of month: 00
%f fractional seconds: SS.SSS
%H hour: 00-24
%j day of year: 001-366
%J Julian day number
%m month: 01-12
%M minute: 00-59
%s seconds since 1970-01-01
%S seconds: 00-59
%w day of week 0-6 with Sunday==0
%W week of year: 00-53
%Y year: 0000-9999
%% %

注釈:全ての日付や時刻の関数はstrftime関数によって表現できる。
Function Equivalent strftime()
date(…) strftime(‘%Y-%m-%d’, …)
time(…) strftime(‘%H:%M:%S’, …)
datetime(…) strftime(‘%Y-%m-%d %H:%M:%S’, …)
julianday(…) strftime(‘%J’, …)

時間文字列は以下のどの形式でもよい。
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD
注釈:DDDDDDDDDDはunix時間を表す整数
修飾文字列は以下の種類がある。
NNN days
NNN hours
NNN minutes
NNN.NNNN seconds
NNN months
NNN years
start of month
start of year
start of day
weekday N
unixepoch
localtime
utc

最初6つの修飾文字列は単に時間や日付を進めたりするためにある。
weekday修飾文字列はNで指定した曜日(日曜日は0、月曜日は1、…)
unixepochは1970年からの秒数である。

【例】
現在の日付
SELECT date(‘now’);

現在の月の最初に日
SELECT date(‘now’,’start of month’,’+1 month’,’-1 day’);

unix時間の1092941466をdatetimeに変換する
SELECT datetime(1092941466, ‘unixepoch’);

現在時刻からunix時間を計算
SELECT strftime(‘%s’,’now’);

US独立記念日から現在までの日数を計算
SELECT julianday(‘now’) – julianday(‘1776-07-04’);

2004年のある瞬間から現在までの秒数を計算
SELECT strftime(‘%s’,’now’) – strftime(‘%s’,’2004-01-01 02:34:56′);

今年10月の最初の火曜日の日付を計算
SELECT date(‘now’,’start of year’,’+9 months’,’weekday 2′);

 

[vim]偶数行と奇数行の連結

1
a
2
b
3
c
4
d

となっているテキストファイルを

1,a
2,b
3,c
4,d

と変換したい。もちろん手作業ではとても間に合わない行数である。
awkを使おうかと思ったが、vimのマクロで行った。

1行目の先頭にカーソルがあるとする
qa マクロ記録開始
esc ノーマルモード
$a, 行の最後に移動してカンマを挿入
esc ノーマルモード
J 次の行を連結する
esc ノーマルモード
j     次の行へ移動する
q      マクロ記録終了
5@a これまでの処理を10回繰り返す

[raspberry pi]USB 電源能力

raspberry pi2 model B

USBのwifiドングルを使うと頻繁に機能しなくなる問題は、電源能力が原因らしい。
USB2.0の電源は4つ合計で300mA程度で一つあたりは100mAくらいしかとれない。
無線LANは通常300mAくらいを用いるらしいので、足りなくなる。

raspberry piのdocumentによるとマウスやキーボード以外の消費電力の大きいUSBデバイスは、
USBハブやその他の電源供給を行うようにとのこと。

一応電源供給は
/boot/config.txtにて
max_usb_current=1を追加することで4つ最大1200mAまでとなるらしい。