Scuttle ソーシャルブックマーク の設置

自作サーバに、php + MySQLを使用してソーシャルブックマーク(Social Bookmark)を実現する、オープンソース「Scuttle」の設置方法。

まずは、SorceForge から ダウンロード (現在 version 0.7.2)をしておいてください。

設置方法

  1. 「scuttle.0.7.2.zip」ファイルをダウンロードし解凍。
  2. phpMyAdmin等を使って、MySQLに新規データーベースを作る。DB名はscuttle等、好みのDB名でOK。
  3. 「config.inc.php.example」を「config.inc.php」にリネームし、各設定値を入力(下の変数はセキュリティ上変えてあります)
    ・MySQLのタイプ = ‘mysql4′; // ←ウチのMySQL5ではコレでもOKだった。PHP5上でext設定しているが、’mysqli’;では通らなかった。
    ・MySQLのホスト = ‘localhost’; // ←ホスト名 or IPに変更
    ・MySQLのポート = ’3306′;
    ・MySQLのユーザ名 = ‘username’; // ←DBのユーザ名に変更
    ・MySQLのパスワード = ‘psword’; // ←DBのパスワードに変更
    ・MySQLのDB名 = ‘scuttle’; // ←上で設定済のDB名に変更
    ・$sitename = ‘Scuttle’; // ←任意のサイトタイトルに変更
    ・$locale = ‘ja_JP’; // ←日本語設定
    ・$adminemail = ‘admin@hoge.jp’; // ←adminのメールアドレスを設定
  4. 解凍後のscuttleフォルダーごとftp。
  5. つぎに解凍されたファイル群の中からtables.sqlを探し出し、同ファイル内のSQL文を実行。テーブルを作成。
  6. 設置したURLを叩く。

使い方
・「Register」でユーザ登録を行い、ログイン。

注意点 php5でscuttleを動かす場合の変更点

setlocale()のエラーが出るときは、
scuttle\includes\php-gettext\gettext.inc の131行目、
$ret = setlocale($category, $locale);

コメントアウト
//$ret = setlocale($category, $locale);
次の行に、
$ret = setlocale(LC_ALL, $locale);
とする。

注意点 自作サーバでscuttleを動かす場合の変更点

version 0.7.2 (以前のバージョンは知らん)のsourceの中には、一部「<?php」で始まらなず、「<?」で始まるsourceが含まれているため、自作サーバでscuttleを運用したい方は、「php.ini」の修正が必要です。(大抵のレンタルサーバは問題無いと思います)

php.iniに、
short_open_tag = On
の一行を追加してください。

(「<?xml」関係で問題が起こる可能性がある方は、地道にsourceの修正をお勧めします )

タグ: , , ,
Posted 2007年6月10日 1時41分04秒 in MySQL, php, Server, Windows&Customize by junichi_y Comments (1)

Windows を自作(自宅)サーバに。

各種必須サーバ(ソフトウェア)のダウンロード先

いわゆる WAMP (Windows + Apache + MySQL + PHP) でサーバを構築・設定するにあたって詳しく説明のある参照先

タグ: , , , , , ,
Posted 2007年6月9日 21時22分11秒 in Apache, Linux, MySQL, php, Server, Windows&Customize by junichi_y Comments (0)

人気記事Top10をPHPとMySQLで

各エントリーの閲覧数をランキングしてくれる、便利な”http://sidebar.jp/“ですが、個人で運営をされていることもあり、最近運用を停止気味にしておられ、少々支障が出てきました。

参照:

以前のエントリー:
Diary::Weblog:人気記事Top10

そこで注目したのが、「EarlGreyTearoom」さんの「記事と同じカテゴリのランキングを表示」するPHPスクリプト。
以下は使用の際の注意点を含め、当サイトで行った変更点等。

  1. まず上記リンク「エントリーのアクセスランキング for Movable Type」から、「■注意」をよく読み、動作条件を確認してください。
  2. 次に、自サイトと「EarlGreyTearoom」さんの各URLを見比べてください。自サイトでのpermalink運用が違った場合、スクリプトの変更が必要となります。
  3. ありがたく「記事と同じカテゴリのランキングを表示」から「fav_count_2.zip」をダウンロード。
  4. 通常はダウンロードした「fav_count_2.zip」に含まれている「readme.txt」とおりに設定を行えば問題なし。
  5. 当サイトでは、エントリー別のアクセス数表示しか行わないので「fav_cfg.php」「fav_count.php」「fav_main.php」のみを使用した。
  6. 当サイトでは、上記のとおりpermalink運用が違うのでスクリプトの一部変更が必要であった。
    (著作は「EarlGreyTearoom」のpekoeさんに有り、変更を行った点についてはここでは言及しません。)
  7. 最後の注意点として、「fav_cfg.php」中に使用している各設定保存用の格納変数名については、セキュリティ上の観点から類推されにくいものに変更しておくことが必要で、これを行った後は、必要箇所の同名変数についても置き換えを行いましょう。
タグ: , ,
Posted 2006年2月6日 11時48分50秒 in Movable Type, php by junichi_y Comments (0)

NuSOAPとAudioscrobblerでAWS(略)

2005年11月19日改訂

Now Playingのエントリーにて紹介した、Audioscrobbler(現Last.fm)のフィードを表示する方法ですが、今回は、「NuSOAPを使ってAudioscrobbler(現Last.fm)のフィードでAmazonWebSearch」というなんとも長ったるいタイトル(正式)の作業を行ってみました。

で、サンプルはこのblogのsideに表示中です。
要点1.AudioscrobblerのフィードをAmazonで検索し、リターンがあれば結果を表示。
要点2.画像が有れば画像も表示。
要点3.リターンが無い場合は、Audioscrobblerへのリンクを出力。

更新 2005年11月17日
Last.fmのRSSがURL変更となりました。
変更前:http://ws.audioscrobbler.com/rdf/history/username
変更後:http://ws.audioscrobbler.com/1.0/user/username/recenttracks.rss

更新 2005年11月19日
Last.fmのRSS出力に際し、XMLの名前空間が変更となっておりましたので、それに併せて変更致しました。

更新 2006年02月03日
パラメータ設定をとりまとめ、わかりやすくし、ソースの整理を致しました。

まずは「NuSOAP」ですが、「生」NuSOAPを使用した場合、見事に検索結果が文字化けします。
そこでNuSOAP Revision 1.59をベースに日本語を利用できるようにいしなおさんが修正された、nusoap.phpをお借りします。
ダウンロードするファイルは、「phpgoogle.zip」です。この中の「nusoap.php」をありがたく使用させていただきます。

いしなお! – PHP NuSOAPでGoogle Web API (13:50)

次に、以下のソースを各自個人のアソシエイトID等の変更を行ったうえで、nusoap.phpと同じディレクトリに適当なファイル名でアップします。
“<$MTBlogURL$>images/”ディレクトリに、“noimg.gif”というイメージを用意してください。(好みの画像で結構です)
そしてインクルード。以上で終了。

※ソースの最初にCSSが埋め込んであります。適宜変更してください。

※このスクリプトによる、如何なる損害も、一切補償致しません。自己責任で設置してください。
※このスクリプトは、コメントあるいはトラックバックウェアとします。ご使用の際には必ずコメントあるいはトラックバックをお願いします。
※このスクリプトの改変は自由ですが、このままの形での再配布は禁止とします。改変の際は是非お知らせください。

<style type=”text/css”>

table.audioaws {border-collapse: separate;}

td.audioawsimg {background: #ffffff;}

td.audioawstxt {background: #f0f8ff;font-family:”ヒラギノ角ゴ Pro W3″ ,”Osaka” ,”MS P ゴシック” ,verdana ,arial ,sans-serif;}

</style>

<table class=”audioaws”>

<?php

// バージョン0.5.5

// 2006.02.03 パラメータ設定をとりまとめ と ソースの整理

//

// Diary::Weblog

// http://jun.daa.jp/

// NuSOAPとAudioscrobblerでAWS(略)

// http://jun.daa.jp/archives/20050904142833.php

// 各パラメータを設定します 変更はここから

// —————————–

// “Last.fm Username”

//

$LastfmUser = “junichi_y”;

// Amazonへリクエスト用 sortに利用可能なパラメータ

// Featured Items +psrank

// Bestselling +salesrank

// Artist Name +artistrank

// Original Release Date +orig-rel-date

// Alphabetical +titlerank

//

// “パラメータ”

//

$sort = “+psrank”;

// “あなたのアソシエイトID”

//

$tag = “diaryweblog-22″;

// “あなたのデベロッパートークン”

//

$devtag = “D2RI43QR9UUHXB”;

// —————————–

// 設定はここまで 以下は変更しない

// Last.fmのfeed取得設定

define(‘AUDIOSCROBBLER_RDF’
, ‘http://ws.audioscrobbler.com/1.0/user/’ . $LastfmUser . ‘/recenttracks.rss’);

// Last.fm feedをオープン

if (!($fp = fopen(AUDIOSCROBBLER_RDF, “r”))) { die(“could not open Audioscrobbler feed”); }

while ($data = fread($fp, 4096)) { $rdf_content .= $data; }

fclose($fp);

// Begin parsing through

preg_match_all(“‘<title>(.*?)</title>’si”, $rdf_content, $songs); $songs = $songs[1];

preg_match_all(“‘<link>(.*?)</link>’si”, $rdf_content, $links); $links = $links[1];

// Soapを読み込み

include(“nusoap.php”);

// 10曲分の処理開始

for ($i = 1; $i < count($songs); $i++) {

list($artist, $title) = explode(‘ – ‘, $songs[$i]);

$keyword = htmlspecialchars($keyword);

$soapclient = new soapclient(“http://soap.amazon.com/schemas3/AmazonWebServices.wsdl”, true);

$proxy = $soapclient->getProxy();

$space = ” “;

$keyword = $artist . $space .$title;

// Amazonへリクエストのパラメータを用意

$params = array(

‘keyword’ => $keyword,

‘page’ => $page,

‘mode’ => ‘music-jp’,

‘tag’ => $tag,

‘type’ => ‘lite’,

‘sort’ => $sort,

‘devtag’ => $devtag,

‘locale’ => ‘jp’

);

//リクエスト

$result = $proxy->KeywordSearchRequest($params);

if(!$result['faultstring']){

//$itemにtype’lite’で定義されている出力データを格納(10曲分)

$items = $result['Details'][0];

echo “<tr><td class=\”audioawsimg\”><a xhref=\”" . $items['Url'] . “\” target=\”_blank\”><img align=\”right\” border=\”0\” xsrc=\”" . $items['ImageUrlSmall'] . “\” alt=\”" . $items['ProductName'] . “\” /></a></td><td class=\”audioawstxt\”><a xhref=\”" . $items['Url'] . “\” target=\”_blank\”><b>” . $artist . “</b><br />” . $title . “</a></td></tr>\n”;

} else {

echo “<tr><td class=\”audioawsimg\”><img align=\”right\”
xsrc=\”<$MTBlogURL$>images/noimg.gif\” alt=\”No Image.\” /></td>
<td class=\”audioawstxt\”><a alt=\”$links[$i]\” xhref=\”$links[$i]\” target=\”_blank\”>
<b>$artist</b><br />$title</a></td></tr>\n”;

}

}

?>

</table>

タグ: , ,
Posted 2005年9月4日 14時28分33秒 in php by junichi_y Comments (3)

LinkShareのバナーをランダムに表示する

LinkShareのバナーは一度設置すると、同じものが表示され続けます。
特にApple製品で用意されているバナーは、ローテーションしませんので、ページの表情が同じになったままで、見飽きてしまいます。

PHPの勉強を始めましたので、この際「Individual Entry Archive」のページに表示されるバナーをランダムに変えるスクリプトを作ってみました。
(LinkShareのバナー配布条件を満たす事が重要です。)
このページを何回かリロードしてみてください。違うバナーが表示されますよね?
これをJavaではなく、PHPでやってみます。

まずはPHPが使用できるサーバであること。
つぎに、LinkShareのアフィリエイトに参加している事が重要です。
※このスクリプトによる、如何なる損害も、一切補償致しません。自己責任で設置してください。
※このスクリプトは、コメントあるいはトラックバックウェアとします。ご使用の際には必ずコメントあるいはトラックバックをお願いします。
※このスクリプトの改変は自由ですが、このままの形での再配布は禁止とします。改変の際は是非お知らせください。

LinkShare.php


<?php
// LinkShare ランダムバナーローテーション
//
// http://jun.daa.jp/
// junichi_y

// ———設定変更ここから———

$wid = 468; // 使用したいバナーの幅を設定
$hei = 60; // 使用したいバナーの高さを設定

// ———設定変更ここまで———
// ———リンク追加ここから———

$aa[]=”http://click.linksynergy.com/fs-bin/click?id=KykHlGp5ThQ&offerid=66373.10000038&type=4&subid=0″;
$ab[]=”iPod”;
$ac[]=”http://images.apple.com/jp/store/AF_banner/ipod3_468_60_0727.gif”;
$ad[]=”http://ad.linksynergy.com/fs-bin/show?id=KykHlGp5ThQ&bids=66373.10000038&type=4&subid=0″;

$aa[]=”http://click.linksynergy.com/fs-bin/click?id=KykHlGp5ThQ&offerid=66373.10000113&type=4&subid=0″;
$ab[]=”iPod Free Personalize”; // iPod mini パーソナライズ
$ac[]=”http://images.apple.com/jp/store/affiliate/img/ipodmini1014/468_60_ipodmini_d.gif”;
$ad[]=”http://ad.linksynergy.com/fs-bin/show?id=KykHlGp5ThQ&bids=66373.10000113&type=4&subid=0″;

// ———リンク追加ここまで———

// ———–以下変更不要———–
srand(microtime()*1000000);
$ra = rand(1, $n = count($aa));
$ra -= 1;
echo “<div class=\”affiliate\”>\n”;
echo “<a href=\”$aa[$ra]\” target=\”new\”>\n”;
echo “<img border=\”0\” width=\”$wid\” height=\”$hei\” alt=\”$ab[$ra]\” src=\”$ac[$ra]\” /></a>\n”;
echo “<img border=\”0\” width=\”1\” height=\”1\” src=\”$ad[$ra]\” />\n”;
echo “</div>\n”;
?>

MT使いの方は、テンプレート中に、
<? include”LinkShare.php”;?>
としてインクルードしてください。
※使用したいバナーの幅と高さに合わせ数値を変更してください。
※リンクを追加する場合は、「リンク追加ここから」以降、$aa~$adまでの4行をセットにして追加してください。
※サンプルは当方のコードですのでこのまま使用していただければありがたいのですが…。(笑)ご自分のコードに変えてご使用ください。
※各リンク毎にバナーの幅・高さを設定すれば、全く違った形のバナーを表示させることも可能ですが、表示された結果としてあまり美しくありませんので今回は止めました。

styles-site.cssに追加

.affiliate {
background: #e8e8e8;
text-align: center;
padding: 8px;
}

追記:2005/02/27
当方にて配布中のPHPについては、LinkShareの承認を得ていないものです。
よって、LinkShareからの通知等が来た場合、ユーザーにスムーズな連絡ができるよう、当エントリへのコメントあるいはトラックバックをお願いしております。
一部のサイトにて、コメント・トラックバックをされずにご使用が見られますので、是非上記のご協力をお願い致します。

タグ:
Posted 2005年2月10日 19時02分33秒 in php by junichi_y Comments (8)

人気記事Top10

  • このエントリーには同意の最新エントリーがありますので、これ以上の更新はありません。
  • 次のエントリー「人気記事Top10をPHPとMySQLで」を参照してください。

「人気記事Top10」を前々からしてみたかったのですが、

MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)
blog:N@TURE BRAIN:人気記事ランキング(MT-MostVisited)再び

を、参考にさせて頂き、諦めていました。(笑)
だって、ウチもロリポップで、試してみてもウマくMT-MostVisitedプラグインが動かないんですもの。(;´д⊂)

ですが、この熱が再燃!ネット上をさまよい、ついに発見!
javascriptで設置一発!

philosophical:人気ページ一覧/リンク元一覧表示機能 Version0.3

設置方法は、ダウンロードしたファイル中の
「README_sjis.txt」に詳しく書かれています。
後は必要なファイルへのリンクを書き加えるだけ。

※ただし、ロリポップはcronが使用できませんので、手動にて更新しなければなりません。
以下、当サイトでの更新部分覚書

Main index
<div class=”コンテンツタイトル用CSSクラス”>
Popular Entry Top10
</div>
<div class=”コンテンツ用CSSクラス”>
<script type=”text/javascript” src=”設置場所までのパス/cgi/show_statistics_s.cgi”></script>
<br />
<a href=”javascript:void(0)” onClick=”window.open(‘設置場所までのパス/cgi/update_statistics.cgi?dummy’, ‘newwin’, ‘left=0,top=0,width=50,height=50,status=1′)”>最新情報に更新</a>
</div>

Individual Entry Archive 内の適当な場所 一部訂正:04/11/29
<div class=”設置場所に適切なCSSクラス”>このエントリーを参照しているリンク
</div>
<div id=”statistics”>
<script type=”text/javascript” src=”設置場所までのパス/refer.js”></script>
<script type=”text/javascript”>refer(“設置場所までのパス/cgi/refer_s.cgi”);</script>
</div>

styles-site 内に新規 id=”statistics”を作成 追記:04/11/29
#statistics{
適宜スタイルを記述
}

タグ: ,
Posted 2004年11月28日 15時57分50秒 in Movable Type, php by junichi_y Comments (5)

Now Playing

2005年11月19日改訂

前々からしたかった「Now Playing」。
コレってナニかというと、今(というか最近)コンピューターで再生中の音楽をblogに表示するというもの。
「自己主張が激しい」等というコメントも数多くみられる「Now Playing」ですが、それはそれ。まぁいいじゃないですか。(笑)

Windows・iTunes・サイトのエンコードがUTF-8ということで、長らく悩んでおりましたが、このたびめでたく解決したので、ココに方法をメモ書き。

ここではiTunes(Win用)を説明しますが、Mac用でもしなければならないことはほぼ同じです。
ちなみに他のPlayer用プラグインもあります。
後はサーバー側でphpが使える環境であることが必要です。(ちなみにこのblogはロリポですが、ノープロブレム!)

まず、用意するもの。

言わずと知れたPlayer. “iTunes“.
アップル – iLife – iTunes – ダウンロード
次に、iTunes用Plug-in. “Audioscrobbler“.
Audioscrobbler :: Downloads

次は、Audioscrobblerにサインアップ(無料登録)してください。

Audioscrobbler :: Singup

先ほどダウンロードしたiTunes(Win用)Plug-in”iScrobblerWin_0_0_4.exe”(04/08/09現在)をダブルクリックし、インストールします。
サインアップした”Account”と”Password”を入力し、使用可能にします。

後は下のサイトを参考に、インクルードするためのphpファイルを用意します。

AudioscrobblerWiki – Web&RSS_Data

を参照。(上記リンク先が消失につき、スクリプトの自サイト公開を行ないます。)

<?php

// Define the URL/path to user’s Audioscrobbler XML/RDF feed

define(‘AUDIOSCROBBLER_RDF’,
‘http://ws.audioscrobbler.com/1.0/user/junichi_y/recenttracks.rss’);

// Try to open Audioscrobbler feed

if (!($fp = fopen(AUDIOSCROBBLER_RDF, “r”)))
{ die(“could not open Audioscrobbler feed”); }

while ($data = fread($fp, 4096)) { $rdf_content .= $data; }

fclose($fp);

// Begin parsing through

preg_match_all(“‘<title>(.*?)</title>’si”, $rdf_content, $songs); $songs = $songs[1];

preg_match_all(“‘<link>(.*?)</link>’si”, $rdf_content, $links); $links = $links[1];

// Print out last 10 songs

for ($i = 1; $i < count($songs); $i++) {

list($artist, $title) = explode(‘ – ‘, $songs[$i]);

echo “<a alt=\”$links[$i]\” xhref=\”$links[$i]\” target=\”_blank\”>$songs[$i]</a><br />\n”;

}

?>

までをファイルとして保存するのですが、このテキスト中”http://ws.audioscrobbler.com/1.0/user/username/recenttracks.rss”の部分、usernameには、取得済みのAccountを入力し、”audioscrobbler.php”としてサイトにアップロード。
Templateの編集を行い、indexの好きなところに

<?php include(‘audioscrobbler.php’); ?>
追記:04/11/29MT使いの方は、テンプレート中に、
<? include”audioscrobbler.php”;?>

と記述しインクルード。

いやあ、簡単。
曲の日本語タグも通るし、すばらしいです。
少し「Now Playing」ではなくタイムラグがあるような気はしてしょうがないのですが、見逃しましょう。(笑)
今度時間のあるときに、曲のタイトルだけでなく、アーティストも表示されるように何とか頑張ってみよう。
phpの知識がないんだけれど。(笑)

ちなみにワタシのプレイリストはこちら。
Audioscrobbler :: User :: Junichi_y

更新 2005年11月19日
リンク先が消失につき、スクリプトの自サイト公開を行ないます。
Last.fmのRSS出力に際し、XMLの名前空間が変更となっておりましたので、それに併せて変更致しました。

タグ: , ,
Posted 2004年8月9日 21時07分58秒 in php by junichi_y Comments (19)

Get Adobe Flash player