投稿

5月, 2012の投稿を表示しています

Python を使って文字コード変換

先の投稿 で iconv を使いましたが、 Windows 環境では導入されていませんし、導入するには面倒です。 一方、Mercurial は Python で記述されているのでフィルターだって Python で記述すれば良いのではないかと思い、初めて Python でコードを書きました。cp932 から utf-8 へ変換するコードです。 #!/usr/bin/python import sys ifn = sys.argv[1] ofn = sys.argv[2] open(ofn, 'wb').write(open(ifn, 'rb').read().decode('cp932').encode('utf-8')) 実質一行。 cp932 のテキストファイルを読み込んで、 utf-8 へ変換して出力します。エラー処理なしですが、これだけで済んでしまうのですね。 標準入出力にしなかったのは  http://mercurial.selenic.com/wiki/EncodeDecodeFilter  に Windows の場合は Tempfile を使った方が良いと書いてあったからです。 この Python スクリプトを使って hgrc を記述しました。 [encode] **.cpp = tempfile: encode.py INFILE OUTFILE **.c = tempfile: encode.py INFILE OUTFILE **.h = tempfile: encode.py INFILE OUTFILE [decode] **.cpp = tempfile: decode.py INFILE OUTFILE **.c = tempfile: decode.py INFILE OUTFILE **.h = tempfile: decode.py INFILE OUTFILE decode.py は上のコード、encode.py は decode.py の逆の変換 (utf-8 から cp932 へ)を行うコードです。 Windows 環境下では逆向きの変換を行えば良いでしょう。 以上です。おつかれさまでした。

シフトJISで記述されたファイルを含むリポジトリの扱い方

これまで Windows 環境下で作業していたので Mercurial のリポジトリの中に日本語のコメントを含むファイルが多くあります。 開発環境が Linux へ移行したのですが以前のリポジトリを Linux 環境で取得するといわゆる文字化けが発生します。 hgrc に設定を記述することでワーキングファイルの取得時に文字コードを自動的に変換してくれます。 方法 1. -U オプションを指定して、リポジトリをクローンします。 $ hg clone -U http://foo.local/hg/foo foo すでにリポジトリを取得している場合、一旦作業ファイルを削除します。 $ hg update -r null 2. テキストエディタで作業ディレクトリ以下の .hg/hgrc を編集し、変換するフィルタを指定します。 以下の例は iconv を使用して拡張子が .cpp .c .h のファイルを変換するように指定します。 [encode] **.cpp = pipe: iconv -f utf-8 -t cp932 **.c = pipe: iconv -f utf-8 -t cp932 **.h = pipe: iconv -f utf-8 -t cp932 [decode] **.cpp = pipe: iconv -f cp932 -t utf-8 **.c = pipe: iconv -f cp932 -t utf-8 **.h = pipe: iconv -f cp932 -t utf-8 3. 作業ファイルを取得します。 $ hg update 以上です。おつかれさまでした。 追記: シェルスクリプトではなく Python を使った場合の処理を  http://cobitech.blogspot.jp/2012/05/python.html に記述しました。

TortoiseHg から起動するターミナルエミューレータの設定

イメージ
Linux バージョンの TortoiseHg でターミナルを開くと xterm が起動されるんですが、これを Xubuntu のお気に入りのアプリケージョンで登録したターミナルエミュレータへ変更します。 環境 Xubuntu 12.04 TortoiseHg 2.3 1. TortoiseHg を起動します。 2. 「ファイル(F)」から「設定(S)...」を選択します。 3. 「ユーザ設定」のタブを開きます。 4. 「TortoiseHg」をクリックします。 5. シェルに 「exo-open --Launch TerminalEmulator」を入力します。 6. 「OK」ボタンをクリックします。 7. TortoiseHg を再起動します。 以上です。おつかれさまでした。

Redmine と TortotiseHg の連携

イメージ
Redmine と Mercurial の連携 の続きです。今回は TortoiseHg から Redmine のチケットへのリンクを行います。 環境 Xubuntu 12.04 TortoiseHg 2.3 1. TortoiseHg を起動します。 2. 「ファイル(F)」から「設定(S)...」を選択します。 3. 「ユーザ設定」または「リポジトリ設定」のタブを開きます。 4. 「課題管理」をクリックします。 5. 課題の正規表現に #([0-9]+) を入力します。 6. 課題へのリンクに http://redmineのアドレス/issues/{1} を入力します。 7. 「OK」ボタンをクリックします。 8. TortoiseHg を再起動します。 以上です。 Windows バージョンの TortoiseHg でも設定は同じです。 以下は www.redmine.org を使用した例です。

Xubuntu 12.04 に TortoiseHg をインストール

Windows 環境では非常に便利な Mercurial の GUI クライアント TortoiseHg ですが、Xubuntu でも動作します。 Ubuntu ソフトウェアセンターから Graphical tool for working with Mercurial をインストール, もしくは $ sudo apt-get install tortoisehg 以上です。インストールされるのは若干古めのバージョンです。新しいバージョンを利用したい場合は ppa を利用します。 $ sudo add-apt-repository ppa:tortoisehg-ppa/releases $ sudo apt-get update $ sudo apt-get install mercurial $ sudo apt-get install tortoisehg 以上です。

Xubuntu 12.04 へリモートデスクトップ接続

イメージ
4/28 に公開された Xubuntu 12.04 に Windows からリモートデスクトップ接続を試みました。 1. Ubuntu ソフトウェアセンター から Remote Desktop Protocol (RDP) Server をインストールします。もしくは $ sudo apt-get install xrdp でインストールします。インストールの後、自動的にサービスが起動します。 2. ifconfig コマンドで IPアドレスを調べておきます。 3. Windows でリモートデスクトップ接続を起動し、先に調べた IPアドレスに接続します。 4. xrdp に接続します。ユーザー名とパスワードを入力します。 5. 接続できました。 6. 初期状態では日本語キーボード配列になっていません。 こちら のサイトに定義ファイルがありましたのでそちらをダウンロードして中身を /etc/xrdp へコピーします。 コピーしたのち xrdp を再起動します。 $ sudo service xrdp restart 7. 初期状態ではTAB キーが正しく使用できません。 ホームフォルダにある .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xmlの <property name="<Super>Tab" type="string" value="switch_window_key"/> を次のとおりに変更し,xrdp を再起動します。 <property name="<Super>Tab" type="empty"/> 以上です。おつかれさまでした。 リモートからのみログインするとなにかクラッシュするようです。が、そのまま使用できます。

Redmine と Mercurial の連携

先にインストールした Redmine と Mercurial は一つのサーバーで動作させることができます。 Redmine と Mercurial を連携させるための設定を行いました。  1. Redmine の config/configuration.yml をテキストエディタで編集し、hg コマンドのパスを指定します。 scm_mercurial_command: C:\Python26\Scripts\hg.bat 2. Redmine のサービスを再起動します。  3. Redmine のプロジェクトでリポジトリのモジュールを有効にします。 4. Mercurial を選択します。 5. ローカルリポジトリのパスを指定します。 以上です。お疲れ様でした。

Mercurial on IIS

イメージ
Windows Server 2003 R2 (x86) で Mercurial Server を立てました。 IISの導入 Windows Server 2003 R2 で IIS を動作させます。 1. アプリケーションサーバーの役割の追加 サーバーの役割管理を起動する。[役割を追加または削除します] をクリックします。 [次へ(N)>] ボタンをクリックします。 [ブロックを解除する(U)] ボタンをクリックします。 [アプリケーションサーバー(IIS、ASP.NET)] を選択し、[次へ(N)>] ボタンをクリックします。 アプリケーション サーバーのオプションは選択せず、[次へ(N)>] ボタンをクリックします。 [次へ(N)>] ボタンをクリックします。 2枚目のCD-ROMをドライブに入れて[OK]ボタンをクリックします。 [このサーバーはアプリケーション サーバーになりました]と表示されます。[完了]ボタンをクリックしウィザードを終了します。 インターネットエクスプローラで http://localhost/ へアクセスし、デフォルトのページが表示されることを確認してください。 2. Windows ファイアウォールの設定 デフォルトの設定では外部のネットワークよりウェブサイトへの接続ができません。 Windows ファイアウォールを設定したまま、IIS のサービス提供を有効にする方法 を参考にファイアウォールの設定を行い、外部より接続できるようにします。 [設定(T)]ボタンをクリックします。 [Webサーバー(HTTP)] をチェックします。[編集(T)]ボタンをクリックします。 コンピューターの名前を確認します。 使用するプログラムの準備 http://www.python.org/download/releases/2.6.6/ より  Windows x86 MSI Installer (2.6.6)  をダウンロードしてインストールします。 http://mercurial.selenic.com/wiki/Downloa d より  Mercurial-2.1.2

Redmine 1.4.1 on Windows Server 2003 R2

Windows Server 2003 R2 で運用中の Redmine 1.3.x を Redmine 1.4.1 にアップデートしました。 環境 現在の環境は以下の通りです。 Windows Server 2003 R2 (x86) MySQL Community Server 5.1 (5.1.62 GA) Ruby 1.8.7-p357 Redmine 1.4.1 へアップグレード 1. 現在のサービスを削除しておきます。 >net stop redmine >sc delete redmine 2.  redmine-1.4.1.zip をダウンロードし、展開します。 3. 以下のファイルを 1.3.x から 1.4.1へコピーします。 config\additional_environment.rb config\database.yml config\configuration.yml 4. インストールしたプラグイン(vendor\plugins\)を 1.3.x から 1.4.1へコピーします。 5. 添付ファイル(files\)を を 1.3.x から 1.4.1へコピーします。 6. bundler をインストールします。 >gem install bundler 7. 必要のないものを除いて gem をインストールします。mysql を使っているのでそれ以外のデーターベースは除きます。rmagick は後から対応するので今はインストールしません。 >bundle install --without development test postgresql sqlite rmagick 8. データベースのアップデートを行います。 >set RAILS_ENV=production >rake generate_session_store >rake db:migrate >rake db:migrate:upgrade_plugin_migrations >rake db:migrate_plugins >rake tmp:cache:clear >rake tmp:sessions:clear 9

Redmine 1.3.2 on Windows Server 2003 R2

Windows Server 2003 R2 に Redmine 1.3.2 を導入しました。 環境 Windows Server 2003 R2 (x86) MySQL Community Server 5.1 (5.1.62 GA) Ruby 1.8.7-p357  Ruby は  http://rubyinstaller.org/ のものを使用しています。 http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/ より libmySQL.dll をダウンロードして、(Rubyのインストール先\)bin にコピーしておきます。 データーベースの準備 Redmine 用のデーターベースとユーザーを以下の通りに作成します。 データーベース名: redmine ユーザー名: redmine パスワード: password 1. MySQL Command Line Client を起動します。 2. データーベースを作成します。 mysql> create database redmine character set utf8; 3. ユーザーを作成します。 mysql> create user 'redmine'@'localhost' identified by 'password'; 4. アクセス権を設定します。 mysql> grant all privileges on redmine.* to 'redmine'@'localhost'; 5. CLIを閉じます。 mysql> exit Ruby gem のインストール Redmine の動作環境に合わせていくつかの gem はバージョンダウンする必要があります。 1. Rails のインストール >gem install rails -v=2.3.14 --no-ri --no-rdoc 2. MySQLアダプターのインストール >gem install mysql --no-ri --no