LaravelのフォームでPUT/DELETEリクエストを送る。

LaravelのフォームでPUT/DELETEリクエストを送る。

LaravelなどのフレームワークでRESTfulなルーティングを行っている場合に、ブラウザのフォームではPUT/DELETEを送れないのですが、hiddenフィールドで name=“_method” value=“PUT or DELETE” とすればPUTやDELETEとして扱える。

<form method="POST" action="/foo/bar">
    <input type="hidden" name="_method" value="PUT">
</form>

また、laracollectiveのFormファザードだともっと楽に使える。

 {!! Form::open(['url' => 'foo/bar','method'=>'put']) !!}

とすればOK

rsyncで.(ドット)から始まる隠しファイルを除いて同期。

rsyncで.(ドット)から始まる隠しファイルを除いて同期。

あるプロジェクトで、._hogehoge.html などのファイル? や、.DS_Storeなどがアップされており、それを除外して同期をしたのでメモ。(といってexcludeしているのみです)

$ rsync -avz --exclude "**/.*"  USER_NAME@example.com:/var/www/html/ /var/www/html/

Laravelのカスタマイズいろいろ。

Laravelのカスタマイズいろいろ。

こんばんは。遅らばせながら、最近Laravel初めました。
最初はスタンダードな振る舞いを理解したいところですが、業務案件でいろいろ仕様がきまっておりなにがなんでも合わせろやてきな感じな今日このごろ。命名規則なんてく○くらえ的な実装をしています。

そこでいろいろ、カスタムしていくわけで、その方法をメモしておきます。

公開フォルダ(ドキュメントルート/public)を変更する。

こちらは、サーバー側でApache完備されて、/var/www/htmlがルートな件で、publicを/var/www/htmlに当てる件。

//まずpublicをhtmlにリネーム
$ mv ./public ./html
//続いてapp/Application.phpを作成し以下の通り publicPath()を上書きする。
<?php

namespace App;

class Application extends IlluminateFoundationApplication {
    
    /**
     * Get the path to the public / web directory.
     * @return string
     */
    public function publicPath()
    {
        return $this->basePath . DIRECTORY_SEPARATOR .'html';
    }
}

つづいてルーティングにプリフィックスを加える

システム管理者、社内管理者、外部業者、クライアントetcとそれぞれでURLを変えたいぞー。

ルート設定ファイルで グループを設定すればよし。

//routes/web.php
Route::prefix('admin')->group(function () {
    Route::get('/users/login', 'UsersController@login');
}
Route::prefix('manager')->group(function () {
    Route::get('/users/login', 'UsersController@login');
}
Route::prefix('suppliyer')->group(function () {
    Route::get('/users/login', 'UsersController@login');
}
Route::prefix('client')->group(function () {
    Route::get('/users/login', 'UsersController@login');
}
//それぞれ、以下でルーティングできるようになる。
https://example.com/admin/users/login
https://example.com/admin/usmanagerers/login
https://example.com/admin/suppliyer/login
https://example.com/admin/client/login

モデルのカスタム

primaryKey : 主キー、$incrementing : インクリメント(true/false)、$table : テーブル


class Post extends Model
{
    public $primaryKey = 'post_id';
    public $incrementing = true;
    protected $table = 'post';
}   

SublimeTextのよく忘れるショートカットメモ

SublimeTextのよく忘れるショートカットメモ

大文字・小文字

  • 大文字 : Cmd + K → U
  • 小文字 : Cmd + K → L

行コピー

  • Cmd + Shift + D

Alfred2 でParallelsのアプリケーションが検索されないようにする。

Alfred2 でParallelsのアプリケーションが検索されないようにする。

以下のようにひどい。


システム環境設定の SpotlightのPrivacyのところに ホームフォルダにある、Applications(Parallels)をドラッグする。


Alfredの設定でキャッシュをクリアする。


完了


PHPのpassword_hash(),password_verify()を使った場合に別の言語などに移行しても大丈夫?→大丈夫だった。

いつもよくCakePHPをフレームワークで使っていて、saltなどがなかったので、Laravelのフレームワークのパスワードハッシュ方法について調べてみました。(salt,seedとかいらない?と考え)

結果としては password_hash()で自動生成したものを利用していてsalt不要
→ほかの言語でも大丈夫 →ハッシュしたものに含まれるので大丈夫

でした、以下調べたこと。

ハッシュの方法

/vendor/laravel/framework/src/Illuminate/Contracts/Hashing/BcryptHasher.php

で、以下のようにハッシュしている

$hash = password_hash($value, PASSWORD_BCRYPT, [
    'cost' => $this->cost($options),
]);

$valueがパスワードで、PASSWORD_BCRYPT がアルゴリズム(BCrypt)、オプションの’cost’は、BCryptの元Blowfish暗号化に用いるCost、BcryptHasher.phpでデフォルト10(2の10乗回ストレッチ)に設定されている。

BCrypt

sha,md5などが高速化されているのに対し、計算量が多く時間がかる、オフラインでのGPUなどを使った、アタック時のレインボーテーブル生成などに時間がかかる。
またパスワードごとにsaltが違うので、その分レインボーテーブルを作るのに時間がかかる。

ハッシュ化されたパスワードについて

60文字になる。なにか有事に備えDBの桁数などは多めにしておくと良いかも。

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

暗号化バージョン : 2y
コスト : 10
ソルト : ‘N9qo8uLOickgx2ZMRZoMye’ (コストの後22文字)
暗号本体 : IjZAgcfl7p92ldGxad68LJZdL17lhWy

で、別の言語に移したらどうなるか?

phpを通してbcryptのルールでハッシュしているので、
Laravel事態がロジックをもたないので、他の言語でも認証OK。

月額契約せずに、短髪でオンラインでFAXを送信する方法

アカウント作ったの忘れそうで、めも。

HELLOFAX
https://app.hellofax.com

アカウント作成し自動返信メールのURLをクリックして、パスワード設定。
そのあと受信(receive)できんから、有料はどう?って進めてくるけど。送信だけならダイジョブなので、無視して進めて送信できます。

アカウント作成

アカウント作成

FAX Noは国番号 81を先頭に + 元の先頭の0は抜いて入力する。

MacのPHP(Homebrew)をphp7.1からphp7.2に変更

以前にPHP7.1をMacにインストールしましたが、7.2にそろそろ変更をと。

MacのPHPをphp7へ変更(HomeBrewでPHP71のインストール)

インストール(CakePHP3でintl拡張使うので合わせてインストール)

$ brew install php72
$ brew install php72-intl

セラーの中見てみるとできている。

$ ls /usr/local/Cellar/ | grep 'php'
php71
php71-intl
php72
php72-intl

シェルの設定で、php71に通していたパスをphp72に変更


export PATH=“$(brew –prefix homebrew/php/php72)/bin:$PATH”
“`

バージョン確認

php -v
PHP 7.2.0RC6 (cli) (built: Nov  7 2017 19:46:49) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0-dev, Copyright (c) 1998-2017 Zend Technologies

intlの確認確認

$ php -info | grep intl
Additional .ini files parsed => /usr/local/etc/php/7.2/conf.d/ext-intl.ini
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

php71を削除(php71-intlも合わせて)

$ brew uninstall --force php71-intl
$ brew uninstall --force php71

Apple HomePodのページのPodが立ち上がる所の動きが面白い

Apple HomePodのページのPodが立ち上がる所の動きが面白い

Apple HomePodのページ(PC版)ですが、スクロールするとPodが立ち上がって来るところがおもしろい。

Apple HomePod
https://www.apple.com/homepod/

と中をのぞいてみたら。canvasタグがいっぱいでした。

Devツールでチェック

うーん、videoタグをスクロールに合わせてコマを進める( canvasにvideoを置いてから)とか考えていたのですが、ちがったベタでした。

こんどvideoでできるかためしてみたい。

nginxで2回に1回ほどNot found エラーがでるけど再読込するとでなくなる。

nginx,php-fpm,WordPress,qTranslateXプラグインの組み合わせで発生。
不思議だったのは、大丈夫な場合とNGな場合がありました。

ログ

/var/log/nginx/error.log

を見てみると。

index.php" is forbidden (13: Permission denied)

のようなPermissionエラーが連発している。
ファイル自体は 644のパーミッション、オーナーを試しに nginxの実行ユーザー/グループ(nginx.nginx)にしてもだめ、親フォルダを755にしたら解決。

Page 14 of 46

Powered by WordPress & Theme by Anders Norén