Hatena::Groupstudyroom

phaのPHPとか自習室 このページをアンテナに追加 RSSフィード

PHP(CakePHPとか)、JavaScript(AJAXとか)、MySQL、UNIX、Fireworksなんかを身につけたい><
2007 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2009 | 01 | 02 | 03 | 04 |
2010 | 01 | 06 |
2011 | 01 |

2007-11-30

RSSを扱いたい

RSSを扱いたい - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - RSSを扱いたい - phaのPHPとか自習室 RSSを扱いたい - phaのPHPとか自習室 のブックマークコメント

*PHP5でRSSのバージョンを判定するスクリプト* ブログが吐き出すFEEDを取得してDBに格納するスクリプトを書いてます。 $xmlstr = file_get_contents($feed); $xml = simp.. - 人力検索はてな

$ns = $xml->getDocNamespaces();

if (in_array('http://www.w3.org/2005/Atom', $ns)) {
  // Atom 1.0
} else if (in_array('http://purl.org/rss/1.0/', $ns)) {
  // RSS 1.0
} else {
  // RSS 2.0(?)
}

getDocNamespacesメソッドを使うと、$nsにドキュメントの名前空間(ルート要素のxmlns属性の値)が代入されるので、それをチェックしてみてはいかがでしょう?


2007-11-25

MVCって何

| MVCって何 - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - MVCって何 - phaのPHPとか自習室 MVCって何 - phaのPHPとか自習室 のブックマークコメント

モデルの話

Post Model作成
<?php

class Post extends AppModel
{
    var $name = 'Post'; //クラス名と同じ
}

?>

>クラスとファイルの命名方法のおかげで、これで、Post モデルが PostsController の中で利用できるようになります。それはデフォルトデータベースの、'posts' テーブルに結びつきます。

Postクラス -> postsテーブル


コントローラの話

こんとろーらって何だろ

A.7. Posts Controller の作成

>次に、posts 用のコントローラを作成しましょう。コントローラは、post に関するやり取りに関するすべてのロジックを扱うところです。また、このモデルに対するすべてのアクションが含まれています。この新しいコントローラは、 posts_controller.php というファイルになり、 /app/controllers ディレクトリに入れます。

<?php

class PostsController extends AppController
{
    var $name = 'Posts'; //テーブル名と同じ

    function index()
    {
        $this->set('posts', $this->Post->findAll());
    }
}

?>

>少し解説してみましょう。PostsController に index() 関数を定義すると、ユーザが http://localhost/posts/index をリクエストした時にこのロジックにアクセスできるようになります。同様に、 foobar() という関数を定義したとすると、そこには、 http://localhost/posts/foobar でアクセスできるようになります。

>ユーザが http://localhost/posts をリクエストすると、これは、 http://localhost/posts/index をリクエストしたのと同じになります。


>このアクションの中では、 set() という命令を使って、データをビュー(次に作成します。)に渡しています。この行によって、ビューの中には、'posts' という変数がセットされ、中身は、Post モデルの findAll() メソッドが返した値と同じです。Cake の命名規約に従っているため、 Post モデルは自動的に、$this->Post で利用できるようになっています。

ビューの話

A.8. Post Views の作成

>モデルを使用してデータベースに接続できるようになりました。そして、コントローラによって、アプリケーションロジックと流れが定義されました。今度は上で定義した、index アクションに対するビューを作成してみます。

2007-11-21

splitとか

splitとか - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - splitとか - phaのPHPとか自習室 splitとか - phaのPHPとか自習室 のブックマークコメント

split

array split ( string $pattern, string $string [, int $limit] )

string を、正規表現によって配列に分割します。

返り値にバラバラになって配列で返ってくる。

explode

array explode ( string $delimiter, string $string [, int $limit] )

文字列の配列を返します。この配列の各要素は、 string を文字列 delimiter で区切った部分文字列となります。

splitとexplodeの違いがわからん。正規表現かどうか、か。

implode

string implode ( string $glue, array $pieces )

配列の要素を glue 文字列で連結します。

2007-11-20

ファイル操作

ファイル操作 - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - ファイル操作 - phaのPHPとか自習室 ファイル操作 - phaのPHPとか自習室 のブックマークコメント

PHP第2回:PHP中級(ファイル/パイプの取り扱い)

ファイルを読み込むには代表的な二つの方法があります。file 関数を使う方法と、fopen, fget系関数, fclose を使う方法です。

1: $data = file("/tmp/hoge.txt");

2: for($i=0; $i<count($data); $i++) {</ppp>

3: echo $data[$i] . "
";

4: }

と、  

1: $fp = fopen("/tmp/hoge.txt", 'r');

2: while ( !feof($fp) ) {

3: echo fgets($fp, 9182) . "
";

4: }

5: fclose($fp);

は、同じ出力が得られます。

関数の説明

file()は一行ごとに配列に格納

fopen( )は第二引数であれで、fpを返り値で返す

a 開いたファイルの末尾行から追記する

a+ 追記及び読み込みができる (ファイルが存在しない場合は、新規作成)

r 読み込み専用で開く

r+ 読み込みと書き込みができる

W 書き込み専用で開く (ファイルが存在しない場合は、新規作成)

W+ ファイル内容を削除して読み込み及び書き込みができる

fgets()は、fpを指定すると一行ずつ取得。第二引数で最大バイト数を指定。指定しないと1024(日本語で512バイト分)。

2007-11-16

人工無脳を作りたい

人工無脳を作りたい - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - 人工無脳を作りたい - phaのPHPとか自習室 人工無脳を作りたい - phaのPHPとか自習室 のブックマークコメント

学習する

・ファイルの保管方法

(データベース使うかどうか)

・文章の分割

Yahooの形態素解析APIとか?)

・分割した要素をどう保管するか

・保管した分割した要素をどう結びつけるか

(マルコフ連鎖か)

PHPのサンプル

PHPのサンプル - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - PHPのサンプル - phaのPHPとか自習室 PHPのサンプル - phaのPHPとか自習室 のブックマークコメント

人工無能を作ろう〜形態素解析(php)

phpで書いたサンプル。Chasenを使ってる。

人工無能を作ろう〜RSSからマルコフ連鎖(php)

phpで書いたサンプル。「2語の接頭語と1語の接尾語」のマルコフ連鎖方式

2007-11-16 - phaのPHPとか自習室 を含むブックマーク 2007-11-16 - phaのPHPとか自習室 のブックマークコメント

<html>
	<head><meta http-equiv="content-type" content="text/html; charset=EUC-JP" /></head>
	<body>
<?php
	require_once("XML/RSS.php");

	// ChaSenのパス
	$chasen = '/usr/local/bin/chasen';

	# RSSのパス
	$url = "http://www.i-on.gr.jp/~lan/blog/index.rdf";

	$RSS = & new XML_RSS($url);
	$RSS->parse();

	# 形態素解析を行う文章
	$rand = array_rand( $RSS->items );
	$str = $RSS->items[$rand]["description"];

	// 形態素解析をしたい文章を渡しつつ、ChaSenへのハンドルオープン
	$handle = popen ("echo '$str' | $chasen ", 'r');

	// 結果を1行ずつ取得
	while ($get_chasen = fgets ($handle)) {
		// ChaSenの結果がTAB区切りで帰ってくるので¥tで分解
		$kaiseki = split ("¥t", $get_chasen);

		// $wakatigaki 配列へ わかち書きしたデータを格納しておく
		$wakatigaki[] = $kaiseki[0];
	}

	//ハンドルを閉じる
	pclose ($handle);

	if (count($wakatigaki) > 2) {
		// 「2語の接頭語と1語の接尾語」のマルコフ連鎖テーブルを作成
		// $markov{接頭語前}{接頭語後ろ}[no]=接尾語 の形式
		//$markov{$wakatigaki[0]}{$wakatigaki[1]}[]=$wakatigaki[2];

		for ($i = 2 ; $i < count($wakatigaki) ; $i++) {
			if ($i < count($wakatigaki)) {
				$markov{$wakatigaki[$i-2]}{$wakatigaki[$i-1]}[] = $wakatigaki[$i];
			}
		}

	} else {
		print "文章が短すぎてマルコフ連鎖が行えません。<br />";
		exit();
	}

	// マルコフ連鎖テーブルを表示(DEBUG)----------------------------
	print "<pre>";
	print_r ($markov);
	print "</pre>";
	// マルコフ連鎖テーブルを表示(DEBUG)----------------------------

	// マルコフ連鎖で文章生成----------------------------
	// 文章出だしを接頭語前に
	$pre1 = $wakatigaki[0];

	// 接頭語後ろは、接頭語前に続く文字からランダム選択
	$pre2 = array_rand ($markov{$pre1});

	// 接尾語は選択できる中からランダムに選択
	$rand = rand (0, (count ($markov{$pre1}{$pre2}) - 1));
	$suf1 = $markov{$pre1}{$pre2}[$rand];

	$string = $pre1.$pre2.$suf1;

	for ($i=0 ; $i<1000 ; $i++) {
		$pre1 = $pre2;
		$pre2 = $suf1;
		// 接尾語は選択できる中からランダムに選択
		$rand = rand (0, (count ($markov{$pre1}{$pre2}) - 1));
		$suf1 = $markov{$pre1}{$pre2}[$rand];

		if ($suf1 == "EOS¥n") {
			break;
		}

		$string .= $suf1;
	}
	// マルコフ連鎖で文章生成----------------------------

	print $string;
?>
	</body>
</html>

2007-11-14

MeCabインストールできた

MeCabインストールできた - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - MeCabインストールできた - phaのPHPとか自習室 MeCabインストールできた - phaのPHPとか自習室 のブックマークコメント

できた!

ファイルを

/usr/local/bin/

に置いたらちゃんと動いたよ!

あと、ひょっとしてMacPortとか使ったらなんか簡単にできるのかなあ。

MeCabインストール

MeCabインストール - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - MeCabインストール - phaのPHPとか自習室 MeCabインストール - phaのPHPとか自習室 のブックマークコメント

ついにターミナルから何かインストールするとかいうことをやった

続きを読む

2007-11-13

自然言語処理の何かを作りたい

自然言語処理の何かを作りたい - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - 自然言語処理の何かを作りたい - phaのPHPとか自習室 自然言語処理の何かを作りたい - phaのPHPとか自習室 のブックマークコメント

何を勉強すればいいんだろう

  • 文章をばらばらにするのは形態素解析 MeCabとか(多分
  • 文章を繋げていくのはマルコフ連鎖とか(多分

それをPHPで使うにはどうしたらいいか

ばらす

形態素解析とか

MeCab

ヤフー、文章を解析できるAPI「日本語形態素解析Webサービス」を公開:マーケティング - CNET Japan そんなんあるらしい

Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っているキーワードをクラウド化 - Do You PHP はてな 上の使用例

つなげる

マルコフ連鎖による文章生成 : blog.nomadscafe.jp ちょっとした例がある


人工無脳「みみず」始動 - antipop けんたろさんの記事

2007-11-05

Photoshop勉強中

Photoshop勉強中 - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - Photoshop勉強中 - phaのPHPとか自習室 Photoshop勉強中 - phaのPHPとか自習室 のブックマークコメント

今日覚えたこと

  • グラデーションのやりかた 
    1. したい部分を選択する
    2. ドラッグ&ドロップ
    3. そのとき描画色と背景色、そしてスタイルをセットする
  • 描画色と背景色というやつがあるんだ
  • そしてレイヤースタイルがいろいろあるということ
  • 境界線を書くというやつ(ラスタライズが必要)
  • テキストとラスタライズについて

2007-11-02

PHPでランダムな文字列、数字の列を生成する

PHPでランダムな文字列、数字の列を生成する - phaのPHPとか自習室 を含むブックマーク はてなブックマーク - PHPでランダムな文字列、数字の列を生成する - phaのPHPとか自習室 PHPでランダムな文字列、数字の列を生成する - phaのPHPとか自習室 のブックマークコメント

PHP でランダムな文字列を生成

function getRandomString($nLengthRequired = 8){
    $sCharList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
    mt_srand();
    $sRes = "";
    for($i = 0; $i < $nLengthRequired; $i++)
        $sRes .= $sCharList{mt_rand(0, strlen($sCharList) - 1)};
    return $sRes;
}

$a[1}とかいう書きかたで文字列$aの1番目の文字を取り出せるのか。知らなかった。

phpで ・重複しない ・ランダムな16桁の数字 を作りたいです。 5万個ぐらい作りたいです。 md5だと英字も入ってしまうし・・・ 良い方法を教えてください。 .. - 人力検索はてな