カテゴリー: 技術

CodeIgniterのすすめ Active Recordクラス

投稿者:isc_blog

CodeIgniterについて何度かご紹介してきていますが
ここんとこSeasar2(Javaのフレームワーク。個人的にはJavaのフレームワークの中で一番好きかな。)っぽいなぁ~と思ったActive Recordクラスについて
ご紹介します。

Seasar2の中でもS2JDBCっていうSeasar2のO/Rマッパーで・・・
っていうか
まぁ、百聞は一見にしかず・・・ってことでこんなコードでDB検索を可能にしています。
[java]
List<Employee> results = jdbcManager.from(Employee.class)
.join("department")
.where("id in (? , ?)", 11, 22)
.orderBy("name")
.getResultList();
[/java]
これって実際のSQLは・・・・こんな感じ
[sql]
select T1_.ID, T1_.NAME, T1.DEPARTMENT_ID, T2_.ID, T2_.NAME
from EMPLOYEE T1_ left outer join DEPARTMENT T2_ on T1_.DEPARTMENT_ID = T2_.ID
where T1_.ID in (?, ?)
order by T1_.NAME desc
[/sql]
※SQL文内の「?」に 「11」「12」が入ってくる感じです。

これをCodeIgniterのActive Recordクラスで書くと・・・
[php]
$this->db->select(‘employee.id,employee.name,employee.department_id,department.id,department.name’);
$this->db->from(‘employee’);
$this->db->join(‘department’, ‘department.id = employee.id’,’left’);
$this->db->where_in(‘id’, array(’11’,’12’));
$this->db->order_by("employee.name", "desc");
$query = $this->db->get();
[/php]
こんな感じ(間違ってたらごめんなさい)
もしかしたらCodeIgniterの方が直感的かもしれない。

どちらももっと複雑なSQLの場合は直接SQL文節をかけちゃう
「S2JDBC」
[java]
List<Employee> results = (List<Employee>) entityManager.createQuery(
"select e from Employee e left join fetch e.department" +
" where e.id in (?1, ?2) order by e.name")
.setParameter(1, 11)
.setParameter(2, 22)
.getResultList();
[/java]

「CodeIgniter」
[php]
$this->db->select(‘(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4′) AS amount_paid’, FALSE);
$query = $this->db->get(‘mytable’);
[/php]

フレームワークを導入したせいでガチガチでどうしようもなくなる(またはフレームワークのせいでSQL構文を合わせないといけない・・・)というフレームワークではつかれるので、こういうところは柔軟であってほしい。

やはりいいフレームワークだと思います。

久々に書いたけどS2JDBCも強力だなぁ~
Java書きたくなってきたー
※Androidは書いてるか・・・

2011年8月2日

続・インデックスページ以外に記事一覧ページを作るときのコード-サンプルあり

投稿者:isc_blog

前回の記事「インデックスページ以外に記事一覧ページを作るときのコード」のデモ作りました。

すげーテキトーですがw

http://gti.jp/wp/
↑こちら

メニューの
ホーム サンプルページ 記事一覧
から「記事一覧」を選んでください。

すると前回の記事のコードだけのページをテンプレートにした固定ページ(固定ページ作っただけでテンプレート設定のみHTMLは書いてないでOKです。)が現れます。

おもいっきりデザインがないので凄まじく貧素なページになっています。
あと、テスト的なWordPressなので記事がなくてスミマセン。

そのうちテキトーに整理しておかないと・・・

これ、なにに使うのかな・・・と思ったんですが
テンプレートのインデックスページはゴリゴリのトップページにしてしまった場合に有効かと・・・

2011年7月31日

WordPressでインデックスページ以外に記事一覧ページを作るときのコード

投稿者:isc_blog

インデックスページ以外にも
カテゴリ別とか新着5件とかじゃなくて普通に普通の記事一覧がほしい場合のコードです。
これは固定ページではなくて
テーマの中に「page-○○○.php」みたいに突っ込むファイル内に記述します。
その上で固定ページなどを作りテンプレートに指定します。

残しておきます!
[php]
<?php
/*
Template Name: New Content
*/
?>
<!– ↑テンプレート名を書かないと固定ページのテンプレートとして表示されません。 –>
<div id="post-entry">
<?php $paged = get_query_var(‘paged’); ?>
<?php query_posts("paged=$paged"); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="post-meta" id="post-<?php the_ID(); ?>">
<div class="time">
<div align="right"><span class="posted-aut-cat">
<?php the_date()?> <?php the_time() ?>
</span></div>
</div>
<!–title–>
<div class="btitle"><h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_title(); ?>
</a></h2></div>
<div class="posted-aut-cat"></div>

<div class="post-content"><?php the_content(‘>>>続きを読む’) ;?></div>

<div class="post-commented"></div>
</div>
<div class="post-fixed"></div>
<?php endwhile; ?>
<div class="post-fixed"></div>
<div class="post-navs">
<?php if(function_exists(‘wp_pagenavi’)): ?><?php $wp_query->max_num_pages = 3; ?><?php wp_pagenavi(); ?><?php else : ?><?php posts_nav_link(); ?><?php endif; ?>
</div>

<?php else: ?>

<h3>まだ記事はありません</h3>

<?php endif; ?>

</div>
[/php]

デモサイトとかつくって見せられるようにしようかな・・・

2011年7月30日

WordPress メールでの投稿について

投稿者:isc_blog

最近WordPressの作業がだいぶ多くなっています。

で、メール投稿したい・・・という御要望にお応えしようとWordPressのデフォルト機能である
「メールでの投稿」を使用しようと思いました。

ようし!設定!設定!と思って
「設定」→「投稿設定」→「メールでの投稿」※WordPress3.2.1です。
上記に設定を記述したわけです。

メールサーバー、ログイン名、パスワード、メール投稿用カテゴリーの初期設定

すべて設定して「いざ!メール送信!」

・・・・あれ?投稿されない。
ダッシュボードの「投稿→投稿一覧」にも無い!

で、調べたところ・・・・こんな記事を発見しました。
WordPress 2.7 のメール投稿機能を使う|futuremix

こちらによると
送信した後で
「http://~ブログのURL/wp-mail.php」にアクセスしないと「いけません!」とのこと。
上記の記事ではWordPress2.7でしたが3.2.1においても同様でした。
上記記事内のメールタイトルを日本語で入れると文字化け・・・ということは解消されているようです。

wp-mail.php にアクセスすると
作成者は ○○○@xxxx.jp です。
みたいに表示されるため、実に危険・・・・

上記記事にあるように「wp-mail.php」はリネームまたは削除した方が無難ですね。
その上で、phpスクリプト内の
[php]
echo ‘<p>’ . sprintf(__(‘Author is %s’), $author) . ‘</p>’;
[/php]
のような記述の箇所はすべてコメントアウト(先頭に//をつける)した方がいいかもしれません。

あと、いちいち[wp-mail.php]にアクセスしないでいいようにcron設定しておけば投稿しておいて自動的に・・・って感じになります。

2011年7月27日

eclipseからSubversionで管理しているプロジェクトのエクスポートが出来た。

投稿者:isc_blog

eclipseでプロジェクト管理していて
Subclipseプラグインなんかを使っていて
いざ納品!っていうときにSubversionのファイル・フォルダが満載で「嫌だなぁ」と思っていたらこんな機能があったので覚え書きチックに書き留めておきます。

eclipse上の納品物を出したいプロジェクトを右クリック

Team (日本語版は読み替えてください)

Export (日本語版は読み替えてください)

すると、出力先を聞かれるので適当なところを選択して「OK」。

プロジェクト名のフォルダが出力されているので中身を見てみると・・・

.svn やら なんやらのファイル・フォルダが無い!
スッキリ!

普通はこんなことは知っているのか・・・
初めて知ったw

2011年7月26日

言語によるデータ処理の違い

投稿者:isc_blog

@ITで興味深い記事があったのでご紹介します。

特集:人気言語でのデータ処理の比較

C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?

こちらの記事では
それぞれの言語でのデータ処理について記述があり
言語の差が実際に見られます。

こういった記事が好きな私はちょっとマニアだな(自負)

2011年7月25日

WordPressプラグイン「Throws SPAM Away」に設定ページを付けました。

投稿者:isc_blog

先日公開したスパム対策プラグインに下記設定項目を付けたくて設定画面をつくることにしました。
・日本語が最低何文字含有している必要があるか  文字数
・日本語を含まない(最低文字数以下の場合含む)場合にちらっと出るエラー文言から元の記事に戻る時間(ミリ秒)

こちらを参考に設定ページを付けることにしました。

設定ページの作成|WordPress Codex 日本語版
感謝っ!

この設定付きバージョンを Version 1.2 として公開しました。
是非、バージョンアップしてください!

インストール後は左側のメニューから「Throws SPAM Away」メニューをクリックして設定画面が現れます。

海外からのスパム投稿にお悩みの方はぜひともインストールしてみてください。
こちらからどうぞ↓↓↓
Throws SPAM Away

2011年7月24日

モバイルSuica移しました(au)

投稿者:isc_blog

早速、前のケータイに入れたままだったモバイルSuicaをICカード入れて起動!

会員メニューから「機種変更」を選択

機種変更手続きしちゃうとそのケータイではモバイルSuicaが使えなくなるので注意!

ここまでやったらAndroidケータイ(IS04です)にICカード入れ直して

モバイルSuicaアプリをインストールして起動します。

それで機種変更のログインからログインすると…移行完了!

簡単でした!

ただし、前のケータイがない場合は
退会→再入会
みたいで500円くらい掛かる!?らしいです。

2011年7月23日