投稿者: admin Page 11 of 47

QNAPのNASでTimeMachineがうまく設定できなかった(AFP)

QNAPのNASでTimeMachineがうまく設定できなかった(AFP)

設定でなんだかドハマリしてしまっていたので、いったんすべてリセットする方向で進めてできたので。
※あくまでうまく行ったケースとしてもメモ。不要な手順や不適切な部分ありましたらご了承ください。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. 設定完了

ハマったときの現象や陥ったことなど

  • AFPでQNAPへ繋がらない
  • TimeMachineが見えない
  • SMBを使ってディレクトリごとでの設定と混同する
  • BackupStationのTimeMachineのパスワードがうまく反映されない

以上、自分用のメモ or なにかしら役に立てばです。

OSX High Sierraで、Parallels Desktop13 がアップデートできなかった。

検証のためParallels Desktopを起動しようとすると、アップデートきた、OK,OKアップデートしたらセキュリティー許可しろーと

ボタン押せないorz..

ボタン押せないorz..

※他の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を起動

無事起動できました。

Parallels13

Parallels13

Laravel5.5でSlackにログ

Laravel5.5でSlackにログ

ここで

https://api.slack.com/apps

Createで、

title

title

アプリ名を適当に入力+workspace選択

title

title

パーミッションを選んで。

title

title

Scopeの部分で、“send message as {アプリ名}”を選択

title

title

Install App to workspaceを

title

title

Authorizeする。

title

title

アクセストークンを確認する。

title

title

モノログインストール

$ 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('てすとですよー');

Laravel5.5でマークダウンメールのデザインをカスタムする方法。(ボタン色などの追加)

Laravel5.5でマークダウンメールのデザインをカスタムする方法。(ボタン色などの追加)

mail.phpの設定変更 リソースパスを追加

//cofig/mail.php 
    'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/emails/signeture'),
            resource_path('views/vendor/mail'), <<<この行追加
        ],
    ],

追加リソースパスにCSSを追加

今回ボタンの色のバリエーションのみ欲しかったので以下のみ追記

//  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;
}

Mailableクラスでテーマを指定

<?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

参考URL
https://laravel-news.com/email-themes

cakephp3 ViewのHtml->linkでリンクに検索パラメータを追加する

cakephp3 ViewのHtml->linkでリンクに検索パラメータを追加する

$this->request->queryでパラメータはあるのでHtml->linkのパラメータに+演算子で配列をくっつける。

<?= $this->Html->link('リンク', ['action' => 'index']+$this->request->query,['target'=>'_blank']) ?>

DomPDFで word-wrap,word-breakが効かなくて困った件。

DomPDFで word-wrap,word-breakが効かなくて困った件。

以下のとおり効かず幅が伸び続ける。

の中にdivやらpやらwidth指定しても伸びる。

折り返さない

折り返さない

table-layout: fixedで解決。

<table style="table-layout: fixed">

いろいろ散々はまったけど上記で一発解決。

table-layoutでかいけつ

table-layoutでかいけつ

LaravelのAPI別ドメインからaxiosを使ってアクセス

LaravelのAPI別ドメインからaxiosを使ってアクセス

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':トークン}});
}

外部ドメインへのAjaxは禁止なのでサーバー側で “Access-Control-Allow-Origin” レスポンスヘッダーを返す。

これはセキュリティー上基本アクセス出来ないのでサーバー側のレスポンスヘッダーに加える必要があります。

$response->header('Access-Control-Allow-Origin',request()->header('Origin'));

クッキーを許可するために ‘Access-Control-Allow-Credentials’ で ’true’を返す。

Cookieを許可するのですが、この値を途中、1(数字)と返してしまいすこしはまった。文字列の’true’でうまくいきました。

$response->header('Access-Control-Allow-Credentials', 'true');

あとはaxios側もCookie送信がOFF ( オプションの withCredentials がfalse)になっているので設定します。

axios.defaults.withCredentials = true

リクエストで許可するヘッダーを ‘Access-Control-Allow-Headers’ で指定

基本的なものと、LaravelのCSRFのチェックに利用する ’X-CSRD-TOKEN’を加えます。

$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-CSRF-TOKEN');

許可するメソッドを ‘Access-Control-Allow-Methods’ で指定

許可するメソッドを指定します。(APIでGETのみならGETだけなどセキュリティー的云々)

$response->header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');

POSTの前にOPTIONSのリクエストが来る。

最初わからず混乱してたのですが、クロスドメインへPOSTする前にOPTIONSメソッドでpre-flightのリクエストを送信します。

  1. [axios]OPTIONSメソッド送信 →
  2. ←レスポンスを返す。[server]
  3. [axios]ヘッダーを確認(各種設定したOrigin,Header,Methodなどなど)
  4. [axios]各種許可されるならPOST送信

Laravelで簡単にバックアップ

Laravelで簡単にバックアップ

インストール

$ composer require spatie/laravel-backup

config/app.phpのprovidorsに追加

    'providers' => [
        Spatie\Backup\BackupServiceProvider::class,

artisanコマンドで設定ファイル自動作成
config/backup.phpが自動生成される。(ここは適当に編集)

$ php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"

バックアップ(DBのみ) –only-dbでDBのみ、警告がおおくでていたので、–disable-notificationsも付けた。

$ php artisan backup:run --only-db --disable-notifications

オプションなどは、

$ php artisan backup --help
//とか
$ php artisan backup:run --help

mysqlで重複行を削除する

mysqlで重複行を削除する

CREATE TEMPORARY TABLE tmp AS SELECT DISTINCT * FROM users;
DELETE FROM users;
INSERT INTO users SELECT * FROM tmp;
DROP TABLE tmp;
  • DISTINCTで重複をマージしてSELECT > テンポラリ
  • 元テーブル削除
  • テンポラリ > 元テーブル
  • テンポラリ削除

Laravelで現在のGET検索パラーメータ(リクエスト)をViewで引き継ぐ。

Laravelで現在のGET検索パラーメータ(リクエスト)をViewで引き継ぐ。

すこし探して、何度かさがすので。メモ
検索してその結果セットをCSVダウンロードや印刷などにつなぐ時。


<a href="{{ route('item.index',request()->query->all().['export=1']) }}" target="_blank">EXport</a>

のようにパラメータ引きついでお尻に種べつを付けとくとコードも共有しやすかったです。

Page 11 of 47

Powered by WordPress & Theme by Anders Norén