Phalconのモデル周りの基本

Phalconでレコード保存

$post = new Post();
$post->title = 'new post';
$post->content = 'hello world';
$post->save();

Phalconでレコード検索

$posts = Post::find(['author' => 'tanaka']);
foreach ($posts as $post) {
echo $post->title, "\n";
}

取得した$postsはResultsetと言って$posts->getFirst()とかできる。特に便利そうなのは$posts->filter()とかだね

Abstract class Phalcon\Mvc\Model\Resultset — Phalcon 1.3.1 ドキュメント

マニュアルはすべて英語なので翻訳してもらったりしないとねー

Abstract class Phalcon\Mvc\Model — Phalcon 1.3.0 documentation

Phalconに実装されているバリデーター

Phalconのバリデーションについてまとめる

PresenceOf

フィールドの値がnullではなく、空文字列でもないかチェックする。データベースにNOT NULLを設定していると$model->save()で自動的にこのバリデーションが実行される。

その他

  • Email メールアドレスか?
  • ExclusionIn 禁止リストに含まれているか?
  • InclusionIn 許可リストに含まれているか?
  • Numericality 数値か?
  • Regex 正規表現にマッチするか?
  • Uniqueness ユニークか?
  • StringLength 文字列の長さチェック
  • Url 正しいURLか?

Thanks

はてなブログのAPI (AtomPub) を利用して自動投稿や複雑なインポートを行う

はてなブログはAtomPubという仕組みによって外部アプリケーションから記事を投稿したり編集したりできる。つまりTwitter APIで外部アプリからツイートするみたいなもん。

私が開発しているCMSはMT形式のエクスポートができなかったし、Markdown記法を継承した独自記法だったのではてなの公式インポート機能ではインポートできない。したがってRubyで記事データをはてな用に加工しながらAtomPub経由でインポートするRubyのコードを書いて一括インポートといった感じで実際に使った。

はてなブログAtomPub - Hatena Developer Center

require 'atomutil'
POST_URI = "https://blog.hatena.ne.jp/hatenaID/example.hatenablog.com/atom/entry"
auth = Atompub::Auth::Wsse.new(
username: 'hatenaID',
password: 'はてなのダッシュボード->設定->詳細設定のAtomPubの項にあるAPIキーを入れる'
)
client = Atompub::Client.new(auth: auth)
entry = Atom::Entry.new(
title: post.title.encode('BINARY', 'BINARY'),
content: post.content.encode('BINARY', 'BINARY')
)
p client.create_entry(POST_URI, entry);

ただAtomPubも含めてはてなは24時間に100記事までしか投稿できないっぽい。一回で最大100件しか投稿できないので、1000件とかの記事をはてなブログに移行したい人はめんどそうだ。はてなの公式のインポートは無制限とかだったりするかもしれないけど。

CentOS7へJavaをインストールする

Javaのインストール

yumでインストール可能

sudo yum install java-1.7.0-openjdk

バージョンを確認

java -version

インストールを確認した

java version "1.7.0_71"
OpenJDK Runtime Environment (rhel-2.5.3.1.el7_0-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

Javaの開発環境の構築

開発もCentOS7上で行うならコンパイラもインストールする

sudo yum install java-1.7.0-openjdk-devel

Javaのテストファイルを作成する

// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
}
}

javacでコンパイルする

javac HelloWorld.java

HelloWorld.classが生成された

ls
HelloWorld.class  HelloWorld.java

java HelloWorldで実行する

java HelloWorld
> Hello world

最新の環境を構築するには?

ちなみにyum serachで最新のopenjdkを確認できる

yum search openjdk

TerminalのVimでカラースキーマを適用する

Mac上のTerminalでカラースキーマを適用するには256色に対応したカラースキーマを利用する。私のdotfilesをcloneして使ってみてもらえば、ちゃんとTerminalのVimでもシンタックスハイライトが適用されるだろう。ちなみにTerminalの詳細設定から256色に対応するよう設定しておくこと。

git clone https://github.com/takinoue/dotfiles

JavaScriptのinstanceof演算子

左のオブジェクトが右のクラスのインスタンスであるかどうか調べられる

var Foo = function () {
this.x = 10;
this.y = 10;
this.z = 10;
}
var obj = new Foo();
var date = new Date();
console.log(obj instanceof Date);
console.log(obj instanceof Foo);
console.log(date instanceof Date);
console.log(date instanceof Foo);
// false
// true
// true
// false