2011年12月30日金曜日

Lubuntuで.psファイルを置いたディレクトリを開くと固まる

ここ2,3日、LubuntuのPCのPicturesディレクトリをファイルマネージャで開くとCPU負荷が飛び上がって固まってしまう現象に悩まされていました。

他のディレクトリでは何の問題もないし、

仕事用のLubuntuのPCの方にも素材やら壁紙やら同じようにあっても何の問題もないので
違いを考えてみたところ、
ちょっと前に画像ファイルの変換を色々試していて.svg,.ai,.sk,.eps,.psなどのベクタフォーマットのファイルが転がっており、
プレビューを出そうとして処理が重くなっているのではないかと予想。

順にmvで別なディレクトリにどかしてみたら、
最後に.psファイルを取り除いて普通に開くようになりました。
svgは実際に使うので戻してみたら、svgは問題なし。

2011年12月21日水曜日

gitosisからgitoliteへの移行

gitosisのソース管理サーバを別サーバに移行する。
そのタイミングでgitoliteに移行。
移行先はUbuntu 10.04。
10.04ではaptでインストールできないので手作業で。

まずアカウントを作る。
$ sudo adduser git
パスワードは無効にしておく。
$ sudo vim /etc/shadow
git:$6$...:0:...
となっている部分を
git:*:0:...
に書き換える。

gitアカウントに乗り移る。
$ sudo su git
(git)$ cd
大抵のチュートリアルは別PCからセットアップするような手順になっているが
諸事情によりサーバ側でやる。

ssh鍵作る。
(git)$ ssh-keygen
gitoliteをgithubからもらってくる。
(git)$ git clone https://github.com/sitaramc/gitolite.git
インストールはrootで。
(git)$ exit
$ cd /home/git
$ sudo mkdir -p /usr/local/
$ sudo gitolite/src/gl-system-install
gitアカウントのssh鍵でセットアップしようと思うが
id_rsa.pubという名前のままはアレなので。
$ sudo su git
(git)$ cp .ssh/id_rsa.pub git-server.pub
(git)$ gl-setup git-server.pub
エディタが開くがそのまま閉じる。

別サーバからリポジトリを移行。
(git)$ cd repositories
(git)$ rsync -azr gitosis@gitserver:/home/gitosis/repositories/* .
作業ディレクトリを作って、gitoliteの管理用リポジトリを取得。
(git)$ cd ~
(git)$ mkdir work
(git)$ cd work
(git)$ git clone git@localhost:/gitolite-admin.git
gitosisの管理用リポジトリも取得。
(git)$ git clone ~/repositories/gitosis-admin.git
公開鍵をgitosisからgitoliteにコピー。
(git)$ cp gitosis-admin/keydir/* gitolite-admin/keydir/
gitosis.confをgitolite用に変換。
(git)$ gl-conf-convert < gitosis-admin/gitosis.conf > gitolite.conf
このgitolite.confにはgitolite-adminにアクセスするための設定が無いので、
追加してから上書き。
(git)$ cat gitolite-admin/conf/gitolite.conf >> gitolite.conf
(git)$ cp gitolite.conf gitolite-admin/conf/gitolite.conf
変更をcommitし、push
(git)$ cd gitolite-admin
(git)$ git add keydir/*
(git)$ git add conf/gitolite.conf
(git)$ git commit -m 'migrate'
(git)$ git push
要らないディレクトリやファイルを削除。
(git)$ rm -rf ~/work ~/gitolite
(git)$ exit

2011年12月13日火曜日

lubuntuのシステムトレイの右に余白が表示される

ふと思い立ってlubuntuにしました。
といっても単にubuntuで
apt-get install lubuntu-desktop
して再起動しただけ。
デフォルトで下に表示されるパネルを上に持ってくると、懐かしいあの感じになりました。

しばらく使ってて、ふと気付いたのがシステムトレイ。
システムトレイのIMEやネットワークのアイコンと時計の間に
変な余白が空いていました。
右クリックしたり色々してみると、どうもシステムトレイの右側が伸びている様子。
右クリックのPanel Settingから、System Trayを一度消して再度追加すると
余白が消えてきれいな表示に。

検索してみる。あった。
http://ubuntuforums.org/showthread.php?t=1766304

スクリプトをコピペ。
#!/bin/bash

killall lxpanel
find ~/.cache/menus -name '*' -type f -print0 | xargs -0 rm
lxpanel -p Lubuntu &
fixsystray.shとかそれっぽい名前で保存して、chmod u+xして実行。
パネルが再表示されて、きれいな表示に。

ちょっと力技っぽくてイマイチだけど、用は足りるね。

2011年12月2日金曜日

Zend FrameworkでContent-Dispositionヘッダが二行出る

Zend Frameworkを使用しているWebアプリで
あるxlsファイルをダウンロードさせようと
$filename = 'attachment; filename="Download.xls"';
$resp = $this->getResponse();
$resp->setHeader('Content-Type', 'application/vnd.ms-excel');
$resp->setHeader('Content-Disposition', $filename);
$resp->appendBody(file_get_contents($filepath));
$resp->sendResponse();
みたいに書いた。

動かしてみたら問題なく動いた。

と思ったら、他の数人からChromeでアクセスした際に
エラー 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): 複数の Content-Disposition ヘッダーを受信しました。これは、HTTP レスポンス分割攻撃を防ぐために禁止されています。
と出るとの話を聞いた。

自分もChromeなのに別に何も出ない。

一体どう複数なんだいとパケットキャプチャ。
HTTP/1.1 200 OK
Date: ■■■■■■■■■■■■
Server: ■■■■■■■■■■■■■
X-Powered-By: PHP/5.3.4
Expires: ■■■■■■■■■■■■■
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Disposition: attachment; filename="Download.xls"
Content-Disposition: attachment; filename="Download.xls"
Connection: close
Transfer-Encoding: chunked
Content-Type: application/vnd.ms-excel
ぐうの音も出ない程に複数。

同僚の人からアドバイスをゲット。
第三引数をtrueにして上書きにすればいいのでは、とのこと。

変更してみた。
$resp->setHeader('Content-Disposition', $filename, true);
ヘッダが正しく一行だけ出るようになった。

でもソース内で他にContent-Dispositionを設定している所なんかない。
(そもそも上の例でこそファイル名をDownloadで固定にしているが実際はその場で作成している)

なんなの。