OmniAICreator/Qiita-1.07M huggingface dataset:
いろいろとバージョン確認

## Amazon Linux

`cat /etc/system-release`

```
Amazon Linux AMI release 2016.03
```

## Apache

`httpd -v`

```
Server version: Apache/2.4.18 (Amazon)
Server built:   Mar  7 2016 22:32:11
```

## PHP

`php -v`

```
PHP 5.6.29 (cli) (built: Jan 18 2017 19:08:44) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```

## MySQL

`mysql> select version();`

```
--------------
select version()
--------------

+------------+
| version()  |
+------------+
| 5.6.30-log |
+------------+
1 row in set (0.00 sec)
```

## 必要になったらどんどん追加していく・・・

リクエストあればコメントください。追記していきます。
Rrails:Cloud9でのメール認証機能実装の際のdefault_url_optionsの設定内容。

##はじめに

Cloud9でRailsのdeviseを用いて開発する際、メール認証機能実装に必要なdefault_url_optionsの設定方法で躓いたため、備忘録を含め記録として残したいと思います。

##結論
`rails s`をした後の、rootのURLを`config.action_mailer.default_url_options`に設定します。

私の場合ですと、以下のURLです。
<img width="1109" alt="スクリーンショット 2018-10-04 15.40.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/226787/5c0c33da-cafa-4229-104f-2fd58135ed5a.png">

そのURLをhost:の後に記述します。
また、その際の`protocol`は`'https'`となります。

<img width="1076" alt="スクリーンショット 2018-10-04 15.44.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/226787/c761d5fc-5613-86f4-abe7-07a25c9d1a9d.png">

`config.action_mailer.default_url_options = { protocol: 'https' , host: 'rootのURLです。' }`

余談ですが、
`config.action_mailer.raise_delivery_errors = true`
にしておくとでバックが容易になりますので、trueにすることを推奨いたします。


ご参考になりましたら幸いです。
DELL Inspiron 3470 で回復ドライブを作成してエラーとなった話

業務で新たにPCをセットアップすることになり、初期状態に戻せるように回復ドライブを作成することとなったが、エラーが発生して困った時の話を今後の備忘録としてまとめておく。
**※最終的に回復ドライブは作成できたが、行った対応が２つあるためどちらが解決策であったかがはっきりしない。。。**

##環境や前提

PC:DELL Inspiron 3470
OS:Windows10 Home 64bit
ドライブ:Cのみ
回復ドライブ作成先:外部USBドライブ
USB:3.1/2.0両方対応のUSBメモリスティック(ELECOM)16GB

##回復ドライブ作成作業開始
指示があった通りに以下のサイトを参考に作業開始。
https://hounote.com/archives/k/3185

回復ドライブ作成ツールで順調に進み、回復ドライブ作成画面の作成ボタン押下。
サイトの説明曰く「30～40分待てばよい」とのことでのんびり待つか、**と思ったその時！！！**

```ruby:
「回復ドライブを作成できません。回復ドライブの作成中に問題が発生しました」
```

**エラー発生。。。回復ドライブ作成が失敗した。。。(´・ω・`)**

特にエラー文言に理由等の記載はなく、意味がわからない！！
さっそくググったところ、以下のサイトに行き当たる。
https://hikarikaisen-hikaku.com/archives/7305

##原因調査

書いてあった原因として考えられるケースについて自分の状況と照らし合わせる。

###ＵＳＢスティックの容量不足
なんと、**16GBで事足りる場合とそうでない場合がある**らしく、**32GBを用意するのが無難**とのこと。
しかし、今手元には**16GBしかない**。。。
このケースについては奥の手とすることとし、別のケースを考える。

###ＵＳＢポートの位置
へー。場所が変わるだけで変わるものなのか？
エラー発生時、**背面の5つのポートのうちの1つ**に挿入していたので、**別のポートに変えて**再度回復ドライブ作成を試みた！
すると、**挙動が先程と違う！何か作業している感じ！**
####あーッッッ！でも！エラーになっちゃった！！！！！(´;ω;｀)
（※あとから気付いたが、回復ドライブ作成時、USBドライブの初期化が走るため、2度目以降はその作業が行われていただけみたい。。。）
これは違ったか。。。
次のケースは？

###USB機器を使用しすぎている
えー。**マウスとキーボードしか繋いでない**よ。。
こんなの普通でしょ？
まぁ、とりあえず回復ドライブ作成を開始直後にマウスとキーボードをポートから抜いて、待ってみた！
####？？？？！！！
####安定のエラーwww
えぇ、そんな気はしていましたとも。(^_-)-☆
他のケースはないのか？

###途中でスリープ状態になるため
実は作業始まってすぐに離席していたので、スリープ状態になっていたのかもしれない！
現在の設定は**30分でスリープモードへ移行する設定**だったので、とりあえず**スリープしない設定**に変更。
再度チャレンジ！！！！！

####「回復ドライブを作成できません。回復ドライブの作成中に問題が発生しました」
####。。。(´・ω・`)

　
他の手はないのか？

###タイミング
>「１回で失敗したから諦める・・・のでなく3回ほどチャレンジするとできることがあります（汗）」

**だってwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww**
うん、もうこの時点で既に**10回ぐらいチャレンジしてる**よ！？
もうダメだぁ～(/・ω・)/

##光明

そんなこんなで、他にもこのサイトにはケースがあったが当てはまっていてもすぐに分かるものではなかったので、再度ググってみた。
色々なサイトを見たのち、**やっと行き当たった**のが以下のサイト。
[バックアップメディア作成中のエラー（Windows 10システムでUSB回復ドライブ作成中にエラーが発生する）](https://www.dell.com/support/article/jp/ja/jpbsd1/sln299397/%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E4%BD%9C%E6%88%90%E4%B8%AD%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC-windows-10%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A7usb%E5%9B%9E%E5%BE%A9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E4%BD%9C%E6%88%90%E4%B8%AD%E3%81%AB%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B-?lang=ja)

**DELLの公式のサポート記事にあった！wwwww**
検索ワードに**DELL**を入れたらすぐ出てきたのに、不覚。。。
この記事によると**「C:\Recovery\OEMに移動してコマンド：del install *.*を実行する」**だけでよいとのこと。
何が原因で何がどうなって解消されるかはノータッチ☆
####案ずるな！やるが易しwwwww
これに掛けてみよう！！！！！

あと、USBポートが**前面**にもあったので、**背面から前面にUSBメモリスティックを移動**してみた。
最後の望みをかけて、回復ドライブ作成を実施！！！！！
####その結末や如何にッッッ！！！！！！！！！？？？？？？
---

　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
###「回復ドライブの準備ができました」
###☆(*´▽｀*)☆
　
　
　
　
 
**めでたしめでたし♪**

　
　
##あとがき

最後にやったのは、**DELL公式の方法**と**USBポートの移動**。
USBポートについて調べると、使っているマシンのUSBポートは**前面がUSB3.1**、**背面がUSB2.0**に対応したポートとのこと。
だからできなかったのかな、と思ったが、USBスティックメモリーは**USB3.1/2.0両対応**であったので、**この線は薄そう**。
恐らく**DELL公式の方法が解決のカギ**だったのではないだろうか。

もしまた同じような問題に直面したり、まさに同じような問題に直面している人に見てもらえたら幸いです☆
Active Directoryに登録しているグループポリシー名を、OU(組織)と紐付けて取得するPowershell

# 結論
⑤を実行すると取れます

# 説明
① 全ての \<OUの名前\> は、下記コマンドレットにより取得可能です

```powershell
Get-ADOrganizationalUnit -Filter 'Name -like "*"'
```

② OUに依存しているグループポリシー名は、下記のコマンドレットで取得できます。

```powershell
Get-GPInheritance -target "<OUの名前>"
```

③ そうです、①の出力を、②に1つずつパイプライン入力し、OU(組織単位)に依存しているグループポリシー名を全て取得します

```powershell
Get-ADOrganizationalUnit -Filter 'Name -like "*"'| %{Get-GPInheritance -target $_}
```

*  「%」は「foreach-object」のエイリアス、「$_」は「%{script block}」にパイプライン入力したオブジェクトを格納している特殊変数です

④ ③のgpolinksプロパティを参照すると、各グループポリシー名とそれに紐付くOUを取得出来ます

```powershell
Get-ADOrganizationalUnit -Filter 'Name -like "*"'| %{Get-GPInheritance -target $_} | %{$_.gpolinks}
```

⑤ export-csvにパイプライン入力し、csv出力しています。その際にshift-jisで読み込んでいます（Windowsのdefaultはshift-jis）

```powershell
Get-ADOrganizationalUnit -Filter 'Name -like "*"'| %{Get-GPInheritance -target $_} | %{$_.gpolinks} |export-csv -Encoding default c:\gpo_list.csv
```
GoogleAdManagerでMissing click tag. Add a valid click tag or exit function before uploading the creative to Ad Manager.

# GoogleAdManagerのHTML5広告出稿にてエラー
クリエイティブ登録時にエラーが出る。

```
Missing click tag. Add a valid click tag or exit function before uploading the creative to Ad Manager.
```

## GoogleAdManagerのHTML5広告ではCVリンク先を明示的に指定する必要がある。
まずは以下のようにclickTagという変数を定義する。

```html
<head>
  <script>
    var clickTag = "https://google.example.com"
  </script>
</head>
```

## aタグクリック時の処理をjsに変更する

```html
<a href="javascript:window.open(window.clickTag)">大人気のほげふがぴよ！</a>
```
Pythonでx, yとかの2重ループをやめたい

2重ループで二次元画像の画素を走査するときに以下のように書く。
しかし、ネストが深くなっていやだ。。。

```python
x_list = list(range(10))
y_list = list(range(20))

for x in x_list:
    for y in y_list:
        pass
```

`itertools`を使ってやるとネストが深くならない。

```python
import itertools

x_list = list(range(10))
y_list = list(range(20))
product = itertools.product(x_list, y_list)

for x, y in product:
    pass
```

# 速度比較
`itertools`を使うと遅くなる。悲しい😢

```python
import itertools
import time

x_list = list(range(1000))
y_list = list(range(1000))

product = itertools.product(x_list, y_list)
start_time = time.time()
for x, y in product:
    pass
end_time = time.time()
print("%f[sec]" % (end_time-start_time))
# => 0.062474[sec]

start_time = time.time()
for x in x_list:
    for y in y_list:
        pass
end_time = time.time()
print("%f[sec]" % (end_time-start_time))
# => 0.015663[sec]
```

# そもそも

Pythonでこんな重いループ回す書き方しないようにしようね!
NumPyとかつかっていい感じに行列として処理しようね!!

終わり！閉廷！…以上！皆解散！
プログラミング理解しにくい用語[ビルド・デプロイ]

今までEclipseからでしか、プログラムを実行したことなかったのであまりビルドデプロイの概念が理解できてなかったので軽くまとめます。

#ビルド（build）
コンパイル、依存関係の解決、静的解析、設定ファイルの解決、パッケージ化(WAR等)あたりの一連の作業をまとめてビルドという。
手作業でも行えるが、大体シェルやスクリプトで自動で行わせる。

- ビルドを回す = シェルやスクリプトで自動で行わせること

 - 例. スマホアプリを開発者がストアにアップロード
 
#デプロイ（deploy）
ビルドでパッケージ化したものを配置展開すること

 - 例. 利用者がスマホアプリをダウンロード＆インストール
kcfinder でlaravelの認証ユーザーごとにUploadディレクトリを変更する

## やりたいこと
管理画面でHTMLエディタを使う案件があった。
エディタ自体は良いんだけど、そのなかに画像を組み込みたい要望があったため、CKEditor + kcfinder の組み合わせで作ることにした。

kcfinder: [github/sunhater/kcfinder](https://github.com/sunhater/kcfinder)

## 必要な条件
管理画面にログインしたユーザーごとに画像を管理したい。
その際、他のユーザーのディレクトリやファイルが絶対に見えないようにしたい。

## 途中経過(1) ... integration !
kcfinder/integration/laravel.administrator.php
なんていうファイルがあったから調べてみた。いや、調べようとしてみた。
が、ソース追いかけるうちに眠くなり・・・・💤

## 途中経過(2) ... 普通にLaravel突っ込むよ！
public/index.php を参考にして、config.php のreturn前に下記のコードを入れてみた。

```php:conf/config.php
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/autoload.php');
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/app.php');

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
```

`$kernel` をダンプしてみたらうまい事できてるみたいだったので、なんとかmiddlewareを通してセッション認証終わらせようとしてみたものの・・・うまくいかず。
結局この時点では

```php:conf/config.php(2)
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/autoload.php');
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/app.php');

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
$controller = app('\App\Http\Controllers\Controller');
$controller->middleware(['auth:admin']);
```

みたいな超無理矢理コントローラー使うみたいなやり方してみた。
これはこれでうまくいったんだけども、不格好極まりない。

## 途中経過(3) ... もうちょっとスマートに
で、この辺でgoogleさんの出番。だれかもうちょっとうまくやってねぇかんなぁ・・・なんてググってみてると、
[Laravel5.4でCKEditorとKCFinderを使ってユーザーごとにコンテンツの画像管理をする](https://pon6.com/memo/memoShow?id=33)
こんな記事を見つけた。
あぁ、まさにこれなんだけど、このやり方じゃァ他のユーザーのディレクトリが見えちゃうんだよね。
なので、middleware通すやり方だけ参考にさせてもらいました。

## 最終形
こうなりました。

```php:conf/config.php
<?php
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/autoload.php');
require($_SERVER['DOCUMENT_ROOT'].'/../bootstrap/app.php');

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class)
			->pushMiddleware(\App\Http\Middleware\EncryptCookies::class)
			->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class)
			->handle(Illuminate\Http\Request::capture());

$id = auth()->guard('admin')->user()->id;
$uploadDir = '../../../../uploads/' . $id;
$fullPath = dirname(__FILE__) . '/' . $uploadDir;
if (!file_exists($fullPath)) {
	mkdir($fullPath, 0777, true);
}
$fullPath = realPath($fullPath);

return array(
    'disabled' => false,
    'uploadURL' => $uploadDir,
    'uploadDir' => $fullPath,
    'theme' => "default",

    //（以下略）
```

もっと最適化されたやり方があるのか、もしくはほんとにここに書いていいのか？っていう話はまだ検証してません。

何かの参考になれば。
RustのREPLがあるよ

https://github.com/google/evcxr
googleが開発してるらしいです。


# インストール方法

```
cargo install evcxr_repl
```

#　使い方

```
evcxr
```

できた！！！！！！
Hello,evcxr!
<img width="286" alt="スクリーンショット 2018-10-04 15.18.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/188304/db1d6d20-e44d-ee48-acdc-8441ba50422d.png">
macOS MojaveのインストールUSBの作成

# はじめに
macOS MojaveのUSBメモリを使ったインストールメディアを作成する。

# 必要なもの
+ macOS Mojave
+ 16GB以上のUSBメモリ(できるだけ高速なもの)  //8GBは未検証


# 手順
### 1.『macOS Mojave』をApp Storeからダウンロードする。（完了すると、/Applicationsフォルダに保存される。）

![スクリーンショット 2018-10-03 12.13.58.png](https://qiita-image-store.s3.amazonaws.com/0/54439/0124646b-5b0a-450c-b290-dfef5c07fd76.png)




### 2. 『ディスクユーティリティ.app』でUSBメモリの名前を『Untitled』にして、USBメモリを消去する。

<img width="1188" alt="スクリーンショット 2018-10-04 15.09.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/54439/44512be5-0273-72c6-4da2-d4fdbd9b9d79.png">



### 3. USBメモリのマウントを確認する。
次のコマンドを実行して先ほど作成したUSBメモリをマウントしていることを確認する。

```
$ ls /Volumes/
```

<img width="1002" alt="スクリーンショット 2018-10-04 15.11.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/54439/f25e0f15-ff61-6e67-fcd3-c3fc3dcc60bd.png">




### 4. インストールUSBメディアを作成する。
次のコマンドを実行してインストールUSBメディアを作成する。


```
sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled
```

<img width="1002" alt="スクリーンショット 2018-10-04 15.18.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/54439/4bfb2c93-2d57-a312-8c9e-54c4bf8ed70c.png">



# 関連
Appleオフィシャル(英語): https://support.apple.com/en-us/HT201372
Appleオフィシャル(日本語): https://support.apple.com/ja-jp/HT201372
abc 053　C ok

B
すぬけくんは文字列 s の連続した一部分(部分文字列という)を取り出して先頭が A であり末尾が Z であるような文字列を作ることにしました。 すぬけくんが作ることのできる文字列の最大の長さを求めてください。 なお，s には先頭が A であり末尾が Z であるような部分文字列が必ず存在することが保証されます。

```
#include<iostream>
#include<string>
using namespace std;
int main() {
	string S;
	cin >> S;
	int a=0, b=0;
	for (int i = 0; i < S.size(); ++i) {
		if (S[i] == 'A') {
			a = i;
			break;
		}
	}
	for (int j = 0; j < S.size(); ++j) {
		if (S[j] == 'Z') {
			b = j;
		}
	}
	cout << b - a + 1 << endl;
	return 0;
}
```
リハビリその３

C
すぬけくんは 6 面サイコロで遊ぶことにしました。 サイコロは 1 から 6 までの整数がそれぞれの面に書かれており、向かい合う面に書かれた数の和はどれも 7 です。
すぬけくんはサイコロの好きな面が上向きになるように置いたのち何回か以下の操作を行います。
操作：サイコロを手前、奥、左、右のどれかの方向に 90° だけ回転させる。その後、上を向いている面に書かれた数を y として y 点得る。
例えば、図のように 1 と書かれた面が上を向いており、手前側の面に 5 が、右側の面に 4 が書かれている状況を考えます。
図に示されるように右方向に回転させることで 3 と書かれた面が上を向くようにすることが可能です。 その他、左方向に回転させた場合は 4 と書かれた面が、手前方向に回転させた場合は 2 と書かれた面が、奥方向に回転させた場合は 5 と書かれた面が上を向くようにすることが可能です。
すぬけくんが合計で x 点以上得るために必要な最小の操作回数を求めなさい。

```
#include<iostream>
using namespace std;
typedef long long ll;
int main() {
	ll x, sum = 0, ans = 0;
	cin >> x;
	if (x <= 6)
		cout << 1 << endl;
	else if (x < 11)
		cout << 2 << endl;
	else {
		sum += x / 11;
		x %= 11;
		if (x == 0) {
			cout << sum * 2 << endl;
		}
		else if (x != 0 && x <= 6) {
			cout << sum * 2 + 1 << endl;
		}
		else {
			cout << sum * 2 + 2 << endl;
		}
	}
	return 0;
}
```
[sklearn] ValueError: Unknown label type: 'continuous' の解決法

# 参考

[こちらの機械学習のバイブルが参考になります！](https://amzn.to/3erxthw)

# 方法

[引用元](https://www.kaggle.com/pratsiuk/valueerror-unknown-label-type-continuous)

目的変数（被説明変数）をmalticlassに変更すれば解決するだろう

```python:
import numpy as np
from sklearn                        import metrics, svm
from sklearn.linear_model           import LogisticRegression
from sklearn import preprocessing
from sklearn import utils

training_data_X    = np.array([ [1.2, 6.7, 2.7],  [2.3, 4.6, 2.2],  [0.3, 3.9, 0.8],  [2.1, 1.3, 4.3]  ])
training_scores_Y  = np.array( [1.4, 9.2, 2.5, 2.2] )
prediction_data_test  = np.array([ [1.5, 3.4, 2.2],  [7.6, 7.2, 0.2] ])
lab_enc = preprocessing.LabelEncoder()
training_scores_encoded = lab_enc.fit_transform(training_scores_Y)

print(training_scores_encoded)
print(utils.multiclass.type_of_target(training_scores_Y))
print(utils.multiclass.type_of_target(training_scores_Y.astype('int')))
print(utils.multiclass.type_of_target(training_scores_encoded))
```

```
実行結果

[0 3 2 1]
continuous
multiclass
multiclass
```
VBSをVBEに変換し暗号化する方法

VBSの中身を閲覧されたり変更されたくない場合に参考にして下さい。
VBSをVBEに変換して暗号化する方法を記載します。

# 概要
VBScriptをVBEに変換し暗号化します。

# encode.vbsの作成
以下のソースコードをメモ帳に書いて「encode.vbs」という名前で保存します。

```ruby:encode.vbs
Option Explicit 

dim oEncoder, oFilesToEncode, file, sDest 
dim sFileOut, oFile, oEncFile, oFSO, i 
dim oStream, sSourceFile 
 

set oFilesToEncode = WScript.Arguments 
set oEncoder = CreateObject("Scripting.Encoder") 
For i = 0 to oFilesToEncode.Count - 1 
    set oFSO = CreateObject("Scripting.FileSystemObject") 
    file = oFilesToEncode(i) 
    set oFile = oFSO.GetFile(file) 
    Set oStream = oFile.OpenAsTextStream(1) 
    sSourceFile=oStream.ReadAll 
    oStream.Close 
    sDest = oEncoder.EncodeScriptFile(".vbs",sSourceFile,0,"") 
    sFileOut = Left(file, Len(file) - 3) & "vbe" 
    Set oEncFile = oFSO.CreateTextFile(sFileOut) 
    oEncFile.Write sDest 
    oEncFile.Close 

Next
```

# 変換し暗号化する方法
暗号化したいvbsファイルを上記で作成した「encode.vbs」にドラックアンドドロップすると自動生成されます。
Scala:"sbt assembly"でMerging エラーが発生した場合の対処法（sbt 1.0以降）

# 環境

- Windows10
- java version 1.8.0_171
- scala 2.12.3
- sbt 1.1.6

```project\assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
```

```project\plugins.sbt
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
```
## javax.mail　を組み込むときにはまった。
```
	"javax.mail" % "javax.mail-api" % "1.5.1",
	"javax.mail" % "mail" % "1.5.0-b01",
```

#sbt assembly で Merging エラー
```
 sbt assembly
　↓
[warn] Merging 'META-INF\NOTICE' with strategy 'rename'
```

#対処法（build.sbtに以下を追記）

```build.sbt
assemblyMergeStrategy in assembly := {
  case PathList("javax", "servlet", xs @ _*)         => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".properties" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".xml" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".types" => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".class" => MergeStrategy.first
  case "application.conf"                            => MergeStrategy.concat
  case "unwanted.txt"                                =>
MergeStrategy.discard
  case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
  case PathList("META-INF", "mailcap.default") => MergeStrategy.discard
  case PathList("META-INF", "mimetypes.default") => MergeStrategy.discard
 case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}
```

# 補足

sbt0.13以前だと

```build.sbt
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
  {
    case "META-INF/MANIFEST.MF" => MergeStrategy.discard
    case x => MergeStrategy.first
  }
}
```
で対処できた。

ちなみにsbtのバージョンは

```
sbt about
```
で確認できる。
KeyboardAvoidingView便利だし簡単


## KeyboardAvoidingView
KeyboardAvoidingView最高:v:

``` 
import { KeyboardAvoidingView } from 'react-native';
<KeyboardAvoidingView style={styles.container} behavior="padding" enabled>
  ここをpaddingさせたいUIを入れる
</KeyboardAvoidingView> 
```

とやるだけでTextInput時にキーボードでUIが隠れてしまう問題を解決できる:relaxed:
【備忘録】pexpectのsshをメソッド化

pythonでsshできるようにしたく、送ったコマンドの実行結果をprintしてファイルに吐かせたかったものの結構手こずりました。
sshは鍵認証とパスワード認証があり、いちいち書くのが面倒なのでメソッド化しちゃえと思った次第です。

#読み込むファイル
```list.txt
user host pass
例：

tarou 172.16.1.1 password
hanako 172.1.2 -

#tarouさんはパスワード認証です
#hanakoさんはすでに鍵交換されています

```

#pexpectのインポート
```ssh.py
def ssh_connect(user, hostname, password, command):
    FIRST_MESSAGE = "Are you sure you want to continue connecting"
    #パスワードが'-'の場合は鍵認証とします。
    if password == '-':
        ssh = pexpect.run('ssh %s@%s %s' % (user, hostname, command))
        #改行コードの削除
        res = ssh.strip()
        #byte形式なのでstr型に変換
        res = res.decode('utf-8')
    else:  #それ以外はパスワード認証です
        ssh = pexpect.spawn('ssh %s@%s %s' % (user, hostname, command))
        #初回アクセス時の対応です
        ret = ssh.expect([FIRST_MESSAGE, 'assword:*', pexpect.EOF, pexpect.TIMEOUT])
        if ret == 0:
            ssh.sendline("yes")
            ssh.expect('assword:*')
            ssh.sendline(password)
        if ret == 1:
            ssh.sendline(password)
        ssh.expect(pexpect.EOF)
        res = ssh.before
        res = res.strip()
        res = res.decode('utf-8')
    return res
```

#ハマったところ
パスワード認証で結果が返ってこなかった。

原因：出力メッセージの取得法をわかっていなかったよう。
当初やったこと

```1st.py
ssh.sendline(password)
res = ssh.before
```
結果

```
b'(assword)'
```

返ってきた結果に対して終わりを示すexpect(pexpect.EOF）を入れないとだめらしい。
ってことで

```2nd.py
ssh.sendline(password)
ssh.expect(pexpect.EOF)
res = ssh.before
```
とすることで実行結果を取得できる。

結果には改行コードがもれなくついてくるのでstrip()で除去、
その上で、型式がbyte型なので.decode()でstring型に変換する。

これをprint(res, file=log_file)とすることで画面に出力とログへの吐き出しをしてくれる。

これでシェル依存から脱却できるかしら。。。
Neo4jにPostmanからGET,POSTできるようにする

## 前提条件

Neo4jの環境構築済(ブラウザからlocalhost:7474で管理画面に入れる)

## 事象

何も考えずに公式ドキュメント通りにAPIを叩くと以下のエラーレスポンスが返ってくる。

    {
        "errors": [
            {
                "code": "Neo.ClientError.Security.Unauthorized",
                "message": "No authentication header supplied."
            }
        ]
    }
![neo4j-get-error.jpg](https://qiita-image-store.s3.amazonaws.com/0/256853/8fb7b8fd-f2b5-9eb4-47fd-0b403a6f4fa3.jpeg)

[The Neo4j REST API Documentation v3.4](https://neo4j.com/docs/rest-docs/current/)

というわけで、認証のエラーを回避する。

## 認証を設定する

Postmanの`Authentication`タブから`Basic Auth`を選択。
必要な認証情報を書く
> ユーザー名のデフォルトは`neo4j`
> 
> パスワードは初回ログイン時に決めたもの

![認証設定.jpg](https://qiita-image-store.s3.amazonaws.com/0/256853/1565da0b-0b68-20ec-4c3b-26c1a3ba16b6.jpeg)

これでNeo4jに対してGETやPOSTができるようになります。
![認証後.jpg](https://qiita-image-store.s3.amazonaws.com/0/256853/b3e99e28-0e16-fa76-4ee2-5ab6ac52fbe5.jpeg)
AWS Certified Solutions Architect - Associate ソリューション アーキテクト アソシエイト(released february 2018)受験記

SAAの受験で勉強方法、ポイントなどをメモしておきます。
経歴はネットワークを中心にインフラ（主にオンプレ）設計、構築、保守運用を10年ぐらいやってきました。NWの資格だとCCNPを取っています。AWSも本格的に勉強したいと思い、今回受験することにしました。
ちょうど試験が新しいバージョンになる時期(2018/8中旬以降はすべて新試験）だったので、旧1回、新2回受験して3回目で合格しました。勉強開始から合格までの期間は約3ヶ月です。

##1.勉強方法

1.1参考書
[AWS参考書]
(https://www.amazon.co.jp/gp/product/486594043X/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=486594043X&linkCode=as2&tag=speedblues-22)
定番ですが、会社においてあったのでまずはこちらを一通り読みました。本当に基本的、かつ機能に関してはベーシックなサービスだけをピックアップしているので入門書としては分かりやすくてよいと思います。

1.2問題集
[AWS問題集で勉強しよう](https://aws.koiwaclub.com/)
こちらの問題をひたすらやりました。3回受験する中で3周ぐらいやったと思います。2018/10/4時点で113題(1題につき7問程度)あります。2018/8以降に新試験になってから新しい問題がどんどん更新されています。（有料）

1.3模擬試験
[AWS認定模擬試験](https://aws.amazon.com/jp/certification/certification-prep/)
AWS認定の模擬試験です。旧試験を受験する前に受けました。模擬試験は合格だったけど本番は不合格。。でも試験慣れするためにも受けておいたほうがいいと思います。（有料）

[Udemy AWS Certified Solutions Architect - Associate 2018](https://www.udemy.com/aws-certified-solutions-architect-associate/)
海外のeラーニングサイトでAWSの模擬試験が受験できます。こちらは6つぐらいの模擬試験があり、4つぐらいやりました。全部英語なので翻訳しながらやりましたが、こちらの問題は本番試験でもいくつか出ました。（有料）

1.4実機
VPC、ネットワークACL、セキュリティーグループあたりの概念が分かりづらかったので、環境を作っていろいろ動かしてみました。無料枠で利用できるインスタンスがありますので、イメージがつかみにくいときは実際にコンパネから操作してみることをおすすめします。（無料枠のインスタンスを利用すれば無料）

##2.AWS Certified Solutions Architect - Associate(旧)
2018/8/10（旧試験を申し込めるギリギリでした）に受験。結果は以下。
65%以上が合格ラインです。あと1%。。

総合成績： 64%

分野別の成績 :
1.0  Designing highly available, cost-efficient, fault-tolerant, scalable systems: 63%
2.0  Implementation/Deployment: 66%
3.0  Data Security: 72%
4.0  Troubleshooting: 50%

##3.AWS Certified Solutions Architect - Associate(新)
2018/9/14に2回目を受験。結果は以下。
<img width="1009" alt="スクリーンショット 2018-10-04 14.40.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/263462/8135a0fd-a4fc-4d95-0e22-68158387c433.png">
新バージョンで感じたこととして
・72%以上が合格なので難易度が上がっている
・問題集や模擬試験の問題が同じような文章で出るのが40%、残り60%は応用が求められる
・EFS、ECS、DynamoDB Acceleratorなどの問題集には無いサービスの問題がでる
・スキーマ基準で最適なDBはRDS、DynamoDB、redshift、のどこか、などというDBの基本を理解していないと対応できない問題もでる

どこまで勉強すればいいのか分からなくなりましたが、AWSコンパネのサービスに乗っているものは一通り概要レベルでも抑えておかないと対応できないと感じました。

##4.AWS Certified Solutions Architect - Associate(新)
2018/9/18に3回目を受験。結果は以下。
<img width="1023" alt="スクリーンショット 2018-10-04 14.50.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/263462/2a52c494-cf34-14e8-ce08-20f1de5718c2.png">
3回目でようやく合格！
今回も同様に70%ぐらいは応用が必要な問題でした。

##5.受験を終えて
新バージョンは問題集の暗記では対応が難しくなっていると感じました。時間がかかるかもしれませんがサービスを1つ1つ実際にコンパネから触りながら理解を深め、受験することが望ましいと思います。次はプロフェッショナルを受験しようと思っているので、合格したらまた受験記を書きたいと思います。
nextvalの文法

##やりたい事
・postgreSQLでシーケンスを取得しようとしたら、エラーになったのでメモ。

##例
oracleとpostgreSQLで文法が違う。
mysqlはシーケンスそのものがないらしい。[^1]

[^1]: AUTO_INCREMENT機能 or 採番テーブル作成のどっちかを使うとの事

```sql:oracle
select hogeseq.nextval from dual;
```

```sql:postgreSQL
-- OK
select nextval('hogeseq');

-- ERROR: テーブル"hogeseq"用のFROM句エントリがありません
select hogeseq.nextval;
```

エラー文見ても、oracleユーザーからすると何が悪いのかよくわからないね。
Elasticsearch への問い合わせ (PHP)

こちらで作成したデータに PHP で問い合わせをします。
[Elasticsearch へのデータ投入](https://qiita.com/ekzemplaro/items/b6dda109ffe19b3c39c8)

```php:elastic_query.php
#! /usr/bin/php
<?php
// ------------------------------------------------------------------
//	elastic_query.php
//
//					Oct/04/2018
//
// ------------------------------------------------------------------
function curl_get_proc ($url)
{
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt ($ch, CURLOPT_PROXY, "");

	$data = curl_exec($ch);

	curl_close($ch);

	return $data;
}

// ------------------------------------------------------------------
fputs (STDERR,"*** 開始 ***\n");

$url = "http://localhost:9200/_search?q=tags:apple,moon";

$json_string = curl_get_proc ($url);

$dict_aa = json_decode ($json_string,true);

$llx = count($dict_aa['hits']['hits']);

print("count = " . strval($llx) . "\n");

foreach ($dict_aa['hits']['hits'] as $unit)
	{
	$ss = $unit['_source'];
	print($ss['name'] . "\n");
	print($ss['title'] . "\n");
	print($ss['content'] . "\n");
	print_r($ss['tags']);
	}

fputs (STDERR,"*** 終了 ***\n");
// ------------------------------------------------------------------
?>
```

実行結果

```text
$ ./elastic_query.php
*** 開始 ***
count = 2
渡辺五郎
My Name Is Watanabe
I love fish
Array
(
    [0] => apple
    [1] => orange
    [2] => banana
)
田中康夫
My Name Is Tanaka
I love cat
Array
(
    [0] => Earth
    [1] => Moon
    [2] => Mars
)
*** 終了 ***
WebViewから外部ブラウザを起動する時のActivityNotFoundException

## WebView内リンクを外部ブラウザで開く
WebViewを使った画面で、ページ内のリンクの一部をタップすると外部ブラウザで開くようにしたい！という要望はままあります。
そういう時は以下のような実装になるかと思います。

```java
webView.setWebViewClient(new WebViewClient() {
    // Android 7以降
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        if (特定のurl) {
            // ブラウザ起動
            view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        }
        else {
            return false;
        }
    }
});
```

## ActivityNotFoundException
しかし実はここで、あるパターンの場合にクラッシュします。
それは**有効なブラウザアプリが無い場合**です。

Androidには標準でブラウザが入っています(最近だとChrome？)が、それは設定アプリから無効にできます。
そうすると上記コードの`startActivity()`で`android.content.ActivityNotFoundException`がthrowされてアプリが強制終了してしまいます。

「ブラウザ無効にするユーザとか普通いるのか？」という疑問は当然あるかとは思いますが、テストで指摘されることもありますし、実際にクラッシュさせられる手順が存在しているので対応しておきましょう。

## とりあえず対応したコード

```java
webView.setWebViewClient(new WebViewClient() {
    // Android 7以降
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        if (特定のurl) {
            try {
                // ブラウザ起動
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            }
            catch (ActivityNotFoundException e) {
                // ブラウザアプリが有効でない場合はここに入る
                // 必要ならエラー表示とかする
                e.printStackTrace();
            }
            return true;
        }
        else {
            return false;
        }
    }
});
```

## 結論
外部ブラウザが無効になっているとActivityNotFoundExceptionが投げられるのでcatchしておきましょう。
at coder beginner 052

B

```
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
	int N;
	string S;
	cin >> N;
	cin >> S;
	int sum = 0;
	int ans = 0;
	for (int i = 0; i < N; ++i) {
		if (S[i] == 'I') {
			sum += 1;
		}
		else {
			sum -= 1;
		}
		ans = max(ans, sum);
	}
	cout << ans << endl;
	return 0;
}
```
リハビリその２

C
整数 N が与えられます。 N! の正の約数の個数を 1000000007 で割った余りを求めてください。
制約
1≦N≦10**3

```
#include<iostream>
#define mod 1000000007;
using namespace std;
int main() {
	int N;
	cin >> N;
	long long sum = 1;
	for (int i = 1; i <= N; ++i) {
		sum *= N;
	}
	long long count = 0;
	for (long long i = 1; i <= sum; ++i) {
		if (sum%i == 0) {
			count++;
		}
		count %= mod;
	}
	cout << count << endl;
	return 0;
}
```
これであってると思うんだけど全然違う答えが出るななんで？

```
#include<iostream>
using namespace std;
long N;
long mod = 1e9 + 7;
long sum = 1;
long a[1001];
int main() {
	cin >> N;
	for (int i = 2; i <= N; ++i) {
		int k = i;
		for (int j = 2; k > 1;) {
			if (k%j == 0) {
				a[j]++;
				k /= j;
			}
			else {
				j++;
			}
		}
	}
	for (int i = 2; i <= N; ++i) {
		sum *= (a[i] + 1);
		sum %= mod;
	}
	cout << sum << endl;
	return 0;
}
```
longとint は同じ関数内で定義しちゃダメっぽい？
AVFoundationがサポートしているバーコードの種類

##UPC-E

```swift

AVMetadataObject.ObjectType.upce
```

##Code 39

```swift

AVMetadataObject.ObjectType.code39
```

##Code 39 mod 43

```swift

AVMetadataObject.ObjectType.code39Mod43
```

##Code 93

```swift

AVMetadataObject.ObjectType.code93
```

##Code 128

```swift

AVMetadataObject.ObjectType.code128
```

##EAN-8

```swift

AVMetadataObject.ObjectType.ean8
```

##EAN-13

```swift

AVMetadataObject.ObjectType.ean13
```

##Aztec

```swift

AVMetadataObject.ObjectType.aztec
```

##PDF417

```swift

AVMetadataObject.ObjectType.pdf417
```

##ITF14

```swift

AVMetadataObject.ObjectType.itf14
```

##Interleaved 2 of 5 codes

```swift

AVMetadataObject.ObjectType.interleaved2of5
```


Data Matrix

```swift

AVMetadataObject.ObjectType.dataMatrix
```

https://www.appcoda.com/barcode-reader-swift/
crontabでtopをバッチモードで定期的に実行する

＜経緯＞
夜間の特定時間帯(毎日少しずつ変動あり)の実行中のJOBのCPU使用率を調べる必要があり、少し苦労したのでメモ。

＜問題点＞
以下のshellをcrontabで動かすと、出力したログが80バイトくらいでカットされる現象が出て2時間ほど悩んだ。
Terminalから実行すると問題なく出力された。
crontabでの実行時の環境変数の問題と想定されたがなかなかわからず色々ググって解決した。

＜結果＞
環境変数COLUMNS=197とTERM=vt220を設定。
両方必要かは未確認。

＜引数＞
CPU%の閾値を設定する。
$ cpu_stress_chk.sh 25.0

＜実行方法＞
$ crontab -e
*/1 * * * * ~/cpu_stress_chk.sh 25.0

```cpu_stress_chk.sh
#!/bin/bash
set -eu
export COLUMNS=197	#表示幅を設定する。
export TERM=vt220	#ターミナルを設定する。
logdir=/logs/xxxxx

hiduke=`date +"%Y%m%d"`
jikan=`date +"%Y%m%d:%H%M"`

threshold=$1       #CPU%の閾値

shname=`/bin/basename $0 ".sh"`
logflnm=$logdir/$shname.$hiduke.log

if [ -f ${logflnm} ]; then
	:
else
	/bin/touch         ${logflnm}
	/bin/chmod 664     ${logflnm}
fi

###------------
###    PROC    
###------------

### COMMAND START
	/usr/bin/top -b -c -n 1 |\
	/bin/grep -E "^ *[0-9]* " |\
	/bin/grep -v -E "\] *$" |\
	/bin/awk  -v "par=${threshold}" '{if ($9 > par) {print $0}}' |\
   	/usr/bin/xargs -I{} printf "${jikan}:{}\n" |\
   	/bin/sed 's/ *$//g' >> $logflnm
### COMMAND END

exit $?
```
zabbixの障害監視時に大量に同じメールが送信されないようにする

＜経緯＞
現在、運用テスト中のシステムにおいて障害監視をzabbixで行っていますが、監視対象のシステムが今ひとつ安定性に欠けており、油断すると大量のログを吐き出します。
※MiddleWareのログ(テキスト)やWindowsのイベントログなど。

大量のログを検知するとzabbixが発生した件数分のメールを発報して、メールシステムに負荷を掛けてしまうのでその回避方法を検討して以下の方法になりました。
ある時、イベントログに1000行以上、エラーが吐かれてそれをzabbixが全件拾い上げて1000通以上のメールがメールサーバに蓄積されてしまいました。メールサーバで同一送信元からのメールの流量を制限しているため、なかなかメールが捌けずに別のエラー発報が待ち行列の最後に回りエラー通報に気づかない事象が発生しました。

＜方法＞
zabbixはトリガーで監視対象を検知すると、MySQLのテーブル(zabbix.alerts)に発報内容を書き出します。
それを順次定義された内容(この場合はメール送信)に従って実行し、送信後ステータスを送信済み(status=”1”)に更新します。
今回は、メールの件名毎の未送信(status="0")件数をカウントし、閾値を超えている場合は、強制的に送信後ステータスを送信済み(status=”1”)に更新するようにしました。
以下のshellを1分おきにcrontabで起動し、閾値(check_count)を超えていれば、テーブルをupdateします。

1分おきの監視なので、先頭の数十件はalertsテーブルに格納とともに、メール送信され残りは送信されないようにいい感じに動いています。
crontabの実行間隔(現在1分おき)と、監視する件数(現在30件)をサーバの能力などに合わせて調整して頂ければ、よいかと思います。

※また、件数のチェック時ですが、zabbixのトリガーに複数のメールアドレスが登録されている場合、メールアドレス分のレコードがalertsテーブルに書き込まれるので、代表のメールアドレスで絞り込んでいます。
※更新のSQLからは、メールアドレスは外してください。

※「文字コードをLatin->UTF8に変更」はインストール時に文字コードがUTF8でインストールされていなかったみたいで、文字化けするので入れています。

※SQL(MySQLの接続)が３セクションありますが、２番目のセクションだけで機能は満たせます。
また、３セクションを一つにまとめても問題ありません。


```zabbix_alerts_check.sh
#!/usr/bin/env bash
# -----------------------------------------------------------------------------
# Purpose : Zabbixのアラートをある程度抑制する。
# -----------------------------------------------------------------------------
set -eu
logdir=/logs/zabbix

shname=`basename $0 ".sh"`
check_count=30	# 抑止する件数(閾値)

logflnm=$logdir/$shname.log

###------------
###    PROC    
###------------
### touch $logflnm

{

mysql -s -uzabbix -pzabbix <<EOF
-- 文字コードをLatin->UTF8に変更
SET NAMES utf8;
-- zabbixに接続
USE zabbix;
-- 未送信の同一件数をチェック(${check_count}件以上)
select sysdate(),a.subject,count(*) as kensu from alerts a
where a.status="0"
and a.sendto = "hogehoge@fugafuga.com"
group by a.subject
having kensu > ${check_count};
exit
EOF
mysql -s -uzabbix -pzabbix <<EOF
-- 文字コードをLatin->UTF8に変更
SET NAMES utf8;
-- zabbixに接続
USE zabbix;
-- 未送信で${check_count}件以上のメッセージのステータスを送信済みに更新。
update alerts x
set x.status="1"
where x.subject in(
select b.title from (
select a.subject as title,count(*) as kensu from alerts a where a.status="0" group by title having kensu > ${check_count} ) b)
and x.status="0";
exit
EOF
mysql -s -uzabbix -pzabbix <<EOF
-- 文字コードをLatin->UTF8に変更
SET NAMES utf8;
-- zabbixに接続
USE zabbix;
-- 未送信の同一件数をチェック(${check_count}件以上)
select sysdate(),a.subject,count(*) as kensu from alerts a
where a.status="0"
and a.sendto = "hogehoge@fugafuga.com"
group by a.subject
having kensu > ${check_count};
exit
EOF

} >> $logflnm 2>&1

exit $?
```
subversionでcommitしたモジュールのタイムスタンプをローカルの日付にする件で試したこと

いいか悪いかは置いておいて、subversionにコミットした時にローカルファイルのタイムスタンプをコミット日付にしたいと言う要件があって、「svn propset」で出来ることはネットの情報で分かったんですが、日付が+09:00されてしまって悩んだので以下の方法を試してみました。

# タイムスタンプをUTC時刻で取得する
とりあえず、以下のシェルでローカルのタイムスタンプをUTCで返すようにした。
ISO8601の拡張形式(YYYY-MM-DDTHH:MM:SSZ)を返却します。

```get_utcdate.sh
env TZ=UTC+0 ls --full-time ${1} | awk '{printf "%-10sT%-15sZ",$6,$7}'
```

#コミット日付を付け替える
事前にリポジトリのhooks/pre-revprop-changeでsvn:dateを許可する必要があります。
後、指定したrev全体に変更が反映するはずです。

```propset.sh
svn propset -r 999 --revprop svn:date "`get_utcdate.sh TARGET_FILE`"
【Ruby】p, puts, printメソッドの違い

Ruby初学者です。
今回はp,puts,printメソッドの違いについて記載します。
***
<b>pメソッド</b>
 - 引数と引数の型情報(文字列や数値)を一緒に出力。
   (数値はそのまま、文字列は""も表示。)
 - 改行あり。

```ruby:ruby
p "これはpメソッドです。"
p 20181004
```

```text:結果
"これはpメソッドです。"
20181004
```
<BR>
<b>putsメソッド</b>
 - 引数(文字列)を出力。
 - 改行あり。

```ruby:ruby
puts "これはputsメソッドです。"
puts 20181004
```

```text:結果
これはputsメソッドです。
20181004
```

<BR>
<b>printメソッド</b>
 - 引数(文字列)を出力。
 - 改行なし。

```ruby:ruby
print "これはprintメソッドです。"
print 20181004
```

```text:結果
これはprintメソッドです。20181004
```



***
参考URL
https://www.sejuku.net/blog/16119
https://tech.teshiblog.com/2017/07/30/post-13/
https://qiita.com/Chinats/items/c464c3a88c263f15224b
http://d.hatena.ne.jp/japanrock_pg/20080613/1213314138
cron　％（パーセント記号）は要エスケープ

# はじめに

とある日、Cronさんからお手紙（メール）をいただきました。
ちょっと前にcrontabで登録したコマンドがエラーになったようです。

```
/bin/sh: -c: 行 0: 一致する ``' を探索中に予期しないファイル終了 (EOF) です
/bin/sh: -c: 行 1: 構文エラー: 予期しないファイル終了 (EOF) です

```

# 何が起こったのか

こんなイメージのコマンドです。

```
0 0 * * * /usr/local/bin/hoge/poo.sh `date "+%Y%m"` >> /usr/local/bin/hoge/log/poo.log 2>&1
```

dateコマンドを使って当月（YYYYMM）を引数としてシェル(poo.sh)に渡すという至ってシンプルなもの。
手動で動作確認をしており、なぜエラーになったのかまったくわかりません。
グーグル先生に上記のエラーメッセージを丸投げするとすぐに教えてもらえました。
インターネットがなかった時代はどうやって調べていたんでしょうね。便利な時代になったものです。

[crontabで%(パーセント)を使うとエラーが起こる件](https://msmrrenda.wordpress.com/2014/01/)

自分でも` man 5 crontab ` で見てみました。

```
（抜粋）
A "%" character in the command, unless escaped with a backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
```

要するに%（パーセント記号）は\（バックスラッシュ）でエスケープしないと、改行文字に置換され、%以降の文字列は標準入力としてコマンドに送られるということです。

# 修正する

```
0 0 * * * /usr/local/bin/hoge/poo.sh `date "+\%Y\%m"` >> /usr/local/bin/hoge/log/poo.log 2>&1
```

%（パーセント記号）の前に\（バックスラッシュ）を入れてエスケープします。
これで解決しました。

# おわりに

要するに何かやるときはドキュメント読めよ、という事なのでしょうが、家電製品使う時も取説読まないからな。
何か起きないとドキュメント読まない。ダメですか？

ググっているときに見つけた副産物。
[crontab -e は「絶対に」使ってはいけない](https://ozuma.hatenablog.jp/entry/20120711/1342014448)

` crontab -e `　と打つつもりが ` crontab -r ` と打ったらcronに登録したコマンドが全部消えちゃうよという事です。
たしかにEの横にはRがあり、危ない気がします。世間(?)では常識っぽいです。
それでも ` crontab -e ` 使うなぁ。cron消してしまったら海外逃亡しよう。
意識高いプログラマはブラウザの検証ツールで日付計算する

ちょっとした計算をしたい時、プログラマなら電卓とか使わずに検証ツール使っちゃいますよね（白目）。

滅！

すいませんでした。

今年あと何日だっけな…？と思ったとき、さすがに電卓とかで計算しづらいので、ブラウザの検証ツールで計算しようとして罠にハマったので、未来の自分に向けて書き残しておきます。


### TL;DR
```javascript
$ Math.ceil((new Date("2018-12-31") - new Date()) / (60 * 60 * 24 * 1000))
```

↑↑に至るまでちょっとハマりました。

### まずは年末を取得する
```javascript
$ d = new Date(2018, 12, 31)
// Thu Jan 31 2019 00:00:00 GMT+0900 (日本標準時)
```

…は？

```javascript
$ d = new Date(2018, 11, 31)
// Mon Dec 31 2018 00:00:00 GMT+0900 (日本標準時)
```

ははーん、なるほど。 `0月 = 1月` という仕様なのか…。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
> 注: 引数 monthIndex は 0 から始まります。 つまり 1 月 = 0、 12 月 = 11 です。


引数を文字列にすると、意図した結果が返ってくるようです。

```javascript
$ d = new Date("2018, 12, 31")
// Mon Dec 31 2018 00:00:00 GMT+0900 (日本標準時)
```

ここから今日の日付けを引いて、日数に変換すればOK。 `new Date(2018, 12, 31) - new Date()` の返り値はミリ秒なので、 `1000 * 60 * 60 * 24` で割ればOKです。

```javascript
$ Math.ceil((new Date("2018-12-31") - new Date()) / (1000 * 60 * 60 * 24))
// 88(日)
```
Neo4jとは何なのか、0から調べて相関図を作ってみた

## Neo4jとは？

- 人と物、物と人など、様々なオブジェクトとの関係性を扱えるデータベースシステム
- Wikipediaがいい例

    例： 新垣結衣が出演しているドラマを探す→逃げ恥が代表作→逃げ恥の出演者は→星野源→星野源の楽曲は→SUN→SUNが主題歌のドラマは→心がポキッとね→(以下ループ)

- データ構造は従来のRDBとは違い、GraphDB(NoSQL)という形式。大量のデータを扱える上にメンテナンス不要

> [Neo4jことはじめ](https://qiita.com/tikamoto/items/c3a1bba12e9b83aee42a)
> 
> [Neo4jを使い倒してWebメディアを作った話](https://tech.bizreach.co.jp/posts/28/neo4j-media-startup/)

## クエリはどうするか

データベースの一種なのでクエリ(問い合わせ言語)が存在する

クエリはCypherという言語を使う。SQLのようなもの。

> [neo4j入門　Cypherクエリと使い方の具体例](https://www.deep-rain.com/programming/database/880)

## 何者の相関図を作ってみる

関係性を可視化できる特性を生かすと、コードベースで相関図を簡単に作ることができます。

佐藤健主演の映画「何者」の人物相関図を作ってみました。

例えばこんなコードで。上から地道に実行すると同じものができます。足りないところあったらすみません。
コメントは`//`でできます

    // ノード(登場人物)を追加
    CREATE (:Character{name:"二宮拓人"}), (:Character{name:"田名部瑞月"}), (:Character{name:"神谷光太郎"}), (:Character{name:"サワ先輩"}), (:Character{name:"小早川理香"}), (:Character{name:"宮本隆良"});

    // 関係性を追加
    MATCH (a:Character{name:"二宮拓人"}),(b:Character{name:"田名部瑞月"}) CREATE UNIQUE (a) -[:片思い] -> (b);
    MATCH (a:Character{name:"二宮拓人"}),(c:Character{name:"サワ先輩"}) MERGE (a) -[:慕っている]-> (c);
    MATCH (a:Character{name:"二宮拓人"}),(d:Character{name:"小早川理香"}) MERGE (a) -[:冷ややかな目で見る]-> (d);
    MATCH (a:Character{name:"二宮拓人"}),(e:Character{name:"宮本隆良"}) MERGE (a) -[:冷ややかな目で見る]-> (e);
    MATCH (a:Character{name:"宮本隆良"}),(b:Character{name:"二宮拓人"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"宮本隆良"}),(b:Character{name:"田名部瑞月"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"宮本隆良"}),(b:Character{name:"神谷光太郎"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"小早川理香"}),(b:Character{name:"二宮拓人"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"小早川理香"}),(b:Character{name:"田名部瑞月"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"小早川理香"}),(b:Character{name:"神谷光太郎"}) MERGE (a) -[:見下す]-> (b);
    MATCH (a:Character{name:"小早川理香"}),(b:Character{name:"宮本隆良"}) MERGE (a) -[:同棲中]-> (b);
    MATCH (a:Character{name:"小早川理香"}),(b:Character{name:"宮本隆良"}) MERGE (b) -[:同棲中]-> (a);
    MATCH (a:Character{name:"神谷光太郎"}),(b:Character{name:"二宮拓人"}) MERGE (a) -[:ルームメイト]-> (b);
    MATCH (a:Character{name:"神谷光太郎"}),(b:Character{name:"二宮拓人"}) MERGE (b) -[:ルームメイト]-> (a);
    MATCH (a:Character{name:"神谷光太郎"}),(b:Character{name:"田名部瑞月"}) MERGE (a) -[:元カノ]-> (b);
    // クエリ内で"?"は使えない
    MATCH (a:Character{name:"神谷光太郎"}),(b:Character{name:"田名部瑞月"}) MERGE (b) -[:まだ好きかも]-> (a);

![neo4j-何者相関図.jpg](https://qiita-image-store.s3.amazonaws.com/0/256853/f6391927-c6cb-04cf-a7a6-2f531edc7798.jpeg)

ググるとCypherの文法について書かれたページがいくつも出てきます。ググってみてください。

まだ少ししか触ってないので、間違っているところがあれば編集リクエストください。

ちなみに、JavaScriptではD3.jsというものと組み合わせて使うといいことがあるみたいです。そのうち書きます。
LaravelでControllerからartisanを利用する

# やりたいこと
viewから実行ボタンをクリックして```php artisan command:hogehoge```を実行したい。
引数も渡して利用させたい。

# やること
## ボタンを置く。
![スクリーンショット 2018-10-04 13.16.10.png](https://qiita-image-store.s3.amazonaws.com/0/42587/2db6dc95-77c2-9db8-21a3-9e36cdae101f.png)
こんな感じ。
特にコードはここには書かない。

## Controllerの実装
```php
    /**
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function hogehoge(Request $request)
    {
        $Ym = $request->year . $request->month;

        Artisan::call('command:hogehoge', ['Ym' => $Ym]);
    }
```

Artisan::callで呼び出す。
第二引数の配列のkeyに指定した文字列で値を渡す。
stringだけでなくbooleanやint、array型も渡せる。

## Command側の実装

$signatureに引数の名前をつける。
"?"をつけることで指定しなくても良くなる。

```php
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:hogehoge {Ym?}';
```

引数を取得する。
$thisから取得するのでclass内のどこからでも取得できる。

```php
    /**
     * Execute the console command.
     *
     * @return void
     */
    public function handle()
    {
        dump($this->argument('Ym'));
    }
```
Vue.jsを使う、ポートフォリオサイトを開発

@Dina です。
本記事は通っている奥多摩日本語学校で作ているプロジェクトについて書きます。簡単な仕様書を書きます。

___
#バックグラウンド
デベロッパーとして、私は新しいことを学んだので、履歴書も更新します。これで履歴書を書くことが大変になりました。この理由から、私は自分を紹介するウエブサイトを作りたいと思っています。これはバックグラウンド、スキルなどの情報をサイトで見られます。サイトの主な目標次の通りです：
>ホームページからスタート、自分の履歴についてを案内するようします

もう一つ理由はプロジェクトのスタートから展開までのプロセスを学びたいです。
今はウエーブパックを使って、Vue.jsのboiler plateを作っています。次は、CSS Gridを使う、簡単なCSSフレームワークを作りたいです。

#ページの一覧
<dl>
  <dt>ホームページ</dt>
  <dd>ホームページは、訪問者に私の情報の概要を提供します</dd>
  <dt>アバウトページ</dt>
  <dd>このページは、私についての情報を説明します</dd>
  <dt>スキル一覧ページ</dt>
  <dd>このページは、私が保有スキルを提供します</dd>
  <dt>作品ページ</dt>
  <dd>このページは、私がやりましたことに関する情報を提供します</dd>
  <dt>問い合わせページ</dt>
  <dd>私をもっと理解したいために連絡するためのフォームを提供します</dd>
  <dt>404ページ</dt>
  <dd>ページが見つかりません</dd>
  <dt>Coming Soonページ</dt>
  <dd>まだ完成しないページはこれを置換する</dd>
</dl>

#スタイルとレイアウト
**全体的なスタイル**
サイトスタイルは、主にロゴの色を組み込んだフラットカラーを使用し、アニメーションを使用してコンテンツを提供します。

フォントファミリー ： Open Sans
カラー ： ComplementaryとAnalogousコンセプト
![Base color.png](https://qiita-image-store.s3.amazonaws.com/0/293890/417241ae-0db5-f130-9006-e0a6f8af4aad.png)


レイアウト ：
![Layout.png](https://qiita-image-store.s3.amazonaws.com/0/293890/8c1b1f2c-ba29-4369-345b-45c8c9db7f96.png)


**ナビゲーション**
基本的なナビゲーションバーは全てのページを含める必要があります。ナビゲーションバーには、サイトのすべてのページへのリンクが含まれます。

#使う技術
ドメイン名：人々がウェブサイトに接続するために使用するデジタルアドレス。
ウェブサーバー：ウェブサイトのコンテンツをオンラインでホスティングする。使うWebサーバーのタイプは、他のWebサイトとサーバーを共有する共有ホスティングです。*まだありません
Vue.js：ウェブサイトを開発する技術


#開発フロー
![Circle Flow.png](https://qiita-image-store.s3.amazonaws.com/0/293890/d74e8334-2fe2-5071-6427-6eb419b1fc93.png)

___
以上です。
足りない所若しくは不明点があったら、コメントやフィードバックをお願い致します。
学習日誌　第三項　後編

##連結事故

前回バラバラに作ったので、連結させていこうと思います……で、その際試行錯誤したことをぼちぼち


```mistake.f90
program matrix calculator
allocatable A(:,:),B(:,:)
integer k,m,n
read(*,*) k,m,n
allocate (A(m,k))
allocate (B(k,n))
call rix(k,m,n,A,B)

write(*,*)'A='
do i = 1,m
   write(*,*) (A(i,j),j=1,n)
end do
write(*,*)'B='
do i = 1,k
   write(*,*) (B(i,j),j=1,n)
end do
end
!-----------サブルーチン副プログラム
subroutine rix(k,m,n,A,B)
allocatable A(:,:),B(:,:)
allocate (A(m,k))
do i = 1,m
   read(*,*) (A(i,j),j=1,k)
end do
allocate (B(k,n))
do i = 1,k
   read(*,*) (B(i,j),j=1,n)
end do
return
end subroutine rix
```

とこんな感じで持っていけるかなーと思ったのですが、gFortranより

Explicit interface required for 'rix' at (1): allocatable argument

と言う有難いエラーが返ってきました。

で、色々調べてinterfaceを入れると、今度は主プログラムが二つ存在するので、むりぽという結果に…。

今回の落とし所は、そもそも行列AとBをサブルーチンに入れる必要なくない？となりましたとさ。

と、考えると前回作った三つのプログラムは全部サブルーチンを通す必要なくない？ともなったので、

考え直しに考え直してこんな形になりました。

#連結

```matrix_cal.f90
program matrix_calculator
allocatable A(:,:),B(:,:),C(:,:),D(:,:)
read(*,*) k,m,n
allocate (A(m,k))
allocate (B(k,n))
allocate (C(k,m))
allocate (D(n,k))
call mat1(m,k,A,C)
call mat2(k,n,B,D)

write(*,*)'A='
do i = 1,m
   write(*,*) (A(i,j),j=1,n)
end do
write(*,*)'B='
do i = 1,k
   write(*,*) (B(i,j),j=1,n)
end do
write(*,*)'C='
do i = 1,k
   write(*,*) (C(i,j),j=1,m)
end do
write(*,*)'D='
do i = 1,n
   write(*,*) (D(i,j),j=1,k)
end do
end program matrix_calculator
!サブルーチン副プログラム
subroutine mat1(m,k,A,C)
dimension A(m,k)
dimension C(k,m)
do i = 1,m
   read(*,*) (A(i,j),j=1,k)
end do
C=transpose(A)
end subroutine mat1

subroutine mat2(k,n,B,D)
dimension B(k,n)
dimension D(n,k)
do i = 1,k
   read(*,*) (B(i,j),j=1,n)
end do
D=transpose(B)
end subroutine mat2
```

結果的に二つのサブルーチンになりましたー

（　＾ω＾）・・・(三個とか最初言ってたけど一個は誤差。ばれへんじゃろ)

mistakeの時の失敗でもしかするとサブルーチン内でread文は使えない？とか思っていましたが、杞憂でした。

一方でサブルーチン内でallocatableとallocateは使えない？という新たな疑問が生まれました。

今回はdimensionによる行列の宣言でごまかしましたが、実際の所はどうなんでしょうか？

まだまだ学ぶ必要がありそうです……

###次回以降の学習日誌
競技用プログラミングには興味があったのですが、ぼちぼちでいいやーを繰り返して早数か月。

これも何とかした方がいいなーと思ったので、次回からyukicoder内にある問題を片っ端から解いていこうと思います。

使用言語は主にFortranで、時たまpythonでいきたいと思います。

（　＾ω＾）・・・(Fortranで書いてる人思ったより少ない…少なくない？(無知))

以上！
Visual Studio Code - InsidersでPromise.then()構文をasync/awaitに自動変換

[Visual Studio Code - Insiders](https://code.visualstudio.com/insiders/)には、[TypeScript 3.1](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-1.html)が備わっています。そして、`Promise().then`構文を、ECMAScript 2017の[`async/await`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/async_function)に自動変換する機能が加わりました。

`async`が使えるのは`function`です。`Promise`オブジェクトを返す[Fetch API](https://developer.mozilla.org/docs/Web/API/Fetch_API/Using_Fetch)でも自動変換できます。

#### コード001■fetch()でweb APIからJSONデータを取得する
```typescript
function getSpacePeople_(url: string): Promise<void> {
	return fetch(url)
        .then((response) => 
            response.json()
        )
        .then((jsonData) => 
            console.log(jsonData.people)
        )
        .catch((error) => 
            console.error('エラー:', error)
        );
}
getSpacePeople_('http://api.open-notify.org/astros.json');
```

Visual Studio Codeで関数名をクリックすると、電球のアイコンが左端に表れます。その電球からメニューが開けますので、[Convert to async function]を選んでください(図001)。

#### 図001■電球のアイコンから開いたメニューで[Convert to async function]を選ぶ
![qiita_10_001_001.png](https://qiita-image-store.s3.amazonaws.com/0/128949/bebd4349-ed1c-0671-2c7a-077f5b5f2b8c.png)

これですぐに、関数は`async`とされ、`Promise.then()`メソッドが`await`の構文に自動変換されます(図002)。また、エラーの扱いも`try/catch`に変わっていることが確かめられます。

#### 図002■async/awaitの構文に自動変換される
![qiita_10_001_002.png](https://qiita-image-store.s3.amazonaws.com/0/128949/5be9ec59-9935-dd7f-a168-658e79dcea5e.png)

この自動変換の機能は、TypeScriptだけでなく、JavaScriptコードにも使えるようです。
Embulkのインストール手順 for Amazon Linux


Amazon LinuxにおけるEmbulkのインストール手順をまとめました。
間違いがあれば、気軽にコメントくださいm(_ _)m

#1. Java1.8のインストール・有効化
```bash:Terminal
$ yum install -y java-1.8.0-openjdk
$ echo 'export JAVA_HOME=~/.java/jre1.8.0_144' >> ~/.bashrc
$ echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
$ echo 'export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' >> ~/.bashrc
$ sudo alternatives --config java
=> 選択肢が表示されるので、指定したいバージョンの番号を指定する。
$ java -version
=> Javaのバージョンが1.8.0以上であることを確認する。
```

#2. Embulkのインストール
```bash:Terminal
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
$ chmod +x ~/.embulk/bin/embulk
$ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$　embulk --version
=> Embulkがインストールされていることを確認する。
```
#References
- https://qiita.com/reflet/items/be31629735db210ae0d1
- https://www.yoheim.net/blog.php?q=20180101
- http://www.embulk.org/docs/
mojaveアップデート後にconfigure: error: Cannot find libz が解決されない問題の解決法

mojaveアップデート後に　`configure: error: Cannot find libz` が出る問題。
通常なら`xcode-select --install`で解決される。
### が、
`configure: error: Cannot find libz`

`brew upgrade` しても
#### `configure: error: Cannot find libz`

#解決法

`$ installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / `

多分mojaveだけで起こるっぽい。

[[参考]python and python@2 can build on Mac 10.14, but zlib is not found, which breaks pip](https://github.com/Homebrew/homebrew-core/issues/29176#issuecomment-398656987)
【baserCMS】アーカイブページに於いて<head>内に前後ページの<link>タグを出力するコード。

##内部対策SEO：ページネーション対策  [link rel="next"/"prev"]
アーカイブページでページネーションを使用している際に
現在のページに対する前後ページの存在をlinkタグで吐き出すコードです。

rel=prev/nextは コンテンツを理解するためのヒントとして使われているため、
必ず処理されるわけではありませんが、SEO対策の上で必要な物なので
これをhead内に入れておくだけで安心です。

~~~php
<?php	
	$archiveBaseRrl = preg_replace('/\/page:[1-9].*?$/', '', Router::url($this->BcBaser->getHere(), true));
$params         = $this->Paginator->params();
if ($this->Paginator->hasNext()) {
	$nextPageUrl = $archiveBaseRrl . '/page:' . ($params['page']+1);
	echo '<link rel="next" href="' . h($nextPageUrl) . '" />';
}
if ($this->Paginator->hasPrev()) {
	$prevPageUrl = $archiveBaseRrl . '/page:' . ($params['page']-1);
	echo '<link rel="prev" href="' . h($prevPageUrl) . '" />';
} 
    ?>
~~~
pythonとgolangの違い（主観的感想）

## なぜまとめようとお思ったか
最近PythonよりGolangを使うことが多くなったので
節目としてこの二つの感想にを書こうと思った


この記事は主観的な感想に過ぎません
# python
一言で....私の大好きな言語
## どんな言語?
言語自体の文法はとてもシンプルで,初心者にとっつきやすい言語だと思う.
またかっこでくくるのではなくブロックはインデントで表現する

## どんなところで有効だと考える? 
pythonは何でも無難に問題の解決を行うことができる言語だと思う
web,機械学習,etc....シンプルな言語ゆえどの場面でも候補の一つとして挙げられる

## まとめ
簡単にマスターできる言語かというとそうでもないような気がする.
ある程度使えるようになるとリスト内包表記を勉強しなければいけなくなるし,ライブラリが豊富であるためライブラリの勉強もやらないといけない.
始めやすいしとても奥が深い言語だと思う.

# golang
一言で....カッコに自由がほしいと思った.
## どんな言語?
速くてシンプルな言語,基本的に使いやすいがたまに融通が利かない...カッコとかカッコとか
ただ私はvscode使っているのであまり気にしなくていい
生で書こうとすると結構つらいところがあるかもしれない
強みはクロスコンパイルできることだろう
windowsで書いたコードをlinux用の実行ファイルにすることができて
一つのバイナリにまとまってくれる

## どんなところで有効?
私と私の周りではwebで使うことが多い(webの中でもapiサービスを作るとなど)
早く動くwebを作りたいなら候補の一つとして挙げるといいと思うヨ

## まとめ
シンプルにかけて速度も十分に出る.
最近だとみんな使ってる感じがする言語です
DB2LUWのLOADコマンド実行時、DATEやTIMESTAMPで任意のフォーマットを指定する

最近、DB2LUWへ数十GBのCSVデータをLOADする機会があったのですが、
CSVデータ内の日付列やタイムスタンプのYYYY/MM/DDがエラーになってしまい結構苦労しました。

modified byキーワードと修飾子を組み合わせることで、解決することができたので、その時に使用したコマンドを記載します。

```ruby:コマンド
# Dateのフォーマットのデフォルトは、YYYY-MM-DD か MM/DD/YYYY.
# YYYY/MM/DD を指定する場合は modified byキーワードで dateformat = "x" と timestampformat = "x" を使用。x部分に任意のフォーマットを指定する。
# "x"の"を\でエスケープするのを忘れずに。
db2 "load from CSVFileName of del modified by dateformat =\"YYYY/MM/DD\" timestampformat=\"YYYY/MM/DD HH:MM:SS\" INSERT INTO TableName"   
```

今回は日付とタイムスタンプでしたが、DB2LUWのLOADはmodified byと各種修飾子を組み合わせることで結構融通がききます。

時間のある時に他のオプションについても追記したいと思います。

関連URL
[DB2LUW V11 Knowledge Center : LOAD コマンド](https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0008305.html)	



以上