node.js, npmバージョンアップ

[vagrant@localhost ~]$ nvm install v10.12.0
Downloading and installing node v10.12.0…
Downloading https://nodejs.org/dist/v10.12.0/node-v10.12.0-linux-x64.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.12.0 (npm v6.4.1)
[vagrant@localhost ~]$ nvm use v10.12.0
Now using node v10.12.0 (npm v6.4.1)

[vagrant@localhost ~]$ node -v
v10.12.0
[vagrant@localhost ~]$ npm -v
6.4.1

DNSのAレコードとCNAMEレコードの違い?

The DNS name server holds the correspondence bewteen domain names and host names and IP addresses as a databases. The data processed by this database is called a “resource record”.

The structure and format of this database and resource record depend on the DNS server. The most famous DNS server software “BIND” holds a database called “zone file” as a text file. In BIND, resource records such as correspondence between host name and IP addresses are described in zone files.

– A
– CNAME
– MX (mail exchange)
– NS (name server)
– SOA (start of authority)

The correspondence bewteen domain names and IP addresses does not have to be one to one. Multiple IP addresses can be associated with one domain name. In this case, plurality of IP addresses will be described in one A record.

AWS Route 53

AWSの場合、Aレコードがipアドレスではありませんね。Name Serverも.org, .net, co.uk, comの4つが登録されています。

EtherVPN

EtherVPNってなに?

> SoftEther VPN (“SoftEther” は 「ソフトウェアによるイーサネット」を意味します) は、世界中で最も強力で使用が簡単な、複数 VPN プロトコルに対応した VPN ソフトウェアの 1 つです。SoftEther VPN は Windows、Linux、Mac、FreeBSD および Solaris 上で動作します。

>リモートアクセス VPN と 拠点間接続 VPN を簡単に構築できます。
>HTTP プロトコルを用いて SSL-VPN を伝送するため、NAT やファイアウォールを通過 できます。
>大変画期的な VPN over ICMP および VPN over DNS 機能。
なるほど、VPN接続ってことか。よりセキュアな接続をしたい時などに使いたいってことかしらね。

stopPropagation();

$(document).on('dragover dragenter dragend drag drop', function(e){
	e.stopPropagation();
	e.preventDefault();
});

> stopPropagation
> 親要素への伝播をキャンセルする。
ん?

Drag&Dropを使ってみよう

<head>
	<meta charset="utf-8">
	<title>Document</title>
	<style>
	.dd {
		line-height:300px;
		text-align:center;
		font-size:12px;
		color:#ccc;
		width:300px;
		height:300px;
		border:1px dotted #ccc;
	}
</style>
</head>
<body>
	<div class="dd">ファイルをドラッグ&ドロップしてください</div>
	<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
  	<script>
  		$(".dd").on("drop", function(e){
  			e.preventDefault();
  			console.log(e.originalEvent.dataTransfer.files);
  		});
  		$(".dd").on("dragover",function(e){
  			e.preventDefault();
  		});
  	</script>
</body>

うん。

>ベントが明示的に処理されない場合に user agent に、そのデフォルトアクションを通常どおりに行うべきではないと伝えます。

え?何を言ってるのかさっぱりわからない。
デフォルトの操作をさせないって意味?

drag系のイベントに以下があるが、dragとdrop, dragenterは解るが、、、
dragover dragenter dragend drag drop

あ、mozillaに書いてありますね。
https://developer.mozilla.org/ja/docs/Web/API/HTML_Drag_and_Drop_API
> dragenter
ドラッグ中に、マウスポインタが要素の上に乗った最初の時点で発行されます。
> dragover
このイベントは、ドラッグ中にマウスポインタが要素の上で動いた時に発行されます。
> drag
このイベントは、ドラッグ操作が行われている間、ドラッグ元の要素(※ dragstart イベントが発行された要素)において定期的に発行されます。
> drop
drop イベントは、ドラッグ操作の最後に、ドロップされた位置の要素において発行されます。
> dragend
ドラッグ元の要素は、ドロップに成功したかどうかに関わらず、ドラッグ操作が完了した時に dragend イベントを受け取ります。

なんだこれ、”drag”って、定期的に発行されるって、意味不明だな。

qbmail

Githubより、qdmail.phpとqdsmtp.phpをダウンロードします。
Github QdmailをPHP7.0に対応させる

require_once('vendor/qdmail.php');
require_once('vendor/qdsmtp.php');
$mail = new Qdmail();
$mail -> errorDisplay(false);
$mail -> smtp(true);

$param = array(
	'host' => 'xxxxx.xsrv.jp',
	'port' => 587,
	'from' => 'hoge@foo.xsrv.jp',
	'protocol' => 'SMTP_AUTH',
	'user' => 'username',
	'pass' => 'password'
);
$mail -> smtpServer($param);

なんか、本家のサイトがあるようなんだが、更新が2008年で止まっている模様。なんだこれは。。
http://hal456.net/qdsmtp/download
qdはあまりニーズがないのかな。

blade property {{ __(‘Login’) }}

/rosources/views/layouts/app.blade.php

<li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                            </li>

この{{ __(‘Login’) }}を変えると。

/rosources/lang/en/login.php

return [
    'Login' => 'ログイン2',
];

/rosources/views/layouts/app.blade.php

<li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('login.Login') }}</a>
                                <!-- <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a> -->
                            </li>

なるほど、{{ __(‘${hoge}’) }}は、ローカルのヘルパーのようですね。
参考:https://laravel.com/docs/5.6/localization#retrieving-translation-strings

サクッといきます。このあたりは、面倒ですな。

{{ config(‘app.name’, ‘Laravel’) }}って何?

/resources/views/layout/app.blade.php

{{ config('app.name', 'Laravel') }}

これは、config/app.php の env’APP_NAME’を読み込んでいるという意味。

    'name' => env('APP_NAME', 'Laravel'),

env’APP_NAME’は.envのAPP_NAMEを読み込んでおり、なければLaravelって表示する、という意味だ。

APP_NAME=Laravel
APP_ENV=local

したがって、.envのAPP_NAMEを”フリーランスプラットフォーム”と変更すると

APP_NAME=フリーランスプラットフォーム
APP_ENV=local
APP_KEY=hoge
APP_DEBUG=true
APP_URL=http://localhost

このように変わる。

Laravelでログインユーザーのみページを表示させる

# /resources/viewsの下にmenu.blade.phpをつくる。適当にhelloとしておく

# 続いて、/app/Http/Controllersに MenuController.phpをつくる

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MenuController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('menu');
    }
}

# /routes/web.phpにroutingを追加

Route::get('/home', 'MenuController@index')->name('menu');

# ログインしている時

# ログアウトしている時は自動的にloginにリダイレクトされる

おおおおおおおおおおおおおお、なるほど、ようは、controllerで$this->middleware(‘auth’);があればいいのね。なるほど。ログインサービス作りたくなってきた。

laravelの.envでsmtpを設定

# 初期値

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

# mailtrap.ioから、usernameとpasswordを取得して.envを編集
# password reset buttonを押下

Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required

う。。。

# キャッシュクリア
[vagrant@localhost angel]$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

# 再度password reset buttonを押下

# mailtrapで確認

なるほど。