progの最近のブログ記事

 ちょっとコンテナに用事があって、マルチスレッドなので色々気をつけるのもめんどくさくてjava.util.concurrentパッケージなんて調べてたんですが、APIドキュメントを読んでて意味不明な用語がありました。

日本語版Javadoc

 ConcurrentLinkedQueueの辺り。「リンクノードに基づく、アンバウンド形式のスレッドセーフなキューです」。
 アンバウンド形式って何?

 よくわからないので原文探してみた。

英語版Javadoc

 同じくConcurrentLinkedQueueの辺り。「An unbounded thread-safe queue based on linked nodes」。
 ん? 形式とかどこ? unboundedがアンバウンド形式?
 unboudedはboundedでない。詰まり有界ではないと言ってる気がする。誤訳なんちゃうのこれ。
 と思ったら結構有名みたいこの誤訳。直せよ(´・ω・`)

android.graphics.Matrixの動作

| コメント(0) | トラックバック(0)

 DevelopersでMatrixの仕様を確認しようとしたついでにいくつかblogを見た感じ

http://mymo.blog8.fc2.com/blog-entry-39.html
http://blog.livedoor.jp/inosan206/archives/51847604.html

 見たいにはまった人が居るようなので解説。

 Matrixには行列を設定するメソッドがいくつも用意されてます。

  • xxxRotate
  • xxxScale
  • xxxSkew
  • xxxTranslate

 xxxにはpre、set、postが入ります。
 preはすでに設定されている行列より前に目的の操作が行われるように行列を掛け合わせます。
 setは与えられた引数で行列を作って設定します。
 postはすでに設定されている行列の後に目的の操作が行われるように行列を掛け合わせます。

 つまり冒頭で挙げたblogのような不思議な挙動は使うメソッド或いはメソッドの順番が問題だったわけですね。

 どうもどうも以前C#の仕事するかも詐欺を行った長月です。

 今度こそC#の仕事にアサインされたので勉強用の書籍を探しています。
 とりあえず独習C#2.0があるのでその範囲外のトピックを扱ってるものがいいです。
 アプリ作るときに気をつけるべきものとか.NETに特有の事情とかC#らしいスタイルがよくわかるとかお前ライブラリの中身とか低レイヤの事情とか好きだろ? とかそういう観点でいい書籍があったら教えてください。

 ↓しかたねーな教えてやんよという方はコメントどぞー。

 こんにちはあおいたんこと長月葵です。

 長月も査読に参加したプログラミングの教科書「ストラウストラップのプログラミング入門」がもうすぐ発売です!
 C++erなら誰もが知ってるストロウストラップ御大が手ずから書いた、C++を使ったプログラミングの入門書として名高いProgramming Principle and Practice Using C++の日本語版です。
 約二年に渡る査読作業の結果妙な訳も概ね無くなって初心者も中級者も上級者も一読しておくべき本に仕上がったと思います。
 Amazonでも予約が始まったみたいなのでリンク貼っときますよ。

 

 XcodeのSCMでちょっとはまったのでメモ。
 XcodeのSCMメニュー経由でSVNを使ってバージョン管理をしているのだけど、ローカルで管理してるとHDDとか壊れたときに困るので外部のリポジトリに移した。
 で、そのリポジトリからチェックアウトしたプロジェクトでコミットとかdiffとかしようとすると170001(Authorization failed)が発生して操作できない。
 しばらく設定を格闘しても正しいっぽい。そもそもリポジトリの構成メニューでは認証出来てる。ターミナルで試してみても認証が通らない。でもなんかユーザ名が違う。なんでユーザ名が違うんだと海外のblogとか見て回っていたら同じことで悩んだ人が!(→こちら
 設定全部見たつもりだったけどプロジェクトの設定をローカルのリポジトリから外部のリポジトリに変えてなかった。なので認証に使うユーザ名とかパスワードとかがローカルのリポジトリに使われるものになっていて認証エラーになっていたと。なんでSCMの構成メニューとSVN操作で統一感ないんだこれ。
 まあ日本語ではこの手の話題が引っかからなかったので同じことで引っかかる人のためにメモっておきました。

まとめ:
 SCMの構成メニューでは認証出来てるのにコミットでAuthorization failed出る人は[プロジェクトの設定]→[一般]→[ルートとSCMを構成...]を確認してねってことで。

あ、あれ?

| コメント(0) | トラックバック(0)

最近ちょこちょこ読んでるTypes and Programming Languagesなんですが、どうも全体をパラ見した感じA正規化とかの話題はないっぽい? 或いはλ式の変換式とかでの議論はないっぽい?
ちょっと期待はずれでしょんぼり。
まあパラ見で英語が読めるほど英語力ないので数式とかBNFしか読んでないですからね、見落としてる可能性は高いのです。どっかに載ってる事を期待して読み進めます。

内容難しいし英語だし。。。
正直何度も読み返すのは英語な分だけ労力がバカにならないのでメモしながら読まざるを得ないと感じました。
というわけで数学的なつぶやきが今後増えるかも。
#計算理論の基礎も読んでるしね! 全然基礎じゃねえよあれ!

あおいろ日記@わんくま同盟一例を書いてみました

for_eachに関数こさえて渡すのがめんどくさくなってlambdaとか使ってますがそこは適当にあれをそうしてください。

int i の i ってなあに?

| コメント(0) | トラックバック(0)
 ちょっと前に表題の質問を受けました。更にアクセス解析を見てると同じ質問でGoogleから飛んできてる人が少なからずいたのでお答えします。

 C言語なんかでプログラミングしてるとループカウンタとかでよく見る int i なんですが、回りのプログラマの皆様に聞いてみたところ、多くの人が「int の i なんじゃないの?」と返されました。なるほど確かに int の一時変数なんだから適当に int の頭文字でいいやというのもあるかもしれません。実際の由来も似たような発想なのである意味で正解でしょう。
 しかし実際にはこれC言語以前に発祥が確認されてます。
 今有力とされている由来としては、Fortranの整数型変数を宣言する為の規則が I で始まる識別子であることから来ています。Fortranが最もさかんに使われていた時代や環境では、長い識別子をサポートしていなかった為、識別子の長さも識別子のバリエーションを増やす為に利用されていたそうです。なのでとりあえずループカウンタに整数型が欲しいな程度の物に長い意味のある識別子を使うのはご法度だったので、ループカウンタには I を使うという慣習が出来たようです。

 ちなみにこの逸話はエキスパートCプログラミングにも載っています。このトピック以外の話題も為になる本なので、興味のある方はご一読してみては如何でしょうか。

1*10^-9秒の世界

| コメント(0) | トラックバック(0)

 最近お仕事で数十~数百ナノセカンドの世界で戦ってます。

 守秘義務があるので詳しくはいえませんが、アセンブリとにらめっこでどうやれば一命令減るか。増えても良いから重い命令減らないか。ロードの直後に参照みたいな待ちの入る処理なくならないか。そんな事考えてます。
 今やっているのが組み込み機器向けの画像処理なので1クロック減るとずいぶん違うんですよね。画像のサイズが320*240だとしたら単純に1ピクセルずつコピーするだけでも76800回ループが回る訳です。組み込み機器ではPCと違ってまだ低クロックですから、割と高速で200MHzと仮定しても1クロックが2*10^-8秒。76800クロックなら384*10^-6秒。ループの中の処理が3クロック減ると1ミリセカンド速くなる計算です。
 素直に組んだルーチンと比べると既に四倍以上の速度向上を果たしてるんですが、それでもまだ足りてません。もうちょっとこの苦難は続きそうです。

 今週ずっとそんな感じなんですが、ひと段落したら家でVC相手に復習してわんくまの方にエントリこさえます。手動最適化に興味のある方お楽しみに。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちprogカテゴリに属しているものが含まれています。

前のカテゴリはお知らせです。

次のカテゴリはです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.11