IPython をインストールする
この Pelican を利用している virtualenv 環境で IPython をインストールしようとしたら下記のエラーが表示されました。 IPython 自体は起動するのですが、プロンプトの表示が崩れていて正常ではない状態です。
/Users/ryosuke/Projects/pelican/lib/python3.3/site-packages/IPython/utils/rlineimpl.py:94: RuntimeWarning:
******************************************************************************
libedit detected - readline will not be well behaved, including but not limited to:
* crashes on tab completion
* incorrect history navigation
* corrupting long-lines
* failure to wrap or ...
tmux を使い始めました
先日兄に教えてもらって screen に入門し、そのすぐあとに tmux を始めました。これまでは Terminal.app のウィンドウを複数開いてショートカットキーで切り替えてつかっていたのですが、やはり一枚のウィンドウの中で完結するほうが作業効率は上がりますね。
数年前にも一度 screen を使いかけたことがありましたが、そのときはまだ shell や Emacs などの操作も覚え始めたばかりだったこともあり、新たにキーバインドを覚えることができず、定着しないままとなっていました。
自分で一から設定を詰めていこうとすると時間も労力もかかりますが、今回は兄から設定ファイル .tmux.conf をもらったので即便利な状態からスタートできてありがたいです。
#bind C-t next-window
bind c new-window
bind - split-window -v
bind | split-window -h
bind C-p previous-window
bind C-n next-window
# pane を移動
bind h select-pane -L ...
定型文・メールテンプレートの管理ツールが欲しい
いま作ってみたいと思っているもののひとつが、定型文やメールのテンプレートを管理する仕組みです。仕事では Windows マシンでメーラー Becky を利用していて、Becky のテンプレート機能を多用しています。
宛先アドレス(To、CC、BCC)や返信先アドレス(ReplyTo)なども含めて変更する場合はやはりメーラーの機能を利用せざるを得ないと思っていますが、メール本文の内容を管理するという点では少々物足りなく感じるようになってきました。
複数のメールテンプレートで共通して使用している部分もあり、その部分を変更する必要が出てきた場合、現状ですとメールテンプレートをそれぞれ手動で修正していかなければなりません。できれば共通部分は抽出して一箇所にまとめておいて、各テンプレートはそこから読み込んで文面を作成する、という形の方が変更する際に一箇所だけを編集すればよいのでより便利になると思うのです。
また、テンプレートのファイルを外部ディレクトリに置いておくようにすることで複数人でテンプレート資産の共有ができてよいのではないか、という点もあります。
いわゆるテンプレートエンジン(Jinja2 とか)はそういう用途のために作られているわけではないというのは承知の上ですが、そういったものを活用することで何か今よりも便利なツールができるのではないかと最近ときどき考えています。
more ...パーツ(部品)が増えていく感覚
おぼろげながらプログラミングに興味・あこがれを持ち始めたのは大学生の頃だったように記憶しています。
何となく「独習 Java」を買ってみたものの、コマンドプロンプトの操作(cd .. で上のディレクトリに移動するとかそのあたり)が理解できず、途中で放置してしまったことを覚えています。
また、何となく「Java World」という月刊誌を買い続けてパラパラと眺めていましたが、理解できたのは「グレープシティという会社が帳票というものを扱うソフトウェアを販売している」ということくらいでした。(冒頭にいつもグレープシティの広告が掲載されていた記憶があります)
その後社会人になってから細々と、途中で休んだりもしながら勉強を続けてきて、最近はようやく自分がほしいと思うものを作れそうな感覚というか、「恐らく、こういう感じでやればいいのだろう」とか「恐らく、この辺とこの辺のことを調べればできそうだな」といった見通しが立つことが出てくるようになってきました。
亀の歩みとはいえ、少しずつ自身の中にプログラミングの部品が増え、磨かれ、使えるようになってきて、ますます楽しくなってきています。
この調子でもっと習熟していきたいところです。
more ...reST で blog を書く理由
今回、このドメインで blog を再開することを決めた際に考えていたこと(今も考えていること)を書いてみます。
動的生成と静的生成
まず、個人で書く blog のような一度書いたエントリはその後変更されることがあまりないようなタイプのサイトで、(キャッシュの仕組みはあるのでしょうが)アクセスがあるたびに毎回動的に HTML を生成するのはナンセンスというか、コンピューター資源の無駄遣いというか、個人的にはあまりしっくりこないなぁと感じていて、やるなら静的生成がいいと考えていました。
最近のトレンドというか傾向を参考にしたならば、独自ドメインで blog をやるなら WordPress が順当な選択肢となっているという認識を持っていますが、WordPress は動的生成だし、以前に使用していたときに本体やプラグインのアップデートがけっこう頻繁にあって煩わしかった記憶もあるし、"WordPress" のスペルを強制する関数が本体に含まれていること を知って以来、[1] あまり好ましい印象を持っておらず、積極的に避けたいと思っていました。 (まぁ猫も杓子も WordPress という流れに逆らいたい、というマイナー志向の顕れという側面も否定できません 笑)
blog の前に Sphinx
blog エンジンとして Pelican の前には Nikola を検討していました。どちらも Python で書かれているので何かいじる際に都合がいいというのが主な理由です ...
Python スクリプトを改修する 2 (ファイル読み書き)
仕事で使用しているスクリプトで、テキストファイルを読み込んで文中の URL を a タグで囲んで HTML ファイルに書き出すものがあります。
pandoc か何かを使えばより高い次元で実現することができるような気もしますが、必要なのは URL の処理くらいであとはテキストそのままの体裁で十分なこともあり、自作スクリプトで対応しています。
書いたのはもう 2 年くらい前で、その後私自身の Python に対する理解も(わずかずつとはいえ)深まってきたようで、読み返すといくつか書き直したい部分が出てきました。
そのうちの一つがファイルの読み書きの部分でこれまでは
f = open('hoge.txt', 'r')
for line in f:
rawtext = line.rstrip(os.linesep)
print(rawtext)
f.close()
という感じで書いていたのですが、「パーフェクト Python」や「Dive into Python 3 ...
!--> more ...Python スクリプトを改修する 1 (Twilio)
今日はまとまった時間があったので、この blog を書いたり Emacs の設定を調べたりしたほか、仕事で使っている Python スクリプトのリファクタリングも少し進めていました。
ひとつは Twilio で運用しているボイスメールサービスの音声ファイルをダウンロードするものです。会社では Python 2 で動かしているのですが、仕事で使うスクリプト(といっても 2、3 個ですが)をすべて 3 系に移行したいと考えているので少し確認が必要となっていました。
virtualenv で Python3.3 の仮想環境を作ってその中で、pip で Twilio のモジュールをインストールしてから動作確認です。結果は何の問題もなく動きました。一安心です。
$pip install twilio
Twilio のサイトにあるサンプルを参考にして大体下記のような感じで書いています。
import sys
import os
import datetime
import urllib.request # python ...
Emacs で背景色の透過設定を変更する
Emacs の背景色を黒にして少し透過するように(背面のウィンドウが見えるように)して使っています。自宅や会社の環境ではディスプレイが複数あるので透過させる必要性はそれほどは感じませんが、ノート PC では表示領域に限りがあるためブラウザを確認しながら Emacs でファイルを編集するということが難しい場合があります。
それぞれを左右に並べると Emacs はともかくとして、ブラウザの方は横方向のスクロールを多用せざるを得なくなったりして、使い心地がイマイチです。
そういうときには Emacs の背景を透過させて、前面にある Emacs のウィンドウから背面のブラウザが透けて見えるようにすることで凌ぐというのもひとつの手ではないでしょうか。
これまでは init.el に下記の設定を書いていました。
;; Color
(if window-system (progn
(set-background-color "Black")
(set-foreground-color "LightGray")
(set-cursor-color "Gray")
(set-frame-parameter nil 'alpha 70) ;透明度
))
ただ、これで完璧かというとそうでもなく、もう少し透過させたいときや、逆にブラウザで表示しているページが派手だったりすると Emacs でのファイル編集時に目障りになったりして、透過しないようにしたいという場合もあります。
そのたびに init.el ...
!--> more ...