DBを使ったIPアドレス管理~任意のレンジで抽出する~
2010 年 7 月 15 日 by 山平IPアドレスを管理する場合、大抵Excelを使って一覧を作っていると思いますが、もっと効率よくIPアドレスを管理する方法はないものかと前々から思い悩んでいました。
今回はデータベースでIPアドレスを管理し、使用中または未使用のアドレスを任意のレンジで抽出できるように試行錯誤した結果の記録です。
IPアドレスを管理する場合、大抵Excelを使って一覧を作っていると思いますが、もっと効率よくIPアドレスを管理する方法はないものかと前々から思い悩んでいました。
今回はデータベースでIPアドレスを管理し、使用中または未使用のアドレスを任意のレンジで抽出できるように試行錯誤した結果の記録です。
前回、3と7と11の倍数かどうかを判別するプログラムを作成しました。
最初から分かっていたことではありますが、単純に剰余を求めるよりも計算に時間がかかってしまうのです。
人間が計算する場合は、桁数が多いと計算が大変だったり計算ミスが発生してしまったりするので、倍数判別を行なったほうがミスが減ることが期待できます。
しかし、コンピュータに計算させる場合、各桁を足したり引いたりする行為のコストが大きいため、単純な剰余の方が効率が良いのです。
今回は、前回のプログラムをもうちょっと早くできないか試行錯誤してみました。
事の発端は先日見かけたサイトでした。
1 + 1 + 1 = 3なので、111は3の倍数なんだそうです。
えっ、そうなの?と思って読んでみると、証明まで載っています。
ナルホドォ~興味深い。。。
興味深いついでに、プログラムで確認してみたくなったので、早速Rubyで実装してみます。
倍数の判定方法が興味深く、素数でもある3と7と11について試してみることにします。
あまり大々的に主張してきませんでしたが、Webサイトはリキッドレイアウトであるべきだと思っております。
程度の大小はあれど、ブラウザのウィンドウサイズを変えても横スクロールなしに閲覧できるのが当たり前なんじゃないの?閲覧するウィンドウサイズはユーザ本位で決めるものじゃないの?という思いがずっとありましたが、諸々の事情でリキッドレイアウトを採用することはほとんどありませんでした。
簡単に言うと、「リキッドレイアウトは手間がかかる割にそのメリットがエンドユーザに理解されにくく、逆に”合意を得たデザイン”が崩れているような印象を持たれやすい」というのがリキッドレイアウトを採用してこなかった理由です。あんまり簡単じゃないですね。
SQLiteを使ってみるにあたって、管理ツールはないものかと探してみた記録です。
wikipediaのSQLiteの項によると、日本語表示可能な管理ツール「SQLiteManager」があるとのことですが、本家サイトの情報もまだまとまりきっていないようなので、ubuntu公式パッケージになっている「SQLite browser」を試してみます。(注:Ubuntuパッケージ名は「SQLite browser」ですが、公式名称は「SQLite Database Browser」のようです。 )
環境はUbuntu8.04です。
ネット界の雄、Google製ブラウザのGoogle Chromeは速い速いと評判で、確かにWindows版の速さは体感できるほどですが、Linux版は如何ほどなのか、インストールして試してみます。
以前(linuxで簡単サムネイル画像の作成?)、ファイルのMIMEタイプ別にサムネイルを作成するコマンドが設定エディタに登録されているというところまで調査しました。
これに加えて、
この2点が解決すれば、汎用のサムネイル作成機能が実現しそうです。
普段はEmacsでコードを書いているのですが、NetBeansでRubyがサポートされているという噂を聞きつけて早速試してみることにしました。
なお、環境はUbuntu8.04、NetBeans6.0.1です。
NetBeans自体は以前にパッケージマネージャからインストールしていたので、後からRubyサポートを有効にする方法についての調査になります。
日本語環境なのになぜか表示が英語になっちゃったのであまり使っていません。。。