- 接続
-
1ファイル1DB なので,ファイル名を指定して起動する.
$ sqlite3 DBFILENAME
- テーブルリスト,カラムリスト
-
覚えるしかないか.
テーブルリスト
> .table;
カラムリスト
> pragma table_info(TABLENAME);
カラムリストの要素は順に,
cid Integer インデックス name Text カラム名 type Text そのカラムの型 notnull Integer not null なら 1 dflt_value Text DEFAULT value pk Integer プライマリキーなら 1
- 型
- NULL, INTEGER, REAL, TEXT, BLOB (バイナリーオブジェクト)
- 日付の取扱
-
日付関数で文字列か数値に変換して保存する.
例: データが python の datedata=datetime(2004, 10, 1, 13, 20, 15) の時
文字列で保存する例,エポックで保存する例
datestring=datedata.strftime('%Y-%m-%d %H:%M:%S') connection=sqlite3.connect('filename') cursor=connection.cursor() cursor.execute('create table tablename ( str_date text, int_date integer );') cursor.execute('insert into tablename values (\'%s\', strftime(\'%%s\',\'%s\'));'%(datestring, datestring)) cursor.commit()
格納状態
[(u'2004-10-01 13:20:15', 1096636815)]
値の取り出し方:
以下の取り出し関数を通して取り出す- date -- 日付
- datetime -- 日時
- time -- 時刻
- julianday -- ユリウス日
- strftime -- その他
cursor.execute('select time(str_date),date(int_date,\'unixepoch\') from tablename')
取得結果
[(u'13:20:15', u'2004-10-01')]
ubuntu でバイナリを実行しようとすると no such file or directory が返る
ls では確かにファイルはあるのに,実行しようとすると no such file or directory が返ったら,バイナリがどのアーキテクチャ (ARCH と言うらしい) を想定しているかを確かめるのが良いらしい.
参考:Man page of ARCH
で,要は x64 環境で x86 用のバイナリを走らせようとすると,no such file or directory が返るので,アーキテクチャをチェックしろということ.
$ file binaryfile
これでチェックすれば良い.
参考にした記事:Ubuntu日本語フォーラム / PandaBoard上のUbuntu12.04で実行ファイル実行時に、No such file or directory
linux サーバをいくつも越えて
直接接続できないリモートホストにsshとかscpとかする話.
基本的には,SSH力をつけよう - SlideShare なんだけど,いくつかできない点があったのでメモ.
ログインできないけど socks proxy として動作する linux を通過
Host HOSTA User [A_USER] HostName [A_HOST_FROM_SOCKSHOST] Port [A_PORT] ProxyCommand nc -x [SOCKSHOST]:[SOCKSPORT] %h %p
ブラケット内を変更する.A_* は A の,って意味.FROM_* は,* から見て,という意味.
netcat は netcat-traditional では -x オプションが使えないので,netcat-openbsd にしないとだめポ
socks でアクセスできる host からなら届く linux
Host HOSTB User [B_USER] HostName [B_HOST_FROM_A] Port [B_PORT_FROM_A] ProxyCommand ssh -W %h:%p HOSTA
多分,nc でも同じことできるけど,ssh のオプションでトンネル.
これを Windows (WinSCP) でやる
socks の設定は「プロキシ」へ,踏み台の設定は「トンネル」へ.
多分,putty も似たような設定すればいいけど,私の環境だと wakeonlan とかの関係で一度 HOSTA に入るので,そんな設定は使うことがなく,よく知らない.
Rlogin という名前の ssh クライアント
作者のページはここ → rlogin/telnet/ssh(クライアント)ターミナルソフト
タブ型sshクライアントとして使っていて,画面分割してターミナルを表示できるのが便利かなと思って入れてみた.
結局,接続先が1つの場合は使い勝手がtmux には及ばず,かつ tmux のコマンドが使用不能となってしまったため,使用を断念した.
不満点
- tmux ではペーンの移動を上下左右に自由にできるが,Rlogin では順に送ることしかできない
- 送りコマンドもTabや↑を要するなど,アルファベットキーの範囲内で操作できない
- 窓内で tmux を使おうにも,窓のサイズ変更に割り当てている Ctrl-t,Ctrl-h のコンビネーションが効かない
puttyのいけてないところは,公開鍵が独自フォーマットなところなのだが,設定の手間さえかければ,それ以降は気にせず使えるので,どちらかというと putty に軍配があがった.
debian でファームウェアインストール
-- 追記(8/27)
やっぱ直ってなかった。
症状
- sshしてると10秒~5分の間で、なんかセッションが切断される。
- 切断された時は、新しくsshのセッションを開こうとしても接続に失敗する。
- winscpを使っている分には、切断を挟んでいても気付かない。
- サーバ側のログにはクライアントがタイムアウトしたと出ている。
- クライアント側では、「Network Error: Software caused connection abort」とログが出る。
(↑このエラーは、Windowsが吐く一般的なNWエラーらしく、あんまり手掛かりにならなさそう?)
参照:10.14 ‘Network error: Software caused connection abort’ - ブログアクセスなど負荷のかかる動作をさせると高確率で切れる。
やったこと
直感的に、ログ出力の変更とか関係ない気もするが、不思議とmysqlのログを追加することでblogアクセスによる切断が生じなくなったので、因果はともかくとしてメモっておく。
- とにかく/var/logに出ているエラーを消す。
- bind9のv6を動作させなくする。
/etc/bind/named.conf.options
にlisten-on-v6 {none;};
では不十分で、/etc/default/bind9
を書き換え。- OPTIONS="-u bind" + OPTIONS="-u bind -4"
- sambaのprinter_cups関連の設定を無効化。
+ load printers = no + printing = bsd + printcap name = /dev/null
どれが欠けてもエラーは継続。
- bind9のv6を動作させなくする。
- sshまわりの設定修正
- sshdの設定を多少変更 (ClientAliveInterval を少し伸ばした)
- sshクライアントからkeepaliveを発出
- ログを単独出力
- SyslogFacility AUTH + SyslogFacility LOCAL5
- auth,authpriv.*;(hogehoge) /var/log/auth.log + auth,authpriv.*;(hogehoge);local5.* /var/log/auth.log + local5.* /var/log/sshd.log
- slowlog の出力
-- 追記ここまで
自宅の debian マシンのネットワーク接続が、突然不安定になった。
syslog や、他のログを見ていても原因はよく分からなかったが、dmesg などで NIC の firmware が見付からないというエラーが出ていた。
r8169 0000:03:00.0: firmware: agent aborted loading rtl_nic/rtl8168e-2.fw (not found?)
みたいな感じ。
ファームウェアの名前からベンダを調べて、上記の場合は Realtek なので、
# aptitude search firmware # ← firmware のパッケージを探す # aptitude install firmware-realtek
と単純に実行するだけで、なんとなく解決したっぽいので良しとする。
windows8.1 でインターネットオプションをスタート画面にピン留め
exe ファイルなどの場合,右クリックすることでスタート画面にピン留めするというメニューが現れる.
これを行なうと,スタートボタンを押して出てくるパネルに,その実行ファイルが登録される.
しかし,コントロールパネルの要素は cpl ファイルというものであって,右クリックしてもピン留めができない.
コントロールパネルのパーツの場合,control.exe の引数として呼び出すショートカットを作成してやることで,そのショートカットを右クリックしピン留めすることができる.
インターネットオプションを登録する場合は,
control.exe inetcpl.cpl
というショートカットを作成してやれば良い.
python で実行時間計測
何度も繰り返す必要のある短いコードの測定
import timeit t=timeit.Timer("""script""",'import clause') print t.timeit()
1回の実行に長時間を要するため,1度で評価したい場合など.
import time def tm(t0=None): if isinstance(t0,float): return time.time()-t0 else: return time.time()
time を使うべきか datetime を使うべきか
import datetime def tm(t0=None): if isinstance(t0,datetime.datetime): return datetime.datetime.today()-t0 else: return datetime.datetime.today()
import timeit t=timeit.Timer("""t0=tm.tm() t1=tm.tm(t0)""",'import tm') print t.timeit() t=timeit.Timer("""t0=tm2.tm() t1=tm2.tm(t0)""",'import tm2') print t.timeit()
結果は,
0.602358818054
7.44828104973
圧倒的に time
MVNO+docomo スマホで USB tether
ICS になって APN 設定をアプリから変更できなくなったらしく,GB で使っていた FixAPN というアプリが使えなくなった.
で,FoxFi と PdaNet で実現することになった.
- FoxFi (WiFi Tether w/o Root) を google play から tethering router となるスマホに導入.(無料版の無印で良い)
- PdaNet+ -- Internet Sharing for Android を PC に導入.
- スマホの開発者オプションから USB debug を on にしてから,FoxFi の Activate USB Mode をオン
- PC からPdaNet を起動して USB で接続する.
Greasemonkey で Google Track Link を削除
基本的にはGoogle Remove Junk Liteを入れれば良いが、私の環境では以下の2点の手を加えないと使えなかった。
- 実行ページに
http://*.google.*/search*
とhttps://*.google.*/search*
を加える. - QUERY_STRING の順番が異なる場合も動作するように修正する.例えば,
else if(a.href.match(/\/url\?.*&url=/)){ var url = this.qs('url',a.href); a.href = decodeURIComponent(url.replace(/\+/g, '%20')); }
を条件判定の最後に追加するなど.
Disable Excel Add-in Send-to-Bluetooth
Excel のアドインで「Bluetooth送信」なる機能をリボンに表示するものが,色々なアドインの動作を狂わせることがある.
こいつは消そうと思ってもなかなか消せないが,レジストリの書き換えで対処できることが分かった.
レジストリキーの場所
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins\XXXOfficeAddin.ExcelAddin
ここで,XXXの部分は,web で検索すると Bt などとなっているが,(参照→Office programs may crash with the SendToBluetooth add-in installed)
私の環境では Rtk であった.Realtek の bluetooth ドライバを入れると勝手に追加されるものだと思う.
ともかく,Excel を落として,当該キーの配下の DWORD 値の LoadBehavior を 0 とし,Excel を再起動すれば,これが原因の問題は解決しているはず.