2014年5月6日火曜日

Google Maps JavaScript API v3でマップのサイズを変更する方法

Google Maps JavaScript API v3でマップのサイズを変更する方法をメモしておきます.

マップのサイズを動的に変更すると,次のように一部が欠けているような感じになることがあります.

これを起こさないようにするには,サイズの変更後にマップに対して「resize」イベントを送ればいいみたいです. そうすると,次のように一部が欠けることなく,マップのサイズを変更することができます.

試しに作ってみたコードは以下のとおりです.

2014年4月2日水曜日

CentOS6.5をネットワークインストールするためのUSBを作成

CentOS6.5をネットワークインストールするためのUSBを作成してみました. 手順をメモしておきます.

1.Linux Live USB Creator (Version 2.8.27)をWindows 7にインストール
2.CentOS-6.5-x86_64-netinstall.isoファイルをダウンロード
3.USBメモリを装着
4.Linux Live USB Creatorを起動し,下記の通り指定し,実行
  • 装着したUSBメモリを指定
  • ダウンロードしたISOファイルを指定

2014年2月3日月曜日

[読了]BORN TO RUN

「BORN TO RUN」を読みました.

Christopher McDougall: BORN TO RUN, NHK出版, 2010-02

本書についてのメモを以下に記しておきます.

ジョギングを始めてから4年目になる.1年目は5km走るのがやっとだったが,2年目には20kmを越えて走れるようになった.当時は,ひと月の走行距離が100kmを超えていたし,1kmを5分程度で走れるようになった.でも,最近は,ひと月に50kmを走るのがやっとで,1kmを5分台で走れなくなった.

原因は左膝の痛みである.走る回数が多かったり,1度に10kmぐらい走ったりすると,左膝が痛くなる.それを我慢して走ると,数日間激痛に悩まされることになる.4年も続けると,市民マラソンとかに挑戦したくなるのだが,「出場=ジョギングリタイア」になるはずなので,そうするわけにはいかない.そんな状況に嫌気がさしていたときに目に止まったのが本書である.

本書は,走ると足が痛くなる理由や,走りと人類の進化との関係を取り上げながら.著者と様々なランナー,そしてある部族との交流を描いた物語である.彼らの交流については,本書を読んでもらうことにして,ここでは,走ると足が痛くなる理由や,走りと人類の進化との関係について簡単にまとめておく.

走ると足が痛くなるのは,シューズと走り方に原因がある.人間の足は,長い進化の過程において裸足で走ることに最適化された.そのため,シューズを履いて走ると,そのバランスが崩れて,足の各部に痛みが生じる.また,足の接地部分を踵(かかと)から爪先に移して走る方法は,足のひねりを過度に引き起こし,シューズと同様の結果を招く.本書では,「高価なシューズほど故障率が上がる」,「分厚いクッション付きのシューズが踵から接地する走り方を産んだ」,「裸足でトレーニングすると,怪我をしなくなる」などの事例を挙げながら,その原因について分析している.

走りと人類の進化の話では,人間の足が裸足で走るのに最適化された理由について答えている.他の陸上動物と比べてこれといった強みを持たない人類が現在まで生き残れたのはなぜか.それは,我々人類が走る能力を身につけたからである.走る能力といっても,我々人類が身につけたのは,短い距離を速く走る能力ではなく,長い距離を絶え間なく走る能力である.ほとんどの陸上動物が速く走る能力を選んだのに対し,我々人類は長く走る能力を選んだ.それは,速く走る動物達は,長く走り続けるとバテて動けなくなるからだ.大昔の人類は,獲物を狩る手段を得るため,長い距離を絶え間なく走る能力を獲得したのである.

いずれも目からウロコ的な話だが,真偽の程は実践で確かめてみることにしたい.どうもアフリカのマラソンランナーの走り方がベストみたいなので,それを真似てみることにした.そうすると,踵から着地せずに走れるらしい.膝痛が解消すればよいのだが,さてどうなることやら.ちなみに,本書を読むと,読者は走りたくなるそうである.その話は本当だったので,走ろうかどうか迷っている人は,本書を読んで見るのが良いかもしれない.

2014年1月29日水曜日

線形回帰をJavaで実装

文献[1]で紹介されている線形回帰をJavaで実装してみました.

線形回帰は,与えられたデータに適した関数を基底関数の線形結合から求める手法です. 多項式基底とベイズ基底について正規化項ありとなしで関数を求めてみました. 結果は次の図のとおりです.

[1] 中谷 秀洋: 線形回帰を実装してみよう, 機械学習はじめよう 第11回, http://gihyo.jp/dev/serial/01/machine-learning/0011

2013年11月28日木曜日

AC法をJavaで実装

文献[1]で紹介されているAC法をJavaで実装してみました.

AC法はテキスト内に出現する複数のキーワードを1回走査しただけで検出することができるアルゴリズムです. トライの部分はダブル配列法を使いたいところですが,コード量が多くなるので,今回はTreeMapで済ませました. テストケースの件数が少ないので,もしかするとバグっているかもしれません.

[1] 伊藤 直也, 田中 慎司: Web開発者のための大規模サービス技術入門, 技術評論社, 2010-08

2013年11月17日日曜日

VB CodeをJavaで実装

文献[1]で紹介されているVB CodeをJavaで実装してみました.

また,圧縮の効果も調べてみました. 以下がその結果(一例)です. 140万エントリのID列を想定してランダムに生成した整数列をギャップ列に直して,VC Codeでエンコードしています. 元の整数列が密になる(整数列の長さが増す)ほど,圧縮率が良くなっています. 密になればなるほど,整数間のギャップが小さくなるので,期待通りの結果になりました.

整数列長圧縮前(B)圧縮後(B)圧縮率
1441.00
1040320.80
1004002600.65
1000400019550.49
1000040000140790.35

[1] 伊藤 直也, 田中 慎司: Web開発者のための大規模サービス技術入門, 技術評論社, 2010-08

2013年9月9日月曜日

[読了]MAKERS

「MAKERS」を読みました.

Chris Anderson: MAKERS, NHK出版, 2012-10

本書についてのメモを以下に記しておきます.

本書は,ビットの世界で起きた変革がアトムの世界でも起きつつあることについて述べられている.それは,経済規模で捉えると,ビットの世界と比べて少なくとも5倍大きい世界での変革であり,21世紀版産業革命と呼ばれるものになるであろう変革である.

ビットの世界で起きた変革は,デジタル技術とネットワーク技術の融合によって生じたものである.それらが,広大なスペースを持つ棚と際限なくそこに並ぶモノをサイバー空間の中に登場させたおかげで,我々は従来より自分の嗜好にあったモノを供給したり消費したりすることが可能になった.そして,個人の嗜好に従ったモノの供給と消費は,ビットの世界に様々なロングテールを出現させた.さらに,ビットの世界では,モノのフリー化も進展している.サイバー空間にある棚に無償のモノが供給されるケースが多くなっているのである.

アトムの世界で起きつつある変革は,先の二つの技術に加え,3Dプリンタに代表される新たな製作技術の登場によって生じている.これらは,モノの製作に必要なツールを企業の工場から個人の工房へと移し,また,個人のアイデアを補強したり,集約したりする場を提供する.これにより,ツールを使いこなすスキルは必要になるものの,自分の嗜好にあうモノを自分自身で製作できるようになる.もう自分が欲しいモノを気長に待つ必要はなくなる.さらに,気が向けば,自分と同じ嗜好の持ち主のためにそれをサイバー空間の棚に置くこともできる.

モノを製作するツールの大衆化とそれを並べる棚の存在がビットの世界で起きた変革をアトムの世界にもたらしている.アトムの世界では,ロングテールの真ん中の部分がごっそり抜け落ちていた.極端に言うと,工場で大量生産されたモノがある頭と,オーダメイドのモノがある尻尾の先は存在するものの,胴と尻尾の大部分にモノは存在しなかったのである(デジタルの世界ではこの部分の売上は全体の3分の1程度あるそうだ).しかし,アトムの世界で起きつつある変革は,この部分にもモノを供給するようになる.それは,大量でもなく,少量でもなく,小回りの効く中規模なチームが生きていくのに必要な利益を生み出せる量のモノが存在する場所である.そして,自分だけでなく同じ嗜好の持ち主を満足させることができるやりがいのある場所である.

このような新天地が我々のすぐ目の前にある.まだ人が少ないうちに見物だけはしておいたほうがよいかもしれない.とりあえずAutodeskの123Dはダウンロードしてみた.3Dプリンタはどうしようか.