EBNF
よく使うものは以下の通り。
| ::= | 定義 |
| , | 連結 |
| . | 終端 |
| | | 区切り(or) |
| [...] | オプション |
| {...} | 繰り返し |
| (...) | グループ化 |
| "..." | 終端記号 |
サンプル。こんな感じ?
expression ::= [ sign ] term { ("*" | "/") term }.
term ::= factor { ("+" | "-") factor }.
factor ::= id | number | "(" expression ")".
ruby のブロック構文が全然わからない
yield とか何よって感じ。
いろいろと調べたけどよくわからない。
まぁ雰囲気だけは掴めたかな。
なんとなくわかりそうな例を載せとく。
(for とか使ってるけど気にしない)
class Group def initialize @members = [] end def add(name) @members.push(name) end def each_member puts "start" for member in @members yield member # ここに # do |str| (str = member) # puts str # end # が入る感じ。 end puts "end" end end g = Group.new g.add("user1") g.add("user2") g.add("user3") g.each_member do |str| puts str end
良いIDが思いついたときに登録しておくWebサービス一覧
PHPのフレームワークを作る(長いスパンで)
簡単なスクリプト向けに.
名前も考えなきゃ.
ベンチマーク
簡易ベンチマーククラス(マイクロ秒).
時間の取得にはmicrotime()を使っている.
<?php class Benchmark { private $StartTime; protected function Now() { # PHP4 list ($usec, $unixtime) = explode(" ", microtime()); $sec = date('s', $unixtime); return ((float)$usec + (float)$sec); } public function Start() { $this->StartTime - $this->Now(); } public function Stop() { return ($this->Now() - $this->StartTime); } } $benchmark = new Benchmark(); $benchmark->Start(); # 処理 echo $benchmark->Stop();
TwitterにPHPで投稿
投稿のみ。メモ。
<?php class Twitter_Post_Only_API { private $url = 'http://twitter.com/statuses/update.xml'; private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = $password; } public function Post($message) { $params = '?status='. rawurlencode($message); $header = 'Authorization: Basic ' . base64_encode('{'. $this->username .'}:{'. $this->password .'}'); $context = stream_context_create(array('http' => array('method' => 'POST', 'header' => $header))); if (($result = @file_get_contents($url . $params, false, $context)) == false) { return null; } return simplexml_load_string($result); } } // 投稿 $username = 'username'; $password = 'password'; $message = 'つぶやき。'; $tw = new Twitter_Post_Only_API($username, $password); $xml = $tw->Post($message); if ($xml == null) { die('Error!'); } var_dump($xml);