PHPに惚れました

今でも多分惚れてます。

ニコニコエコー引越ししました。

とは言え、5/18と2週間ほど前のことだったんですけどね。

事の経緯は公開スペースとして利用させてもらってる友人の自宅サーバーを廃止するとの旨の連絡が来たこと。

Xephy「おー了解。で、サイトの閲覧もできなくなるのはいつ?」

友「ん〜、1ヶ月後くらいを予定してるかな。」

Xephy「あー、なら時間はだいぶ余裕あるな。引越し済んだら連絡するし閉鎖も早めてもらってもいいよ」

友「おk。」


確かこんな感じのやり取りで翌日早速作業にとりかかることに。

  • とりあえずまずはサーバー上のファイルをローカルに持ってくる。(バージョン管理なんて存在も知らなかった時の制作物なのでリポジトリも無く。)
  • そんでMysqlのダンプ。
  • サーバー用意して、
  • とりあえずMysqlが絡まない部分を部分的に公開。
  • 更にドメイン取って、
  • ダンプしたデータを引越し先のサーバーに流しこんで、
  • php側のMysqlの接続設定を新しい環境用に書き換えて、
  • mysqlが絡む部分も随時公開準備。
  • .htaccess側でrewrite、ErrorDocument、phpの設定を済ます。
  • TwitterBotも再設定。(bot用だからあんま意味ないけど)
  • オリジナルランキングも復活させました。(間一年分ぽっかり空いてしまった期間の補填どうしよう。。。)
  • アクセスも殆ど無いリンク(ヘッダ上部)のリンクも撤廃。
  • faviconも作り直しました。
  • cronの設定も終え、最終動作確認。 

…多分大丈夫だ!多分問題ない!

後はサーバー廃止されるまでの間、旧サイトの全ページにリダイレクトを仕込んでと。
動画再生ページなら移転先のその動画再生ページヘ。
マイリストページなら移転先のマイリスト閲覧ページヘ。
それ以外ならTOPページへ飛ぶように。

Twitterでの移転通知はgoogle先生が「ニコニコエコー」で検索した時に移転先のサイトに差し替わった時!
…1週間あれば差し替わるかなと思ってたんですけど、3日と案外早くにあっさり差し替わりました。

旧URLのまま掲載してる場所ニコニコまとめwikiとかTwitterのDescriptionとかも全部書き換え。

移転によってphpのバージョンも5.1.xから5.3.xになりました。
これらの作業をだいたい1日半で。これで当分はニコエコも安泰だな。。。




何よりの新鮮味はURLがものすごいすっきりしたこと。

旧サイト:http://ddhost.no-ip.info/deltacolors/

新サイト:http://nicoecho.com/



うわ!わかりやすくて短い!

ついったーのBASIC認証が終了

2010年9月1日今日、twitterBASIC認証が終わりを迎えました。

BASIC認証twitterへアクセスすると以下のエラーが吐かれるとか。

XMLの一部?
Basic authentication is not supported

さようならBASIC認証

未だOAuthに移行してないwebサービスやtwitterクライアント、いくつ死ぬんでしょう?

ニコエコでの合計動画再生回数が10万を超えました。

実際はもう少し多いでしょう。多分+5〜10%くらいあるかもしれません。(憶測)
でも、botの投稿数でみれば10万再生目はこの動画。

【第5回MMD杯本選】少し楽しくなるMMD
D


懐かしいです。β臭がします。

RSS配信スクリプト書き換えました

色々なミスを乗り越えてオリジナルランキングRSS配信スクリプト改良。
改良って言っても現行サービスに流すわけじゃありません。

サイトの引越し先で使います。
URL公開はサイト完成まで待ってね。

前置き

DBに放り込む値の生成クラス。
動画レベル等の算出メソッドの実引数にAPIの値使ってるんですが一部キャスト忘れで
こんなことになってた。

<?php
//$xmlはsimple_xml_file()で取得したXMLオブジェクト//

$view = $xml->channel->view;   //7桁の数値
$comment $xml->channel->comment;   //8桁の数値

print var_dump($view>=$comment);  //True
?>

何で7桁の数値と8桁の数値比較して7桁の方が大きいって出るんだよ!って思ったら
$xmlに入ってるXMLオブジェクトをint型にキャストしてなかった。オブジェクト同士比較してたからTrueになっちゃったのかー。
とは言われてもなんか腑に落ちないですけどね。 ==なら納得しますけど。

使ったパッケージやライブラリ

この二つ。

現行スクリプトはSmartyはおろかパッケージも使ってない。
まさに直打ち。

以下改良点

拡張しやすくなった

 新しいRSS配信する時はSQLとタイトル追加するだけでおk。

例外に柔軟。

 Smartyのおかげです。もしDBに障害あってもXML自体は吐き出します。
 Itemsの中身は空っぽになるけど。これは本家準拠。
 指定外のクエリ文字指定したらhotが呼び出される。

URL指定を分かりやすく。

もう現行のURL文字列意味わかんね。

    • cf_mvr→hot
    • p_cf_mvr→pickup
    • mrd→mlst_rate
    • rand→random

他は変化なし。
今旬の動画であるcf_mvr・・・なんかの頭文字1文字ずつとったんだと思う。
もう俺にもわからんです。

処理はええ

 キャッシュのおかげ。
 現行みたいに似非キャッシュじゃなくてSmartyのキャッシュ使ってる。

RSS全種毎時更新

 これもキャッシュのおかげね。ランダム取得も毎時更新。
 

gdgdと駄弁り

現行スクリプトは全て1ファイルでやってるからDB倒れたらエラー吐かれてアウト。
RSSはリアルタイム更新。無駄にね。
オリジナルランキングは似非キャッシュで多少負荷と表示速度考慮してるけどランダム表示はそう柔軟にはいかないですね。

時間が来たらCronから生成スクリプト動かしてXML生成して、ランキング表示には生成したXMLファイル読み込む。
原始的なやり方です。

あと、feedcreator.class.php使おうかなぁとか思ったけどニコニコのRSS2.0って少しフォーマットが特殊なんですよね。
それで残念ながら現行フォーマットでは再現できず結局自作。

PEAR::MDB2Smarty使えばRSS配信スクリプトなんか簡単に作れますよ。
.phpと.tpl合わせても100行ちょっと。
配信するRSSの種類が1種類なら80行程度で済むんじゃないかな?

時間があれば簡単にチュートリアル記事でも書いてみようかな。


若干眠い中書いた記事。多分もう色々とひどいです。