サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
shibainu55.hatenadiary.org
最近はWindowsプラットフォームを扱うことが多く、微妙にハマりそうな落とし穴もあったのでメモしておく。まずは基本から。取り出した環境変数の文字列の一部を置換する場合は、%環境変数名%の終端「%」の部分を「:X=Y%」とすることで、X⇒Yという文字列置換が行える。 例)「/」を「-」に置換する場合 C:\>echo %date% 2010/03/24 C:\>echo %date:/=-% 2010-03-24 さて、ここで注意が必要なパターン(僕はこれでハマりました)について触れておく。Windows環境変数には「%time%」というものがあり、現在時刻を表示するためバッチの中ではかなりよく使うもの。ただ、この出力結果で注意すべきはHH:MMのHH部分が午前10時前(00:00〜09:59)には「0H:MMではなく<半角スペース>H:MM」と表記される点。 C:\>echo %time
RHEL5までと同様、modprobeで制御する。blacklistを使った方法は試していないが、ここでは動作確認済みの方法を。 1.IPv6無効化の設定を記述するファイルを作成 ファイルは起動時に自動的に読み込まれるよう/etc/modprobe.d/配下に作成する ファイル名は任意だが、ここではわかりやすく「disable_ipv6.conf」としておく 2.設定ファイルにIPv6コマンドを記述 options ipv6 disable=1 3.IPv6をベースとしているサービスの自動起動を無効化 # chkconfig ip6tables off 4.サーバーを再起動し動作確認 以下のディレクトリが作成されていないことを確認 # ls /proc/sys/net/ipv6 ls: cannot access /proc/sys/net/ipv6: そのようなファイルやディレクトリはあ
OSS-DBの代表格、MySQLとPostgreSQL。最新の安定バージョンはそれぞれMySQLha5.5、PostgreSQLでは9.0だが、どちらも新機能に関する情報がユーザ会MLやWebだけでなくようやく書籍としても出始めている。開発担当者、インフラ担当者どちらにとっても重要な新機能が複数あるが、個人的な目玉としてはレプリケーションの機能強化がなされた点。MySQLでは非同期アーキテクチャだけだったものがスレーブまで更新情報を伝達した時点(正確にはリレーログに書き込んだ時点)でクライアントに処理終了を返す「準同期レプリケーション」、PostgereSQLでは従来pgpool-iiなどの外装ツールを利用して実現していたレプリケーションがPostgreSQL本体の機能のみ(ホットスタンバイ機能+ストリーミングレプリケーション)で実現できるようになっている。 前述のMySQL・Postgr
Redhat系の場合はchkconfigを使うのだが、普段デスクトップ用に使っているUbuntuの場合は「sysv-rc-conf」という便利なコマンドがある。レポジトリからapt-getでインストールでき、シンプルなインターフェースなので結構気に入っている。 インストール手順 $ sudo apt-get install sysv-rc-conf 画面イメージは以下の通り。使い方は非常に簡単(画面を見ればわかるレベル)なので割愛。
psql経由でSQLを実行するときに、対話でのパスワード入力をせずにワンライナーで行いたい。pg_hba.confの設計・設定次第だが、trust以外の設定(md5等)ではpsql接続時にパスワード入力を求められる。手動操作やJDBC接続時などは問題ないが、Linuxプラットフォームで運用バッチ(シェルスクリプト等)でpsqlを使用した接続を行う場合に問題となることがある。 psqlの仕様として、パスワードを指定するオプションがない(mysqlの-p/--passwordオプションに相当するオプションがない)。一見紛らわしいが、-W/--password は、パスワード入力を要求させるオプションであってパスワードをコマンドライン引数で与えるものではない。 対応方法:$HOME/.pgpassファイルの使用 実行したいユーザのHOMEディレクトリに、.pgpassファイルを作成する。セキュリ
Fedora 14が出たので検証してみようと思い、普段使っているWindowsXP上にインストールしたVMWare Server 2.0上の仮想マシンとしてFedora 14(32bit)を導入してみた。OSのインストールは別段問題なかったのだが、VMWareToolsをインストールするのに少々ハマったので備忘録としてメモしておく。ちなみに、VMWare ServerではなくESXi 4.1で運用しているサーバー上の仮想マシンとして導入してみたところ、特に問題なくVMWareToolsがインストールできたので、VMWare Server 2に付属するVMWareTools側の問題なのだろう。 まず、問題が起こっていた環境はこう。仮想マシン作成時のOSタイプは「Other 2.6x Linux (32-bit)」。 # cat /etc/redhat-release Fedora relea
今回はRed HatEnterprise Linux(以下RHEL)のロケールについての備忘録。老朽化したシステムのリプレースの作業にて、RHELのおけるバージョンによるデフォルトロケールの違いを調べたので、忘れないようにここに書いておく。 <RHELの各バージョン毎のデフォルトロケール> RHEL2.1 - EUC RHEL3 - EUC RHEL4 - UTF-8 RHEL5 - UTF-8 なお、システムのデフォルトロケールの設定は「/etc/sysconfig/i18n」ファイルに記載されている。RHELではv3まではEUCであったのに対し、v4以降ではUTF-8となっているので古いOSを使用したシステムのリプレースの際などには注意が必要だ。 <ロケールの変更・追加方法> 基本的には前述の設定ファイル「/etc/sysconfig/i18n」の記載を修正するば問題ない。が、元々使用
皆さんも64bit OSを使用していて、確認したいパッケージが64bitか32bitなのかわかりづらくて困ったこと、ありますよね?(もしかして私だけ?) と、言う訳で以下のコマンドで当該パッケージのアーキテクチャ(ARCH)までを確認することができます。「rpm -qi」とかで個別にパッケージを見れば当然確認できますが、パッケージ名が良くわからない状態で一覧からgrepしたい時などにはなかなか便利。 rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n'出力結果の例はこんな感じ。 # rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' | grep libst libstdc++-3.4.6-10.i386.rpm compat-libstdc++-33-3.2.
Oracle Databaseは11gから、パスワード文字列の大文字と小文字をデフォルトで区別する仕様になった。セキュリティの観点で考えればこれは当然好ましい仕様ではあり、Oracle社もこの動作をそのまま変更せず使用することを推奨している。ただ、実際のシステム開発・構築の現場では既存のアプリケーションでパスワード文字列がハードコードされている場合があったり、クラサバ型システムにおいて多数のクライアント端末に大/小文字を区別されずに設定されたパスワードがある場合など、Oracle側でパスワードの大/小文字区別をすることが必ずしも嬉しくないケースもある。今回はそんな場合の対処方法に関する備忘録。 まず、Oracle 11gにおけるパスワード大/小文字を区別に関わる要素としては、Oracleのパスワードファイル(orapwファイル)と初期化パラメータ「SET SEC_CASE_SENSITIV
気がつけば随分久しぶりの更新。書き留めたいネタも溜まってしまったので、徐々にまた書いていきます。今回はSquidを使用したプロキシで、443以外のポートを使ったSSLサイトへのプロキシの仕方について。 例として、こんな状況を考えます。 目的のサイト(443以外のSSL Listenポート)はソースIP制限がされている(仮にhttps://hoge.com:12345とします) 許可されたソースIPからのアクセスになるよう、クライアントマシンからは特定のプロキシサーバを経由する クライアントマシンはプロキシサーバに対してSSHトンネリングを行う 図にすると以下のようなイメージですね(少しややこしいですが)。 この場合の動作としては、プロキシサーバが自分自身(127.0.0.1)から自身のSquidを使用し目的のサイトにWebアクセスしようとします。通常SSLで使用される標準ポートであるTCP
さて今回はRPMforgeリポジトリを導入することで、標準リポジトリで提供されないパッケージをyumでインストールできるようにする方法を紹介。 ポイントは、標準リポジトリとRPMforgeリポジトリの両方で提供されるパッケージがある場合に、標準リポジトリのパッケージがRPMforgeリポジトリのパッケージで上書きされてしまわないようにするところ。 yum-prioritiesプラグインの導入 CentOS5系の場合 # yum -y install yum-priorities CentOS4系の場合 # yum -y install yum-plugin-priorities 標準リポジトリ設定ファイルの編集 標準リポジトリの設定を編集する # vi /etc/yum.repos.d/CentOS-Base.repo 設定ファイルの変更箇所は以下の通り [base] name=CentO
Zabbixも1.8がかなり浸透してきて、日本語環境でもそろそろ安定したのかな?ということで、自宅の監視環境を1.8にバージョンアップ検証中。ユーザ言語を日本語にして使ってみたところ、グラフとマップに文字化けが。。というわけで、今回はZabbix 1.8を日本後環境で使用する場合の文字化け対処について。 文字化けの原因と対処 まずは現象の確認から。環境はCentOS 5.4 64bitにZabbix 1.8.2をソースからインストール。以下の例では、マップ上のステータス表示文字列が文字化けしてしまっており、運用上非常に見づらい状態となっている。 文字化けの原因は、Zabbixに同梱されている日本語フォント(DejaVuSans)では本来表示したい文字が含まれていないため。つまり、対処としては日本語フォントを追加してあげて、それを使用するようにZabbixのPHP側に修正を加えてやればよい。
これまでインターネット経由でリモートのVMWare ESXiホストの管理コンソールにアクセスする場合は、ESXiホストの管理IPにアクセス可能なLAN内のWindowsマシンを経由し、そこからvSphere Clientでアクセスしていたのだが、手元のPCから直接接続できないかと考えた。結論としてはESXiホストにアクセス可能なLANのLinuxマシンにSSH接続+下記TCPポートのポートフォワーディング、そしてhostsファイルの変更で実現することができた。 443番 902番 903番 コマンドラインでSSH接続する場合は以下のようになるが、実際にはputtyのポートフォワード機能を使うのがよいだろう。 $ ssh -L 443::443 $ ssh -L 902::902 $ ssh -L 903::903 上記の接続を確立したところで、手元のPCから自ホストへvSphere Cli
VMWare ESXiではCPUの電源管理設定として、デフォルトでは静的モード(static)が選択されている。私が個人的に使用しているESXiホストでは常時それほど多くの仮想マシンが動作しているわけではなく、またCPUリソースを大量に消費する種類のサーバではないため、使用リソースの大小に関わらず電源消費が一定というのは無駄があると考えられる。VMwareのフォーラムによれば、この設定を変更することで電力消費量が減ることがあるという。というわけで、今回は消費電力削減と静音化を狙いVMWare ESXiの電源管理を動的モード(dynamic)に変更してみる。 参考資料は以下の2つ。 vSphere リソース管理ガイド VMware Communities: How to set Power.CpuPolicy to “dynamic”? まず前提として、システムで使用しているCPUがInte
MySQLのMLで質問が飛んできていたので、レスついでにblogにも書いておく。 MySQLではInnoDBやNDB Clusterなどのストレージエンジンでトランザクションをサポートする。この際、Oracleなどに慣れた人からするとトランザクションのオートコミット(autocommit)でハマる場合がある。というのも、MySQLでは「autocommit=1」がデフォルトの設定となっており、トランザクションを開始する場合には、DML実行前にSTART TRANSACSTION文を実行する必要がある。今回は、これが不都合な場合の対処方法について説明する。 MySQLでは、オートコミットをオフにするためのシステムパラメータは用意されていない。ではどうするか?MySQL 4.1以降のバージョンでは、同じことを実現するための方法として「init_connect」パラメータを使用する方法がある。こ
自宅サーバの運用機能をメンテしていて、mailコマンドで添付ファイルを送りたくなったのでちょっと調べてみた。結論としては、uuencodeコマンドとmailコマンドを組み合わせれば実現できる。私のメイン環境はCentOS 4/5系(32/64bit)なのだが、uuencodeコマンドは自分の標準インストール構成ではインストールされていなかったので、yumでインストールした。 uuencodeは、バイナリデータをテキストデータに変換するUNIX及びUnix系OSのコマンド。或いは、それによって生成されるテキストデータのフォーマット。デコードにはuudecodeコマンドを用いる。 sharutilsのインストール # yum install sharutils含まれている実行ファイルは以下の通り # rpm -ql sharutils-4.6.1-2 | grep bin /usr/bin/c
<備忘録:SSH秘密鍵のパスフレーズ変更方法について> 人間が対話操作でログインに使用するユーザを公開鍵認証方式で認証する場合、秘密鍵のパスフレーズはセキュリティ面を考慮し定期的に変更することが望ましい。そんなわけで今回はパスフレーズの変更方法の備忘録。ただし、変更したパスワードを忘れてしまうと入れなくなるので気をつけること。 $ ssh-keygen -p Enter file in which the key is (/home/user/.ssh/id_rsa): /home/user/.ssh/id_dsa Enter old passphrase: Key has comment '/home/user/.ssh/id_dsa' Enter new passphrase (empty for no passphrase): Enter same passphrase again:
Javaで実装された画面処理から、ファイルシステム上にあるsudoを含むシェルスクリプトをキックする処理を実行したところ、以下のようなメッセージを標準エラー出力に出して処理に失敗した。環境はCentOS 5(RHELでも同様)。 sudo: sorry, you must have a tty to run sudosudoの設定としては、visudoコマンドで/etc/sudoers に下記の書式 ユーザ ホスト = (権限) コマンド 例)hoge ALL = (root) /sbin/rebootで設定を入れ、ファイルを:wqした瞬間に設定が有効になる。が、SSHクライアントやコンソール上での実行以外では前述の「you must have a tty to run sudo」のメッセージで実行できない。これを回避するためには、sudoのデフォルト設定の「Defaults requir
今回から何度かに分けてシェルスクリプト(主にbash)の小技を紹介する予定です。まずは第一弾として、変数の特殊な参照方法を紹介。 変数の特殊参照方法 変数の状態に応じて振る舞いを変える特殊な参照方法。変数に値が設定されていない場合に一時的に値を与えて参照する、などの特殊な参照が可能。知っているとなかなか便利な機能ではあるが、これらをむやみに使用するとシェルスクリプトの可読性が低下し、思わぬバグを生む可能性があるので、あまり多用はしないほうがよさそう。 参照方法 参照結果 ${VAR=aaa} 変数 VAR が未使用の場合に限り、変数VARへ文字列「aaa」を代入し文字列「aaa」を返す。変数VARがNULL値を含み既に使用されている場合は、変数 VAR への代入を行わず、変数 VAR の値を返す。 ${VAR:=aaa} 変数 VAR が未使用もしくは NULL の場合に限り、変数 VAR
CentOS 5系のOSで、yumを使い標準のままPostgreSQLのインストールを行うと、PostgreSQL 8.1.11がインストールされる。エンジンの改良が行われて高速に動作すると言われる 8.3 や最新の 8.4 を利用したい時は、 tar.gz でソースを持ってきてコンパイルする方法もあるが、やっぱりyumがいいなぁと思う私のような場合には、以下の方法で最新の PostgreSQLが利用することにした。 まずは、インストールしてあるPostgreSQLをアンインストール # yum -y remove postgresql 次にpgdg-CentOS - PostgreSQL 8.4.X PGDG RPMs for CentOS - Yum Repository Configuration から欲しいバージョンのPostgreSQL用リポジトリを入手し、インストール。 # w
今回はVMWare ESXi 4.0系をローカルディスクではなくUSBメモリにインストールする方法をまとめておく。 VMWare ESXiは、ローカルディスクのほかSANストレージ上にインストールすることもできるが、今回は自宅のマシンにインストール済みのWindows(Vista Ultimate 64bit)をそのまま消さずにUSBからのデュアルブート環境として作る試みとして、USBメモリにインストールしてみた。 前提事項として、使用するマシンがUSBブートできることを確認しておくこと。BIOS設定変更や再起動を繰り返してもUSBブートできない場合は、マザーボードやBIOSがUSBブートに対応していない場合があるので注意。推奨サーバにないハードの場合は、推奨外ハードウェア動作報告を参照する。 <ブートUSB作成手順> VMWare ESXiのISOイメージをダウンロードサイトからダウンロ
前回(MySQL table_cacheの設定に関して)に引き続き、MySQLネタ。自宅システム内の32bit Linuxプラットフォーム上のMySQLで、mysqld_safeのログに気になるメッセージ。今回はこの件について考える。ポイントとなるパラメータはmax_join_size。これは、一回の結合クエリで保持できる最大データサイズを指定するパラメータである。 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295 メッセージが出る理由の考察 プログラムを書く方ならおやっと思うかもしれないが、「4294967295」という数値は、unsigned int(32)の上限値(4G)で、「18446744073709551615」は、unsigned int(6
PostgreSQLなどをはじめ、DBMSを動かすサーバでは一般的にカーネルパラメータshmmax、shmallのパラメータの変更が行われる。この設定変更に関する情報はWebの色んなサイトにあるが、一部のサイトでは誤った記載が間々あるように思う。というのも、「shmallとshmmaxの設定値を同じ値に設定するんだ」、という説明は正しくない。一部のサイトでは、shmallの値をバイト数で指定しようとしているように見受けられる。 Linuxカーネルのソース(linux-2.6.18/include/linux/shm.hの17行目〜)を読むと、こんなコメントが。shmallについては、バイト数ではなくページ数を設定する。 #define SHMMAX 0x2000000 /* max shared seg size (bytes) */ #define SHMMIN 1 /* min sha
今回はLinux上でPostgreSQLやMySQLなどのDBMSを使う場合のLinuxカーネルチューニングについて。共有メモリ(shmallやshmmax)については設計時にもれなく設定の確認などをしている場合がほとんどだと思うが、それ以外のTipsとして、今回はLinuxのメモリオーバーコミットに関する記事。DBMS向けと書いたが、Linux上で動作させるソフトウェアであればDBMS以外でも考慮に入れて設計すべきポイントである。 Linuxのメモリ管理 Linuxのメモリ管理サブシステムには「メモリオーバーコミット」と呼ばれる機構があり、マシンに物理的に搭載されているメモリ以上の領域を確保できてしまう。この動作については、メモリ確保の際(Cの場合)実際に使われるmallocを使ったサンプルアプリなどで実際に挙動を確認することができる。参考までに、あるサイトの方は以下のようなサンプル(a
久しぶりにMySQLネタ。今回はtable_cacheの設定に関するお話。 table_cacheの意味と仕組み まずはじめにtable_cacheの意味をおさらい。table_cacheは1度開かれたテーブルをメモリ上に維持しておき、再利用することでテーブルを開くことによる負荷を低減するためのもの。MySQLではオープンしているテーブル数は「show open tables」コマンドで確認できる。 リファレンスマニュアルでも説明されているが、MySQLでは同じテーブルに対して同時にアクセスするスレッドがあった場合、それぞれが同じテーブルを重複して開く仕様となっており、これによりマルチスレッド環境でのパフォーマンスを向上させている。このことから、MySQLサーバで開かれるテーブル数の最大値は最低でもmax_connectionsと同数であることがわかる。「最低でも」と制限がつくのはjoin
Oracleって、そういえばHAクラスタやRACやらクラスタウェアの制御下でしかサービス起動停止の制御したことなかったなぁ・・・というわけでいまさらな感も多々ありつつdboraスクリプトで自動起動停止するやり方を試したときのことを書いてみる。 通常、クラスタ構成ではクラスタウェア経由で起動停止を制御するため、Oracle Databaseの自動起動停止は考慮不要。シングル構成のインスタンスをOSのサービスとして自動起動停止したい場合には、Oracle付属の $ORACLE_HOME/bin/dbstart、dbshutを使用する。が、これをサービスとして実行したい場合には、dbstartとdbshutをOSサービスに登録するためのラップスクリプトが必要になる。サービス用のこのスクリプトは、Miracle Linuxには標準で付属するが私がよく使うRHELの場合には自作が必要。 ・・・という
以前の記事(ネットワークのAuto-Negotiationについて)でネットワークやサーバ機器間の通信速度設定の重要性について触れたので、今回はそれに関連してLinuxサーバでduplexモードやautonegotiationを制御する方法を簡単に紹介。 ethernetで強制的にduplexモードやautonegotiationを切り替えるにはethtoolコマンドを使用する。またこのコマンドはリンク速度の変更にも使用される。 [使用例] デバイスeth0のautonegotiationをoffにする ethtool -s eth0 autoneg off デバイスeth0のduplexをfullにする ethtool -s eth0 duplex full デバイスeth0のspeedを1000(Giga)にする ethtool -s eth0 speed 1000再起動しても設定が反
システム開発のでは製造・構築フェーズが終わると当然のことながら各種テストを行う。今回は、その中でもよくシステムテストと呼ばれるフェーズに含まれることの多い負荷・性能テストに関するお話。 <テストツールの検討と選定> 私の経験では、これまで行ってきたテストでは、規模やシステムの特性に応じて以下のようなテストツールを選定・使用してきた。 OSS等のフリーのテストツール(JMeter、Apache Bench、httperf、http://www.microsoft.com/japan/technet/archive/itsolutions/intranet/downloads/webstres.mspx?mfr=trueMS Web Application Stress Tool) 自作テストツール(Perl、シェルスクリプト等) 商用テストツール(Loadrunner等。※個人的にはあまり経
次のページ
このページを最初にブックマークしてみませんか?
『shibainu55日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く