Archive for the Category » CakePHP «

月曜日, 11月 30th, 2009 | Author: kyosuke

とある企業名

cakephpで 登録されてたデータを重複チェックをするのに、
count とかで集計して、2以上ある場合のみ取得したい場合、
そのままだと、全部取得して死んでしまいますので、
groupオプションに無理矢理HAVINGを噛ませる方法があるらしい。

PHP:
  1. $options = array(
  2.     'conditions' => array(),
  3.     'fields' => "name , count(Company.name) as cnt",
  4.     'group' => 'Company.name HAVING count(Company.name)>= 2',
  5. );
  6. $dupNames = $this->Company->find('all' , $options );

気持ち悪いけどとりあえず取得出来てるのでコレで逝きましょう…。

※このケースだと、企業名の重複はデータとして存在するのでvalidate では弾いてない。

日曜日, 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...

火曜日, 1月 20th, 2009 | Author: kyosuke

Cakeも1.2がやっとstableになった。安心して開発を続けられる。

フォーラム見てたら、チートシートが出ていますよーと、書き込みが。
Cake1.2チートシート
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

早速プリントアウトして新しいプロパティとか試してみるのですよー

全然使ったことないのがいっぱいで期待と恐怖でいっぱいですよー
これが、知への勇気ってやつか!!

金曜日, 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...

金曜日, 11月 14th, 2008 | Author: kyosuke

さくらインターネットで、複数ドメイン運用すると、logが全部一緒くたになってしまいます。

log 分けてくれって言っても、断られるらしいので、自前でアクセス解析もどき。

※アクセス解析サービスはもっと高性能のライブラリとかが提供されていますので、

スクラッチで書くときはあくまで学習用途として使いましょう。

more...