vim:pythonの構文チェック

pythonの文法チェックをエディタ上で行いたい場合のvimの設定方法。

用意するもの
pylint (http://www.logilab.org/857)
logilab-astng (http://www.logilab.org/856)
logilab-common (http://www.logilab.org/848)

インストール
 上記の3つをpython setup.pyでインストール

python setup.py install

_gvimrcに記述を追加

” ファイルタイププラグインを有効にする

:filetype plugin on

ftplugin/python.vimに記述を追加
nelnal@pythonさんからコピーさせていただきました)
※%を”で囲わないとスペースを含むファイルパスを正しく処理できないのでそこだけ変更

command! Python call s:Python()
nmap :Python

function! s:Python()
:w
:!python “%”
endfunction

command! PyChecker call s:PyChecker()
nmap :PyChecker

function! s:PyChecker()
:w
:!pyChecker “%”
endfunction

F5キーでpythonスクリプトを実行
F4キーでpycheckerを使った構文チェックを行います。

python:リストの内包表現

リストが持つデータに着目して新たなリストを作り出す書き方

memberList = [{'id': 1 ,'name': 'Jhon' ,'sex': 1 },{'id': 1 ,'name': 'Mary' ,'sex': 2 }]

このようなリストから性別=1のリストの’name’だけを抜き出したいときはこう書く

newMemberList = [lst['name'] for lst in memberList if lst['sex'] == 1]

Linux:rsyncでファイル同期

まずrsyncコマンドの基本

rsync [option] [同期元ファイルパス] [同期先ファイルパス]

リモートサーバと同期するときはファイルパスの前に:で区切ってサーバ名またはIPアドレスを指定する

rsync [option] user@192.168.0.2:/tmp /tmp

※この例ではuserアカウントで192.168.0.2にアクセスしようとしているので、目的のサーバに接続した後、パスワードを聞かれる。
パスワードを答えると同期が行われる。

cron等で定期的に同期したい場合、このパスワード入力が面倒。
リモートのrsyncサーバにユーザを登録していれば–password-fileというオプションをつけてコマンドラインにパスワードを含めることができる。

rsyncサーバの設定

rsyncの設定ファイルを作成しする。
設定ファイルにはリモートでアクセスできる接続元や、ディレクトリ、ユーザの設定を書く。

/etc/rsync.conf
#
# Global options
#
uid = root
gid = root
use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.1/24
hosts deny = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

#
# Module options
#
[remote1]
comment = rsync server
path = /tmp/remote1
auth users = remote_user1
secrets file = /etc/rsyncd.secrets
read only = no

[remote2]
comment = rsync server
path = /tmp/remote2
auth users = remote_user2
secrets file = /etc/rsyncd.secrets
read only = no

次にユーザのパスワードを設定する。
※ここで作成するユーザ(上記のrsync.confのremote_user1,remote_user2にあたる)はrsyncのユーザである。
Linuxに同じユーザを作成する必要は無い。

rsync.confで”secrets file”に指定したファイルを編集する。

/etc/rsync.secrets
remote_user1:password
remore_user2:password

※secrets fileのパーミッションは600にすること。それ以外のパーミッションでは認証できない。

以上でrsyncサーバの設定は終わり。サーバを起動するには

rsync –daemon –config=/etc/rsyncd.conf

rsyncユーザで接続

rsyncサーバに設定したユーザ、ディレクトリで同期できるかのテストは以下のようなコマンドで行う。

rsync -r /tmp/test remote_user1@192.168.0.2::remote1

パスワードを聞かれないようにするにはパスワードファイルを作成し、コマンドオプションでそのパスワードファイルを指定する。

rsync -r –password-file=/etc/rsync.passwd /tmp/test remote_user1@192.168.0.2::remote1

/etc/rsync.passwdにはパスワードを平文で書いてよい。但し、他のユーザにアクセスされない場所に置くこと。
またこのファイルもパーミッション600でなければ認証できないので注意

mysql:DATETIME型とTIMESTAMP型

DATETIME型は8バイト、TIMESTAMP型は4バイト。
サポートする日付の範囲は
DATETIME: 0000年~9999年
TIMESTAMP: 1970年~2037年

4バイトくらいケチらずにDATETIME型を使うのが基本か。
TIMESTAMP型で更新日時など内部データを持つのはアリかもしれない。
けど、生年月日のようなデータ入れられない。
システムの中で何種類も日付型を使うのが面倒ならDATETIME型に統一したほうがいい。

mysql:リモートログインできるユーザの追加

mysqlにリモートログインできるユーザを追加するコマンド

GRANT ALL PRIVILEGES ON DBNAME.* TO username@”%” IDENTIFIED BY ‘password’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

“%”のところにIPアドレスを指定してアクセスできる接続元IPを指定することができる。
“%”なら何処からでも接続可になる。

WordPress:連続するハイフンを表示する

追記:
※この記事は古くなっています。
新しいバージョンのWordPressで連続するハイフンを表示するには、新しい記事
WordPress: 連続したハイフンがダッシュに変換されるのを防ぐ
を参照してください。

wordpressで連続したハイフンが消える件について。
–や—が—になる。
どうも連続するハイフンは1個に変換されている。

何か安全のための措置だとは思うけれど、–helpとかって記述も出来ないんじゃ不便すぎる。

formatting.phpの置き換え後文字列を変更した。
/wp-includes/formatting.phpのwptexturize関数

	$static_characters = array_merge(array('---', ' -- ', '--', 'xn–', '...', '``', ''s', '''', ' (tm)'), $cockney);
    // ハイフン正常化
    //$static_replacements = array_merge(array('—', ' — ', '–', 'xn     --', '…', '“', '’s', '”', ' ™'), $cockneyreplace); 
    $static_replacements = array_merge(array('-', ' -- ', '--', 'xn--', '…', '“', '’s', '”', ' ™'), $cockneyreplace);

ハイフンは-と置き換えるのが正しいらしいので—になっている部分を-に変更した。

linux:GUIのvimをソースからインストール

vim7.2が使いたいのでソースからインストールした。

cd ~/local/src
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-http://blog.mktime.com/wp-admin/post-new.phpextra.tar.gz
wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz
tar jxfv vim-7.2.tar.bz2
tar jxzv vim-7.2-extra.tar.gz
tar jxzv vim-7.2-lang.tar.gz
cd vim72/
mkdir patch
cd patch
wget ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.*
cd ..
cat patch/7.2.* | patch -p0

GUIで使いたいので、GUIを有効にするconfigureオプションを指定する。

./configure
–enable-multibyte
–enable-xim
–with-x
–with-features=big
–enable-perlinterp
–enable-pythoninterp
–enable-rubyinterp
–enable-gui=gnome2

make

makeでエラーが出る。

os_unix.c:2641: error: ‘security_context_t’ undeclared (first use in this function)

selinux要るの?

yum install libselinux-devel

これでmake ,makeinstallまでいけたけど、vim -g で起動したらエラーが。

E25: GUIは使用不可能です: コンパイル時に無効にされています

configureログを確認すると確かに無効になっている。

checking –enable-gui argument… GNOME 2.x GUI support
checking whether or not to look for GTK… yes
checking –with-gtk-prefix argument… no
checking –with-gtk-exec-prefix argument… no
checking –disable-gtktest argument… gtk test enabled
checking for gtk-config… (cached) no
checking for gtk12-config… (cached) no
checking for pkg-config… (cached) /usr/bin/pkg-config
checking for GTK – version >= 2.2.0… no
checking for GTK – version >= 1.1.16… no
checking for X11/SM/SMlib.h… (cached) yes
checking for X11/xpm.h… (cached) yes
checking for X11/Sunkeysym.h… (cached) yes
checking for XIMText in X11/Xlib.h… yes
no GUI selected; xim has been disabled

gtk2が必要か。

sudo yum install gtk2-devel

gtk2をインストールしたあと、もう一度

./configure
–enable-multibyte
–enable-xim
–enable-x
–with-features=big
–enable-perlinterp
–enable-pythoninterp
–enable-rubyinterp
–enable-gui=gnome2

make
sudo make install

よし。完璧です。

subversion:リポジトリ作成

リポジトリ作成はrootかsudoをつけたユーザで行う

# svnadmin create myproject

いつもどおりのフォルダ構成にするコマンドは↓を一行で打つ

# svn mkdir -m "layout creation" file:///$SVNREP_DIR/myproject/trunk 
file:///$SVNREP_DIR/myproject/tags file:///$SVNREP_DIR/myproject/branches

webDAVで認証する場合はオーナーをapacheユーザにしておく

# chown apache:apache $SVNREP_DIR/myproject/

玄箱pro:debian化後のsambaインストール

1. sambaをインストール

# apt-get install samba

Workgroup/Domain Name: 	ワーキンググループ名を入力。
Use password encryption? 	Yes
odify smb.conf to use WINS settings from DHCP? 	DHCPを使うならYes、使わないならNo
How do you want to run Samba? 	deamon
Create samba password database, /var/lib/samba/passdb.tdb? 	No

2. sambaユーザを登録

# smbpasswd -a [ユーザ名]

3. 共有フォルダの設定 viで/etc/samba/smb.confに共有フォルダの設定を追記する

/etc/samba/smb.conf
[share]
        comment = share 
        path = /mnt/share
        read only = No

sambaの設定をリロードする

# /etc/init.d/samba reload

\サーバ名shareで共有フォルダにアクセスできるようになります。