Web

Web開発のためのEmacsの設定

  • POST
Emacsについてはここ。PHPについてはここ。 設定 基本的にはPHP開発環境 on Emacsを見るとよい。 load-path 自分のload-pathの設定。elispのサブディレクトリも読み込んでしてくれる。 ;; load-path (let((default-directory (expand-file-name "~/.emacs.d/elisp"))) (add-to-list 'load-path default-directory) (if (fboundp 'normal-top-level-add-subdirs-to-load-path) (normal-top-level-add-subdirs-to-load-path))) AutoInstall 自分のauto-installの設定。auto-installのインストール先を~/.emacs.d/elisp/auto-install以下にした。 ;; auto-install (require 'auto-install) (setq auto-install-directory "~/.emacs.d/elisp/auto-install/") ;Emacs Lispをインストールするディレクトリの指定 (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) ;install-elisp.elとコマンド名を同期 install-elisp.elはauto-installのバージョン。 Anything 現在anythingを管理しているrubikitchの記事によると”M-x anythingは非推奨”らしい。そこで (require 'anything-startup) と設定する。しかしこれだけだと、 reference to free variable `org-directory</blockquote というエラーがでる。これを回避するためには、ここによると (defvar org-directory "") を上に追加すればよい。 PHP Mode 自分のphp-modeの設定。 ;; php-mode (require 'php-mode) 以下は加えなかった。 ;;(setq php-mode-force-pear t) ;PEAR規約のインデント設定にする ;;(add-to-list 'auto-mode-alist '("\\.

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ

  • POST
はてなのサーバーの話で、疑問を解消。 [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) 著者:[伊藤 直也 田中 慎司] 出版社:技術評論社 はてなで使っている技術について書いてある。大量のデータ、トラフィックをさばくためにいろいろと工夫している。検索の仕方を工夫したりとか、アマゾンのサービスを使ったりとか。冗長化、仮想化、ロードバランサ、RAIDなどのキーワードが出てくる。 Webでサービスやってる企業に興味がある人は読んでおくといいと思う。 プログラムはPerlで書かれているので、わからないとちょっとやっかい。読み飛ばしてもそれなりに面白い。 サポートページはこちら。 Introduction to Information Retrieval (Web) Introduction to Information Retrieval (Amazon) p.125 「Variable byte codes」(VB Code) p.128 幾何分布に従って出現する整数を最適に符号化することのできる整数の符号化手法はゴロム符号。 p.131 perlのpack()関数に使うNはNetwork orderのN。 p.134 自分の実装の速度を調べるにはプロファイラDevle::NYTProfを使う。 p.162 Regexp:List :小飼弾氏が開発したTrieベースの正規表現を生成するライブラリ p.166 The Google Way of Science(訳:グーグル方式の科学) p.170 Apache Thrift:多言語間RPCフレームワーク。参照:WEB+DB PRESS Vol.46「Recent Perl World」の「Thriftで多言語RPC……C++でサーバ、Perlでクライアント」 p.179 伊藤直也氏のAho Corasick 法。AC法。Trieをつかったパターンマッチ。マッチが途中まで行って失敗したら、ノード0に戻らなくて良いように、次の行き先の情報を付加したデータ構造。 p.181 アルゴリズムコンテスト:Sphere Online JudgeやTopCoder p.195 Suffix型:検索可能な形で検索対象全文を持つ。Trie, Suffix Array, Suffix Treeなど。Suffix ArrayについてはWEB+DB PRESS Vol.

右上を自分のHP上に表示する2

  • POST
右上は滅びぬ、何度でもよみがえるさ ニコニコ動画(右上)の更新がストップしてしまい、そこからRSSを取得して右上を表示していた以前の方法は使えなくなってしまった。 そこで新しくPHPでかいて最新の右上のソースから右上を抽出して右上を表示させることにした。 以前のPerlを使った方法だと、色々と長いコードがあってなんかしてたけど、PHPだとソースを読み込む部分はたったの一行である。 $source = file\_get\_contents('$url'); これで$sourceに$urlで指定したファイルのソースが入る。後はこれから自分の必要な情報を取り出せば良い。ページが表示するたびにソースを取得していたらサーバーに負荷がかかると思い、取得した情報はファイルに保存し、filemtimeでそのファイルの更新時間を調べて、一日以上立っていたら再度取得するようにした。以下はソースコード。 <?php setlocale(LC\_ALL,"ja\_JP.UTF-8");//これが無いとfgetcsvの日本語がおかしくなる $filename = 'migiue.csv'; if(@$fp = fopen($filename,"r")){ $d = fgetcsv($fp, 0, ",",'"'); fclose($fp); } //データを取得できない、またはファイルの更新時刻が24時間以上たっていたら、 //データを取得する if(!isset($d) || time() &#8211; filemtime($filename) > 60 \* 60 \* 24){ //データの抽出 $url = 'http://www.nicovideo.jp/migiue'; $html = file\_get\_contents($url); $pattern = '|<span>\d{4}/\d{2}/\d{2} \d{2}:\d{2}</span>\n\s+?<a href=".+?">(.+?)</a>|'; preg\_match\_all($pattern, $html, $matches); array_splice($matches, 0, 1); $tsubuyaki = $matches; //データの書き込み $fp = fopen($filename, "w+"); foreach($tsubuyaki as $a){ fputcsv($fp,$a,",",'"'); } fclose($fp); } if($fp = fopen($filename,"r")){ while (($d = fgetcsv($fp, 0, ",",'"')) !