サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
tomstay.hatenablog.jp
CakePHPでfindとかを使うときにrecursiveでアソシエーションするレベルを制御できるっていうのをつい最近知ったんですが、belognsToのテーブルを2階層分取って来たい時でもSQLの発行が3回以上されてる。なんか使い方間違っているのかしら。 えごリブでもいくつか使えそうな部分があると思っているんですが…、どうしたものか。 具体的には下記のような感じのテーブルがあるとします。 user_items(UserItem) id item_id user_id 1 1 1 2 3 1 items(Item) id name category_id 1 hoge 1 2 fuga 1 3 bar 2 categories(Category) id name 1 book 2 game user_itemsのアソシエーション var $belongsTo = array("Item")
CakePHPでCSRF対策するにはSecurityコンポーネントを使うと簡単にできるらしいけど、色々ぐぐってみるとなかなか一筋縄でいかなそうであるのと、どうもhiddenの値を書き換えるとエラーを返してくれる高機能がもれなくついてくるらしかったので、自前でトークンを作るコンポーネントを導入しました。 といっても下記URLにまさに探してたようなものがあったので、それを参考に作成しました。ほぼまんまですけど。 http://d.hatena.ne.jp/cake67/20091217/1261019930 しかも機能としてはややダウングレードしてる部分もあったり。 とりあえずものすごーく単純に、下記のような仕様に。 コンポーネントは渡されたトークンをチェックしてtrue/falseを返すだけで、エラー時の処理はaction,controller単位でお任せする。 ヘルパーはトークンを吐き出す
CakePHPさんはControllerを作成する場合は基本的にAppControllerを継承させて作成するわけですが、AppConroller→他の共通のController→HogeControllerみたいに1つ別の共通コントローラを継承させたいってときがあって、かなーりはまったのでメモ。 ただ、激しくバッドノウハウ。 で、何にはまったかというと、AppControllerに共通のコンポーネントやヘルパーを書いて継承した場合は、HogeControllerに書いたコンポーネント、ヘルパーとかはちゃんとマージしてくれるんですが、自分で作ったコントローラを継承させた場合は親のコンポーネントやヘルパーを上書きしてくれるという素敵仕様だった。ひどくね? というわけでControllerのソースを見に行ったら__mergeVars()で、AppControllerの内容をうまくマージさせてる
ボタンを一列に並べて、画面からはみ出るようだったら折り返すってビューを作りたかったんですが、JavaのViewで実現するのに妙案が浮かばず、じゃあWebViewで出しちゃえばいいじゃない!ってことで、JavaScriptとどうやって連携するのか調べました。 ちなみに何を作ってるのかというとタグを並べて、それを押したらEditTextに文字列を流し込むって画面。はてブアプリをパクr…、参考にして。あれかっこいい。あれもWebViewで実現してるんでしょうか。 で、JSの連携は説明はめんどいので実際のソースコード。 まずはlayout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation
今jQueryMobileの勉強を兼ねてつぶあにのスマートフォンサイトを作っているんですが、どうせならアプリと連携してみようということで調べました。 やりたいこと ・特定のURLクリック時にアプリをインストールしている場合はアプリケーション選択ダイアログが出て、ブラウザで遷移するかアプリを起動するか選べる ・アプリをインストールしていない場合は普通にページ遷移 具体的に言うと、オンエアー中のアニメのタイムラインを見に行こうとするとアプリケーションに移動するか、スマフォサイトで用意したページに行くか選べるようにしたいってこと。 まず、AndroidManifest.xmlを変更 <activity android:name=".Test" android:label="@string/test.title"> <intent-filter> <action android:name="and
前回までは全てローカル内で完結してましたが、外からもいじれるようにしておきたいので、 ドメインを取ってSSHで接続できるようにしました。 今のところはWebサーバとしては使うつもりはないので別にIPアドレスさえ分かれば問題ないんだけど、 毎回変わってめんどいので、無料でそのへんを何とかしてくれる方法があるみたいなので、それを利用しました。 インフラ面は(それ以外もだけど)まったくの素人なんで、なんかセキュリティ的によろしくないことをしているかもしれません。ご指摘があればそっとやさしく教えてください。 1.Macのファイアウォール設定 左上りんごマーク→システム環境設定→セキュリティ→タブのファイアウォール 「特定のサービスおよびアプリケーションにアクセスを設定」にチェックを入れる 現状だとリモートログイン(SSH)しかないはずです。 2.プライベートIPを固定する これは使ってるルーターと
jQueryMobileをちょろっと使ってみました。 今後も使う機会が多いのでまとめときます。きっとあとで追記したりする。 ちなみに使ったバージョンは1.0b1 参考サイト http://dev.screw-axis.com/doc/jquery_mobile/ http://c-brains.jp/blog/wsg/11/04/14-023818.php http://hisasann.com/housetect/2011/06/jquerymobile_1.html 基本中の基本 data-role="page"で囲む 基本的にはdata-role="header" , data-role="content" , data-role="footer"で区切る 1ページに複数のdata-role="page"を持つことも可能(どういうとき使うの?普通に別ページに飛ばすときとどう作り分ける
絶対使うけど、絶対忘れそうなのでメモ。 オプションメニューにアイコンを指定するときに、標準のシステムアイコンを使用するやり方。 android:icon="@android:drawable/ic_menu_add" 使えるアイコンの種類は下記サイトに載ってる。 Javaでメニューを設定する場合のやり方も載ってる。 http://www.taosoftware.co.jp/blog/2008/11/android_5.html あと自作でアイコン作る場合はジェネレータがあった。ちょっと画像書き出してみたけど超便利そう!まぁアイコン作る技術はないわけだが。 http://www.androidicongenerator.net/home_ja.html
追記(2011/4/7) なんかAndroidさんBlowfishサポートしてないくさい\(^o^)/ 他の暗号化形式はいけるんだろうか…。久々にきれちまったよ…。 アンドロイドアプリを作る勉強をスーパースローペースで進めているんですが、 飽きてきたので、えごりぶ用の作るとなるとAPI作らないといけないなーと思い、仕様をモヤモヤと考えていたんですが、暗号化で通信する必要がありそうな箇所があったので、PHPで暗号化する方法を調べました。 PHPはmcryptっていう拡張モジュール(使ってるのはPHP5.3なので最初からmcryptは入っているようでした。)で主要な暗号方式をフォローしているようですが、パディング方式が選べず、ZeroPadding方式になってしまうらしい。パディング方式がなにかってのはggr。というか僕も説明できるほど理解してないけど。 Javaの方はというとパディング方式が
忘れそうなのでメモ。 エミュレータの起動元のマシンを見に行く方法 開発環境でサーバを立ててそこのAPIを叩きにいく場合はエミュレータではlocalhostと入れるとエミュレータの中を見に行ってしまう。 10.0.2.2を指定してやると良い。 画面の回転禁止 Androidは画面を傾けると勝手に横向きにしたり、縦向きにしてくれたりするけど、縦固定、横固定にしたいときはAndroidManifest.xmlの指定したいactivityに下記を追加 縦固定 android:screenOrientation="portrait" 横固定 android:screenOrientation="landscape" 画面が回転したときに回転する前のデータを保存する Androidは画面の向きを切り替えるときは初期化するようで、onCreateからやり直している。 これはつまり、onCreateのとき
はい、タイトル分かりづらいですね。まぁ前回の続きなんですけど。 AndroidのLinearLayoutとかを使って横にViewを並べると、長すぎる奴はそのまま外に出しちゃったり変な風にクシャッとしてくれたりして自動で折り返してくれない。 でもボタンを横に並べて、画面からはみ出そうになったら折り返して表示したい!しろよ!って思いまはしたものの、よい案が浮かばなかったのでWebViewと連携してその描画はCSSでやればいいんじゃね?って思って作っていたんですが、どうもレスポンスがよろしくない。 気晴らしにGジェネやっていたら、相対レイアウト使えばまさか!?って思いついて早速やってみたら出来たのでメモ。 まずはlayout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and
Andoridの入門書をざっくりとですが、一冊ほど目を通して、なんとなーく概要がつかめたので、少しずつえごリブアプリを作ってます。 Androidのシミュレータ重いってレベルじゃねーぞ! で、えごリブはTwitterを使って認証してるのでAndroidでもOauth認証させる必要があったので、どうやるのか調べてみました。 基本的な流れはWebとあまり変わらない。 TwitterFactory#getInstanceでtwitterインスタンスを作成(必要に応じてConsumeKeyとConsumeSecretKeyをセット) twitter#getOauthRequestTokenでリクエストトークンを作成 requestToken#getAuthorizationURLで認証用URLを取得 認証画面に飛ばす(ブラウザを起動させる) 認証に成功したらアプリケーションに戻ってoauth_ve
前回の設定でローカル内のWindowsからMacにリモートログインできるようになりました。 今度は公開鍵と秘密鍵を作って鍵認証のみでログインできるようにします。 下記サイトを参考にしました。 http://d.hatena.ne.jp/cantucci/20100724/1279932989 というかほぼそのままだけど。ちょいと長くなりそうなので追記で。 1.Windows側で鍵を作成 鍵を作成するために下記ツールをダウンロード。 http://yebisuya.dip.jp/Software/PuTTY/ 「puttygen.exe」を開いてウィンドウ下の生成する鍵のビット数を2048にする。生成する鍵の種類がSSH-2 RSAになっていることを確認して生成ボタンをクリック。 鍵を作り出すのでマウスをグリグリする。 鍵のパスフレーズにパスワードを入力。 公開鍵の保存、秘密鍵の保存をする。
ちょいとはまったのでメモ。 ListViewの中でどうしてもボタンを並べて、ボタンが押されたらActivityに通知させたかったのですが、なかなかスマートな方法が見つからなかった…。 結局OnClickListenerを実装させたListViewのサブクラスを作って、adapter#getViweの中でリスナーの登録をさせることによって実現しました。 具体的なソースは下記のような感じ。 まずレイアウト。サンプルなんで適当。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:
CakePHPマニュアルを見ながらちょこちょこと何かを作っていますが、フォームのGET,POSTでコントローラに渡されてくる値のとり方が違うので躓いたのでメモ。 POSTの場合 $this->data["モデル名"][key] GETの場合 $this->params["url"][key] Ajaxの場合(jQueryのPOST) $this->params["form"][key] 見事にバラバラとかなんなの…。試してないけどAjaxでGET通信の場合はGET通信と同じなのかな? すごい気持ち悪いけどこれが仕様なんですかね。 渡され方を見るとPOST通信の場合もViewでなんかすれば、Ajaxと同じ渡され方になるような気がするけど。 あとjQueryとPHPを両方編集してると頭おかしくなりそう。$打つのめんどい。まじ。 追記 フォームでモデルを指定すると直接データに入ってくるだけだった
※2011/3/24追記 http://sourceforge.jp/projects/pdt-tools/releases/?package_id=9452 コメント欄で教えてもらいましたが、ここからPatched plugin for eclipse-php-helios-SR2の3つのファイルをelipseのpluginに上書きインストールしてeclipse -cleanで起動すれば2.2.1以降でもコメントアウトできました。ありがとうございます!ていうか変更履歴みたら普通にバグだったんじゃん…。みんなあまりctrl+/を使わないってことかしら。まぁ確かにあんまり使わないかもしれないけど無いと不便すぎじゃん! 追記ここまで 地震とは無関係に家で使ってるeclipseのPDT2.2.1にしてみたらなんかコメントの切り替えのショートカット(Ctrl+/)が効かなくなって1時間くらい立ち往
このページを最初にブックマークしてみませんか?
『tomstay's memo』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く