Post

プログラミング

2016-12-15 16:01:50

Laravelのredirect('hoge')とredirect()->to('hoge')の違い

些細な事ですが、気になったので調べてみました。 public function getIndex() { return redirect()->to('hoge'); } 今まで何となくこっちを使っていましたが、 public function getIndex() { return redirect('hoge'); } こっちでも問題なく動作するのでredirectヘルパーの実装について調べてみました。 redirectヘルパーの実装if (!function_exists('redirect')) { /** * Get an instance of...

プログラミング

laravel

2016-10-03 15:57:50

LaravelにbowerでReactを導入してみる

先日、Laravel5.3ではフロントエンドフレームワークとしてVue.jsをデフォルトとして採用するのが決定したようです。 普段、フロントエンドはjQueryで開発しているのですが、最近の流行りに乗じてReactを使ってみることにしました。LaravelならVue.jsにしとくのが無難かなと考えたのですが、Reactが今一番伸びがある(らしい)のでReactにしました。AngularJSとで迷ったのですが、あくまでjQueryの代わりになるかつViewだけ担当するものを考えていたのでReactを選択しました。 それぞれのFWの技術的な利用価値について説明できるほどフロントエンドマンではないの...

プログラミング

laravel react

2017-08-13 15:56:24

Laravelでエラーメッセージを共通のテンプレートで対応する方法

概要Laravelのエラーページを共通のテンプレートで対応する方法について説明します。 エラーハンドリングをカスタマイズapp/Exceptions/Handler.phpでrenderHttpExceptionメソッドをオーバーライドします。 Laravel API - Handler.php <?php namespace App\Exceptions; use Exception; use Illuminate\Auth\AuthenticationException; use Illuminate\Foundation\Exceptions\Handler as Exce...

プログラミング

laravel

2016-10-03 21:17:47

LaravelでRestAPIをつくる

LaravelでReactをフロントエンドのフレームワークとして採用しているのですが、APIを設計する必要がでてきたのでやってみました。 やること ResourceControllerをつくってデータを出力するだけのAPIをつくる API公開を見越した認証用ミドルウェアを実装する やらないこと Restの説明 APIデータの更新や削除 Ajaxでのデータの取得と出力 環境 Laravel5.2 Resource Controllerをつくる職人さんの朝は早い・・・php artisan make:controller HogeController --resource 職人が仕事するとこ...

プログラミング

api laravel react rest

2016-10-03 21:16:56

LaravelでEventを使う

ユーザー登録時や退会時など特定のイベントの時に発火させたいメソッドを管理したい時はイベントリスナーを使うと便利です。 今回は基本的なイベントとリスナーの定義の仕方についてはすっ飛ばし、一つのリスナークラスで複数のイベントを設定できるイベント購読について扱います。 環境 laravel5.2 ディレクトリ app\Events・・・イベント名=クラス名としたクラスを置く(厳密な命名規則はないです) app\Listeners・・・イベントごとの処理(リスナー)とsubscribeメソッドの実装(後述)したクラスを置く app\Providers・・・イベント購読で使用するリスナーを登録するクラ...

プログラミング

laravel

2017-04-25 21:15:56

LaravelでCORS対応

概要LaravelでCORS(Cross-Origin Resource Sharing)に対応する方法をまとめました。クライアントサイドはReact, axiosを使用します。前提知識としては、CORSのリクエスト形態、シンプルなリクエスト方法と、preflightを使用するリクエスト方法の違いを抑えておけば良いかと思います。RESTfulAPIの場合は基本的にはpreflightを使用するリクエスト形式かと思います。この記事では、preflightを使用するリクエストに対応する例を取り上げます。 環境CORSなので当たり前ですが、apiとwebでドメインを用意しています。 api.hoge...

プログラミング

laravel cors

2016-10-03 21:15:10

Laravelでajaxの際にCsrfTokenに引っかかった話

Laravel+React+SuperagentでAjaxを実装していたら、500エラーがでて、「いやいやまさかTokenじゃないっしょ〜 そんなの知ってるもん〜」と捻くれていたら、CsrfTokenが原因でした。 解決方法ヘッダにTokenを含める方法もありますが、ハードコーディング感があるので、VerifyCsrfToken.phpで該当URLを除外する方法がスマートだと思うのでそちらを記載します。 <?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfTo...

プログラミング

ajax laravel react superagent

2017-07-15 15:56:31

Laravel5.4でsqliteを使ってテストをかく準備

概要Laravel5.4でsqliteの使ってテストをかく準備をします。 前提 Laravelの基本 マイグレーションファイルの用意 phpunit.xmlを編集以下3行を追加します。 sqliteのインメモリ機能を使います。 <php> <env name="APP_ENV" value="testing"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/>...

プログラミング

laravel sqlite test

2016-12-18 21:13:47

Laravel5.3で自作artisanコマンド.md

今携わっているプロジェクトでRepositoryパターンを導入しているのですが、Repository関連のファイルを自動で生成するコマンドがあったら便利だなと思い、作ってみました。 コマンドを生成php artisan make:command Repository /CommandsにRespository.phpというコマンド用のファイルが生成されます。 コマンドファイルを編集Repository.phpを編集します。handleメソッド部分はCreating file using Artisan Command in Laravel 5.1のコードをお借りして、少しカスタマイズしました。...

プログラミング

laravel repository artisan

2016-10-03 21:08:38

Laravel5.2にNotificationでNotificationを使う

Laravel5.3がリリースされましたが、あえてLaravel5.2でNotificationを使う話です。 環境 Laravel5.2(または5.1) NotificationをインストールNotificationとはナンゾヤ? Laravel.com - NotificaionsLaravel Notification Channel Laravel5.3以前では通知の管理などはEventとListenerを活用することで何とかゴニョゴニョやっていたかと思います。 それがNotificationによって、より便利に通知管理を行えるようになりました。※名前の通り、通知に特化したものなので...

プログラミング

laravel

2016-10-03 21:07:08

Laravel+React+Superagentでフォームを実装

表題の通りです。Laravel+React+SuperagentでAjaxなフォームを実装します。 AjaxライブラリとしてSuperagentを採用しているのは、jQueryから脱却したいのと、jQueryのAjaxよりも分かりやすかったからです。プロミスとかいう難しい概念があるらしいですが、それは横に置いておいてもとりあえずは使えそうです。 Web標準の観点からするとFetchAPIがイケてるらしいのですが、各ブラウザベンダーの実装にばらつきがあるようなので避けました。 フロントエンドってつくづくカオスだなーとボヤキつつも話を進めていきたいと想います。 やること LaravelでAPIを用...

プログラミング

laravel react ajax superagent

2016-10-03 21:06:21

Laravel+React+ES6+Browserify

ちょっと前の記事で、bowerでReactの環境をセットアップするという話をしたのですが、npmでReactのパッケージ管理をしたほうがスマートだし、ES6かけるようになっといた方がこの先お得よねということで環境を再構築しました。 ES5からES6で書き方が色々変わるのでその辺の改修がちょっと面倒でしたが、さほど難しいことはないので気負いしなくとも良さそうです。 環境 Laravel5.2・・・5.1とか5.2ユーザーはelixirのバージョンを最新(5.3のそれと同じ)に上げとくといいかもです。 Browerify(Elixirについてるやつ) React ES6 Reactをnpmで用意...

プログラミング

react javascript npm webpack es6 browerify es5

2016-12-17 21:03:53

Laravel リポジトリパターンの実装

DB操作に関連するスマートな実装パターンであるリポジトリパターンについてかいてみようかと思います。 リポジトリパターンとはデータの操作に関連するロジックをビジネスロジックから切り離し、抽象化したレイヤに任せることで保守や拡張性を高めるパターンです。(必ずしもDB操作のロジックのみを留めるパターンというわけではないそうです。) Laravelにリポジトリパターンを取り入れることで、 テストがしやすくなる DBエンジンの変更に対応しやすくなる データ操作のロジックが1箇所にまとまり、管理しやすくなる といったメリットを得ることができます。 リポジトリパターンの実装Modelと同じ単位でRepo...

プログラミング

laravel repository

2016-10-03 21:01:26

Google ExtenstionのPluginをつくってみた

英語版のGoogleで検索したい時には、ブックマークを利用してアクセスしていたのですが、プラグインで便利にできないかなーと思い、作ってみました。 デフォルトのブックマークが非表示で、Bookolio(ブクマを見やすくするやつ)とかいうプラグインを使っているニッチな人だと多少便利なプラグインかもしれません←自分 環境 Google Chrome Javascript 仕様プラグインの種類は色々ありますが、今回つくるのはこれです↓ 【プラグインの画像】 プラグインのアイコンを押すと、Googleの英語版を新規タブで開いてくれるだけの超単純な機能です。 超単純なだけに伸びしろのある仕様ですね()...

プログラミング

javascript google chrome extension

2017-01-30 20:59:54

gitコマンドを楽にするシェルスクリプトをかいた

概要.bashrcにgitのショートカットコマンドをつくったでgitのエイリアスコマンドをつくったのですが、中途半端だったので改良しました。 前回のエイリアスでもそこそこにgitコマンドが快適になりましたが、gitコマンドを叩く度にブランチ名をタイプしないといけない仕様は改善すべき点だと思ったので、selectを使って解決しました。 ソースgit branchの値をselectで回せばいいと思っていたのですが、ブランチ名だけではなくファイル名とか取得されてしまうので加工する必要がありました。ちょうど同じようなことを実践している記事があり、そちらを参考にさせていただきました。 作ったコマンドは...

プログラミング

git shellscript

2016-10-03 20:59:26

FormRequestのrulesメソッド内でバリデーションルールを振り分ける

複数のフォームがある状況で、「フォームリクエストのクラスは一つに絞って、rulesメソッド内で分岐したい」なんて思う日があるかもしれません。(私はRest APIつくっているときにありました。) 案外同じことを考えている人がいたようで、リファレンス漁るよりも先に結果が出ました。 Multiple Forms, Multiple Requests? FormRequestのrulesメソッド内でゴニョゴニョします。 /** * Get the validation rules that apply to the request. * * @return array...

プログラミング

laravel

2016-11-04 21:05:27

ES6のExportとImportについて

ES6のexportとimportについて把握しきれていないところがあったので調べてみました。 exportの使い方 export 文は、指定したファイル (またはモジュール) から関数、オブジェクト、プリミティブをエクスポートするために使用 引用元:MDN - Export ここでいうエクスポートとは、何かを定義するという意味合いに近いかと思います。 エクスポートには2種類の方法があります。 名前付きエクスポートexport { hogeFunction };  // 宣言済みの関数をエクスポート export const hoge = 1; // 定数をエクスポート letやvarも可。...

プログラミング

javascript es6

2017-05-06 20:58:17

dotEnvの環境変数をクライアントサイドでも使えるようにする - dotenv-webpack

dotenv-webpackは.envファイルに用意された環境変数をクライアントサイドでも利用したい時に便利なライブラリです。 導入npm install dotenv-webpack --save-dev webpack.config.jsにpluginとして設定します。 const Dotenv = require('dotenv-webpack'); module.exports = [ ~~~ゴニョゴニョゴニョ~~~ { plugins: [new Dotenv({ path: 'path/to/.env',...

プログラミング

javascript npm webpack

2017-01-30 20:55:51

cdコマンドでディレクトリをタイピングするのが面倒くさくなってきたのでシェルスクリプ...

概要cd hogehogeとかパスやらディレクトリやらタイプするのが面倒になるという怠惰っぷりを発揮してきたので、シェルスクリプトを使って少し楽できるようにしました。 ソース#!/bin/sh # cd by selecting numbers function cdSelect() { dirs=`ls -a` PS3="Select directory > " echo 'Directory list:' select dir in ${dirs} do stty e...

プログラミング

bash shellscript

2017-02-22 20:54:17

bitflyerのprivate apiを使ってビットコイン資産状況をslackに通知する

背景bitflyerが用意しているAPIをちょっと使ってみたかったので資産状況を返すAPIをたたいてみました。 ソースnodejsでAPIをたたきます。レスポンスデータは恥ずかしいので見せません。//// なおソースコードの大部分はドキュメントの例を参考にしています() var request = require('request'); var crypto = require('crypto'); var key = 'your_bitflyer_api'; var secret = 'your_bitflyer_secret'; var timestamp = Date.now().t...

プログラミング

api bitcoin nodejs bitflyer