WEBに関する、プログラムの覚え書きブログ。Comments表題の通りなんですけど、一度ログインした後、別のアカウントに切り替えようとログインしなおしても、Twitter側にセッションが残っているかなんかで、ログイン画面が出ずにcallbackしてしまう、もしくは今ログイン中のアカウントと紐づくみたい挙動になる。私は毎回ログイン画面出したいんだ!とそういったケース。Twitterドキュメントを見る限り`force_login=true`してあげれば済む話なんだけど、LaravelのSocialiteでどうするの?という話と、ちょっとおまけ。SDKのライブラリ(v5系)を利用している前提での話です。(※2016年冬期の記事です。下記のようなエラーがでる時があります。すごくはまりましたので、メモとして残します。(自分の場合はさくらのレンタルサーバでした。calenderの時期というわけで、フロントエンドエンジニアAdventCalenderの5日目久しぶりに更新です。フロントエンドのデバッグの話で、色々作業していくときに、LiveReloadを使うと非常に効率が良い。Moduleを使うという方法をよく見かける気がしますが、ここではブラウザの自動更新の機能のためだけにGulpしてるとか、逆にnode_modulesのフォルダがうっとおしいから、Gulpしたくなくてをライブリロードを断念している人に向けて、ターミナルとbrowsersyncコマンドだけでシンプルに解決してみたいと思います。(何かしらフレームワーク使ってる場合は、そのフレームワークでのベストプラクティスが案内されているのでそれを利用するといいと思います。)結局GulpをつかったとしてもBrowserSyncのラッパーみたいな感じなので、それCLIだけでできるよって。いうわけで、Gulpを使わずにターミナルだけで今すぐ使える、簡易のライブリロードみたいなブラウザの自動再読込の環境を作ってみよう。GulpVelocityとPixiの手抜きアニメーション。Webとアニメーションの様々なありかた」という勉強会用の発表資料です。アニメーションまわりのプラグインを紹介したものの、すごく駆け足だったので、あらためて、ご紹介します。ここで紹介するサンプルのデモは、githubにソース置いておきます。一枚ペラっと作ってもイイんだけど、せっかくだし今風に作ってみようと思い、Auraに手を出した。Formのためだけに、Wordpress使うのもなんだし、LaravelやSymfony使うのもFatすぎるかなって感じていて。Auraはフルスタックのフレームワークではなく、必要なComponentをとっつけて組み立てるという感じ。・日本語ドキュメントがあるので、ざっくりはわかる。それぞれがのReadmeドキュメントが整ってる印象。https://github.com/auraphphttps://github.com/friendsofaura今回サンプルとして、htmlのフォームでPOSTした内容をバリデーションチェック加えて、json形式で何らか返すというものを以下の2パターンで作った。それぞれは同じ結果を返す。Filterをaura/filterを直接使う。aura/input/Formの継承クラスを作成し、Form内でfilterを行う。(github)基本/vendor/auraの中身で、重要そうなのは、web-kernelあたりのよう。ここでrouter、dispatcher、あとwebコンポーネントにある、RequestとResponseとかが、定義される感じ。アプリケーションは、/config/Common.phpにかいていく。/config/_env.phpにて、環境の設定を変更をすることで、/config/Dev.php/config/Prod.php/config/Test.phpと、環境別に動作を切り替えれることが出来る。/config/Common.phpは、_env.phpの設定にかかわらず全てにおいて実行される。DI関連するサービスをsetし、必要時に、getして使う。$di->get(<サービス名>);ルーティングとディスパッチャ$router->add()でルーティングを指定して、$dispatcher->setObject()のクロージャで、ルーティングの処理をする。ここに処理});バリデーションチェックAura/Filterを追加する必要がある。Aura/inputも。必要に応じてAura/htmlも追加。HTMLテンプレート書くなら、次のバンドルをcomposerに追加する。foa/html-view-bundleフォーム書くなら、次のバンドルをcomposerに追加する。foa/filter-input-bundleさて、説明がうまく出来ないので、以下のA、Bの場合とで、サンプルソースを見比べて欲しい。/form.htmlの静的フォームから/sendにPOST送信され、フィルタのかけ、Jsonを返すのだが、Bの場合だけDIを使った形となっている。A:Filterだけの場合https://github.com/tomothumb/Sample-Aula-validation/blob/5e8dd23b450140ab4f2fe55ac7a0b399dc2bedb3/config/Common.phpDispacharの中に書いていく。Fromを利用する場合https://github.com/tomothumb/Sample-Aula-validation/blob/master/config/Common.php/src/App/From/Contact.phpを追加し、Formの要素とバリデーションの内容を記述する。違いをGistに書いた。Gist.設計方法学ぼうとおもってたのに、いつのまにか、アプリケーションの書き方/使い方を学んでいる自分がいる。同じことをSilexとSlimでも今度やってみよう。アドベントカレンダー23日目の記事です。写真はECCUBE開発合宿の深夜の1コマ。当初、作ったプラグインの案内でもしようかと思ったのですが、バグだらけで改善作業中なので、自分がECcubeを理解していく中で(まだまだわかってないですが)、自分なりのベストプラクティスを、これからECCUBEの開発を始めるヒトに向けて共有したいと思います。ちなみに、バグだらけのプラグインはgithubベースでメンテするというか、メンテフリーで行く予定なので、自由にパクって下さい。「ECCUBE3-InfiniteScroll」「MECCUBE3-Masonry」「ECCUBE3-Loveit」(3つありますが、内容似てまして、松竹梅的な。)思ってたのとなんか違う。私個人としては、Laravelは半年弱ほど触った程度。LaravelはSymfonyベース、ECCUBEはSilexベース、そのSilexはSymfonyベース、だからきっとなんとなくわかるはずと思ってたんですが、いざ蓋を開けてみると、「これ、思ってたんと違う。」というのが正直な感想。meetupに寄ってきました。」の出版されたけども、その著者が登壇されるということだったので、行かなきゃとい思いまして、毎度のことながらスケジュールつめこんで。Symfonyを学ぶことは近道。ECCUBEを始め、最近は著名なCMSやフレームワークがこぞってSymfonyを採用しはじめていますが、なぜSymfonyが選ばれるか。Symfonyが王道なのか。いった内容を話されていました。Wayみたいな◯◯Wayというベストプラクティスや強い主張があったりするけど、Symfonyというのは、主張してこないフレームワークであると。自分流にアレンジしやすいとのこと。「リクエストを受け取り⇒レスポンスを返す」というところ。Webアプリケーションの根本的な所を学ぶことができると。Wayの解釈ができるようになりますよ、とそういった内容でした。(※ちなみに、Symfonyの日本語ドキュメントのサイトは遅れているようで、翻訳ついていくのは諦め気味とおっしゃっておられました。」全300Pぐらいで、早速ですが簡単な所は読みました。初期の構想から発売まで二年半ぐらいとおっしゃっておられたような。書籍の構成としては、フレームワークとはなんぞやSymfonyとはなんぞや。(Doctrine)RepositoryFormValidationメール(Swiftmail)機能の拡張フィクスチャConsole拡張API実装サービスプロバイダテストが順に解りやすく落とし込まれてあり、読み進め、実際に手を動かしながら、一つのWEBアプリケーションができます。Symfonyの基礎が中盤ぐらいまででわかります。後半で、サービスプロバイダの解説がされてありますが、ここを理解することがSymfonyおじさんになる手段であり、みながSymfonyを採用する肝のようです。ここまで読みきれてません、まぁ正直難しいです。ECCUBEおじさんになるためには先に述べたとおり、基本的な所を読了するだけで、ECCUBEのディレクトリ構造がざっくり理解できるようになります。するとまぁ、ECCUBEとSymfonyとの違いがなんとなくわかりはじめます。Symfonyは個性を主張してこないと述べましたが、Symfonyのチュートリアル的なものをしていると、アノテーションとか、手軽だけど、なんか魔法ばっかり。思っきり個性を主張してきます。Overflow様がSymfonyの解決するための黒魔法を教えてきます。ECCUBEではこの魔法が全く役に立たずハマります。そこで、Symfony本に目を通しておきますと、ホグワーツ魔法学校に通ったようなものですから、この先生の言ってることは、こう読み替えればよいのかとか、Silexの領域だなとか、ほんの少し見えてくるようになります。最後にSilexやDoctrine、Symfonyのドキュメンテーションへと理解を深めていく旅に始まります。Silexにどっぷりは必要?おそらく、ECCUBEを深く知る上では、Symfonyの基礎を把握する⇒必要に応じてSilexのドキュメントを見るという流れではありますが、Silexのドキュメントもなかなかしんどいです。ECサイト作成程度の話であれば、Silexには触れず、Symfonyの基礎を把握する⇒ECCUBEのコアのコードからパクる。⇒必要に応じてSilexのドキュメントというのがベスト・プラクティスじゃないかなと思っています。いいますのも、Symfony基礎がわかるとディレクトリ構造がわかるので、コードのたどり方がなんとなくわかってきて、ECCUBEコアに、ピンポイントで似た例がでてくるのがほとんど。Silexのドキュメント見るより手っ取り早いと感じるからです。コア開発者になるなら、SilexもSymfonyサービスプロバイダもしっかり理解してください。いうことになるんだと思います。さいごにECcubeの話というより、Symfonyの話がほとんどになってしまいました。最後になりますが、ECCUBEはSilexベースですが、Symfonyかじらず、いきなりSilexから入っちゃうと遠回りになると思うので。王道からと、オススメしつつ、アドベントカレンダーをバトンタッチしたいと思います。meetupで知った部分貼っていきます。参考になれば幸いです。PracticesSymfonyの学びかたSymfonyの歩き方Symfonyのリリースサイクルが変更になりましたという最近の公式発表。Commentsブログを書くまでがYAPCというわけで、聞いたことを忘れないうちに、一応書こうと思う。考察や見解をいれてない、ただの議事録記事ですが。Webの歴史をつくってきた貴重なカンファレンス。本年度で10年の幕を終えるというわけですが、遠いということもありましたけど、Perlの親だったり、Rubyの親だったりをはじめ、Rebuild.fmやMozaic.fmの人だったり、Github,Google,サイボウズ、KAIZEN、DeNA、クックパッド、KAYAC、はてななどなど、まー、いろいろと中の人達の活動を見れるすごくいい機会というわけで、迷わず参加。2000人オーバーしたみたいです、すばらしい。注目度が高いイベントは例外なく内容が濃い。偏ってるけど、個人的に注目したテーマが、ES6、NodeHTTP/2ElectronWebAudioってところ。インフラ周りも聞いたけど、一番近いところがやっぱり興味がわくものですね。あとはDeepLearningとかもフォローアップしたいところだったけど、見れなかった。印象に残ったセッションをメモしていきます。v2.3からv3移行手順。v2.3のサポートが2015年5末頃に終了したみたいで、動かなくなっちゃったアプリケーションがあったので、2015年6月時点の最新であるv3に対応させないと行けないということで、書き記します。次のようなエラーで引っかかった人のための記事です。v3で何が変わった個人的に思うのは、大きく次の3つ。OAuth2.0対応の必須XML形式⇒JSON形式リクエスト先のURLの変更この中で特に大きいのはOAuth2への対応。これまではEmailとPasswordで接続できてましたけど、APIキーを発行して、Analyticsの設定もかえないといけなくなった。プログラム側の修正はその後の話。新規サービスを登録[p12]形式の鍵をダウンロード。ファイル名はお好きな様に。先ほどメモした「xxx@developer.gserviceaccount.com」というメールアドレスについて、Analyticsの管理画面から、ユーザ追加し、API接続させたい閲覧権限を付与します。プロファイル番号をしらべる。karakaram-blog」アプリ側の仕様変更へ対応。OAuth対応(手順1で生成されたメールアドレスや鍵を利用。)JSON形式に対応させるか、xml形式にフォーマットし直す。[1,2]の手順は、こちらのページで詳しく書かれてますので、詳しくは割愛。API」に代わるわけなんだけど、移行させるだけなので、APIの名称なんてどうでも良いです。一応ドキュメントのリンクを。API移行の案内コードの修正さて、準備が整ったところで、実装を。これから新規でv3アプリ作る人なんかは、composerなんかでよさそうなlibraryで対応したら良いと思います。今回はcomposer使えない環境だったので手軽なライブラリを探したところ、「GAPI」なるものが良さ気で使った。OAuth2がとても簡単。githubのReadmeにあるサンプルの通りで簡単に動きます。https://github.com/erebusnz/gapi-google-analytics-php-interface自分の場合、そのアプリ側がv2のxmlに最適化されてて、json形式用にフォーマット追加するのが面倒な環境だった。ライブラリ側で面倒みてくれば最高というわけで、このライブラリ側でv2のxml形式風に返すメソッド追加して、マージされるかはわからないけど、プルリクおくりましたという紹介。https://github.com/tomothumb/gapi-google-analytics-php-interface/とりあえず、僕のリポジトリつくったらxmlの文字列が返ってきます。Gist.最後に使い方というかサンプルをば。ver_dumpして、ブラウザ上で閲覧すると真っ白です。ソース表示にするとちゃんとxmlが出力されてるのがわかります。Gist.たぶん、これで、xml前提のアプリとして実装されてた場合は移行がそこまで大変じゃなくなるのじゃないかな。v3を活用するにはJSON用に作りなおすのがベストなんでしょうけどね。ちなみに、v2のXML形式は、こちらのページを参考にしました。APIのドキュメントページから拝借させていただきました。analyticsVCCWとWockerの比較。wordpress開発の新しい選び方。Wocker」に行った議事録と感想。結論からいって、Dockerについてかなり理解が深まった。きっかけを与えてくれたWockerの作者のKiteさんにはただただ感謝。触発されて、今日ずっとDockerfileの書き方しらべてた。あとは、TDDの必要性だとか、CIの必要性だとかへの理解が深まり、ついでに、OSSの貢献の方法というか考え方だとか、いろいろと参考になった。仮想環境を利用しての開発環境についてのセッション。そのまえに、まずDockerについて触れておく。Comments久々に書くよ。2015のGWを使ってざーっと調べたメモとして。wordpressの開発環境とデプロイに関して調べてて、というかWP-CLI使おうかなーって重い腰を上げただけなんだけど、wordpressでも結構モダンな、いろいろおもしろい発見があるもんだなとおもった。やる人はちゃんとやってんだなーって。gulp)ひとつひとつ、掘り下げてたらきりがないので、エントリのタイトルのとおり、vccwとWordMoveで開発するのがいいかもって話、なにがいいかってところだけ書いて、一つ一つは別エントリで掘り下げていくことにする。今回はコードは書かない。ENTRYREADME.mdファイル。マークダウン記法まとめ一石三鳥!?SublimeText2とsass/SCSS(compass)+SFTP(FTP)で作業効率化する方法。3つの簡単便利Javascriptテンプレートエンジン。2とCtagsの組み合わせがすごい。2012へ行ってきた、まとめ[CMS]多言語化、翻訳ファイル.po、.mo。パララックスでのイベントの考察。mousewheelCodaとZen-Codingのショートカットまとめ。[Drupal7]既に設定済みのFIELDTYPEをintegerからtextへ変更。ENTRYLaradockでホストマシンの変更が反映されない場合の対策Interventionで日本語表示対策。imagesに表示される<none>を消す。