Archive for the Category » PHP «

火曜日, 11月 17th, 2009 | Author: kyosuke

ごめん、ただのメモ

PHP:
  1. //ファイル送信準備
  2.         header("Content-Disposition: inline; filename=\"". $apName."\"");
  3.         header("Content-Type: application/octet-stream");
  4. //標準出力にファイル名を垂れ流スッ
  5.         print($pdfName);
  6. //処理終了
  7.         die();

that's 雑.

Category: PHP, tcpdf  | Leave a Comment
日曜日, 3月 01st, 2009 | Author: kyosuke
(2)の答はもちろん0

(2)の答はもちろん0

小数3項の計算問題がリロードごとに自動生成されてpdfを吐き出す、というシステムですが、
(2)に注目。もちろん答は0です。(↑画像は修正後のシステムから生成したもの)

解答を算出する際に、

PHP:
  1. $ans = 5.21.97.1 ;

と計算させると、0にはならず、float 型のでたらめ(ではないんだけど)な数値になってしまいます。

more...

月曜日, 2月 09th, 2009 | Author: kyosuke

【2009/02/09追記しました。】

2桁の25ます計算

2桁の25ます計算

↑こういう100ます計算 的なpdfを自動生成するサービスを作っていました。
2桁(10~99)までのランダムな整数を縦横5ます分ずつ取得したいとします。
rand( 10,99 ) でループで毎回生成してもいいんですが、
ごくまれに、同じ数字がかぶって発生します。(ごくまれというか、rand()つかうと結構な確率で発生します。)

対処法を考えた結果・・・
more...

金曜日, 12月 26th, 2008 | Author: kyosuke

さて、本日の課題は、たすき掛けの因数分解を自動生成するというもの。

因数分解問題を自動生成!

因数分解問題を自動生成!

いきなり完成図 ↑ かっちょいいぜ!リロードごとにいろんな問題が生成されます。
more...

月曜日, 12月 01st, 2008 | Author: kyosuke

DB使わない静的ページのみでも
CakePHPは慣れればつかえると思います、DB拡張も楽ですし。

同じキーワードだと、クロールされたときにもったいないですので、ページごとに keywords は変えたい。
とりあえず、サイト全体で使うキーワードを keyword.txtとかで列挙して、どっかに設置。下準備はOK。

layout の 部分には e(renderElement('keywords')); を入れておいて、
エレメントで↓のようなファイルを作っておく
elements/keywords.ctp

PHP:
  1. <?php
  2.     $keywords = file( PATH_TO . 'keyword.txt' );
  3.     $ret = implode( ',' , $keywords);
  4.     $keywords = str_replace( PHP_EOL , '' , $ret);
  5.     if(isset($this->pageKeyword)){
  6.         $keywords = $this->pageKeyword . ',' . $keywords;
  7.     }
  8.  
  9.     ?>
  10. <meta name="keywords" content="<?php e($keywords);?>" />

で、静的ページ hoge.ctp の内部に
$this->pageKeyword = 'そのページ,で推したい,キーワード!';

とか埋めとけば、レンダリングされるときに pageKeyword が設定されてれば、
生成されたページのkeywordsの先頭に入ってくれます。
動的な商品紹介ページとかだったら、テーブルに商品ごとのキーワード、JANコードなどを登録しておけるようにして、
viewに渡してあげれば、存在すればキーワードが優先で設定されるし、なければ標準のキーワードでページが生成される。
description も同等の方法で、同じ文章ばっかりを使い回されるのはもったいないので、やってあげれば効果的…かな。

pageRank高いところからの被リンクとかもそりゃ重要かもしれませんが、自力で出来ることからやった方がいいですね。

※もちろんこのロジックには長さチェックは入ってない。
キーワードが多(長)過ぎたら適宜カットするとかしないと逆効果。

わ・・・わかりにくい・・・ひどい・・・^^;;

土曜日, 11月 29th, 2008 | Author: kyosuke

※Linux上でしか動作しません。Windowsの場合はなんとかしてください。

LaTeXファイルを直接ファイルに生成して、dviにコンパイルして、pngとして取り出す。
ファイル名は $filename = time()にランダムな文字列を追加したもの(にしよう)。

PHP:
  1. $template = '
  2. \documentclass[12pt]{article}
  3. \usepackage{amsmath,amsthm,amssymb}
  4. \begin{document}
  5. \pagestyle{empty}
  6. $ I=\int_{0}^{ \frac {1}{2}} \frac{x}{\sqrt{1-x^2}} dx $
  7. \end{document}
  8. ';

latexがインストールされていることを確認したうえで、実行演算子 `` (バッククォート) を用いて

PHP:
  1. $randname = time();
  2. $filename =  WWW_ROOT . 'files' . DS . 'pdf' . DS . 'dynamic' . DS . $randname;
  3. $filename2 = $filename.'.tex';
  4. //ファイル書き出し
  5. file_put_contents($filename2$template );

PHP:
  1. //作業フォルダ指定
  2. $dir =  WWW_ROOT . 'files' . DS . 'pdf' . DS . 'dynamic' ;
  3.  
  4. //シェルコマンド生成
  5. $command = "/usr/bin/platex ".$filename;
  6.  
  7. //実行(cd でカレント移動しておかないと /webroot で作業をしようとする)
  8. $test = `cd ${dir} ; ${command}`;
  9. pr($test);
  10.  
  11.  
  12. //できあがったdviファイルをpngに変換
  13. //シェルコマンド生成
  14. $command = "/usr/bin/dvipng -D 720 -T tight ".$filename;
  15. //実行(cd でカレント移動しておかないと /webroot で作業をしようとする)
  16. $test = `cd ${dir} ; ${command}`;
  17. pr($test);

動的に$template を生成すれば任意の数式のpng画像が生成される。

生成された数式png

生成された数式png


かっこええ!

生成された画像をpdfに埋め込んでウマー。 かな

土曜日, 11月 22nd, 2008 | Author: kyosuke

開発中はdebug = 2 とかで行うと思うんですが、
いちいちデバッグや新機能追加の時に core.php変更するのもめんどくさいので、
リモートと、クライアントに応じて debug 値を動的に変更するようにちょっとだけいじります。

core.php内の $debug のあたり。
more...

Category: CakePHP, PHP, 未分類  | One Comment
水曜日, 11月 19th, 2008 | Author: kyosuke

よくある、ページ先頭へボタン

よくある、ページ先頭へボタン


scroll_top.gif とかで適当に保存しとく。
more...