PuTTY+LaunchyをUSBメモリに入れて快適に使う

2012 年 4 月 20 日 コメントはありません

PuTTYごった煮版は接続先設定をデフォルトでレジストリに保存するが、インストールディレクトリにputty.iniという名前のファイルが存在すると、そこに設定を保存するようになるのでUSBメモリに入れて持ち歩ける。

Launchyはオプションでポータブルモードを選択するとUSBメモリに入れて持ち歩けるようになる。

LaunchyからPuTTYに登録された接続先を呼び出すにはputty launchy pluginを入れるといい。
このプラグインは基本的に本家のPuTTYかportaPuttyの使用を前提としているため、デフォルトの設定ではPuTTYごった煮版のiniファイルから接続先情報を拾ってきてくれないが、以下の手順で上手く連携できる。

PuTTYのインストールディレクトリの中に適当なフォルダを作る。(ここではsessionという名前とする)
そのフォルダの中に空っぽのファイルを作る。ファイル名はputtyに登録されている接続先のホスト名と同じにしておく。
Launchyの設定画面を開き、プラグインの設定 → putty launchy pluginの設定画面へと進み、Sessionsタブで
・Filesystemにチェックを入れる。
・Load Optionには「-load」と書く。
・Directoryには上で作ったsessionフォルダを指定する。

これでLaunchyで「putty」とか「ssh」と入力してTABを押せば、sessionフォルダの中のファイル名(接続先名)が候補として現れ、好みのものを選ぶとputtyが立ち上がる。接続先名の補完も働くので楽だ。

カテゴリー: 未分類 タグ:

gitで日本語ファイル名を表示する

2012 年 1 月 13 日 コメントはありません
git config --global core.quotepath false

としておくと

git ls-files

とかでファイル名を表示する時にちゃんと日本語で表示される。

カテゴリー: 未分類 タグ:

LinuxMintを本気で使ってみた記録

2011 年 12 月 7 日 コメントはありません

Linuxカーネルの開発者が使ってるディストロはMintだいう記事に触発されて俺も使ってみたぞ。
Mintの最新バージョンは12だけど、Gnome3やらLinuxカーネル3やらが使われてて、メインマシンとして使うにはまだ枯れてないと思われたので、とりあえずバージョン11をインストールした。

インストール

普通にダウンしてISOをDVDに焼いてインストールした。日本語環境がいまいち安定してないという噂を見たので、ひとまず英語環境でインストール。
※後に日本語も問題なく使えることがわかった。

アップデート

アップデートする前にコントロールセンターのソフトウェア・ソースでデータの取得元を日本に設定。これやらないと時間がかかりまくる。
あとはアップデートマネージャーで普通にアップデート。

日本語環境のインストール

コントロールセンターの言語サポートで日本語を追加。
地域フォーマットタブで数字や日付の表示フォーマットを日本語に変更。
Google日本語入力が無いと生きていけないので「ソフトウェアの管理」からibusとibus-mozcをインストール。
iBusの設定で言語パネルを表示するように設定しないとGoogle日本語入力の細かい設定ができないので注意。
Ubuntu用に提供されているフォントをインストールする。

Kupferのインストール

Gnome Doよりシンプルで使いやすい。Winで使ってたLaunchyの代わりになる。
プラグインも豊富。

Chromeのインストール

普通にDebian用のパッケージをDLして開けばインストールできる。

Rictyフォントのインストール

プログラマ御用達の可読性抜群のフォントRictyをインストールする。
手順はMigu 1MフォントをDLして解凍して、以下のコマンドでインストール。

sudo mkdir /usr/share/fonts/truetype/migu-1m
cp *.ttf /usr/share/fonts/truetype/migu-1m/
fc-cache -f

あとはRictyのサイトに書かれてる手順に従うだけ。
出来上がったttfファイルをMigu 1Mと同様の手順でインストールすれば完了。
ターミナルにRicty使うと文字サイズを小さくしても見やすいから作業が楽!!

窓使いの憂鬱をインストール

変態キーバインドを実現するにはgnomeのコンパネから設定できる項目じゃ不十分なので。
この作業はrootでやったほうがいいので

sudo su -

でrootになっておく。
ここからLinux対応版のソースを落とす。
窓使いの憂鬱LINUX版配布サイト
コンパイルに必要なパッケージを入れておく。

apt-get install boost* libboost* libudev-dev libusb-1.0.0-dev

あとは普通に解凍して ./configure && make && make install でOK!

/root/.mayuというファイルを作り、中身を

include "linux109.mayu"
keymap Global

#Escと半角全角の入れ替え
key Esc = HankakuZenkaku
key HankakuZenkaku = Esc

#無変換キーをAltキーとして使用
mod alt += Muhenkan
key *Muhenkan = *LeftAlt

#左Altキーを全角半角キーにする
mod Alt -= LeftAlt
key LeftAlt = HankakuZenkaku

みたいにして保存。
窓使いの憂鬱Manualなどを参考に.mayuを修正。
※無変換や半角/全角などの日本語キーはMuhenknaやHankakuZenkakuとする。
使用可能なキーはmayuのソースのlinux109.mayuを見ると載っている。
窓使いの憂鬱を動かすには

mayu

これだけ。
OSの起動時にデーモンとしてmayuを立ち上げるなら
/etc/init.d/mayuというファイルを作り、パーミションを755にして、中身をこうする。

#! /bin/sh

DAEMON=/usr/local/bin/mayu
NAME=mayu
USER=root
USERDIR=/root
DESC="Mayu(Mado-tsukai-no-yuutu)"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/mayu

do_start()
{
        echo -n "Starting $DESC: "
        if start-stop-daemon --stop --quiet --pidfile $PIDFILE \
                        --signal 0
        then
                echo "already running."
                exit
        fi
        env HOME=$USERDIR \
        start-stop-daemon --user $USER --start --quiet --background \
                                          --make-pidfile --pidfile $PIDFILE \
                                          --exec $DAEMON
        echo "started"
}

do_stop()
{
        echo "Stopping $NAME"
        start-stop-daemon --stop --pidfile $PIDFILE
        rm -f $PIDFILE
}

case "$1" in
        start)
                do_start
        ;;
        stop)
                do_stop
        ;;
        restart)
                do_stop
                do_start
        ;;
        *)
                echo "Usage: $0 (start|stop|restart)"
        ;;
esac

そして、

update-rc.d mayu start 10 2 . stop 10 0 1 3 4 5 6 .

でOK。

カテゴリー: 未分類 タグ:

macを買ってやったこと

2011 年 12 月 7 日 コメントはありません

WindowsとLinuxしか使ったことがなかったけど、ひょんなことからMacを買う必要に迫られてMacBookPro(Lion)を買ったはいいけど、全然慣れない。
Macのルールに合わせて一流のマカーになろうかとも思ったが、断念。
逆にMacを俺のルールにを合わせようと悪戦苦闘した記録。
もしかするとすぐMacから離れるかもしれないから覚えてるうちに記録しとく。
例によって自分以外の人が読んでも得は無いと思う。

キーボードの配列を俺好みに

WinではAutoHotKeyを使ってvimチックなキーバインドを使ってた。
Linuxでも窓使いの憂鬱を使って同様のことをした。
Macではこんな感じで設定した。
まず、commandやらcontrolなどの装飾キーを入れ替え。

次にKeyRemap4MacBookを使ってゴニョゴニョ。

Nishide’s hackってのはKeyRemap4MacBookに予め用意されてる設定だけだと不十分だったので、private.xmlで追加したもの。

<?xml version="1.0"?>
<root>
    <list>
        <item>
            <name>Nishide's hack</name>
            <list>
                <item>
                    <name>JIS_EISUU to OPTION_L</name>
                    <identifier>private.jis_eisuu2option_l</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::JIS_EISUU,
                        KeyCode::OPTION_L
                    </autogen>
                </item>
                <item>
                    <name>JIS_KANA to COMMAND_L</name>
                    <identifier>private.jis_kana2command_l</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::JIS_KANA,
                        KeyCode::COMMAND_L
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + @ to toggle input mode</name>
                    <identifier>private.option_l_plus_atmark2toggle_input_mode</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::JIS_ATMARK,ModifierFlag::OPTION_L,
                        KeyCode::VK_JIS_TOGGLE_EISUU_KANA
                    </autogen>
                </item>
                <item>
                    <name>COMMAND_L + [ to ESCAPE</name>
                    <identifier>private.command_l_plus_bracket2escape</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::BRACKET_RIGHT,ModifierFlag::COMMAND_L,
                        KeyCode::ESCAPE
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + hjkl to cursor move</name>
                    <identifier>private.hjkl_to_cursor</identifier>
                    <!-- OPTION_L + hjkl to CURSORs -->
                    <autogen>--KeyToKey--
                        KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_LEFT
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_DOWN
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_UP
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_RIGHT
                    </autogen>
                    <!-- OPTION_L + SHIFT_L + hjkl to SHIFT_L + CURSORs -->
                    <autogen>--KeyToKey--
                        KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_LEFT,ModifierFlag::SHIFT_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_DOWN,ModifierFlag::SHIFT_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_UP,ModifierFlag::SHIFT_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::SHIFT_L
                    </autogen>
                    <!-- OPTION_L + COMMAND_L + h/l to PC's ctrl + left/right -->
                    <autogen>--KeyToKey--
                        KeyCode::H,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
                        KeyCode::CURSOR_LEFT,ModifierFlag::OPTION_L
                    </autogen>
                    <!-- Option+L to PC's Ctrl+Right -->
                    <autogen>--KeyToKey--
                        KeyCode::L,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::OPTION_L
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + g; to HOME/END</name>
                    <identifier>private.option_l_plug_g_or_semicolon2home_end</identifier>
                    <!-- OPTION_L + g/; to HOME/END -->
                    <autogen>--KeyToKey--
                        KeyCode::G,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::SEMICOLON,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L
                    </autogen>
                    <!-- OPTION_L + SHIFT_L + g/; to SHIFT + HOME/END -->
                    <autogen>--KeyToKey--
                        KeyCode::G,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::SEMICOLON,ModifierFlag::OPTION_L|ModifierFlag::SHIFT_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
                    </autogen>
               </item>
               <item>
                    <name>OPTION_L + jk to PAGEDOWN/PAGEUP</name>
                    <identifier>private.option_l_plug_g2homea</identifier>
                    <!-- OPTION_L + j/k to PAGEDOWN/PAGEUP -->
                    <autogen>--KeyToKey--
                        KeyCode::J,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
                        KeyCode::CURSOR_DOWN,ModifierFlag::FN|ModifierFlag::OPTION_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::K,ModifierFlag::OPTION_L|ModifierFlag::COMMAND_L,
                        KeyCode::CURSOR_UP,ModifierFlag::FN|ModifierFlag::OPTION_L
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + o to add new line under current line</name>
                    <identifier>private.option_l_plus_o2add_new_line</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::O,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L,
                        KeyCode::ENTER
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + yp to copy/paste</name>
                    <identifier>private.option_l_plus_yp2copy_paste</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::Y,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::C,ModifierFlag::COMMAND_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::P,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::V,ModifierFlag::COMMAND_L
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + ur to undo/redo</name>
                    <identifier>private.option_l_plus_ur2undo_redo</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::U,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::Z,ModifierFlag::COMMAND_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::R,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::Z,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + d to delete current line</name>
                    <identifier>private.option_l_plus_d2delete_line</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::D,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::CURSOR_LEFT,ModifierFlag::COMMAND_L,
                        KeyCode::CURSOR_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L,
                        KeyCode::FORWARD_DELETE
                    </autogen>
                </item>
                <item>
                    <name>OPTION_L + ,. to switching tab</name>
                    <identifier>private.option_l_plus_comma_or_dot2switching_tab</identifier>
                    <autogen>--KeyToKey--
                        KeyCode::DOT,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::BACKSLASH,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
                    </autogen>
                    <autogen>--KeyToKey--
                        KeyCode::COMMA,ModifierFlag::OPTION_L|ModifierFlag::NONE,
                        KeyCode::BRACKET_RIGHT,ModifierFlag::COMMAND_L|ModifierFlag::SHIFT_L
                    </autogen>
                </item>
            </list>
        </item>
    </list>
</root>

Launchyのインストール

Spotlightとかよりカスタマイズが楽なので。
あと、やっぱり使い慣れてるので。
インストール後、dockのオプションで全てのデスクトップに割り当てるようにするのを忘れないこと。

Growl入れる

定番か。金払いたくないので1.2.2をインスコ。
てか、この程度のツールに金払う文化に感服。いや、良い意味で。

Path Finder入れる

これも定番か。でも高すぎ。試用期間終わったらサヨナラだな。
他にいいのがないか探さないとイカンな。
とりあえずPathFinderは試したよという記録。

Senebier入れる

ウインドウの切り替えをキーボードだけで行いたいんだけど、アタリマエのことを当たり前にしたいだけなのだけど、こんなツールが必要とは。
出来れば「窓替え」みたいにmigemoに対応したツールがあれば最高なんだけど。ないかな。

iStat menus入れる

何バーって言うんだっけ?上のタスクバーみたいな奴。
そこにCPU使用率とか表示する奴。
これも有料?
ファック!!

Rictyフォント入れる

プログラマ御用達フォントだ。
入れ方はググるといい。
大人の事情で入れる手順がめんどくせぇ。

Homebrew入れる

Macの世界ではやってるパッケージ管理ツールか。
yumとかapt-getの親戚か?
いや、いちいちコンパイルする系か。時間かかるな。
macみたいに皆が同じハードの上で同じOS動かしてるならプリビルドのバイナリ配るパッケージマネージャが欲しいところ。

まあ、ひとまずこれくらいで力尽きた。

カテゴリー: 未分類 タグ:

CentOS6に窓使いの憂鬱をインストールする手順

2011 年 9 月 8 日 コメントはありません

私はWindowsではAutohotkeyを愛用している。
主にAlt+{h,j,k,l}をカーソル移動にする為に使っているんだが、コレに慣れるともう十字キーには戻れない。
LinuxでもAutohotkeyのようなことを実現するためにいろんなツールがあるけれど、まともに使えるのは窓使いの憂鬱くらいだ。
今回はCentOS6.0の64bit版に窓使いの憂鬱をインストールした。
めちゃくちゃ苦労したけど、これは覚書なので手順だけをサラっと書く。

ここからLinux対応版のソースを落とす。
http://www42.tok2.com/home/negidakude/

必要なパッケージをインストールしておく

yum install boost-* libudev-devel gcc-c++ libusb1-devel

解凍してconfigure

tar xfz mayu-0.12.tar.gz
cd mayu-0.12
./configure --with-boost-libdir=/usr/lib64

ソースを一部修正
d/linux/keydriver.cpp

#include <libudev.h>

という行を

extern "C" {
#include <libudev.h>
}

に修正。

あとは普通に

make && make install
カテゴリー: 未分類 タグ:

sftpでchrootする方法

2011 年 8 月 31 日 コメントはありません

opensshのバージョンが5以上であれば使える方法。
CentOS6やらawsのamazon linuxなら普通に使える。
覚書なのでハショって書く。
sftponlyというグループに属するユーザーには/var/www/htmlをルートディレクトリとして見せるようにする。

groupadd sftponly
useradd hoge
usermod -aG sftponly hoge
chown root:root /var/www/html
chmod 755 /var/www/html
mkdir /var/www/html/dir_for_hoge
chown hoge:sftponly /var/www/html/dir_for_hoge

/etc/ssh/sshd_config を編集する。以下、編集箇所のみ抜粋

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
AllowGroups fullssh sftponly
Match Group sftponly
 ChrootDirectory /var/www/html
 ForceCommand internal-sftp
 X11Forwarding no
 AllowTcpForwarding no

sshdを再起動して終わり。

service sshd restart
カテゴリー: 未分類 タグ:

AWSでGeoIPで海外からのアクセスを遮断した

2011 年 8 月 31 日 コメントはありません

このブログはawsで運用しているんだが、昨日アメリカのIPからDos攻撃を受けてパンクしてしまった。
というわけで応急処置として日本以外からのアクセスをIPで遮断しようと思う。
一番簡単な方法は.htaccessで遮断することだ。
日本のIPアドレスのみを許可する.htaccessはhttp://www.cgis.biz/tools/access/などで簡単に手に入るのでコレをj使うといい。
ただし、これをこのまま使うとリクエストの度に2500行以上ある.htaccessが読み込まれてパフォーマンスが著しく低下してしまう。なので、.htaccessではなく、httpd.confに直接書くことをオススメする。

もう一つの方法はちょっとめんどうだけど中国と韓国だけを拒否したいとか、日本とアメリカだけ許可したいなどといった要望も簡単に叶えられるようになる。
以前、IPアドレスから国名を割り出すapacheモジュールで海外からのアクセスを遮断でも書いたがGeoIPを使うのだ。今回はこれをAmazon web service のEC2上で行った。使用したAIMはAmazon Linux 64bit。

#GeoIPはyumで入れる
yum install GeoIP GeoIP-devel
#IPのデータベースを落としておく
wget  http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip -d GeoIP.dat.gz
mv GeoIP.dat /var/www
#apacheモジュールのダウンロード(コレより新しいバージョンは動かなかった)とインストール
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar xfz mod_geoip2_1.2.5.tar.gz
cd  mod_geoip2_1.2.5
apxs -i -a -L/usr/lib64 -I/usr/include -lGeoIP -c mod_geoip.c

/etc/httpd/conf.d/geoip.conf というファイルを作る。中身はこう。

LoadModule geoip_module       modules/mod_geoip.so
<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /var/www/GeoIP.dat
    SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
</IfModule>

好きなフォルダに.htaccessを作って、中身はこうする。

order allow,deny
Allow from env=AllowCountry

後はhttpdを再起動すれば、日本からのアクセスしか受け付けなくなる。
abで簡単にベンチマークを取ってみた限り、GeoIPを使う方法の方がわずかにパフォーマンスが高かった。

カテゴリー: 未分類 タグ:

phpExcelでグラフ付きのxlsxデータを読み込んで出力する方法

2011 年 7 月 13 日 コメントはありません

phpExcelというライブラリを使うと簡単なPHPスクリプトでxlsx形式のファイルを読み込んだり、出力したり出来る。
よくやるのは予めきれいにフォーマットされたxlsxファイルを読み込んで、セルに値をはめ込んで出力するという処理だ。
しかし、グラフが含まれているxlsxファイルを読み込んで、編集して、出力するとグラフが消えてしまう。

調べてみるとそういうものらしいが、一応解決方法も有るようだ。
それによると、元のファイル(グラフがちゃんと見える奴)を編集して別名で保存した後、元のファイルのシートデータを編集後のファイルのそれで上書きしてやるといいらしい。
それはこんな処理で出来るそうな。

public function updateOriginalFile($originalFile, $updatedFile) {

	$zipUpdated= new ZipArchive ( );

	$zipUpdated->open ( $updatedFile );

	$zipOriginal= new ZipArchive ( );

	$zipOriginal->open ( $originalFile );

	$xmlWorkbook=simplexml_load_string($zipUpdated->getFromName("xl/_rels/workbook.xml.rels"));

	foreach( $xmlWorkbook->Relationshipas $ele ) {

		if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") {

			$currentSheetName= "xl/". $ele["Target"];

			$updatedSheet=simplexml_load_string ( $zipUpdated->getFromName ( $currentSheetName ) );

			$origSheet=simplexml_load_string ( $zipOriginal->getFromName ( $currentSheetName ) );

			$origSheet->sheetData ="";

			$str=str_replace ( "<sheetData></sheetData>", $updatedSheet->sheetData->asXml(), $origSheet->asXml () );

			$zipOriginal->addFromString( $currentSheetName, $str );

		}

	}

	$updatedStrings=simplexml_load_string ( $zipUpdated->getFromName ( "xl/sharedStrings.xml"));

	$zipOriginal->addFromString( "xl/sharedStrings.xml", $updatedStrings->asXML () );

	$zipOriginal->close ();

	$zipUpdated->close();

}

私も試してみたがちゃんとできた。助かった。

カテゴリー: 未分類 タグ:

Gitで空ディレクトリを管理する

2011 年 7 月 8 日 コメントはありません

まあ、みんな知ってる話ですが自分用の覚書です。

Gitは空っぽのディレクトリは無視しちゃう。
空ディレクトリもバージョン管理の対象にしたいなら中に何でもいいからファイルを置く必要がある。
よく見るのは.gitignoreを置く方法だが、CakePHPならemptyってファイルを置いてるし、Railsとかだと.gitkeepを置くことが多いみたい。
全ての空ディレクトリにコマンド一発でemptyファイルを作るにはコレ。

find . -type d -empty -not -path './.git*' -exec touch {}\/empty \;
カテゴリー: 未分類 タグ:

EGitを使った開発の基本的な流れ

2011 年 7 月 7 日 コメントはありません

例によって覚書。
EclipseにEgitをインストールしてリモートのリポジトリをPHPプロジェクトとしてcloneするまでの手順。

  • EclipseにEGitをEclipse Marketplaceを使ってインストール。
  • File -> Import -> Git -> Projects from Git を選択
  • clone をクリックして現れる入力フォームを埋める
  • Next -> Nextとどんどん進んでFinish
  • Select a Git Repositoryという画面で今cloneしてきたリポジトリを選択してNextを選択
  • Use the New Projects wizardを選択してFinish
  • PHP -> PHP Project を押してNext
  • Project nameにcloneしたディレクトリ名を入れてFinish
カテゴリー: 未分類 タグ: