サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
tetsuyai.hatenablog.com
概要 .bash_profileを作成したところ、MacPortsでインストールしたパッケージが見えなくなって困っていたのですが、ようやく解決しました。 直接の原因は.bash_profileを作成したことで.profileが読み込まれなくなり、それによってMacPortsがインストールしたパッケージへのPATHが反映されなくなったためです。 しかし、元を辿れば.profile・.bash_profile・.bashrcといったファイル群の依存関係を正しく理解していなかったことが原因です。また、これらの依存関係はUnix系OS全般に共通する振る舞いでもあるため、この機会に整理してみました。 検証環境 Mac OS X 10.6.8 GNU bash version 3.2.48(1)-release (x86_64-apple-darwin10.0) CentOS release 5.6
ERB::Utilを使う方法 >> ERB::Util.url_encode("http://www.foobar.jp/baz/?qux=123&quux=xyz") => "http%3A%2F%2Fwww.foobar.jp%2Fbaz%2F%3Fqux%3D123%26quux%3Dxyz" CGIを使う方法 # エンコード >> CGI.escape("http://www.foobar.jp/baz/?qux=123&quux=xyz") => "http%3A%2F%2Fwww.foobar.jp%2Fbaz%2F%3Fqux%3D123%26quux%3Dxyz" # デコード >> CGI.unescape("http%3A%2F%2Fwww.foobar.jp%2Fbaz%2F%3Fqux%3D123%26quux%3Dxyz") => "http://www.foob
ステージング環境の挙動がおかしいので調べてみると、"MySQL server has gone away"というエラーが発生していました。どうやらクローズされたコネクション上でクエリを実行しようとすると、このエラーが発生するようです。もう少し詳しく調べてみました。 A.2.2. MySQL server has gone away エラー このセクションでは、関連する Lost connection to server during query エラーもカバーしています。 MySQL server has gone away エラーの最も一般的な原因は、サーバがタイムアウトして接続がクローズしたことです。デフォルトでは、何も起きない状態が 8 時間続くと、サーバは接続をクローズします。この時間は、mysqld 開始時に wait_timeout 変数を設定することで変更できます。 MySQ
概要 KLab株式会社さんの自家製ツールであるmymemcheckを使うと、my.cnf(もしくはSHOW VARIABLESの結果)をもとに、 最低限必要な物理メモリの大きさ IA-32のLinuxでのヒープサイズの制限 innodb_log_file_sizeの最大サイズ をチェックすることができます。 mymemcheckはDSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!からダウンロードできます。 構成 CentOS 5.6 (Final) MySQL Ver 14.14 Distrib 5.5.15, for Linux (x86_64) using readline 5.1 インストール CPANから必要なモジュールをインストールします。 # cpan install Readonly # cpan install UNIVERSAL::requireモ
インストール CentOSの標準リポジトリには存在しないので、rpmforgeリポジトリを追加します*1。 rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpmインストールします。 # yum install monit --enablerepo=rpmforge バージョン # monit -V This is monit version 4.10.1 Copyright (C) 2000-2007 by the monit project group. All Rights Reserved. Verbose mode -vでVerbose mode、-Iでフォアグラウンドで起動します。他のコンソールからサーバーを操作することで、monitの
ちょっと“実行時間を確認したい”ときに便利なTime.nowですが、秒の精度でしか表示できません。 >> Time.now => Sat Oct 30 01:46:23 +0900 2010 ボトルネックを探しているときなど、秒だと精度が足りないというときは、Time#usec*1を組み合わせることでマイクロ秒の精度を得られます。 >> Time.now.usec => 323167 Time#usecそのものはマイクロ秒しか返さない*2ので、Time.nowと組み合わせてこんな風に使いましょう。 >> Time.now.instance_eval { '%s.%03d' % [strftime('%Y/%m/%d %H:%M:%S'), (usec / 1000.0).round] } => "2010/10/30 02:12:42.827" *1:usecの精度は環境に依存します。最後
まずはS3Syncをインストールします。 $ wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz $ tar zxvf s3sync.tar.gz $ sudo cp -pr s3sync/ /usr/local/ローカルディレクトリとAmazon S3間の通信にSSLを使いたいので、ssl.certs.sharをダウンロードして実行します。 $ mkdir /usr/local/s3sync/certs $ cd /usr/local/s3sync/certs $ wget http://mirbsd.mirsolutions.de/cvs.cgi/~checkout~/src/etc/ssl.certs.shar $ sh ssl.certs.shar自動実行するためのスクリプトを用意します。例えば、こんなの。
概要 共有ライブラリをシステムに認識させるには、そのディレクトリを共有ライブラリ検索パスに追加する必要があります。/libディレクトリと/usr/libディレクトリはデフォルトで含まれていますが、FedoraやCentOSでは/usr/local/libディレクトリが含まれていないため、手動で追加する必要があります。 構成 CentOS release 5.7 (Final) 環境変数 LD_LIBRARY_PATHに指定する 環境変数 LD_LIBRARY_PATHを使うと、そのディレクトリを一時的に共有ライブラリ検索パスに追加することができます。ただし再起動すると元に戻ってしまうため、永続的に追加したい場合は/etc/ld.so.confに記述します。 LD_LIBRARY_PATHに指定されたディレクトリは/etc/ld.so.confに記述されたディレクトリよりも優先的に検索されま
概要 多くのRPMパッケージにはバイナリパッケージとソースパッケージが用意されています。ソースパッケージはSRPMとも呼ばれ、.src.rpmという拡張子が付けられています。 バイナリパッケージはあらかじめビルドされたパッケージであり、簡単にインストールできる反面、ライブラリのバージョンが違ったり依存関係に問題があると、正常に動作しないことがあります。その場合はソースパッケージから自分の環境に合うバイナリパッケージをリビルドして、インストールすることになります。 ここではsysstatを例に、SRPMを使ってパッケージをインストールする方法を説明します。 構成 CentOS release 5.7 (Final) RPM バージョン 4.4.2.3 rpmbuildのインストール SRPMからバイナリパッケージを作成するには、rpmbuildというコマンドが必要になります。まだインストール
概要 Memcacheのstatsコマンドでどんな情報を表示できるのか、というメモ。 構成 CentOS release 5.5 (Final) memcached version 1.4.5 statsコマンドで表示できる情報 項目名 説明 例 pid プロセスID 18622 uptime memcachedの稼働時間(秒) 10699178 time 現在時刻のタイムスタンプ(unixtime) 1324433164 version memcachedのバージョン version 1.4.5 pointer_size ホストOSのポインタサイズ(32bit or 64bit) 64 rusage_user プロセスがユーザモードで動作した累積時間(秒.マイクロ秒) 1463.871486 rusage_system プロセスがカーネルモードで動作した累積時間(秒.マイクロ秒) 413
概要 MySQLのメモリ関係のシステム変数について、まとめてみました。 構成 MySQL Ver 14.14 Distrib 5.5.14, for Linux (x86_64) using EditLine wrapper メモリサイズの見積もり はじめに、MySQLのプロセスが必要とするメモリサイズの見積もり方法を確認します。 必要なメモリサイズ = グローバルバッファのサイズ +(スレッドバッファのサイズ × 最大同時接続数)グローバルバッファのサイズは以下の方法で計算します。 max_heap_table_sizeは必ずしも割り当てられる訳ではありませんが、安全側に倒すため、計算に含めています。 グローバルバッファのサイズ = key_buffer_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size +
概要 git remote add origin 〜でタイポして間違ったURLを登録してしまったり、中央リポジトリが引っ越してしまった場合に、リモートリポジトリのURLを変更する方法です。 構成 git-core @1.7.6.1_1+doc+pcre+python27 git-flow @0.4.1_0 URLの変更方法 $ git remote set-url <リポジトリの名前> <新しいリポジトリのURL> 作業ログ 変更前のリモートリポジトリの確認 リモートリポジトリのURLはgit remote -vで確認できます。 $ git remote -v origin git+ssh://repos.tetsuyai.com/var/git/buzzbuzz.git (fetch) origin git+ssh://repos.tetsuyai.com/var/git/buzzbuz
構成 CentOS release 5.6 (Final) GNU bash version 3.2.25(1)-release (x86_64-redhat-linux-gnu) 問題 リダイレクトすると「許可がありません/Permission denied」と表示されます。これはlsのみがsudoされて、リダイレクトはログインユーザーで実行されたためです。 $ sudo ls > /etc/foo-bash: /etc/foo: 許可がありません 解決方法 リダイレクトをteeに置き換えます。teeは標準入力から読んだ内容を標準出力とファイルに書き出すコマンドです。 $ ls | sudo tee /etc/foobin元のリダイレクトと同じようにファイルにだけ書き出したいときは、標準出力を/dev/nullにリダイレクトします。 $ ls | sudo tee /etc/foo >
パーティショニングはMySQL 5.1で追加された新機能です。 パーティショニングの種類 種類 内容 RANGE パーティションごとに範囲を指定して振り分けます。 LIST パーティションごとに格納する値で振り分けます。 HASH 1つのカラムの値を式の結果で振り分けます。式を指定しないとMOD関数を使用します。また、大量のデータにはLINEAR HASHが用意されています。 KEY 1つ以上のカラムの値をMD5関数やPassword関数で評価して分割します。 パーティショニングの制約 パーティショニング表現に含まれるカラムは、そのテーブル内に存在するすべてのプライマリキーとユニークキーに含まれていなければなりません。 ただしプライマリキー、またはユニークキーが存在しない場合は例外です。 パーティショニング表現は連続した整数値をとるものでなければなりません。 たとえば日付を利用する場合、T
EBSボリュームのアタッチ Attach Volumeボタンを押します。 ダイアログが表示されたら、EC2インスタンスを選択し、デバイス名を入力します。 ファイルシステムの作成 # ls -l /dev/sd* brw-r----- 1 root disk 8, 1 Jun 17 17:41 /dev/sda1 brw-r----- 1 root disk 8, 3 Jun 17 17:40 /dev/sda3 brw-r----- 1 root disk 8, 16 Jun 21 17:44 /dev/sdbアタッチしたEBSボリュームを、OSが正しく認識できているか確認します。 # mkfs -t ext3 /dev/sdbEBSボリュームにファイルシステムを作成します。 ファイルシステムのマウント # mkdir /mysql # mount /dev/sdb /mysqlファイルシ
概要 ALMiniumとは、ALM(Application Lifecycle Management)とRedmineの合金(..nium)という意味で、Redmineを利用してALMを実現するためのツールです。簡単なインストーラで、Redmine・Subversion・Git・Mercurialなどプロジェクト管理に必要なツールを一通りインストールし、ツール間のアカウント・アクセス権の連携や、チェンジセット・チケットの連携も自動で行ってくれます。 また、アジャイル開発やCIに便利な各種プラグイン(Backlogs・Hudson Plugin・Code Reviewなど)もインストールしてくれます。 構成 Scientific Linux release 6.1 (Carbon) インストール Gitをインストールします。 # yum install git ALMiniumをインストール
neobundle.vimの導入 GitHubからcloneするだけで導入できます。 $ git clone https://github.com/Shougo/neobundle.vim ~/.vim/neobundle.vim.git プラグインの管理 ~/.vimrcに以下の行を追加します。 1 filetype off 2 3 if has('vim_starting') 4 set runtimepath+=~/.vim/neobundle.vim.git 5 call neobundle#rc(expand('~/.vim/.bundle')) 6 endif 7 8 NeoBundle 'Shougo/unite.vim' 9 NeoBundle 'Shougo/neocomplcache' 10 NeoBundle 'thinca/vim-ref' 11 12 filety
概要 ハードディスクの簡易ベンチマークとして、hdparmコマンドを使う方法を紹介します。hdparmコマンドはハードディスクのパラメータを設定・取得するコマンドですが、-tオプション・-Tオプションを指定することで、シーケンシャルアクセスの読み込み速度を測定することができます。 構成 CentOS release 5.7 (Final) ドライブ識別情報の表示 -I Request identification info directly from the drive, which is displayed in a new expanded format with considerably more detail than with the older -i flag.直接、ドライブに識別情報を要求します。古い-iフラグに比べるとかなり詳細な、新しい拡張されたフォーマットを表示します。
概要 CentOS 5にPostgreSQL 9.1.2をインストールします。 構成 CentOS release 5.7 (Final) PostgreSQL 9.1.2 インストール済みパッケージの確認 インストール済みのPostgreSQLがないか確認します。 # psql --version-bash: psql: command not foundインストール済みの関連パッケージも検索しておきます。 # rpm -qa | grep postgresqlpostgresql-libsが見つかりました。 postgresql-libs-8.1.23-1.el5_7.3 postgresql-libs-8.1.23-1.el5_7.3Name : postgresql-libs Arch : x86_64 Version : 8.1.23 Release : 1.el5_7.3 Si
編集モード gg ファイルの先頭に移動する G ファイルの末尾に移動する ^ カレント行の先頭の文字に移動する 0 カレント行の先頭に移動する $ カレント行の末尾に移動する w 次の単語の先頭に移動する b 前の単語の先頭に移動する W 次の空白で区切られた単語の先頭に移動する B 前の空白で区切られた単語の先頭に移動する cw 単語の末尾までを削除し、挿入モードに入る dw 単語の末尾までを削除する f○ カレント行の次の○に移動する t○ カレント行の次の○の一文字手前に移動する F○ カレント行の前の○に移動する T○ カレント行の前の○の一文字手前に移動する ; 次の○に移動する , 前の○に移動する ct○ カレント行の次の○の一文字手前までを削除し、挿入モードに入る dt○ カレント行の次の○の一文字手前までを削除する Shift+} 次の空行へジャンプする Ctrl+w,
指標を読む ロードアベレージ # uptime 15:40:33 up 357 days, 22:34, 2 users, load average: 0.19, 0.17, 0.12 コマンド uptime。load averageに続く3つの数字が過去1分間、5分間、15分間の平均値を表します。 意味 処理を実行したいが、なにかしらの要因で実行を待たされているプロセスの数を表します。したがって、ロードアベレージが高い状態とは多くのプロセスが処理を実行できずに待たされている状態、ということになります。 解釈 なにかしらの要因としては「ほかのプロセスにCPUが使われていて、空くのを待っている状態」と「ディスクに読み書き要求を発行していて、その結果を待っている状態」の二種類が考えられます。前者は「CPU使用率」、後者は「I/O待ち率」として数値化することができます。ロードアベレージを見ただけ
概要 ↓ memcachedのtcp_backlogのデフォルト値は1024で、stats settingsにも1024と表示されているのですが、 stats settings ... STAT tcp_backlog 1024 ... END↓ net.core.somaxconnがデフォルト値のままだと128に切り詰められてしまい、 # cat /proc/sys/net/core/somaxconn 128負荷が高いサーバーでは接続要求を取りこぼしてしまうことがあるそうです。 このnet.core.somaxconn、MemcacheやMySQLなど、高負荷時に多くの接続要求を受け付けるサーバーではチューニングが必要なカーネルパラメータのようです。いったいどういう値なのか、調べてみました。 net.core.somaxconnとは TCPソケットはlisten()関数の第二引数 ba
検証環境 Fedora release 8 (Werewolf) Bash GNU bash, version 3.2.33(1)-release (i386-redhat-linux-gnu) プロセスを見る方法 [ $$ != `pgrep -fo $0` ] && { echo 'Cannot run multiple instance.' >&2; exit 9; } $$ 自分自身のプロセスID pgrep パターンにマッチするプロセスのプロセスIDを返す -f パターンをコマンドライン全体(パスや引数を含める)と照合する。デフォルトではプロセス名のみと照合する -o パターンにマッチする一番古いプロセスのプロセスIDを返す $0 自分自身のプロセス名(パス名) >&2 標準エラー出力にリダイレクトする 失敗例「cronで実行すると常に二重起動と判定される」 この方法により二重起
概要 提供事業者 株式会社KDDIウェブコミュニケーションズ サービス名 CloudCore VPS 種別 2G 物理/仮想 仮想 CPU 物理1コア Memory 2GB HDD 100GB OS CentOS release 5.6 (Final) サーバー構成 # uname -aLinux kvps-27-34-160-196.secure.ne.jp 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux# cat /etc/redhat-releaseCentOS release 5.6 (Final)# cat /proc/cpuinfoprocessor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 2 mo
概要 mysql-develをインストールしたところ、依存関係に引きずられてMySQL本体のバージョンも上がってしまいました。エラーによってMySQLを起動できなくなったため、InnoDBログファイルを作り直すことで修正しました。 問題 mysql-develをインストールしたところ、依存関係に引きずられてMySQL本体のバージョンも上がってしまいました。yumはmysqlやmysql-serverをアップデートする旨を表示していた筈ですが、表示内容をまじめに確認しなかったため、この時点ではMySQL本体がアップデートされたことに気付いていませんでした。 # yum install mysql-devel.x86_64 --enablerepo=remiすると、バックエンドにMySQLを使っているZabbixがエラーを吐き始めました。MySQLの再起動を試みますが、既に停止中で、起動に失敗
検証環境 CentOS release 5.6 (Final) RVM 1.6.31 インストール 依存パッケージをインストールします シェルのバージョンを確認します。 $ bash --version GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.Curlをインストールします。検証環境ではインストール済みでした。 $ sudo yum install curl.x86_64 curl-devel.x86_64 ... Package curl-7.15.5-9.el5_6.3.x86_64 already installed and latest version Package curl-devel-7.15.5-
検証環境 Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] Rails 3.0.10 Bundler version 1.0.18 Capistrano v2.8.0 準備 準備といってもやるべきことはひとつだけです。BundlerにはあらかじめCapistrano用のcapタスクが用意されているので、$RAILS_ROOT/config/deploy.rbの中からrequireします。 FILE: deploy.rb --- config/deploy.rb 2011-09-05 16:59:22.000000000 +0900 +++ config/deploy.rb 2011-09-01 12:01:46.000000000 +0900 @@ -1,4 +1,5 @@ require 'capistrano/ext/m
概要 2011年5月末以降、github.comにはDigiCertのEV SSL証明書(DigiCert HighAssurance EV CA-1)が使われるようになりました。しかし、CentOS 5の標準パッケージにはDigiCertのEV SSL用ルート証明書(DigiCert High Assurance EV Root CA)が含まれていないため、cloneしようとしたところでSSLの認証エラーが発生します。 対策として、EV SSL用ルート証明書をダウンロードして、SSL証明書に追加しました。 構成 CentOS release 5.7 (Final) 問題 bundle installすると、GitHubからcloneしようとしたところでSSLの認証エラーが発生しました。 $ bundle install ... Fetching https://github.com/ha
概要 Rails 3.1で新しいプロジェクトを作ったところ、本番環境でJavaScript runtimeが見つからないというエラーが発生しました。対策として、3.1から導入されたCoffeeScriptのために、JavaScriptエンジンをインストールしました。 Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.Rails 3.1からは実行環境にJavaScriptエンジンが必須になったようです。 構成 Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] Rails 3.1.0 問題 もともとはブラウザに表示されたInternal Server Err
次のページ
このページを最初にブックマークしてみませんか?
『祈れ、そして働け ~ Ora et labora』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く