情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

epsファイルのBoundingBoxを設定しても効果がないとき このエントリーを含むはてなブックマーク

epsの表示領域をBoundingBoxを利用して設定しても、反映されなかったときのメモ

eps

epsファイルは、画像データ形式ですが、その中身はPost Scriptで記述されたテキストファイルです。 というわかけで、メモ帳で編集することができます。その中でも、「BoundingBox」の設定項目はとても重要です。

BoundingBoxを設定しても効果がない

BoundingBoxを設定することで、画像の一部を表示させることができるのですが、

%%BoundingBox 10 20 30 40
のように設定します。

しかし、epsファイルを編集しても、BoundingBoxを設定しても効果がありませんでした。

Trailerの後の部分を削除する

実は、epsファイルの最後の方に「%%Trailer」という部分があり、その後にも「%%BoundingBox」という記述が。ここで上書きされていたみたいです。というわけで、その部分を削除したら無事BoundingBoxの設定が反映されました。

スポンサーサイト
TeX | コメント:0 | トラックバック:0 | 編集

JavaのOutOfMemoryErrorについて このエントリーを含むはてなブックマーク

メモリ不足によるJavaのエラーとその対策方法についてメモしておきます。

OutOfMemoryError

java.lang.OutOfMemoryErrorが発生するときの状況について。

私の場合は、Javaを実行してからだんだんと使用メモリが増加し、GCを繰り返しても増加し続け、

java.lang.OutOfMemoryError: Java heap space
というエラーが表示されました。これは、JVMが確保するヒープサイズの最大値を使用メモリが超えたためです。

-Xmxオプションによる対策

手っ取り早い対策として、-Xmxオプションを利用する方法があります。たとえば、JVMのヒープサイズの最大値を1024MBにするためには、JVMの起動時(javaコマンド実行時)に、

-Xmx1024m
というオプションを追加すればOKです。

eclipseを利用している場合は、Debug ConfigurationまたはRun ConfigurationArgumentタブの「VM arguments」に「-Xmx1024m」を追加すればOKです。

おまけ1 manページ

javaコマンドのmanページ中の-Xmxオプションの項を掲載しておきます。

-Xmxn
Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is chosen at runtime based on system configuration. For more information, see HotSpot Ergonomics
 Examples:
    -Xmx83886080
    -Xmx81920k
    -Xmx80m

おまけ2 設定が大きすぎると

最大ヒープサイズを大きくしすぎると次のようなエラーが出ました、というメモ。

  • Error occurred during initialization of VM. Could not reserve enough space for object heap.
  • Could not create the Java virtual machine.
  • Error occurred during initialization of VM. Could not reserve enough space for object heap

おまけ3 Javaのヒープメモリ管理の仕組み

ちょっと古いんですが、関連記事です。→ @IT 「第3回 Javaのヒープ・メモリ管理の仕組み(2005/4/2)」

Java並行処理プログラミング
Google App Engine for Java [実践]クラウドシステム構築
Effective Java 第2版

Java | コメント:0 | トラックバック:0 | 編集

BINDインストールTIPS hosts.allow, hosts.deny 編 このエントリーを含むはてなブックマーク

BINDをインストールする最中に気がついたことをインストールTIPSとして紹介します

hosts.allow, hosts.deny ファイル

BINDの動作をnslookupで確認しようとしたとき、

No response from server
と表示されてしまったので、アクセスすらできていないことから、「hosts.allow」「hosts.deny」が思い浮かびました。

結論から言うと

結論から言うと、「BINDに関してはhosts.allowファイルもhosts.denyファイルも関係ありません」ということです。

なぜ関係ないのか

そもそも、hosts.allow,hosts.denyは、TCP Wrapperを利用するプログラムの通信を制限する設定ファイルなので、TCP Wrapperを利用していないBINDの通信には何の関係もないのです。

hosts.allow, hosts.denyが関係するプログラムとは

ずばりhosts.allow, hosts.denyが関係してくるプログラムは、TCP Wrapperを利用しているプログラムのことです。そして、TCP Wrapperの実態はlibwwrapという共有ライブラリです。つまり、hosts.allow, hosts.denyで通信相手を制限できるのは、libwrapを利用しているプログラムのみということになります。

共有ライブラリの利用状況を調べるには

つまり、プログラムが共有ライブラリlibwrapを利用しているかどうかが分かれば、hosts.allow, hosts.denyを設定する必要があるかどうかが判断できるわけです。

そのためには、lddコマンドを利用します。 たとえば、代表的なhosts.allow, hosts.denyを利用するプログラムであるsshdについてlddコマンドを利用してみます。

$ ldd /usr/sbin/sshd
 libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ae70961f000)
 libpam.so.0 => /lib64/libpam.so.0 (0x00002ae709828000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002ae709a33000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002ae709c38000)
 libaudit.so.0 => /lib64/libaudit.so.0 (0x00002ae709e50000)
 libfipscheck.so.1 => /usr/lib64/libfipscheck.so.1 (0x00002ae70a06a000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002ae70a26d000)
 libutil.so.1 => /lib64/libutil.so.1 (0x00002ae70a5be000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002ae70a7c1000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002ae70a9d6000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002ae70abee000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002ae70ae26000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002ae70b03c000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002ae70b26a000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002ae70b4ff000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002ae70b725000)
 libnss3.so => /usr/lib64/libnss3.so (0x00002ae70b927000)
 libc.so.6 => /lib64/libc.so.6 (0x00002ae70bc52000)
 /lib64/ld-linux-x86-64.so.2 (0x00002ae709402000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002ae70bfaa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002ae70c1f0000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002ae70c3f9000)
 libnssutil3.so => /usr/lib64/libnssutil3.so (0x00002ae70c5fb000)
 libplc4.so => /usr/lib64/libplc4.so (0x00002ae70c818000)
 libplds4.so => /usr/lib64/libplds4.so (0x00002ae70ca1d000)
 libnspr4.so => /usr/lib64/libnspr4.so (0x00002ae70cc20000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae70ce5a000)
すると、このようにsshdが利用しているライブラリの一覧を取得することができます。そして、この中に確かに「libwrap」があることが確認できます。よって、sshdはhosts.allow, hosts.denyの制御の影響を受けるわけです。

BINDデーモンnamedについて確認する

では、BINDはどうかというと、

$ ldd /usr/sbin/named
 liblwres.so.9 => /usr/lib64/liblwres.so.9 (0x00002b819e041000)
 libdns.so.26 => /usr/lib64/libdns.so.26 (0x00002b819e252000)
 libbind9.so.0 => /usr/lib64/libbind9.so.0 (0x00002b819e573000)
 libisccfg.so.1 => /usr/lib64/libisccfg.so.1 (0x00002b819e77c000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002b819e996000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002b819ece7000)
 libisccc.so.0 => /usr/lib64/libisccc.so.0 (0x00002b819ef16000)
 libisc.so.15 => /usr/lib64/libisc.so.15 (0x00002b819f11e000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b819f360000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b819f579000)
 libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00002b819f794000)
 libc.so.6 => /lib64/libc.so.6 (0x00002b819f9cf000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002b819fd27000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002b819ff2b000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002b81a013f000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002b81a03d5000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002b81a05fa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002b81a07fc000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002b81a0a05000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b81a0c07000)
 /lib64/ld-linux-x86-64.so.2 (0x00002b819de24000)
 libcap.so.1 => /lib64/libcap.so.1 (0x00002b81a0e1c000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b81a1021000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002b81a1239000)
を見ての通り、libwrapがありません。つまり、BINDにhosts.allow, hosts.denyの設定は無意味という訳です。

まとめ

今回のまとめはこんな感じ

BIND | コメント:0 | トラックバック:0 | 編集

BIND導入記06 動作確認編 このエントリーを含むはてなブックマーク

前回まででBINDの起動が終了しました。続いて、BIND正しく動作しているかの確認を行います。

動作確認環境

今回は、BINDサーバの動作確認をWindowsから行います。今回利用したのはWindows Vistaですが、ほかでもたいし変わりません。

DNSサーバの指定方法

DNSサーバは、DHCPを利用している環境では、プライベートIPアドレスの割り当てと同時に指定されるので、DNSサーバの指定を変更するためには、DHCPを行っているサーバもしくはブロードバンドルータの設定を変更します。

しかし、ルータの再起動が必要になるなど、動作確認で利用するにはめんどくさい方法です。

そこで今回は、特定のWindows PCのDNSサーバを直接指定することにします。

利用するDNSサーバを直接指定する

まず、コントロールパネルもしくはスタートから、「ネットワーク接続(コントロールパネル>ネットワークとインターネト>ネットワーク接続)」を開きます。そして、利用している回線(普通はローカルエリア接続もしくはワイヤレスネットワーク接続)を右クリックし、「状態」を表示します。状態表示の中の「プロパティ」をクリックし、プロパティを表示します。

続いて、「この接続は次の項目を使用します」の中から、「インターネット プロトコル バージョン4(TCP/IPv4)」を選択した状態で「プロパティ(R)」をクリックします。

「全般>次のDNSサーバーのアドレスを使う(E)」を選択して、「優先DNSサーバ」に、BINDをインストールしたサーバのIPアドレスを指定します。指定したらOKをクリックし、開いていたウィンドウを閉じて設定完了です。

この設定を戻すときは、「DNSサーバのアドレスを自動的に取得する」を選択し直せばOKです。

DNSキャッシュをフラッシュ(消去)する

動作確認をする前に、今までのDNSサーバの履歴があると問題解決に不都合が生じることがあるので、履歴(キャッシュ)を消去します。

コマンドプロンプトを右クリックで「管理者として実行」を選択して起動します。

起動したら、

>ipconfig /flushdns
を実行します。これで
DNS リゾルバ キャッシュは正常にフラッシュされました。
と表示されれば、キャッシュが消去されたことになります。

登録したアドレスが取得できるか確認する

引き続きコマンドプロンプトを利用します。example.netに192.168.1.21というIPアドレスを登録していたとすると、コマンドプロンプトで、

>nslookup example.net
を実行し、
サーバー: example.net
Address: 192.168.1.21

名前: example.net
Address: 192.168.1.21
と表示されればOKです。登録されていたIPアドレスを正しく取得できました。

登録されていないアドレスが取得できるか確認する

登録したアドレスexample.net以外も取得できるはずなので、コマンドプロンプトで

>nslookup yahoo.co.jp
を実行し、ただしくIPアドレスが返ってくることを確認してください。

結果

以上の動作確認が完了すれば、BINDサーバをとりあえず正しく設定できていることになります。

次回

ここまででインストール・設定・起動・動作確認までが終了しましたが、そうそううまくいきません。自分がそうでした。

そこで、BINDをインストールするに当たってつまづいたポイントを以降の記事で紹介しておこうと思います。

BIND9によるDNSサーバ構築
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
DNS & BIND 第5版

BIND | コメント:0 | トラックバック:0 | 編集

BIND導入記05 起動編 このエントリーを含むはてなブックマーク

前回までに、BINDの設定ファイルを作成し終えました。あとは起動するだけです。

namedの起動

BINDの実態は、「named」というデーモンです。これを起動するためには、

# /etc/rc.d/init.d/named start
を実行すればOKです。
namedを起動中 [OK]
となれば正常起動です。また、OSの起動時に自動的に実行するためには、
# chkconfig named on
とすればOKです。

次回

次回は、動作確認編です。正しく動作しているかを確認します。

BIND9によるDNSサーバ構築
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集
DNS & BIND 第5版

BIND | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。