tech

PHP5.3.2のpdo_mysqlインストールで少しハマったところメモ

PHP5.3.2::PDOを使ってMySQLを操作するにはpdo_mysql.soというドライバが必要です。PDO自体はPHPに組み込みなのでインストールしなくても良いのですが、pdo_mysql.soは別途インストールが必要です。 必要パッケージのインストール 環境はUbuntu10.04で作成。…

さくらVPSをレンタルしてみた

VPSとは「バーチャル・プライベート・サーバ」の略で、仮想サーバをレンタルできるものです。もちろんroot権限がありますし、サービスによっては好きなOSを入れられたりします。 バーチャル・プライベート・サーバ - Wikipedia さくらもこのVPSを月額980円で…

PHPのクロージャ(無名関数)

PHP5.3.0からクロージャ(無名関数)を使用できるようになっているみたいです。 PHP: 無名関数 - Manual 無名関数はクロージャとも呼ばれ、 関数名を指定せずに関数を作成できるようにするものです。 コールバック パラメータとして使う際に便利ですが、用途…

さくらサーバでRuby::DBIからエラーがでるようになった

9/1に僕がさくらサーバを使って運営しているTooxが動かなくなってました。会社から帰ってきて調査してみたところ、どうやらRuby::DBIが使えなくなってるもよう。 test.rb #!/usr/local/bin/ruby require "dbi" test.rb実行結果 /usr/local/lib/ruby/site_rub…

プロパティおよびメソッドへのアクセス

「6.3プロパティおよびメソッドへのアクセス」からのメモ。 PHPでのオブジェクトの代入は参照渡しになります。参照ではなくコピーしたい場合はclone構文を使います。 age = 10; $foo = clone $hoge; $foo->age = 20; echo "\$hoge->age = {$hoge->age}\n"; e…

インターフェースと抽象メソッド

「6.4.5インターフェース」「6.4.6抽象メソッド」からのメモ。 PHPであるクラスに特定のメソッドを実装されることを強制するにはインターフェースや抽象メソッドを使用します。 インターフェース hoge(); ?> ClassA::hoge() 抽象メソッド 抽象メソッドを一つ…

コンストラクタ

「6.4.7コンストラクタ」からのメモ。 PHPで親クラスのコンストラクタは自動的に呼び出されないので、サブクラスで呼び出す必要があります。 (デストラクタも同じ)

シリアライズ

「6.6シリアライズ」からのメモ。 PHPではオブジェクトをシリアライズするのにはserialize()/unserialize()を使用します。 name = "alice"; $en…

配列の要素のフィルタリング

「5.9.4配列の要素のフィルタリング」からのメモ。 array_filter()を使った配列のフィルタリング Array ( [0] => 9 [1] => 23 [3] => 7 )インデックスが張り直されないので、注意が必要。

配列の使用法

「5.10配列の使用法」からのメモ。 和集合 Array ( [0] => a [1] => b [2] => c [3] => aa [4] => cc ) 積集合

配列の順次処理

「5.7配列の順次処理」からのメモ。 foreachによるイテレータ $v) { $v = "hgoe_$v"; } print_r($hoge); ?> Array ( [0] => a [1] => b [2] => c ) foreachによるイテレータで参照変数を使って配列の値を操作する &$v) { $v = "hgoe_$v"; } prin…

配列のソート

「5.8配列のソート」からのメモ。 値を使ったソート インデックスの張り直しをするので普通の配列に使う Array ( [0] => 8 [1] => 9 [2] => 10 ) 値を使ったソート インデックスの張り直しをしないので連想配列で使う 10 , "carol" => 8 , "alice" => 9); …

多次元配列の展開

「5.5多次元配列の展開」からのメモ。 list()を使って配列を通常の変数に展開 list()は関数じゃなくて、PHPの構文です。 $second = b array_key_exists()とisset()の違い 配列中にあるキーが存在するかどうかはarray_key_exists()で見るべき。isset()だと値…

配列と変数の変換

「5.6配列と変数の変換」からのメモ。 extract()を使って連想配列をキーを変数名として展開する "a" , "second" => "b" , "third" => "c"); extract($hoge , EXTR_PREFIX_ALL , "hoge"); echo "\$hoge_first = $hoge_first\n"; echo "\$hoge_second = $hoge…

PHPの比較演算

「4.6.1完全一致」からのメモ。 PHPには==と===という同一の値かどうかをチェックする比較演算子があります。それぞれの違いは値の型まで含めた比較を行うかどうかです。 ==は型変換を行い比較を行う ===は型変換を行わず比較を行う ==では型変換を行うとき…

配列へのデータ格納

「5.3配列へのデータの格納」からのメモ。 キーを指定しないと、自動で連番がふられる "aaa" , "bbb" , "ccc"); print_r($hoge); ?> Array ( [10] => aaa [11] => bbb [12] => ccc ) 要素の追加は$array[]で可能 aaa [1] => bbb [2] => ccc ) 連想配列に追…

PHPの文字列中の文字へのアクセス

「4.3個別の文字へのアクセス」からのメモ。 文字列中の各文字にアクセスするには[]と{}を使う方法があります。どちらも同じ動作になります。 $hoge[2] = l $hoge{2} = l しかし{}を使う方法はPHP5.3.0から非推奨になったようなので、[]を使う方をお勧めし…

PHPのHTMLエスケープ

「4.5.1HTML」からのメモ。 PHPにはHTML中の文字をエスケープするための関数がいくつかあります。 htmlentities() 空白文字を除くをエンティティに変換します。 ('はENT_QUOTESを指定した場合のみ) & \" ' Ä" , ENT_COMPAT , "UTF-8"); echo "$hoge\n"; #…

PHPのURLエンコード

「4.5.2URL」からのメモ。 URLをエンコードするにはrawurlencodeとurlencodeがあります。それぞれの違いはスペースのエンコードの違いだけです。前者は%20に、後者は+に変換します。 rawurlencode http://www.example.com/%2B%E3%81%BB%20%E3%81%92 urlenco…

PHPの可変引数

「3.4.4可変パラメータ」からのメモ。 PHPで可変引数を使うにはfunc_get_args() , func_num_args() , func_get_arg()を使用します。 Array ( [0] => hello…

PHPで文字列から関数を呼び出す

「3.6可変関数」からのメモ。 「可変関数」という名前からはピンとこないのですが、変数に代入した文字列の関数名で関数を呼び出せるということです。 call myfunc

PHPの無名関数

「3.7無名関数」からのメモ。 PHPで無名関数を作るにはcreate_function()を使用します。 hello

PHPでは関数の中の関数もトップレベル

「3.2関数の定義」からのメモ。 PHPでは関数の中に関数を定義することができます。しかしその関数はトップレベルの関数となるので、特段使い道はなさそうです。 (隠蔽ができない) call outer() call inner() Rubyも同じく関数内の関数はトップレベルにな…

PHPでの関数への参照渡し

「3.4.2参照渡しのパラメータ」からのメモ。 関数へ参照渡しで引数を渡す場合は本には以下の方法が書いてありました。 $hoge = 11関数定義の引数リスト側(&$num)に&をつけ、関数呼び出し側($hoge)には何もつけないというところに少し違和感を覚えました。本…

PHPでの関数のデフォルト値

「3.4.3パラメータのデフォルト値」からのメモ。 リテラルをデフォルト値とすることは可能ですが、仮引数をデフォルト値として指定することはできません。 PHP Parse error: syntax error, unexpected T_VARIABLE in /home/h13i32maru/php/3.4.3_default_va…

PHPのforeachイテレータ

「2.5.5foreach」からのメモ。 配列 PHPでは配列をforeachを使って操作することができます。 a b c インデックスも取得する必要がある場合は以下のように使用します。 $value){ echo "$key => $value\n"; } ?> 0 => a 1 => b …

使いどころがいまいちわからないdeclare ticks

「2.5.6declare」からのメモ。 PHPではdeclareを使ってコードブロックに対してディレクティブを指定できすそうです。 (と言われても、僕にはよくわかりません) 現在指定できるディレクティブはticksだけだそうです。ticksは指定した間隔で特定の関数を実行…

PHPのincludeとrequireの違い

「2.6外部コードの読み込み」からのメモ。 PHPには外部コードを読み込む方法はincludeとrequireの2つの方法があります。それぞれの違いは指定されたファイルが無い場合の挙動の違いです。 includeは警告を発生させ、実行は続けられる requireはエラーを発生…

PHPタグいろいろ

「2.7ウェブページへのPHPの埋め込み」からのメモ。 XML形式 通常この形式を使うことを推奨されています。 SGML形式 SGML形式はショートタグと呼ばれているそうです。 SGML形式では以下のようにechoを使わず、内容を直接書き出すこともできます。 <input type="text" name="num" value="<?= 1 + 1 ?>"/> <input type="text" name="num" value="2"/> ASP形式…

PHPのインクリメント、デクリメント

「2.4.7インクリメント演算子とデクリメント演算子」からのメモ。 PHPでは++や--で演算子で文字列のインクリメント/デクリメントもできるようです。 b aazをインクリメントすると繰り上がり、aaになります。これはあたかもa~zの26進数を使っているような感…

PHPのオブジェクトから配列へのキャスト

「2.4.11キャスト演算子」からのメモ。 他の言語と同じように基本型であれば(int)や(string)を使うことで型を明示的に変換することができます。 一つだけ面白いなと思ったのはObjectをArrayに変換することができる点です。(逆もできます)

オライリー本で=の結合規則を間違えてる

「2.4.12.1代入」からのメモ。 PHPでは他の言語と同じように=を複数使うことで変数に一括して代入を行うことができます。 $a = 10 , $b = 10 , $c = 10結果から=の結合規則は「右から左」ですね。ですが、「2.4式と演算子」の演算子の優先度と結合規則表に…

PHPでは配列は値渡し

あるバージョンのPHPでは配列は参照渡しだったという記事も見かけましたが、現在(v5.3)では値渡しのようです。 $a[0] is 100 $b[0] is 1000 Rubyでは参照渡しになるので、間違わないように注意が必要です。 a = [10,20,30] b = a a[0] = 100 b[0] = 1000 …

PHPの変数操作

「2.3変数」からのメモ 変数展開 文字列中に変数を書くと自動的に展開されます。 $hoge is hello 可変変数 変数名を文字列として指定できる $foo is hello $$hoge is hello 変数への参照 変数のポインタを使用する

PHPの変数スコープ

「2.3.3変数のスコープ」からメモ ブロックスコープ PHPにはブロックスコープは無いようです。 $hoge = 9for文内で生成された$hogeがブロックを抜けても使用可能なので、ブロックスコープが無いということです。 グローバルスコープ トップレベルで宣言した…

PHPでfalseと判定されるもの

「2章PHP言語の基本 2.2データ型」からのメモ。 falseと判定されるもの ==を使ってfalseと判定されるものをまとめてみました。

PHPは大文字と小文字を区別しないこともある

「2章PHP言語の基本 2.1字句構造」で少し気になったところのメモです。 大文字/小文字 PHPでは「ユーザが定義したクラスや関数の名前、echoやwhile、classといった組み込みのキーワードの名前」について大文字/小文字を区別しません。 hello hello hello

MacにVirtualBox3をインストール

ようやくメインマシンをWindowsからMacに移行し始めました。 で、開発環境を作るためにVMWareのMac版であるVMWareFusionを使おうと思ったんですが、有料なんですね。。。Amazon価格で1万円ほど。うーん、どうしようと思っていたら、そういやVirtualBoxにMac…

PHPの勉強はじめました(C++/PHP/Rubyのクイックソートによる速度比較)

今日からPHPの勉強をはじめることにしました。「RoRとiPhoneアプリはどうした!?」という声が聞こえてきそうですが、PHPの優先度があがったのですよ。 というわけで、アマゾンで2冊ほど購入。マンモスのが良いと言う書評も見かけましたが、オライリーを買う…

iPhone持ってなくてもiPhoneSDKインストールしても良いよね?

僕はiPhone持っていません。断じて持っていません。が、iPhoneアプリに興味があるので、SDK入れてHelloWorldしてみました。 Apple Developer iPhoneSDKをダウンロードするために、ここからApple Developerに登録します。 Apple Developer Registration - App…

Mac買ったんだ

7/3に人生初のMacを購入しました。買おうかなと思った12時間後にはAppleストアーで購入ボタンを押してましたよ。 (ちょっと訳があり急いでいたので) MacBookPro 13インチ 2.4GHz Intel Core 2 Duo 4GB 1066MHz DDR3 SDRAM 250GB Serial ATA Drive 5400 rpm …

シェルスクリプトでディレクトリをツリー表示

2010-07-11追記 id:thincaさんからtreeコマンドを教えてもらったので、そちらを使えばOKです。 ここで紹介しているのは車輪の最発明ということで。(Bashの勉強にはなるかも) UNIXの部屋 コマンド検索:tree (*BSD/Linux) 仕事ではよくシェルスクリプト(Bash…

Ruby on Railsの勉強始めました

Rubyもある程度分かるようになったので、すごーく今更ですがRoRの勉強をはじめました。なので自分用のメモとしてまとめておこうかと。 教科書はRails入門に有名な「RailsによるアジャイルWebアプリケーションの開発」 インストール 環境はVMWare + Ubuntu10.…

CustomTwitterまとめ

おかげさまでCustomTwitterのダウンロード数が3000を超えました!ダウンロードしてくれた方々ありがとうございます。 CustomTwitter for Greasemonkey 最近はCustomTwitter(と弁当)のことしか書いてませんが、とりあえず今日のまとめで一区切りつけたいと…

CustomTwitterが産経新聞に掲載されました

僕が開発しているCustomTwitterが(TwitterをGoogle風のレイアウトに変更するGreasemonkeyスクリプト)が2010年6月17日(関西では18日or19日)発行の産経新聞に掲載されました!! ページが見つかりません - MSN産経ニュース (内容はちょっと危ない話ですが(汗…

さらにGoogle風になったCustomTwitterをリリースしました

TwitterをGoogle風のレイアウトに変更するグリモン「CustomTwitter」を更新しました。 CustomTwitter for Greasemonkey さらにGoogle風に ログインページもGoogle風になりました! Google風のTwitterログイン画面 本物のGoogle検索画面 真ん中の検索ボックス…

Google Chromeでも動くユーザスクリプトを書くためのメモ

僕が公開しているTwitterをGoogle風にするCustomTwitter とういうユーザスクリプトをGoogle Chromeに対応させるために行った内容を備忘録としてまとめておこうと思います。 GreasemonkeyとGoogle Chromeは何が違うの? Google Chromeはネイティブでユーザス…

CustomTwitterがスラドに掲載されてガクブル

僕はTwitterをGoogle検索結果風のレイアウトに変更するCustomTwitterというスクリプトを公開しているのですが、それが5/31のスラッシュドットに掲載されていました。職場で Twitter をこっそり見るには? | スラッシュドット・ジャパン IT 内容は「職場でTwi…

CustomTwitterをGoogle Chromeに対応させました

Google Chrome対応 「TwitterをGoogle風にカスタマイズするグリモン「CustomTwitter」を作りました 」で公開したCustomTwitterをGoogle Chromeに対応させました。 (Safariは未確認です。Windows版SafariにSIMBL+GreaseKitを入れる方法が分からなかったので。…

TwitterをGoogle風にカスタマイズするグリモン「CustomTwitter」を作りました

放置していたGreasemonkeyスクリプト「CustomTwitter」を更新しました。 CustomTwitter for Greasemonkey (このスクリプトを使うにはFirefoxにGreasemonkeyアドオンを入れる必要があります) Google風のレイアウト 画面左上に表示される「G」ボタンを押すと、…