クリエイティブコモンズで無料公開されている。
Git – Book
http://git-scm.com/book/ja/v2
最近はウェブ系アプリ中心、あとWindowsアプリちょっと
クリエイティブコモンズで無料公開されている。
Git – Book
http://git-scm.com/book/ja/v2
コミットメッセージの書き方に迷ったら以下の記事に戻ろう。
Gitのコミットメッセージの書き方 | プログラミング | POSTD
http://postd.cc/how-to-write-a-git-commit-message/
素晴らしいコミットメッセージを書くための7つのルール
デザイナから苦情あり。CSSを更新してディプロイしてもブラウザ上で変化が確認できず、ブラウザでページを強制リロードして初めて変化が現れるとのこと。恐らくキャッシュに関係した問題だろう。そういえば以前、前任のフロントエンドプログラマと前任のインフラエンジニアがキャッシュが云々と色々いじっていたっけな。
ブラウザ組み込みの開発者ツールでHTTPレスポンスをダンプしたところ以下の記述を発見。キャッシュされているデータを使うように常にブラウザに強いている。どうやらく前任者が試行錯誤したままの状態で放置したのだろう。これじゃあCSSを更新しても反映されなくて当然だ。
1 2 |
Cache-Control:"public, max-age=315360000" Expires:"Thu, 31 Dec 2037 23:55:55 GMT" |
政治的な理由でNginxの設定変更は僕には許されていないので、データセンタのインフラ担当に依頼して以下のように変更してもらって解決。
1 |
Cache-Control: "public, max-age=1, must-revalidate" |
以下の記事がわかりやすかったのでリンク&まとめ。
ブラウザのキャッシュコントロールを正しく理解する – Qiita
http://qiita.com/hkusu/items/d40aa8a70bacd2015dfa
①ブラウザに一切、キャッシュさせたくない場合
1 |
Cache-Control "no-cache" |
②ブラウザにキャッシュさせるけど、変更ないか都度確認するようにしたい
1 2 |
Cache-Control "max-age=0" Expires "Mon, 26 Jul 1997 05:00:00 GMT" |
③ブラウザにキャッシュさせ、都度確認はそれほど必要ない
1 2 |
Cache-Control "max-age=秒数" 例:86400など(この場合は1日) Expires "ここに期限の日時" |
Leverage Browser Caching | PageSpeed Insights | Google Developers
https://developers.google.com/speed/docs/insights/LeverageBrowserCaching
Page caching with Nginx – whitespace
http://whitequark.org/blog/2014/04/05/page-caching-with-nginx/
HTTPヘッダチューニング Expiresヘッダについて | REDBOX Labo
http://blog.redbox.ne.jp/http-header-expires.html
Expiresヘッダを追加しよう! | dogmap.jp
https://dogmap.jp/2007/09/04/add-an-expires-header/
たった数分!ページ高速化のためhtaccessでキャッシュ設定は絶対やっておこう!
https://syncer.jp/page-cache-setting
ブログ – expiresヘッダを調整して画像の通信量を抑制する
https://principle-works.jp/blog/setup-expires-header-and-reduce-image-traffics/
開発中のウェブサイトの体裁をAndroidデバイスで確認したいけどデバイスを持っていない。なので、とりあえずエミュレータをセットアップする。
Android Studio と SDK Tools のダウンロード | Android Developers
http://developer.android.com/intl/ja/sdk/index.html
システム要件 (Windows)
Android Studioのインストール
Installing the Android SDK | Android Developers
http://developer.android.com/intl/ja/sdk/installing/index.html?pkg=studio
Android Studio
android-studio-bundle-141.2456560-windows.exe
JREのインストール
Java SE Runtime Environment 8u74
Windows x64(54.9 MB) jre-8u74-windows-x64.exe
JDKのインストール
Java SE Development Kit 8 Downloads
Windows x64 (187.31 MB) jdk-8u74-windows-x64.exe
SAMSUNG Developers
http://developer.samsung.com/home.do
Developer and Open Source Resources at Motorola
http://www.motorola.com/us/Motorola-Developers/motorola-developers.html
WindowsまたはMacでJavaバージョンを確認する方法 – 手動の方法
https://www.java.com/ja/download/help/version_manual.xml
WindowsでJavaコントロール・パネルはどこにありますか。
https://www.java.com/ja/download/help/win_controlpanel.xml
PHPのコーディングにNetBeansがあまりに重いので、ふと思い立ってVisual Studio Codeをダウンロード。メモリ消費がNetBeansは350MBに対して、Visual Studio Codeは83MB。PHPのコーディングに使ってみよう。
Visual Studio Code 1st Step Guide
http://download.microsoft.com/download/3/6/F/36FE7C6C-2CDB-44B1-AB66-079E6E9DD219/Visual_Studio_Code_1st_Step_Guide_FullContents.pdf
フルバージョン 2015年7月17日 (v.1.0)
1. Visual Studio Codeの使い方、基本の「キ」 (1/4) – @IT
http://www.atmarkit.co.jp/ait/articles/1507/10/news028.html
2015年07月10日
2. Visual Studio CodeでGitを利用する (1/4) – @IT
http://www.atmarkit.co.jp/ait/articles/1507/21/news017.html
2015年07月21日
3. Visual Studio Codeの使い勝手をよくするツール (1/5) – @IT
http://www.atmarkit.co.jp/ait/articles/1509/08/news019.html
2015年09月08日
4. Visual Studio Code 0.8.0の新機能 (1/3) – @IT
http://www.atmarkit.co.jp/ait/articles/1509/18/news029.html
2015年09月18日
5. Visual Studio Codeでエクステンション機能を使ってみよう (1/2) – @IT
http://www.atmarkit.co.jp/ait/articles/1511/27/news029.html
2015年11月27日
6. Visual Studio Codeのエクステンションを作成する (1/2) – @IT
http://www.atmarkit.co.jp/ait/articles/1511/30/news030.html
2015年11月30日
言語ファイルの編集管理がウェブインターフェースで可能になるらしい。まだ試してないけど覚え書きリンク。
GitHub – barryvdh/laravel-translation-manager: Manage Laravel translation files
https://github.com/barryvdh/laravel-translation-manager
この記事のおかげで、多言語サイト実現のための言語切り替えをどうやって仕込もうかと悩んでいたのが一気に解決した。ありがたや。
Laravel 5 And His F*cking non-persistent App SetLocale
http://mydnic.be/post/laravel-5-and-his-fcking-non-persistent-app-setlocale
1 |
$ php artisan make:controller LanguageController |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Http\Requests; use Config; use Illuminate\Http\Request; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Session; class LanguageController extends Controller { public function switchLang($lang) { if (array_key_exists($lang, Config::get('languages'))) { Session::set('applocale', $lang); } return Redirect::back(); } } |
config/languages.php
1 2 3 4 |
return [ 'en' => 'English', 'fr' => 'Français', ]; |
routes.php
1 |
Route::get('lang/{lang}', ['as'=>'lang.switch', 'uses'=>'LanguageController@switchLang']); |
front-end
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> {{ Config::get('languages')[App::getLocale()] }} </a> <ul class="dropdown-menu"> @foreach (Config::get('languages') as $lang => $language) @if ($lang != App::getLocale()) <li> <a href="{{ route('lang.switch', $lang) }}">{{$language}}</a> </li> @endif @endforeach </ul> </li> |
app/Http/Middleware/Language.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
namespace App\Http\Middleware; use Closure; use Illuminate\Foundation\Application; use Illuminate\Http\Request; use Illuminate\Routing\Redirector; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Session; class Language { public function handle($request, Closure $next) { if (Session::has('applocale') AND array_key_exists(Session::get('applocale'), Config::get('languages'))) { App::setLocale(Session::get('applocale')); } else { // This is optional as Laravel will automatically set the fallback language if there is none specified App::setLocale(Config::get('app.fallback_locale')); } return $next($request); } } |
Kernel.php
1 2 3 4 5 6 7 8 9 10 11 12 |
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \App\Http\Middleware\Language::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], // ... ]; |
基本的な方法は公式ドキュメントに網羅されている。
Localization – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.2/localization
実践的には以下を自前で用意しないといけなさそう。
Inversion of Control Containers and the Dependency Injection pattern
http://www.martinfowler.com/articles/injection.html
(翻訳) Inversion of Control コンテナと Dependency Injection パターン
http://kakutani.com/trans/fowler/injection.html
制御の反転 – Wikipedia
https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%AE%E5%8F%8D%E8%BB%A2
Laravel4、IoCコンテナの魔術
http://kore1server.com/146
Laravel IoC コンテナの使い方 – Shin x blog
http://www.1×1.jp/blog/2014/02/how-to-use-ioc-container-in-laravel.html
Laravel5 – もっと強力的なIoC (4th) – Qiita
http://qiita.com/fluke8259/items/99d019a1a8a9f32508b2
Iocコンテナについて
http://www.slideshare.net/trtraki/ioc-48749471
依存性の注入 – Wikipedia
https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5
派遣労働者から見た、「まずはこう使え、DIコンテナ」 – Qiita
http://qiita.com/morisuke/items/fcd9027eb5250c30dbba
Laravel4、依存注入とコンテナ(1)
http://kore1server.com/184