タイトル変更しました。
ついでに、一部bootstrapを利用してレイアウト崩れを防ぐようにしてみました。
記事はまた思いついた時にでも投稿してみます。
2016年4月8日
タイトル変更
2015年2月9日
Mac OS X で porg を使って "make install"したソフトを管理する
Porgは「make install」でインストールされるファイルの記録を取り、後で削除したりするのを簡単にするためのソフトです。
以前は Paco と言う名前でしたので、Paco に関する記事を見ると良いです。
"make install"したソフトウェアを管理できる超便利ツール「Paco」 - 元RX-7乗りの適当な日々
こういうのは MacPortsとかHomebrewとかを使うのが普通なのですが、make install も結構してしまうので使うと便利です。
porgのインストール
porg の最新版をダウンロードします。この記事を記述している時点だと「0.7」です。
curl -LO http://downloads.sourceforge.net/project/porg/porg-0.7.tar.gz
Mac で正常に動作させるにはパッチが必要ですのでダウンロードします。
curl -LO https://trac.macports.org/raw-attachment/ticket/46702/adapt-to-osx.patch
curl -LO https://trac.macports.org/raw-attachment/ticket/46702/patch-doubleDESTDIR.diff
コンパイルします。gropというGUIツールを一緒にインストールしようとしますが、わたしは使わないのでdisable しておきます。ためしたい人は gtkmm をインストールすると使えるはずです。
tar xvf porg-0.7.tar.gz
cd porg-0.7
# パッチを当てます
patch -p0 < ../adapt-to-osx.patch
patch -p0 < ../patch-doubleDESTDIR.diff
# disable-grop します
./configure --disable-grop
make
sudo make install
「/usr/local/bin」にインストールされるので PATH を通しておいてください。
動作確認をします。動作確認には、porg に porg 自身を登録します。
sudo make logme
porg -a
「-a」で管理パッケージ一覧が表示できます。無事 porg 自身が表示できていればインストールに問題ないです。
パッチを当てれば Mac でも動作します。
2015/02/09 追記
どうやら上手く追加できない物が結構あるみたいなので確認中。
パッチを追記。
2015年2月7日
github から https 経由の clone 時にエラーが発生する場合の対処
github で git clone 等を実施した時に以下のようなエラーが発生した場合の対処。
fatal: unable to access 'https://github.com/xxxx/yyyy': SSL certificate problem: Invalid certificate chain
キーチェンアクセスの確認
「アプリケーション」->「ユーティリティ」->「キーチェンアクセス」を起動。
「システムルール」の中から「DigiCert High Assurance EV Root CA」を探して「有効期限」を確認します。
おそらく有効期限が切れていると思います。
証明書の更新
以下のサイトにアクセスします。
https://www.digicert.com/digicert-root-certificates.htm#roots
「DigiCert High Assurance EV Root CA」の「Download」リンク先を「右クリック」で保存してください。リンクを単純にクリックすると、ブラウザにインストールしようとしていまい、エラーが出てしまうので注意。
ダウンロードできた「crt」ファイルをダブルクリックすると、証明書が更新されます。有効期限が更新された事を確認してください。
git clone を実施して、問題ない事を確認してください。
以上です。
2013年4月22日
Tumblr API v2 を利用する
概要
TumblrのAPIを突然利用したくなったので、利用方法をメモする。
OAuth Key の取得
API を利用するには Twitter 等と同様 アプリケーションを登録して OAuth Keyを取得する必要がある。
プリの登録は、「http://www.tumblr.com/oauth/apps」で行なう。
「Register application」ボタンで登録。
「Application name」、「Administrative contact email」、「Default callback URL」が必須なので入力する。
登録内容は後でも変更できる。callback URL はとりあえず自分のサイト等にしておけば良い。
登録が完了すると、「OAuth Consumer Key」、「Secret Key」が取れる。
クライアントアプリケーション作成
クライアントアプリケーショを作成する。
Python で rauth を利用して認証と表示までしたサンプルが以下。実際に利用する場合は「OAuth Consumer Key」、「Secret Key」を自分の物に変更する。
rauth は OAuth を簡単に処理する外部ライブラリでかなり便利。「pip install rauth」などであらかじめインストールしておくこと。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import os
import re
import webbrowser
from ConfigParser import SafeConfigParser
from rauth import OAuth1Service
class TumblrClientTest(unittest.TestCase):
"""
Tumblr クライアントサンプルテスト
"""
def test_sample(self):
"""
テスト
"""
client = TumblrClient()
# sessin の取得
session = client.get_session()
# user/info 取得
response = session.get('user/info').json()
self.assertEqual(response['meta']['status'], 200)
self.assertEqual(response['meta']['msg'], 'OK')
# blog/info 取得
path = 'blog/scipsy.tumblr.com/info?api_key={api_key}'
response = session.get(path.format(
api_key=client.get_api_key())).json()
self.assertEqual(response['meta']['status'], 200)
self.assertEqual(response['meta']['msg'], 'OK')
self.assertEqual(response['response']['blog']['name'], 'scipsy')
class TumblrClient(object):
"""
Tumblr クライアントサンプル
"""
def get_api_key(self):
"""
API key = OAuth Consumer Key
"""
return 'OAuth Consumer Key'
def get_consumer_secret(self):
"""
Secret Key
"""
return 'Secret Key'
def get_session(self):
"""
session の取得
"""
# 設定ファイルのパス
config_file = os.path.abspath(os.path.join(
os.path.dirname(__file__), 'tumblr.cfg'))
tumblr = OAuth1Service(
name='tumblr',
consumer_key=self.get_api_key(),
consumer_secret=self.get_consumer_secret(),
request_token_url='https://www.tumblr.com/oauth/request_token',
access_token_url='https://www.tumblr.com/oauth/access_token',
authorize_url='https://www.tumblr.com/oauth/authorize',
base_url='https://api.tumblr.com/v2/')
if os.path.exists(config_file):
# 設定ファイルが存在する場合、設定ファイル読み込み
config = SafeConfigParser()
config.read(config_file)
access_token = config.get('account', 'access_token')
access_token_secret = config.get('account', 'access_token_secret')
session = tumblr.get_session((access_token, access_token_secret))
else:
# 設定ファイルが存在しない場合、初回認証
session = self.auth(tumblr)
# 設定ファイル出力
config = SafeConfigParser()
sec_name = 'account'
config.add_section(sec_name)
config.set(sec_name, 'access_token', session.access_token)
config.set(sec_name, 'access_token_secret',
session.access_token_secret)
with open(config_file, 'wb') as configfile:
config.write(configfile)
return session
def auth(self, tumblr):
"""
ブラウザでの初回認証
"""
request_token, request_token_secret = tumblr.get_request_token()
authorize_url = tumblr.get_authorize_url(request_token)
print '表示されたURLをブラウザで開きます: ' + authorize_url
webbrowser.open(authorize_url)
authed_url = raw_input('ブラウザアドレスバーのURLをペースとしてください: ')
verifier = re.search(r'\oauth_verifier=([^#]*)', authed_url).group(1)
# session 取得
session = tumblr.get_auth_session(
request_token,
request_token_secret,
method='POST',
data={'oauth_verifier': verifier})
return session
if __name__ == '__main__':
unittest.main()
正しく認証されていると、設定画面の「Apps」に登録したアプリが表示される。
API のドキュメント
公式 APIドキュメントが「http://www.tumblr.com/docs/en/api/v2」に存在するので、あとは必要な物を利用するだけ。
2013年4月2日
matplotlib 1.2.1 コンパイル時に Tk 8.5 must be compiled with tcl.h from Tcl 8.5 のエラー
現象
「Tk 8.5 must be compiled with tcl.h from Tcl 8.5」のエラーは Tcl 8.4 と 8.5 が同居している場合に発生する。
Mac OS X の場合、MacPorts や Homebrew、ActiveTck なんかをインストールしている環境で発生しやすい。
Linux 系の場合、パスの設定が変になっている可能性がある。
対処
Mac OS X の場合は、tkagg を利用しないのが一番簡単だと思う。
setup.cfg に以下のように設定してコンパイルすれば良い。
[gui_support]
tkagg = False
本来は根源的に解決すべきだが、とりあえずはこれでも大体の場合は困らない。
ただ tkagg を必要とする場合は、別途考える必要があるかも。
2012年12月5日
Riak コンパイルメモ
概要
Erlang で実装されたNoSQL系のデータベース「Riak」の先端をコンパイルする手順メモ。
手順
コンパイルする場合 Erlang と Git コマンドが必須なのでパスに存在するか確認しておく。
Riak はビルドに「rebar」を利用している。最新である必要は特にないが、これもコンパイルしておく。
git cline git://github.com/basho/rebar.git
cd rebar
./bootstrap
Mac OS Xでコンパイルしているが、環境変数に UNICODE が含まれていると認識されコンパイルエラーになった。
「Support environment vars with unicode characters · 61c353d · l4u/rebar-1 · GitHub」のパッチをあてたら通過した。
Riak 本体をコンパイルする。rebar のコピーを忘れないようにする。
git clone git://github.com/basho/riak.git
cd riak
cp /path/to/rebar .
make rel
関連ライブラリが Git で clone されてコンパイルされるので、環境によっては時間かかる。
途中でコンパイルエラーにたまになったので、rebarのバイナリコピーしてから再度 make するとちゃんと継続してコンパイルしてくれた。
「rel」ディレクトリの下にコンパイルされた。
使い方は確認中なので、また後で書く。
2012年12月4日
XML ファイルから PO ファイル を作成する
概要
XML ファイルを翻訳することがそれなりの頻度である。翻訳するなら PO ファイルを生成するのが便利。
XML から PO ファイルを生成するには「xml2po」か、「ITS Tool」を使う。両方ともGnomeのドキュメント国際化でも使われている Python で作成されたツール。
両方とも XML から PO を生成したり、PO から XML に戻したりできる。
ITS Tool の方が新しい。
xml2po
sudo port install gnome-doc-utils
xml2po --version
POファイルの作成と、XMLへの戻しは以下のようにする。
xml2po -o sample.pot sample.xml
cp sample.pot ja.po
mkdir ja
xml2po -p ja.po sample.xml > ja/sample.xml
ITS Tool
# 依存ライブラリインストール
pip install ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.21.tar.gz
# ダウンロード
curl -O http://files.itstool.org/itstool/itstool-1.2.0.tar.bz2
tar xvfz itstool-1.2.0.tar.bz2
cd itstool-1.2.0
./configure
sudo make install
# バージョン確認
itstool --version
POファイルの作成と、XMLへの戻しは以下のようにする。
itstool sample.xml -o sample.pot
cp sample.pot ja.po
msgfmt -o ja.mo ja.po
mkdir ja
itstool -m ja.mo -o ja/ sample.xml
まとめ
翻訳対象の XML にもよるだろうが、自分は xml2po の方を普段は利用している。