androidのHttpURLConnection::getInputStreamでjava.io.FileNotFoundException

androidで、HttpURLConnectionクラスを使って、リモートサーバにGETリクエストを送り、結果を取得しようとした。だが、なぜかgetInputStreamを呼び出したところでjava.io.FileNotFoundExceptionが発生する。そのURLをブラウザでアクセスすることはできるのに。

検索してみたところ、いつものStackOverflowに答えがあった。HTTPのレスポンスコードが400以上であると、HttpURLConnectionはFileNotFoundExceptionを投げる、ということが原因だった。ブラウザでアクセスできていると思っていたが、レスポンスコードを見てみると、403 Forbiddenだった。

というわけで、同じ回答では、getResponseCode()を使って問題を特定する、ということが勧められていた。

more…

SQLiteの時刻取得精度について調査した

SQLiteでselect julianday('now')とすると、整数部と小数部からなる値が表示される。これはユリウス日と言われる値になるそうだが、この小数部の精度がどうなっているのか気になったので調査した。

結論からすると、x86アーキテクチャのLinuxで動作している場合、ミリ秒単位が限界となりそうだ。

SQLiteのソースだと、unixCurrentTimeInt64という関数で現在時刻を取得するようだ。この関数のコメントには、


/
Find the current time (in Universal Coordinated Time).  Write into *piNow
the current time and date as a Julian Day number times 86_400_000.  In
other words, write into *piNow the number of milliseconds since the Julian ...

more…

「歩く歩道」は駄洒落では無い

つい先日、「動く歩道」、つまり下のようなものがある町で、ゆっくり自転車を走らせていたら、数m離れたところにいた数名の人たちのうちの一名が「歩く歩道」という言葉を発した。もちろん自分はそこを平常心で通り過ぎたのだが、「え、"歩く歩道"って...。動く歩道のことやろ!歩道は歩くためのものなので、なんという同義反復。これこそトートロジー。」と思って内心笑っていた。が、しかし、地方あるある・大阪編を読んで、実は大阪では、関東でいう「動く歩道」は「歩く歩道」と呼ばれている、という驚愕の事実を人生初めて知った。いやはや、これが単なる駄洒落や間違いではなかったとは...。かなり衝撃を受けた。


more…

FPGA+HFT

最近モチベーションが下がっている。ネットを徘徊していたら、ちょっと面白いネタを見つけた:

文字通り「ネットワークがコンピューター」な金融HFTでのFPGAの使われ方

ここ数年HFTの分野では、FPGAで処理を実装するのがはやってきている、ということ。リンク先の記事からもリンクされている、Parallel Scientific: The Awesome Haskell FPGA Compilerは以前すこし眺めていたが、今回の記事を読んで全体像の理解が少し進んだ。なるほど、こんなところでも回路設計をしてしまう時代になったのね、という感じ。

10Gbpsのネットワークスイッチに入れてしまうというのであれば、当然Alteraで言えばStratixクラスの1個何十万もするFPGAを使うのだろう。外付けメモリもDDRみたいなレイテンシの大きいものではなく、RLDRAMやQDRといった、個人的には使用しているのをあまり見聞きしないタイプのメモリを使っているのではなかろうか。

もしこういったものがTCP/IPで通信をしているとすれば、Ethernet MACのIPから出てくるパケットをステートマシンでTCP/IP部分をデコードしてやり、中身のデータに基づいてガリガリ計算し、その結果に基づいてこれまたステートマシンでEthernet MAC IPに売買パケットを流し込む、というような流れになっているのだろう。そして売買の結果は、メモリに書き込んでおき、ログとして保存。これでソフトウェアは一切介在せずに株式やら為替の売買を実行する、と。もちろん、売買条件の設定などの初期化操作はソフトウェアで行うはずだが。

妄想するとなかなか面白そうな分野だなぁ。クオンツの元でブイブイ(死語)いわせるプログラマのイメージが。なるほど、金融業界は計算機分野でも ...

more…

OpenCLの参考書籍

最近自分で技術的な文章を書く気力が減退気味。googleで"OpenCL 入門"とかで検索してみても、和書に関連するページがヒットするものの、OpenCLの入門的なページはほとんどヒットしない。なので、参考までに:OpenCL in Actionのリンク。ざっと眺めてみた感じでは、OpenCLの入門にふさわしい内容になっていると思う。データ型、カーネル記述方法、実例など、まんべんなく扱っている。ちなみに、リンク先サイトはすごい充実している。


気が向いたらもう少しOpenCLについて取り上げたいと思うけれど、いつになることやら。はっきり言って、ここまでCPUが早くなってしまった現在、映像処理やシミュレーション、データマイニングといった分野でしかGPGPUは必要ないのではなかろうか?

more…

焼酎の麹の違い

先日酒屋で焼酎を探した。入手しやすい価格帯のものは、かなり試したことのあるものばかりになってきたな...と思ったが、知心剣というのはまだだった。最近CMで良くやっているので、印象に残っていた。というわけでこれを購入した。結果としてCMの効果性に貢献した。

飲んでみると、「あれ、芋焼酎?」と感じた。いや、ラベルを確認しても、やはり麦焼酎。でも以前飲んだことのある焼酎黒霧島と味が似ている?何が「普通の焼酎」と違うのか。調べてみたところ、どうやら、どちらも黒麹を使っていることが、味が似ていると感じた原因だと思われる。どちらも独特の甘みがある。では麦と芋の味の違いは何か?とういう疑問が出てきてしまった。黒霧島を飲んだのはずいぶん前なので、もう違いが分かるほど覚えていない...。自分が「普通の焼酎」と思っていたのは、白麹を使ったものだったのだと思う。

こんなことは焼酎が好きな人にとっては常識だろう。機会があったら同じ黒麹の芋と麦で飲み比べてみたい。

more…

センター試験を1X年ぶりに解いてみた

昨日(もう一昨日か)センター試験二日目が実施されました。リンク

私も1X年前にセンター試験を受けました。それ以来、新聞に掲載される問題を取っておくことはあったのですが、実際に解くことはしていませんでした。今年は何を思ったか少しだけ解いてみました。数学I/Aです。しかも問1,2だけ。

いやはや、これだけでも結構大変でした。時間は正確に計りませんでしたが、多分30分くらいは掛かってしまった。問題自体はそれほど難しくはなかったものの、計算ミス1つと、引っかけにはまったミスが1つありました。間違えたのは、第一問2と第二問(1)ケコサシのところ。後者は計算ミス。前者は考えが足りなかった。しかし、第一問2は結構良問ではないかと思いました。私はまんまと罠にはまったわけですが。よーく考えればわかります。悔しいので以下に記します。

「rは(pまたはq)であるための必要条件なのか、十分条件なのか」、という問いです。 これを確認するには、まずr=>p\/qが成立するか、を確認する必要があります。成立するならrは「十分条件」でpまたはqは「必要条件」となります ...

more…

nasneを使ってみてSonyの企業力に関心した

ふと思い立って、パソコンでテレビを視聴するために、nasneを購入した。これで何ができて何ができないか、ということについては各所によくまとめられているので、ここではあまり触れない。

この商品の一番の感想は、「よくこれだけのものをこの値段で販売できるな」というもの。HDDをはじめとして、トランスコーダ, DDR3メモリ、Ethernet PHYなどのハードウェア部品を揃えるだけでも、最低でも7000円か8000円くらいはかかるのではないか(分解記事はここ)。もちろん、組み立てや梱包のコストもある。販売価格が15,000円程度であるが、一体小売店への卸価格はどれほどなのだろうか。原価割れしてしまわないのか、とさえ心配になる。

また、nasneはソフトウェアの出来が使い勝手の大部分を占める(ハードウェアで操作できる部分は無いに等しいので)。VAIO TV with nasne, torneといったソフトウェアも作成しサポートしなければならない。また、nasneの設定画面となるWebベースの画面も作成しなければならない。また、インターネットを介した予約サービスのための作り込みも必要である。

これらを設計/開発/生産/サポートするのに必要なコストはちょっと自分の経験からは想像できないが、よほど大量に販売できないと設計分のコストさえ捻出できないのではないか、と思う。あるいは製品単体ではなく、これを足がかりとして他の製品/サービスを購入してもらうという計画なのだろうか?

いずれにせよ、大企業に蓄積されている高いノウハウを垣間見ることが出来ると感じる商品だった。

以下は蛇足 ...

more…

ディスプレイのDPIの重要性に今さら気づいた

Permalink: 2012-12-04 06:34:00+09:00 by tu1978 in tags: PC

 現在使用しているノートパソコンのディスプレイ解像度は、

  • 13インチで1280x800画素
  • 15インチで1920x1080画素
の2機種。最近15インチの方ばかり使用している。久しぶりに13インチの方を使用したら、「目が悪くなってしまったのか?」と思うような違和感を感じた。おそらく解像度が低いことで、画像の輪郭が15インチよりぼけて見えてしまうので、そのように感じると思われる。

近頃はパソコンもタブレットも相当解像度が高くなってきているので、このような環境に一度慣れてしまうと、低解像度の画面にはもう戻れなくなってしまうと感じる。

more…

OpenCL & GPGPUメモ

さらにOpenCLやGPGPUの実験をしているが、そのメモ。

  •  PCIeを介して、Device to Host, Host to Deviceの双方向転送が同時に実行されない。NVIDIAのGPUだと、Compute Capabilityが1.Xのものだと双方向の同時通信は無理のようなので、AMDもデバイスの制限があるのかも知れない。 これは、複数のコマンドキューを使用して、できるだけコマンドのオーバーラップを試みても、まだ未解決。 カーネルの実行中にデバイスメモリへの転送はできていることは確認できた。
  •  カーネルが使用するメモリを転送し終わってから、実際にカーネルが動作するまでに100ms以上のディレイが発生することがある。clEnqueueNDRangeKernelを呼び出して、直ちにclFlushを実行しているのだが...(このディレイはAMDの場合のみ。NVIDIAではそれほど遅くはない)
  • OpenCLは、単にカーネルを呼び出すにも、カーネル引数をsetKernelArgで一つずつ積み上げなければいけない。しかも、引数のサイズまで指定する必要がある。さらに調査してみたら、GPGPUとしては、C++ AMPという方法もある(ちなみに、リンク先は機械翻訳なので日本語が少し変)らしい。しかも、Visual C++ 2012だと標準で実装されており、をインクルードするだけで使用できる。Microsoftの実装だと、Direct X 11のシェーダとしてカーネルが実行されるようだ。だが、C++ AMPの仕様自体は ...

more…