「Smarty」を含む日記 RSS

はてなキーワード: Smartyとは

2014-09-16

スクレイピングサイト作成

前に一度作成したエロサービスサイトリニューアルしてみた。

http://soapjou.com

ソープ嬢のスクレイピングサイト

前回の反省を踏まえて少し見やすくできたと思う。

前回の反省

広告クリック率考えるとPCの方がおまけになってしまうかもしれない。

詳細ページに回遊率を上げる仕組みを作って、逆にTOPページとかアクセスないしどうでもいいっぽい。




削除してしまった為再登録します。

Rails3 とTwitter Bootstrapで、オシャレなエロサイトをつくってみました。

http://anond.hatelabo.jp/20120708161051

に感化されてサイト作ってみた

bootstrap使ってもカッコよくできないよ?

プログラマー向けじゃないの?

http://searchjou.com

デザイナーって好きなサイト作れていいよなー。

デザイン

bootstrap3 の公式サイトを見ながら

CSS,Components,Javascriptタグにあるサンプルを全部作ってみた

デザインわからん。一度諦めた。

クローラー

一番経験のあるPHPを選択。

最初正規表現でガリガリ書いていたのだが

まりの面倒臭さに一度諦めた。

その後色々調べたら「simple_html_dom.php」の存在を知る。

スクレイピング作業が一瞬にして終わった。

サーバー

Root欲しいのでVPSを探す。

GMOアダルトOKっぽい、安いので決定。

postfix + dovecotメールサーバー構築

メールの設定がどうしてもできない。

仕事で何度も設定しているのに意味不明

エラーも出ていない。

一度諦めた。

しかし、サーバー代払ったので再度トライ

info@xxxx.com

メールアドレス作成していたのだが

システムエイリアスで「info」を使用していたため

メール転送出来ずに受信できなかったもよう。

危ない名前は使わないのは基本だよね。

/etc/aliases は確認しましょう。

データベース

Mysqlを使用、一応クエリキャッシュ設定

MyIsamだとインデックスに容量制限があるのでInnoDB使用

表示

php + Smarty

キャッシュSmarty実装

プログラマーからデザイン出来ないんじゃなくて

自分センスがないのが原因な事が判明。

出来あがったサイト

川崎ソープ嬢を検索 - サーチ嬢

http://searchjou.com

数1000件のデータなのでキャッシュインデックスいらなかったかも。

プログラマデザインやるのと

デザイナープログラムやるのって後者の方が敷居は高いとは思う。

でもプログラム勉強できるけどデザインってセンスがなきゃどうしようもない。

おわり

もう少しデザイン頑張ってみる。

デザインの教本読んでみると

最初に「Adobe」ありき。で話が始まるけど敷居高くない?

Adobeクラウドの月5000円でも高いよー。

2014-04-11

AV(エロのほう)なウェブサービスを作ったとき発見したこと。

 

世の中にはマニアがあふれている。

これに尽きます


「僕は世の中を知っている大人だ。」なんて

漠然と思っていたりもしましたけれど

こんな身近に知らない世界はありました。



中でも僕を驚かせたのは

嘔吐好き」と「キワモノ好き」の2つです。(´・_・`)



嘔吐好きとか、

ゲロはいてる女性見て、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ

そのゲロかぶって、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ



キワモノ好きなんて、

裸の女性ミミズ昆虫にまみれて、それを食ってんですよ! Σ(゚∀゚ノ)ノ



さすがに気持ち悪くなりました。。。

キワモノAVはサービスデータから除外しました。。)



今、日本人口が約1億4千万人として

男は半分の7千万人でしょ?

エロ情熱がある若者から中年層だとその半分強で4千万人として



その4千万のうち

嘔吐好きな変態さん。

キワモノ好きな変態さん。



ってどのくらいいるんでしょうね。。。

作る人がいて見る人がいるんだから、まあソコソコな人数いるんだろうなあ。。




作ったサービスについて


【らぶらぶAVさーち】

http://love2av.com/

AVの検索サイトです。



ちなみに、ワンクリック検索できるピックアップ検索は私の趣味です。w

最近は、つぼみ紗倉まなほしのあすか臼井あいみがオススメです。www ぐう可愛い!(゜∀゜




内部的な仕組み


Nginx + php-fpm + MySQL で動いています

言語PHP + Smarty + Javascript(jQuery) で書いています

あと、スクレイピング用に .NETwindowsアプリ作りました



え、スクレイピングPHP で作ればいいのにって?



スクレイピングってサイトデザインが変わったら

すぐ誤動作してしまうのですよね。。。

PHPだと対応し直しが面倒なので .NET に逃げました。。。。ヽ(°▽、°)ノエヘヘヘヘ



データ更新


データは、アフィリをやっている

動画サイトのduga さんと、MGS動画さんから持ってきています



アフィリじゃないリンクを置いておきますね。

DUGA

http://duga.jp/

MGS動画

http://www.mgstage.com/



データを常に最新にしておくために



という作業をcronで6時間ごとに実行しています



おすすめの使い方


個人的には

待ち合わせで暇なとき

スマホちょっとエロ画像見よう」 ( ・ω・)

てな感じで使っています


 

2013-10-28

スクレイピングサイト作成

削除してしまった為再登録します。


Rails3 とTwitter Bootstrapで、オシャレなエロサイトをつくってみました。

http://anond.hatelabo.jp/20120708161051


に感化されてサイト作ってみた

bootstrap使ってもカッコよくできないよ?

プログラマー向けじゃないの?



http://searchjou.com



デザイナーって好きなサイト作れていいよなー。


デザイン

bootstrap3 の公式サイトを見ながら

CSS,Components,Javascriptタグにあるサンプルを全部作ってみた

デザインわからん。一度諦めた。

クローラー

一番経験のあるPHPを選択。

最初正規表現でガリガリ書いていたのだが

まりの面倒臭さに一度諦めた。



その後色々調べたら「simple_html_dom.php」の存在を知る。

スクレイピング作業が一瞬にして終わった。

サーバー

Root欲しいのでVPSを探す。

GMOアダルトOKっぽい、安いので決定。



postfix + dovecotメールサーバー構築

メールの設定がどうしてもできない。

仕事で何度も設定しているのに意味不明

エラーも出ていない。

一度諦めた。



しかし、サーバー代払ったので再度トライ

info@xxxx.com

メールアドレス作成していたのだが

システムエイリアスで「info」を使用していたため

メール転送出来ずに受信できなかったもよう。

危ない名前は使わないのは基本だよね。

/etc/aliases は確認しましょう。

データベース

Mysqlを使用、一応クエリキャッシュ設定

MyIsamだとインデックスに容量制限があるのでInnoDB使用

表示

php + Smarty

キャッシュSmartyで実装



プログラマーからデザイン出来ないんじゃなくて

自分センスがないのが原因な事が判明。

出来あがったサイト

川崎ソープ嬢を検索 - サーチ嬢

http://searchjou.com


数1000件のデータなのでキャッシュインデックスいらなかったかも。

プログラマデザインやるのと

デザイナープログラムやるのって後者の方が敷居は高いとは思う。

でもプログラム勉強できるけどデザインってセンスがなきゃどうしようもない。

おわり

もう少しデザイン頑張ってみる。

デザインの教本読んでみると

最初に「Adobe」ありき。で話が始まるけど敷居高くない?

Adobeクラウドの月5000円でも高いよー。

2013-03-04

デザイナは無償でいいだろ

ムカつく

金欲しいなら仕事しろ

「すいません、デザインをこのように改修したんで、HTMLCSSをお渡ししますね。

 そちらでSmartyテンプレートの改修をお願いします。

 あ、この前追加した一文はこちらのデザインには組み込んでないんですけど、

 そちらのSmartyテンプレートからは削除しないように気をつけてくださいね

 CSSも、この前メールちょっとだけ追記をお願いした分、こっちのデザインには入れてないんですけど

 それも削除しないように・・・

 画像・・・

とか

変更管理破綻してるじゃねえか

ボケ

2013-01-20

ゴミ回収ドライバーが作るエロWebサービス

まったくの素人Nginx+Bootstrap+WordPressWebサービス作成しました。


影響を受けたサイト

オシャレエロサイト「h300」をリリースして、10PV/日を捌くためにやったこと

http://d.hatena.ne.jp/inouetakuya/20120410/1334058296

週6フリーターWEBサービス作ってみました。

http://anond.hatelabo.jp/20120914214121

はてブもっと快適に!「みんなのはてブ」を公開しました

http://anond.hatelabo.jp/20120930171125

--------------------------------------------------------------------------------------------------------

35歳 今は事務系の仕事をしてます。たまに運転。限りなくパートに近い労働条件ですが、

仕事がないよりはマシですので、続けているわけです。

前(5年ぐらい前)からWebサービスみたいなもの自分自身で作ることができたら楽しいだろうなぁと。

TwitterとかFacebookとか数回利用したことはあるけど、詳しいことはさっぱり。




朝6:00から夜18:00まで車を走らせてゴミ回収をしていた者です。

パッカー車って知ってますか。街でよく見かけるゴミ収集車のことです。

産業廃棄物というのでしょうか。スーパーとか

ドラッグストアとか回るんですよ。休憩時間は15分ぐらいなんですよ。一日。馬車馬のように働いていました。

そのパッカー車で物損事故を起こしてしまい、会社に居続けることはできなくなり仕事をやめました。

エロはもともと好きだったのですが、車を運転する以外の技術は持っていません。

何か手に技術を身につけたいと考えるようになりました。ただ30歳も過ぎたおっさんにあまり時間はないので、

資源の集中を意識時代の流れはパソコンだということで、始めたわけです。


はじめはHTML,CSSの本で基本的なホームページ制作を学ぶ。

HTMLが骨組みで、CSSが装飾みたいなイメージを持つ。

作成したエロサイト

エロックス

http://panpanwatch.net/


サイト構成

-----------------------------------------------------------

MySQL

Nginx+PHP-FPM proxy_cache

Bootstrap

Smarty

WordPress

PHP SimpleHTMLDOMParser

FeedWordPressを使ったエロブログ更新情報

-----------------------------------------------------------


Webサービスを作るにはプログラミング必要なことは知っていたけど、初めてみて暗号のように思える。

プログラミングの中でもPHPは簡単なのでしょうか?最近の流れからすると、Rubyなのでしょうけど、

習得しやすいと,聞いていたPHPを始めることに。

PHP自分の実現したいサービスが組み立てやすい気がします。


参考にした本

西沢直木のPHP Webアプリケーション スーパーサンプル

http://www.amazon.co.jp/gp/product/toc/479733245X/


手を動かしてプログラミング入力することは重要だと知る。

PHPだけでは動かなくてMYSQLとかデータベース勉強

PHPMYSQLの知識で就職できるのでしょうか?

小さいプログラムからテストテストを繰り返すことで、

foreachやif,forなどの基本的な使い方を身につける。

プログラムは結局小さいプログラムの集まりだとどこかに書いてあった。ことを思い出す。

PHPベタプログラムだどセキュリティ的に弱いということでPEARを使うように。

データベース接続MDB2
ページャーはPager
PHPテンプレートエンジンSmarty

ほかのプログラミング言語は知りませんが、PHPerというらしい。

プログラムに慣れてくるとPEARライブラリなどのクラスに抵抗がなくなってきた。

それでも、オブジェクト指向という考え方を体で理解するまで時間がかかる。

PHPについて参考にしたサイト

----------------------------------------------------------

http://php.xenophy.com/index.html

  • 組長的PHP入門

http://kumicyou.sakura.ne.jp/php/index.html

オブジェクト指向PHP入門講座

http://www.objective-php.net/

http://www.amazon.co.jp/gp/product/toc/479733245X/

http://www.amazon.co.jp/gp/product/toc/4797367571/

----------------------------------------------------------

PHP以外にも参考になったサイト

ドットインストール

http://dotinstall.com/

----------------------------------------------------------

Simple HTML DOMParser メモリーオーバー?が発生するので頻繁には使えない。

正規表現って便利ですよね。(preg_match("/ab/", $string);など)

Webサイトのどんな情報でも切り取ったり、貼りつけることができるので。

Web上で特定の情報を好きなように集めてきて、加工することができるスクレイピング発見

PHPスクレイピングするにはどうしたらいいか考えるようになり、かなり時間を使いました。

スクレイピングするために考えた流れ

該当URLサイトマップからリンクページ(aタグ)をすべて取得する。

リンクページの中でエロ動画が含まれているページだけ抽出

ページの中にあるエロ動画URLサムネイル画像などをファイルへ出力。

ファイルへの書き込みは以下のようにしました。

$fp = fopen("/var/www/html/sample.txt", "a");
fwrite($fp, $title."\n");
fclose($fp);
}

出力したファイルの中で重複データなどないように一つにまとめて使えるように加工する。

あらかじめCronで時間を指定してファイル情報データベースへ投入。

これから欲しい情報は、著作権に気をつけながらスクレイピングして集めてくると楽しいなぁと思ってます


自分ホームページを公開するためにはサーバー必要なことは以前から知っていたのですが、具体的には手探り状態から

サーバーについて参考にしたサイト

CentOS自宅サーバー構築

http://centossrv.com/


サーバレンタルサーバとか専用サーバなどいろいろあるのですね。

全部自分管理しないといけないため、めんどくさい気がした。結局VPSサーバに。

エロサイトとは言え、web表示スピードにこだわりはじめる。

スピードアップのためにやったこと。データベースアプリケーションサーバを分ける。

データベース最適化、query_cache_sizeを設定したりなど。

参考にしたURL

自分WEBサービスを作りたいと思っている人へ

http://anond.hatelabo.jp/20101203150748

ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編)

http://tanaka.sakura.ad.jp/2011/05/centos-linux-apache-php-perl-mysql-lamp.html


定番PHP MYSQL Apacheから調べていくとNginxというWebサーバが高速だという

記事が多いので、使ってみることに。

Nginx エンジンエックスというらしい。

NginxだけではPHPは動かない。php-fpmインストール

しかし、proxyサーバ設定がよくわからず。

Nginxについて参考にした記事

------------------------------------------------------------------------------------

http://d.hatena.ne.jp/yoshi-ken/20120205

http://kray.jp/blog/wordpress-tuning/

http://server-setting.info/centos/apache-nginx-2-php-fpm-install.html

http://hara19.jp/archives/5817

http://tech.aainc.co.jp/archives/3022

------------------------------------------------------------------------------------

以上の記事でNginxproxyを設定することができ、とても参考になりました。



PHPで作られたCMSを知る。WordPress

どうにか既存サイトWordPressで作れないかと考えていたら、

WordPressは固定ページとブログ用のページを分けるテンプレート構造だと知る。

WordPressindex.phpファイル一枚あれば動くらしく、ページを表示する優先順位があるらしい。


        優先順位 高い          優先順位 低い

メインページ front-page.php → home.php  →  index.php

そのため、fromt-page.php自分で作ったSmartyをそのままコピペして,なんとか既存サイトWordPressをミックスさせることに。

詳しくは以下の本が参考になりました。

http://www.amazon.co.jp/gp/product/toc/479736758X/

WordPressプラグイン

FeedWordPress 登録したサイト更新情報表示

WordPress奥が深いです。

Twitter Bootstrapを知る。

スタイルシートなどを含めたデザインセンスがまったくなく、

途方にくれていたところ、CSSフレームワークTwitter Bootstrapを知る。

HTMLに少し手を加えるだけで今っぽいデザインにできる。その分、余った時間web構築に集中することができる。

エロサイト各ページについて

http://panpanwatch.net/douga.php

データベースに登録してある動画すべて。

http://panpanwatch.net/newdmm.php

DMM動画の当日配信が開始されたコンテンツDMMapiから収集。

http://panpanwatch.net/?page_id=5382

ネット上のエロ更新情報を収集して表示。メインはWordPressで構築。

--------------------------------------------------------------------

常日頃からネットエロにはお世話になっていたので、なんか恩返しではないですけど、

形にすることができて、自分自身では満足してます

Webサービス作るまで、ずっとパソコンの前ばかりにいたので、

少しパソコンから離れたい気持ちです。

01/22 追記。

こんにちは。みなさまからブクマコメントを多数いただき、ありがとうございます

いろいろご意見あると思いますが、大げさな嘘などは書いていないです。

PHPを理解するのも、こちらの本を一冊やれば、それなりに理解できるようになりました。

http://www.amazon.co.jp/gp/product/toc/479733245X/

次のサービス作成するときは本格的なアプリケーションソーシャルゲームなどやりたいなぁと

野望だけは持っています。ですけど、ずっとこのサイトだけに集中してきたので、今はパソコンから少しだけ距離を置くつもりです。

恐らくですけど、本物のプロの方から見れば、このサイトは大したことないでしょう。

素人趣味でやっているんだと温かく見守ってください。

2010-12-31

コンピュータプログラムの作り方

日本プログラマは、質はすごくいいんだよ。

なのに、なぜかいちいちプロジェクトが火を噴いたりする。その原因を考えてたんだけども。



欧米では、まず「技術」があり、「さあこれらの技術を組み合わせて、どんなサービスを展開しよう?」と考える。



日本では、まず「こんなサービスがいい、画面はこんなデザインがいい」という具体的・絶対的な要求があり、技術屋がそれに応える──プロジェクト開始直後に想定していた部品でどうにもならない問題は、自力でなんとかする必要がある。たとえば PHPSmartyjQuery やそのプラグインなどは、肝心なところで何も手助けしてくれない(・・ばかりか、我々の努力邪魔する事もある。例えばもうメンテされていない「thickbox.js」は、いや、もういいや以下略



・・とかって妄想してみた。

もちろん欧米プロジェクトの全部がそうってわけでも、日本プロジェクトの全部がそうってわけでも無いんだろうけど、割合としてはどんなもんだろうね?

2010-12-06

http://anond.hatelabo.jp/20101203150748

完全に一致を作るための勉強法



たくさんのアクセスありがとうございました

コメントもたくさん頂いてまして、それにお答えするのに「ブログでもつくろうかいな」とのぼせましたが、そんなテーマで続くわけもないので、やはりアノニマスダイアリーしました







製作期間について】

まず、皆さん仕事しながらたった4ヶ月で!と褒めて頂いてますが、たったじゃないですよ。4ヶ月って。

仕事が終わって、毎日2~3時間。土日関係無くやると、多分300時間くらいになります

専門学校の2年間の授業時間がこのくらいだったりするんじゃないですかね。結構長いです。




モチベーションの維持について】

モチベーションを保つのがすごいというのも褒めてもらいましたが、私は一回やり始めると、意外に長く続きます

コツがあるんです

毎年、日々の単純作業が続かない新入社員が入ってきますが、そんな新人に言います。

「息をするように続けるんだよ。」

毎日やるんです。土日関係無く。毎日。




勉強したという言葉の誤り】

前回の日記で「勉強した」と何度も使ってしまった為、誤解をされている方が多くいらっしゃいます。

正確には、「調べ」ました

職業柄「調べる」という事が多い為、WEBサービスを作るという事に関してはそれが訳に立ちました



追記でも書いているのですが今回のシステムほとんどが、先人達が作った既存システムベースになっています。

ぱくりと言われてしまえばそれまでなんですけど、丸ごとはやってないですよ。というか、丸ごと合うモノがなくて、いろんな所からソースコードを拝借させてもらいました

なので、中身はぐちゃぐちゃです。けど、検索システムはそれでも200行くらいしかありません。クローラーは80行くらいでしょうか。




HTMLについて】

基本をやったのは、恐らくHTMLCSSだけです

というか、それすら途中で挫折してAdobe社のDreamWeaverというソフトを使いました

適当に書けばソースは綺麗にしてくれるし、CSSの体裁はプロパティを設定しながら見た目のまま調整すれば良いし、一番助かったのはテンプレート機能でした

最初は全部のHTMLファイルコピーしながら作っていたのですが、ヘルプを見るとテンプレートライブラリという機能があるのをしってライブラリいまいち分らなかったのでテンプレートを使いました

Dreamweaver便利

テンプレート便利




Javascriptとの出会い】

最初に本やで立ち読みした本に、「プログラムをやってみよう」ということでJavascriptの事が書いてありました

なので、自然プログラム最初さわりがコレになっただけなんですね。

でも、アラートを出したりとかばっかりで、面白くありませんでした



インターネット黎明期からのネットユーザーなのですが、「最近よく見るページが移動しないのにページの中身が切り替わるやつかっこいいよな」と思って「ページ遷移しない 読み込み」で検索をすると、Ajaxという文字を見つけ、「ajax 入門」で検索してトップに出たサイトAjaxの概要だけ調べて、「ajax 簡単」でprototype.jsjQueryの文字を見つけて「ああ、jQueryってよく見るな」というのがjQueryとの出会いでした

最近よく見るページが移動しないのにページの中身が切り替わるやつ」は、非同期通信という名前した

jQueryを使うと、下記のように1行コピペするだけで外部のHTMLを読み込む事ができました

--------------------------------------------------------------------------

var http = $.get("abc.html",null, function(data) {$("#main").html(data);});

--------------------------------------------------------------------------

すごい簡単。最初意味は分りませんでしたが、目的の事ができればそれで良いので次に進みました



jQueryすごい

■非同期通信かっこいい

プラグインいっぱいあって楽しい




Perlとの出会い】

jQueryがちょこっと書くとダイナミックに色々変わってくれるので、日々いろんなプラグインを探して遊んでいました

でも、作りたかったのは検索システムだったのを思い出し、また近くの大きな本屋に。

検索するパソコンで”プログラム 検索”で探しだした棚に行くと、「CGI/Perl」の本棚した

大量にありすぎてどれをかって良いか分らなかったので、いくつか立ち読みして家に帰り、「CGI/Perl 入門」で検索すると

http://www.kent-web.com/perl/

このページにたどり着きました



Windowsだった為、ActivePerlを入れていくつかプログラムをやりましたが、これがまた面白くないんですね。

すごい地味で。このPerlをさわった最初の1日は正直かなり苦痛した



その後、”AV女優検索システムって不動産検索システムに似てるな”って思って「CGI/Perl 不動産検索 無料」で検索したら、http://www.yumemaboroshi.net/ってサイトが引っかかって、ここのおかげでかなり進みました

先人が作った大量のプログラムダウンロード出来るサイトなんですね。



Perl面白くない

フリーソフトを集めたサイトソースがいっぱい見れる




PHPとの出会い】

いくつもダウンロードしては、サンプルと中身を見てを繰り返してたら、Perl/CGI以外にPHPがたくさんありました

どう違うのかと思い検索したら、PHPはすごい叩かれてて、Perlがえらいみたいに書いてあったのですが、叩かれてる理由がいまいち理解できませんでした

結果PHPを使う事になったのですが、その大きな理由は、DreamweaverPHPが開ける。なおかつHTMLファイルをそのまま使うテンプレート機能のプラグインがあったという事でした



PHPテンプレートを使うには、Smartyというプラグインを使えば良いということが分って、「Smarty 入門」で調べて、いくつかのタグを覚えました

実際にSmartyで使ったタグは、{$変数}と{if}{/if}と{foreach}{/foreach}の3つだけだと思います。

色々高機能らしいですが、まあ目的は達成できたのでいいか。と。

PHP検索プログラムは、HTMLファイルボタンを押すと、テキストファイルに書いてある内容を、表示してくれる簡単なものを作って、そこに肉付けしました

(最終的にテキストファイルSQLサーバーになりましたが。)




PHPDreamweaverと相性がいい

Smartyでやると見た目が壊れない




Rubyとの出会い】

簡単にPHPで動くプログラムが出来たので、実際に女優データを登録しようと思い、DMMに行きました

DMMサイトを見ていると、いったい何人いるんだってくらいAV女優が登録されています。

数人集めてみて「こりゃぁ。無理だな。」と途方にくれて1日を過ごしました(笑)



次の日、「ホームページ 自動 巡回 プログラム」とかで検索して、ボットクローラーという存在を知りました

自動巡回で拾ってくるのは、どちらかというとクローラーと呼ばれるそうで、「クローラー 作り方」で調べたホームページに、Perl+LWPモジュールで似たことができるということで、とりあえずペタペタとソースを貼ってうごかしてみたら、まあなんと簡単に取れました

しかし、取ってきた後に気がついたのが、HTMLファイルをそのまま取ってきても結局手動でコピペの必要があり、あんまり意味がない。と。

で、もう少し調べると、「WWW::Mechanize」を使うといいよって書いてあって、Mechanizeで調べたサイトをみるとrubyを使ったサイトが出てきました

rubyのサンプルがすっごい短くてわかりやすかったので、Perl苦痛だったのでRubyにしようと、このときRubyを始めました

設定が大変だったんですが、まあ面白くないので割愛。




Rubyきれい

■Mechanize簡単




デザインは・・・】

はてなブックマークコメントで、DoCoMoサイト元ネタと書いてありましたが、ハズレです

デザイナーの友人が居て世間話でどうやって作るの?って聞いたら、「まあ、パk、じゃない。参考にするよ。他社のを。」っていうもんでどうやって見つけるか聞いたら、あるんですね、綺麗なデザイン集めたサイトが。http://www.ikesai.com/ここでたくさん見ました

それからスライダーインターフェースは、「selectToUISlider」jQueryプラグインそのまま使ってます




■世の中のデザイン全てぱk(略

■selectToUISliderかっこいい




という感じで、ほんとにちょっとずつ進みました

しかったですね。Perl以外は。なんであんなに読みづらいんでしょう。




と、またもや長くなりすぎたのでこの辺で。







あ、ちなみに、アクセス数収益をご報告します。

金、土、日、月と約4日間爆発的にアクセスを頂きました



アクセス数は、4日間で約200アクセスほどありました

DMMクリック10クリックほどあり、その結果、購入された金額が、なんと!











700円でした

報酬額が245円。

ありがとうございました



http://www.kanzen21.com/




----------------------

12/8 12:00追記

アクセス過多でまたもやサーバーがダウンしました

今回のサーバーダウンは結構深刻でなかなか復旧が出来ていません。。。

申し訳ないです。




----------------------

12/8 12:10追記

全然起動しません。なんなんだこれは。

サーバー会社に問い合わせ中です

状況は、Twitterでお知らせします。

http://twitter.com/#!/kanzen21_com




----------------------

12/8 13:00追記

サーバー復活しました

サーバー会社の方、ありがとうございました

2010-12-03

自分WEBサービスを作りたいと思っている人へ

もう、いいおっさんの年齢なんですが、先日、とあるWEBサービス公開しました

5年ほど前からぼーっと考えていたんですが、如何せん、事務職の自分には”創る技術”が無かった。



優れた若い技術者id:amachangとかうらやましい)や、チャレンジ精神あふれる経営者id:hiroyukiegamiとか)が出てくる中うつうつとしている自分に嫌気がさし、4か月前の7月からHTMLプログラム勉強を始めた。




本屋立ち読みしたら、まずはHTML勉強する必要があると、書いてあった。同時にCSSを学んだ。



プログラムを作りたかったので、次にJavascriptをやった。

jQueryがすごい。「プログラムって誰でもできるんだ。」この時そう思った。



検索システムを作りたかったので、本屋に行ったらCGI/Perlの本がいっぱいあったので、Perl勉強した



しかし、HTMLテンプレートが使いたかったのでPHP+Smarty勉強した



作りたかったWEBサービス大手サイトデータ検索サイトだったので、自動データを集める必要があった。

クローラーというらしい

PerlのLWPを勉強したが、データを集めた後に加工する必要があった。簡単そうだったRubyとMechanizeを勉強した

Rubyはものすごくきれいにプログラムがかけることを知った。話し言葉に近い気がする。



プログラムを作っている時、最初自分パソコンの中でやっていて気付かなかったが、実際に公開するときレンタルサーバーを使うというのを知って調べると、Linuxサーバーが多いということを知った。

から、今度は自宅のあいているパソコンLinuxを入れた。

Linuxを入れたはいいものの、全く使い方が分から四苦八苦してRubyのインストールした

世界中メインで動いているWEBサーバーApacheということも3か月前に知った。

Apacheの設定がテキストファイルなのも驚いた。cd,ls,vi,mv,cp,chmod等、基本的なUNIXコマンドを覚えた。



例の図書館の事件があったので、クローラーを動かすのをためらったが定期的にちょっとずつなら怒られないんじゃないかと、Crontabを勉強した



自宅のサーバーが壊れてしまい、構築が大変だったので今度はVPSサーバーを借りた。

同じように構築はしたがかなり苦労した。このとき、始めてmakeというコマンドを使った。コンパイルというらしい



クローラー自動的にデータを集めていたが、動かし始めて2カ月目でデータファイルが1GBを超えていることに気がついた。

このときテキストファイルデータを扱おうと思っていたが大きすぎて動かない。

SQLサーバーというものを触り始めた。

最終的にデータ量は5GBを超えた。




11月も後半、本稼働用のサーバーを探していたら、丁度カゴヤVPSサーバーベータ版を募集していた。

ここぞとばかりに申し込みボタンクリックして申し込んだ。

すごく、快適です。まだベータですが、本番稼動でも、50GBで900円という激安プランです

http://www.kagoya.jp/cloud/vps/

さくらさんの2.5倍の容量でさくらさんよりちょっと安い。

ベータ版では、3つまでOSインストールができます。もちろんそれぞれにIPアドレスが振られます

このVPSサーバー管理システムインストールし、もろもろの環境も作って、11月末についに、公開。



AV女優スリーサイズから検索できるシステム、「完全に一致です

 【完全に一致AV女優類似検索システム

 http://www.kanzen21.com/

類似検索機能付きで、2次元3次元をつなげる夢のシステムですはい

「なんだエロかよ」とか言わないでください。

真剣に作ったんだ。仕事をしながらよく頑張ったと自分をほめてあげたい







このシステムは、下記のような構成になっています。

----------------------------------------------

サーバー:カゴヤVPSサーバーベータ版)

WEBサーバーApache

SQLサーバーMySQL



HTMLXHTML+CSS

インターフェースjQuery+selectToUISlider

検索プログラムPHP

テンプレートエンジンSmarty

クローラーRuby+Mechanize+Cron

-----------------------------------------------



サーバー上にある静的なHTMLは1ページもなく、mod_rewriteですべてPHPが処理しています。

ボタン等の画像は、GIMP作りました




一番大変だった事は、、、



このサイトデータDMM社のデータを使わせてもらったのですが、AV女優顔写真をそのまま使うのは、肖像権的にNGらしく、AV女優の作品の中からその女優の顔が一番大きく写っているパッケージを使うことにしました

しかし、女優データは約5万件。作品データ12万件。とても手作業でやるわけにもいきませんでした



結局どうしたかというと、Face.com(http://face.com/)という、画像の顔認識ができるAPI無料提供しているサービスを利用しました

同様のことができる、OpenCVというソフトがあるのですが、最初から付いているパターンデータでは人の正面の写真しか顔として認識しませんでした

それに比べて、Face.comの認識精度は驚くほど高く、横だろうが斜めだろうがかなりの精度で顔を認識してくれました

データJSON形式で返してくれる(JSONもこのとき初めて知った)為、取得したデータを後で加工しやすかったです



1.このAPIを使い12万件の作品データをすべてスキャンするプログラムを書く※1

2.顔の縦の長さと横の長さを取得

3.縦×横で顔の面積を計算

4.作品テーブルの中に3で計算した顔の面積を追加

5.SQL女優テーブルと作品テーブルを結合

6.その女優の作品の中で顔面積が一番大きなパッケージ写真をその女優顔写真として代用しました。※2

※1 APIの制限が1時間1000リクエスト迄だったので、これまたCronで・・・

※2 実際には女優テーブルと作品テーブルを繋ぐ中間テーブルのフラグONした。若干の間違いはあるものの、かなり正確に出ました





長々と書きましたが、ズブの素人から約4ヵ月でここまで出来ました

勉強する前、SEをやっている友人に話したら、「3年はかかるんじゃないか?」と言われましたが、できたものを見せたら褒めてくれました

WEBサービスを作りたいと思っていて、技術がないからとあきらめている人は、とりあえずやってみてください。意外に簡単にできますよ。

あと、クローラーが動いていると、全能感を味わえるので楽しいです






あ、あと、椎名舞さんのファンです



-----------------------------------------

19:30追記

サーバーソフトからアラートが上がって、見てみてたらなんかすごいアクセス貰ってまして。

ありがとうございます




>カゴヤ中の人乙wwww VPSといったらさくらServersManくらいし選択肢が無いのは現状当然の認識であるはずなのに!

ゴヤ人間じゃないですよー。広告してるつもりもないんですが、ベータ版だからかもしれませんけど、すごい快適ですよ。今は。

何よりタダなので。

本当に月額900円のまま本公開になったら、環境構築もめんどくさいのでそのまま契約しちゃうかもです




>カゴヤはOpenVZだからなあ。俺としてはより自由度の高いさくらVPSお薦めしたい。

そうなんですか。2週間のお試し期間はつかったのですが、正直どっちがいいとかわかりません。

どんな風に自由度が高いんですかね?あと、アダルトOKなんですっけ?




>組み立てるプログラミングは本当に簡単だよ。 みんなで入り口を隠しているだけだよ。 #組み立てるだけじゃなくて、アルゴリズムを練ることが真のプログラミングかもしれない

そう思います。感覚的にはジグソーパズルに似てました

ただ、ピースを探すのに時間がかかりましたけど。

私の場合は、アルゴリズムとかその辺はできなそうですね-。

サンプルプログラムの組み合わせで作ったようなサービスですので、プログラムソースとかぐっちゃぐちゃです

一応、公開前に見える所はきれいにしたつもりですが・・・






もともと、作ろうと思ったきっかけなんですけど、

椎名舞さんがですね、すでに引退しちゃってるんですよ。ずいぶん前に。

で、彼女プロポーションが大好きなんですね。私。

それで、検索エンジン検索したです。でも、なかなか出ないんですね。



欲望のままにやってたら、次から次に壁にぶち当たって、そしたらいつの間にかできました



結果、このシステム使って椎名舞さんのプロポーションに似たAV女優を探すと、

雛乃つばめさんとか、果梨さんとか、佐伯さきさんとか既にDVD持っている女優さんばっかりヒットしちゃうんですね。確かに似てるんですスタイル

当たっててうれしいやら、既に持っていて悲しいやら。




あと、スタイルが似てる女優って顔も似てる気がする。

とくに最近の細い子は。





あ。デザインは、某企業をパk、じゃないリスペクトさせてもらいました




-------------------------------------

23:55追記

アクセス過多でサーバーが落ちました

寝てたらサーバーからアラートメール携帯に飛んできておこされました

こんな瞬発的なアクセスを考えていなかったので、とりあえず再起動しました

が、また重くなってます。。。どうしたらいいんだろう。

しい方居たらアドバイスいただけるとうれしいです




-------------------------------------

12/4 01:45追記

何度再起動してもサーバーが反応しなくなるので、うぎゃーってなってたのですが、

親切な方が「MySQLサーバーが原因じゃね?デフォルトだろ?query_cache_sizeを設定したらいいよ。」とわざわざお問い合わせからアドバイスくれました

設定してみたら驚くほどつながりやすくなりました

同じSQLクエリーを保持してくれるらしく、実際にデータ検索を行わないので高速になるそうです。こんなの知らなかった。ありがとうごいました

プログラムはサンプルがあるからどうにかなるんですが、サーバー周りの事が全然わかりません。。。。ぐうぅぅ。。。。

おやすみなさい。


-------------------------------------

12/6 23:30追記

ブックマークコメントもらっていた事を別の日記で説明しました

http://anond.hatelabo.jp/20101206224349


-------------------------------------

1/12 10:00追記

最終報告を書きました想定外ばかり。

http://anond.hatelabo.jp/20110112095450

2010-08-28

5年以上ぐらい前のPerlcgiは駄目プログラムの見本の宝庫

5年以上ぐらい前にPerlレガシーコードで書かれたcgiって駄目なプログラムのお手本だな。

1ファイル何千行もあるcgiで、一生懸命条件分岐や関数呼び出ししながらprintしてHTML作っていくやつ。

後から他人がレイアウト変更とか不可能に近い。

同じような処理(例えば掲示板だと新規書き込み、書き込み確認、書き込み修正など)があちこちに分散してて、全部探し出さないと変更できないとか。

クラスオブジェクトに関してはそれ何?な世界

俺が今作ってるWebアプリではSmartyなどのテンプレ使ってロジックデザインの分離が当たり前なのに(ちなみにSmartyは分離がイマイチ最近は他のを使ってる)、この時代にはそんな考え毛頭なかったんだね。

拡張子cgiだったりplだったり。*.cgigrepしても出てこない処理のせいで半日つぶした。

トンでもないコーディングスタイルが広まって、まだ相当数残ってんだな。

これからのプログラマが間違っても真似しないように、定期的に話題にしてフルボッコにすべきだと思う。

2010-02-03

http://anond.hatelabo.jp/20100203094726

JSPだってEL文覚えちゃえばPHP+smartyくらい使いやすいから大した問題は無いよ。

javaなら内部クラスとか使えるから、テーブル表現とかやりやすいし。PHPだとarray()の中に手動でハッシュ追加してそこにテーブル足すとかメモリ構造からすると無茶なことしがちだからな。

どうでもいいけど、業務系で使いがちな言語のくせしてjavaって言語仕様にヒアドキュメント無いんだよな。

ソースの中にSQLハードコーディングするから、ヒアドキュメント機能ないとコピペテストする際にいちいち修正を加えなければいけない糞文字列なっちまうんだが。なんかいいアイデアは無いか。

2009-08-18

PHPSmartyを使ったら文字化けする

phptplEUC-JPで書いたらブラウザ文字化けする。

ブラウザエンコード設定を日本語EUC-JPにすると文字化けしない。日本語自動判別にすると文字化けする。

Smartyを使って正しいヘッダ情報を出すにはどうすればいいんだ。phpからはheader("Content-Type: text/html;charset=EUC-JP");とすれば大丈夫だったけど、Smartyで同じ事をやるには。

関係あるかわからないが、php.iniのmbstring.internal_encoding = EUC-JP になっている。

2008-03-28

私は、管理者として今日も大忙しだ。

今月末で数人辞める人間がいるので、新たな人員を確保した。その新人がどんなスキルを持っているか知らないがとにかく入れた。入れてみて判断すればいいんだ。会社の状態がどうなろうと知ったことではない。

新たな人員はやはり女に限るな、俺の言うことに反論なんかさせない!俺はいつだって正しいんだ。男だとたまに論破されたりするからな、やはり女だ。

クライアントの要件はざっとでしか聞いて帰らないぞ!聞き漏らしても後で聞けばいいんだ。あ、聞く役目はお前等頼むな。

無事、納品できたな。ん、お礼電話か?俺がするから!お前等は別の業務に集中してろ!

あのな、見た目だけ見えりゃ問題ないんだよ!スタイルシート!?そんなのフォント変えたり、色変えたりするだけだろ!?世の中未だにテーブルレイアウトだよ!

おい、Ajaxってなんだ!?Flashの類か!?

おい、smartyってなんだ?

最近?俺はスカイピにハマってんだよ。

ブログツールも色々あるな、ワードエクスプレスってのがあるらしいな。

おい、お前等納期前だからな!しっかり気合入れろよ!じゃ、俺は帰るから。

休憩時間だからってペラペラ喋るなよ!俺は、女子社員と食事行ってくるから。

おい、こんな簡単なスクリプトも組めないのか?え、俺か・・うんと、だからその変数関数をいじればいいんだろ?どうなんだ!?えぇ!?

あのな、ブラウザの確認なんてIE6で十分なんだよ!?Macだぁ?誰もいねぇーよ!

SEOスタイルシート関係ねぇだろうが!!

文書型宣言?そりゃ・・なんだ!?どこに記述するもんなんだ?

おい、Flashでメニュー作ったぞ!何、SEO的に不利?カッコいいからいいだろうが!!

まずは、スケジュールが大事なんだよ!お前等ちゃんとスケジュール立てろよ!?俺のスケジュール?俺はいいんだよ。

お前等ちゃんとチェックしろよ!客に迷惑かけるなよ!!あぁ、俺はチェックする時間ないからな・・色々とやる事あんだよ!

あぁ、俺今日は帰るから。えっ、風邪だよ・・ゲホッ。

SEOなんてキーワード埋め込みゃいいんだろ!?それで順位があがるだろ?

ビルダー?そんなの素人の使うソフトだろーが!俺はDreamweaver3だけどな。

まったく、どいつもこいつも俺の言うことが聞けないのか?こんな尊敬できる人間もいないだろうに。

2008-02-04

自前のブログをもっておらず、したらばに長文を書き込むのは不便なので、こちらをお借りします。

サイトの高負荷制限について

2月1日ころ、バリュー・ドメイン カスタマーサポート様よりサイトが高負荷であるとのご指摘がありました。

ご指摘のスクリプトには、利用者が表示する項目を選べる機能がついており、その機能を利用する→選択項目に一致するキャッシュが無いのでDBアクセスを行います。この機能の利用者が増えたことより、DBアクセスが多く発生し、その結果高負荷に繋がったと考えられます。

対処としてこの機能を凍結し、またサイト全体のDBアクセスの見直し等を行いました。

関係各位にご迷惑をおかけしましたことを、お詫び申し上げます。

現在サポート様よりメッセージがあり、対処の確認待ちとのことです(通常:48時間??1ヶ月以内とのことです)。


2ちゃんねるでのなりすましについて

http://pc11.2ch.net/test/read.cgi/hosting/1201260968/339-

339以降、私であるかのように振舞い、酷いレスをしている者がおりますが、私ではありません。私は1度もこのスレッドに書き込みをしておりません。

なりすまし者が事実と違うデータをあげておりますので、その点を訂正します。

339 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/02/03(日) 01:31:35 0

s4で規制

http://wwwwwwww.ws/

よくみとけよ

これぐらいのサイトでも規制される。

転送量は全然範囲内

負荷は0PT

こうなったらFTPでしかデータを取り出せない

モジュールPHPだけでなく、CGIPHPやPerlも使用しており、0ptではありません。 → http://wwwwwwww.ws/image/huka0.jpg

344 名前:339[sage] 投稿日:2008/02/03(日) 02:23:03 0

データベースは使ってないサイトですよっと

DBを使用しております。

369 名前:339[sage] 投稿日:2008/02/03(日) 21:08:34 0

勝手なりすましてる人がいますね。

まぁいいけど、負荷は0PTです。

アクセスは日/20万??ですが。

RSSキャッシュをつかってますよっと。

ほんとここって馬鹿が多いね

移転準備中

負荷は0ptではありません(上記参照)。アクセスは10万/日前後です。 → http://wwwwwwww.ws/image/day.jpg

384 名前:339 ◆2OeQZyA6dg [sage] 投稿日:2008/02/03(日) 22:37:44 0

1回も書いたことないってのは嘘と認めます。

なぜあのように書いたかと言いますと、偽者が湧いたからです。

339と344の書き込みは自分です。

キャッシュは60分で取得しています。

ご迷惑をおかけしました。

鳥だけつけて以後ROMに戻ります。

coreサーバーは最悪です。

392 名前:名無しさん@お腹いっぱい。[] 投稿日:2008/02/03(日) 23:04:03 0

>キャッシュは60分で取得しています。

これ本当だし本物だろうなw

キャッシュ保持間隔は60分ではありません。おそらくxrea等の仕様でcronが1時間に1回程度のため、60分という数字が出たのだと思いますが、更新にcronは使っておりませんので、60分ではありません。

395 名前:339 ◆2Ow5YRidyI [sage] 投稿日:2008/02/03(日) 23:26:47 0

>>384を認めるなら、したらばのレスが滑稽に見えるな

それならサイトトリップ書くだけでいいのにまたSSとか出してるし

名前欄の消し忘れでしょうか?

またブラウザアクセスすると、Smarty→CacheLite→DBの順にアクセスする仕様です


なりすまし者の推察

以上と、執拗なりすまし自演による叩き、またなりすまし者が自分のサイト仕様をのべているという仮定で、xreacoreserverで運営している類似アンテナサイトさんなのではないかなぁと、個人的には考えています(xrea等でのアンテナサイト仕様もわかっておられるようですし)。

またDBを使っておらず(DBじゃなくてもデータとしてRSS記載のURLを保持しない)、現状取得できるRSSに記載されてる内容だけを表示している所、負荷0ptからモジュールPHPのみを使用している所となれば、もう少し絞り込めそうですね。

(上記はあくまでも個人的な推察であり、事実とは異なる可能性があります)

2007-11-08

60行テンプレートエンジンがパワーアップしてレイアウト機能に対応

前の60行テンプレートエンジンを改良して、レイアウトテンプレート機能を追加してみた(それでも全部で90行)。


レイアウトテンプレート機能とは、例えば個別のテンプレートが<table>...</table>を出力して、それをレイアウトテンプレートが<html><body>...</body></html>で囲って出力するとかそんなの。

詳しくは終わりの方のサンプルをみてくれ。


これは Ruby on Rails(とその仲間たち)にある便利機能のひとつ。

ついでにいうとSmartyにはない機能のひとつ。

今まで知らなかった人はぜひ試してくれ。チョー便利だから。


前回はたくさんのブックマークありがと。

コメントで「男前テンプレート」と名前がついてたので、勝手採用

名前がキモいっていわれるよ?でもそんなのカンケイネー


あと、これ以上の機能追加はしないので、各自勝手に改造して使ってくれ(そのためにコメントをつけてるから)。何でも人任せにするな。


コード

<?php
/*
 *  OtokomaeTemplate.php -- レイアウトテンプレートに対応した90行のテンプレートエンジン
 *
 *  - レイアウトテンプレート中で echo $_content; とすると中身が表示される。
 *  - テンプレート中で設定した変数レイアウトテンプレートで使うことが可能。
 *  - レイアウトテンプレート名をテンプレート側で指定することも可能。
 *  - 使い方:
 *      require_once('OtokomaeTemplate.php');
 *      $TEMPLATE_DIR    = 'templates';  // 省略可、パーミッションに注意
 *      $LAYOUT_TEMPLATE = 'layout.php'; // 省略可
 *      $context = array('title'=>'Example',
 *                       'list'=>array(10,'<A&amp;B>',NULL));
 *      include_template('template.php', $context);
 *  - 要 PHP 5.1 or later
 *  - ライセンス: public domain (自由に改造してね)
 */

/*
 *  設定用のグローバル変数
 */
$TEMPLATE_DIR    = NULL;   /* テンプレートを探すディレクトリ */
$LAYOUT_TEMPLATE = NULL;   /* レイアウトテンプレートファイル名 */

/*
 *  テンプレートを読み込んで実行する。
 *  $_context は変数名をキー、値を要素とする連想配列。
 *  $_layout はレイアウトテンプレートファイル名。
 *  - NULL または省略した場合は $LAYOUT_TEMPLATE を使う。
 *  - FALSE ならレイアウトテンプレートを使わない。
 *  - $_context['_layout'] = '...'; とすればテンプレート側でも指定可能。
 */
function include_template($_filename, $_context, $_layout=NULL) {
    global $LAYOUT_TEMPLATE;
    $_content = render_template($_filename, $_context);
    if (@$_context['_layout'] !== NULL)   // テンプレート側で指定された場合は
        $_layout = $_context['_layout'];  // それを使う。
    elseif ($_layout === NULL)            // 引数で指定されなかった場合は
        $_layout = $LAYOUT_TEMPLATE;      // デフォルトファイル名を使う。
    if ($_layout) {
        $_context['_content'] = $_content;  // レイアウトテンプレート中で使う変数
        $_content = render_template($_layout, $_context);
    }
    echo $_content;   // or return $_content;
}

/*
 *  テンプレートを読み込んで実行し、その結果を文字列で返す。
 *  include_template() の実体。
 */
function render_template($_filename, &amp;$_context) {
    $_cachename = convert_template($_filename);
    extract($_context);     // 連想配列ローカル変数に展開
    ob_start();
    include($_cachename);   // テンプレートを読み込んで実行
    return ob_get_clean();
}

/*
 *  テンプレートファイルを読み込み、convert_string() で置換してから
 *  キャッシュファイルに書き込む。読み込み時のロックは省略。
 *  (file_get_contents() もファイルロックできるようにしてほしいなあ。)
 */
function convert_template($filename) {
    global $TEMPLATE_DIR;
    if (! file_exists($filename) &amp;&amp; $TEMPLATE_DIR)
        $filename = "$TEMPLATE_DIR/$filename";
    $cachename = $filename . '.cache';
    if (! file_exists($cachename) || filemtime($cachename) < filemtime($filename)) {
        $s = file_get_contents($filename);
        $s = convert_string($s);
        file_put_contents($cachename, $s, LOCK_EX); // LOCK_EX サポートは 5.1.0 から
    }
    return $cachename;
}

/*
 *  テンプレートの中身を置換する。
 *  - '#{...}' を 'echo ...;' に置換
 *  - '%{...}' を 'echo htmlspecialchars(...);' に置換
 *  - ついでにXML宣言も置換
 */
function convert_string($s) {
    $s = preg_replace('/^<\?xml/', '<<?php ?>?xml', $s);
    $s = preg_replace('/#\{(.*?)\}/', '<?php echo $1; ?>', $s);
    $s = preg_replace('/%\{(.*?)\}/', '<?php echo htmlspecialchars($1); ?>', $s);
    return $s;
}
?>

サンプルPHPコード:

<?php
require_once('OtokomaeTemplate.php');
$TEMPLATE_DIR    = 'templates';
$LAYOUT_TEMPLATE = 'layout.php';
$context = array('list'=>array(10,'<A&amp;B>',NULL));
include_template('template.php', $context);
?>

レイアウトテンプレート(layout.php):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <body>
    <h1>%{$title}</h1>
    <div id="maincontent">
<!-- テンプレートの内容 -->
<?php echo $_content; ?>
<!-- /テンプレートの内容 -->
    </div>
  </body>
</html>

テンプレート(template.php):

<?php // レイアウトテンプレート名をテンプレート中で指定する場合 ?>
<?php //$_context['_layout'] = 'mylayout.php'; ?>
<?php // レイアウトで使用する変数テンプレート中で指定する場合 ?>
<?php $_context['title'] = 'レイアウトのサンプル'; ?>
<table>
<?php foreach ($list as $i=>$item): ?>
  <tr bgcolor="#{$i % 2 ? '#FFCCCC' : '#CCCCFF'}">
    <td&gt;#{$i}</td&gt;
    <td&gt;%{$item}</td&gt;
  </tr>
<?php endforeach ?>
</table>

出力例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <body>
    <h1>レイアウトのサンプル</h1>
    <div id="maincontent">
<!-- テンプレートの内容 -->
<table>
  <tr bgcolor="#CCCCFF">
    <td&gt;0</td&gt;
    <td&gt;10</td&gt;
  </tr>
  <tr bgcolor="#FFCCCC">
    <td&gt;1</td&gt;
    <td&gt;&lt;A&amp;B&gt;</td&gt;
  </tr>
  <tr bgcolor="#CCCCFF">
    <td&gt;2</td&gt;
    <td&gt;</td&gt;
  </tr>
</table>
<!-- /テンプレートの内容 -->
    </div>
  </body>
</html>

いくつか補足:

2007-10-30

60行で作るPHPテンプレートエンジン

唐突に、PHP用のテンプレートエンジンを作ってみる。

方針:

  • ふつうのPHPファイルテンプレートとして使う。
  • <?php echo $var; ?> は面倒なので #{$var} と書けるようにする。
  • <?php echo htmlspecialchars($var); ?> はもっと面倒なので %{$var} と書けるようにする。
  • ついでにXML宣言も <<?php ?>?xml ... に自動置換する。

【追記】レイアウト機能を追加してみた


コード

<?php
/*
 *  SixtyLinesTemplate.php - 60行しかないけどSmartyより速いテンプレートエンジン
 *
 *  使い方:
 *     require_once('SixtyLinesTemplate.php');
 *     $TEMPLATE_DIR = 'templates'; // 省略可、パーミッションに注意
 *     $context = array('title'=>'Example',
 *                      'list'=>array(10,'<A&amp;B>',NULL));
 *     include_template('template.php', $context);
 *
 *  ライセンス: public domain (自由に改造してね)
 */

/*
 *  テンプレートを探すディレクトリ。
 */
$TEMPLATE_DIR = NULL;

/*
 *  テンプレートを読み込んで実行する。
 *  $_context は変数名をキー、値を要素とする連想配列。
 */
function include_template($_filename, $_context) {
    $_cachename = convert_template($_filename);
    extract($_context);
    include($_cachename);
}

/*
 *  filename を読み込み、convert_string() で置換してから
 *  filename.cache に書き込む。読み書きのロックは省略。
 *  (file_{get,put}_contents() はファイルロックできるようにすべきだ。)
 */
function convert_template($filename) {
    global $TEMPLATE_DIR;
    if (! file_exists($filename) &amp;&amp; $TEMPLATE_DIR)
        $filename = "$TEMPLATE_DIR/$filename";
    $cachename = $filename . '.cache';
    if (! file_exists($cachename) || filemtime($cachename) < filemtime($filename)) {
        $s = file_get_contents($filename);
        $s = convert_string($s);
        file_put_contents($cachename, $s);
    }
    return $cachename;
}

/*
 *  テンプレートの中身を置換する。
 *  - '#{...}' を 'echo ...;' に置換
 *  - '%{...}' を 'echo htmlspecialchars(...);' に置換
 *  - ついでにXML宣言も置換
 */
function convert_string($s) {
    $s = preg_replace('/^<\?xml/', '<<?php ?>?xml', $s);
    $s = preg_replace('/#\{(.*?)\}/', '<?php echo $1; ?>', $s);
    $s = preg_replace('/%\{(.*?)\}/', '<?php echo htmlspecialchars($1); ?>', $s);
    return $s;
}
?>

サンプルPHPコード

<?php
require_once('SixtyLinesTemplate.php');
$TEMPLATE_DIR = 'templates'; // optional
$context = array('title'=>'Example', 'list'=>array(10,'<A&amp;B>',NULL));
include_template('template.php', $context);
?>

サンプルテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>%{$title}</title>
  </head>
  <body>
    <h1>%{$title}</h1>
    <table>
<?php foreach ($list as $i=>$item): ?>
      <tr bgcolor="#{$i % 2 ? '#FFCCCC' : '#CCCCFF'}">
        <td>#{$i}</td>
        <td>%{$item}</td>
      </tr>
<?php endforeach ?>
    </table>
  </body>
</html>

出力例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Example</title>
  </head>
  <body>
    <h1>Example</h1>
    <table>
      <tr bgcolor="#CCCCFF">
        <td>0</td>
        <td>10</td>
      </tr>
      <tr bgcolor="#FFCCCC">
        <td>1</td>
        <td>&lt;A&amp;B&gt;</td>
      </tr>
      <tr bgcolor="#CCCCFF">
        <td>2</td>
        <td></td>
      </tr>
    </table>
  </body>
</html>

2006-12-24

SiteDev2の備忘録

SiteDev2とは?
PukiWiki 1.4.6をベースにしたCMS(コンテンツマネジメントシステム)。
開発元:phpspot - PHPスクリプト/MySQL/掲示板/入門/サンプル/正規表現/レンタルサーバー
公式:フリーのCMS ( コンテンツマネジメントシステム ) - SiteDev ※公式サイトはsiteDev1.1.0(PukiWiki1.4.4ベース)で構築
デモトップページ - siteDev2サンプルサイト
稼動中:feedAPPLI | Webマーケティング Dragon.jp | javascriptist など
PukiWikiとの違い…Basic認証小人数運営・ペ-ジデザインが容易・Smartyテンプレ-ト・PukiWiki1.4.6用プラグインが使用可(一部1.4.7用も可)・便利なプラグインデフォルト
デメリット…処理が重い・セキュリティが弱い!?
※(個人的には)メリット微妙rNoteの方がお勧め
ただし、rNoteはバ-ジョンアップが滞っており各自スパム対策などを講じる必要がある。(開発者ブログは続いているのでバ-ジョンアップの可能性は0ではない)
問題点修正
カスタマイズ
その他

pcommentがおかしい 【問題点修正】

pcomment.inc.php内、61行目 rawurlencode を rurlencode に修正。

ページ一覧に文字化けした謎のタイトルが!! 【問題点修正】

害は無いと思いますが…デリケ-トな方はwiki/内の0バイトtxtファイル削除してみると吉かも

パスの書式問題 【問題点修正】

環境によって生じる!?私はデフォルトのままで平気でしたが…

一応解決方法→siteDev2の日本語URL問題を解決

SiteDev2の認証問題 【問題点修正】

PHPのバ-ジョンによって生じる!?

解決方法→phpspot.org - トピックを表示 - SiteDev2の認証 | 私的ファイル deltazulu 記録再開 - ひとり Wiki で SiteDev2 | PukiWiki/CMS/SiteDev2 - taru

コメントスパム対策 【カスタマイズ】

スパム対策済コメントプラグインがPukiWiki1.4.7用ですが修正無しで使用可能。

もうひとつ(古いみたい!?なので)参考までに…commentプラグイン

PukiWiki.orgの仕様を参考に 【カスタマイズ】

カスタマイズPukiWiki.orgの仕様を参考にしてみても吉かも。ただし、情報が古いので要注意!!

PukiWiki.orgの仕様(2004/08/20以前)

負荷対策 【カスタマイズ】

参考までに…BugTrack/763

パス 【カスタマイズ】

PukiWikiのUPLをindex.php?hogeの形式ではなく、index.php/hogeの形式に変更する方法。

SiteDev2ではデフォルトindex.php/hoge仕様になっている。中身を詳しく知りたい方は→PukiWiki with PATH_INFO

全角英数文字を半角に変換表示 【カスタマイズ】

見栄えが気になる方は→全角英数文字を半角に変換表示

キャッシュ 【カスタマイズ】

Pukiwiki Plus 1.4.7-i18nプラグイン。SiteDev2で動作するか不明(一応メモ)Wiki文法の出力HTMLをキャッシュする

HTML直接記述の危険性?? 【その他】

危険らしいですよ

 
ログイン ユーザー登録
ようこそ ゲスト さん