スポンサーサイト

2023.04.20 Thursday
0

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

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

    laravelメモメモ

    2016.09.25 Sunday 19:37
    0
      Service Providers (サービスプロバイダ)
      Laravelはサービス毎に初期処理を定義し、実行する仕組みを持っています。
      その仕組みや、実際に初期処理の実装を行うクラスのことをサービスプロバイダーと言います。
      全てのサービスプロバイダーは、config/app.php設定ファイルで登録されています。
      新たなサービスが必要になれば、このファイルにクラスを追加していきます。



      IoCコンテナ
      IoCコンテナとはInversion of Control(制御の反転)コンテナのことです。
      IoCコンテナは、必要な時に必要な場所で、インスタンスを渡してくれる仕組みです。



      Facade (ファサード)
      ファサードはアプリケーションのIoCコンテナに用意したクラスに「静的」なインターフェイスを提供してくれます。
      Laravelの「Facade(ファサード)」は、IoCコンテナー下で動作しているクラスに対し、"static proxies"として動作しています。
      これにより伝統的な静的メソッドよりも、簡潔で、テストの行いやすさと柔軟性を保ちながらも、記述的な書き方が行えます。



      Middleware (ミドルウェア)
      HTTPミドルウェアとも呼ばれることがあります。
      リクエスト時とかレスポンス前等にフィルタリングを入れることが出来るのがミドルウェアです。
      HTTPミドルウェアはアプリケーションにやってきたHTTPリクエストをフィルタリングする、便利なメカニズムを提供します。

      Factoryパターンの考え方は実に簡単です。「クラスのインスタンス化業務を肩代わりしてくれるオブジェクト」を導入していれば「Factoryパターン」と言っていいのです。

      要はクラスのインスタンス化を行う時に、自分でnew TheClass()するのではなく、factory.create('the_class')のように、「誰か」に代わりにやってもらうのです。その「誰か」が「Factory」です。いわば、オブジェクトを作るオブジェクトですね。「オブジェクトの製造所」 → 「Factory」というわけです。

      インスタンス化で複雑なオプションが必要なときに活かせるパターンです。逆に言えば、インスタンス化がさほど難しくない場合には適用すべきではありません。必要以上にアプリケーションが複雑化するからです。



      category:Laravel | by:ittoocomments(0)trackbacks(0) | -

      laravel レポジトリパターン導入時に Target 〜 Interface] is not instantiable while building のエラーではまった話

      2016.09.25 Sunday 19:35
      0
        laravel レポジトリパターン導入時に
        Target 〜 Interface] is not instantiable while building のエラーではまった話

        今回のケースでは app¥Providers配下のファイルで
        use app¥だったのを
        use App¥に変更したらうまくいった
        composer.json で
        "psr-4": {
        "App¥¥": "app/"
        }
        を指定してるのになぜだろうね?


        エラーサンプル
        BindingResolutionException in Container.php line 748:
        Target [App¥Repositories¥ArticleInterface] is not instantiable while building [App¥Http¥Controllers¥ArticlesController, App¥Services¥ArticleService].
        in Container.php line 748
        at Container->build('App¥Repositories¥ArticleInterface', array()) in Container.php line 629
        at Container->make('App¥Repositories¥ArticleInterface', array()) in Application.php line 697
        at Application->make('App¥Repositories¥ArticleInterface') in Container.php line 849
        at Container->resolveClass(object(ReflectionParameter)) in Container.php line 804
        at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 775
        at Container->build('App¥Services¥ArticleService', array()) in Container.php line 629
        at Container->make('App¥Services¥ArticleService', array()) in Application.php line 697
        at Application->make('App¥Services¥ArticleService') in Container.php line 849


        ネットでぐぐってて他の人のケースだと
        providerで
        public function register()
        {
        $this->app->bind('App¥¥Repositories¥¥ServiceCenterRepositoryInterface', 'App¥¥Repositories¥¥ServiceCenterRepository');
        とか、エスケープ箇所がまちがってたというケースがあったね
        category:Laravel | by:ittoocomments(0)trackbacks(0) | -

        dingo api

        2016.09.23 Friday 02:29
        0

          vargant
          swagger
          slenium
          phpunit
          dingo api
          Gulp
          Laravel Elixir ElixirはGulp上に構築されています
          Node.js
          SeleniumIDE



          Vagrantってなに?
          仮想マシンの簡単な構築や、どこでも同じ環境を再現できるように仮想マシンを管理するためのコマンドラインツールです。
          Rubyで実装されていて、Windows、Mac OS X、Linuxで動作します。
          Vagrant自体には仮想化機能は無く、VirtualBoxなどの仮想化ソフトのフロントエンドとして機能し、
          仮想化ソフトの操作を簡単なコマンドで代行してくれます

          OSは各自が準備してVagrantにインストールするように細かく設定できますが、OSからインストールしていては
          開発環境つくるたびに非常に時間がかかり大変です。そこでVagrantはBoxという形である程度出来上がった状態を配布して
          構築する仕組みがあります。

          Laravelは、Laravel ElixirというJavascriptやCSSなどのアセットをビルドするための
          gulpタスクがフレームワークに予め含まれていますが、
          また、フロントエンドのAngularJSから呼び出されるLaravel側のAPIに対する認証はJWTを利用します。

          Laravel側のバックエンドAPIは、すべてdingo/apiのミドルウェアを通ります。
          dingo/apiのミドルウェアは、バージョンの管理や認証などの処理を行います。


          http://blog.hrendoh.com/authentication-in-laravel-angular-material-starter/
          ★dingo/apiは、LaravelでAPIを実装するために以下のような機能を提供しています。
          ・Content Negotiation: HttpのContent Negotiationの仕組みを提供します
          ・Multiple Authentication Adapters: 認証プロバイダBasic、JWT、OAuth2および
          カスタムが用意されており、それらをルーティングのミドルウェア設定で組み合わせることもできます
          ・API Versioning: APIのバージョンを管理、バージョンごとのルーティングにも対応可能 (Creating API Endpoints)
          ・Rate Limiting: ユーザーやIPアドレスごとのスロットリングができます
          ・Response Transformers and Formatters: API応答の変換、フォーマット機能を提供します
          ・Error and Exception Handling: エラー発生時の例外処理と対応するHTTPレスポンスを生成してくれるヘルパー
          ・Internal Requests: Laravelのコントローラーなどの内部コードからAPIを呼び出せる機能
          ・API Blueprint Documentation: アノテーションを記述しておくとartisan api:docsコマンドを
          利用してAPIドキュメント(Markdown形式)を生成してれる機能
          と、APIを実装するにあたって必要十分な機能が揃っています。


          LaravelでDBからリストを取得したりすると、通常の配列ではなく、Collectionというオブジェクトが返ってくる。
          これはPHPの配列をラップしたもので、便利な機能がいろいろ用意されている


          SeleniumIDE
          http://qiita.com/naoqoo2/items/90d382cd9370d3526509
          http://blog.trident-qa.com/2013/06/selenium-ide-plugins/
          http://aspire.way-nifty.com/majime/TIPS-SeleniumIDE.html
          http://iflaglabs.jp/original7.html
          http://qiita.com/hideshis/items/1c113d21321d6d580bce
          http://qiita.com/oh_rusty_nail/items/b8ba525d31ea7c522856
          category:- | by:ittoocomments(0)trackbacks(0) | -

          dingo api

          2016.09.23 Friday 02:29
          0

            vargant
            swagger
            slenium
            phpunit
            dingo api
            Gulp
            Laravel Elixir ElixirはGulp上に構築されています
            Node.js
            SeleniumIDE



            Vagrantってなに?
            仮想マシンの簡単な構築や、どこでも同じ環境を再現できるように仮想マシンを管理するためのコマンドラインツールです。
            Rubyで実装されていて、Windows、Mac OS X、Linuxで動作します。
            Vagrant自体には仮想化機能は無く、VirtualBoxなどの仮想化ソフトのフロントエンドとして機能し、
            仮想化ソフトの操作を簡単なコマンドで代行してくれます

            OSは各自が準備してVagrantにインストールするように細かく設定できますが、OSからインストールしていては
            開発環境つくるたびに非常に時間がかかり大変です。そこでVagrantはBoxという形である程度出来上がった状態を配布して
            構築する仕組みがあります。

            Laravelは、Laravel ElixirというJavascriptやCSSなどのアセットをビルドするための
            gulpタスクがフレームワークに予め含まれていますが、
            また、フロントエンドのAngularJSから呼び出されるLaravel側のAPIに対する認証はJWTを利用します。

            Laravel側のバックエンドAPIは、すべてdingo/apiのミドルウェアを通ります。
            dingo/apiのミドルウェアは、バージョンの管理や認証などの処理を行います。


            http://blog.hrendoh.com/authentication-in-laravel-angular-material-starter/
            ★dingo/apiは、LaravelでAPIを実装するために以下のような機能を提供しています。
            ・Content Negotiation: HttpのContent Negotiationの仕組みを提供します
            ・Multiple Authentication Adapters: 認証プロバイダBasic、JWT、OAuth2および
            カスタムが用意されており、それらをルーティングのミドルウェア設定で組み合わせることもできます
            ・API Versioning: APIのバージョンを管理、バージョンごとのルーティングにも対応可能 (Creating API Endpoints)
            ・Rate Limiting: ユーザーやIPアドレスごとのスロットリングができます
            ・Response Transformers and Formatters: API応答の変換、フォーマット機能を提供します
            ・Error and Exception Handling: エラー発生時の例外処理と対応するHTTPレスポンスを生成してくれるヘルパー
            ・Internal Requests: Laravelのコントローラーなどの内部コードからAPIを呼び出せる機能
            ・API Blueprint Documentation: アノテーションを記述しておくとartisan api:docsコマンドを
            利用してAPIドキュメント(Markdown形式)を生成してれる機能
            と、APIを実装するにあたって必要十分な機能が揃っています。


            LaravelでDBからリストを取得したりすると、通常の配列ではなく、Collectionというオブジェクトが返ってくる。
            これはPHPの配列をラップしたもので、便利な機能がいろいろ用意されている


            SeleniumIDE
            http://qiita.com/naoqoo2/items/90d382cd9370d3526509
            http://blog.trident-qa.com/2013/06/selenium-ide-plugins/
            http://aspire.way-nifty.com/majime/TIPS-SeleniumIDE.html
            http://iflaglabs.jp/original7.html
            http://qiita.com/hideshis/items/1c113d21321d6d580bce
            http://qiita.com/oh_rusty_nail/items/b8ba525d31ea7c522856
            category:- | by:ittoocomments(0)trackbacks(0) | -

            node

            2016.09.20 Tuesday 00:14
            0
              node.jsとは
              pg_notify
              トリガー
              react.js
              を使う
              WebSocket

              現状 postgresql でトリガーつくって
              websocket使うか
              node.js


              postgres で 改行が入ったcsvからテーブルにコピーする時
              カンマ区切り、改行が入ってて " が "" になってるようなデータ。
              ¥copy mytable from ./mytable.csv delimiter ',' CSV quote '"'
              postgresでノーブレークスペースがインサートできなくて困ったのでメモ。
              状況
              phpの開発でpostgresを利用し、ckeditorで編集した文字列を突っ込もうとしたらこんなエラーがでた。
              character 0xc2a0 of encoding "UTF8" has no equivalent in "EUC_JP"
              原因はデータベースの文字コードがEUC-JPでphp側がUTF-8だったため。
              エディタで編集した時にノーブレークスペースが混ざり、
              postgresが自動エンコードする際にエラーが出てしまい、Insertできなかった。postgresの仕様でこの仕様自体は変更できない模様。
              解決方法
              php側でEUC-JPに変換するのは面倒臭かったので、
              ノーブレークスペースを半角スペースに変換することを思いついた。
              使うのはこの関数
              mb_ereg_replace
              マルチバイトで判定して置換してくれる!めったに使わないだろうけど、あってよかった!
              インサートしたいデータをこんなかんじで置換する。
              $str = mb_ereg_replace(“¥xC2¥xA0″, “ ”, $str);
              めでたくインサート出来ました!

              CREATE TRIGGER timeline_update
              AFTER INSERT
              ON public.timeline
              FOR EACH STATEMENT
              EXECUTE PROCEDURE public.notify_trigger('timeline_update');

              CREATE TRIGGER timeline_update
              AFTER INSERT OR UPDATE OR DELETE
              ON public.timeline
              FOR EACH STATEMENT
              EXECUTE PROCEDURE public.notify_trigger('timeline_update');

              CREATE TRIGGER staff_schedule_trigger
              AFTER INSERT OR UPDATE OR DELETE
              ON staff_schedule
              FOR EACH ROW
              EXECUTE PROCEDURE notify_trigger();



              BEGIN
              IF TG_OP = 'UPDATE' THEN
              NEW.created := current_timestamp;
              END IF ;
              RETURN NEW;
              END ;



              CREATE OR REPLACE FUNCTION trigger_function_date_updater()
              RETURNS "trigger" AS
              $BODY$ BEGIN
              IF TG_OP = 'UPDATE' THEN
              NEW.created := current_timestamp;
              END IF ;
              RETURN NEW;
              END ;
              $BODY$
              LANGUAGE 'plpgsql' VOLATILE;
              ALTER FUNCTION trigger_function_date_updater() OWNER TO postgres;


              CREATE OR REPLACE FUNCTION trigger_function_date_updater()
              RETURNS "trigger" AS
              $BODY$ BEGIN
              IF TG_OP = 'UPDATE' THEN
              NEW.created := current_timestamp;
              END IF ;
              RETURN NEW;
              END ;
              $BODY$
              LANGUAGE 'plpgsql' VOLATILE;
              ALTER FUNCTION trigger_function_date_updater() OWNER TO postgres;

              CREATE OR REPLACE FUNCTION trigger_function_date_updater()
              RETURNS "trigger" AS
              $BODY$ BEGIN
              IF TG_OP = 'UPDATE' THEN
              NEW.created := current_timestamp;
              END IF ;
              RETURN NEW;
              END ;
              $BODY$
              LANGUAGE 'plpgsql' VOLATILE;
              ALTER FUNCTION trigger_function_date_updater() OWNER TO postgres;

              CREATE OR REPLACE FUNCTION trigger_function_date_updater()
              RETURNS "trigger" AS
              $BODY$ BEGIN
              IF TG_OP = 'UPDATE' THEN
              NEW.created := current_timestamp;
              END IF ;
              RETURN NEW;
              END ;
              $BODY$
              LANGUAGE 'plpgsql' VOLATILE;
              ALTER FUNCTION trigger_function_date_updater() OWNER TO postgres;

              トリガ関数とトリガは違う

              node.js インストールからね

              https://liginc.co.jp/web/programming/node-js/85318
              https://gist.github.com/okwrtdsh/06645a4d8ef5ff2c72e6


              https://liginc.co.jp/web/programming/node-js/85318
              https://gist.github.com/okwrtdsh/06645a4d8ef5ff2c72e6
              http://www.dbonline.jp/mysql/trigger/index1.html
              public array PDO::pgsqlGetNotify ([ int $result_type = PDO::FETCH_USE_DEFAULT [, int $ms_timeout = 0 ]] )
              Returns a result set representing a pending asynchronous notification.
              http://cryks.hateblo.jp/

              react導入の障壁
              node.js
              react-tool
              browserify
              webpack

              reactは
              ・MVCのVIew部分を担当
              ・簡単にいうと DOMの更新とイベントハンドリングをやってくれるライブラリ
              ・reactではDOMの更新に仮想DOMをつかっている
              ・仮想DOMは更新が必要な個所を自動的に計算して実際のDOMを更新する
              reactはコンポーネントという単位でUIパーツをつくる
              コンポーネントはUIパーツのロジックとマークアップが1か所に定義したもの
              jsxはhtmlに似ているが属性名などは異なる場合があるので注意が必要
              html の class
              → jsxでは className
              htmlの for
              → jsxでは、htmlFors
              jsxのいいところ
              htmlと似ているので理解しやすい
              コンポーネントの構造がわかりやすい

              ■pug(jade), ejsなどHTMLテンプレートエンジンの知識
              ■UI/UX、インタラクションデザイン等の知識
              ■React.js, Vue.js, Angular等を用いたフロ


              コンポーネント内では this.stats を使って内部状態参照する

              setStateを使って内部状態を更新する

              最新の技術はエンジニア募集すると人がいないので、高くつく
              自分勝手にいきていい

              category:- | by:ittoocomments(0)trackbacks(0) | -

              ad
              Calender
                  123
              45678910
              11121314151617
              18192021222324
              252627282930 
              << September 2016 >>
              Selected entry
              PR
              Category
              Archives
              Recommend
              Link
              Profile
              Search
              Others
              Mobile
              qrcode
              Powered
              無料ブログ作成サービス JUGEM