Eclipse PDTでSVNの比較が機能しない件

あちゃーこりゃひどいや。比較できなくてコミットできないじゃん。そりゃTortoise SVNに逃げるという作戦をとろうとしたけど、気持ち悪いし・・・。というわけで、eclipseとPDT(PHP)でSubversionの比較ができない問題の解決方法。

英語で調べてようやく見つけることに成功したのが、以下のページ。
326194 – Compare completely broken
タイトルがそのまんま、全く機能しないよ!?というバグ報告だった。

続きを読む

gitのパッチをGmailに保存する

git format-patchで作ったパッチ(というかメール)をどうやって送るのか考えていたところ、以下のサイトに行きつきました。
http://progit.org/book/ja/ch5-2.html
しかしながら、このサイトの内容は(たぶん)少し古いものでした。
git send-emailを用いてGmailに保存すると書かれていますが、この方法ではimapプロトコルで保存することはできません。

さまざまなメールソフトでの詳細なメール送信方法が、Git ソースコードにある Documentation/SubmittingPatches の最後に載っています。

早速原文を見てみると、以下のようになっていました。

To submit using the IMAP interface, first, edit your ~/.gitconfig to specify your
account settings:

[imap]
folder = "[Gmail]/Drafts"
host = imaps://imap.gmail.com
user = user@gmail.com
pass = p4ssw0rd
port = 993
sslverify = false

You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error
that the "Folder doesn't exist".

Once your commits are ready to be sent to the mailing list, run the
following commands:

$ git format-patch --cover-letter -M --stdout origin/master | git imap-send

「ルークよ、git imap-sendコマンドを使え。ドキュメントに完全には頼るな。パスワードを保存せずとも実行出来る。」
上記の引用のうち、「pass = p4ssw0rd」を削除しておくと、送信時にパスワード入力のダイアログが表示され、コンピュータ上に保存せずにすむ。
こうして、無事Gmailに保存することができたのだった。


ただし、オビ=ワンは次のようにも遺している。

Just make sure to disable line wrapping in the email client (GMail web
interface will line wrap no matter what, so you need to use a real
IMAP client).

「line wrap」というのはよくわからなかったが、Gmailは経験上、行頭のスペースを送信時にすべて一掃してしまうはずだ。これを防ぐには、IMAPクライアントを利用する必要がありそうだ。


DebianUbuntuSSLを用いてGmailに保存するためには、SSLを有効にしてgit-coreパッケージをビルドしなおす必要があります。詳しくは以下の記事を参照してください。
Ubuntuのgit関連パッケージが、DebianとOpenSSLとのライセンス関係で、SSL非対応な件+Ubuntuでパッケージをビルド - yuya_prestoの日記


追記:Thunderbirdだと、自動改行をとめないとパッチがガラクタになってしまいます。次のリンクを参考に無効にしましょう。「教えて!Ziddyちゃん」サービス終了およびサービス移行のご案内


追記その2:書き忘れていましたが、git commitの際のメッセージの1行目が件名に、それ以外が本文になるようです。これを考えた上でコミットメッセージを書くべきですね。

Ubuntuのgit関連パッケージが、DebianとOpenSSLとのライセンス関係で、SSL非対応な件+Ubuntuでパッケージをビルド

cat 0001-xxx.patch | git imap-send だ!!
んん???何だこのエラーメッセージは。

SSL requested but SSL support not compiled in

いまどき何でSSLが使えないの!?

答えはとても簡単でした。以下のリンクにありました。
https://bugs.launchpad.net/ubuntu/+source/git-core/+bug/432786

Debianではライセンスの都合上、OpenSSLをリンクできません。SSL使いたかったら、GnuTLSを使うように修正してちょ!」いやいや、ちょっとまて。upstreamを大幅に変更することになってしまうじゃないか。Ubuntuだけ、ちゃんとリンクさせるようにオプション変更した別パッケージを用意する、なんてことはできないのやら。

続きを読む

CIFS上でコンパイルすると、Value too large for defined data typeみたいに怒られた件

Windows x64のファイル共有をサーバにしてファイルを置き、Windows上でコーディングして、セプキャンで頂いたPC上のUbuntu Linux x86(インストールCDがx86だったのです・w・;)でコンパイルを行うというような暴挙(?)にでています。
もちろん、Windowsのファイル共有に接続する際には、mount -t cifsを使っているわけなのです。
ところが、mountされたディレクトリ上でコンパイルを実行すると、何やら不吉なメッセージが出て、コンパイルがうまくいきません。

Value too large for defined data type

どーいうこっちゃ!?と調べてみると、ファイルサイズや、読み書き位置を指定するためのオフセットを格納する変数のサイズが、32bitシステム上だし、32bitとしてコンパイルされているのが原因かもしれないというのです。
http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Value-too-large-for-defined-data-type

しかし、別にファイルサイズが2GB超えるとか、ファイル自体が見えないわけでもないので、おかしいなと思って調べてみると、mount -t cifsのオプション「noserverino」に辿り着きました。
https://bbs.archlinux.org/viewtopic.php?id=85999

これを付けてmountすると、ばっちりコンパイルできた。
Linuxにおけるcifs client実装では、inodeは極力サーバのinodeを用いるというようになっているようです。そこで、64bitOS上の64bitサイズを持つinodeをそのまま使おうとしたところ、32bitでコンパイルされたプログラムで問題が発生した、ということのようです。あくまでも類推なので、参考程度にしてください。

なお、Windowsファイル共有のLinuxからのmountには、mount.cifsを用いります。Ubuntuでは、smbfsパッケージに含まれています。何もインストールしなくてもcifsに対応している素振りを見せたような気がしますが、利用の際はインストールしておくことをおすすめします。確か何か問題があったはず。

2010/11/06: 関西オープンソース2010(レポートではなく日記)

残念ながら寝坊しましたが参加してきました!


いきなりセミナーGOで、[twitter:@tehutehuapple]君の講演へ(遅れて登場)。
やっぱりAndroidアプリを作りたい!!ってなってしまった・w・;
広告の出し方(Ad-to-Ad)とか、PCとはデザインが大幅に違うよ、とか。
情報系だけじゃなくて、いろんな勉強をする、ということを聞いて、原点に立ち返らされたような気がした!


[twitter:@mine_studio]君と[twitter:@hiromu1996]君の講演にも登場、IPv6の話が出てた。ちなみに、言おうか迷ったのだけれども、なんかツッコまれそうな気がして言わなかったこと。
IPアドレスが枯渇→キャリアグレードNAT等→P2P自宅サーバが壊滅→焼け野原に平和なインターネットが建造される・・・というのが僕の予想です・w・;
てか、hiromu君がずっとおもしろかってみんなの笑いを誘っていた。
キャラさいこー・w・ノノ
その会場で[twitter:@tyage]君に会い、そして[twitter:@naota344]に再びばったりし、[twitter:@Pasta-K]君と[twitter:@watura]君のところに!セキュキャンとか91とか、そっち周りの人が多すぎてびっくりした・w・;


その後Chrome拡張の講演を聴きに行って、HTML5すげーになった。とくにFileとかドラッグとかはネイティブアプリと遜色ないからびっくり!
しかもChromeの拡張めっちゃ作りやすそう!
あと、HTML5ROCKSというサイトを知った。サンプルがいっぱいあっていい感じのようです!ちなみにMade by Google!


その後[twitter:@naota344]の開発というかLive Bug Fixを見てて、すげーと思いつつ・w・!セプキャン後もあれこれパッチ投げてると聞いて正直焦燥感・w・;;;僕もがんばろう・w・ノ
てかGentooJPのブースにお邪魔させていただいていたのに、本当の野次馬と化していたので申し訳なかった汗


その後遅れて登場の[twitter:@daisuke_k]先輩にも会い、てかずっとタメ語だったけどあとから考えると|||・w・;
大学の話とか研究室の話とかもしました・w・ノ 学部とはいえ、研究室選びはいろいろ難航しそうな気がしたのでした。
ところで最後のイベントで、[twitter:@daisuke_k]先輩がステージの方をみながらAirKannaでゲットしたアメを口に入れていたのがびよんびよんさせてたなっていたのがとっても面白かったのですけど・w・ノノ


そろそろLightning Talkぐらいできるようになりたいなぁと、みんなが講演をしているのをみて思ったのだった・w・;


http://k-of.jp/2010/index.html

Gmailが重い?+DNSキャッシュ削除@Windows

最近Gmailが重い(反応が遅かったり、「しばらくお待ちください...」になる)ことが時々ある。
ただし、PCやChromeを起動しっぱで使っているのだけれども・w・;
残念ながら新しいタブで別のGmailを開けても解決はしない。
しかも、重いときに隣のPC(PPPoEで別IPアドレスが振られている)からやってみると、ぜんぜん軽かったりする。
残る原因といえば、DNSキャッシュである。

続きを読む

Linuxにおけるsyncookiesの実装

あまりにも忙しいので、とりあえず。この記事は後で修正する!

サーバに大量のSYNを送りつけることで、サーバ側で接続待ち状態のコネクションを保持するキューをあふれ返させる(つまりそれ以降の接続要求は破棄される)ことで、接続をしにくくするのが、SYN Flood攻撃。
SYN cookiesとは、この「SYN Flood」攻撃への対策のための仕組みです。
というわけで以下、Linuxでのこの実装に関してコアな感じ。

続きを読む