PHP5.3だとエラーが色々と…
PHP5.1からPHP5.3へアップデートをすると、CakePHP1.2においてエラーが出てしまったので、その場合の対処法。
Deprecatedエラーが出る
Deprecated: Assigning the return value of new by reference is deprecated in云々なエラー。
- cake/libs/configure.php (295行目付近)
if (isset($config['debug'])) {
if ($_this->debug) {
error_reporting(E_ALL);
//下記追加
if (error_reporting() > 6143) {
error_reporting(E_ALL & ~E_DEPRECATED);
}
//ここまで
strtotime()でタイムゾーンのエラーが出る
Warning: strtotime() [http://php.net/function.strtotime]: It is not safe to rely on the system’s timezone settings.というエラー。
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
date.timezone =Asia/Tokyo
と、タイムゾーンを設定してやれば大丈夫。
10.03.2010
CakePHP, プログラミング_PHP
古いCentOSに新しいPHPをインストールするには…?
CentOS4.5という微妙に古いバージョンを使っているので、yumでアプリケーションを管理していると最新のものからは程遠いバージョンを使うことが多い。けど、PHPは5.3が使いたい!でもソースからインストールすると面倒くさい。というわけで、yumリポジトリを追加してインストールしよう。
EPEL : yumリポジトリ追加
EPELというRHEL, Centos 向けの拡張パッケージリポジトリがあるので、こいつを追加する。
wget http://download.fedora.redhat.com/pub/epel/4/i386/epel-release-4-9.noarch.rpm
wget http://rpms.famillecollet.com/el4.i386/remi-release-4-5.el4.remi.noarch.rpm
rpm -Uvh remi-release-4*.rpm epel-release-4*.rpm
cd /etc/yum.repos.d
wget http://rpms.famillecollet.com/remi-enterprise.repo
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
PHPのバージョンをチェック
先ほど追加したリポジトリを有効にしてリストをチェックする
yum --enablerepo=remi list php
php.i386 5.3.2-1.el4.remi
というわけで、無事に5.3が見つかる。
yum --enablerepo=remi update php
これで無事完了。ただし、PHP5.3にアップデートすることで、既存のアプリケーションがエラーになって動かないことがあるので要注意。
10.03.2010
サーバ_Linux_Windows
WindowsのApache+OpenSSLで、CSRを作成しようの回
ちょっとした案件で、Windows2000Serverで稼働しているApache+OpenSSLなサーバでSSLの更新作業をする必要があり、まずはCSRを作らねば、ということでOpenSSLのある場所までコマンドプロンプトで移動。
C:¥>openssl.exe req -new > server.csr
とかやると、なぜか
Unable to load config info from /usr/local/ssl/openssl.cnf
とエラーで怒られる。Windowsなのに、そのパス指示はなんだよ!と思いつつ、仕方がないのでコマンドのヘルプを見たら、openssl.cnfのファイル場所を指定できるらししい。
C:¥>openssl.exe req -new -config openssl.cnf > server.csr
余談
んじゃ、openssl.cnfはどこにあるんだろう?と思って検索してみたら…あれ?なんか出てこない…。なんでなんで?と思って調べていたら、どうやらWindowsでは拡張子「cnf」は短縮ダイヤルのアイコンで表示されるらしい。な、なんだってー?!知らなかったよ。MySQLの設定ファイル「my.cnf」も同様に表示されるっぽい。
しかし、拡張子をすべて表示するっていう設定に指定たんだけどなぁ。エクスプローラ上では「openssl」ってファイル名になっているんだよね。秀丸で開くと「openssl.cnf」ってファイル名だけど。まぁ、いいや。
08.03.2010
サーバ_Linux_Windows
第3回目のRubyプログラミング練習問題。今回は素数かどうかを調べる。
プログラミング練習問題3「素数判定」
与えられた数が素数かどうか調べる
あるいは与えられた数までの素数を列挙する
処理にかかった時間を計測しておくと、自分の技術向上に伴って処理時間が短くなっていくのがよくわかる
素数とは
素数自体について調べる余地はないと思っていたけど、念のためWikipediaさまを参照してみると1とその数自身以外に正の約数がない(つまり1とその数以外のどんな自然数によっても割り切れない)、1 より大きな自然数のこと。
ということだそうで。
とりあえずの回答
じゃあ、指定した数字が素数かどうかを調べるのを書いてみることにする。ぱっと思いついたのはやはり、2から指定した数まで全て列挙して割り算をしていくという力業。というかこれしか思いつかない。ならば簡単…ということで。
#!/usr/bin/ruby
num = ARGV[0]
flag = 0
2.upto(num.to_i - 1) do |i|
over = num.to_i % i
puts num + ' / ' + i.to_s + 'の余りは' + over.to_s + "\n"
if over == 0
flag = 1
end
end
if flag == 0
puts num + 'は素数です'
else
puts num + 'は素数ではありません'
end
実行結果
$./3_1.rb 5
5 / 2の余りは1
5 / 3の余りは2
5 / 4の余りは1
5は素数です
そもそも素数の判定方法がきちんと考えられていない…気もする。うーん。
まとめサイトに掲載されていた解答例
#!/usr/bin/ruby
require 'mathn.rb'
class PrimePredicater
def initialize
@prime = Prime.new
@cache = []
end
def prime?(x)
extend_cache x if @cache.empty? || x > @cache.last
@cache.include? x
end
private
def extend_cache(lim)
@prime.each do |x|
break if x > lim
@cache.push x
end
end
end
#使用例
ppred = PrimePredicater.new
[1, 10, 2, 5, 7].each do |x|
p ppred.prime?(x)
end
う、うーん?
先生。まったく意味がわかりません。構文自体が謎…。ここら辺はちょっと構文調べてこよう。とりあえずまた次回。
16.02.2010
プログラミング_Ruby
デザインでなにが難しいって、やっぱり配色なわけで。レイアウトやディティールが良くても配色次第でオシャレになったりダサくなったり。しかし、配色と一口に言っても奥が深すぎて、軟弱な僕は配色ツールに頼るしかないわけで。
Color Scheme Designer 3

ちょっと前まで、前バージョンのColor Scheme Designer 2を使っていたけど新しいバージョンが素晴らしい。使用方法に慣れるまで少し時間がかかるかもしれないけど、これを使うと安定した配色に。ただ、カスタマイズがかなりできるので色々といじった結果、めちゃくちゃな配色になりがちなので、ほどほどに。
Adobeの配色サイトkulerとかも利用していたのだけど、あれはパラパラーっと見てインスピレーションを得るだけの方が良いのかもしれない。で、思いついた配色をColorSchemeDesigner3で試してみると。
それと、メインの色ではなくて地味な部分で使いたい大人しい色は和色を使っている。
目に優しくメインを壊さずなテイストなので使いやすい。
12.02.2010
Webサイト紹介
なんかここ最近、すごく目がつかれるなーというか、頭が痛い。原因は体調不良とか仕事したくないーとか色々あるけれど、とりあえずiMacのモニタが眩しくて見ていられないので、暗くしてみたよ。
デザインもやっているくせに、僕はかなり暗いモニタが好きでCRTの時もかなり暗くして使っていた。けど、iMacは最低の明るさに設定しても全然明るい!なんだよ、こんちくちょう。ということで、モニタ明るさ調整ソフトを導入してみた。

ユニバーサルバイナリで、10.5以降対応かな?僕のiMac24インチ 10.6でもきちんと動作した。これでめっちゃ暗くして使ってる。環境光と違いすぎると逆に目に負担をかけると思うので、そこら辺は調整していこう。
09.02.2010
ソフトウェア_Mac
Flashの上に画像やテキストを重ねて表示できないかなーと思って試してみたら普通にできたのでまとめ。とりあえずサンプルを見るのがわかりやすい。
サンプル
重ねて表示する方法:HTML + CSS
大事なのはFlashを描画する<object>タグの部分。
<param name="wmode" value="transparent" />
<embed wmode="transparent" ... />
この2つをしているすればIE6〜/Fx3〜/Safari3〜/Chromeで、無事にDIVによるテキストの重ね合わせ・背景色の重ね合わせ、透過PNGの重ね合わせを表示できた。透過PNGに関してはIE6対策にJavaScriptのライブラリを導入している。
今回初めてこの透過ライブラリ使ってみたけど、結構良いかもしれない。
#test_flash{
position:relative;
}
#test_hoge{
position:absolute;
top:0px;
left:100px;
padding:10px;
width:300px;
color:#00f;
}
#test_hoge span{
background-color:#eeeeee;
}
<script src="/DD_belatedPNG.js"></script>
<script>
DD_belatedPNG.fix('.png_bg');<!-- IE6の透過PNG対策 -->
</script>
<![endif]-->
<div id="flash">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="test" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="wmode" value="transparent" />
<param name="movie" value="http://zaru.tofu-kun.org/wp-content/uploads/2010/02/test.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed wmode="transparent" src="http://zaru.tofu-kun.org/wp-content/uploads/2010/02/test.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_jp" />
</object>
<div id="hoge">
<p>HTMLテキストです。</p>
<img src="http://zaru.tofu-kun.org/wp-content/uploads/2010/02/img.png" />
</div>
</div>
08.02.2010
デザイン_HTML_CSS
第2回目のRubyプログラミング練習問題。今回は有名な「FizzBuzz問題」。
プログラミング練習問題2「FizzBuzz」
ルールは以下の通り
1から順番に数を表示する
その数が3で割り切れるなら”Fizz”、5で割り切れるなら”Buzz”、両方で割り切れるなら”FizzBuzz”と表示する
要するに”1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz ・・・”と出力される
回答
#!/usr/bin/ruby
1.upto(100) do |i|
if i % 3 == 0 && i % 5 == 0
puts 'FizzBuzz '
elsif i % 3 == 0
puts 'Fizz '
elsif i % 5 == 0
puts 'Buzz '
else
puts i.to_s + " "
end
end
実行結果
$./2_1.rb
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
...
Ruby初心者な僕はこんな単純な条件分岐…。うーん。もっとスマートにできるはず。
解答例
#!/usr/bin/ruby
def fizz_buzz(n)
ret = "#{["Fizz"][n % 3]}#{["Buzz"][n % 5]}"
ret.empty? ? n.to_s : ret
end
puts (1..100).collect{|n| fizz_buzz n }
上記ページに載っている解答例はこんな感じ。
ret = "#{["Fizz"][n % 3]}#{["Buzz"][n % 5]}"
これなんだよ!って、調べてみたら配列の省略形?っぽいもの。つまり、これを書きなおすと
a = ["Fizz"]
b = ["Buzz"]
ret = "#{a[n % 3]}#{b[n % 5]}"
ってこと。
Rubyってこういう記述が普通というか一般的なのかな?教えてエロい人!
03.02.2010
プログラミング_Ruby
というわけで、Rubyを使ってプログラミング練習問題をこなしていきたいと思う。練習問題は、検索してたら出てきたこれを使う。不慣れなRubyなので色々と調べて試行錯誤しながらやっていこう。
プログラミング練習問題1「ループ練習」
Hello World![改行]を5回表示させてください。
print(或いはprintf,cout等)を5回コピーすれば当然可能ですが、
ループ構文(for,while等)を利用して、print等は1回の使用にとどめてみてください。
可能ならコマンドラインから入力を受け取って、n回表示するように改造してください。
何回目のHello World!かも表示してみてください。
回答1
#!/usr/bin/ruby
5.times do
puts "Hello World!\n"
end
#!/usr/bin/ruby
for i in 1..5
puts "Hello World!\n"
end
実行結果
$./1.rb
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
for文とかは、あまり使わないだろうけど。一応イテレータで。
回答2
#!/usr/bin/ruby
max = ARGV[0]
1.upto(max.to_i) do |i|
puts "Hello World! " + i.to_s + "\n"
end
#!/usr/bin/ruby
max = ARGV[0]
i=1
while i<=max.to_i
puts "Hello World! " + i.to_s + "\n"
i = i + 1
end
実行結果
$./1.rb 10
Hello World! 1
Hello World! 2
Hello World! 3
Hello World! 4
Hello World! 5
Hello World! 6
Hello World! 7
Hello World! 8
Hello World! 9
Hello World! 10
コマンドラインからの引数は、「ARGV」に格納される。受け取ると、文字列になってしまうので「to_i」を使って数値に。
とりあえず最初はこんなものかな。
27.01.2010
プログラミング_Ruby
WordPressのブログに動画を載せたい!と思って色々と調べてみると、やはりFLV/F4V形式のFlash動画で表示するのがベターと言うことらしい。しかし、デフォルトのWordPressには動画をアップロードする機能はあっても、表示する機能はない。ので、プラグインで対応してみた。
使い方
使い方は、普通にプラグインフォルダに放り込んで、有効化するだけ。
動画の表示方法は、WordPressの動画アップロード機能を使って、FLVファイルをアップ。下記フォーマットでURLをコピペすればOK。
[flashvideo file=http://example.com/xxx.flv /]
サンプル
Get the Flash Player to see this player.
問題は、動画ファイルをFLV形式に変換しなきゃいけないっていう点かなー。YouTubeとかにアップロードして、それをブログに表示するのがやっぱり一番簡単なのかも。
14.01.2010
WordPress