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サービス一覧

このID良くね?って思ったときにIDを確認&登録しておくWebサービス一覧.


GMail
http://mail.google.com/mail/signup

Yahoo!
https://account.edit.yahoo.co.jp/registration

はてな
https://www.hatena.ne.jp/register

Twitter
https://twitter.com/signup

livedoor
http://www.livedoor.com/r/user_signup

iddy
https://iddy.jp/newaccount.php


ドメイン
https://muumuu-domain.com/?mode=order_form

ベンチマーク

簡易ベンチマーククラス(マイクロ秒).
時間の取得には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);