androidのz-indexのバグ

スマートフォン向けwebアプリを開発中にz-indexを使うことになり、androidでうまく動かなかったのでメモ。

やりたかったのは、ボタンのonclickでポップアップのようにiframeを表示すること。

で実際にやってみたらiphoneだとうまくいくのだがandroid(galaxy s)だとうまく動かない。

(iframeの下にあるページのリンクもクリックできちゃう)

これはまずいということで、ググったら以下のページにあたった。

Android のブラウザのフォーカスが z-index を無視しているバグがなおらない - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech

で、ここを参考にしようと思ったのだが、記事にもあるとおり

ただ、この方法ですと、onclick ハンドラが設定されている場合に対処できません (onclick ハンドラは、設定するだけで「フォーカス可能」な要素となるみたいです)。これについては対処方法が思いつかなかったのでひとまず放置されています

てわけで、今やろうとしてることには対処できない。

うーん、と悩んだ結果「iframeのリンクがある場所の下に、元のページのリンクがなければよい」という結論に至り、

「いっそのこと下のやつら全部display:none;しちゃうか」という同僚の一言で、下のやつらを全部display:none;に。

ただ、ポップアップ調にしているのでiframeの部分は元のページよりいくらか小さく、そのため下のやつらを消した瞬間に
下が思いっきりレイアウトを崩していた。

「じゃあonclickのタイミングで下に別画像を差し込めばいい」という同僚の一言で、画像を差し込むことに。

で、結局これでとりあえず望みどおり動いた。

今一正解かどうかわからない解決法なのだが、暫定処置である。

もっといい方法をご存知の方、是非ご教授ください。。。

ubuntuのredmineにgitosis pluginsを入れるの巻

本格的にgitを使うということで前回までにソース管理サーバにgit + gitosisなんかを入れてたのだが、次はredmineでgitosisを使えるようにする

redmineとgitosis gitは導入済みの状態で



cd /usr/share/redmine
sudo script/plugin install git://github.com/xdissent/redmine_gitosis.git
cd vendor/plugins/redmine_gitosis/
sudo rake db:migrate:plugins RAILS_ENV=production

ここまでやって色々エラーが出た。どうやら入ってないものが色々あるらしい、それらを入れる。


sudo gem install lockfile net-ssh inifile

これでいいはず、あとはapacheを再起動


sudo service apache2 restart

これでおk、gitosisの内容が参照できるようにグループ設定


usermod -G gitosis www-data

あとはredmineの管理画面から管理→プラグイン→設定(Redmine Gitosis plugin)で、

Gitosis identity file /srb/gitosis/.ssh/id_rsa

Developer base URL(s) ssh://gitosis@ドメイン

プラグインの設定はおk

次に個人の設定。個人設定→Public keysで自分の公開鍵を設定

既にリポジトリがある場合はプロジェクト→リポジトリからGitを選択すると表示される



sshの鍵消せないの?とか、プロジェクト名とリポジトリ名をひも付けているの?とか調べていないことが多々あるので今後は調査が必要そうだ


以下を参考にさせていただきました。ありがとうございます

Redmineとgitosisプラグインでgitosisを使う | misty-magic.h

http://www.x2on.de/2011/04/23/tutorial-redmine-with-git-and-gitosis-on-ubuntu-11-04/

Ubuntuでの/var/lib/mysqlファイルの引っ越し

awsmysqlapache、/var/wwwといったファイルを引っ越した際にmysqlだけ起動できなかった。

色々調べてみると、apparmorというアプリがmysqlの書き込み可能なディレクトリを制限しているらしく、それを修正したらできた。

そろそろサーバ構築用シェルスクリプト作らないと。

参考にさせていただきました。ありがとうございます。
http://wiki.paulownia.jp/ubuntu#%E3%83%87%E3%83%BC%E3%82%BF%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E7%A7%BB%E5%8B%95

ec2でroot deviceをinstance-storeからebsへ

やり方は次を参考にさせていただきました。

ありがとうございます。

instance-storeのEC2をEBSブートのEC2に変換する - 雑記帳(2011-10-07)

でここで私が軽くはまった点を。



AMIを作成して新しくインスタンスを立ち上げてもSSHできない。。。

という状況になってしまいました。

そこで、以前どこかで「Kernel IDをちゃんと設定したほうがいい」というのをみたのを思い出しました。

もともとのinstance-storeでのKernel IDを確認し、インスタンス立ち上げの際に同じKernel IDを設定したところSSHの接続ができ、晴れてinstance-storeからebsのAMIを作ることができましたとさ。めでたしめでたし。

ec2のubuntu serverにgit gitosisをいれつつ、ローカルでは.ssh/configを設定

ubuntuサーバのamiはIndex of /releases/lucid/releaseで確認しておく。

とりあえず10.04 LTS Lucid Lynx を選択。


で本題のgit gitosisについて。

それぞれの入れ方はUbuntu 11.04 Gitサーバー(後編) | 書きかけの技術書+を読めば理解できる。

ec2のユーザでgitosis-initするのでその後の操作はec2上でやること。

gitosis-adminをcloneしてgitosis.confで


[repo hoge]
description = fuga
owner = name
daemon = yes
.
.
.
なり、http://progit.org/book/ja/ch4-7.htmlに書いてあるようにgroupだけの追加だけでもok。

ちなみに私はgroupでやって2回ほどmenbersと書いてしまい、なぜうまくいかないかわからず途方に暮れたことがある。membersですよね。

さておき、taroというユーザを追加したとする。
すると(先ほどrepoはやったので)groupの場合は以下のようになる。


[group test]
writable = test_project
members = taro
次にtaro用に作ったid_rsa.pubファイルをgitosis-admin/keydir/taro.pubと配置する。
これでgitosis.confとgitosis-admin/keydir/taro.pubをadd commit pushすればtaroはローカルでtestプロジェクトを作成してpushすることができる。

実際に


ssh -i ~/.ssh/id_rsa gitosis@ec2-0-0-0-0.ap-northeast-1.compute.amazonaws.com
なんてやってみるとちゃんとつながって、コマンドがないよみたいなエラーが出る(Ubuntu 11.04 Gitサーバー(後編) | 書きかけの技術書+参照)。

ここで.ssh/configを設定したくなるのが人情である。

ということでローカルで.ssh/configを作成し

以下のように設定する(参考~/.ssh/config で簡単に複数ホストへのSSH接続を管理する - すぱぶろ)


Host 適当な名前
HostName ec2-0-0-0-0.ap-northeast-1.compute.amazonaws.com
IdentityFIle ~/.ssh/id_rsa
User taro
これでtaroユーザで色々操作ができるようになった。

実際に


mkdir test
cd test
git init
touch readme
git add readme
git commit readme
git remote origin gitosis@適当な名前:test.git
git push origin master
と打てば新しいレポジトリにpushができる。

めでたしめでたし。