2014/12/10

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする(2)

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする で書いた話の続き。

どうやらread timeout値 15秒を変更できないのは、アプリケーション側の仕様らしい。改善要望として受理された。

ただ、今まで行けていたものが、なぜダメになったのかについては、やはりJavaの仕様が変わったためらしい。
パケットキャプチャして見ていると15秒後にAbandonRequestを発してあきらめているのだが、まさしくこのAbandon Request メッセージがLDAP v3の仕様で Javaの(少なくとも)1.7.u72のではサポートされたからだとのこと。これまでは、UnboundRequest だけを投げて、とりあえず返答が返ってくるまで待っていたようだ。

Java8でも同様の仕様とのこと。

やはり、アプリ側でread timeoutの値を長くして待つか、LDAP側のデータ自体を速く答えが返るようにする(検索範囲を狭くする、グループをネストしないなど)、の二択。

2014/11/27

MTBのリアディレイラーエンドを交換するの巻

まだ普通の乗用車が化石燃料を燃やして4つのタイヤを地面に接地させて走っていた20世紀の終わり、うちにはそんな時代に購入したMTB(早い話自転車です)がありまして- GTのTempestと言います- 先々週の休みに何気にリアのディレイラー(後ろのギヤを替える装置です)を触ったらグラグラしています。ぐらっぐらです。よく調べたらリアディレイラーがまったく固定されておらず、ネジを締めても締めても止まらない。おかしいと思ったらネジが完全にバカになっていて、ただ刺ささっているだけ! スポっとディレイラーが外れてしまいました。危険すぎるだろ。

問題の部分は、本体フレーム - 金属のプレート - リアディレイラー という構造になっていて、この金属のプレート、「リアディレイラーエンド」もしくは「リアディレイラーハング」というそうです。汎用の部品ではなく、フレームに合う形の専用品です。これを正常な部品に取りかえなければなりません。先のとおり、199x年かの製品で、メーカーのサイトにも部品が出てこない。調べたところ、形からしてこれだなというパーツを載せているネットショップがあったのですが、取り寄せ、送料有り、な状態なので、どうせなら近所の自転車屋に頼もうと決めました。で、そのウェブページをプリントアウトして持参。

どの自転車屋に行くかの段階でも三部作くらい書ける程、色々あったのですが、要約すると、遅くまで営業している店を1店だけ偶然見つけたので、そこに決定。

事情を説明し、何年ものか断定できないけど、バイク名とそのウェブページのプリントアウトしたものをみせ、このパーツだと指定。自転車屋さんも持参した紙をコピーして 赤のサインペンでぐるっと丸く囲みました。翌日、メーカーで確認とれたので発注しますと連絡があり、週があけて昨日、納品連絡。

その日のうちに早速、自転車屋さんに受けとりに行くと、
「これじゃないです!!!」
赤のサインペンで丸で囲んだ隣りのパーツです。なんで間違った!
「すみません、またメーカー問い合わせからの手順になりますが、お時間ください」
とのこと。一つの嫌味な言葉も吐かずに、
「すみません、お手数おかけしますが、よろしくお願いします」
とビジネスメールの定型文のように結び自転車屋を後にしました。

ネットで頼めばよかった。

2014/11/12

JDK 1.7.0_u72でLDAPとの通信がタイムアウトする

ADとLDAP連携しているJavaのアプリケーションをバージョンアップした際に、JDKも最新版(1.7.0_u72)に上げたのですが、LDAPサーバーとの通信(ユーザーデータの同期)がやたらタイムアウトするようになりました。

LDAPサーバーの検索の範囲を狭くすると成功するので、本当にタイムアウトしているのだろうというのはわかったのですが、wiresharkでパケットキャプチャしていると15秒後にabandonRequestでリクエストを破棄している。タイムアウトの設定を長く取っても、短くしてもエラーメッセージも同じ。どういうことなの??

その時のエラーメッセージが、抜粋でこんなの。

javax.naming.NamingException: LDAP response read timed out, timeout used:-1ms.;
-Dcom.sun.jdni.ldap.read.timeout=XXXXXX(ミリ秒) をどんな値にしても-1msと言われた上に、15秒後にタイムアウト。

色々グルグルした結果、https://bugs.openjdk.java.net/browse/JDK-8062947 発見。それそれ。OpenJDKだけど、Oracle版もコードベースは同じらしいし(曖昧)。

試しに、元使っていたバージョン(1.7.0_u51)にJava を戻したら問題解消しましたよ。16秒、17秒で同期完了。

少なくとも1.7.0_u72は、LDAPとの通信に15秒でタイムアウトとどこかにハードコーティングされていて上書きできない模様。

皆様お気をつけてください。

教訓、アプリケーションとミドルウェアは一緒にバージョンを上げてはいけない。基本です。

2014/10/13

泉岳寺の景観保全問題

港区の泉岳寺、知ってますか? 京急本線の一番北側の駅名にもなっています。全然知らなかったのですが、みんな大好き赤穂浪士四十七士のお墓があります。実は赤穂浪士の話もちゃんと言えるほど知らなかったのですが(汗)。

ここ、何故か外国人の方々の参拝が多いのです。みんなどこで、その話吹き込まれてくるのだろう。

さて、最近よく神社仏閣を巡っているのですが、今日初めて行ってきました、泉岳寺。実際8:2ぐらいで外国人の方が多くてびっくりしましたよ。

この泉岳寺の一番外側の門の横の土地に今まであった建物を取りこわして、8階立てのマンションを建設しようとしていて、地域住民や泉岳寺なのか赤穂浪士ファンというか、そのあたりから、歴史的価値や景観を損うからやめてくれともめているそうです。景観保全の立場からは全く、その通りなので建設反対には同意します。で、ですよ、行ってみたら、こんな風になってました。

 その門のすぐ左が建設予定なんですが、その「建設反対」の立て札とのぼり、これが確実に景観を損なっているんですよ。もっとやり様あると思うのです。なんだかがっかりしました。

熱くなると視野が狭くなります、気をつけて。

ゼブラ スタイラスC1

寒くなってきたらスマートフォンのタッチパネルを操作するのにどうするのかという話で、「タッチペン使おうと思う」という意見が出ました。スマートフォン対応手袋も結構イライラして、結果手袋外しがちですし、タッチペンは、ふつうにお絵描きとか手書きメモする時に使いたいと思うことがあったので、ちょうどいい機会と1本買ってみました。

それが、ゼブラのスタイラスC1 http://www.zebrawing.jp/stylus_c1/shiyo.html です。

税別380円と100均の品を除けば抜群の安さです。本当は、ジェットストリーム スタイラスを使ってみたいところですが、2,000円もします。高い。

で、C1です。確かに値段なりですね。高級感など一切ないし、ペンを出す捻った感じも気持ち良くない。サイズ感は小振りでポケットやかばんに忍ばせて持ち運びやすいでしょう。あと最大のメリットが、替え芯がいわゆるC4タイプなので、ジェットストリームのC4タイプのやつが使えます!!(型番は各自で)

同じく替え芯が4CのSTAEDTLERのavant-garde light と並べた写真でサイズ感比較してください。


スマートフォンのタッチ感は、なかな良好。保護シートのタイプにもよると思うんですが、低反射サラサラ系の私のではキュッキュっと音が鳴ることがあります。いつもではないので謎。

トータルでコストパフォーマンスはいいです。

で、ですよ。使ってみて気付いたんですが、地図を回転する とか ズームイン/アウト (ピンチイン/アウト)しようとしたら指二本使うじゃないですか。タッチペン1本だと操作できない! 使うまで気付かなかったよ。つまり、二本用意してお箸スタイルで使う必要があります。何かよい方法ないかな。考えよう。


2014/09/27

ジェットストリームに物申す

丸の内の丸善に行きました。入口のところでジェットストリームの何かイベントのようなものをやってる風で近寄ってみたら「今ならネーム入れますよ」って。(以下すべて意訳です)

「新商品のPRかと思って」と言うと、
「そうじゃないんですが、新商品でしたら10月に出ます。ジェットストリームプライム シングルっていうモデルで...」とスマートフォンでごそごそして リリースノート を見せてくれた。uni の中の人かと尋ねると、そうだと言う。
「プライムは、クリップの所のキラキラあるじゃないですか?」
「ああ、はいはい」と何かを察した様子
「あれ、いらないんですよね。」
「私もいらないと思います(キリッ)」
「あれ、評判いいんですか?」
「いや、評判よくないです。」
「女性をターゲットにしたんでしょうけど」
「それが女性にも評判よくないんです」
「え? で、新しいのにキラキラは..」
「それがついてます」
「え?」
いやいや、おかしいだろ。

他にもスタイラスの話をするので、あれは単純に高くないかとクレーム。

この際なので、

安いモデルは基本的にクリップから折れること。
ピュアモルトのマルチの高い方は、いいんだけど、クリップとか軸の黒メッキが剥がれると残念感が凄いこと。
ピュアモルトのマルチの安い方は、軸がすぐ傷だらけになってしまうこと。

などなど、ジェットストリーム関連の言いたいことをuniの中の人(30台前半のお兄さん)に思い出す限り伝えました。

とりあえず、もっとユーザーの意見を聞いた方がいいです。プライムを即刻モデルチェンジしてキラキラ無しにしてください。現行のプライムを出した関係者は、全員即刻配置替えをした方がいいです。お願いします。





2014/04/18

apacheのログにホスト名で記録されるのを回避

社内で動いている apache で、アクセスログにremoteのホストがホスト名で記録されてハマっていました。
軽く調べれば、設定ファイルの中で
allow from ホスト名
とか、
allow from 192.168.x.x #コメント
とかやってしまうとダメというのはすぐわかります。
allow や denyで
  • ホスト名で指定してはいけない
  • 同じ行にコメントを書いてはいけない
ということですね。そこはクリアしているのにホスト名で記録されるんです。 で、今日、メンテのついでに設定ファイルを眺めていたところ、
ProxyPass /path http://localhost:9999/pathx
ProxyPassReverse /path http://localhost:9999/pathx
みたいな tomcat へ投げる設定を書いていたんですが、このlocalhost を 127.0.0.1 に書き直したらDNS引くの止まりました。 えー、なんだと。

はい、同じ境遇でお困りのレアな方居ましたらご確認を。


2014/04/11

Nexus 7 再度死亡

(書くだけ書いて公開するの忘れてた)

マザー交換となった Nexus 7ですが、しばらく使っているとUSBを刺すもケーブルに微妙な角度で微妙なテンションをかけないと充電されないような状態になり、、そのうち全く充電されなくなり、そうなると当然起動しなくなりました。もともと、USBの口が緩くなっていた感じがあり、前回の修理と別問題疑惑で、そうなると修理費が別途発生するという最悪の事態です。一声5,000円は余裕で越えます。

とは言え、放っておいても治らないので、仕方なくASUSに出すことに。

電話すると案の定、別問題なら費用が発生する可能性ありと言われるも、はいはいと聞き流して待つこと1週間。何の連絡もないまま、修理されて戻ってきた。明細には、 「マザーとフレキの異常確認」と。おい!頼むよ!

しっかりガワは今まで使っていた奴です。馴染みの使用感が..。修理してるんですね。
もうアウトレット品でいいから、丸ごと交換してください。

2014/02/06

Confluenceをソースコードからビルドしたい

ライセンスを持っていればソースコードも入手できるConfluenceさん、
https://developer.atlassian.com/display/CONFDEV/Building+Confluence+From+Source+Code 
にドキュメントがあるんですが、この通りやっても全然ビルドできません。ページの下の方のコメント欄にいっぱい寄せられているように、BUILD FAILUREの残念なおしらせで止まりまくります。

(数ヶ月前一回トライしてギブした後)Linuxで何日かかけてやっとビルド完走したので、ここに書いておきます(社内のConfluenceにも書いたけど)。ただ幾らネットで調べても日本語の情報が無いのと英語でも私がたどりついた正解が載っていないので、必要性がないのか常識なのかどちかの可能性が高いです。なお、後述しますが、Windows版ではビルドできませんでした。

さて、上記ドキュメントに、ソースコードを展開した後、「javamail が同梱されてないから、mavenコマンドでインストールせよ」とあります。あるんですが、とりあえず、build.sh を走らせてみましょう。止まりましたよね。

プロキシの設定


プロキシを越えないとインターネットにアクセスできない環境では、maven にプロキシの設定を施す必要がありますが、まずここでハマりました。mavenは同梱してあり(よくわからないがConfluenceの最新版でも二つのバージョンのmavenが同梱されている)、ソースを展開したディレクトリの中の

maven3/apache-maven-3.x.x/conf/settings.xml
maven2/apache-maven-2.x.x/conf/settings.xml

の設定ファイルをそれぞれ編集します。proxy のところのコメントを外して設定項目を書きます。さて、http と https の二つプロトコルを書きたいんだけど、二つ書いても有効になりません。よって、http だけここに書いておいて、

それぞれのバージョンの bin/mvn を開いて、最初の方に、

export MAVEN_OPTS="-Dhttps.proxyHost=xx.xx.xx.xx -Dhttps.proxyPort=8080"

という感じに追記。(参考)http://d.hatena.ne.jp/takezoe/20110102/p2

javamail のインストール


これで、javamailをインストールしますが、プロキシが効いてるかの確認も含めて一回、build.sh を走らせてコケてみた方がいいです。javamilのどのバージョンがないか見るためです。要求されているバージョンのjavamailをoracleから貰ってきます。

1.3.3だったので、http://www.oracle.com/technetwork/java/javamail-1-3-3-137201.html から。たぶんOracleのアカウントが必要です。

もらってきたら適当な所に展開して、build.sh でコケた時に出るメッセージ(上記ドキュメントに書いてあるmavenのコマンド)でインストールするんですが、その前に、再度

maven3/apache-maven-3.x.x/conf/settings.xml
maven2/apache-maven-2.x.x/conf/settings.xml

を開いて編集。最初の方にある、


<!-- localRepository
 | The path to the local repository maven will use to store artifacts.
 |
 | Default: ~/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
これを活かして、

<localRepository>ソースコードを展開した場所/localrepo</localRepository>
と設定します。ここも重大なハメです。 書いたら、やっとmavenですが、いきなり mvn と叩いても確実にパスが通っていないので、これもソースコードを展開した場所で、

./maven3/apache-maven-3.x.x/bin/mvn install:install-file -DgroupId=javax.mail -DartifactId=mail \
-Dverson=1.3.3 -Dpackaging=jar -Dfile=javamailを展開した場所へのパス/mail.jar
とします。ソースコードを展開した場所/localrepo/の下にインストールされるのを確認。maven2 と maven3 のどちらを使うのがいいかわかりませんでしたが、とりあえず 3 でやってみました。

警告で止まる


ここまでできたら、またbuild.sh を実行し、何かが無いと言われたのをネットから探してきインストールするのを繰り返します。
そのうち、

警告:xxxxxxは内部所有のAPIであり、今後のリリースで削除される可能性があります
で止まります。警告なのに止まります。maven2の何かのバグっぽいのですが、「警告」っていう日本語がまずいらしく、LANG=Cで build.sh を実行すると回避できます。

$ LANG=C ./build.sh

あるいは build.sh の中で設定しちゃってください。ここまでWindowsでやっても、ここで同じようにハマりますが、回避方法がわからずギブしました。


はい、あとは、本当に、無いと言われたモノを探してきてインストールしてビルド、を繰り返せば完走できると思います。
結局、私がためした バージョン 5.3.1では、

  • javamail
  • javax.jms
  • javax.activation
  • DB2 (db2jcc4)
  • Oracle 11g (oracle-jdbc15)
を要求されました。

ドキュメントにプロジェクト毎に build.shをコピーして使えとあるように、 confluence本体のビルドだけでよければ、build.shをコピーして confluence-project の行だけにしてしまうのが早かったと後から気付きましたよ。

さて、これでやっと肝心のパッチ作成に進めます。 (プラグインでやれよという説が有力ですが)

(後記)
5.5以降のバージョンでは、色々書く必要ない程、簡単になりました。

2014/01/29

Nexus 7 帰還

ASUSから電話があると重いコンダラ違っていて、郵便で修理見積が送られてきた。え!? かなり、時間と作業とお金のロストしていないか!?

マザー交換、14200円也。

まあ、仕方ないよね。ASUSのサイトにあるアウトレット品で、同じNexus 7(2012)が 13800円で売られているんですが、修理を中断しても 4200円かかってしまうため、修理続行。

修理してください、と電話する。もう今回は間違わない、「修理」と言われた番号を押せばいいから。

「で、どれぐらいの日数かかりますか? 」
「10日から2週間ほど...」
いやー、長いわ。おかしい。だって、作業1時間あれば終わるでしょう。修理見積りの検証の方が時間かかると思うんだけど。

ゴネても何ともならないので、お願いします。

そして、数日後、佐川から電話が鳴り、届きました。ほら、そんなにかかるわけないんだよ。保険取りすぎだって。

早速、箱を開ける。送った時より手垢、指紋がついた画面にイラっとする。デリカシーのない担当である。「届いた時より美しく」を社訓としてお願いしたいところです。

おもむろに電源オン。まったく見覚えのない起動画面ののち起動した。既にKitkat だった。Googleアカウントでログインし、バックアップの復元みたいなのをチェックしたまま進める。日本語入力がiWnnで激しく使いづらかったので、 真っ先にGoogleの日本語入力をインストールして... ってしてたらインストールしていたアプリが勝手にインストールされだした。あとは放置で戻ったぽいです。

ローカルのデータは戻ってきませんが。

まとめ
ASUSは、公式には「エイスース」、私の中では「エイサス」
ASUSのサポートは特に神対応でもなく、ふつう。
修理しなくても、しても4200円は割高。(保証期限切れ状態)

ふつうすぎて、あまり書く気もおこらない感じでしたね。 あとは、もう壊れないといいです。

2014/01/09

ASUS サポート窓口攻略

さて、Nexus7の修理を正式に依頼しようとASUSのサポート窓口に改めて電話した。慎重にガイダンスを聞いてボスへのルートを選択していく。

「お客さまー、修理の依頼はここではなくて、....」

いやいやいや、どういうことだ。間違いなく修理に関するルートを選択したのに。FAQだから、中の人もテンプレ読んでるだけです。

何番を選ぶんだ、正解を教えろ。

先に答えを書いておこう、2014年1月9日現在、Nexus7の修理を依頼するには、

3 → 1 →2

です。

最初の分岐が問題で、意訳すると

  1. 購入前相談
  2. 修理に関する問い合わせ
  3. 技術的な相談
と言うくせに、2は修理中の人の窓口であり、修理の発注は3であるというひっかけです。どうかしています。UIのデザインがおかしい。

サポートの中の人にクレームしておきました。

さて、本題は、土曜日回収、見積に2,3日、修理をしたとして完了までに2週間と言われました。2週間は長いよ。どうせだめなら全交換じゃないの?

完全にクレームブログ化しつつあるが、つづく。

2014/01/08

Nexus 7 起動せず

発売日にポチった初代Nexus 7、長男に占有されていましたが、先日起動しなくなりました。真っ暗なまま、何も反応しない。対処方法も電池抜きまで一通り試すもダメ。完全に死亡。

Google Playでアプリを物色していて、何かをインストール途中、キャンセルして戻る、戻る、..ってやってたら、下のソフトボタンだけになったので、電源切ってみたら、それ以降立ち上がらなくなったという長男の証言。

その死に方、なんだ!? 電池ではないような。

箱を探し出してきて、保証書に書いてあるASUSに電話した。よくあるガイダンスに従い、ボスへのルートを選択していくと、

「ここは修理中の人が来る場所です。最初から遣り直してください。」
と言われやりなおし。「修理」って聞こえた瞬間番号押したら、修理中の人用って。クイズのひっかけ問題だろ、それ。

ラスボス到達でわかったこと、
  • 1年の保証が切れているので有償。(そうですよね)
  • どこが悪いかの検査に4200円かかる。
  • その料金は修理をしても、やめても発生。 (え!?)
  • 基盤交換だと15000円ぐらいかかるかも。 (え!?、買った値段より高くなっちゃう))
  • 検査段階で、データが飛ぶが残るかもわかる。
  • ASUSが回収に来る。

とのこと。

2日ほど充電せずに放置して再度充電を試してみてと言われて一旦終了。

で、その後、電池抜きとかを試したので、電池ではないだろうと思い2日も放置してないけど、あきらめてASUSに送ろう。

ものは試しにと、Googleに直電してみたら、
「それでは修理になるので、エーサスに転送しますね。キリッ」
とスズキさん。エーサスだよね、エーサス。と、ASUS = エーサス(エイサス)派の私の好感度は若干上がる。本題とは関係ない。

いや、結局Googleに電話した意味なかったんですけど。

そして、転送されたところでガイダンスに従い.....

「お客様、修理のご依頼でしたら、ここではなくて、別のところですので(以下略)」

いや、悪いのはエーサスだって絶対。

(続く)