目次: 車
現在ポータブルカーナビを使っていますが、果たして数年後、俺はまた「カーナビ」を買うだろうか?と疑問に思っています。安いAndroidタブレットで十分なんじゃないか、と。
カーナビは安さじゃないんだ、機能(最近は付加価値と呼ぶのか?)で勝っているんだ!タブレットなんかと一緒にしないでくれたまえ!という意見もありましょうが、タブレットと比較して、ナビの方が良いと思うことが少なくなったんですよ…。
最近は特に「カーナビの目的地検索機能」を使わなくなりました。目的地の検索にはスマートフォンを使い、カーナビには住所か、住所替わりの電話番号を入れるだけになっています。
車速や加速度を用いた現在地の補正など、ナビゲーション機能の作りこみにおいて、カーナビは素晴らしいものがあります。しかし今のナビゲーション機能に大きな不満や、克服すべき重大な欠点があるか?と考えるとどうも思いつきません。いくら優れていようとも、今のまま停滞を続ければいずれ追いつかれるでしょう。
画面サイズ、解像度、描画機能も良い勝負ですし、今後、タブレットに高性能なカーナビ機能が搭載されたら、目的地検索、ナビゲーション機能、全部タブレットにお任せ、となることは想像に難くないでしょう…。
果たして、ナビゲーション機能で追いつかれた後も、カーナビという商品は成立するでしょうか。まだまだ我が道を拓けるのか?それとも、もう道はなくタブレットと同化するのか?
カーナビの行く道は一体どちらだろうなあ…、と考えさせられます。
この記事にコメントする
今日、明日と、野暮用があって奥さんの実家に帰りました。
先日のドライブは車の故障により挫かれてしまった(2013年3月20日の日記参照)ので、久々のロングドライブでしたが、あいにくの雨模様…というか嵐と言った方が正しいな、これ。
従来の鳥取道(佐用JCT〜鳥取IC)は大原IC〜西粟倉IC間が約10kmほど途切れていましたが、3月末に全線開通したとかで非常に走りやすくなりました。
渋滞しなければ3時間くらいで着くようです。高速道路は偉大です。鳥取がますます近くなりました。
今使っているカーナビ(Panasonic SDナビCN-SP700L)には鳥取道のデータが入っていません(道路が点線、または何もない)。そのため付近の一般道に無理やり現在地を補正しては、明後日の方向へナビゲーションし続けます。別に害はないんですけど、ちょっとウザいです…。
地図を更新したら直るかなーと、更新地図データのページを見たらダウンロード版が1万円もする。SDカード版に至ってはなんと1万7千円でした。
ちなみにナビは5万円もしません。わざわざこの値段を払って地図を更新することはなかろう…と、そっとページを閉じました。
この記事にコメントする
以前、ニコニコ動画:Qの動画ダウンロードスクリプト(2012年10月25日の日記参照)を載せましたが、奥さんに「Google Chromeで動かない」と突っ込まれました。
試したら確かに動かない。ChromeだとXMLHttpRequestでニコニコ動画のgetflv APIを呼ぶとstatus 0が返ってきます。SeaMonkeyだとstatus 200が返ってきて、動画のURLが取得できているのですが…?
何故Chromeだけ動かないのかわからなくて、しばらくウンウンうなってたのですが、わかってみれば何てことはなかった。単にgetflv APIのURLが間違っていただけでした。
誤「http://www.nicovideo.jp/api/getflv/(movie ID)」
正「http://flapi.nicovideo.jp/api/getflv/(movie ID)」
というわけで、修正。SeaMonkeyとChromeで動作確認しました。
javascript:
function received() {
if (request.readyState == 4 && request.status == 200) {
/* received */
var strurl = decodeURI(request.responseText);
strurl = new String(strurl.match(/url=[^&]+/));
strurl = strurl.replace('url=', '');
strurl = decodeURIComponent(strurl);
var btn_container = document.getElementById('videoHeaderDetail');
var btn = document.createElement('a');
btn.href = strurl;
btn.style.fontSize = '2em';
btn.textContent = '[download]';
btn_container.appendChild(btn);
}
}
var docurl = document.URL;
var doccookie = document.cookie;
var flvurl = docurl;
flvurl = flvurl.replace('www.nicovideo.jp/', 'flapi.nicovideo.jp/');
flvurl = flvurl.replace('/watch/', '/api/getflv/');
var request = new XMLHttpRequest();
request.open('GET', flvurl, true);
request.withCredentials = true;
request.setRequestHeader('Cookie', doccookie);
request.onreadystatechange = received;
request.send('');
注意点を一つ書いておきます。SeaMonkeyだと [download] リンクをクリックすると保存するかい?と聞かれます。しかしながらChromeは [download] リンクをクリックすると再生(※)してしまいますので、リンクを右クリックして「リンク先を保存」で保存してください。
最後に一つ心残りがあるとすれば、SeaMonkeyはなんで間違ったURLで正常に動いていたんだろう?ってことですかね。まあ、ご機嫌で動いているから、もうどうでもいいんだけどね。
(※)ChromeはContent-typeがvideo/mp4だと「ダウンロード」じゃなくて「ブラウザ内蔵プレイヤーで再生」してしまうようです。気が利いているというか、余計なお世話というか…。
この記事にコメントする
目次: Java
Javaのリフレクションを使ったコンストラクタの取得で躓いています。正解が分からない…。
あるクラスTestがあり、パラメータにクラスAしか取らないコンストラクタがあるとします。クラスTestのコンストラクタに対し、クラスAと全く関係ないクラスCのインスタンスを渡せばコンパイルエラーになります。クラスAの派生クラスBのインスタンスであれば渡せます。これはオブジェクト指向言語なら当たり前です。
しかしリフレクションを使ってコンストラクタを得ようとすると、派生クラスを渡せるコンストラクタをどうやって取得すれば良いかわからないのです。
public class Test {
public Test(A a) {
}
}
public class A {
public A() {
}
}
public class B extends A {
public B() {
}
}
public class Main {
public static void main() {
Test obj1 = new Test(new A()); //OK
Test obj2 = new Test(new B()); //OK
Constructor<Test> cons1 = Test.class.getConstructor(A.class); //OK
Constructor<Test> cons2 = Test.class.getConstructor(B.class); //NG
Test obj3 = cons1.newInstance(new A()); //OK
Test obj4 = cons1.newInstance(new B()); //OK
//Test obj5 = cons2.newInstance(new B());
}
}
上記のようなコードがあったとします(try〜catchは省いています)。
クラスTestには、クラスAをパラメータにとるコンストラクタしかありません。従って、派生クラスBをパラメータに取るコンストラクタをくれ(=Test.class.getConstructor(B.class))と頼むと「そんなコンストラクタは無い」と例外がスローされます。
どうしてTest.class.getConstructor(B.class) としたとき、「ありません」なんだろうか?基底クラスを取るコンストラクタ(Test(A a))があるのだから、そちらを教えてくれれば良いのに…。
クラスTestには、クラスBを取るコンストラクタはないから、この動きは正しい。
とか、
基底クラスAを取るコンストラクタ(cons1)を得て、派生クラスBのインスタンスを渡せば良いだけだ。(つまりobj4を生成しているように書く)
という反論はわかるのですが、それだとせっかくのリフレクションなのに本末転倒になってしまいませんか?
クラスTestの利用者側の立場からすれば、クラスTestに、クラスAを取るコンストラクタがあるか?クラスBを取るコンストラクタがあるか?なんて知らないわけです。自分が呼び出したいコンストラクタが既にあるとわかっているなら、リフレクションなど使わずに直接呼べば良いのです…。
クラスTestのコンストラクタを全部取得して、クラスBの基底クラスを取るコンストラクタがないかどうか、全て探すしかないのでしょうか…。うーん、それはさすがに格好悪いような…。
この記事にコメントする
| < | 2013 | > | ||||
| << | < | 04 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | - | - | - | - |
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
2026年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: