Javaでソート対応のマップと言えばTreeMapだけど、TreeMapはキーのソートにしか対応してません。
マップの値でのソートはオブジェクト外の要素でソートしたい時などは値でのソートが出来ると便利ですので、今回はその方法をご紹介します。
続きを読む 【Java】 Mapを値でソートする方法
Javaでソート対応のマップと言えばTreeMapだけど、TreeMapはキーのソートにしか対応してません。
マップの値でのソートはオブジェクト外の要素でソートしたい時などは値でのソートが出来ると便利ですので、今回はその方法をご紹介します。
続きを読む 【Java】 Mapを値でソートする方法
WindowsやLinuxでは netstat の -bオプションや-pオプションでポートを待ち受けているプロセスを調べる事ができるのに、Mac OS Xではそんなオプションが無く困った。
なんとか方法が他にないか調べた所、
Mac OS X では lsof を使うのが一番簡単そう。
$ lsof -i | grep LISTEN
結果はこんな感じになる。
$ lsof -i | grep LISTEN Dropbox 303 user 19u IPv4 0xffffff0123456789 0t0 TCP *:17500 (LISTEN) Dropbox 303 user 25u IPv4 0xffffff0123456789 0t0 TCP localhost:26165 (LISTEN) node 56728 user 8u IPv4 0xffffff0123456789 0t0 TCP *:hbci (LISTEN) mongod 57071 user 6u IPv4 0xffffff0123456789 0t0 TCP localhost:28017 (LISTEN) mongod 57071 user 7u IPv4 0xffffff0123456789 0t0 TCP localhost:27017 (LISTEN)
調べようと思った動機は mongodb のListenポートをど忘れして確認したかっただけでした。
実行結果を見ると mongodb は TCP localhost:27017, TCP localhost:28017とあるので、
待ち受けているポートはTCPポート27017, 28017の2つですね。
StackOverflowでも”shouldOverrideUrlLoading(…) not executed if “window.location.href” modified in a timeout callback“と報告されているが、WebViewで JavaScript から location.href を書き換えると通常shouldOverrideUrlLoading()が反応するのに setTimeout()を使用して location.href を書き換えた場合は shouldOverrideUrlLoading() が呼ばれません。 続きを読む WebViewでshouldOverrideUrlLoading()が反応しない問題

Ruby 開発を始める時はまずgem管理ツールを入れておくと便利です。
実行環境やプロダクトに応じ、Ruby本体やgemパッケージの依存するバージョンが異なる事も多々あります。これらのバージョンを管理して切り替えを容易にしてくれるのがRVM(Ruby Version Manager)やBundlerといった管理ツールなのです。
今回はRVMのインストール手順をまとめました。それでは続きをどうぞ。 続きを読む RVMでRuby環境の切り替えを簡単に!
iPhone の Safariは連続する数字が勝手に電話番号のリンクになってしまいます。
電話番号や郵便番号(123-4567)のようなハイフン区切りだけでなく、
小数点(123.4567)のようにドット区切りの数値までも電話番号リンクになります。
これでは困るので対処方法をまとめました。
(iPhone 4, iPhone 4sで動作確認)
「Google Android – 雑記帳」さんのTextView, ListViewの使い方についての記事がAndroid開発入門によさそうなドキュメントだったので紹介します。
Androidで正規表現を使っていて、全角のパターンマッチで少しはまったのでメモ。
Javaでは他の正規表現エンジンと同様、POSIX文字クラスが利用できます。
if("Hello".match("^\\p{Alpha}+$")){
System.out.println("アルファベットだけ!");
}
Android開発をしていて、ある時からアプリのデバッグ起動で次のようなエラーが出て固まるようになりました。
[2011-08-03 19:14:42 - com.example.testapp] ------------------------------
[2011-08-03 19:14:42 - com.example.testapp] Android Launch!
[2011-08-03 19:14:42 - com.example.testapp] adb is running normally.
[2011-08-03 19:14:42 - com.example.testapp] Performing com.example.testapp.First activity launch
[2011-08-03 19:14:42 - com.example.testapp] Automatic Target Mode: using device 'CB511J0W90'
[2011-08-03 19:14:42 - com.example.testapp] Uploading com.example.testapp.apk onto device 'CB511J0W90'
[2011-08-03 19:14:42 - com.example.testapp] Installing com.example.testapp.apk...
[2011-08-03 19:14:45 - com.example.testapp] 成功!
[2011-08-03 19:14:45 - com.example.testapp] Starting activity com.example.testapp.First on device CB511J0W90
[2011-08-03 19:14:45 - com.example.testapp] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.testapp/.First }
[2011-08-03 19:14:45 - com.example.testapp] Attempting to connect debugger to 'com.example.testapp' on port 8610
[2011-08-03 19:14:45 - com.example.testapp] Launch error: リモート VM に接続できませんでした
ポート8610番につなげない、と言われているので調べてみる。
C:\>netstat -an -p tcp ~略~ TCP 127.0.0.1:8600 0.0.0.0:0 LISTENING TCP 127.0.0.1:8601 0.0.0.0:0 LISTENING TCP 127.0.0.1:8602 0.0.0.0:0 LISTENING TCP 127.0.0.1:8603 0.0.0.0:0 LISTENING TCP 127.0.0.1:8604 0.0.0.0:0 LISTENING TCP 127.0.0.1:8605 0.0.0.0:0 LISTENING TCP 127.0.0.1:8606 0.0.0.0:0 LISTENING TCP 127.0.0.1:8607 0.0.0.0:0 LISTENING TCP 127.0.0.1:8608 0.0.0.0:0 LISTENING TCP 127.0.0.1:8609 0.0.0.0:0 LISTENING TCP 127.0.0.1:8610 0.0.0.0:0 LISTENING TCP 127.0.0.1:8612 0.0.0.0:0 LISTENING TCP 127.0.0.1:8613 0.0.0.0:0 LISTENING TCP 127.0.0.1:8614 0.0.0.0:0 LISTENING TCP 127.0.0.1:8615 0.0.0.0:0 LISTENING TCP 127.0.0.1:8616 0.0.0.0:0 LISTENING TCP 127.0.0.1:8620 0.0.0.0:0 LISTENING TCP 127.0.0.1:8621 0.0.0.0:0 LISTENING TCP 127.0.0.1:8622 0.0.0.0:0 LISTENING TCP 127.0.0.1:8623 0.0.0.0:0 LISTENING TCP 127.0.0.1:8624 0.0.0.0:0 LISTENING TCP 127.0.0.1:8626 0.0.0.0:0 LISTENING TCP 127.0.0.1:8627 0.0.0.0:0 LISTENING TCP 127.0.0.1:8629 0.0.0.0:0 LISTENING ~略~
と(やたらLISTENしているポートが多いのが気になるものの)ちゃんと開いているように見える。
ポートが空いてるのは確認できたが、firewallの影響を受けているかもしれないのでさらにしつこくjdbデバッガで調べてみる。
C:\>jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8610 uncaught java.lang.Throwable を設定しました 保留した uncaught java.lang.Throwable を設定しました jdb の初期化中です... >
問題なくつなげたので一旦quitを入力して終了。
これで繋げなければJava VM側やネットワークの問題の可能性がありましたが、
これで原因はEclipseの可能性が高いということに。
改めてEclipseの設定を確認すると…
一般 → ネットワーク設定 → プロキシーのバイパスでプロキシが設定されていて、しかもlocalhost, 127.0.0.1 のプロキシが有効になってしまっていました。
これじゃ繋がるわけないわな。
アクティブ・プロバイダーが「ネイティブ」になっていて変更できなかったため「直接」に変更した上で上記2つのチェックを外した所無事解決。
Google Analytics でGoogle +1 やFacebookの「いいね!」、Twitterの「ツイート」ボタンアクションをトラッキングする方法が公開されてはてなで話題になっているようなので、これを有効にするだけのWordPressプラグインを作ってみました。
Google Social Analytics Extension(extends your Google Analytics)
これ自体はGoogle Analyticsやソーシャルボタンを含んでいません。他のプラグインのお供に。
併せて使うと便利なおすすめプラグインはこちら。
WebView でリダイレクトではなくユーザクリックのみを飛ばしたい場合、
下記のようにするといいようです。
<pre><code>mWebView.setWebViewClient(new WebViewClient() { </code></pre>
<pre> public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(view.getHitTestResult().getType() > 0){
// ユーザが自分でクリック参照したページ
return true;
} else {
// クリックされなかったのでリダイレクトとみなす。
return false;
}
}
<span class="Apple-style-span" style="font-family: monospace;">}</span></pre>