プログラマ気分

メモや自分が思ったことを書く

スポンサーサイト

2014.08.06 Wednesday

一定期間更新がないため広告を表示しています

-|-|-|by スポンサードリンク

FuelPHP勉強会東京Vol.1で発表してきました

2012.07.09 Monday

FuelPHP 勉強会 東京 Vol.1
日程:2012/07/08(日) 13:00 〜 17:00
会場:VOYAGE GROUP 8F パンゲア さま

上記の日程で FuelPHP 勉強会 東京 Vol.1 が開催されました。

当初、勉強会に参加のみの予定でしたが、@mukaken さんに「何か発表しませんか?」とお声を掛けて頂いたこと、@peketamin さんの言葉に勇気付けられたこともあり、初めてではありましたが発表してきました。

発表資料

先程も書きましたが、人前での発表なんて初めてで、とても聞き辛い発表だったと思います。スライドもガンガン進めて行って、「はえぇ〜よ!」って突っ込み入っても仕方ないなと反省してるところです。

ですが、当初の目標として自分が持っている情報を少しでも共有出来ればと思っていたので、その点については達成出来たのではないかと思っています。(勝手に)

とにかく、良い経験が出来ました。

会場をご用意して下さった VOYAGE GROUP さま、スタッフや参加頂いた皆さま方に再度お礼申し上げます。

なお、FuelPHP 勉強会 東京は今後も月1ペースで開催していくそうです。

ご興味ある方は参加してみては如何でしょうか。
(そういえば、女性の参加を熱望されてました)

PHP00:57comments(0)trackbacks(1)by ニノミヤ カズノリ

LINE と仲良くなってみる(失敗)

2012.03.21 Wednesday

2014年8月6日追記
コードに関しては著作権侵害とみなされて削除された様です。

---- 追記ここまで ----

意味不明なタイトルです。

先日、アップデートされて PC でも利用可能になった LINE ですが、タブレット版は Web アプリケーションと言う事もあって、非公式ながら API が存在しています。

タブレット版:https://t.line.naver.jp/

Skype や、MSN メッセンジャーと違って退席中や取り込み中の様なステータスがないので、メッセージが来て、ある一定時間未読状態だったら自動で「退席中です。」と返信する様にハックしてみます。

環境

タブレット版の認証の仕組みから、自分は node.js を選択しました。
※選択理由は後ほど記述します。

node.js v0.4.10
使用モジュール:require v2.9.153

認証の流れ

1. セッションキーと RSA キーの取得

まずは下にアクセスして、セッションキーと RSA キーを取得します。
https://t.line.naver.jp/authct/v1/keys/line

▼取得した内容

session_key は、アカウントのメールアドレスとパスワードを組み合わせて使用します。rsa_key は、その組み合わせた物を暗号化する際に使用します。

2. 送信内容の作成

サーバ側に送信する内容は、先程取得したセッションキー(session_key)と、認証の為のメールアドレス、パスワードを組み合わせた文字列です。下の様に組み合わせます。

文字列の長さをアスキーコードにしてるのは、各文字列の長さを示す為かと思われます。

3. 送信内容の暗号化

LINE は、暗号化を JS のみで行なっていますが、独自の物ではなく、ライブラリとしてネット上で公開されている物を使用しています。
※自分が node.js を選択した理由は、このライブラリを利用する為です。

暗号化ライブラリ:RSA and ECC in JavaScript

node.js の場合、jsbn.js、rsa.js、rng.js、prng4.js を組み合わせて、モジュールとして使用します。
https://gist.github.com/2144164#file_rsakey.js
※コードが長いので、リンクのみ載せます。

var RSAKey = require('./rsakey.js'); などとして読み込んでください。

ライブラリを読み込んだ後は、RSAKey を使って暗号化します。先程取得した rsa_key をカンマ区切りで分割し、左から keyname, evalue, nvalue と言う変数に代入した後、下の処理を行なってください。

これで暗号化処理は終わりです。

4. 暗号化した内容を送信する

送信先は https://t.line.naver.jp/rest/v1/login とし、POST で送信してください。

送信内容は以下のとおり

【注意点】
送信の際は、ユーザーエージェントに注意してください。
一部のユーザーエージェントは、サポート対象外とみなされて別ページへ飛ばされてしまいます。
リクエストヘッダに User-Agent: Chrome などを指定して送信してください。

うまくいけば、これでログインが成功します。

ログインまでの例(node.js)

一つのアカウントしか認証出来ないと思うので、変な実装ですけど

自動返信

node.js と cron が使えるので、dotCloud を活用しました。
なお、dotCloud での cron の設定等は省きます。

自動返信用スクリプト

結果

よし、うまくいった!と思ったのですが、繰り返しリクエストを投げていた所為か、LINE からブロックをされたみたいです。仕方ないですね。南無

リクエストの投げ過ぎには注意しましょう。

2012年4月7日追記
アカウント停止されたっぽいです。

JavaScript13:00comments(4)trackbacks(0)by ニノミヤ カズノリ

【FuelPHP】バリデーションルール match_field について

2012.03.08 Thursday

【12/07/02】Validation クラスを継承しないやり方を追記しました。

FuelPHP のバリデーションには、他のフィールドと値が同じかどうかをチェック出来る match_field と言うルールが用意されています。

使い所としては、メールアドレスの入力確認、パスワードの入力確認などで使えます。

大変便利ですが、一点問題があります。
それは、入力時の値にしかマッチしない点です。

つまり、add_rule をフィルタとして扱った場合はマッチしないと言う事です。
実際の例を下に挙げてみます。

▼結果
string(72) "メールアドレス(確認)は、email1と異なっています。"
bool(true)

正しくマッチする様に、新たなルールを考えてみました。(以下の方法は、add_callable を使ってではなく、¥Fuel¥Core¥Validation を継承して実現させている点に注意してください。)

▼結果
bool(true)

match_validated_field は、バリデート後の値を元に比較を行いますので、結果は true となっています。

Validation クラスを継承してのルール追加が良い方法なのかは分かっていません。使用の際は自己責任でお願いします。

【追記:12/07/02】

よく考えたら、Validation#active を使えば、態々継承する必要なかった。

▼以下、修正後のソース

PHP22:32comments(0)trackbacks(0)by ニノミヤ カズノリ

【FuelPHP】カスタムメッセージを、フィールド毎に validation.php の如く設定してみる

2012.03.07 Wednesday

validation.php によるカスタムメッセージの設定は、決まった文言を出力する分には簡単でとても良いのですが、特定のフィールドで文言を替えたい場合には向きません。(変更したい Fieldset を取得して set_message する必要があるかと思います。)

例えば下の例では、お名前と性別を required に設定しています。

▼結果
string(39) "お名前を入力してください。"
string(36) "性別を入力してください。"

性別が入力式であれば良いのですが、多くは男性/女性の選択式です。すると、エラー文言としては「性別を選択してください。」が相応しいと感じます。

しかし、validation.php には既に required の文言が設定されている為、性別用の文言を追加する事ができません。大変不便です。

そこで自分が考えたのが次の方法

validation.php はそのまま。新たに言語ファイルを一つ用意します。

▼結果
string(39) "お名前を入力してください。"
string(36) "性別を選択してください。"

更に、別のルールにも他とは違う文言を設定したい場合は、下の様にします。

フィールドを追加したい場合は、下の様にします。

他に楽な設定方法があれば教えてください。

PHP23:24comments(0)trackbacks(0)by ニノミヤ カズノリ

dotCloud & PHP で、PATH_INFO を考慮した nginx.conf

2012.02.27 Monday

以下は PHP サービスを使用した場合の話です。

dotCloud のデフォルト設定では、PATH_INFO が取得出来ません。

■理由については下記を参照
DotCloud で PHP アプリを設置してみたときの色々 - 肉とご飯と甘いもの @ sotarok

index.php に PATH_INFO を動的に入れる方法も良いのですが、ここでは approot に仕込んだ nginx.conf で設定する方法を紹介します。

参考ページ:
https://bitbucket.org/lopter/symfony-on-dotcloud/src/6c7d0d7f3a7a/web/nginx.conf

これとは別に、dotCloud に WordPress を入れて、プログラム一式を wordpress ディレクトリに入れた場合の設定も調べたので、次いでにサンプルを載せておきます。正規表現の部分は改良の余地ありそう。

参考ページ:
WordPress › Support » Nginx Rewrite Rule for WordPress 3 (Multisite)

Check

-|00:15comments(0)trackbacks(0)by ニノミヤ カズノリ

calendar
    123
45678910
11121314151617
18192021222324
252627282930 
<< September 2016 >>
sponsored links
selected entries
categories
archives
recent comment
recent trackback
links
profile
search this site.

others
mobile
qrcode