PHPStormで、配列の記述フォーマットをarray()から[]ショート表記にする
環境設定で 強制的にショート表記に変更するにチェック
環境設定 > Editor > Code Style > PHP の Other タブで Array Declaration Style の Force showr declaration style にチェックする。
その後エディターで、ショートカット 「Cmd + Opt + L 」で変換されます。
環境設定で 強制的にショート表記に変更するにチェック
環境設定 > Editor > Code Style > PHP の Other タブで Array Declaration Style の Force showr declaration style にチェックする。
その後エディターで、ショートカット 「Cmd + Opt + L 」で変換されます。
注文(Orders) > 発注書(PurchaseOrders) > 業者(Supplier)がありました。
select条件2のみであればOrdersのHasManyで設定すればよいがselect条件1でエラーとなる。
Orders>PurchaseOrders
Orders>PurchaseOrders>Suppliers
$this->Orders->PurchaseOrders->setSort(['Suppliers.name'=>'asc']);
で動的に設定できます。
(バージョン 3.5.17にて確認)
ソースコードをみると、$this->_sortを上書きしているだけのセッターなので、そのまま上書きな感じでした。
/**
* Sets the sort order in which target records should be returned.
*
* @param mixed $sort A find() compatible order clause
* @return $this
*/
public function setSort($sort)
{
$this->_sort = $sort;
return $this;
}
MacbookProを約2年ちょっと使っていた頃、机の上で少しガタガタするようになった。よく見ると底面の中央が少し膨らんでいました。これは俗にいう妊娠(バッテリー膨張)で底面のアルミボディーが膨らんでしまっているみたい。
問い合わせて機種を伝えたところ、預かっていったんリペアセンターへ郵送する必要があり、1周間ほどかかるとのこと。費用などについてもそこで調べてからとのことでした。
ちょっといろいろ時間もかかるし、大変だなぁと
もしてみる。AppleStoreの問い合わせから「起動または電源」を選んでTELを待つ。
しばらくして折返しの連絡があり、状況を説明する。(底面が膨らんできおり、ガタついている、キーボード、トラックパッド部分はいまのところ大丈夫) 購入日などを調べたところ、3年以内であり無償でバッテリーの交換が行えるということ。 また、
(うーん。。3年過ぎたら有償なの?? バッテリー寿命はともかく、アルミボディーの膨らみはせめて5年位は無償で対応してほしい。)
メインマシンがないと業務的に厳しいので、いったん無償で期間もあと1年ほどは大丈夫なのでいったん修理は保留しました。
さて、無償ではありますが、どうしても郵送などの時間がかかるとのこと。
で、自分でどうにかできないか、地元の修理業者さんではどうだろうと調べてみました。
といった感じでした。県内修理業者さんが早そうなのですが、無償でできるのに数万払うのでなんだか悔しい感じ、自分での交換はトラブルがあった場合が怖いなどから今回は基本Appleのサポートで行くことに。
業務の合間で修理と考えてましたがなかなか合間がなく新しいマシン購入を検討。古い方のマシンが不用になるので、メルカリ/ヤフオクの相場を確認する。
まだ結構いい値段で売却できそうなので、6月のWWDCで新しい機種が出るかを確認して購入するタイミングを決めることとする。
事前情報で可能性が薄いと言われていたとおり、新しいものはなし。
発表直後にAppleStoreの整備済製品を漁っていたところ目当てのスペックのものが残っていたので、その場で発注。以下希望のスペックでしたら、USキーボードだけ断念。
キーボードはほとんど外付け利用が多く、7万円近く安いので断念。
4Kディスプレイのマルチやクラムシェルモードがほとんどなので、GPUが希望通り4GBのRadeon Pro 560があってよかった。カラーはこだわらなかったがスペースグレイでした。
合計で27マソ近く、結構な出費。。。
ということで、再度Appleサポートへ問い合わせ。(土曜の早い時間で申込み後即TEL来ました。)
以前問い合わせていることと、聞いていることをざっくり説明し、本人確認etcの確認時効のみをすませて発送の依頼の話へで翌日の日曜のAMに受け取り依頼。
やまとさんが宅急便PC用の箱を持ってきてくれるので、なにも準備せず筐体の電源だけを切って準備してお渡しするのみ。
翌日のAMにはリペアセンターに到着した旨のメールが着弾、お昼ごろに部品を発注したとの連絡がありました。(修理状況はAppleStoreのマイサポートで随時確認可能)
Webで確認すると「修理状況を確認できません。」の表示、この前の状況が部品発注だったので対応中?なのかな。
お昼頃に修理負えて発送しましたのメール着弾マイサポートページを確認すると発送済。になっておりました。
配送状況を確認すると、夕方にYAMATOへ荷物受付/発送/厚木ゲートウェイベース通過
リペアセンター到着の4日後自宅に配送到着しました。
TELでの予約してから、6日目で届きました。
土(問い合わせ),日(ヤマト集荷),月(到着/検査/部品発注中),火(部品発注中),水(発送),木(空輸中),金(到着)
で、一緒に修理報告書がついてました。
個人PCとかだと割と早い対応で問題ないのですが業務だと約1週間メインPCがない状態はちょっと厳しい感じですね。地元の修理屋さんの技術が良い所があればすこし費用がかさんでもお願いしても良いかもしれません。
今回はこのタイミングで買い替えいたしましたが、約2.5年利用してますので元の値段の半額程度でオークションなどで販売できればまぁそんなにマイナスではないと考えています。
東京とかだと3–4日でいけるのかなぁ。
設定でなんだかドハマリしてしまっていたので、いったんすべてリセットする方向で進めてできたので。
※あくまでうまく行ったケースとしてもメモ。不要な手順や不適切な部分ありましたらご了承ください。m(_ _)m
1. Mac側でQNAPとの接続を解除
2. BackupStationのTime MachineのサポートをOFF
3. ControlPanel > Network & File Services > Win/Mac/NFS で、Apple NetworkingをOFF
4. ControlPanel > System > StrageManagerでディスクをフォーマット(EXT4)
5. ControlPanel > Network & File Services > Win/Mac/NFS で、Apple NetworkingをON
6. BackupStationのTime MachineのサポートをON (※たまにパスワードの設定がうまくいかない事があり、何度か設定したことがあった)
7. Mac側からQNAPに既存のユーザー("TimeMachine"でない)で、接続(smb::にてつなぎました。AFPでも良いのかも)
8. Mac側のシステム環境設定でディスクを選択、TimeMachineアカウントで接続(Connect)
9. 設定完了
ハマったときの現象や陥ったことなど
以上、自分用のメモ or なにかしら役に立てばです。
検証のためParallels Desktopを起動しようとすると、アップデートきた、OK,OKアップデートしたらセキュリティー許可しろーと
※他のKarabinerとかQuickeyとかBetterTouchToolはセーフモードで起動してできたけど。Parallels自体がセーフモードで起動できなかったので。
で、FacebookからParallelsさんに問い合わせ、数分で反応具体的な方法をいただく。
Parallels desktopのinternational Gmbhの許可をMacからの権限所得失敗が発生してる問題となります。
■Parallels international Gmbhの許可に権限与えるための操作手順※ご自身より難しいの場合は是非ともAppleのサポート窓口にご相談しながら、実施お願いいたします。
Macのハイスキル操作となりますが、本窓口では情報詳しくお持ちではございませんが、ご理解いただければと存じます。
1.リカバリモードで起動(Cmd+R)
2.言語選択を選ぶ > メニューからターミナル起動し以下のコマンド実行
//SIP(System Integrity Protecton) を有効
csrutil enable
//Parallelsに'kext-consent'を許可(4C6364ACXTはアプリケーションIDかな?)
spctl kext-consent add 4C6364ACXT
3.メニューから再起動して、Parallelsを起動
ここで
https://api.slack.com/apps
Createで、
アプリ名を適当に入力+workspace選択
パーミッションを選んで。
Scopeの部分で、“send message as {アプリ名}”を選択
Install App to workspaceを
Authorizeする。
アクセストークンを確認する。
モノログインストール
$ composer require monolog/monolog
AppServiceProvider.phpの boot()に設定
<?php
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Log::listen(function () use($token){
$monolog = Log::getMonolog();
$monolog->pushHandler(
new SlackHandler('アクセストークン','#チャンネル名','notice','notice',false,Logger::NOTICE,false)
);
});
}
ログ呼び出す。
logger()->notice('てすとですよー');
//cofig/mail.php
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/emails/signeture'),
resource_path('views/vendor/mail'), <<<この行追加
],
],
今回ボタンの色のバリエーションのみ欲しかったので以下のみ追記
// resources/vendor/mail/html/themes/my-theme.css
.button-orange {
background-color: #E95205;
border-top: 10px solid #E95205;
border-right: 18px solid #E95205;
border-bottom: 10px solid #E95205;
border-left: 18px solid #E95205;
}
<?php
namespace AppMail;
use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
use IlluminateContractsQueueShouldQueue;
class RegisterShipped extends Mailable
{
use Queueable, SerializesModels;
public $user;
public $subject = '会員本登録に関するご連絡';
protected $theme = 'my-theme';
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->markdown('emails.register');
}
}
@component('mail::button', ['url' => action('UsersController@activate',$token),'color'=>'orange'])
登録する
@endcomponent
$this->request->queryでパラメータはあるのでHtml->linkのパラメータに+演算子で配列をくっつける。
<?= $this->Html->link('リンク', ['action' => 'index']+$this->request->query,['target'=>'_blank']) ?>
以下のとおり効かず幅が伸び続ける。
<table style="table-layout: fixed">
いろいろ散々はまったけど上記で一発解決。
LaravelでAPIを作っていて、外部のHTMLアプリからAjaxしようとするとクロスドメイン制約にかかって少しはまりました。(POST時に事前にOPTIONSで許可を確認とかCookieを有効にしないとCSRFのセッション切れたりetc.)
※セキュリティー的には許可の類は制限をするなど要検討。
//サーバー側はMiddlewareでヘッダーを追加
public function handle($request, Closure $next)
{
$response = $next($request);
if(APIアクセス判定条件){
$response->header('Access-Control-Allow-Origin',request()->header('Origin'));
$response->header('Access-Control-Allow-Credentials', 'true');
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-CSRF-TOKEN');
$response->header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
return $response;
}
//POSTなどの前にOPTIONSでリクエストがあるのでRouterに記述追加(許可のヘッダーはMiddlewareで管理なのでこちらは空のレスポンス作るのみ)
Route::options('{all}', function () {
$response = Response::make('');
return $response;
});
//クライアント側
axios.defaults.withCredentials = true
axios.defaults.headers.common['Content-Type'] = 'application/json';
if (method === 'get') {
promise = axios.get(url, { params: params })
} else if (method === 'post') {
promise = axios.post(url,params,{headers:{'X-CSRF-TOKEN':トークン}});
}
これはセキュリティー上基本アクセス出来ないのでサーバー側のレスポンスヘッダーに加える必要があります。
$response->header('Access-Control-Allow-Origin',request()->header('Origin'));
Cookieを許可するのですが、この値を途中、1(数字)と返してしまいすこしはまった。文字列の’true’でうまくいきました。
$response->header('Access-Control-Allow-Credentials', 'true');
あとはaxios側もCookie送信がOFF ( オプションの withCredentials がfalse)になっているので設定します。
axios.defaults.withCredentials = true
基本的なものと、LaravelのCSRFのチェックに利用する ’X-CSRD-TOKEN’を加えます。
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-CSRF-TOKEN');
許可するメソッドを指定します。(APIでGETのみならGETだけなどセキュリティー的云々)
$response->header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
最初わからず混乱してたのですが、クロスドメインへPOSTする前にOPTIONSメソッドでpre-flightのリクエストを送信します。
Powered by WordPress & Theme by Anders Norén