月別アーカイブ: 2016年11月

MITライセンスを1行1行読んでいく | プログラミング | POSTD

**全てのプログラマが理解すべき171語の文章** (http://spdx.org/licenses/MIT)は、最も有名なオープンソースソフトウェアのライセンスです。この記事では、その内容を一行一行読んでいきます。 ##ライセンスを読む オープンソースソフトウェアを利用しているものの、これまでライセンス全文(原文:171語)を読む機会がなかった方は、大した量ではないので、今すぐ読んでください。あなたにとってライセンスが身近なものでないなら尚更です。理解できない箇所などがあれば、その部分は心に留めておき、明確にするようにしてください。これから背景や解説とともに、全文を分割して順番に紹介していきますが、大事なことは全容を頭に入れておくことです。 > MITライセンス(MIT) > > Copyright (c) > > 本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)のコピーを入手する全ての人に対し、それらに関する無償のライセンスを、ここにおいて許諾します。ソフトウェアの扱いは無制限で、コピーの使用、複製、変更、統合、公開、配布、サブライセンス、および/または複製物を販売する権利が含まれますが、これに限定されません。また、ソフトウェアが提供された相手に対しても同様の権利を許諾します。ただし、以下を条件とします。 > > 上記の著作権表示ならびに同意表示を、ソフトウェアの全ての複製または本体部分に記載するものとします。 > > _本ソフトウェアは「現状のままで」で提供され、明示的/暗黙的かどうかに拘らずあらゆる保証はないものとします。ここでの保証とは、市販性、特定用途への適合性、権利の侵害がないことなどを含みますが、これらに限定されません。作成者または著作権保持者は、契約行為、不正行為、またはそれ以外の行為において、本ソフトウェアに起因または関連する事項、本ソフトウェアの使用、またはその扱いによって生じる一切の請求、損害、その他の義務について責任を負わないものとします。_ MITライセンスの全文は5つの段落で構成されていますが、論理的に分解すると以下のようになります。 * __ヘッダ__ * __ライセンス名:__ “MITライセンス” * __著作権表示:__ “Copyright (c)~” * __ライセンス許諾:__ “本ソフトウェアおよび~”

情報源: MITライセンスを1行1行読んでいく | プログラミング | POSTD

Atomエディターのインストールしたパッケージリスト

python

  • python-tools
  • linter-pylint
  • python-debugger
  • autocomplete-python

php

  • linter-php

common

  • atom-beautify
  • linter
  • atom-terminal
  • highlight-selected
  • script

リアルタイムに構文解析してくれるlinterは必須

テキスト予測やドキュメントを表示してくれるautocomplete-pythonも必須

プログラムを実行してくれるscriptも必須

linterのリスト
by https://atom.io/users/AtomLinter/packages

laravel 5.3 全文検索 laravel-scout-postgres

基本的にここのURL通りにすればいい
https://readouble.com/laravel/5.3/ja/scout.html

composer require laravel/scout

#config/app.php設定ファイルのproviders配列へ、ScoutServiceProviderを追加します。
Laravel\Scout\ScoutServiceProvider::class,

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

composer require algolia/algoliasearch-client-php

Postgresqlのバックアップとリストア


#バックアップの例

pg_dump -U postgres -h localhost github > github.sql

#リストアの例

psql -U postgres -h locahost github < github.sql

Postgresqlへログイン


#例

psql -h localhost -d github -U postgres

Postgresqlのテーブルのカラムにインデックスを貼るには


#例

CREATE INDEX repositories_colum_name_index ON repositories USING GIN (colum_name)

Repository.phpの例

namespace App;

use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;

class Repository extends Model
{
 	use Searchable;
    public function toSearchableArray()
    {
    	return [
    			'name' => $this->name,
    			'description' => $this->description,
    			'readme' => $this->readme,
    	];
    }
}

scout.phpの例

'driver' => env('SCOUT_DRIVER', 'pgsql'),
'pgsql' => [
	// Connection to use. See config/database.php
	'connection' => env('DB_CONNECTION', 'pgsql'),
	// You may want to update index documents directly in PostgreSQL (i.e. via triggers).
	// In this case you can set this value to false.
	'maintain_index' => true,
],

composer require pmatseykanets/laravel-scout-postgres
sudo php artisan scout:import "App\Repository"

インデックスの意味とメリット・デメリット

インデックスを作成しておくと便利ではありますがメリットだけではありません。テーブルとは別にデータを独自に保持しますので、テーブルにデータを追加するとインデックスの方にもデータが追加されます。多くのインデックスを作成した場合、データを追加するたびにテーブルに加えて全てのインデックスにデータが追加されるためデータ追加時の処理が遅くなります。

GiSTおよびGINインデックス種類

GINインデックスの検索はGiSTの約3倍高速です

GINインデックスの構築はGiSTの約3倍時間がかかります

GINインデックスに対する更新はGiSTよりも非常に低速ですが、もし高速更新サポートを無効にしている場合は10倍の低速になります(詳細は項52.3.1を見てください)

GINインデックスは、GiSTインデックスより2から3倍大きいです

参考サイト

https://github.com/pmatseykanets/laravel-scout-postgres

https://readouble.com/laravel/5.3/ja/scout.html

https://www.postgresql.jp/document/8.4/html/textsearch-indexes.html

 

Laravel5.3 paginationをカスタマイズする

cd path/to/the/laravel_directory

Artisanコマンドを使い設定を公開、リソースや設定を開発者が変更可能な場所へ用意します。

php artisan vendor:publish --tag=laravel-pagination

設定ファイルをresources/views/vendor/pagination/にコピーしたので
このディレクトリ直下のdefault.blade.phpを編集してカスタマイズ