4月 22 2012

[PHP] タイムゾーンのエラーを抑止したい

Posted by (っ´∀`)っ ゃー in php, VPS, さくら, メモ
このエントリーをはてなブックマークに追加
はてなブックマーク - [PHP] タイムゾーンのエラーを抑止したい
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[PHP] タイムゾーンのエラーを抑止したい(っ´∀`)っ ゃー

さくらのvpsを借りてあれこれ遊ぼうとhshsしている (っ´∀`)っ ゃーたんです、こんにちは!
メモリ2GB(仮想3コア)を借りてみたのですが、思ったよりサクサク動いてくれています。お申し込みはこちらから。

まだお試し期間なのをいいことに、ab砲ぶっ放したりして遊んでるのですが、テスト用のphpファイル(単なるphpinfo)にアクセスすると、apacheのエラーログに何やら変なのが・・・。環境は CentOS release 6.2 (Final) httpd-2.2.15 PHP 5.3.3 です。

[Sun Apr 22 15:47:03 2012] [error] [client xxx.xxx.xxx.xxx] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /home/vhosts/path/to/hoge/public_html/index.php on line 2

見てみたらタイムゾーンのエラー(warning)と言っています。このままにしておくと、date系の関数を実行するたびにエラーが記録されてしまいます。

We selected 'Asia/Tokyo' for 'JST/9.0/no DST'

って言ってるので、きっとタイムゾーンの設定してないんだろうなーと思って /etc/php.ini を見てみたら案の定でした。どうやらこういう理由のようです。

※ PHPのドキュメントより引用

全ての日付/時刻関数で使用されるデフォルトのタイムゾーン。 PHP 5.4.0 より前のバージョンでは、これは環境変数 TZ の値が設定されていない場合にのみ機能していました。 明示的に指定しなかったときにどのタイムゾーンを利用するのかについての優先順位は date_default_timezone_get() のページで解説されています。サポートしているタイムゾーンについては サポートされるタイムゾーンのリスト を参照ください。

 

※ エラー発生時の設定

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =

※ 変更後の設定

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =
date.timezone = 'Asia/Tokyo'

たった1行 「date.timezone = ‘Asia/Tokyo’」 を追加してあげて、Apacheを再起動すればOKです。エラーログは余計なもの出力しちゃうと、実運用でクリティカルなエラーを見逃してしまう原因になるので、極力余計なログを出さない設定にしたいものです。

でわ~♪

4月 08 2012

トラブル☆しゅーたーず – ドMな演技派インフラエンジニアたちによる障害対応ごっこ -

このエントリーをはてなブックマークに追加
はてなブックマーク - トラブル☆しゅーたーず – ドMな演技派インフラエンジニアたちによる障害対応ごっこ -
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
トラブル☆しゅーたーず – ドMな演技派インフラエンジニアたちによる障害対応ごっこ -(っ´∀`)っ ゃー

こんばんは。2012/04/07に、普段怒られながら障害対応してるであろう僕らが休みの日にわざわざ障害対応しに集まるイベント「トラブル☆しゅーたーずに参加してきた (っ´∀`)っ ゃーです。

■ トラブル☆しゅーたーず とは

シナリオ
あなたはとあるwebインテグレーターにつとめる社員です。
立ち居値としては、リーダークラス?
ちょっといい気分になってきていました。

ある日、待望の新入社員の山〇君がやってきました。
しかも、あなたの部署です。
OJTが一通り行われたあと、幸運にもあなたの配下に配属されたではありませんか。

さっそく、いろいろ教えつつ「これで少しでも負荷がさがれば。。。」とほくそ笑むのでした。
さてある日、山〇君にお客様のクラウド上のシステムメンテナンスを指示します。
さほど難しい作業ではなかったので、彼にまかせて別の作業を実施します。
しばらくすると、お客様から入電が・・・・

どうもお客様のシステムが調子がおかしいとのこと
山〇君にどのような作業を実施したのか確認しても
「何もやっていない」
「ログはとっていない」
と繰り返すばかりです。

一抹の不安を覚えつつ、あなたはチームを従えてコンソールに向かうのでした

という前提で障害対応のロールプレイをしよう!というhbstudy、ncstudy、odstudy合同開催の勉強会でした。

Read entire article.

4月 06 2012

はじめてのGithub – Githubアカウント作成から初期設定 CentOS6から繋いでみよう -

Posted by (っ´∀`)っ ゃー in CentOS, git, github, やってみた, プログラミング
このエントリーをはてなブックマークに追加
はてなブックマーク - はじめてのGithub – Githubアカウント作成から初期設定 CentOS6から繋いでみよう -
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
はじめてのGithub – Githubアカウント作成から初期設定 CentOS6から繋いでみよう -(っ´∀`)っ ゃー

みなさんこんにちわ。githubのアカウント作成から自作のプログラムをアップロードするまでの手順をまとめてみました。

用意するもの

• プログラム開発環境 (ここではCentOS6を前提としています)
• メールアドレス

これだけです。開発環境はroot権限のコマンドを実行できるようにしておいてください。(suコマンドでrootに昇格できるか、sudoコマンドが使える)

githubって何?

• gitのプロジェクトホスティングサービス
• 100MBまで無料で使える
• gitリポジトリを自分で作って公開できる
• WEB上から変更履歴などが参照可能
• githubで公開されている他のOSSのコードをforkして開発することが可能
• ただしバグトラッキングシステムがない
※ 出展: はてなキーワード

すべての手順を書くと長くなってしまうので、1枚のスライドにまとめてみました。それでも、1時間もあればgithubアカウント作成、リポジトリ作成、自分で作ったプログラムのアップロードまでできてしまいます。

アカウント作成方法はスライドを見てください。ここでは開発環境のサーバ側でどんな作業をするのかをまとめておきます(スライドにも書いてありますが)。

■  rpmforge リポジトリをダウンロードする

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

■  git パッケージをインストールする

sudo yum --enablerepo=rpmforge install git

■ SSH鍵ペアを作成する
1) すでに鍵ペアがあった場合、上書きしないように .ssh ディレクトリをバックアップする

$ [ -d ${HOME}/.ssh ] && cp -pr ${HOME}/.ssh ${HOME}/DOT.ssh.$(date +%Y%m%d)

2) ssh-keygenコマンドで鍵ペアを作成する

$ ssh-keygen

鍵ペアは、ホームディレクトリ/.ssh の下に生成されます。ホームディレクトリでlsコマンドを叩いて「そんなのねーよ」と思っても焦らないでください。「ls -la」のように、aオプションをつけると .ssh ディレクトリの存在が確認できます。sshの鍵ペアを作成したら、「id_rsa.pub」のほうをcatコマンドで開いて、マウスでクリップボードにコピーし、githubの公開鍵登録画面に貼り付けます。

成果物をアップロードしよう!

githubでアカウントを作成し、sshの公開鍵登録を行い、リポジトリを作成したあとは、開発サーバでプログラム開発してgitコマンドでアップロードしましょう。

■ 初期設定

git config --global user.name "githubのユーザ名"
git config --global user.email "githubに登録したメールアドレス"

これらは最初に1回やっておけばOKです。ただし、同じサーバで複数のgithubアカウントを切り替えて使う場合は、都度実行する必要があります。

開発サーバでリポジトリを新規作成する

例) NABEATSU というリポジトリを作成してみる

mkdir NABEATSU
cd NABEATSU
git init

リポジトリ名と開発サーバに作るディレクトリ名は必ずしも同じでなくてもよいらしいですが、後でわかりにくくなるので同じ名前にしておいたほうが無難でしょう。

READMEファイルを新規作成する

touch README

READMEファイルは、ファイル名を大文字にして作成します。この中に書き込んだテキストをローカルリポジトリにコミットし、リモートリポジトリにpushする(反映させる)までは、githubからは存在しないものとして扱われます。

READMEファイルをローカルリポジトリにコミットする

git add README
git commit -m 'first commit'

コミット後、次のページに表示するようにコミット後のメッセージをchangelogに書くよう、編集画面が出てきます。デフォルトのエディタが立ち上がるので、コミットメッセージを残しましょう。

ローカルリポジトリにgithubのリポジトリをリモートとして登録する

例) oresama アカウントで NABEATSU というリポジトリに登録する場合

git remote add origin git@github.com:oresama/NABEATSU.git

このコマンドは、リポジトリを作成して最初に実行するだけでOKです。ローカルリポジトリで何かしら編集するたびに実行する必要はありません。

ローカルリポジトリからリモートリポジトリへ修正内容を反映させる

git push origin master

ローカルリポジトリで何かしら編集し、リモートリポジトリへ反映させる都度に実行します。

自作のプログラムをアップロードしてみよう!

ここでは例として、binディレクトリの下に自作のシェルスクリプト「3.sh」を作ります。

mkdir bin
cd bin
vi 3.sh

# 成果物 3.sh を編集します

cd ../

ここまでできたら、ディレクトリの中身全部pushしてみましょう。

git add *
git commit
git push -u origin master

※ 個別のファイルをアップロードしたい場合は以下で。

git add bin/3.sh
git commit
git push -u origin master

ここまでできたら、githubの画面で確認してみてください。スライドの通りに設定したら、リポジトリ内にご自慢のプログラムがアップロードされているはずです。ね、簡単でしょう?

4月 04 2012

Rubyで簡易ダウンローダを作ってみた

Posted by (っ´∀`)っ ゃー in ruby, やってみた, プログラミング
このエントリーをはてなブックマークに追加
はてなブックマーク - Rubyで簡易ダウンローダを作ってみた
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
Rubyで簡易ダウンローダを作ってみた(っ´∀`)っ ゃー

rubyでコマンドラインの引数に与えたサイトをダウンロードするスクリプトを作ってみた。お手本サイトのこことかここの合わせ技で、ハードコーディングされたURLではなく、引数の1番目に与えたURLを引っ張ってくる。あと、引数が空っぽだと”nil”って表示されちゃうので、エラー抑止するようにした。rubyのお手本サイトを見て自分でちょっと考えて手を加えた第一号かも。楽しい!ソース (URL01.rb) は以下。

# coding: utf-8

unless ARGV[0].nil? then
end
if ARGV.size > 0 then
require 'open-uri'
open(ARGV[0]) do |f|
  f.each do |line|
    puts line
  end
  end
end

実行結果はこんな感じ。

ruby URL01.rb http://nullpopopo.blogcube.info/ > index.html
4月 04 2012

Ruby on Rails開発環境をCentOS6にインストールする

Posted by (っ´∀`)っ ゃー in CentOS, ruby, やってみた
このエントリーをはてなブックマークに追加
はてなブックマーク - Ruby on Rails開発環境をCentOS6にインストールする
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
Ruby on Rails開発環境をCentOS6にインストールする(っ´∀`)っ ゃー

こんにちは。次回のTechLION vol.6に、まつもとゆきひろさんが登壇される記念に、と言いながら忘れっぽい自分用のメモにruby開発環境インストール手順をまとめておきます。とか言いながら、さらに言うと「XXでエラーおきた」→「ググろう」で一部の手順しか載っていないサイトより、最初から最後までの手順があったほうがみんな幸せでしょ?ということでまとめておきました。前提は以下の通りです。

・ 作業日 2012/04/04
・ OS Centos6.2 (インストール時に使用したISOイメージは CentOS-6.2-x86_64-bin-DVD1.iso )
・ OSインストール時のパッケージ すべて「チェックを外す
・ OSインストール後は$ sudo yum updateですべてのパッケージをアップデート済
・ 作業用ユーザにはsudoでroot権限のコマンドを叩けるように設定済

■ sshで作業できるようにopenssh関連のパッケージをインストールする

sudo yum install openssh-server openssh-clients libedit openssh

■ 時刻あわせのためntpdateコマンドをインストールする (任意)

sudo yum install ntpdate

■ rubyのpathが通っているかを調べるためwhichコマンドをインストールする (なくてもよいがあったほうが便利)

sudo yum install which

■ libyamlやrubyのパッケージをwebからダウンロードするため、wgetコマンドをインストールする

sudo yum install wget

■ 日本語文字コード変換のためnkfコマンドをインストールする (iconvがインストールされているので、それで充分って方はお好みで)

sudo yum install nkf

■ libyamlインストール時にfileコマンドがあるかどうかチェックしているので、fileコマンドをインストールする(なくてもコンパイル通ったけどあると便利なので)

sudo yum install file

■ その他ネットワーク系などのトラブルシュートに便利なコマンドをインストール(任意)

sudo yum install bind-libs bind-utils tcpdump libpcap lsof

■ メール飛ばしたいときはpostfixとmailコマンドがあると便利(任意)

sudo yum install postfix mailx

■ コンパイラなどをインストールする。zlib-develとopenssl-devel、sqlite-develはrubyインストール時にあったほうがいい

sudo yum install gcc openssl-devel zlib-devel make patch sqlite-devel

■ DBにMySQLを使う場合は先にインストールしておく

sudo yum install mysql mysql-libs mysql-devel mysql-server

■ libyamlとrubyをダウンロードする

mkdir src
cd src
wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz

# 最新版のパッケージがあるかどうかは以下のサイトで確認のこと
# http://pyyaml.org/download/libyaml/
# ftp://ftp.ruby-lang.org/pub/ruby/1.9/

■ libyamlをインストールする

tar xvzf yaml-0.1.4.tar.gz
cd yaml-0.1.4
./configure
make
sudo make install
cd ../

■ rubyをインストールする

tar xvzf ruby-1.9.3-p125.tar.gz
cd ruby-1.9.3-p125
./configure
make
sudo make install

※ 確認

which ruby
/usr/local/bin/ruby
ruby -v
ruby 1.9.3p125 (2012-02-16) [x86_64-linux]
which gem
/usr/local/bin/gem

■ railsをインストールする

sudo /usr/local/bin/gem install rails --version "~> 3.2.1" --no-rdoc --no-ri

※ 必ずバージョン3.2.1以上を指定すること

※ 確認

rails -v
Rails 3.2.3

以上がRailsの最低限の開発環境構築手順でした。ね、簡単でしょ?

4月 04 2012

2012/03/31 Apacheスタートスクリプト読書会だん

Posted by (っ´∀`)っ ゃー in apache, awk, bash, CentOS, linux, USP友の会, ペアプログラミング, 勉強会
このエントリーをはてなブックマークに追加
はてなブックマーク - 2012/03/31 Apacheスタートスクリプト読書会だん
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
2012/03/31 Apacheスタートスクリプト読書会だん(っ´∀`)っ ゃー

みなさんこんにちわ。少しだけ遅くなってしまいましたが、Apacheスタートスクリプト読書会をやってきましたのでレポートします。さっそく上田会長がこんな記事こんな記事でレポートを書かれているので、全体の流れはおわかりいただけたかと思いますので、私は違う視点から書いてみたいと思います。当日の発表資料はこちらになります。

また、冒頭に @hi_saito さんによるawkでアクセスログ解析のライトニングトークもありました。

Read entire article.

3月 25 2012

ペアプログラミング合コン 第1回目無事終了! #02

このエントリーをはてなブックマークに追加
はてなブックマーク - ペアプログラミング合コン 第1回目無事終了! #02
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
ペアプログラミング合コン 第1回目無事終了! #02(っ´∀`)っ ゃー

みなさんこんにちわ。何のプレッシャーもなく飲める酒がこれほどまでに美味いと思わなかった (っ´∀`)っ ゃー です。ペアプログラミング合コン 第1回目の続きです。当日の様子はTogetterにまとめられていますが、スタッフ目線でいろいろ書いてみたいと思います。

Read entire article.

3月 25 2012

ペアプログラミング合コン 第1回目無事終了! #01

Posted by (っ´∀`)っ ゃー in 日記
このエントリーをはてなブックマークに追加
はてなブックマーク - ペアプログラミング合コン 第1回目無事終了! #01
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
ペアプログラミング合コン 第1回目無事終了! #01(っ´∀`)っ ゃー

みなさんこんにちわ。何のプレッシャーもなく飲める酒がこれほどまでに美味いと思わなかった (っ´∀`)っ ゃー です。ペアプログラミング合コンの企画段階からスタッフとして参加させていただき、おかげ様で無事第1回目を終えることができましたのでレポートしたいと思います。

Read entire article.