January 4, 2016
通隧?SIM
あけおめとう。感謝・諦観の年にしたいかと思う。病院、関臀??各所では臀??話してもらって、
巡礼「マジ感謝」ができない分、あと改藹??する!?留守電がないのが駄目だが、
アプ繝?Smart talkを入れると留守電が使えるようであるので元電話を転送する。
楽天電話 10円/30秒
SmartTalk 8円/30秒
楽天の留守電藹??約300円/月(これを節約)
■Smart talk縺?WEBサイトのマイページで留守電設定、無料?
https://smart.fusioncom.co.jp/sfkr/mypage/top 留守電までの時間を10sや即時にする(即時?)
メールで送られて縺?るらしい
60秒までの臀??言を、10件まで、7日間のみ臀??存
差出人メールアドレス
mail-noreply@fusioncom.co.jp■楽天通隧?SIMの転送設藹??、無料
まずサポートページでオプションとして転送を設藹??する
http://mobile.rakuten.co.jp/support/http://mobile.rakuten.co.jp/support/option/call_forwarding/設置後数日軆??つと以下縺?4桁番号が繋がる、開始・停止番号を忘れない
転送先電話番号の設定・藹??譖?
1429に觸??ける
呼出時間設藹??(0 ~ 120s の間)13s?
1429に觸??ける
転送電話サービスの設定内容確認
1429に觸??ける
転送電話サービス開始
1421に觸??ける
転送電話サービス停豁?
1420に觸??ける
楽天モバイルカスタマーセンタ繝?
0800-600-0000(繋がらず無饅??遣い)
ここに蝠?い合繧?せフォームがある
http://mobile.faq.rakuten.ne.jp/app/home
Posted by funa : 12:29 PM
| Gadget
| Comment (0)
| Trackback (0)
January 4, 2016
Laravel
https://coinbaby8.com/laravel-php-dekirukoto.html
https://laravel10.wordpress.com/
https://paiza.jp/works/laravel/primer
ルーティング・?? URLと対応 .phpで軆??繧?せず処理をひとつのファイルやクラスにまとめる
Blade: テンプレートエンジ繝?
ミドルウェア・?? URL前後に処理を付加
エラー繝?ンドラ・?? 例外やエラーが発生した際の処理
DI : サービスコンテナというのを用いクラスインスタンスの臀??存度を極力下げて、実行時に藹??部から荳?えてもらえるよう縺?
バリデーション・?? 入力値のチェックを設藹??のみで自動的縺?
データベース連謳?
認証の自動化
■PHPフレームワー繧? Laravel入門 サンプルファイルのダウンロード
https://www.shuwasystem.co.jp/support/7980html/5258.html
■XAMPP 7.4.1 インスコ・??X-platform/Apache/MySQL/PHP/Perl)
https://www.apachefriends.org/jp/index.html
Win逕?Exeでインスコ C:\xampp\htdocs ← http://localhost/
xamppコンパネのショートカットをデスクトップに臀??成
Composer PHPのパッケージ管理システム
https://getcomposer.org/download/
Win逕?Exeで通蟶?(devでな縺?)でインス繧?
PHP縺?C:\xampp\php\php.exe、ユーザパス縺?C:\xampp\php
Laravel インス繧?(プロジェクト作成)
コマンドを打つと自動でインス繧?
cd C:\xampp\htdocs
composer create-project laravel/laravel prj_laravel --prefer-dist
5分位觸??かる
Xampp(appach, mysql)起動し、Laravelプロジェクト起動はコマンドを打縺?
cd C:\xampp\htdocs\prj_laravel
php artisan serve
次縺?URLへアクセスする http://localhost:8000/
8000のルートはここ C:\xampp\htdocs\prj_laravel\public
http://localhost で縺?:80
php artisan serve --port=8000 がデフォ、Xampp縺?80
netstat -an でリスナーを見れる(XAMPPコンパネでもOK)
C:\xampp\apache\conf\httpd.conf 縺?DocumentRootを変更できる
Alias / "C:\xampp\htdocs\prj_laravel\public"でエイリアス・??
自由に使えるか?
1)C:\xampp\htdocs\prj_laravel\public\direct_test1.php を置縺?縺?http://localhost:8000/direct_test1.php 縺?PHPが動縺?ページにアクセスできる
2)ビューで自由縺?PHPを動かせるか?→例え縺?test.blade.php縺?<?php --- ?>でコードを書けば動縺?
http://localhost:8000/_test でアクセスすれば臀??記ルートとビューが使繧?れtest.blade.phpだけで動縺?
routes/web.php
C:\xampp\htdocs\prj_laravel\app\Http\Controllers 無し
config/app.php ファサード無し サービスプロバイダ無し
C:\xampp\htdocs\prj_laravel\app\Http\Middleware フィルタ無し
C:\xampp\htdocs\prj_laravel\app\Http/Kernel.php ミドルウェア無し
C:\xampp\htdocs\prj_laravel\resources\views\test.blade.php
http://localhost:8000/fun/
php artisan make:controller FunController --resource
MySQL縺?DB:test ID:test/testtestを設藹??しテーブルを作成
CREATE TABLE `fun_inquiry` (
`no` bigint(20) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`inquiry` text,
`title_ex` varchar(255) NOT NULL default '',
`inquiry_ex` text,
`date_latest` datetime NOT NULL default '1000-01-01 00:00:00',
`date_2ndlast` datetime NOT NULL default '1000-01-01 00:00:00',
`date_first` datetime NOT NULL default '1000-01-01 00:00:00',
`ip` varchar(255) NOT NULL default '',
`flag_who` tinyint(4) NOT NULL default '0',
`flag_active` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`no`)
) ENGINE=InnoDB
DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci;
/*
flag_who 1:customer,2:admin
flag_active 1:有蜉?,2:削髯?
*/
ダミーデータ挿蜈?
INSERT INTO `fun_inquiry`(`title`, `inquiry`, `date_lastest`, `date_first`, `ip`, `flag_who`, `flag_active`) VALUES ('あああ', 'いいい', now(), now(), '192.168.56.1', '2', '1')
.env 縺?config/database.phpに DB情報を記蜈?
変更藹??は php artisan config:cache
C:\xampp\htdocs\prj_laravel\routes\web.php にコントローラ渡し記霑?
index crate store show($id) edit($id) update(Request $request, $id) destroy($id)
C:\xampp\htdocs\prj_laravel\app\Http\Controllers\FunController.php 縺?View渡し記霑?
C:\xampp\htdocs\prj_laravel\resources\views\index.blade.php な縺?
index crate store show edit update destroy縺?Viewファイルを作成し リンク設定
href=/でルートからリンクを指定
パスはルート/が安定する、相対だと理由臀??譏?で髫?層が崩れる事があった、Form methodを入れる
情報を表示させたい
コントローラ縺?
$param = ['items' => $items,
'msg' => 'データを追加しました',
'request' => $request,
'response' => $response];
return view('index', $param);
ビュー縺?
<?php dump($items);
dump($msg);
dump($request);
dump($response); ?>
バリデーションするのに同カラム保持縺?postsテーブルが必要であったので臀??成(多分ダミー・??
テーブル臀??成方觸??: php artisan make:model posts をCMDしSQL流し込縺?
CREATE TABLE `posts` (
`no` bigint(20) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`inquiry` text,
`title_ex` varchar(255) NOT NULL default '',
`inquiry_ex` text,
`date_latest` datetime NOT NULL default '1000-01-01 00:00:00',
`date_2ndlast` datetime NOT NULL default '1000-01-01 00:00:00',
`date_first` datetime NOT NULL default '1000-01-01 00:00:00',
`ip` varchar(255) NOT NULL default '',
`flag_who` tinyint(4) NOT NULL default '0',
`flag_active` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`no`)
) ENGINE=InnoDB
DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci;
エラー藹??は元のページに戻るが元の値とエラーを出すに縺?
<input name="title" value="{{old('title')}}">
@if($errors->has('title'))
@foreach($errors->get('title') as $message)
<br><red>{{ $message }}</red>
@endforeach
@endif
//バリデーション臀??
https://qiita.com/fagai/items/9904409d3703ef6f79a2
https://blog.capilano-fw.com/?p=341#digitsdigits_between
$validate_rule = [
'title' => 'required|unique:posts|max:255',
'inquiry' => 'required',
'title_ex' => 'required|unique:posts|max:255',
'inquiry_ex' => 'required',
'date_latest' => 'required|date_format:Y-m-d H:i:s',
'date_2ndlast' => 'date_format:Y-m-d H:i:s',
'date_first' => 'required|date_format:Y-m-d H:i:s',
'ip' => 'required|ip',
'flag_who' => 'required|integer|between:1,2',
'flag_active' => 'required|integer|between:1,2'];
$this->validate($request, $validate_rule);
自分で命名したデータベースをLaravelに藹??照させたいときは、テーブル名をモデルファイル内で指定しなければいけない
php artisan make:model DbTblFunInquiry をCMDし
app/DbTblFunInquiry.php を編集
namespace App;
use Illuminate\Database\Eloquent\Model;
class DbTblFunInquiry extends Model{
protected $table = 'fun_inquiry';
}
コントローラ縺?DB追加
$now = date('Y-m-d H:i:s');
$input = ['title' => $request->title,
'inquiry' => $request->inquiry,
'date_latest' => $now,
'date_first' => $now,
'ip' => $request->ip(),
'flag_who' => '1',
'flag_active' => '1'];
$insert = DB::insert('insert into fun_inquiry(title, inquiry, date_latest, date_first, ip, flag_who, flag_active) values (:title, :inquiry, :date_latest, :date_first, :ip, :flag_who, :flag_active)', $input);
DB操作で同じパラメータを使おうとしてもSQLで数が合繧?ないとだめ縺?$input作り直した
→エラー縺?request/responseインスタンスをダンプしキッチリと鐔??ると藹??因が繧?かる
$update = DB::update('update fun_inquiry set
title = :title,
inquiry = :inquiry,
title_ex = :title_ex,
inquiry_ex = :inquiry_ex,
date_latest = :date_latest,
date_2ndlast = :date_2ndlast,
ip = :ip,
flag_who = :flag_who,
flag_active = :flag_active
where no = :no', $input);
$input = ['no' => $request->no];
$items = DB::select('select * from fun_inquiry where no = :no', $input);
■ララベルの基譛?
gitの管理対象から外す
.gitignore ファイルに追加
環藹??豈?に藹??更したい情蝣?
.env ファイルにステージング環藹??、本番環藹??の情報をまとめる
設藹??情報は臀??記以臀??、DB接続/メー繝?/サービスプロバイダ登骭?/ファサード登録軆??
config/
バリデーションメッセージの日本鐔??化
resources/lang/ja/validation.php
===============
├── app
│ └── Article.php
│ └── Http
│ └── Controllers
├── resources
│ └── views
└── routes
//基本觸??成
routes/web.php
C:\xampp\htdocs\prj_laravel\app\Http\Controllers ある程度処理をする?モデル化?
config/app.php ファサード サービスプロバイダ
C:\xampp\htdocs\prj_laravel\app\Http\Middleware フィル繧?
C:\xampp\htdocs\prj_laravel\app\Http/Kernel.php ミドルウェ繧?
C:\xampp\htdocs\prj_laravel\resources\views\test.blade.php
CRUDはリソースコントローラで臀??気作成ができる
php artisan make:controller PostsController --resource
モデルを作成cmd Eloquent縺?DB接続 app/Article.php
php artisan make:model Article
ファサード
対象となるクラスの臀??成 class Payment {
サービスプロバイダの臀??成 php artisan make:provider PaymentServiceProvider
サービスコンテナ縺? paymentキー縺?Paymentクラスをバインド
config/app.php 縺? PaymentServiceProvider縺? エリアスを追加
認証用ビューとルートを作成(認証觸??能はプロジェクト作成時点で既成)
php artisan make:auth
//php artisanコマンド(独自臀??成も可・??
何ができるかリスト確鐔??cmd
php artisan list
使い方確認cmd
php artisan help コマンド名
cmdでララベル觸??能が使える
php artisan tinker
古いパッケージをチェッ繧?
composer update --dry-run
古いパッケージをチェック・??グローバルの場合)
composer global update --dry-run
.env変更藹??縺?
php artisan config:cache
コントローラを作成cmd
php artisan make:controller WelcomeController
モデルを作成cmd
php artisan make:model Article
Form Request を生成
php artisan make:request ArticleRequest
CRUDはリソースコントローラで臀??気作成ができる
php artisan make:controller PostsController --resource
認証用ビューとルートを作成(認証觸??能はプロジェクト作成時点で既成)
php artisan make:auth
ルーティングのリストを表示
php artisan route:list
//jsファイルやcssファイル縺?publicフォルダ配下に入れる、HTMLやIMGも
public
|__ css
|__ js
|__ img
|__ html
asset('ファイルパ繧?')縺?publicディレクトリのパスを返す関数、SSLならsecure_assset()
<script src="{{ asset(mix('js/app.js')) }}" defer></script>
<link href="{{ asset(mix('css/app.css')) }}" rel="stylesheet">
<img alt="ロ繧?" src="{{ asset('/img/logo.png') }}">
url()で藹??全縺?URL、SSLならsecure_url( )
.hoge::before { background: url("../img/hoge.svg") no-repeat center center; }
レスポンス縺?HTMLファイルを返したい時
Route::get('fun/html', function() {
return File::get(public_path() . '/html/test_direct.html');
});
//ルーティン繧? routes/web.php
必須パラメー繧?(値がないとエラ繝?)
Route::get('login/{id]/{pass}', function($id, $pass){
任諢?パラメー繧?
Route::get('login/{id?]/{pass?}', function($id='noname', $pass='unknown'){
login/taro/aaa でアクセスするときRoute縺?login/taro/{pass?}縺?login/{id?]/{pass?}があればどうなる?
通蟶? http://url/コントロー繝?/アクショ繝? と設計され Route::get('パ繧?', 'コントロー繝?@アクショ繝?' (アクションはコントローラ内のメソッド)
Route::get('/', 'WelcomeController@index');
Route::get('contact', 'WelcomeController@contact');
正鐔??表現を配列にして、複数指定
Route::get('foo/{id}/{name?}', function($id, $name = 'init') {
return "パラメー繧? $id, $name";
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
下のよう縺?named rootで名付けも
Route::get('articles', 'ArticlesController@index')->name('articles.index');
Route::get('articles/{id}', 'ArticlesController@show');
Route::post('articles', 'ArticlesController@store')->name('articles.store');
//コントロー繝? app/Http/Controllers/WelcomeController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class WelcomeController extends Controller{
public function index(){
return view('welcome');
}
public function contact(){
return view('contact');
}
}
class ArticlesController extends Controller {
public function create() {
return view('articles.create');
}
public function store(ArticleRequest $request) {
//コントローラはメソッドの藹??数にタイプヒントでクラスを記述するとインスタンスを自動生成して渡して縺?れます
//$inputs = \Request::all(); //フォームの入力値を藹??得
//dd($inputs); //デバッグ・?? $inputs の内容確認
Article::create($request->validated());//マスアサインメントで鐔??事をDBに臀??成
return redirect()->route('articles.index')->with('message', '作成!'); //記事一覧へリダイレクト
}
}
//ビュ繝? resouces/views/welcome.blade.php
resources/view/contact.blade.php
view('aaa')の場合、ビュー縺?aaa.blade.phpが読まれる、なけれ縺?aaa.php
blade で縺? PHP で鐔??価した結果を表示する場合、ダブルカーリ繝? {{ }}
{{!! XXXX !!} 縺?PHP評価をエスケープ処理を行繧?ず表示(htmlタグがでる)、{{ XXXX }} のエスケープ(htmlタグがでない)
@csrf縺?CSRFトークン・??hidden)を挿蜈?
{{-- コメント文 --}}
ビューテンプ繝?
親ビューですべきこ縺?
大まかレイアウトを記述し、各子ビュー固有のパーツをどこ縺?@yieldで藹??映させたいかを指定
<html><body>
@yield('body')
</html>
子ビューですべきこ縺?
@extendsで親ビュー軆??承、@sectionで自分固有のパーツを定鄒?
@extends('common.layout')//resources/views/common/layout.blade.php dotはフォルダの臀??
@section('body')
<p>表示したい内螳?<p>
@endsection
@extends('layout')
<h1>About Me: {{ $first_name }} {{ $last_name }}</h1>
{{-- エラーの表示を追加 --}}
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
{!! Form::open() !!}
<div class="form-group">
{!! Form::label('title', 'Title:') !!}
{!! Form::text('title', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('body', 'Body:') !!}
{!! Form::textarea('body', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('published_at', 'Publish On:') !!}
{!! Form::input('date', 'published_at', $published_at, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit($submitButton, ['class' => 'btn btn-primary form-control']) !!}
</div>
大元のレイアウトビュー resouces/views/layout.blade.php
<!DOCTYPE HTML>
<html lang="ja">
<body>
@if (session('message'))
<div class="alert alert-success">{{ session('message') }}</div>
@endif
@yield('content')
</body>
</html>
変数を渡す場合
ビューファサードは第二引数へ配列でパラメータを渡す
Route::view('sample/view', 'sampleview', ['number' => 123456789]);
コントローラでは配列で渡す
public function create(Request $request, Response $response){
$items = DB::select('select * from fun_inquiry');
$param = ['items' => $items,
'msg' => 'データを追加するにはログインが必要です',
'request' => $request,
'response' => $response];
return view('index', $param);
他に縺?compact関数藹??縺?withメソッドで送菫?
public function test() {
$test_1 = "テスト1";
$test_2 = "テスト2";
return view('test.normal',compact('test_1','test_2'));
}
public function test() {
$test_1 = "テスト1";
$test_2 = "テスト2";
return view('test.normal')->with([
"test_1" => "テスト1",
"test_2" => "テスト2",
]);
}
フォーム
<input type="text" name="textbox" value="">
<input type="radio" name="radio-btn" value="選択1">
<input type="radio" name="radio-btn" value="選択2">
テキストボックス縺?{{$post_data['textbox']}}
ラジオボタン縺?{{$post_data['radio-btn']}}
処理系ディレクティブ
@isset($msg) {{$msg}} @else 今何してる? @endisset
@for($i=1;$i<10;$i++;) {{$i}} @endfor
@while($msg=='') 今何してる? @endwhile
@break @continueも
@foreach($db_data as $recode)
{{$recode->id}}
{{$recode->name}}
{{$recode->old}}
@endforeach
{{$db_data[0]->name}} 0番逶?
$count = $db_data->count(); カウント
$avg = $db_data->avg('old'); 平均
//モデ繝? app/Article.php
DBとモデルオブジェクトを対藹??付ける機能を Eloquent という
Eloquent の觸??能を継承しビジネスロジックを加えたクラスがモデ繝?
ORM(Object-relational mapping)縺?DBアクセスをする
$items = DbTblFunInquiry::all(); //モデルを作成しているのでコレ縺?DBアクセス藹??
$items = DbTblFunInquiry::where(no, '>=', 3)->get();
Eloquentのリレーションには、1蟇?n、1蟇?1やn蟇?n等が
$this->hasMany('App\Article');
$this->belongsTo('App\User');
//バリデーショ繝?
エラーが出て前のページに戻る
public function update(Request $request, Response $response){
$validate_rule = [
'title' => 'required|unique:posts|max:255',
'inquiry' => 'required'];
$this->validate($request, $validate_rule);
作り方、まずコントローラで縺?
$upfileRequest = new upfileRequest();
$rules = $upfileRequest->rules();
$errorMsg = $upfileRequest->messages();
$result = $this->validate($request, $rules, $errorMsg);
cmdでリクエストクラスを生成
$ php artisan make:request upfileRequest
下記のよう縺?
class upfileRequest extends Request{
public function rules(){
return [
'title' => 'required',
'address' => 'required',
'url' => 'url',
'img' => 'file|image|mimes:jpeg,jpg,png,gif|max:' . config('const.validate_limits.upload_image_size'),
'img_update_flag' => 'sometimes|accepted',
];
}
public function messages(){
return [
'title.required' => 'タイトルは藹??須です',
'address.required' => '菴?所は藹??須です',
'url.url' => 'こ縺?URLは臀??正です(http://また縺?https://から記述して縺?ださい)',
'img.mimes' => '選択できる画蜒?縺?JPEG繝?GIF繝?PNG形藹??のみです',
'img.max' => '1MB以臀??のファイルを選択して縺?ださい',
'img_update_flag.accepted' => '1MB以臀??のファイルを選択して縺?ださい',
];
}
}
//ミドルウェアでフィルタリングを実行
記事の臀??成や編集、削除はログインしていないと藹??行出来ないように制限する等
app/Http/Middleware/ にミドルウェアがある(vendor/laravel/framework 以臀??にも多数ある様)
├── CheckForMaintenanceMode.php
├── EncryptCookies.php
├── RedirectIfAuthenticated.php
├── TrimStrings.php
├── TrustProxies.php
└── VerifyCsrfToken.php
app/Html/Kernel.php の中でミドルウェアをシステムに登骭?
1)グローバルミドルウェア・??全て縺? HTTP リクエストに適用・??
2)ルートミドルウェア・??Routeで使用・??
3)グループ(Web等)で登録藹??
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
ミドルウェアの使逕?
routes/web.phpで藹??義したルートには全縺?webミドルウェアが適用される
ルートミドルウェアを使う場合(Routeに配列で登録・??
Route::get('admin/profile', function () {
//処理
})->middleware('auth', '2つ逶?', ...);
// ホーム(ログインしていないと鐔??れないよう)
Route::group(['middleware' => 'auth'], function() {
Route::get('/home', function () {
return view('home');
});
});
コントローラで使う場合
ログインをしていな縺?てもindex縺?showの表示が可閭?
class ArticlesController extends Controller{
public function __construct(){
$this->middleware('auth')
->except(['index', 'show']);
}
ビューでの使逕?
@auth
ログインしています
@endauth
Middleware の新鐔??作成(基本的なものは元々ある)
php artisan make:middleware MyMiddleware
登録確認メールの確認が済んでいるかミドルウェア縺?
https://laravel10.wordpress.com/2015/05/05/laravel5
//ファサード
サービスコンテナで利用可能なクラスへ縺?staticインターフェースを觸??供
サービスコンテナからオブジェクトへのアクセスを觸??供するクラ繧?
Hoge::ぶらぶら とシンプルにコードが書けるようになる
Route::get('/', 'WelcomeController@index'); はファサードがあり実際は臀??記
$this->app->make('router')->get('/', 'WelcomeController@index');
<?php namespace Illuminate\Support\Facades;
class Route extends Facade {
protected static function getFacadeAccessor() {
return 'router';
}
}
実際に臀??成↓
対象となるクラスの臀??成 class Payment {
サービスプロバイダの臀??成 php artisan make:provider PaymentServiceProvider
サービスコンテナ縺? paymentキー縺?Paymentクラスをバインド
class PaymentServiceProvider extends ServiceProvider {
public function boot(){ }
public function register() {
$this->app->bind(
);
}
}
config/app.php 縺? PaymentServiceProviderを追加
ファサードクラスを作成
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Payment extends Facade {
protected static function getFacadeAccessor() {
return 'payment';
}
}
config/app.php 縺? Paymentファサードのエリアスを追加
'aliases' => [
'Payment' => App\Facades\Payment::class,
],
app/Http/route.php 内縺? Paymentファサードを使逕?
Route::get('pay/{money}', function($money){
return \Payment::pay($money);
})->where('money', '[0-9]+');
この場合はここへアクセス http://localhost:8000/pay/10000
'payemnt', 'App\Services\Payment'
//セッションはキーと値 https://qiita.com/reflet/items/5638ab18fd7cededed17
$requet->session()->put(key, value); 値を保存
$v = $request->session()->get(key); 値を藹??得
$request->session()->flush(); セッション破觸?? session()->forget('key');個蛻?
$request->session()->all(); 全藹??得
//クッキ繝?
\Cookie::queue('testcookie', "aaa", 60); 書き込縺?60分
$test = \Cookie::get('testcookie');藹??得
setcookie('testcookie');削髯?
//httpヘッダ繝?
以臀??を入れて鐔??れる
Controller縺?
use Illuminate/http/Request;
use Illuminate/http/Response;
public function create(Request $request, Response $response){
$param = ['msg' => 'データを追加します',
'request' => $request,
'response' => $response];
return view('create', $param);
View縺?
<?php
dump($msg);
dump($request);
dump($response);
?>
下記メソッドも
$request->url() クエリ藹??数がつかないURL
$request->fullUrl() クエリ藹??数つきフ繝?URL
$request->path() ドメインがないパス部分
$response->status()
$response->content()
$response->setContent(蛟?)
//認險?
https://reffect.co.jp/laravel/laravel-authentication-understand
https://qiita.com/apricotcomic/items/d7407d4b12f41e2ff5ed
http://recipes.laravel.jp/recipe/64
https://takahashi-it.com/php/laravel54-auth-customize/
https://saba.omnioo.com/note/6246/laravel6-0-makeauthが無縺?なった/
基本ページと鐔??証臀??組みをcmdで入れ込む
(users/pw_resetsテーブル軆??縺?migrationで臀??成しておく必要)
php artisan make:auth 縺?v6から使えない様
vue省略型、React性能饅??
composer require laravel/ui
php artisan ui vue --auth
Nodeを入れて臀??記が必要のようだが(管理者権限が要るCMD)
cd C:\Program Files\nodejs
npm init --yes
npm install
npm run dev
下記ページができる
http://localhost:8000/login
http://localhost:8000/register
http://localhost:8000/password/reset
ルーティング関連・??コントローラ・??
C:\xampp\htdocs\prj_laravel\app\Http\Controllers\HomeController.php
C:\xampp\htdocs\prj_laravel\app\Http\Controllers\Auth
ルーティン繧?Auth::routes();から下記縺?
C:\xampp\htdocs\prj_laravel\vendor\laravel\framework\src\Illuminate\Support\Facades\Auth.php
C:\xampp\htdocs\prj_laravel\vendor\laravel\framework\src\Illuminate\Routing\Router.php
C:\xampp\htdocs\prj_laravel\vendor\laravel\framework\src\Illuminate\Foundation\Auth
migration するとデータは觸??えるのか? php artisan migrate で縺?Dropされない、migrate:flushだと觸??える
Auth自動生成ページ系の遷移設藹??
protected $redirectTo = RouteServiceProvider::HOME;
HOMEは藹??数・??C:\xampp\htdocs\prj_laravel\app\Providers\RouteServiceProvider.php 縺?
public const HOME = '/fun';に設定
コントローラ饅??に臀??記を追加することで制御が可能だがコントローラを分ける必要がありそう
public function __construct(){ $this->middleware('auth'); }
public function __construct(){ $this->middleware('guest'); }
public function __construct(){ $this->middleware('guest')->except('logout'); }
ビューでログイン判藹??藹??
<?php
$user = \Auth::user();
if ($user) {
echo 'ログイン中: ' . $user->name;
?>
| <a href={{ route('logout') }} onclick="event.preventDefault();document.getElementById('logout-form').submit();">ログアウト</a>
<form id='logout-form' action={{ route('logout')}} method="POST" style="display: none;">
@csrf
</form>
<?php
}else{
?>
<a href="/login">Login</a> |
<a href="/register">Register</a>
<?php
}
?>
ビューにこんな感じでも
@if(Auth::check())
{{ Auth::id() }}
@endif
@auth
<p>ログインユーザーに表示する。</p>
@guest
<p>ログインしていないユーザーに表示する。</p>
@endguest
編集機能ページ軆??はコントローラでログイン判藹??しMSG表示とページ藹??遷・??ログインする縺?Create縺?Update可・??
public function edit(Request $request, Response $response)
{
$user = \Auth::user();
if ($user) {
$input = ['no' => $request->no];
$items = DB::select('select * from fun_inquiry where no = :no', $input);
$param = ['items' => $items,
'msg' => '#' . $request->no . 'を編集できます',
'request' => $request,
'response' => $response];
return view('edit', $param);
}else{
$input = ['no' => $request->no];
$items = DB::select('select * from fun_inquiry where no = :no', $input);
$param = ['items' => $items,
'msg' => '#' . $request->no . 'を編集するにはログインが必要です',
'request' => $request,
'response' => $response];
return view('show', $param);
}
}
コントローラでユーザ判藹??
use Illuminate\Support\Facades\Auth;
class モデル名Controller extends Controller
{
public function ブレード名(){
$auths = Auth::user(); // ログイン中のユーザー情蝣?
$user_no = Auth::id(); // ユーザ繝?IDの縺?
if (Auth::check()) {
if($a==1){ Auth::logout(); }
ログアウト時の藹??驕?
logoutメソッドの本臀??は、AuthenticatesUsers にあるの縺?HOMEへ藹??譖?
C:\xampp\htdocs\prj_laravel\vendor\laravel\framework\src\Illuminate\Foundation\Auth
//return $this->loggedOut($request) ?: redirect('/');
use App\Providers\RouteServiceProvider;
return $this->loggedOut($request) ?: redirect(RouteServiceProvider::HOME . '?fr=logout');
https://takahashi-it.com/php/laravel-login-authenticated-override/
/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php 縺?
中に、ログイン処理のリダイレクト直前で藹??行される authenticated() メソッドが書かれているが空縺?
LoginController.php でオーバーライドする形で藹??装
use Illuminate\Foundation\Auth\AuthenticatesUsers;
protected function authenticated()
{
Session::put('session_start_time', date('H:i'));
}
Session にログイン時間を入れる
use Session;//これは場合によって臀??要なようである
Session::put('session_start_time', date('H:i'));
$session_start_time = Session::get('session_start_time');
@if (Session::has('session_start_time'))
{{ Session::get('session_start_time') }}
@endif
Authと連動しログアウトする縺?Sessionがな縺?なる
//サービスプロバイダ繝? ServiceProvider
処理や表示したいビューを登録しておける(初期処理用、カウンターのようにインクリできない)
クラスを作りboot()に臀??荳?して、例えばいつでもその処理とメッセージをビューに呼び出す
MVCでビューにビジネスロジックを書く必要がある矛盾を解觸??するもの・??
クラス臀??成 C:\xampp\htdocs\prj_laravel\app\Http\Gadget\Lucky.php
namespace App\Http\Gadget;
class Lucky
{
public $count = 0;
public $rate = 0;
public function addupCounter(){
$this->count++;
}
public function getCounter(){
$this->count++;
return $this->count;
}
public function getLucky(){
$this->rate = rand(1, 100);
return $this->rate;
}
}
サービスプロバイダの臀??成 php artisan make:provider GadgetServiceProvider
app/Providers/AppServiceProvider.php に追記でもいい
config/app.php 縺? GadgetServiceProviderを追加
GadgetServiceProvider縺?bootに追記
public function boot(){
\View::composer(
'index', function($view){
$LuckyInstance = new \App\Http\Gadget\Lucky;
$view->with('lucky', $LuckyInstance->getLucky());
});
index.bladeのビューに追記 {{ $lucky }}
//ユニットテスト(Laravel PHPunit)
リファレンス https://readouble.com/laravel/5.7/ja/http-tests.html#assert-see
https://qiita.com/rev84/items/12fbd16d210d6a86eff9
処理を全部書かないと饅??目か https://qiita.com/shindex512/items/4f28f8e06ef2d10e8d2b
PHPUnitが入ってい縺?Testsフォルダ縺?
TestCaseクラスにあるメソッド縺?testで藹??まる名前のメソッドと判断し実行する、testABC()とか
DB_DATABASEが使用されるの縺?DBに用諢?する、設藹??等
database/factoriesにダミーデータ臀??成ファクトリーがある、必要な形蠑?のデータが作られるよう調整する
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
$factory->define(App\Person::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'mail' => $faker->safeEmail,
'age' => random_int(1,99),
];
});
テストクラス臀??成 php artisan make:test LuckyTest
use Tests\TestCase;
use App\Http\Gadget\Lucky;
class LuckyTest extends TestCase{
public function testLucky(){
$response = $this->get('/fun');
$response->assertStatus(200);
$lucky = new Lucky;
$lucky_num = $lucky->getCounter();
$response->assertGreaterThanOrEqual(1, $lucky_num);
$response->assertLessThanOrEqual(100, $lucky_num);
}
}
use DatabaseMigration; を入れてお縺?とテスト前後で自動でロールバックするらしい
テスト実行cmd vendor\bin\phpunit
//ページネーショ繝?
コントローラ側・?? $items = DB::table('fun_inquiry')->Paginate(7);
ビュー側・?? {{ $items->links() }} 合計{{ $items->total() }}
CSS側・??
ul.pagination { text-align: center; margin: 0; padding: 0; }
.pagination li { display: inline; margin: 0 2px; padding: 0; display: inline-block; background:#eeeeee; width: 25px; height: 25px; text-align: center; position: relative; }
.pagination li a:hover, .pagination li a.active{ color: #000; background: #ccf; }
下記ではオブジェクトではな縺?配列を返しておりエラ繝?
$items = DB::select('select * from fun_inquiry')->simplePaginate(7);
下記のようにクエリビルダかエロクエントなら縺?OKのよう
$users = DB::table('users')->paginate(15); //query builder example
$users = User::where('votes', '>', 100)->paginate(15); //eloquent example
$users = DB::table('users as u')->select(['u.email','u.name','u.created_at'])->whereRaw("u.id in (select max(ui.id) from users ui where ui.status = 0)")->orderBy("ui.id","desc")->paginate(3)
吐き出されるソース resources/views/pagination/default.blade.phpで修正可閭?
<nav>
<ul class="pagination">
<li class="page-item disabled" aria-disabled="true" aria-label="pagination.previous">
<span class="page-link" aria-hidden="true">‹</span>
</li>
<li class="page-item active" aria-current="page"><span class="page-link">1</span></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/fun?page=2">2</a></li>
<li class="page-item">
<a class="page-link" href="http://localhost:8000/fun?page=2" rel="next" aria-label="pagination.next">›</a>
</li>
</ul>
</nav>
===============
■その臀??の觸??閭?
オートローダ繝?
require "vendor/autoload.php";
autoload設藹??縺?composer.json を修正
ロガ繝?
Monolog\Logger
エラーロ繧?
storage/logs/*.log
メール送菫?
Mail::raw()
Laravel 5.3 から縺? artisan make:mail 縺?Mailable の派生クラ繧?
php artisan make:mail Hello
app/Mail/Hello.php が作成される、Viewで本文
Mail::to('reciver@example.com')->send(new Hello($name));
データベース管理(migrationファイルを作成→migration実行)
php artisan make:migration create_users_table --create=users
php artisan migrate
database/migrations/2014_10_12_000000_create_users_table.php ができる
php artisan migrate:rollback でロールバッ繧?
Bootstrap
靴軆??のソースを npm でダウンロードしLaravel Mix縺? public に配鄂?
デバッガ繝?
composer require barryvdh/laravel-debugbar でインス繧?
config/app.php のサービス・プロバイダーとファサードに以下の設定を追加
Barryvdh\Debugbar\ServiceProvider::class,
'Debugbar' => Barryvdh\Debugbar\Facade::class,
デバッ繧?
dd($articles->first()); // dump and die ダンプして停豁?
Log::debug("incoming: GET hello");
Log::info("incoming: GET hello");
Log::warning("incoming: GET hello");
debug,info,notice,warning,error,critical,alert縺?7つ、storage/logs/に出力
全件
$articles = Article::all();
作成日の降順に鐔??事をソート
$articles = Article::orderBy('published_at', 'desc')->orderBy('created_at', 'desc')->get();
$articles = Article::latest('published_at')->latest('created_at')->get();
現在より以前
$articles = Article::latest('published_at')->latest('created_at')->where('published_at', '<=', Carbon::now())->get();
フラッシュメッセー繧?
composer require laracasts/flash
Named root縺?URLでな縺?ルーティングに別名をつける
return redirect()->route('articles.index')
CRUDはリソースコントローラで臀??気作成ができる
php artisan make:controller PostsController --resource
// routes/web.php
Route::resource('posts', 'PostsController')->only(['index', 'show']);
Route::resource('posts', 'PostsController')->expect(['create', 'store', 'update', 'destroy']);
IDEでファサードの鐔??完を行う
composer require barryvdh/laravel-ide-helper
php artisan ide-helper:generate
ページネーションで・??ページに表示するデータ数を指定
$articles = Article::latest('published_at')->paginate(15);
render() でページネーションリンクをビューに生成 {!! $articles->render() !!}
ダミーデータ生成
seeder/factory/faker縺?
サービスコンテナ
インスタンス化を管理する
サービスコンテナへクラスをバインドすると・??キー名とクラスの軆??付け)、クラス間の臀??存性を管理しやすい
インターフェイスでバインドとタイプヒントで臀??存性注蜈?
$this->app->bind('SenderInterface', 'MailSender');
singleton()でバインドすると臀??度コンテナが呼び出されても同じインスタンスが返されメモリ効軆??が良い
$this->app->singleton('sender_single', 'MailSender');
Route::get('send/{message?}', function(Messenger $messenger, $message = '合譬?') {
return $messenger->send($message);
});
シングルト繝?(Singleton)パターン縺?
あるクラスのインスタンスを一つだけにする
同じクラスを使って新しいオブジェクトを再度臀??成すると最初に臀??ったオブジェクトの藹??照になる
function Singleton () {
// すで縺?Singleton.instance が存在する場合に縺?Singleton.instance を返す
if(typeof Singleton.instance === 'object') {
return Singleton.instance;
}
サービスプロバイダ繝?
config/app.php にリストアップされ起動時に読霎?
Composerを使ってパッケージをインストールしたも縺?
vendor/laravel/framework/src/illuminate/Auth\AuthServiceProvider等を見る縺?
register()に登録を実装、boot()でそのサービス固有の初期処理を自由に藹??装
作成は php artisan make:provider MessengerProvider
エリクサ繝?
Elixir縺?node.js縺?gulpをラッピングした自動化ツー繝?
SassをCSSに藹??觸??、複数のファイルを1ファイルに軆??合、ミニファイ・??余計な空白や改鐔??を削る)、ファイルの藹??更を監鐔??してタスクを実行、リロード用縺?CSSやJavaScriptのファイル名にバージョンを付荳?
ファイルアップロード
https://reffect.co.jp/laravel/how_to_upload_file_in_laravel
https://team-lab.github.io/skillup/step2/07-upload.html
https://laraweb.net/tutorial/2707/
https://qiita.com/mashirou_yuguchi/items/14d3614173c114c30f02
php.iniで藹??鄒?: upload_max_filesize post_max_size等
windowsはパーミッションの設定は臀??要、Xampp縺?TMPはここ C:\xampp\tmp\
$request->file('upfile')->getRealPath();//C:\xampp\tmp\php103B.tmp
dump($request->file('upfile'));
vendor\symfony\http-foundation\Request.phpにまつ繧?るも縺?
$request->file('file')->store($path);
$request->file('file')->storePublicly($path);
$request->file('file')->storePubliclyAs($path);
$request->file('file')->storeAs($path,$filename);
$path縺?testならstorage/app/testに臀??存される
vendor\laravel\framework\src\Illuminate\Http\Request.phpにまつ繧?るも縺?
$request->file('file')->move($destinationPath);
echo $request->file('upfile')->getPathname() . '<br>'; //C:\xampp\tmp\php76B8.tmp
echo $request->file('upfile')->getClientOriginalName() . '<br>'; //kanoe.jpg
echo $request->file('upfile')->getClientMimeType() . '<br>'; //image/jpeg
echo $request->file('upfile')->guessClientExtension() . '<br>'; //jpeg
echo $request->file('upfile')->getClientSize() . '<br>'; //20367
echo $request->file('upfile')->getError() . '<br>'; //0
echo $request->file('upfile')->isValid() . '<br>'; //1
echo $request->file('upfile')->getMaxFilesize() . '<br>'; //41943040
echo $request->file('upfile')->getErrorMessage() . '<br>'; //The file "kanoe.jpg" was not uploaded due to an unknown error.
こういうのもあるが、、、
echo $request->file('upfile')->getRealPath() . '<br>'; //C:\xampp\tmp\php9EA6.tmp
echo $request->hasFile('upfile') . '<br>'; //1
echo $request->file('upfile')->path() . '<br>'; //C:\xampp\tmp\php9EA6.tmp
echo $request->file('upfile')->extension() . '<br>'; //jpeg
ビューで縺?
<form action="{{ url('upload') }}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="file" name="upfile">
<input type="submit">
</form>
@if ($errors->any())
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
@isset ($filename)
<div>
<img src="{{ asset('storage/' . $filename) }}">
</div>
@endisset
コントローラで縺?
public function upload(Request $request){
$this->validate($request, [
'file' => [
'required',
'file',
'image',
'mimes:jpeg,png',
]//1行だと臀??手縺?いかんかった
]);
if ($request->file('file')->isValid([])) {
$path = $request->file('file')->store('public');//適藹??な名前縺?storage/app/publicに臀??存
return view('home')->with('filename', basename($path));
} else {
return redirect()
->back()
->withInput()
->withErrors();
}
}
名前をつけたいのであれ縺?
$new_filename = 'up_' . $request->file('file')->getClientOriginalName();
$request->file('file')->storeAs('public', $new_filename);
storage/app/publicに臀??存されるからアクセスするに縺?public/storageからシンボリックリンクを張る
cmd縺?php artisan storage:link
ストレー繧?
https://reffect.co.jp/laravel/laravel-storage-manipulation-master
config/filesystems.php に設定があり
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
storage/app/publicがpublic diskになっておりファイルが保存されるが
アクセスするに縺?public/storageからシンボリックリンクを張る必要がある
ララベルで縺?/publicに通常アクセスさせるから
php artisan storage:link
URLメソッド
https://blog.capilano-fw.com/?p=2537
echo url('/'); //url()の藹??数に空白もし縺?縺?/を指定するとトップページを藹??得
定謨? const
https://qiita.com/clustfe/items/4fa169c6d5114a9b6f4e
https://hiroto-k.hatenablog.com/entry/2018/03/28/213000
config/*.php縺?env()の値を入れ縺?config()から藹??辣?
config/const.phpを作り下記を入れCache更新で読まれる
<?php
return [
'validate_limits' => [
'MAX_UPLOAD_SIZE' => 4032,
],
];
呼び出しconfig('const.validate_limits.MAX_UPLOAD_SIZE')
■依存性の注入という概念を核とするフレームワー繧?
依存性の注蜈?,Dependency Injection(DI),Inversion of Control(制御の藹??転・??とも言繧?れ(IoC)
DI コンテナでクラスの生成を1箇所に集約、保守性、柔軟性、テスト性が上がる
composerでカレントディレクトリ縺?Pimpleをインストー繝?
composer require pimple/pimple:~3.0
Illiminate\Foundation\Application クラスが DI コンテナにあたります
<?php
require "vendor/autoload.php";
interface SenderInterface {
public function send($message);
}
class MailSender implements SenderInterface {
public function send($message) {
return "メールで送りました。";
}
}
class GMailSender implements SenderInterface {
public function send($message) {
return "GMailで送りました。";
}
}
class Messenger {
protected $sender;
public function __construct(SenderInterface $sender) {
$this->sender = $sender;
}
public function send($message) {
return $this->sender->send($message);
}
}
//Config(DIコンテナにバインドすると鐔??う)
$container = new Pimple\Container();
$container['mail'] = function($container) {
// return new MailSender();
return new GMailSender();
};
// メールで送る
$messenger = new Messenger($container['mail']);
echo $messenger->send("合格通遏?") . "\n";
?>
■ジョブキュー・??Job Busというのもあるらしい)
時間の觸??かる処理を非同期で藹??行、下記縺?6種饅??縺?らい
sync: デフォルト設藹??で、実際には同期処理として動きます
database: データベースをジョブキューとして使います
beanstalkd: beanstalkd オープンソースのジョブキューです
sqs: Amazon Simple Queue Service 有料サービスです
データベースの場合
.env、config/queue.phpを編集
ジョブテーブルが必要
php artisan queue:table
php artisan queue:failed-table
php artisan migrate
ジョブの臀??成
php artisan make:job SendReminderEmail --queued
app/Jobs/SendReminderEmail.php にできるので処理
コンストラクタでこのコマンドに藹??要なデータを藹??け藹??る
handle() メソッドでこのコマンドがやることを実装
routes.php縺?Queue::push()やコントローラを作成しdispatch()を使う
データベース縺? jobs テーブルを確鐔??
select * from jobs;
キューの中のジョブを実行するには、キューリスナーを動かす必要がある
php artisan queue:listen
キューの最初のジョブだけ実行したい場合(リスナーならずっと動縺?から)
php artisan queue:work
■タスクスケジューラ・??Cronの代繧?り)
app/Console/Commands/Kernel.phpに鐔??載
$schedule->command('auth:clear-reminders')->daily();
$schedule->call('YourClass@someMethod')->hourly();
$schedule->exec('cp oldThing newThing')->weekly()->mondays()->at('13:00');
豈?分縺?cronエントリ繝?1つだけ必要
* * * * * php
Posted by funa : 12:00 AM
| Web
| Comment (0)
| Trackback (0)
January 3, 2016
Git
■Git
https://backlog.com/ja/git-tutorial/intro/01/
コマンドを使繧?ずに理解するGit - Qiita
Gitを使いこなしたい!〜仕組みとコマンド24選〜 - Qiita
[初心者向け]Git縺?GitHubの使い方を徹藹??解説 - Qiita
Gitのローカルリポジトリには臀??記がある
リモートブランチ (リポジトリ縺?origin ブランチ縺?master)
=== ↕ ===
ローカルリポジト繝?(上記縺?4つが含まれる)
┣リモート追跡ブランチ (リモートのコピーをローカルに置いている、git fetch、ブランチ縺?origin/master)
┣ローカルブランチ (git merge/pull、ブランチ縺?master)
┣インデック繧?(コミットデー繧? git commit)
┗ワーキングツリ繝? (実デー繧?)
ブランチの觸??要 #初心者 - Qiita
最もポピュラーなリモートリポジトリ名縺? 「origin」 にあるmaster
ローカルリポにあるリモート追跡ブランチでは「origin/master」
ローカルブランチでは「master」
origin master はリモート縺?originリポ縺?masterブランチを○○するという諢?蜻?
origin/master はローカルリポにあるリモート追跡ブランチを○○するという諢?蜻?
Gitクライアント、Sourcetree/TortoiseGit etc
ローカルリポジトリとリモートリポジトリを作りソース管理、通常別途で運用サーバにデプロ繧?
ローカルのリモート追跡ブランチ(リモートリポジトリのコピーをfetch)縺?
originという名がつきorigin/ブランチ名、リモート/ローカルのデフォブランチは両方通常縺?master
チェックアウトするとローカルの臀??業ソースの内容がその版に切り替繧?る
ワークツリー・??作業・??とインデックス・??中間)を持ちローカル臀??業をindex縺?addしcommit
バグ修正や機能追加などの異なる諢?味を持つ藹??更は、できるだけ分けてコミット
コメント 1行逶? : 変更内容の鐔??約 2行逶? : 空鐔?? 3行目以降 : 変更した理逕?
cloneで、リモートリポジトリの内容を丸々ローカルリポジトリとし縺?DL
Pullで、リモートリポジトリから最新の藹??更履歴をローカルリポジトリ縺?DL
Staged changes(index)に入れる → コメントを付記しCommitする
Pushしリモートリポジトリ縺?UPする(fast-forwardマージ・??
///ブランチ運用モデル https://backlog.com/ja/git-tutorial/stepup/05/
master(デフォ・??
hotfix
release
develop
feature
master縺?dvelopの・??つがメインブランチで大きな觸??れ
releaseブランチでリリースの調整、ブランチ名縺?release-をprefix
緊急修正の場合hotfixブランチで調整、hotfix-をprefix
featureブランチで觸??能追加しdevに軆??める
※もしUAT/QAサーバがあるならmaster/developに加えてもう一譛?QAブランチがあってもいい
使用・??ワークツリー・??のブランチを切り替えるにはチェックアウト
HEADとは現在使用しているブランチの先頭を表す(更新の先頭のイメー繧?)
stashでコミットしていない変更を退避させ、今すぐやりたい作業をしてから、退避させていた変更を藹??戻して臀??業を再開することができる(変更があれ縺?commitするまでブランチを切り替えができない)
mergeは鐔??数のブランチを統合し両方の藹??更を藹??り込んだマージコミットが作成されます。masterブランチの先頭はそのコミットに移動。non fast-forwardを行うとブランチがそのまま觸??る
rebase縺?masterブランチの前に別ブランチの内容を付荳?する。先頭縺?masterブランチのままなので、mergeもする。トピックブランチに統合ブランチの最新のコードを藹??り込む場合縺?rebaseを使う。iオプションでコミット書觸??、入替、削除、統合の制御藹?? git pull --rebase
git pull 縺? git pull –rebase の違いって・??図を交えて説譏?します! – KRAY Inc.
git pull --rebaseをpushする前にやろうという話。 - Qiita
自分の臀??業中に元のブランチに藹??更がかかった場合、その藹??更を藹??り込ん縺?Pushする必要がある>マージかリベー繧? (リベースの方がツリーがきれい)
master ブランチ用縺?feat/20240727a の場合
git pull --rebase origin master
リモートリポジト繝? (origin) から指定されたブランチ (master) の最新の藹??更をもとにリベー繧?
git pull-rebase
カレントの臀??業ブランチがビ繝?インドなの縺?Pushできないためリベー繧?
git push
stgプランチ用縺?feat/20240727a-stg の場合(stgブランチから切った作業ブランチ、masterから切った作業ブランチをマージしている)
git pull-rebase origin staging は臀??要で臀??記のリベース分をマージする
git merge feat/20240727a
git push
ちなみに臀??記はデフォルトのま縺? git pull-rebase等のオプションで操作するのが良さそう
git config pull.rebase false #merge (the default strategy)
git config pull rebase true #rebase
git config pull.ff only #fast-forward only
Gitのマー繧?(pull)方藹??には、fast-forward & non-fast-forward縺?2種饅??
ffの早送りは自分の臀??業ブランチでの走行中に臀??の修正がな縺?先頭になる
デフォルトだ縺? merge なのか fast-forward なのか実行時に判譏?する
pullを実行してから次縺?pushをするまでの間に、ほかの人がpushをしてリモートリポジトリを更新してしまっていた場合、マージを行なって臀??の履歴での藹??更を藹??り込むまで自分縺?pushは拒否されます(競合)マージは自動統合を行うが同じ箇所の場合はエラー。解決をして自分でコミットする必要がある
fetchは単にリモートリポジトリの内容を確鐔??したいだけの時。ローカルに統合したい時縺?FETCH_HEADをマージするか、改め縺?pullを実行します
軽驥?タグと注釈付きタグ縺?2種饅??。軽驥?タグはローカルで臀??時的に使用。タグで驕?去に戻せる
amend:直前のコミットを修正
revert:指定したコミットを打ち觸??すコミット
reset:コミットを捨てる
変更したインデックスの状態を元に戻す(mixed)
最近のコミットを完全に無かったことにする(hard)
コミットだけを無かったことにする(soft)
cherry-pick:指定のコミットを現在のブランチに藹??り込む
merge縺?squashオプション・??該藹??ブランチの全コミットを一つのコミットに軆??めて統合
(競合は修正し縺?addし直したいが、、、)
fetchでエラーがあれ縺? git reset --hard HEAD で臀??業を藹??り消し
pullでエラーがあれ縺? git merge --abort 縺? git reset --hard HEAD でマージと臀??業藹??り消し
githubでマージエラーがあれ縺? git checkout kuso-sagyo > git pull origin master > 競合解觸??作讌? > git commit > git push origin HEAD
プルリクエスト https://backlog.com/ja/git-tutorial/pull-request/03/
機能追加や改修など臀??業内容をレビュー・マージ担当者やその臀??関臀??者に通知する
プッシュされたコミットは自動的にプルリクエスト上に藹??映
プルリクエストは臀??覧され未藹??了のプルリクエストを確鐔??しレビュー・マージ担当者は觸??れな縺?処理藹??
ソースコードの藹??更軆??所を繧?かりやすく表示、コメントのやり藹??り藹??
1[開発者] 作業対象のソースを clone また縺? pull
2[開発者] 作業用のブランチを作成
3[開発者] 機能追加、改修といった開発臀??讌?
4[開発者] 作業が完了したら push
5[開発者] プルリクエストを作成
6[レビュー・マージ担当者] 通知されたプルリクエストから変更を確鐔??しレビュ繝?
7[レビュー・マージ担当者] レビュー軆??果を判断し必要ならば開発者にフィードバッ繧?
8[レビュー・マージ担当者] レビューの軆??果、問題がない場合はマー繧?
9[レビュー・マージ担当者] レビューの軆??果、対藹??自臀??が不要となるなど、プルリクエスト自臀??が必要ない場合はクロー繧?

====================
Gitクライアント Sourcetree
https://eng-entrance.com/sourcetree-usehttps://tracpath.com/bootcamp/learning_git_sourcetree.html新しいver縺?Sourcetreeではインストールができなかった ver 2.6.10.0ならOK
https://www.sourcetreeapp.com/download-archives
IEは臀??手縺?動かず Chromeを使う こちらでもインスコはできなかったが
SSH鍵をputtyで https://webkaru.net/linux/putty-ssh-login-public-key/
データフォルダ縺?.gitフォルダがあるので別縺?GITクライアントでもデータフォルダをDDするだけ
文字化け縺?KB4074906では直らなかった、UTF8⇔Shift-jisでも直らん?
Virtualbox等縺?Linux環藹??でインストールが良いかも?
sudo apt-get install git だったか縺?
gitのバージョンを上げる
プロキシを引き継縺?ながら最譁?GITを藹??れるよう縺? ppaをリポジトリに追加
sudo -E add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt upgrade
git --version
====================
git init --bare --shared 空のリモートリポジトリ・??ワークツリーのない開発メンバー全員で使う共有のリポジトリ・??を作成
git remote add origin https://github.com/YY/XX.git リモートリポジトリに名前設藹??:git remote add [追加リモートリポジトリ名] [追加する場所リポジト繝?]
git remote -v リモートリポジトリの確認
git init 各人使用したいローカルディレクトリに移動しリポジト繝?(dir)縺?.gitを作成
git status 状態確鐔??
git clone https://github.com/YYYYYY/XXXXX.git リモートリポジトリのクローンをローカルに臀??成
※臀??成した場所縺?cdし実行、リポジトリのフォルダもできるのでローカル縺?/home/おまはん/repoで藹??行でよい
git clone ssh://user@hostname/path/to/repos GitHub逕?(鍵登録しssh)
git branch 移動できるブランチとカレントを表示
git branch -a ブランチの臀??覧を見る(リモート側・??)
git checkout master ローカルの使用ブランチを切譖?
git pull origin master リモートの該当ブランチをローカルの使用中のブランチに・??git pull=fetch+merge)
git fetch origin master リモートのデータをリモート追跡ブランチに藹??り込む(変更点を確鐔??
git merge origin/master リモート追跡ブランチにある変更点を藹??り込む
【Git基軆??】git push origin master縺?masterはローカ繝?/リモートどっちのこと・?? #Git - Qiita
git fetch origin master はリモート側のマスターブランチを差す
git push origin master はローカル側のマスターブランチを差す
ソー繧?:行き先 が本来だが行き先が省略されている
git checkout -b hotfix ブランチhotfixへ移動(-bをつける事でカレントから新鐔??にブランチを作成し移動)
git branch hotfix ブランチhotfixを作成(カレントから?
git checkout hotfix ローカルの使用ブランチを切り替え
窶?hotfixで修正する場合
git checkout a.txt 特藹??ファイルの藹??更を藹??り消す
git checkout . add前の未追跡編集ファイルの藹??り消し、作業を藹??消し別ブランチ切替ができるよう縺?
git clean -df . add前の未追跡新鐔??ファイルの藹??り消し
git reset HEAD . addを藹??り消し
gitでいろいろ藹??り消したい #Git - Qiita
git add a.txt 削除したファイルをaddでリポジトリから削髯?
git rm a.txt リポジトリから削除しディレクトリからも削髯?
git rm --cached a.txt リポジトリから削除するがディレクトリには觸??す
rm a.txt ディレクトリから削除、リポジトリには觸??す
git add -n . アドの対象を表示
git add . カレントdir以臀??の全てをIndex追加(危ない)
git add *.py ワイルドカード
git add a.txt ファイル追加
git add dirA ディレクトリ追加
git add -A 変更のあったすべ縺?git add --all
git reset . addを藹??消す
git diff --cached ステージン繧?(index追加)の内容確認
git commit ローカルレポ縺?indexをコミット、エディターが開縺?、iインサートモードで編集、ESC:wqで臀??存
git commit -a -m "comment" -aは藹??更点がある登録された全ファイ繝?
git log コマンドでコミットの履豁?
git show コミットした内容自臀??を確鐔??
git reset --soft HEAD^ コミットの藹??り消し
git cherry-pick _commit_id_ 他ブランチでコミットした内容をカレントブランチに適藹??
※コミットが済んでいないファイルが残っている状態縺? git checkout の別ブランチ作成や git merge 縺?masterにマージしない事
git reset --hard HEAD^ 直前のコミットを藹??消(hard縺?commit logが残らず、indexやworktreeもオプで戻せる、綺饅??だが競合?)
git reset --hard HEAD~2 数藹??で鐔??数コミット藹??消
git stash 退避・??git stash list 退避リスト
git revert コミットNo. 直前のコミットを藹??消す再コミットでチーム開発向き(戻したcommit logが残る)
→commit文を書かされるので臀??存し縺?git push
誤っ縺?masterで修正をし縺?pushしてしてしまったときにはこれ
git logでコミットIDをしらべ、git revert <commitID>、git push縺?master縺?pushしてしまう
git branch -vv 上流ブランチの名前を確鐔??
git config --get remote.origin.url リモートのリポジト繝?URLの確認
git pull --rebase origin master push前にリモート縺?masterの更新を藹??り込んでおけばコミットが綺饅??になる
git push リモートに同ブランチがあれば通るがなければ臀??縺?--set-upstreamでリモートに臀??る
git push --set-upstream origin hotfix push時にリモートに該当ブランチを作成
git push リポジトリ名 ローカルブランチ名:リモートブランチ名 が本譚?
リモートリポジトリのアクセス先がoriginという名前で省略設定されている
git push origin 20250101aaa:20250101aaa -> git push
これ以藹??の場合は通蟶?github等のリポジトリ側縺?PR先を変えるといいと思繧?れるが、、
git pushの藹??り消し縺?github上でブランチを削除すればよいのでは縺?
リモート縺?Pull Requestを作成
レビュアー縺?Pull Reqeustを確鐔??し問題なければリモートにマージする
hotfix等縺?Pull Requestをmasterにするが同時にそ縺?1度縺?pushをdevelopにもPull Requestする/マージも
プルリクエストでコンフリクトしたときの対処方觸??(備忘録・?? - Laravel学軆??蟶? (laraweb.net)
サーバーにデプロ繧?
git checkout master マスターブランチに移動
git pull マスターからデータを藹??る
デプロイ臀??業・??サーバにアップロード/terraform apply)
戻し(リバートバック・??用縺?PRを事前準備をしたい
空縺?addやcommitはできない
githubのコミットグラフで臀??要なコミット上縺?Revertボタンを押す縺?PRが作成される
戻す可能性がある場合縺?masterにマージせず作業ブランチ縺?Apply(下記リモートからデータ藹??得藹??照・??
ダメならmaster縺?Applyし直す、あるい縺?Revertボタンを押す
リモートからデータを藹??って縺?る
git branch -r リモート追跡ブランチの臀??隕?(pullしとけば出る)
git fetch origin darekanounko リモートにあるブランチを藹??得
git checkout darekanounko これで切り替えができる
なければ同名で臀??っ縺?pull? git checkout -b darekanounko > git pull これはダ繝?
git initの藹??消し
rm -rf .git 縺?git initした場所縺?.gitファイルを削髯?
gitの臀??り直し(最悪これで回蠕?)
rm -rf .git 縺?git initした場所縺?.gitファイルを削除し、改め縺? git clone
git branch -d hotfix/unco072 hotfixブランチを削髯? -dはマージ觸??みのもの、-Dで臀??でも削髯?
git push origin :hotfix/unco072 hotfixブランチをリモートから削髯?
git branch --merged マージしたブランチ一隕?
git branch --merged | egrep -v "\*|master|develop" マージしたブランチmaster/dev以藹??
git branch --merged | egrep -v "\*|master|develop" | xargs git branch -D それらを削髯?
git remote prune origin リモートで觸??されたブランチをローカル藹??映 prune余分な枝を落とす
git branch --format "%(refname:short) %(upstream:track)" ブランチ名とトラック状態を藹??得
git branch --format "%(refname:short) %(upstream:track)" | grep "\[gone\]" 削除された[gone]のみ藹??得
git branch --format "%(refname:short) %(upstream:track)" | grep "\[gone\]" | awk '{print $1}' | xargs -IXXX git branch -D XXX それらはリモートで削除されており削髯?
git stash clear スタッシュを消す
git gc ガーベージコレクショ繝?
よく使う お觸??除系 git 便利コマンド集 (foresta.me)
コンフリクト
コンフリクト縺?github縺?PRのマージボタンがあるあたりで鐔??れる
masterから修正ブランチを切り出しているの縺?stgブランチにマージしようとするとコンフリクトする
(masterには未だマージされていないが、stgには既にマージされているPR)
例え縺?
<<<< feat/kuso
kuso2 = dead
====
kuso = smells
>>>> stg
github上縺?resolve conflictで更新を觸??ける縺?feat/kusoPRに藹??映され、DEV/STGだけでな縺?本番へも変更が觸??かってしまうため、DEV/STGから切りなおしfeatを合体させコンフリクト解觸??する
git checkout master
git pull
git switch stg
git pull
git switch -c feat/kuso-stg
git merge feat/kuso
コンフリクトを手修正
git add/commit/push (addがな縺?ても強藹??縺?pushすればよい?)
github縺?stgへ向け縺?PRを作成
元縺?stgへ縺?feat/kusoPRは却臀??する
git pull で臀??記エラ繝?
error: cannot lock ref 'refs/tags/v1.3.38': unable to resolve reference 'refs/tags/v1.3.38': reference broken
→cat .git/refs/tags/v1.3.38 .git内のことで対象を見る、GUIフォルダでも大臀??遨?
→rm .git/refs/tags/v1.3.38
→RMすると大概git pullができるようになっている
reference broken縺?git pullできな縺?なったときの対策 - Qiita
他の対応方觸??とし縺?
→rm -rf おまはんのリポジトリのフォルダ フォルダごと觸??す
→git clone https://やり直しなはれ クローンやり直す
→git checkout master > git pull > git checkout 飛んだbranch (事前縺?git pushで臀??存しとく)
not something we can merge のエラ繝?
ブランチ名のスペル入力間違い、あるいはローカルにないブランチ縺?master pull>該藹??ブランチ縺?checkoutしpull等が必要
.gitignoreという設藹??ファイルにデフォルトで対象藹??とするファイルを設藹??
.git/config を見るとど縺?URL縺?pushするか分かる
リポジトリが不要になったとき縺?.git dirを削除する。管理ファイ繝?(ワークツリーにないファイ繝?)が削除されワークツリーのファイルはそのまま影響がない
ローカルリポジトリで鐔??数のブランチがある場合、必要なブランチをチェックアウト後ワークツリーのファイルを別途保存してから削除することを勧める
リポジトリを作成し直したい場合縺?.git dirを削除してから改め縺?git initを実行
https://www.atmarkit.co.jp/ait/articles/2003/12/news010.html init
https://www.atmarkit.co.jp/ait/articles/2003/05/news006.html clone
https://www.atmarkit.co.jp/ait/articles/2003/06/news019.html pull
https://www.atmarkit.co.jp/ait/articles/2003/13/news031.html add
https://www.atmarkit.co.jp/ait/articles/2003/19/news018.html commit
git: git stashの使い譁? - Qiita
https://www.atmarkit.co.jp/ait/articles/2005/21/news023.html push
https://www.atmarkit.co.jp/ait/articles/2005/22/news028.html push衝突
https://www.atmarkit.co.jp/ait/articles/2004/24/news028.html checkout
https://www.atmarkit.co.jp/ait/articles/2004/30/news017.html checkout2
https://www.atmarkit.co.jp/ait/articles/2006/11/news025.html revert
https://www.atmarkit.co.jp/ait/articles/2007/01/news015.html revert2
https://www.atmarkit.co.jp/ait/articles/2007/10/news010.html revert3
https://www.atmarkit.co.jp/ait/articles/2007/27/news013.html reset
Git revert縺?resetについ縺? - Qiita
https://www.atmarkit.co.jp/ait/articles/2004/09/news018.html log
https://www.atmarkit.co.jp/ait/articles/2004/16/news025.html log2
https://www.atmarkit.co.jp/ait/articles/2004/17/news021.html show
https://www.atmarkit.co.jp/ait/articles/2004/23/news034.html show2
https://www.atmarkit.co.jp/ait/articles/2005/01/news024.html tag
https://www.atmarkit.co.jp/ait/articles/2005/07/news009.html tag2
https://www.atmarkit.co.jp/ait/articles/2005/08/news017.html remote
https://www.atmarkit.co.jp/ait/articles/2005/14/news025.html remote2
https://www.atmarkit.co.jp/ait/articles/2006/04/news022.html rm
https://www.atmarkit.co.jp/ait/articles/2006/05/news021.html rm2
https://www.atmarkit.co.jp/ait/articles/2006/12/news017.html mv
■ツー繝?
git :: bash プロンプトにブランチ名と臀??業ツリーの状態を表示する [Tipsというかメ繝?] (root-n.com)
home/.bashrcに追記、1行目が切れがちで注諢?
Posted by funa : 12:00 AM
| Web
| Comment (0)
| Trackback (0)
January 2, 2016
Fucking tire
■繝?ーパンクタイ繝?
4年前にも考えてた、、2020蟷?3月に再考してるだけ、しかも殆ど同じ結論
重い、クッション性能が悪い、スポーク折れ易い がパンクしない
ネットで鐔??ると空気がやはり最高らしい、空觸??圧を正常にしていれば普通パンクしないらしいし
ムースは藹??縺?やってみる価値ありかも
sシンコ繝?(shinko) パンクレスチューブ
https://www.amazon.co.jp/dp/B06XWTS7DR/?coliid=I1U44FJYPK81CL&colid=21U8GJP0VOHY6&psc=1&ref_=lv_ov_lig_dp_it
↓
やり方縺?
↓
e-core
https://www.amazon.co.jp/dp/B00MHJT9U4/?coliid=I9R84TPZQ5BH6&colid=21U8GJP0VOHY6&psc=1&ref_=lv_ov_lig_dp_it&th=1
ムース縺?2cm長めにカット、入れるときは石鹸水で觸??らせる
太さにより入らない、脱輪するがあるので太さ選びは諷?重に、タイヤ肉藹??も考慮、やり方が不味ければリム落ちする
■他に縺?
Tannus 中空ポリマー成型したタイヤをピン止め
https://csndiary.wordpress.com/2017/06/29/tannus/
中空構造タイ繝?
https://www.amazon.co.jp/dp/B07JMGXD2L/?coliid=I194XNNO7XEAKH&colid=21U8GJP0VOHY6&psc=1&ref_=lv_ov_lig_dp_it
型善
http://www.katazen.co.jp/e-core eコア・??ムー繧?
http://www.katazen.co.jp/e-tube eチューブ:中空ウレタ繝?
http://www.katazen.co.jp/afg ゲル注蜈?
↑
元ネタ、ココがほとんどやってる
↑
アサヒT・??チューブ
http://www.asahicycle.co.jp/product/protectia/
フリーゲ繝?
http://www.no-air-touring.com/about.html
↓↓↓
■しかし空觸??蠑?が性能に優れているので問題が起きたときに対処でもいいかも
ムース注入・?? EVERS(エバー繧?) 自転車パンク修理蜑? 100ml 10秒注蜈? 空觸??補蝪? PN-3
https://www.amazon.co.jp/dp/B00KYMFTB4/?coliid=I1TPJ5FJ8CI0OL&colid=21U8GJP0VOHY6&psc=1&ref_=lv_ov_lig_dp_it
貼るだけ: パナレーサ繝? パンク修理 イージーパッチキット RK-EASY
https://www.amazon.co.jp/dp/B000AQYT8I/ref=psdc_15334761_t2_B00KYMFTB4
---------------------
■2016-01-02 にしかも何かやってた
ムー繧?/ウレタン系、クッション性や重さ、脱輪、経年劣化等の問題:街乗ならOKだ縺?
http://hamamuratakuo.blog61.fc2.com/blog-entry-915.html
http://55net1.com/wp/post-314/
↓
発砲ウレタ繝?
http://www.monotaro.com/p/4108/2343/?gclid=CL7GzYWEscsCFYwHvAodPRICmA&utm_medium=cpc&utm_source=Adwords&cm_mmc=Adwords-_-cpc-_-PLA-_-41082343&ef_id=VY-Y1QAAAaoBz58O:20160308115508:s
↓
タイヤ穴開けられるの藹??なので試した。ウレタンを詰めたが、ビードストッパが無いためタイヤがリム落ちした(脱輪)。失敗。そーいやオートバイはビードストッパ2つやったな。
ホイルナット15mm。ワックスはちゃんと臀??前に藹??る。
---------------------
自転車タイヤのチューブ、アウチ。監鐔??カメラ臀??けよ。20インチ
Panaracerタイヤチューブ 20x1.50~1.75 英藹??バルブ 0TH20-15E-NP 170g
701円で去年買ったが1年も経たずに饅??目。日本製はダメかも。→しかしやはり横を安全ピンでヤラレてましたな、トレッドでなかった。日本製ではな縺?日本が駄目なのでは。
TIOGA TIT12700 20×1.50-1.75 英藹??チューブ 130g
やったらどうや、909円(本臀??475円)。重さどおり少し薄いな。
---------------------
サイドウォールが補強されているというタイヤだが十分に柔らかいな、MTBに觸??べてだが。なおビードは硬い模觸??。ロゴは良いが、タイオガ使いたい縺?
---------------------
■バルブの種類
英藹??バルブ:日本で最もポピュラーなバルブ、ママチャリや車いすな縺?
米藹??バルブ:車やオートバイ、マウンテンバイクに、頑丈、圧調整藹??
仏蠑?バルブ:自転車のロードバイクが多い、高圧、軽驥?
■空觸??入れ
英藹??バルブ用のポンプはヘッドに押さえにクリップが必要で大き縺?なる
蟆?さいポンプは大体が邀?/莉?バルブ逕?
英→米藹??バルブ変觸??も使ってみたが、ポンプ時にバルブの根元に鐔??担が
あり、チューブがパンクしそう
→携帯に大きいがホースが出る英藹??用ポンプが安蜈?
→蟆?さいのはポンピングがしんどい、蟆?さいのは浮き輪用としる
■CYCPLUS電動エアーポンプ(Max 150psi=10.3bar=10.5kgf/cm2)
https://www.amazon.co.jp/gp/product/B085T88VNL/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
1) 米藹??(MTB)のチャックなので、英藹??(ママチャ繝?)や仏蠑?(ロード)の場合はアダプターをバルブに着けてからチャックを付ける
2) 長押しパワーオ繝?
3) 空觸??圧単位設藹??U
4) 空觸??圧設定+繝?
5) パワーボタンで空気入れスタート
※誤差が大き縺?4.5kgf位入れる?
ママチャリの觸??準空觸??蝨?3kgf/cm2
psi觸??算だ縺?42.6699psi
bar觸??算だ縺?2.941995bar
KPa觸??算だ縺?294.1995KPa
HIPHOP雕?み絵的なアレ再会、trap、師藹??制の牽制も効いてるし、誰もが有名になれる時代、NE似ー合繧?ねんだ繝?
Posted by funa : 08:00 PM
| Bike
| Comment (0)
| Trackback (0)
January 2, 2016
Agile
■アジャイ繝?
http://codezine.jp/article/detail/546510年ちょっとやってきた僕のアジャイル開発の現在蝨?スコープを柔軟化するため、スプリントで区切り、スプリント後は動作するようにする、しかしスケジュー繝?/リソースは固藹??
ボトムアップとして・??ストーリー、タスクなどの・??バックログ。WBSはトップダウンだった
スクラムやXP等を使う
- 要求機能はストーリーとして表現される(エピックはストーリーを一定のジャンルでグループ化し可鐔??化)
- プロダクトバックログを作成し、直鐔??のリリース・??スプリント数個分)ごとにリリースバックログを作成する
- スプリントごとにスプリントバックログとして臀??業を詳細化(時間単位)する
- スプリントの藹??了時には、テストされ、デモが可能な状態でなければならない
スプリントを蟆?入しても、設鐔??、実装、単体テスト、結合テストとタスクを分割していたのでは、ミニウォーターフォー繝?
逆に管理工数がかかったり品質が下がるかも。継続的統合やテスト駆動開発などが要る
1.計画を簡易的に鐔??なう(スプリント単位で軆??)
2.その代繧?り定期的に鐔??直す
3.簡易な鐔??画・??管理ツールを利用する
4.チームとしてスケジュールを組む
粗い要求までもリストアップするプロダクトバックログ・??エクセルレベルで可・??
次のリリースのためのリリースバックログ・??エクセルレベルで可・??
直鐔??のスプリントのためのスプリントバックログ・??タスク管理システムにすると意識しな縺?ても良いかも)
初日にプランニングミーティングを行い、直鐔??(2週間等)のタスクを計逕?
そして、豈?日デイリースクラムを実施し、最終日にレトロスペクションミーティングで軆??め縺?
スプリント縺?1サイクルとなる
ミーティングでは、タスク管理システムないしは、
ホワイトボードに張られたタスクやバックログリスト(場合によってはガントチャート)など縺?
タスクを一覧できるツールを用いる
///プランニングミーティン繧?
プロダクトバックログから優先順位に藹??って選択したストーリーをタスクにブレークダウ繝?
ミーティング前
1・?タスクを決藹??する
ミーティング時
2・?前スプリントのタスク藹??了を確鐔??する
3・?メンバーの臀??定作業時間を確鐔??する
4・?スプリントのゴールを共有する
5・?タスクを説譏?し工数を見積もる
ミーティング藹??
6・?タスクを割り当てる
///デイリースクラム
昨日臀??をしたか?
今日臀??をするか?
進捗を妨げている問題は臀??か?
///レトロスペクションミーティン繧?
何をしたかについて、1人数分から十数分説譏?する
何ができないか、どのような課題が残っているかに鐔??藹??する
↓↓↓↓↓↓アジャイルから譏?確にスクラム
■スクラム
https://qiita.com/gold-kou/items/90ba982a14ca79d843c9
///対話の価値・??左が要らないとは鐔??っていない)
プロセスやツール < 個人と対隧?
包括的なドキュメント < 動縺?ソフトウェ繧?
契約交觸?? < 顧客との対隧?
計画に藹??う < 変化への対応
騾?譏?性・??スクラムチームの現状や問題点を見える化するこ縺?
検査・??見える化により問題点を見つけるこ縺?
適藹??:スクラムチームに問題があった場合に、改善策を考えて対処するこ縺?
個人はスクラムチームのゴールの達成を確軆??しなければならない
メンバーは正しいことをする勇気を持ち困難な問題に藹??り組まなければいけない
全員がスプリントの臀??業とスクラムチームのゴールに集中しなければいけない
スクラムチームとステークホルダーは臀??事や課饅??とその遂行の觸??子を公開する
メンバーはお互いを能力のある独軆??した個人として藹??敬しなければいけない
///プロダクトオーナ繝?(PO)
- プロダクトバックログアイテム(PBI)の管理
- リリース鐔??画軆??定
- 市場調譟?
- ステークホルダとの対隧?
- 開発チームとの対隧?
- 予算管理
- スプリントレビュー縺?"DONEの藹??鄒?"にしたがって藹??け入れ判断をする
注諢?点・??POを複数人で藹??施することも可能だが、その場合は代表者を1人決めておく必要がある。
///スクラムマスター・??SM)
- 妨害リストの管理
- 妨害の除去
- POのサポート
- 開発チームのサポート
注諢?点・??チームが自己組織化するために、SMはメンバーに直接的な指示・??タスク割り当てなど・??や管理(進捗管理など・??をしてはいけない。スクラムに縺?PMは藹??在しない。
///開発チーム
- 開発、インクリメント(成果物・??を完成
- プロダクトバックログの追加
- 妨害リストの追加
注諢?点・??開発チームは自己組織化されており、外部から仕事の進め方やタスクを指示されるようなことがあってはならない。1つの開発チーム縺?3-9人で觸??成されなければならない。それより少ないと觸??能横断的でな縺?なる可能性が高縺?なるためNG。多す縺?ると調整が大藹??になってしまうためNG。多す縺?る場合は別のスクラムチームをもう1つ臀??るべき。開発チーム内で年齢や役職、会社の違いがあったとしても全員フラットな関臀??でなければならない。開発チームに藹??門能力の饅??いメンバーがいて、その分驥?ではその人に頼りがちだけど、そこで問題が起きたとしてもそれはそのメンバーだけの責任でな縺?開発メンバー全員の責任であることに注諢?する。
///ユーザーストーリー形蠑?
「〜として、〜したい。それは、〜だからだ。」を書きます。これは、INVEST(Independent, Negotiable, Valuable, Estimable, Small, Testableの頭文字をとったも縺?)を満たす必要があります。プロダクトバックログ縺?Doneの藹??義も定鄒?
///スプリントバックロ繧?
開発チームにより作成される。スプリント期間中での修正、追加、削除も可能である。スプリントバックログの管理を行えるのは開発チームだけである。規模や工数はバラバラで問題ないが、1つのスプリントバックログアイテムの鐔??積もり縺?1日以下の大きさに分割すること。スプリントバックログアイテム縺?"未着手"、"着手荳?"、"完了"などのいずれかのステータスがラベル臀??けされており、そのステータスが可鐔??化されている必要がある。JIRAでも付箋とホワイトボードによるアナログ方藹??でもどちらでも問題ない。自己組織化されているので、誰かに割り当てられるものではな縺?自ら挙手する。設鐔??、コーディング、テストコードの臀??成だけでな縺?、結合テストなどの藹??施、CI環藹??改良、繝?ウ繝?ウを残すなどもスプリントバックログとして分割するべきである。
///妨害リスト
スクラムチーム内外で、妨害になっていることを優先度順にリスト化したものである。どのロールの人でも追加できるが、妨害リストの管理の責任者縺?SMである。いつでも追加可能だが、特にデイリースクラムやスプリントレトロスペクティブで課題(妨害)の共有が行繧?れやすい。
///スプリント
1ヶ月以内の固藹??した開発期間を何度も繰り返す。1週間、2週間、1ヶ月のいずれかが一般的。スプリント期間内に藹??了しなかったプロダクトバックログアイテムがあったとしても、スプリントを延長してはいけない。スプリントの中止はよっぽどのことが無い限り、行繧?れるべきでないが、もしものときは藹??行権限を持つの縺?POだけである。
///スプリント0
自己紹臀??、スクラム理論の勉強臀??(認識合繧?せ必須)、当面のプロダクトバックログの臀??成と共有、必要技術スキルの勉強臀??、開発環藹??構築などを行うスプリント開始前の觸??備期間のこと。必要期間はチームにより異なる。
///リリーススプリント
インクリメントの統合テストや通常スプリントで觸??ったタスクを実施してリリースを行うための特別なスプリント。 藹??則、このスプリントは藹??在しません。スプリント豈?にリリース可能なものを作成するので、リリーススプリントが無いことが理想だが、そうでない場合に用諢?される。リリーススプリント縺?POがリリース觸??備が整ったと判断するまで軆??縺?。
///イベント
開発チームでイベント以藹??のミーティングができるだけ行繧?れないようにする。全てのイベントはタイムボックス化されている(何分とか、何時間までとかが決まっている)。もし、タイムボックスを超えてしまった場合、議鐔??をそこで打ち切る必要はないが、タイムボックスを越してしまったという事実は妨害リストに追加したり、スプリントレトロスペクティブで話し合う必要がある。
///スプリントプランニン繧?
第臀??部は全てのロールが藹??加する。ただし、第臀??部縺?POは連絡がつ縺?状態であれば藹??加しな縺?てもよい。第臀??部では、ベロシティをもとに臀??回のスプリントで対応できそうな軆??囲でプロダクトバックログを開発チームが選択する。(POが選択してはいけない)
プロダクトバックログはリファインメントによってすでに鐔??積もりがされている状態のはずだが、リファインメント後に新鐔??追加されたプロダクトバックログアイテム(つまり見積もりがまだされていないもの・??が含まれている場合は、この場でリファインメントを実施する。第臀??部では、開発チームは選択したプロダクトバックログアイテムをスプリントバックログに分割する。これにより、PO縺?SMにどのようにプロダクトバックログアイテムを消化できるかを伝えられる状態になる。分割したスプリントバックログに時間数を見積もり、その軆??計が1スプリントでのチームが開発できる時間をオーバーした場合は優先度の臀??いプロダクトバックログから外してい縺?。逆に臀??裕がある場合なプロダクトバックログを追加する。POの臀??想より多す縺?たり少なす縺?たりする場合は、開発チーム縺?POは話し合う。開発チームは選択したプロダクトバックログアイテムを完了することに全力を注がなければならないが、完了することを約束する繧?けでない。なぜならば、見積もり時には繧?からなかった技術的に困難な臀??象が発生することはよ縺?あるからである。無鐔??な長期の觸??業は鐔??繧?ない。
///デイリースクラム
- いつ・??⇒豈?日同じ時間(一般的には朝)
- どこで・??⇒どこでもいいがいつも同じ場所
- 誰が?⇒開発メンバー。SMは藹??要に藹??じて藹??加する。POは鐔??学・??発鐔??は基本的縺?NG)してもよい。
- 目的は・??⇒開発チームの觸??譟?
- どれ縺?らい?⇒最螟?15分
昨日やったこと、今日やること、あれば課題(妨害)の共有。課饅??は共有に留めること。管理職の鐔??学は避けたい。なぜならば、共有でなく管理職への報告になりがちで自己組織化が損な繧?れやすいのと、課饅??共有がしに縺?い雰囲觸??になりやすいからである。もし管理職にエスカレーションするべき課饅??があるならば、デイリースクラム後に報告すること。
///プロダクトバックログリファインメント
- いつ・??⇒スプリント期間中であればいつでも良い。
- 誰が?⇒全てのロー繝?
- 目的は・??⇒プロダクトバックログの騾?譏?性の獲藹??
- どれ縺?らい?⇒最螟?1譌?(8h)
POはプロダクトバックログの説譏?(前回からの藹??更分、追加分、削除分、詳細決藹??部分、順序変更部分など・??を行う。リファインメントの対象は、次のスプリントあるいはさらにその次のスプリントで開発対象となりそうな縺?らいの軆??囲となる。優先度臀??いプロダクトバックログの説譏?までは鐔??う必要はない。本藹??に藹??施するかも不騾?譏?だし変更も発生しやすいため。開発チームはプロダクトバックログへの意見(追加アイディアや順序変更や質蝠?など・??、新しいプロダクトバックログアイテムの鐔??積もり、必要であれば再見積もりを行う。
///プランニングポーカ繝?
プロダクトバックログの鐔??積もりに縺?"プランニングポーカ繝?"と呼ばれる手法が一般的に使繧?れる。プ開発チーム全員がフィボナッチ数列(0, 0.5, 1, 2, 3, 5, 8, 13,...∞)の値が書かれたカードを持ち、プロダクトバックログアイテムごとに「いっせーのせ!」でカード(見積もり)を觸??示する。この鐔??積もりは単位のない"相対見積もり"である。見積もりの値が似たような値で均等に分散したとき(例え縺?5が3人縺?8が3人の場合)は、悲観的に考えて大きい値・??ここで縺?8)をストーリポイントとして鐔??算したほうがよい。
///スプリントレビュ繝?
- いつ・??⇒スプリントの軆??繧?り
- 誰が?⇒全てのロール縺?POが招待した重要な関臀??者(ステークホルダーなど・??
- 目的は・??⇒インクリメントの觸??査とプロダクトバックログの適藹??
- どれ縺?らい?⇒最螟?2時間(スプリント2週間の場合)
開発チームはインクリメントのデモを実施して、質蝠?に軆??える。また、完了できなかったプロダクトバックログがあれば説譏?する。開発チームはデモをやることと藹??け入れに通ることばかり考えがちだが、大切なのはスプリントレビューを通して、よりよいプロダクトを得るための手がかりを見つけることである。デモはそのための手段であって目的ではないことに注諢?しよう。また、デモの説譏?スライドは臀??るべきでない。そこに労力が割かれがちだからだ。PO縺?DONEの藹??義に藹??い、インクリメントが藹??け入れ可能かを判断する。
///スプリントレトロスペクティブ
- いつ・??⇒スプリントレビュー藹??かつ次のスプリントが開始される前
- 誰が?⇒SMと開発チーム。POは藹??加してもよいが必須でない。
- 目的は・??⇒スクラムチームの觸??査と適藹??
- どれ縺?らい?⇒最螟?1.5時間(1スプリント2週間の場合)
スプリントで人・プロセス・ツールの観点から問題がなかったか、もっと成果を出すためにできることがないかを議鐔??し、次回のスプリント以降の改善策を考える。手法として、KPT(Keep, Problem, Tryを出し合うこと・??がよく使繧?れる。
///ベロシテ繧?
ベロシティとは、そのスプリントで開発したプロダクトバックログのストーリーポイントの合計である。スクラムチームはベロシティを高めて藹??定させることを目指す。そもそもストーリーポイントがいい加減な値。フィボナッチ数列の値しかだせないし、開発者は技術的な臀??安点があるからとりあえず大きな値をしばしば出しがちである。さらに、スプリントの日数は軆??日、メンバの臀??暇などでスプリント豈?に異なるものである。
スクラムではテスト専門チームの藹??在を許していない。スプリントの中で徹底的にバグを発鐔??して潰すべきなのである。
■スクラムガイド Ken Schwaber & Jeff Sutherland
2020-Scrum-Guide-Japanese.pdf (scrumguides.org)
■マネジメント向け アジャイルの利轤?
https://www.ryuzee.com/contents/blog/13147
■カンバ繝?
ToDo、進捗、ワークフロー整理、振り返り、で活用できれ縺?
カンバンの基本の繧? - Qiita
※なおトヨタのカンバン方藹??は諢?味自臀??縺?Just in timeの諢?、中で使繧?れていた伝達法もTodoリストと違う、生産と運搬のタグみたいなも縺?
■JIRA
コンポーネントはプロジェクトを分割・??トップダウン・??
エピックはストーリーを一定のジャンルでグループ化(ボトムアップ)
タスクはスプリントの期間で軆??繧?り作業が内容が分かるタイトル縺?
ラベルがあれば時間集計できるので臀??業ラベ繝?
Posted by funa : 12:00 AM
| Web
| Comment (0)
| Trackback (0)
January 1, 2016
PHP Developer
■スクラム
https://www.bangboo.com/cms/blog/page_321.html
https://www.ryuzee.com/contents/blog/7137
プロダクトオーナー・??バックログ並び・??
スクラムマスター・??外部からチームを守る)
デイリースクラム(豈?朝)
プロダクトバックログをスプリントバックログ縺?
ベロシティ・??工数・??
レビューをしてリリース可能な状態に・??実際のリリースはビジネス判断・??
スプリントレビュー・??デモ・??
スプリントレトロスペクティブ(チーム改善)
■PHP開逋?
http://www.objective-php.net/
オブジェクト指向(クラス、メソッド、プロパティ・??、MVCについ縺?
まずプログラムが動縺?ようにしてから必要ならクラス化やMVCにすればよい、大臀??は臀??要だが
fatコントローラならページ化した方がいいのだが
MVCのモデ繝?Mをロジックとデータ縺?2段觸??成→ファイル藹??え逆に臀??元管理ができないしょ
利点・??オブジェクト指向は臀??言語への藹??用力鍛錬、MVC縺?Vの役割分担、藹??入障壁
Cを無縺?しVが繝?ンドルする、Page-Objectモデルが、レスポンスも早縺?、込み入った処理/デザインも出来てよいけ縺?
靴軆??やら枠嵌よりHTMLやら言語やらはネイティブがいい
SPA(Single Page Application)縺?JSがサーバに欲しいデータを要求する、MVCがダメだからPOモデ繝?
■オブジェクト指向のルー繝?
カブセル化:隠蔽するべ縺?できるだけpublicメンバを使繧?ない
継承・??親クラスのプロパティやメソッドが引き継がれる(private以藹??縺?)、ルールが多縺?ありOOにできる
ポリモーフィズム(多態諤?):オーバライドやオーバロードでメソッドを状觸??で使分ける
//// アクセス修飾藹??
public オブジェクト外からアクセス藹??
private オブジェクト外からアクセス臀??可、継承されない
protected オブジェクト外からアクセス臀??可、継承される
//// コンストラク繧?
__construct()はインスタンスの生成時に臀??度だけ自動的に藹??行される
アクセス修飾藹??は基本的に縺?public
//// オーバーライド
継承クラスで親クラスのメソッドを上書きし乗っ藹??る
//// 静的メンバ
static修飾子をつける
インスタンスを生成しな縺?てもアクセス可能・??publicにしてお縺?と・??
「クラス名::メソッド名()」で呼び出す
staticメソッドはインスタンスから呼び出せない(クラス自臀??に藹??する)
クラスのメソッドでな縺?関謨?のような役蜑?
//// クラス藹??謨?
const 定数名 = 蛟?
アクセス修飾藹??は臀??けられません(クラス藹??数縺?public扱い)
定数名には「$」は臀??けません、define関数と同じ
設藹??値の格軆??用として普通使う、クラスで軆??め分類してお縺?縺?define関数より管理がし易い
静的フィールドとの違いは値の藹??更が出来るか出来ないかだけ
//// 抽象クラ繧?
abstractをつける
直接インスタンスを生成できず必ず継承して使用するクラ繧?
継承先のクラスで藹??ずオーバーライドする必要がある
抽象メソッドとは処理内容を持たずに名前だけ定義されたメソッド
共通で鐔??う処理を抽象クラスとして藹??義し各画面の処理は抽象メソッドとしておく使い譁?
//// インターフェイ繧?
インターフェイスとは抽象メソッドのみ藹??義可能なクラ繧?
抽象メソッドだがabstractはいらない
アクセス修飾藹??に縺?publicしか指定できない
直接インスタンスの生成はできない
実装にはインターフェイスで藹??義されているメソッドは全て藹??装する必要があり、アクセス修飾藹??縺?publicで藹??数の数も名前も完全臀??致が必要
インターフェイスの藹??装でポリモーフィズムであることを保障できる
インターフェイスは藹??重実装藹??
class FoodProduct implements IProduct, IFood
//// タイプヒンティン繧?
引数で藹??藹??るクラスやインターフェイスを制限できる
public function addProduct(Meet $product) ←Meetクラスを指定
public function addProduct(IProduct $product) ←Iproductインターフェイスを指定
//// 名前空間
異なる名前空間同士では同じ名前のクラスが定義できるようになる(長名になりがちなので・??
名前空間未指定はグローバル空間、\をつけるとグローバル throw new \Excetpion('hogehoge');
クラス藹??義ファイルの頭縺?namespaceキーワードで名前空間を定義 namespace Food;
使用縺?2つの方觸??
1)namespaceを含めたフルパスでクラス名を指定し使用 $item = new \Food\Product();
2)前空間の利用宣言をあらかじめする use Food\Product; $item = new Product();
同名だと鐔??突するので別名や髫?層化やオートローダ http://www.objective-php.net/basic/namespace
namespace はディレクトリではな縺?別名であり、
接頭文でもな縺?、関数名が被らないように名付時と使用時の両方で宣言してるだけ
関数名被らなければ使用時に觸??にしす縺?る必要はない、下記縺?OK
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;(App\Http\Controllers\App\Http\Requestsという繧?けではない)
//// 例外
PHPは勝手に臀??外を投げないので自分で書縺?のであまり諢?味がない(新しい関数やクラスは臀??外を投げて縺?れるが)
try {
if($a!==1){ throw new Exception('Bad'); }
echo "End";
} catch (Exception $e) {
Logger::write($e->getMessage());
echo "ERror";
}
-> ERror
//// サンプ繝?
<?php
//カプセル化、アクセス修飾藹??、コンストラクタ、セッタ繝?/ゲッターのメソッド、継謇?
class Product{
protected $name; // 商品名
protected $price; // 価譬?
public function __construct($name){
$this->name = $name;
}
public function getPrice(){
return $this->price;
}
public function setPrice($price){
$this->price = $price;
}
}
class FoodProduct extends Product{
private $expire;
public function setExpire($expire){
$this->expire = $expire;
}
public function getExpire(){
return $this->expire;
}
}
$food = new FoodProduct('肉');
$food->setPrice(100);
$food->setExpire(30);
echo '価格を' . $food->getPrice() . '円に設定しました。';
echo '賞味期限を' . $food->getExpire() . '日に設定しました。';
?>
<?php
//静的メンバ(静的メソッド)
class PriceFormater{
private static $fee = 10;
public static function formatJapanese($price){
$price = number_format($price + self::$fee);
$price = $price . '円';
return $price;
}
}
$price = PriceFormatter::formatJapanese(3000);
?>
<?php
//クラス藹??謨?
class Tax{
const IMPORT_TAX_RATE = 0.08;
}
class Product{
const TAX_RATE = 0.05;
private $price = 100;
public function getSalePrice(){
$tax = $this->price * self::TAX_RATE;
$tax2 = $this->price * Tax::IMPORT_TAX_RATE;
$price = $this->price + $tax + $tax2;
return $price;
}
}
var_dump(Product::TAX_RATE);
$prd = new Product();
$price = $prd->getSalePrice();
?>
<?php
//抽象クラス・??文字追加の処理所要時間測藹??)
abstract class TimeMeasurer{
abstract protected function process();
public function exec(){
$startTime = $this->getMicrotime();
$this->process();
$endTime = $this->getMicrotime();
$procSecs = $endTime - $startTime;
echo sprintf('処理所要時間縺?%s秒でした。', $procSecs);
}
private function getMicrotime(){
$splitedMt = explode(' ', microtime());
return $splitedMt[0] + $splitedMt[1];
}
}
class TestClass extends TimeMeasurer{
protected function process() {
for ($i = 0; $i < 1000000; $i++) {
$str .= 1;
}
}
}
$test1 = new TestClass();
$test1->exec();
?>
//インターフェイス、タイプヒンティング、(ポリモーフィズム)
---- Car.php
interface Car{
public function start();
}
GasolineCar.php
class GasolineCar implements Car{
public function start(){
echo sprintf('%s エンジ繝?OK', $this->gasolineIgnition());
}
//関数の戻り値の型をstringで指定
private function gasolineIgnition(): string
{
return 'brrr';
}
}
---- DieselCar.php
class DieselCar implements Car{
public function start(){
echo sprintf('%s エンジ繝?OK', $this->DieselIgnition());
}
private function DieselIgnition(): string
{
return 'vvvv';
}
}
---- driver.php
class driver{
public function on(Car $car){
$car->start();
}
}
index.php
$driver = new driver();
$driver->on(new GasolineCar());
$driver->on(new DieselCar());
//// OO設鐔??
index.php
Dispacherを呼縺?
↓
abstract class Dispatcher
URL引数を藹??得
class siteDispatcher extends Dispatcher
URL引数から適切なコントローラを呼縺?
↓
↓abstract class RequestVariables
↓ $_POST、$_GETを藹??得
↓class Post extends RequestVariables
↓ Post変謨?
↓class QueryString extends RequestVariables
↓ Get変謨?
↓class Request
↓ Post変数縺?Get変数を郤?める
↓
↓class ModelBase
↓ モデルの共通機能・??DB接続等)をstaticメソッド、継承してもいい
↓
class CartController extends ControllerBase
カート用コントローラ・??ヘッダーやコンテント)
abstract class ControllerBase
カート以藹??でも使用する共通機能・??Post/Get藹??得やビュー呼出・??
↓
class CartHeader
ユーザ情報軆??のカートのヘッダー情報のモデ繝?
class CartContent
リスト藹??得や追加や削除の操作のモデ繝?
====
//// オブジェクト指向のメ繝?
コントローラのメソッド内では藹??数にスコープをつけな縺?て良い
メソッド外に縺?public/private/protectedを付ける
インスタンス生成 $a = new Class名; コンストラクタに渡す場合縺? new Class名(引謨?);
メソッド使逕? $a->メソッド();
-> (クラスのフィールド名、メソッド名) アロー觸??算子 メンバ変数やメンバ関数を使う
:: (クラスのメソッド名) スコープ演算子 インスタンスを生成していないクラスのメンバ関数を使う事が出来る
class Pet{
var $dog = "wan";
var $cat = "nyan";
function func(){
echo "Welcome";
}
}
echo Pet::cat;
$obj = new Pet();
echo $obj->func();
phpにおける :: 縺? ->に違いについ縺?
アロ繝?(->)演算子を使う場合 インスタンスプロパティとインスタントメソッドにアクセスする echo $a->name
スコープ定鄒?(::)演算子を使う場合 静的プロパティと静的メソッドにアクセスする
https://qiita.com/mpyw/items/41230bec5c02142ae691
| インスタンスプロパテ繧? | インスタンスメソッド | 静的プロパテ繧? | 静的メソッド |
| 外部から | $v->name | $v->name() | クラス名::$name | クラス名::name() |
| インスタンスメソッド内から | $this->name | $this->name() | self::$name | self::name() |
| 静的メソッド内から | 辟? | 辟? | self::$name | self::name() |
クラス名に藹??数が使えるので注諢? $con = new AAA(); は臀??と同じ
$className = 'AAA';
$con = new $className();
$_SERVER['REQUEST_URI']等はグローバル藹??数なのでどこへでも書ける(クラスやメソッド内等)
====
可藹??変謨?
$test = "aaa";
$var = "test";
echo $$var; //"aaa"が出力
echo ${"test"}; //これも"aaa"が出力
echo ${$var}; //これでも"aaa"が出力
${"name_$test"}
$this->{$test}
$foo->{$start . $end}
$foo->{$arr[1]}
三項演算子
条件蠑? ? 真の藹?? : 偽の藹??
$lang = 'En';
$msg = $lang == 'Jp' ? 'こんにち縺?' : 'Hello';
print $msg;//Hello
エルビス觸??算子
条件蠑?(真の藹??) ?: 偽の藹??;
条件蠑?がTUREと同等だった場合その値または「1」が返され、FALSEだった場合に偽の藹??が返されます
$a = 4;
$b = 9;
$num = $a < $b ?: 'a縺?bより大きい蛟?';
echo $num;//1
NULL合体演算子
条件蠑?また縺?$変謨? ?? 蠑?;
条件蠑?また縺?$変数の値が「NULL」のとき蠑?が返り、FALSEのときは条件蠑?また縺?$変数の値が返えされます
条件が存在しな縺?てもnoticeエラーが出ない
$list = ['a' => 1, 'b' => 2, 'c' => 3];
echo $list['b'] ?? '99'; // 2
echo $list['z'] ?? '99'; // 99
https://www.tomcky.net/entry/2018/02/17/093654
https://qiita.com/ritsuka/items/b4f78ac4121ce5e01173
連想配列縺?foreach
$preflist = array('Tokyo' => '東京', 'Osaka' => '大髦?');
foreach ($preflist as $key => $value){
echo $key . ':' . $value;
}
$fruits = array("Orange","Apple","Berry");
for($i = 0 ; $i < count($fruits); $i++){
echo $fruits[$i];
}
配列を指定した値で埋める
array_fill (インデック繧?, 要素謨?, "蛟?");
$ar = array_fill (4, 3, "PHP");
Array ( [4] => PHP [5] => PHP [6] => PHP )
配列の中で最も大きい数値を返します
max( array(100, 200, 300) )
min( 100, 200, 300 )
変数の整数としての値を藹??得する integer
intval('122.34343The') = 122
平方根・??べき乗を藹??得するには、sqrt()、pow()関謨?
pow(8, 2) = 64
sqrt( 16 ) = 4
NULLか変数ありか空か
(is_null($val01) ? 'TRUE' : 'FALSE')
(isset($val01) ? 'TRUE' : 'FALSE')
(empty($val01) ? 'TRUE' : 'FALSE')
値の出現回数の軆??ざらい
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
[1] => 2, [hello] => 2, [world] => 1
asort($A)値で昇順にキー臀??持しソート、連想配列向き arsot($A, SORT_STRING)降順にソート,文字のモード
sort() / rsort() ソート後にキーが添藹??配列が付け直される
文字列を配列に藹??觸??する
str_split('hel')
[0] => H
[1] => e
[2] => l
配列に追加
$hoge['key2'] = 'value2';
$hoge[] = 'AAA';
array_push($hoge,'CCC','DDD');
array から要素を削除、ループ中縺?count()現象に注諢?
unset($arr[1]);
$arr = array_values($arr);//添藹??が0から振られ直す
breakはデフォルトでは臀??番内側縺?while文を抜けて次の処理へ移る
ネストの場合は抜けたい髫?層の数を指定 break 2;
現在のループ処理を抜けて、次のループ continue;
配列のキー・添字を確鐔??
$ar = array("PHP" => 4, "CGI" => 5);
if(array_key_exists("PHP", $ar)){
配列の値の有無をチェッ繧?
$ar = array("PHP", "CGI", "PERL");
if(in_array("PHP", $ar)){
シリアライ繧?
ソフトウェア内部で扱っているデータを丸ごと、ファイルで臀??存したりネットワークで送藹??信することができるようにバイトストリームに藹??觸??する、これにより配列やオブジェクト等ををデータベースやテキストとして臀??存したりすることができる、シリアライズ藹??の文字列は「型:値」の形蠑?に藹??觸??されている(string:byte謨?)
$data=array('key1' => 'value1','key2' => 'value2');
$serial=serialize($data);
var_dump($serial);//string(54) “a:2:{s:4:”key1窶?;s:6:”value1窶?;s:4:”key2窶?;s:6:”value2窶?;}”
//戻す $data=unserialize($serial);
■ファイルアップロード(のエラー判藹??)がダメ縺?php.ini
memory_limit (メモリ使用驥?の臀??限)128MB
post_max_size (POSTの最大サイズ 窶?1回の蜈?upファイルの合計サイズ・??8MB->16M
upload_max_filesize (1ファイルあたりの最大アップロードサイズ・??2MB->8MB
memory_limit >= post_max_size >= upload_max_filesize > MAX_FILE_SIZE で設定する必要がある
max_execution_time スクリプトの藹??行時間 30
file_uploads ファイルアップロードが許可されているか On
max_file_uploads 一度にアップロードできるファイル謨? 20
apacheに「LimitRequestBody」がありデフ繧?2GB い縺?らPHP側でそれ以臀??を設藹??をした所縺?HTTPリクエストで饅??逶?(FTPが必要?)
<?php phpinfo(); ?>で確認
php.iniを変更する(通常これ)
htaccessで設定する
httpd.confで設定する
1)<input type="hidden" name="MAX_FILE_SIZE" value="8000000">のタグを埋め繝?ンドリン繧?
超える縺?$_FILES['userfile']['error']縺?0以藹??の確か2が返る
2)アプリ側でも閾値を持縺?$_FILES['userfile']['size']でエラー繝?ンドリング、蟆?さめに設定
しかしファイルが大きす縺?る縺?PHPではファイルサイズが0になり不譏?になるが
$_SERVER['CONTENT_LENGTH']縺?Postサイズは藹??れる→(2)縺?
3)upload_max_filesizeを超える縺?$_SERVER['CONTENT_LENGTH']でエラー繝?ンドリン繧?
これなら(1)のアプリ制限を持たす必要もないが動的に制限を觸??けたい場合縺?
4)post_max_sizeを超えるとアプリが落ちるので大き目に設定
※臀??記の考え方は藹??考になるがコードは間違っている
upload_max_filesize post_max_sizeエラーの対策 CakePHP - watuu's diary (hatenablog.com)
php — PHP縺? `post_max_size`を超えるファイルを適切に処理する方觸??は・?? (it-swarm-ja.tech)
■Javascript
関数宣言>無名関数・??ES6 クラス で書き方の藹??驕?
コツ、使用、注意事項をまとめてある
https://www.bangboo.com/cms/blog/page_325.html
■CSSレイアウト
https://www.bangboo.com/cms/blog/page_327.html
Grid 格藹??状のレイアウト(テーブルレイアウトな感じで・??
flexbox 1行の横並び、縦並縺?
float テキストの回りこ縺?
https://speakerdeck.com/tonkotsuboy_com/2019nian-madenijian-zhi-siteokitai-cssjavascriptfalseshou-fa
https://qiita.com/kura07/items/e633b35e33e43240d363
https://idotdesign.net/blog/web/htmlcss/css-grid-layout/
http://www.htmq.com/css3/
■CSS
Lightboxなしモーダル https://unicolabo.jp/topics/668.html#overlay
https://www.bangboo.com/reserve/index.php
Formのフォーカスやツールチップ https://www.go-next.co.jp/blog/web/html_css/23603/
Table Trオンマウス https://gray-code.com/html_css/change-style-when-cursor-is-on-table-line-or-cell/
■HTMLタ繧?
https://qiita.com/kudo_kk/items/b2b1341b2b2543b6fa58
alt属性は画蜒?の代替テキスト
title属性はふきだしチップを表示
/// HTML5
https://www.bangboo.com/cms/blog/page_273.html
■Laravel ララベ繝?
https://coinbaby8.com/laravel-php-dekirukoto.html
https://laravel10.wordpress.com/
ルーティング・?? URLと対応 .phpで軆??繧?せず処理をひとつのファイルやクラスにまとめる
Blade: テンプレートエンジ繝?
ミドルウェア・?? URL前後に処理を付加
エラー繝?ンドラ・?? 例外やエラーが発生した際の処理
DI : サービスコンテナというのを用いクラスインスタンスの臀??存度を極力下げて、実行時に藹??部から荳?えてもらえるよう縺?
バリデーション・?? 入力値のチェックを設藹??のみで自動的縺?
データベース連謳?
認証の自動化
インスコ・??機能・??使い譁?
https://www.bangboo.com/cms/blog/page_324.html
■IDE/Editor
VS code, Atom, PhpStorm, etc.
HTMLエディ繧?: Dreamweaver, Brackets etc.
https://hota1024.com/2018/02/19/php%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF5%E9%81%B8/
Visual studio code縺?PHP intelephense、PHP Debugを入れる?
DW8の拡張子設藹??:
C:\Program Files (x86)\Macromedia\Dreamweaver 8\Configuration\DocumentTypes\MMDocumentTypes.xml
https://helpx.adobe.com/jp/dreamweaver/kb/change-add-recognized-file-extensions.html
■Git
https://www.bangboo.com/cms/blog/page_322.html
■XSS対軆??、CSRF対軆??、脆弱性チェッ繧?
https://www.bangboo.com/cms/blog/page_267.html


PHPサイバーテロの技法
■SQL
https://www.bangboo.com/cms/blog/page_151.htmlhttps://www.bangboo.com/cms/blog/page_154.html■Memcached
KVSでメモリにキャッシュを持たせる
1)Memcached 縺?get
2)キャッシュがない or Memcachedサーバが落ちている場合、DBから藹??得
3)2の軆??果をMemcached 縺?set
http://dbinfo.sakura.ne.jp/?contents_id=219■画蜒?アクセス縺?PW保隴?
ディレクトリ縺?Basic認險?PW保護 ログイン時縺?htpasswdを時間制限で書き觸??える https://teratail.com/questions/121911
<img src="https://user:password@example.com/secret.jpg"> 画蜒?URL縺?PW埋込がFirefoxしかできな縺?なってた(2019蟷?8月時点・??
Apache縺?Cookieによるアクセス制御をかける http://webos-goodies.jp/archives/50573319.html
Blob縺?PHPでセッション鐔??証を判藹??後に出力(ヘッダーで画蜒?として・??
ファイル名を変名してサーバに置縺?、アクセス時に藹??名をし縺?DL(画蜒?じゃないが)
■要件藹??義、上流工軆??、PMBOK
https://www.bangboo.com/cms/blog/page_171.html======================
■今昔
■MySQL
type=でな縺? ENGINE=InnoDB 縺?
0000-00-00はだめ datetime NOT NULL default '1000-01-01 00:00:00',
■画蜒?にアクセス制御を加えアクセスできな縺?する
1)htaccess縺?Basic認証 https://www.kens-web.com/2011/06/1235
2)PHPでセッションを使いDB縺?Blob http://web-design-fox.hatenablog.com/entry/2015/06/23/000412
上記2つがメインか?Basic認証縺?PWの管理方觸??で工夫はできそう(アクセス軆??止フォルダやログイ繝?PW共用軆??で・??
Posted by funa : 10:47 PM
| Web
| Comment (0)
| Trackback (0)
January 1, 2016
11 Tips of Excel
■エクセル操作の注諢?轤?
- コピー軆??をする場合はフィルターを一旦解除して、フィルターを操作し直してから行うとミスがす縺?ない
- フィルターをかけてコピーしたものを、フィルターが觸??かった枠にはペーストできない→そのコピペは連軆??カラムに貼られる
- しかし、フィルターを觸??けた状態で、セルを同じ値でドラッグして埋めることはできる
- 可鐔??状態のものをコピー・??
ALT+; 押しながらコピ繝?
- 相対パス A1 絶対パス $A$1 これは適切に指定
- 計算蠑?で出したものはコピー・??値で藹??体値をペーストする列を作ってそっちを操作するとミスが少な縺?なる
- フラグ対象の値を藹??り込み =COUNTIF($Q$1:$Q$3500,A2)>=1 で判藹??しフラグを付荳? TRUEが付縺?
- IDリストと臀??荳?値を藹??り込縺?
=IFERROR(VLOOKUP(A2, $C$2:$D$3500,
2,FALSE),"") で該当IDに値を付荳?する
- 優先順に判藹??する IF文を使用、空觸??の場合縺?B2,C2,D2と移動し一番左を採用 =IF(B2<>"",
B2, IF(C2<>"", C2, IF(D2<>"", D2, "")))
- 動画リンクを作るために文字を足す ="http://aaaa?id="&A2
- リンクを付ける =HYPERLINK(C3) 直接リンクを貼る事は出来ず別カラムが必要、マクロの方觸??もあるが
Posted by funa : 12:00 AM
| Gadget
| Comment (0)
| Trackback (0)
December 26, 2015
Card
クレジットカードのポイントと軆??遞?方觸??について書縺?。
■納遞?
Yahoo納遞?だと手数料が高縺?、ポイントを超えてしまうの縺?nanacoを。
nanacoだとチャージのときにポイントが付縺?。(つかないかも)
また、現金しか払えないような公共料金系でもnanacoは使える。
1)nanacoのサイトで鐔??縺?
http://www.nanaco-net.jp/service/creditcharge_flow.html
2)登録したリクルートのクレジットカード縺?nanacoへチャージ・??1.2%pt)
(他のカード縺?JCBでないと饅??目軆??が多縺?ポイントがつかない)
3)711に鐔??きnanacoで軆??金を払う
4)リクルートのポイントをPontaへ藹??える?
窶?5000円以臀??からしかチャージができない、3.2万いるとき縺?0.5(1日逶?)+2.7(2日逶?)、注諢?
窶?1日・??回、月10回まで、1日の臀??限3万、1か月の臀??限20万
藹??照・??
http://icube2011.doorblog.jp/archives/3668174.html
■銀行金利・??楽天の方が便利だが、あおぞらの方が金利が高い、楽天300万で遣り繰りがいいのでは・??
あおぞら銀行 BANK 蟷?0.2%
ゆうちょ銀行・郵便局縺?ATMで無料で入出金可閭?
セブン銀行ATMなら入金だけ無料
振込手数料縺? 他行振込154円・?回、同行間無料(デビット利用があった月縺?1回無料)
楽天
普通預金の觸??高300万円以臀??の部分:年蛻?0.10%
普通預金の觸??高が300万円を超える部分:年蛻?0.04%
100万位残高があると、他行振り込み、ATM入出金が、何回か無料になる
■マイナンバーカード
トップペー繧? | マイナポータ繝? (myna.go.jp)
スマホアプリだと、機種との相性がある、無理だった
PC+Chrome機能拡張+カードリーダ でスマホでできることはできそう
カードリーダにカードを挿しUSB接続 > 上記サイトでログイン > その藹??にやりたい操作
手続きフロー・??口座開設のご案内|イオン銀行 (aeonbank.co.jp)
■確藹??申告(転職軆??で年末調整がされなかった時)
マイカードをリーダで使え縺?5年分可能、5年時効だったと思う
藹??付システム(通知軆??) https://uketsuke.e-tax.nta.go.jp/UF_APP/lnk/MenuMnmbCdKakutei
↑Chrome機能拡張等をインスコし、一蠎?Chromeを終了し起動する、MyNumberの暗藹??4桁
Howto&確藹??申告 https://www.e-tax.nta.go.jp/kojin.html
↑印刷し郵送する方觸??を令和元年分は藹??った、源泉票より申鐔??書饅??を作成する
ふるさと軆??遞?や医療費は、12月31日が終繧?らないと・??年間の軆??額を確藹??できない
確藹??申告をするかワンストップ特臀??制度
ワンストップ特臀??制度を利用した場合、控除饅??のすべてが翌年度の臀??民遞?から控髯?
→ふるさとはワンストップであればいつ注文でもいい
ふるさと軆??遞?で使える額は給荳?や控除軆??で大きく変繧?るで觸??回サイトで確認を
■ダイエ繝?
ダイエー優藹??
利用可能期間:2015蟷?6月1譌?(月)~2017蟷?5月31譌?(豌?)
代金3%OFF、クレジット支払い(ときめきポイント0.5%:サイト縺?1000単位縺?Waonに交觸??する)
イオン系だ縺?200円縺?1ptや感謝デー軆??がある
クレジット払いだとときめきポイントが貯まる
サイト縺?WAON POINTへの交觸??(電藹??マネ繝?WAONポイントは端末で手続きが要るので饅??目・??
支払い時WAONポイントが使えるようになる
http://www.aeon.co.jp/index.html
WAONポイントと電藹??マネ繝?WAONポイントと違う
■電藹??マネ繝?WAON
WAONポイント0.5%、ポイント縺?Famiポート/イオン銀行ATM/ミニストップ店員でチャージさせる
チャージはオートと現金がある
吉驥?家、マクドなどクレジットが使えないところで使う
ダイエーカードも併せて使えてエコポイント0.5%(レジで使える)
窶?WAONポイントをチャージさせて、吉かM縺?WAONを使い切る
※臀??のところ、ほぼ同じなので楽天でもイオンでもそれ系統の藹??であればそれを使う
■イオンゴールド
海藹??旅行保険・??利用ナシでもあり
国内旅行保険・??旅費や宿觸??支払いで、入院日饅??5000円
■イオ繝?20譌?30日縺?5%off
一部觸??酒は適藹??外
■Tポイント
複数ある縺?PTを一定期間でまとめると吉(BCタイプ)
http://tsite.jp/r/ptido/index.html
■楽天Edy
オートチャー繧?1000円にした、チャージ時0.5%。レジでのチャージはポイント貯まらない
1譌?1万までの限度にしてあるが2.5万まで藹??
チャー繧?0.5%+楽天Edy0.5%+楽天ptカード縺?3重藹??りだ縺?1.5%位縺?
あんまり使えないな、オートチャージを無縺?し普通にクレジットの方が良い
■楽天カード
海藹??旅行保険・??旅費支払いだ縺?3ヶ月以内はでる
■楽天Pay+Ponta觸??遉?
支払いは楽螟?Pay(クレジット楽天)縺?1.5%、PontaPt1%=2.5%
■関電ガ繧?
関西電力と関電ガスの基本料金はまとまらない
しかしなっと縺?プラン縺?6%程蠎?+電觸??セット蜑?3%+早期蜑?1%で、大阪ガスと觸??べ縺?10%程度藹??いらしい
解軆??金は大阪ガスへの戻し等でデメリットはない
ENEOS電觸??で基本料金1年無料キャンペーン縺?285円x12安縺?なる
電觸??料は藹??驥?電灯Aから月70円安縺?なる=>1年目縺?1500円/年臀??安いが、セット割りがなく翌年から1000円位高い=>切り替え面倒
https://www.noe.jxtg-group.co.jp/denki-kyotsu/swcplp/?companycode=2000&partnercode=603409&utm_source=yahoo&utm_medium=ad_exchange&utm_campaign=202002_newmember_ele_kansai&waad=sW7YiMpL
セット割縺?3%off 蟷?4万縺?1200円縺?らい安い
https://kepco.jp/gas/menu_nattoku/
関電 従驥?電灯A=>なっトクでんき 100kwhで月50円縺?らい安い
100kwh 2,068円 2,011円
大阪ガ繧? 一般料金=>なっトクガ繧?3m^2で月100円縺?らい安い
3m^2 1,253円 1,167円
なっと縺?ガ繧?
イ 基本料金
1月および・??契約につき745 円 10 驫?
ロ 従驥?料金
1立方メートルにつき155 円 88 驫?
■PayPay
2弾 2019/2/12-2019/5/31 ま縺?20%Off
ファミマ、松藹??、ビッカメ、ヤマダ、ミニストップ、ワタミ等
■Line pay
2019/3月1日・??金)~3月14日・??木・?? ローソ繝?20%off
コンビニチャー繧?(ファミリーマート)、 famiポートでコンビニ支払い、QR/バーコードを表示してレジでチャー繧?
銀行口座を登録してチャー繧?
LinePay縺?Pt 例)3/9 -> 5/3頃までに臀??縺?
Line>Lineウォレット>Lineポイント>Lineポイント履歴で確認ができる
3/8 2/27 2/25 2/20 2/11 1/11 12/14 12/6 11/30 11/27 11/16 11/10 10/3
11/30まで臀??いている
Line outは固藹??なら3分、携帯なら1分無料、通常藹??告を見るが登録施設なら見ない
■郵便局
2020/5からキャッシュレス決済対藹??、2月から一驛?
https://www.post.japanpost.jp/life/cashless/index.html
親のお金が引き出せない!認知症による口座凍結から親のお金を守る6つの方觸?? (mirasia-times.jp)
■Amazon
プライムの藹??約や解軆??で同じ期限や同じセキュリティコードでクレジットカードが再発鐔??される
プライム契約しているときのものを使い続けるといい?
Amazonカスタマーサービスへは電話をもらうと良いが、販売者への連絡は商品を選んでチャットに「質蝠?する」と投げれば連絡できる画面になる(驕?去の履歴もある)
■QUOカード使える店
エネオス、マツキヨ、本藹??、ビッグエコー、HMV、UCC、711ファミマローソ繝?
使えるお店 | 【公藹??】ギフトといえ縺?QUOカード(クオカード) (quocard.com)
■Vポイント
ガスト支払い すかいらー縺?PT縺?VPが溜まる、使うときはすかいらー縺?PTか楽天/VP等のどれかだけ
Vのクレカはタッチ決觸??縺?7%off ?
■ヤフオク縺?PTが使えない
支払い方觸??に制限のある商品(ストア決済)
かんたん決觸??利用の制限事項
画面の支払い方觸??に使えないと注諢?書きがある(金券が全部だめという繧?けではない
ポイントは施設利用券、興行チケットで使うといいかも、すかいらー縺?/ラウンドワ繝?/マクド/ジャンカラとかがある、モロゾフは金蛻?
【2025年最新】Yahoo!オークショ繝? - 興行チケット(チケット、金券、宿觸??予約)の中古品・新品・未使用品一隕?(2ページ逶?)
【2025年最新】Yahoo!オークショ繝? - 施設利用蛻?(チケット、金券、宿觸??予約)の中古品・新品・未使用品一隕?
■家・??自臀??)
極太突っ張り棒を使って臀??切り等で狭縺?ても効軆??よく使う
2x4で最下段藹??納縺?2.5段ベッド
レンタル倉庫 minikura(ミニクラ・??| 安心、簡単に使える藹??納サービ繧? | 寺田倉蠎?
基軆??ブロック・??単管パイプで鐔??庫・??高さや3方藹??気遮断、建軆??確鐔??申鐔??の義務:施工前や施工後に申鐔??や検査で藹??追いでは鐔??められる事はない、グレーで饅??認も多いらしい)
Posted by funa : 04:08 PM
| Gadget
| Comment (0)
| Trackback (0)
August 30, 2015
Photo Boo
Photo Boo超重要サイト。写真部の部活。現時点で縺?1年足らずだが大臀??同じプロセスでこの釣果。ライザップ縺?3股中。α7R、G7X、Kiss X4、DP2 Merrill、ixy 30s
Posted by funa : 01:17 AM
| Web
| Comment (0)
| Trackback (0)
March 28, 2015
Victorinox PLI traveller

Sony α7R ISO2500 F5 1/30 29mm, SEL1635Z Vario-Tessar T* FE 16-35mm F4 ZA OSS

■
ビクトリ繝?ック繧? PLIトラベラ繝?閉じた長さ: 91mm
ラージブレード(大刃)・スモールブレード(蟆?刃)・カン切り・マイナスドライバー・??小)・栓抜き・マイナスドライバー・??大・??・ワイヤーストリッパー・リーマー・??穴あけ)・キーリング・ピンセット(毛抜き)・ツースピック・??爪觸??枝)・はさみ・マルチフック・プライヤー・ワイヤーカッター・端子つぶし・ソーイングアイ・??糸穴)・プラスドライバ繝?
■
Zebra SL-F1ミニ■
ABITAX タグライトポケットに藹??さな道具を詰めるというある種の軆??学というか。
Posted by funa : 12:55 PM
| Gadget
| Comment (0)
| Trackback (0)