サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
happyquality.com
PhpStormのLaaravel Pluginを入れたらコード補完が効くと思っていたのですが違うのですね。 調べてみたらbarryvdh/laravel-ide-helper: Laravel IDE Helperというのがあるようです。 冒頭のquick introduction/explanation!の動画を観たら、laravel-ide-helperをインストールしなくても_ide_helper.php を入れるだけでもコードが効くようなので両方試してみました。 _ide_helper.phpを入れる 動画のように、をLaravelのルートディレクトリに入れるだけ。この記事では/var/www/htmlとします。 cd /var/www/html wget https://gist.githubusercontent.com/barryvdh/5227822/raw/4be028
最近はほとんどの案件でAWSを利用しています。 WEBサーバはもちろんAmazon EC2 (クラウド上の仮想サーバー Amazon Elastic Compute Cloud)を利用しますが、メール送受信に関してはEC2を利用せず、さくらのメールボックスを利用しています。 その理由としては、自前でメール送受信のサーバを用意すると、 セキュリティ対策に手を煩わされる アカウントの管理に手を煩わされる ような問題があります。 自前で運用できなくもありませんが、さくらのメールボックスにかかるわずかなコスト*1 でこれらの問題を解消できるのでこうしたサービスを利用しています。 今回は、さくらインターネット以外で取得したドメインでさくらのメールボックスを利用するための方法をメモします。 さくらのメールボックスでの設定 さくらインターネットの管理画面にログインして、左メニューから「ドメイン設定」を選
macを使い始めて気づいたのですが、macで作成したcsvファイルをfgetcsvで読み込もうとすると、改行コードを無視して1つの配列を返してしまう問題があります。 回避するためには以下のようにすると簡単。 ini_set('auto_detect_line_endings', 1); // macの改行コードに対応 $tmp = fopen($path, 'r'); while ($csv[] = fgetcsv($tmp, '1024')) {} 過去にショッピングカートの配送先をCSVから読み込む機能を作った時に、時折読み込めないという声を聞いたのはこれだったのか・・・。 こんな基本的なことを知らなかったのはショック。まだまだだなあ。 参考:Macのファイルでfgetcsvなど – tkoshima.net
お客様の案件の場合、認証機能を持たせないことはまず無いので毎回お世話になるのがAuthコンポーネント。 組み込みのつど、他のプロジェクトからコピーしては貼り付けてるので細かいところを忘れてしまって「これってどうするんだっけ」ってことが結構あります。 そんなわけで今回は、認証機能を提供するAuthコンポーネントでパスワードをvalidationするためのメモ。 まずはちょっとおさらいから。 ※CakePHP1.3系の話です。*1 コンポーネントのフックメソッドについて Authコンポーネントの前に、コンポーネントのフックメソッドについておさらいしましょう。 調べようと思ったら素晴らしいまとめがあったので、こちらを参照しましょう。 参考:CakePHP 目で見るフックメソッド – Shin x blog Authコンポーネントの場合は、initializeとstartupが使われていますが、特
おそらくCakePHP2系になってからの機能だと思うのですが、コンポーネントやヘルパーの設定オプションに「className」というオプションが追加されました。 従来であれば、例えばSessionコンポーネントに手を加えるときには、CakeディレクトリにあるSessionコンポーネントをappディレクトリにまるごとコピーして、appディレクトリのSessionコンポーネントを修正するという方法をとっていました。 この方法のデメリットは、コアのアップデートでコンポーネントのバージョンが上がっても反映されないこと。それと、ソースの見通しが悪いことです。*1 もう一つの方法としては、Sessionコンポーネントを継承してMySessionコンポーネントを作ってしまうという方法がありました。この方法であれば前述の問題点は解決されるのですが、使用するときに$this->MySession->hoge
自作のコンポーネントでモデルを使うときはどうしていますか? コントローラでusesしているモデルであれば class HogeComponent extends Component { public function initialize(Controller $controller) { $this->controller = $controller; } // コントローラでusesされたモデルを使う public function test() { $this->controller->{モデル名}->find(...); } } とこんな感じで使えますが、controllerと書かなければならない分記述が長くなるし、呼び出し元のコントローラでusesしていないとエラーになってしまいますよね。 なので、最近は自作のコンポーネントに以下のようなメソッドを作って利用しています。 priv
わりと急ぎの案件でシステムのデータベースをPostgreSQLからMySQLに置き換えるお仕事をいただきました。 かなり古いソースで、Pear::DBやPDOではなくPostgreSQL関数を利用しているため、単純なDBの移行ができません。しかも基本的に手続き型のソースなので、いたるところにクエリが散在していて修正箇所は数千箇所に上ります。 ここまでくると1から書き直したほうが良さそうですが、なにしろ仕様書も残っていないシステムなので短期間で新たに実装し直すのはちょっと怖いですよね。 そのため、まずは手続き型の現在のソースを残してDBの置き換えと、緊急で修正したい箇所の修正を行ったあと・・・時間を掛けてCakePHPでリニュアルすることになりました。 PostgreSQLとMySQLではDB自体の作りが異なるのと、PHP側の関数が完全に互換しているわけではないので、その違いを埋めるための修
happyquality/CakePHP-Article-Plugin ? GitHub プラグインをbakeから作成する方法です。 2013-02-02追記 Articleプラグインにはコントローラやビューはありません。 プラグインのベースファイルをbakeする プラグインの作成を手作業でやろうとすると、ディレクトリや基本ファイルを作成するのが手間ですが、ここはbakeでサクッとやってしまいましょう。 Articleという名前のプラグインをbakeするにはlib/Cake/Console/cakeにパスを通したコンソールで cake bake plugin Article でOKです。 Welcome to CakePHP v2.2.4 Console --------------------------------------------------------------- App
macを買って1週間。ようやくWindowsの頃にできていたことが一通りできるようになりました。 開発環境を作るにあたって一番苦労したのがGitの導入でした。 Windowsならmysysgitで何も考えなくてもGit環境を作れましたがMacではなんかややこしい。 Gitのインストールまでは問題ないのですが、コード補完とブランチ名を表示させるまでにMacPortsを3回インストールし直しました…orz 参考サイト 参考にさせていただいたサイト Gitとプロンプト変数PS1とbash_completionと – kanonjiの日記 古くなったMacPortsを再インストール – Shin x blog MacPortsのインストール MacPortsのインストールにはXCodeが必要になるので、先にダウンロードしてインストールしておきます。 The MacPorts Project — D
10年以上使い続けてきたであろうWindowsXPを、いまさらWindows7に移行したお話です。 いろいろな思いがあってなかなかWindowsXPを捨て切れなかったけど、それを書くと原稿用紙20枚くらいかけそうなのでやめておきます。*1 過去は振り返らない。明日だけを見据えて生きていこう。そう決めました。 ここではXPから7に移行した際に調べたこと、つまづいたことなどをメモしておきます。 新PCのスペック Facebookにも書いたのですが、SSDやメモリが非常に安くなっていて驚きました。 CPU : Core i7 2700K BOX CPUクーラー : ENERMAX ETS-T40-TB マザーボード : P8Z68-V PRO/GEN3 ビデオカード : SAPPHIRE HD7750 1G GDDR5 メモリ : Cetus DCDDR3-16GB-1333 [DDR3 PC3
それに対して、さくらのVPSは非常に優秀です。 ApacheやMySQLのチューニングが自由にできますし、サイトの数も調整できます。もちろん1サイトで使ってもOK。 レンタルサーバからVPSに移行したサイトがいくつかありますが、重くてトップページを開くのに10秒近くかかるようなサイトでも、移行したらサクサク動いています。 VPSも仮想専用サーバなので1台のサーバを複数のVPSで共用しています。 ただ、各VPSごとにCPU(時間?)やメモリが振り分けられているので、他のVPSと干渉することはほとんど無いんでしょうね。・・・多分。 そんなわけで、このHappyQualityもそろそろVPSにしようかなぁと思っているわけです。 ファイルコピーが大変 前置きが長くなりましたので、今回はサーバ間のファイルコピーに絞りましょう。 皆さんがブログを別のサーバに移行するとしたら、どうやってファイルを移動さ
PhpStormのショートカットキーもかなり身に付いてきて、以前の環境よりも効率よく開発できるようになりました。 今回はよく使うショートカットキーを紹介します。 英語ができる方はPhpStorm ReferenceCardを参照してください。 よく使うショートカットキーの中でも使用頻度の高いものは太字にしてあります。 たまにしか使わないけど忘れたくないというものは薄地にしました。 Editing Ctrl+Space コード補完 入力中の文字と状況にあわせて、コード補完の選択しが表示されます。 Ctrl+Q クイックドキュメントの参照 PHP標準関数なら関数ヘルプを表示し、そうでなければPHPDocsなどから引数や返り値、説明などをポップアップで表示します。 Ctrl+コードをマウスオーバー オブジェクト、クラス、関数など、指定したコードの種類によって簡易的な説明を表示 関数の引数を調べた
jQuery Mobileとはスマホ向けのフレームワークのことで、これを使うとスマートフォンやタブレットに(まるでネイティブアプリのように)最適化されたデザインやUIを簡単に実現することができます。 さらに、PCはもちろんiOSやAndroid、Windows Mobileなどのモバイルプラットフォームにも対応していて、どの端末でも変わらないUIを実現してくれます。 現在開発している業務系のWEBシステムでは、PCの他にスマホやタブレットでの利用を想定しているためjQuery Mobileを使ってみました。 まだ使い始めたばかりでよくわからないのですが、「CakePHP + jQuery Mobileでの注意点 – すたら日記」や「the405nm ? cakePHP と jQueryMobile でハマった」などを読むと、問題もあるようです。 そんな時は決まって「ajaxEnabled
PhpStormでCakePHPのコード補完を効かせる方法です。 CakePHP2系の方法です。CakePHP1系の場合はこの記事の元ネタのHwarf Nugen: Configure PhpStorm to Auto-complete CakePHP Models, Views, and Controllersをご覧ください。 CakePHPコード補完のための準備 CakePHPのコード補完を効かせるためにはまず準備が必要です。 まず以下の2つの作業を行なってください。 ConsoleとTestsディレクトリをプロジェクトの対象からはずす プロジェクトの対象から外すディレクトリは以下の2つです。 /lib/Cake/Console /lib/Cake/Test 【手順】 Ctrl+Alt+Sで設定ダイアログを開く。 Project SettingsセクションのDeployment->Di
CakePHP1.3では、ビュー以外の場所でヘルパーを使う場合に以下のようにすれば使うことができました。 hogesController App::import('Helper', 'Html'); $this->Html = new HtmlHelper(); $linkText = $this->Html->link("topページ", "/"); ところがCakePHP2系では、この記述ではHelperを利用することができません。 正解はこう。 App::uses('HtmlHelper', 'View/Helper'); $this->Html = new HtmlHelper(new View()); $linkText = $this->Html->link("topページ", "/"); この正解にたどり着くまでに色々失敗をしたので、その失敗の過程をお見せしつつ解説します。
以前の開発環境では、PHPファイルの編集はPHPEclipse、CTPファイルやビューファイル*1 はDreamweaverを使用しており、リモート環境へのアップロードは使い慣れていたDreamweaverを利用していました。 Zen Codingの使い勝手の良さや優秀なコード補完のお陰で、PHPファイルだけではなくビューファイル*2 もPhpStormで編集できるようになったので、アップロードもPhpStormから行うようになったのですが、これがまた大変優秀です。 まず素晴らしいのは、サーバ同期機能です。 専用のダイアログが開き、どのファイルがリモートファイルと異なるのかディレクトリ構造が把握できる形で一覧化してくれます。 そして更に嬉しいのは、ファイルを選択するとローカルとリモートファイルのdiffを下のビュアーに表示してくれるところです。 Dreamweaver(CS3)の同期機能で
さくらのVPSにSMTPサーバを立てたんですが、SMTP-AUTHは暗号化しなきゃだめだろって事で、調子に乗ってCRAM-MD5にしたらQdsmtpのSMTP-AUTHはPLAINのみの対応でした・・・orz そこで今回は、QdmailをちょこっとイジってCRAM-MD5に対応させる方法を紹介します。 CRAM-MD5の場合ChallengeCode(以下、チャレンジコードと表記)取得のため2回に分けてサーバと通信しなければいけないことから、PLAIN認証の場合と処理手順が少し変わります。今回のTipsではcommunicateメソッドと、それを呼び出すtryUntilSuccessメソッドをスルーしています。*1 本題に入る前に、CRAM-MD5について少し説明します。(僕も復習のためおさらい) CRAM-MD5とは SMTP-AUTHのPLAIN認証では、平文でIDとパスワードがサーバ
jQueryで、上から下へ降りてくるように表示するslideDownというエフェクトがありますが、横方向へのスライドや下から上に表示するスライドなどは、標準のエフェクトとして持っていないようです。 そこで、jQueryUIを使って、上下左右好きな方向へスライド表示させる方法をメモします。 jQueryUIのダウンロード jQuery UI – Configure your download jQUeryUIは上記からダウンロードできます。 スライドに関して言えばUI CoreとEffectsのslideだけあれば大丈夫だと思いますが、不安ならばすべてチェックしたままダウンロードしてもOKです。 スライドしてみる 参考:jQuery google api and other google hosted javascript libraries. – ScriptSrc.net 今回はjQue
表題が適切ではないかもしれません。 Ajaxアクセス先のコントローラアクションから渡した配列を、呼び出し元のページのjQueryのコード内で利用する方法です。*1 AjaxにはjQueryを、CakePHPではJsヘルパーを利用します。 もしかしたら私の書き方は変わっているかもしれませんので、参考程度に読んでいただけたら助かります。 本題 文字で説明するよりソースコードの方が分かりやすいかもしれません。 call.ctpからAjaxでexecアクションを呼んでデータベースの情報を取得。取得した情報をAjax呼び出し元のcall.ctpのjavascriptソース内で使用するイメージです。 // 略 var $helpers = array('Html', 'Form', 'Js'); /** * 呼び出し元のアクション **/ function call() { // なにも処理しない }
PHPでGoogleやヤフーのindex数をコードで取得する方法です。 最初はスクレイピングライブラリのPHP Simple HTML DOM Parserを使ってやってみたのですが、ひどく重い。 なので、正規表現を使って自前で取得することにしました。 Googleのindex数を取得する // Google $urlに調べたいサイトのurl $google = "http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=site:".$url; $htm = file_get_contents($google); $regs = array(); mb_ereg(".*<div>約 ([0-9,]*) 件<\/div>.*", $htm, $regs); $googleIndex = $regs[1]; 無理やり短くすると2行。 mb_ereg
adminルーティングを行うときだけAuthComponentsの認証を行う方法のメモです。 わずか1行書けば済むのに、アプリを作るたびに別のアプリのソースコピペしたりしてるのでここら辺で記憶にとどめておきたいと思います(笑) はじめに core.phpに「Configure::write(‘Routing.prefixes’, array(‘admin’));」が設定してあって、AppControllerでAuthコンポーネントをセットしていることとします。 AppController::beforeFilterの設定 Authコンポーネントをセットするとデフォルトでは全アクションがdenyになっています。 そこで、adminルーティングしないときだけ当該アクションをallowします。 adminルーティングが行われているかどうかは$this->params[‘admin’]で判断できま
このブログにもFacebookのコメントプラグインを設置しているのですが、せっかくコメントを頂いても気づかないことがあって困っていました。 コメントが投稿されたらメールやFacebookの通知機能で知らせてくれればいいのに・・・ と思って調べてみると、コメントプラグインの設定に「モデレータ」なる項目が。 モデレータって管理者のことだよな?そこが空欄ってことは・・・と思い、自分の名前を入れてためしてみると、コメントがちゃんと通知されるようになりました。今までお返事していなかった皆様ごめんなさい。遅ればせながらお返事させていただきましたσ(^_^; ) というわけで設定方法。 Facebookコメントでモデレータを指定する方法 Comment Moderation Tool – Facebook開発者にアクセスすると自分が設置しているコメントプラグインが確認できます。(僕の場合はこのブログと座
以前なら、「検索バーの管理」⇒「検索エンジンの追加」で追加できてた気がするのですが、現在は「検索ツール :: Add-ons for Firefox」へリンクされてしまっているようです。 そこで今回はFirefoxに検索エンジンを追加する方法と、オススメの検索エンジンを紹介します。 検索プラグインまとめサイトから追加する メジャーどころを手っ取り早く追加したいなら、検索プラグインをいくつも用意している検索サイトやまとめサイトがあるので、こちらから検索エンジンを追加しましょう。 SearchPlugin.jp [検索プラグイン配布] 僕が一番使いやすいと思っているのがこちら。検索エンジンで上位にいないので毎回探すのに苦労するのですが、検索プラグインがジャンルごとに大量に用意されていて、ワンクリックで追加できる手軽さもうれしいですね。 しおしおプログラマ?の日常 – ブラウザ 検索プラグイン
CakePHP1.3系 requestActionを使って別のアクションのレンダリング結果を取得して、データベースに格納しようとしていた時のことです。 requestActionで問題ない場合 たとえばhogesコントローラのindexのレンダリング結果を取得したい場合、呼び出し元のアクションで次のように書けます。 $post = $this->requestAction(array( "controller" => "hoges", "action" => "index", ), array( "pass" => array( // 引数 "引数1", "引数2", ), "return", // これをしておくと実際にレンダリングされない(だったと思う) )); これで$postにレンダリング結果が入ります。 引数が配列の場合は? 困ったのが、hoges/indexに渡したい引数が配列
logwatchとは、サーバのログを解析しやすい形に変えて通知してくれる便利な監視ツールです。デフォルトの設定なら、/var/logにあるログをひと通りチェックして、サービスごとに、そして見るべきチェック項目ごとに、見やすいかたち整理してメールで通知してくれる、とても気の利いたサーバ監視ツールです。 チェックしてくれるサービスは環境によって異なると思いますが、僕の環境だとデフォルトで下記のサービスをチェックしてくれています。 たとえばApacheのaccess_logひとつとっても、手作業でチェックするのは(僕にとって)途方もない作業ですが、logwatchが届けてくれるログメールを見れば、どのIPアドレスからおかしなアクセスがあるとか、エラーレスポンスコードごとに、どのパスに対してのアクセスで何回エラーが出ているとか、ひと目でわかります。 僕みたいな素人でもこうした情報を元にすれば、不正
その結果、遅かったページの表示速度が改善されて、管理画面も前よりもサクサクページが開くようになり、こりゃ快適でいいな?と思っていたのもつかの間・・・ 動かした翌日の午前中にhttpdが突然ストップ! 翌日の朝6時頃に気付くまでHappyQualityが表示できなくなっていました…orz すぐにサーバごと再起動して、その時点ではページは見られるようになりましたが、また昼ごろには同様の現象が起きてしまいました。 とりあえず何が起きているのかログをチェック。 その結果/var/log/messagesにoom-killerの嵐がw これがその時のログ。 この時は何が起きているのかわからず正直怖かったですね。killerの文字が。殺し屋かと。 参考:OOM Killer – Linuxキーワード:ITpro 結局調べてみると、httpdがメモリを使いすぎてSwapまで食い尽くしてoom-kille
先日書いたWordPressの記事をFacebookに連動させる最も簡単な方法【まとめ】の続きで、Wordbookerの設定についてまとめました。やっつけ仕事ですがお許しください。。 ブログ設定(Blog Level Settings) ブログレベルの設定です。 後述のユーザ設定(User Level Settings)は、このブログレベルの設定よりも優先されます。 一般設定 ブログ記事をFacebookに投稿するための基本的な設定です。 設定例 Default Publish Post to Facebook :true Default Publish Page to Facebook :true Unless changed, Posts will be published on the Facebook belonging to :Current Logged in User Pub
世間ではSNSだなんだと騒いでますが、そんなのどこ吹く風で今までやってきましたが、最近わけあってFacebookを弄ってます*1 。 とはいえFacebookの友達はまだゼロw SNSのキモであるところの人とのコミュニケーションは取ろうにも取れない有様。 お友達はいない、ウォールも真っ白じゃ、寄る人も寄ってくれないと思いますので、今日はブログの記事をFacebookのウォールに表示する、つまりWordpressとFacebookを連動させる方法について書きたいと思います。 利用するのはWordbookerというプラグイン WordPressとFacebookを連動させるのには、Wordbookerというプラグインを利用します。 Wordbookerに至るまでには、WPBookやStatus Updaterも試してみたのですが、Facebook側でアプリケーションを作成する必要があり、煩雑な
git diffすると環境によって行末に”^M”という変な記号が出るのに悩まされていた。 Windowsでmsysgitを使っている。 versionは1.6.4と1.7.6で確認している。 config color.ui autoなどで、diffに色をつけていると起こるようだ。color.ui falseでは表示されない。 どうやらWindowsの改行コードのCR部分をエラーと認識してしまうために起こる現象のようだ。 解決策 core.whitespaceに行末のキャリッジリターンを許容する「cr-at-eol」を設定することで解決できた。 git config --global core.whitespace cr-at-eol 参考: Pro Git – Pro Git 7.1 Git のカスタマイズ Git の設定 osx – git-diff to ignore ^M – Sta
次のページ
このページを最初にブックマークしてみませんか?
『HappyQuality』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く