OmniAICreator/Qiita-1.07M huggingface dataset:
【Unity】オブジェクトを進行方向へ緩やかに回転させる方法【サンプルあり】

Unityで進行方向に対し、緩やかに回転させる方法をご紹介します。

Unityの回転方法は少しばかり複雑ですが、標準関数を使えば、意外とすんなりできたりします！

緩やかに進行方向へ回転させる際の注意点も添えてありますので、参考にしていただけますと幸いですm(_ _)m
## 回転させる前の注意点
### オブジェクトの向きはz軸を正面、y軸を上にする
まず準備として、オブジェクトをz軸を正面、y軸を上に向くように設定しましょう。
<img width="467" alt="スクリーンショット_2019-02-12_13_58_50.png" src="https://qiita-image-store.s3.amazonaws.com/0/314351/e442a5d0-9a72-d163-ba30-e5d4070674ff.png">

Blenderといったモデリングツールでモデルをインポートする時などご注意ください！
### モデルの原点を中心にする
モデルの原点を中心に設定しましょう。Blenderなどからモデルをインポートしたとき、原点がズレていると回転がおかしなことになります。

実際に原点がズレているモデルの回転が変になるGifがこちら！
![fish_rotate.gif](https://qiita-image-store.s3.amazonaws.com/0/314351/e58524e8-02b7-4f47-8f6e-3d0682d6c7d3.gif)

この魚のモデリングの原点は実は尻尾と胴体の付け根にあります。

このようにUnity上では一見、原点が中心にあるように思えても、違う場合がございますのでご注意ください！(特にモデリングツールからインポートするとき)

## 回転方法
回転させるプログラムはこちらになります！

```LookRotate.cs
using UnityEngine;

public class LookRotate : MonoBehaviour
{

    [Range(-1.0f, 1.0f)]
    public float RotateLookX = 0f;

    [Range(-1.0f, 1.0f)]
    public float RotateLookY = 0f;

    [Range(-1.0f, 1.0f)]
    public float RotateLookZ = 0f;

    [Range(0, 5.0f)]
    public float RotateSpeed = 1f;

    void Update()
    {

        Vector3 forward = new Vector3(RotateLookX, RotateLookY, RotateLookZ);
        Quaternion rot = Quaternion.LookRotation(forward);

        rot = Quaternion.Slerp(this.transform.rotation, rot, Time.deltaTime * RotateSpeed);
        this.transform.rotation = rot;
    }
}

```

簡単に解説すると、インスペクターから進行方向(ベクトル)をイジると、その方向に向くプログラムになります。
`Quaternion.LookRotation`だけでも、向いている方向へ回転してくれるのですが、一気に回転します。

緩やかに回転させたいときは、`Quaternion.Slerp`を使えばOKです！

ここで`RotateSpeed`が大きくなればなるほど、回転速度が上がります。

![fish_rotate3.gif](https://qiita-image-store.s3.amazonaws.com/0/314351/4b24d1ba-dde8-7812-54e4-fd6bcbbbf480.gif)
## 最後に
進行方向へ回転させるのを一からやると、手間がかかるのですが、標準関数でできるのは有り難いですね！

参考にして頂けると嬉しいです！

## 参考URL
- [Unityでよく使う便利な標準関数について](https://gametukurikata.com/program/handyfunction)
- [Unityでオブジェクトを回転させる方法まとめ](https://tama-lab.net/2017/06/unity%E3%81%A7%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%BE%E3%81%A8%E3%82%81/)
- [
UnityのベクトルとQuaternionによる回転について](http://tsubakit1.hateblo.jp/entry/2014/08/02/030919)
Pythonの scikit-learn の n_jobs の設定ミスによる動作不良

# はじめに
機械学習モデルのチューニングしているときに異常停止することがたびたび起きた。この症状はスモールデータでは起きずに、比較的大きなデータを利用する際に起きた。著者の失敗により大きく時間を損失したので作成した。

## 背景
scikit-learn を利用するときには、機械学習モデルの関数(例えばRandomForestClassifier) やグリッドサーチを行うための関数(例えばGridSearchCV)には利用するCPU数を設定する n_jobs パラメータがある。
例えば、n_jobsの値を16と設定するとCPUを16コア利用することになる。

## 前提
- 著者のPCが16コアのマシン

# 実験内容
以下の要領でCPUの動作状況を確認する。

- 実験1: BalancedRandomForestClassifier の n_jobs を設定 
- 実験2: BalancedRandomForestClassifier と GridSearchCV の n_jobsの値を -1に設定
- 実験3: BalancedRandomForestClassifier と GridSearchCV の n_jobsの値を16コア以内に設定
- 実験4: BalancedRandomForestClassifier と GridSearchCV の n_jobsの値を任意のコア数以内に設定


## 実験1 : 正常動作
次のように機械学習モデルを利用するための初期化を行う。n_jobsの値は-1 とした。

```python
model = BalancedRandomForestClassifier(random_state = 43, n_jobs = -1)
```
上記のように、n_jobs = -1 と設定すると、CPUコア数(16コア)分設定される。この場合は、**CPUの使用量は最大100%になるが、常に100%にはならない**。また、**PCの操作は重くならない**。

## 実験2: 意図的でない動作
次のように設定する場合は意図せず多くのコア数を指定することになる。n_jobsの値はそれぞれ -1 とした。

```python
model = BalancedRandomForestClassifier(random_state = 43, n_jobs = -1)

*** 中略 ***

grid_result = GridSearchCV(estimator = model,
                           param_grid = param_grid,
                           scoring = "balanced_accuracy",
                           cv = 5,
                           n_jobs = -1)
```
例の設定であれば 16×16 コアを設定したのと同じ意味を持つ。常に**CPU使用量が100%**になる。**PCの操作は不可能**な状態になる。この状態ではPythonが異常停止することがある。

## 実験3: 意図的な動作
次のように利用する場合は意図した量の使用CPUコア数を指定することができる。 n_jobsの値はそれぞれ 4 とした。

```python
model = BalancedRandomForestClassifier(random_state = 43, n_jobs = 4)

*** 中略 ***

grid_result = GridSearchCV(estimator = model,
                           param_grid = param_grid,
                           scoring = "balanced_accuracy",
                           cv = 5,
                           n_jobs = 4)
```
例の設定であれば 4×4 コアを設定したのと同じ意味を持つ。**CPUの使用量は最大100%になるが、常に100%にはならない**。また、**PCの操作は重くならない**。

## 実験4: コア数の指定
次のように利用する場合は意図した量の使用CPUコア数を指定することができる。 CPU使用量を50%(8コア)となるように、BalancedRandomForestClassifier の n_jobsの値は4、 GridSearchCVn_jobsの値は2とした。

```python
model = BalancedRandomForestClassifier(random_state = 43, n_jobs = 4)

*** 中略 ***

grid_result = GridSearchCV(estimator = model,
                           param_grid = param_grid,
                           scoring = "balanced_accuracy",
                           cv = 5,
                           n_jobs = 2)
```
例の設定であれば 2×4 コアを設定したのと同じ意味を持つ。**CPUの使用量は最大50%**になるが、25%から50%を前後する。また、**PCの操作は重くならない**。

# まとめ
プログラム中に n_jobs を二カ所以上設定する場合は注意が必要である。
例えば、BalancedRandomForestClassifier の n_jobs を n_jobs_bと呼び、GridSearchCVのn_jobs を n_jobs_gと呼読んだときには、注意点は次のようにまとめることができる。

1. n_jobs_b = -1, n_jobs_g = -1 とする場合は異常動作を引き起こす。
2. n_jobs に設定されたCPUコア数はn_jobs_bの値 × n_jobs_gの値となる。
    - つまり「n_jobs_b × n_jobs_g の値 > 自分のマシンのCPU数」と設定しなければならない。
iOS9.3.5のiPhone4sをPhoenixで脱獄したメモ

# iPhone4sの最終バージョンで脱獄。
もう古い機種ですが**iPhone4s**はとても気に入ってて、機種変してからもずっとサブとして使ってきました。

iOS7.0.4をPanguで脱獄してましたが、この機種の最終バージョンのiOS9.3.5は脱獄できるバージョンなのでアップデートすることにしました。

## 入獄とアップデート
iTunesで**復元**するだけで最終バージョンの9.3.5になります。

## Phoenixで脱獄
1. 脱獄ツール**Phoenix**のインストール  
PhoenixはAppStoreにはありませんので以下の方法でインストールします。  
    - PCを**使う**方法  
[Phoenix Jailbreak](https://phoenixpwn.com/)からIPAファイルをダウンロードして[Cydia Impactor](http://www.cydiaimpactor.com/)でデバイスにインストールします。  
    - PCを**使わない**方法  
以下のサイトからインストールします。
        - [Ignition](https://app.ignition.fun/)
        - [SHARK-DESIGN](https://sharklatan.com/electra1131)
2. 認証  
インストールしただけでは起動できません。  
設定>一般>プロファイルとデバイス管理（デバイス管理）からAppの発行元を**信頼**する必要があります。  
この時、appleの認証サーバーに接続されappleが削除した発行元の認証はできません。
3. 実行  
数回のタップ操作で脱獄できます。  
    1. Phoenixを起動したら**[Prepare For Jailbreak]**をタップします。
    2. クレジットが表示されるので**[Accept]**をタップします。
    3. ポップアップは**[Dismiss]**をタップして消します。
    4. なんか脱獄に似つかわしくない画面（シャンパンを持った人の画像）の下部の**[Proceed With Jailbreak]**をタップします。
    5. あと少しなので、めげずに**[Begin Installation]**をタップします。
    6. 「Device Supported」というポップアップが出たら**[Use Provided Offsets]**をタップして操作は終わりです。
    7. 脱獄作業が終わるとリスプリングされ、ホーム画面に**Cydia**のアイコンが追加されてれば成功です。
4. 再起動後はキックスタート  
再起動すると脱獄状態が解除されます。  
**[Kickstart Jailbreak]**をタップして脱獄状態に戻すことができます。

[参考にさせていただいたサイト]
[「iOS 9.3.5」を脱獄する方法！全ての32bit
デバイスに対応『Phoenix』 | Tools 4 Hack](https://tools4hack.santalab.me/howto-ios935-32bit-jailbreak-phoenix.html)
はんにちで　げーむをつくった　きじをかく

#はじめに

こんにちは。今回友人と「**詠み人知らず**」というボードゲームのオンライン版(以下、詠み人知らずオンライン)を作ろうという話になったのでまずはモック的なのを一人で作ってみることにしました:blush:
10数時間で公開までいけたので今回記事を書いてみることにしました。
(タイトルも五七五を意識しております。)

下の方に出来上がった俳句を載せておきますので、良いなと思ったらいいね押しちゃってください！笑

※作者のMYAさんに許可を取り、作品名等使用させて頂いております。

####詠み人知らずについて

詠み人知らずは**P&P(Pen And Paper)**系のボードゲームのひとつで、
プレイヤーが一文字ずつ文字を書き、五七五の俳句を完成させるゲームです。

[こちら](http://kakepuro.com/yomihito/)のブログが画像付きで説明されていておもしろさが伝わりやすいかと思います！


#作成目的

今後作成予定の「詠み人知らずオンライン」の仕様を決める上での判断材料にする、ということでそのモックを作るのが今回の目的となっております。
そのため、画面の装飾等はあまりこだわっていません。あくまで構成や動き等の判断材料にしたかったからです。

##何で作ったか

- コード(画面と制御)　⇒　GAS(Google App Script)
- DB　⇒　Fusion Tables

jsは少しかじっていたものの、GASは初めてだったので調べながらの開発となりました
※Fusion tablesはいつか使えなくなるみたいです。が今回はスピード重視ということでとりあえず使いました。


#何を作ったか

主な機能
・ログイン(ユーザ名取得のため)
・俳句表示
・文字入力
・未入力ユーザの表示
・俳句ランダム配布
・結果表示(全俳句公開)
・ゲームリセット

画面はこんな感じです↓

文字入力画面
![input.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/cfb23de5-86f6-a7c4-b339-96502ae78a1b.png)

---
ほかの人の入力待ちの画面↓
![wait.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/8eee7ce5-0783-85a6-4201-af9c0740e54a.png)

##テストプレイの声

- 未入力ユーザの表示は**リアルタイムで更新**されると良い
- シャッフル本当にできてる？
- 結果表示のカルーセル見えんのだが
- 相変わらずたのしい(本家のわくわく感がある)
- 離れてても遊べるし好きな時間に入力できる

##作ってみて

- 環境構築に時間がかからないのですぐにコーディングに取り掛かれた
- 公開も楽なのですぐに友人に遊んでもらえた
- 割と本家に近い動きは再現できた
- GAS特有の記述に戸惑った
- スマートフォンでの見せ方がイマイチ…(iframeでの表示になっているらしい)
- スピード感をもって取り組めた

##まとめ
今回、【詠み人知らずオンライン】作成のためにGASでモックを作りました。
テストプレイも簡単にできたので意見がすぐに集まりました。
GASに触れる良い経験になり、本実装に向けた課題も見つかったので良かったです。
GASは思ったより簡単に公開までできる事が分かりました。これからも勉強のためにもっと触っていきたいと思います。

##おまけ

**テストプレイで生まれた作品紹介**

![bijin.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/7fb825b0-dc3a-ab52-0059-fbde31b72d57.png)

**髪の毛を 梳かして綺麗 美人さん**
きれいにまとまった。

![copy.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/6d09c173-b0fd-ed0a-c51d-615fab3a7276.png)
**プリンター コピー機能が ぶっ壊れ**
印刷するしか！

![death.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/2d5446f0-c597-54aa-10ac-552b717cb3b3.png)
**新天地 真面目にリスカ 死を覚悟**
そうなる前に周りに相談を。

![goma.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/b7073ad5-1101-3c77-e4c9-12f478798c75.png)
**ゴマ塩や 午後の時間を GO豪雨**
GOGO!!(わけわからん)

![himawari.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/97f1b501-d396-19fd-d8bf-a6e31e2cdda8.png)
**ヒマワリの 花火のような 大輪を**
夏を連想させる句ですね。

![honnma.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/68667604-1b9e-37b1-3d03-826b3c7e9594.png)
**柿食えば あいつのあんこ ホンマにね**
ホンマになにがあった!?

![inari.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/97ebc1cd-ae9d-5d2a-f442-65bbe54670d9.png)
**牛島と 稲荷学園 虎とリア**
そういうアニメありそう。

![meet.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/6646cfe2-3661-c50c-304a-d3cb07ead8ea.png)
**朝の俺 たまたま荒く 肉を食う**
違うんだ!今日はたまたまなんだって!

![shika.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/3c0fc7fc-5d58-1a13-eea5-77e67f5fb789.png)
**鹿の土 荒れる性欲 乱れざる**
おう。

![sushi.PNG](https://qiita-image-store.s3.amazonaws.com/0/213596/87567f6c-b688-91a9-40f9-39c8603f496a.png)
**やく寿司に 色んなのより そうめんを**
へいらっしゃい! うちのおすすめはそうめんでぃ!



**おしまい。**
【メモ】VBA　線形補間


行番号をｘの値と見立てて、線形補間の公式で補間。
空白を見つけるコードと組み合わせる。

```vb
Sub 線形補間()


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual '手動計算にする

'任意の行番号（この間の点を補間）
begin_i = 774
last_i = 822

x_0 = begin_i
y_0 = Cells(begin_i, 6)
x_1 = last_i
y_1 = Cells(last_i, 6)

For i = begin_i+1 To last_i-1
Cells(i, 6) = Linear_Inter(x_0, y_0, x_1, y_1, i)
Next i

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic '自動計算に戻す

End Sub
```


```vb
Public Function Linear_Inter(x_0, y_0, x_1, y_1, x)
Linear_Inter = y_0 + (y_1 - y_0) * (x - x_0) / (x_1 - x_0)
End Function
```

参考（ありがとうございます。）
https://qiita.com/niusounds/items/c4af702b06582590c82e
Amazon FSx for Windows File Server を使ってみる

# 動機
- もともとFile Serverをオンプレでたくさん作っていた
- VSSとかquotaとかのFile Server関連技術が好き
- AWS の File Server の機能充実度を見てみたい

# やったこと
- FSxを立てて、Windowsクライアントから共有フォルダにアクセスする
- 気になる機能の有無を確認する

# 構築環境
![fsx構成図.png](https://qiita-image-store.s3.amazonaws.com/0/189302/a3fd55cc-d8ec-ebe4-94f9-5f95f3ff0285.png)

- EC2インスタンス(Windows Server 2019)を立てて、ドメイン mksamba.com に参加する
- EC2インスタンスから FSx の共有フォルダ(\\10.0.0.193\share) にアクセスする

# 手順
### VPC/subnet等
- subnet を1つ用意しておく
- Windows AD, FSx, EC2インスタンス(Windows クライアント)を1つのsubnetに入れる

### Microsoft ADを作成
- Standard Edition (それでも結構高い。オハイオで$86/月)
- ドメイン名: mksamba.com (適当)

### EC2インスタンスを作成
- せっかくなので最近出た Windows Server 2019 にする
- AMIは日本語版で最新パッチ適用済のもの(Windows_Server-2019-Japanese-Full-Base-2019.02.09)
- ドメインに参加する
    - DNS設定をADのIPに変更
    - mksamba.comへ参加(mksamba.com\adminを使用)
- ADの操作(admin以外のユーザIDの追加等)ができるように、管理ツールを入れる
    - サーバーマネージャー - ローカルサーバ - 機能 - リモートサーバ管理ツール - 役割管理ツール - Active Directory 管理センター

### FSx(ファイルサーバ)の起動とアクセス
- FSxを開始する(最小容量の300GiB。最大は64TB..)
- FSxにはdefaultのSecurityGroupが設定される(自分自身のSecurity Groupからのみinboundアクセス可)
- EC2インスタンスにFSxと同じSecurityGroupを設定する
- EC2インスタンスのエクスプローラで、FSxのIP \\10.0.0.193\share を開き、共有フォルダにアクセス
    

# 機能調査
- Windows Server で自分でファイルサーバを手組みすれば設定可能な、以下のような機能は今のところなさそう
    - VSS(ファイル単位の復旧)
    - NTFS圧縮、暗号化
    - クォータ(フォルダ毎の容量制限)
    - 監査ログ(誰がどのファイルにアクセスしたかの記録)
 
# 所感
- まだとりあえず共有フォルダができますというレベルだが、AD含め全てマネージドでできるのは便利
- FSxの[開発者Forum](https://forums.aws.amazon.com/forum.jspa?forumID=308 "Forum") があるので、機能追加をwatchしていきたい
disること仮説・補題・例題。仮説(70)

プログラマにおいて、解を求めることは仕事の一部として時々現れる。

解が存在することがあきらかな問題もあれば、
解が存在するかどうかが不明な問題もある。

限られた資源では最適解はもとまらず、次善解しかもとまらないこともある。

facebookでの著名なプログラマとのやり取りから、「disる」ことの論理的、心理的、社会的な価値について検討する。

仮説

```
何かに夢中になった経験がある人は、他人の趣味をdisることは無いはずだ。」
```
補題

```
 disることに夢中になっている人はdisることしかしない。「何か」ー＞「何か（除くdisる）」
```
例題

```
ゼロ割り算（無限大発散）のような例外ですね
```

ある問題の一般解において、除外する必要な点が存在することがある。
割り算における０のように。

# 特異点

平面代数曲線において、原点におけるxとyの偏微分が0になる点。


代数多様体 V の特異点 (singular point of an algebraic variety)

# ゼロ割
ゼロ除算ができる数、輪を実装してみたので解説
https://qiita.com/lotz/items/60c20189f931dd8e5e9f

輪(wheels)が面白い。
https://qiita.com/kaizen_nagoya/items/0fd17477ccfa0ca804c0

# 文書履歴(document history)
ver. 0.01 初稿 20190214
ver. 0.02 ゼロ割追記 20190222
ver. 0.03 標題追記 20190526
### 最後までおよみいただきありがとうございました。

いいね　💚、フォローをお願いします。

#### Thank you very much for reading to the last sentence.

Please press the like icon 💚　and follow me for your happy life.
Maps(GIS) Appで遊ぼう

# はじめに

なんか、Elastic Stackの新機能をだらだら紹介し続けるシリーズになってます。
今回は、6.7から追加されるMaps(GIS) Appの紹介です。

(2019.03.14[追記あり](#20190314分)）

(2019.05.30追記あり)
7.2以降では、EMSへのアクセス方法が変わりました！デフォルトでは、Kibana経由ではなく、ブラウザ経由でのアクセスに[なって](https://github.com/elastic/kibana/pull/34503)ます。
日本語メッセージを有効にした状態だと、Map系（Maps App/Region Map/Coordinator Map）が使えません・・・EMSClientを作るとき`i18n.locale`が設定されていると、その値が`language`の値として入りますが、`i18n.locale`の値である`ja-jp`だとダメらしい。`zh-cn`もダメ。デフォルト値は`en`だけど、それ以外の値はだめっぽい・・・

## 使い方

6.7以降のElastic Stackを用意します。
左ペインにかTop画面にMapsというリンクがあるので、クリックするだけです。

![top.png](https://qiita-image-store.s3.amazonaws.com/0/221612/8f5b4905-8939-0e39-c6e1-eb7e30698f9f.png)

## 画面

サンプルデータを入れると、DashboardだけでなくCanvasも、Mapsも、ついでにLogsも表示されるようになります。
下の画面は、eCommerce ordersについてくるMapsの画面です。

![eCommerce_oders_1.png](https://qiita-image-store.s3.amazonaws.com/0/221612/2097ba98-e364-0e07-64ea-886c3e96b2fc.png)


でも、Proxyの内側で実行すると、こんな感じに地図が表示されません (;_;)

![eCommerce_orders_2.png](https://qiita-image-store.s3.amazonaws.com/0/221612/46752930-781e-5808-d9c5-3362f178f65f.png)


このままだとさみしいので、適当な地図を追加してあげます（Openstreetmapとか）。

![eCommerce_orders_3.png](https://qiita-image-store.s3.amazonaws.com/0/221612/162e6ae1-c5b9-d351-a1f5-67533a5446c0.png)

でめ、まだエラー（Layersリストのところにうすーく黄色三角ビックリマーク付き）が出てます。
プロキシ環境下の方は直るまで待ちましょう・・・
＃node-fetch使ってるところを修正しちゃえば良いんですが。

## 使い方

KibanaでMapというと、Coordinator MapやRegion Mapがあります（おっと、Vegaもありますね）。
これらは一つのデータソース（Index）だけ使うことができました。
Coordinator MapやRegion Mapでは、一つのフィールドを扱うぐらいしかできません。

ではMaps Appはというと、複数のデータソースを重ね合わせたり、複数のフィールドのデータを関連付けたりと、いろいろとできるようになります。
例えば先ほど表示したeCommerceのMapでは、Layerというところに、どんなデータソースからのデータを使っているかが表示されています。

![eCommerce_oders_4.png](https://qiita-image-store.s3.amazonaws.com/0/221612/7b3682c4-3c2f-3ac1-c573-a867eab0fe67.png)


さらにさらに、ある一定のズーム倍率のときだけ地図上に表示する、ということもできます。
eCommerceのMapでは、Sales layerがそれにあたります（最低9倍ズームにした時から表示されますが、ほかのLayerは0倍から表示されてます）。

![eCommerce_orders_5.png](https://qiita-image-store.s3.amazonaws.com/0/221612/24fb5870-f696-500c-b60f-62100839d02e.png)


ついでに、ほかのIndexのデータも表示してみます。
Layersの右横にある[Add layer]で表示されるリストから[Elasticsearch documents]を選んで、

![eCommerce_orders_6.png](https://qiita-image-store.s3.amazonaws.com/0/221612/e5951464-34af-66b3-1379-b81778c244e2.png)

適当なIndex（とりあえずkibana_sample_data_flights）を選んで、[Add layer]を押します。

![eCommerce_orders_6_1.png](https://qiita-image-store.s3.amazonaws.com/0/221612/3d6de34b-9631-3f26-3b66-42fde4576835.png)

特に何も変えずに[Save & close]を押すと、画面には赤丸がどばーっと表示されます。

![eCommerce_orders_7.png](https://qiita-image-store.s3.amazonaws.com/0/221612/9760e03c-b2b1-e631-ff95-33be88737ac4.png)

# おわりに

まだGA前の機能なので不安定なところはありますが、いろいろと遊べそうな機能ですね。
正式発表が待ち遠しい！

# 追記

## 2019.03.14分

ダッシュボードへの埋め込みができるようになりました（[7.1以降](https://github.com/elastic/kibana/pull/32895)）。

ダッシュボード作成画面で、追加できる項目をよーく見ると「[eCommerce] Orders by Country」があるのがわかります。
各項目の左側にアイコンが表示されてて、それがGaugeなのか、Saved Searchなのかとかがわかりやすいですね。

![embed_maps.png](https://qiita-image-store.s3.amazonaws.com/0/221612/8e3418b9-01a8-3f30-b2c9-f43f27011d9b.png)

Mapを追加して見ると、こんな感じです。

![embed_maps_2.png](https://qiita-image-store.s3.amazonaws.com/0/221612/d3433dbe-a8eb-4cf2-4569-b9c6d99e3149.png)

んー、これは良い！
Oracle DB 11g を REHL7 にインストール事前準備

### １．リソース制限ファイルを作成

Oracle DB 11g の インストールユーザが「oracle」の場合、
次のconfファイルを用意して、サーバを再起動する。

```
# cat << EOF > /etc/security/limits.d/30-oracle.conf
oracle         soft    nproc           4094
oracle         hard    nproc           16384
oracle         soft    nofile          10240
oracle         hard    nofile          65536
oracle         soft    stack           10240
oracle         hard    stack           32768
oracle         soft    memlock         15728640
oracle         hard    memlock         15728640
EOF

# reboot
```

### ２．必要なモジュールのインストール

```
# yum install compat-libcap1.x86_64 libstdc++-devel.x86_64 gcc-c++.x86_64 ksh.x86_64 glibc-devel.x86_64 libaio-devel.x86_64
```

### ３．Oracle DB 11.2.0.4.0 download

こちらからダウンロードしてください。
[11.2.0.4.0 PATCH SET FOR ORACLE DATABASE SERVER](https://updates.oracle.com/Orion/PatchDetails/process_form?patch_num=13390677&aru=16716375&release=80112040&plat_lang=226P&patch_num_id=1730815&)

p13390677_112040_Linux-x86-64_**1**of7.zip
…
p13390677_112040_Linux-x86-64_**7**of7.zip

上記の1～7まで全てダウンロードして展開してください。

### ４．Oracle のリポジトリの追加

```
# wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

# wget https://yum.oracle.com/public-yum-ol7.repo -O /etc/yum.repos.d/public-yum-ol7.repo
```

### ５．Oracle 11g 用 プレインストールの取得
```
# yum install oracle-rdbms-server-11gR2-preinstall -y
```

### ６．make ファイルの修正

```
# vi $ORACLE_HOME/sysman/lib/ins_emagent.mk

$ diff ins_emagent.mk ins_emagent.mk_org
176c176
<       $(MK_EMAGENT_NMECTL) -lnnz11
---
>       $(MK_EMAGENT_NMECTL)
```

### ７．最後にデスクトップ接続してrunInstallerを実行

```
$ 展開先/oracle/runInstaller
```
Win10‐Anaconda-Python環境を構築。チェックシート（はじめての人向け）

☆2019年2月22日：6-7ページを追加しました

機械学習を習得するため、昨年秋から Python を始めた。
環境構築では遠回りをしてしまい、反省している点も多い。
ウィンドウズ依存で、CLI（Command Line Interface）に慣れていなかったことなどが原因だ。

Windows10-Anaconda3 で Python 環境を構築する中でつまづいた所を振り返り、まとめてみた。
作業を進めやすいようチェックシートにした。（□ 全37チェックポイント／5ページ）

　□ Python (Anaconda3)インストール（□ 10）
　□ 自分でPATHを設定（□ 4）
　□ コマンドプロンプトでインタープリタ起動（インストール確認）（□ 2）
　□ Anaconda Navigator での Python 環境の確認と新規作成（□ 10）
　□ 新規作成した環境から jupyter Notebook を開く（□ 5）　
　□ CLI 操作で jupyter Notebook を開く（□ 6）
追加（20190222）
　□ pip install の事前確認 ⇒ pip専用環境の構築（GUI） ⇒ pip install（CLIによる操作）
　□ よく使用する pip コマンド一覧（CLIによる操作）

備忘メモ、作業マニュアルとして作成したが、Qiita へフィードバックし、公開することにした。
（2ページ目抜粋。クリックで pdf 資料）

<a title="win10-AnacondaによるPython環境構築" href="http://www.ipcorp.co.jp/dcms_media/other/Python_env_win10.pdf" target="_blank" rel="noopener">![Python_Anaconda_win10.png](https://qiita-image-store.s3.amazonaws.com/0/345615/19d88587-46e0-35a0-fa2d-7311134ec49c.png)</a>


次のような人のヘルプになるかもしれない。
　□ プログラム学習は初めてだが、Python を使ってみたい
　□ Python を始めようと思うが、環境構築が難しいと聞く
　□ Python を始めたが、よくわからないことがある（ように思う）
　　PATH を自分で設定する
　　コマンドプロンプト（黒い画面）の使い方
　　Pythonの仮想環境を理解したい
　　conda install 、pip installの違い、など

追加について（20190222）
私のように、小規模でも組織・ビジネスで Python を導入する場合は、初期的にはAnacondaディストリビューションがよいかと思います。Anacondaの厳選モジュール（パッケージ）で標準化されているから安心です。初心者は仮想環境の知識や管理に慣れていないということを前提にすればなおさらです。
しかし Python の習得も進むと、先進的なモジュールを pip で利用したいと考える人が出てくるでしょう。管理側としては、ビジネス的なメリットからチャレンジをしてもらいたいとも思います。しかし conda と pip を同じ仮想環境で使うことにはリスクがあります。特にそのような状況でも conda と pip を安全に共存させる方法を模索し、2週間、自分PCで特に問題が起きなかったことを追加しました。

VScode で ” Python -m venv ***** ” でも環境が作れましたが、（アタリマエなのでしょうか？）この新しい環境（*****）はAnaconda Naviに表示されずコントロールできませんでした。
奥が深い。。。

もし内容や理解でご指摘等あれば、必要に応じて修正をしてゆきます。
よろしくお願いいたします。
Kibelaで記事を書くのにReal World PlantUMLを活用する

社内の情報共有ツールとして [Kibela](https://kibe.la/ja) を使用しているのですが、先日同僚がPlantUMLで図を描いていて、KibelaでPlantUML使えるのかーと感心していました。

[PlantUML記法に対応しました - Kibela Blog](https://blog.kibe.la/entry/2016/10/25/100000)

## 実際に書いてみると

```
```{plantuml}
@startuml
start
:Init Phase;
:Transfer Phase;
note right
  long running activity,
  process requires signal to proceed
end note
:Termination Phase;
stop
@enduml
```

ブログにも説明がありますが、上記のようにcode block記法のラベルで{plantuml}を指定することで描けます。実際書くと、こんなふうに図が表示されます。

<img width="1438" alt="領域のキャプチャ 6.png" src="https://qiita-image-store.s3.amazonaws.com/0/37036/ef9b6e71-1e67-eaf7-b42d-71b17986a58d.png">

良い感じ。

## Real World PlantUML
そんなわけで、設計・アーキテクチャを考えるときに使ってみたいなと思っていた矢先に、twitterで便利そうなサイトのリンクが流れてきました。

<blockquote class="twitter-tweet" data-partner="tweetdeck"><p lang="ja" dir="ltr">これがないと PlantUML 書くのに困る体になってしまった / “Real World PlantUML” <a href="https://t.co/9IisZdEfJp">https://t.co/9IisZdEfJp</a></p>&mdash; ぺこちゃん (@ryopeko) <a href="https://twitter.com/ryopeko/status/1095655871307145216?ref_src=twsrc%5Etfw">February 13, 2019</a></blockquote>

すごい、[REAL WORLD PlantUML](https://real-world-plantuml.com/) めっちゃ便利そう。サンプルがたくさんある。

コピーして先程のcode block記法に突っ込むだけで、それっぽい図がすぐ描けます。PlantUML初心者の僕でも使えそうです。
[Rails]attributeの変更を検知

## 実現したかったこと
Hogeモデルがupdateされた際に、fugaというattributeが変更されていたら特定の処理をする。

## はじめはこうした
```ruby
class Hoge < ActiveRecord::Base
  attr_accessor :fuga_was
  before_update :get_fuga
  after_update  :piyo

  private
  def get_fuga
    self.fuga_was = self.fuga
  end

  def piyo
    if self.fuga != self.fuga_was
      # 処理
    end
  end
end
```
before_updateでfugaの値をコピーしておくことで比較。
冗長ではあるけれどこれで動くだろうと思ったが…

## しかし想定通り動かない
get_fugaした値はHoge.update(params)のparamsを受け取ったあとの値になっていた。(callbackの実行タイミングの問題?)

## Railsに使えるメソッドが定義されている
ググってみたら、そのものズバリな質問と回答に出会う。
[参考](https://stackoverflow.com/questions/607069/using-activerecord-is-there-a-way-to-get-the-old-values-of-a-record-during-afte)
要約すると、ActiveRecord(正確にはActiveModel::Dirty)は[attribute]\_wasというメソッドを定義している。また[attribute]_changed?も定義する。


## これでよかった
```ruby
class Hoge < ActiveRecord::Base
  after_update :piyo

  private
  def piyo
    if self.fuga_changed?
      # 処理
    end
  end
end
```
OpenCVでVideoCaptureしてreadしたものが墨塗になる問題

GStreamer画像ストリームをOpenCVで受け、それをVideoCaptureして、readしては処理するループを回します。その際、フレームが壊れて墨塗になってしまうことがありました。

readしたものに対する画像処理が重すぎて（あるいはシステムが同時にほかの処理を並行して実行していてこちらへの計算資源がたっぷりないとき）、次にreadするtimingが適当でないと、ストリームのバッファがオーバーフローして壊れてしまうようです。逆に、Gstreamerのストリームが途切れたときに、readし処理するループ側が待ってやる処理も必要です。

以下、バッファ機能を自前で作り、上記の問題を解決したコード例です。

[【ここ】](https://www.pyimagesearch.com/2017/02/06/faster-video-file-fps-with-cv2-videocapture-and-opencv/)に、readを別スレッドにして画像処理サイクルに重ねると高速化できるという記事があり、ヒントになりました。そのコードより、もっと簡素にできます。また、データに追いつかない場合だけでなく、データが遅れた場合の処理も追加します。


```python
import cv2
...
def reader(video):
    # Reference: https://www.pyimagesearch.com/2017/02/06/faster-video-file-fps-with-cv2-videocapture-and-opencv/
    while True:
　　    # キューがいっぱいなら、最も古いフレームを捨てる        
        if video.Q.full(): video.Q.get()
        # ここでVideoCaptureしたもののread 
        ret, frame = video.capture.read()
        if not ret: continue
        video.Q.put(frame)　# FIFOキューにフレームを追加

class VideoReco():
    def __init__(self):
        #　フレームのFIFOキューをバッファにする
        #　framerate 30くらいなら、1秒以上前の画像にはもう興味はないので 30
        self.Q = Queue(maxsize=30)
    def run(self):
        self.capture =　cv2.VideoCapture(GStreamerパイプライン記述)
　　　　# 別スレッドに読み込みとバッファリングをやらせる
        sr = threading.Thread(target=reader, args=([self]))
        sr.start()

        while self.capture.isOpened():
            if self.Q.qsize() > 0:
                # ここで直接 capture.read()せずに、キューから取り出して処理
                frame = self.Q.get()　
            else:
                # データが遅れていたらキューにデータが入るまで処理側でidling
                continue 

            # ...
            # キューにデータがあれば、ここでframeに対する画像処理いろいろ
            # ...

            # VideoCaptureのループのおまじない
            if cv2.waitKey(1) & 0xFF == ord('q'): break

def main():
    video = VideoReco()
    video.run()
```
KanbanFlowで集中のリズムを作る

# KanbanFlowとは
https://kanbanflow.com
TrelloのようなカンバンのシステムとPomodoroタイマーが合体したwebサービスです。
書籍「SOFT SKILLS」で紹介されていたことがきっかけで使い始め、今では全てのタスクを管理するほど愛用しています。
<img width="896" alt="スクリーンショット 2019-02-14 8.11.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/44990/e122426d-f3ca-9d19-6233-b6718b661215.png">


# 使い方
## タスクを作成する
仕様書やチケットをもとにブレークダウンしながらタスクを作成します。
また、こんなことやるだろうなということをサブタスクに書き出し、ざっくり見積った工数を入れていきます。
この時点で作業に必要な情報を説明に書き込んでおくと、いざやるぞ！となったときにslackやチケットを漁らなくて済みます。
大体の操作をキーボードで完結できるのも気持ち良くて好きなポイントです。
![タスク作成.gif](https://qiita-image-store.s3.amazonaws.com/0/44990/c9f2dd62-8d10-2cab-dbca-980dc685625a.gif)


## タスクをこなす
Pomodoroタイマー通りにタスクをこなしていきます。
割り込みが入ったらタイマーを止めます。
<img width="249" alt="スクリーンショット 2019-02-14 8.20.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/44990/134a94b1-0d17-5c19-b8f8-4ffb047f1aaa.png">
25分集中して5分休むというリズムをいかに守れるかが肝だと思います。
没頭するほど集中するフロー状態は長時間維持できないので、意図的に休憩を挟んで回転数を上げる感じです。
![スクリーンショット 2019-02-12 8.53.52.png](https://qiita-image-store.s3.amazonaws.com/0/44990/de427d33-9d4f-a34f-6f7c-e800d06e5d7c.png)
また、可能な限り余計なことを考えずに済むように待っているものや優先度が低いものは色を変えて思考の外に出しています。
![リサイズ.png](https://qiita-image-store.s3.amazonaws.com/0/44990/5a9947a1-f04e-a999-b960-0008019c54ed.png)

# 使いはじめて良くなったこと
## 集中のリズムを作ることを意識するようになった
フロー状態のときは、それだけで楽しくなります。
逆に割り込みがあったり、待ちが頻繁に発生したりしてマルチタスク状態になると効率とともに気分も落ちてしまいます。
一度集中が切れてしまうと元の周期に戻すまで15分ほどフワついてしまうので、「集中できる環境を作る」習慣が身についていきます。

- 非緊急の用事はチャットなどの非同期のコミュニケーションを行う。
- 「Do Today」が消化できるまで非緊急の割り込み案件に対応しない。
- 会議はできるだけ避ける。キックオフやレビューなど必要なものは事前に資料と議題をまとめて共有する。

などなど。
また、Pomorodoテクニックを続けていると体力と集中力の限界値が分かってきて良い目標になります。
Pomorodo数：その日の傾向
6：会議や申請作業などがある日
9：普通にモクモクできる日
12：調子が良い日 ← ここを目指す
15：追い込む日（疲れる）
![スクリーンショット 2019-02-12 9.16.24.png](https://qiita-image-store.s3.amazonaws.com/0/44990/e6aed066-9351-b579-46d2-1cfb2a441cf1.png)

## やらないことが明確になった
今やるべきことに集中して、他はやらないということは生産性に直結します。
朝に「Do today」に放り込んだタスクが終わればとっとと帰ります。
まとまった時間が残っていれば見合ったタスクを潰しますが、中途半端になることが多いので無理はしません。
割り込み案件は緊急なもの以外はタスクだけ作ってすぐ忘れるようにします。
（でも今調べて欲しい的なノリで席に来られると避けられない:disappointed_relieved:）

# さいごに
少し前に「⌘ + Enter」の挙動が「Enter」のみで発生するようになってしまいました。
Google翻訳の拙い英語で問い合わせたところ下記の返事をくれました。
「ブラウザの仕様が変わったようです。FireFoxなら動くので直すまで待ってほしいです。」←多分もっとフランクな感じ
それから少し経って修正した旨を連絡してくれました。
「修正版をリリースしました。挙動がおかしかったら教えてください。」
無料ユーザーに返事くれるのか！応援したい！ということで記事にしました。
是非試してみてください:relaxed:
brew updateのタイミングでReadlineのバージョンが上がってpryが使えなくなった時の対処

自分用メモですが、誰かの助けになれば、と。

エラー内容

```
    Sorry, you can't use byebug without Readline. To solve this, you need to
    rebuild Ruby with Readline support. If using Ubuntu, try `sudo apt-get
    install libreadline-dev` and then reinstall your Ruby.
```

下記で提示されているが、シンボリックリンクを貼るだけ。
https://github.com/deivid-rodriguez/byebug/issues/289#issuecomment-453943189
バージョンによってはリンク名を少し変更すれば上手くいくこともありそう。

```sh
$ ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
```

バージョン等は下記

```sh
$ brew info readline
readline: stable 8.0.0 (bottled) [keg-only]
Library for command-line editing
https://tiswww.case.edu/php/chet/readline/rltop.html
/usr/local/Cellar/readline/7.0.3_1 (46 files, 1.5MB)
  Poured from bottle on 2017-06-15 at 14:26:57
/usr/local/Cellar/readline/8.0.0 (48 files, 1.5MB)
  Poured from bottle on 2019-02-13 at 13:17:44
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/readline.rb
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

For pkg-config to find readline you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig"

==> Analytics
install: 552,353 (30 days), 1,051,193 (90 days), 3,479,037 (365 days)
install_on_request: 67,280 (30 days), 108,614 (90 days), 330,266 (365 days)
build_error: 0 (30 days)
$ brew uses --installed readline
libimobiledevice       libxml2                python                 sqlite                 tig
```
アフターエフェクト へのイラストレーターのパスデータの扱い方

https://www.monadgraphics.com/visual/?p=203

## AIからAEへのコピー＆ペースト
- そのシェイプレイヤーのトランスフォームの「アンカーポイント」と「位置」がペーストされる位置を決めている

### 2160x2160のコンポジションにAIからペースト
##### アンカーポイント：[0.0,0.0]、位置：[1080,1080（中心位置）] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/6761425b-f93a-47ba-6df4-1923f379860f.png)

##### アンカーポイント：[1080,1080（中心位置）]、位置：[1080,1080（中心位置）] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/e458bf84-078d-09ff-64aa-be97bbecd2e9.png)

##### アンカーポイント：[0,0]、位置：[0,0] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/22fb0f9e-7c6c-b16f-0f53-e3403d182c99.png)

##### アンカーポイント：[1080,1080（中心位置）]、位置：[0,0] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/cc99af59-2d77-9386-bdb4-eb35b971a9c4.png)

####ペーストするもののサイズも関係があるのか？
ペーストする四角のサイズを800x800にしてみる

##### アンカーポイント：[400,400]、位置：[1080,1080] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/cae71fe7-59ec-d748-69ab-e1f3321f712d.png)

##### アンカーポイント：[-400,-400]、位置：[1080,1080] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/a40379b2-fe87-aa2e-b360-b12cdf3e9504.png)

##### アンカーポイント：[-400,400]、位置：[1080,1080] の場合
![image.png](https://qiita-image-store.s3.amazonaws.com/0/92494/2b641c1f-e9e5-fd2c-dc64-cd6caff7f1e0.png)


### 推測
- アンカーポイント = シェイプレイヤーの中心からどこの位置を基準にするか
- 位置 = コンポジションの左上からどの位置を基準にするか

二つの値から特定される位置を中心にペーストされる位置は決まっている
シェイプレイヤーとその中のグループの中のトランスフォームがある場合、内包される側は影響される
（上のトランスフォームで決まった位置をアンカーポイント・位置ともに0,0とする）
Elixir~Enum.zipでドラムシーケンサー！~

# ここまでのあらまし

[Enumやforを使ったマップリストからのデータ呼び出しを簡単に復習しました。](https://qiita.com/kmizuno0211/items/be65679f18f46b339290)

#今回の試み

バスドラム=bassを"Don"
ハイハット=hihatを"Tik"、"tik

これをfor文を使って順列組み合わせを作っていきます。

```elixir

iex(9)> bass = ["Don","Don","Don","Don"]
["Don", "Don", "Don", "Don"]
iex(10)> hihat = ["Tik","tik","tik","tik"]
["Tik", "tik", "tik", "tik"]
iex(11)> for b <- bass, h <- hihat do
...(11)> [b,h] end
[
  ["Don", "Tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "Tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "Tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "Tik"],
  ["Don", "tik"],
  ["Don", "tik"],
  ["Don", "tik"]

```

なんと。。全拍でバスドラムとハイハットが鳴ってしまいました。

# 改善

Enum.zipを使います。


```elixir
iex(1)> bass = ["Don","-","-","-"]
["Don", "-", "-", "-"]
iex(2)> hihat = ["Tik","Tik","tik","tik"]
["Tik", "Tik", "tik", "tik"]
iex(3)> Enum.zip(bass,hihat)
[{"Don", "Tik"}, {"-", "Tik"}, {"-", "tik"}, {"-", "tik"}]

```

ドン、チッ、チッ、チッ、という刻みのパターンができました！
無論音がなっているわけではないので、要はElixirをシーケンサーに実装するたたき台のようなものに過ぎないかもしれませんが...ワクワクしますね！

# これからの試み

あたらしく登場したEnum.zipを使って、登場する各要素の狙った部分を加算したり自由に演算できるような学習を想定しています。
うまずたゆまず、頑張ります。
Kento Mizuno
php-master-changes 2019-02-13

今日は mb_str_split() の実装、クラス内メソッド外で \_\_METHOD\_\_ が使われた際の挙動修正、PHP Testfest 2017 で追加されたテストの取り込み、Win32 のタイムアウト処理で Wine/ReactOS との互換性を向上させる修正、ドキュメントの更新、ReflectionReference の実装があった！

# 2019-02-13
## legale: Implement mb_str_split()
- https://github.com/php/php-src/commit/d77ad27415a34e4f5908cb262567b7b6f0eca17f
- [7.4~]
- 先日 [RFC](https://wiki.php.net/rfc/mb_str_split) が受理された mb_str_split() の実装

## nikic: Fixed bug [#76430](https://bugs.php.net/bug.php?id=76430)
- https://github.com/php/php-src/commit/93641539429c41a8997016ee4a4502882b0a722e
- [7.4~]
- クラス内メソッド外で \_\_METHOD\_\_ が使われた際の挙動が一貫していない問題の修正
- とりあえず一貫して空文字列を返すようになった

## nikic: Fix test
- https://github.com/php/php-src/commit/e1cc71444571b09fcdc86fa5636ea78df120d833
- [7.4~]
- ↑で漏れていたテスト修正

## royopa: Add test socket_setopt() basic functionality
- https://github.com/php/php-src/commit/b86d7738fb3bc0e0e491a7815f3e763d1464b9b1
- [7.4~]
- [socket_setopt()](http://php.net/manual/ja/function.socket-setopt.php) のテストを追加
- [PHP Testfest 2017](https://phptestfest.org/groups/2017/)

## weltling: Change the way timer queue timer is deleted
- https://github.com/php/php-src/commit/4f4cf9874d863f69782383e6c34d12eaf43fd2bc
- [7.4~]
- Win32 で、タイムアウト処理用の [DeleteTimerQueueTimer()](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682569(v=vs.85).aspx) を INVALID_HANDLE_VALUE で呼ぶよう修正
- [#77580](https://bugs.php.net/bug.php?id=77580)
- Wine/ReactOS との互換性が上がるらしい…… [ReactOS](https://www.reactos.org/) 試したのかー、みたいな気持ち

## weltling: Update NEWS and UPGRADING [ci skip]
- https://github.com/php/php-src/commit/34122ede2116777b02473a7d4430a15edcc58063
- [7.4~]
- [先日の修正](https://qiita.com/sj-i/items/5bb9a7e7d8fe4228da60#weltling-implement-fr-77377-handle-ctrlc-in-windows)を NEWS / UPGRADING へ追記

## nikic: Implement ReflectionReference
- https://github.com/php/php-src/commit/6347f0b937cc3fb3edb38003a41f3f9e8608831d
- [7.4~]
- 先日 [RFC](https://wiki.php.net/rfc/reference_reflection) の受理された ReflectionReference の実装
application.ymlをConfigMap用に変換。。もう飽きた！

# きっかけ
仕事でkubernetesを用いて、splingbootのアプリケーションを動作させている。
kubernetesでは設定値をConfigMapで設定できるのだが、
application.ymlに記載している内容を転記するときにタイポが大量発生。。。

もうそんなミスは飽きたからツールで正確に変換しよう！！

# 作った
<img width="1435" alt="スクリーンショット 2019-02-14 8.46.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/361020/df6dc04b-b70a-e634-55df-e4bd68d0596d.png">
> https://rhirabay.github.io/applicationyml-to-env/

# ざっくりとした動き
左の入力欄に、yml形式で入力すると自動で右の入力欄にconfig形式に変換してくれる。
裏ではjqueryとjsyamlを使ってます！
MySQL のテーブルを一斉に削除する1行コマンド (sh)


単純なコマンドです。
いつも忘れちゃうので Qiita に保存。

```
mysqldump -u [ユーザー名] -p --add-drop-table --no-data [テーブル名] | \
  grep -e '^DROP \| FOREIGN_KEY_CHECKS' | mysql -u [MySQLユーザー名] -p [テーブル名]
```

## クレジット

この記事が役に立ったら、「 **CMS は concrete5 が一番**」と頭の中で10回唱えてみてください〜。
TeXのchapterbibが動かなかったときのメモ

# はじめに

TeXで論文の編集作業をしていたときに、章毎にリファレンスをつけてほしいと言われたものの、なかなか時間がかかったので、備忘録としてメモ。

環境
- Mac OS X
- TeX live 2015

もともとbibtexを使って、`\printbibliography`でリファレンスを巻末に表示させていた。
これを章毎にリファレンスを表示させるように変更する。

## 問題(chapterbibで試行錯誤)

インターネットで検索すると、chapterbib.styをインストールしたあと、
メインのTeXファイルのプリアンブルに

````
\usepackage[sectionbib]{chapterbib}
````

と書いて、`\include` されているファイル内に

`````   
\chapter{Ch 1}
...
\bibliographystyle{ plain }
\bibliography{ ch1-ref }
````    

と書いてコンパイルすると章毎にリファレンスをつけられると、多くの記事を見たのだが、
コンパイル時に

````
! Package biblatex Error: '\bibliographystyle' invalid.
````
````
! LaTeX Error: Can be used only in preamble.
````

このようなエラーが出てうまくできず...
原因を色々調べてみると、もともと自分が使っていたbibtexと、使おうとしていたchapterbibが共存できなそう。

## 解決策(bibtex)

インターネットで検索すると、それらしい記事を発見

https://tex.stackexchange.com/questions/199336/biblatex-reference-both-by-chapter-and-at-the-end-of-the-book

こちらによると、`\chapter`の終わりに

````
\printbibliography[segment=\therefsegment,heading=subbibliography]
````

として、各章の終わりにかけば良いとのこと。
これでやっとできた！
さらに、最初のプリアンブルでオプションを指定することで、表示方法を変更できた。

````
\usepackage[
    defernumber=true,
    firstinits=true,
    refsegment=chapter
]{biblatex}
````
MySQLのrootパスワード忘れ時のリセット対応方法

2つ方法があることを知ったのでメモ書き
下記の1の方法しか知らなかった。

https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

1.skip-grant-tablesオプションを使う
  --skip-networkingをするとなお良し

  ```
  mysqld --skip-grant-tables --skip-networking --user=mysql &
  ```
  MySQLサーバーにログイン後、FLUSH PRIVILEGESをして、ALTER USERする。FLUSH しないとエラーになる

  ```
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
```

2.init-fileオプションを使う
使用したinit-fileは削除する

```
mysqld --init-file=/path/to/init --user=mysql &で起動する。
```

initファイルの中身は

```
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
```

5.7.5から前のバージョンだと以下のコマンド

```
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
```
IdeaVim でマルチカーソルを使う

IdeaVim の 0.50 から、Vim キーバインドでマルチカーソルが使えるようになりました。
使えるようにするには、プラグインを最新の状態にして、機能を有効にします。

- ホームフォルダの `.ideavimrc` を開きます。（なければ作成）
- `set multiple-cursors` という行を追加します
- お使いの JetBrains IDE を起動します。

これで、マルチカーソルが使えるようになりました。

使えるキーバインドは、次のとおりです。

`<A-n>`: Alt/Option + [n]
- カーソルがある単語を選択。すでに選択状態のときには次の単語を選択
`<A-x>`: Alt/Option + [x]
- 最後に選択した単語を選択解除
`<A-p>`: Alt/Option + [p]
- 最後に選択した単語を選択解除して前に戻る
`g<A-n>i` : g のあと Alt/Option + [n]
- 直前のマルチカーソルの状態に戻る

複数が選択された状態で、[c] コマンドなどで編集するとマルチカーソルで一度に変更できます。

JetBrains IDE の場合は、[F6] で変数名を変更するような場合には、勝手にマルチカーソルになってくれたりしますが、取捨選択して変更したいときなどに便利ですね。

![multi_cursor.gif](https://qiita-image-store.s3.amazonaws.com/0/3788/dc1e5595-fd19-3708-93b8-1845721cce7e.gif)

上記のムービーでは

- `<A-n>` で `id` をすべて選択
- `<A-p>` で `id` 戻す
- `<A-n>` と `<A-x>` で必要な `id` だけ選択
- `c` で修正

といったことをやっています。
Solidityで親要素のコンストラクタに引数を渡す方法

Solidityでは継承元のコンストラクタに引数を渡す方法が2つあります。

```javascript
contract Parent {
    uint x;
    constructor(uint _x) public { x = _x; }
}

// 直接継承元に引数を渡す方法
contract Chaild1 is Parent(7) {
    constructor() public {}
}

// modifierで親要素のコンストラクタに引数を渡す方法
contract Chaild2 is Parent {
    constructor(uint _y) Parent(_y) public {}
}
```
引数を渡さなければそのまま抽象化となります。

詳しくは[Solidity公式ドキュメント最新版（v0.5.4）](https://solidity.readthedocs.io/en/v0.5.4/contracts.html)を参照してください。
要素が表示されているかどうかをチェック

該当する要素だけでなく、親要素も表示されているかどうかをチェックしたい。
まだchromeでしか試してないが、このような結果になった。

* 親要素が visibility: hidden だと子要素も visibility: hidden になる
* 親要素が display: none だと、子要素の computedStyle.width、computedStyle.height が auto になる。または element.offsetParent が null になる
* 親要素の height,width が 0px で、overflow: hidden の場合は、子要素で判定できないので、再帰的親要素をさかのぼってチェックする

```javascript
export default function VisibilityCheck(targetElement: HTMLElement): boolean {
  if (targetElement.offsetParent === null) {
    return false
  }

  let target: HTMLElement | null = targetElement
  do {
    const style = getComputedStyle(target)

    if (style.display === 'none'
      || style.visibility !== 'visible'
      || parseFloat(style.opacity || '') <= 0.0
      || parseInt(style.height || '', 10) <= 0
      || parseInt(style.width || '', 10) <= 0
    ) {
      return false
    }

    target = target.parentElement
  } while (target !== null)

  return true
}
```
Hello, キーボード沼!

こんにちは、[@Yuta.K](https://twitter.com/YutaKoba1987)です。

みなさん、自キやっていますか？
遊舎工房さんが出店してから、私は自キ沼にハマりつつあります。

失敗しながら2キット組み立てたので気付きを書きたいと思います。
これから作る方の助力になれば幸いです。

> 全てのキットに当てはまるわけではありません。ご注意を。
> まずは各キットのbuild guideを参照してください。
> また、Discordでいろんなキーボードの過去の会話も見ましょう。知見の塊です。

### 組み立てたキット
- `Lily58`
- `ErgoDash`

それではお付き合いください。

## キットの中身を確認
細かい部品がたくさん入っています。build guideと照らし合わせて確認しましょう。
また、私はアクリル板に糊が癒着したような跡が残り、水に浸けたりアルコールティッシュで拭きましたが効果がありませんでした。
こういうものなの？という質問にDiscordで丁寧に答えていただきました。ありがとうございました。
どうせキーキャップで隠れるし、作るの楽しすぎるのでそのまま作成続行しました。
![IMG_1264 2.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/2c2d74a4-d6f9-8f6d-4587-5a1aff624d65.jpeg)

## LEDの付ける向き(ErgoDash)
[ErgoDash miniビルドログ #自作キーボード](https://blog.yfuku.com/entry/ergodashmini_buildlog#%E5%8F%96%E3%82%8A%E4%BB%98%E3%81%91)を参考にさせていただきながら、向きを確認して取り付けました。

左手
![IMG_1297.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/4784ea90-6b38-4833-b0b0-12bc615f8399.jpeg)

右手
![IMG_1298.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/09a997c0-6ed8-4c42-59f6-4a27d28671ff.jpeg)


## ダイオード付けたら動作確認
70個のダイオードの半田付けが完璧か不安です。
スプリングピンヘッダでProMicroを仮組みして、USBを繋げてみます。
ProMicroが赤と緑に光ればひとまず通電していることが確認できます。


## ProMicroへの書き込み
ProMicroへ書き込む際に繋げてもdeviceを認識してくれない場合、リセットスイッチをカチカチッと2回素早く押します。
放っておくとdevice disconnectedみたいなメッセージが出るので早めにflashしましょう。


## LED付けたらまた動作確認
LEDは熱に弱く壊れやすいそうです。半田ごての温度も220度(?)を推奨しているという記事も見ました。
また、LEDを有効にするためにrules.mkを書き換えてbuild&flashする必要があります。
分離型の場合、4極のTRRSケーブルで繋げなくてはいけません。3極のTRSケーブルではダメでした。

```diff:github.com/qmk/qmk_firmware/keyboards/ergodash/rev2/rules.mk
BACKLIGHT_ENABLE = no
- RGBLIGHT_ENABLE = no
+ RGBLIGHT_ENABLE = yes
```

## ProMicroの付け位置
LEDの付ける向きの画像を見ていただくとわかるように、左右対象ではありません。
私は何故か左右対称と思い込み、仮組みしているときに動かずあれ！？ってなりました。


## スタビライザーの位置
見てくれこのPCB綺麗だろ・・・でも、このスタビライザー、表裏逆なんだぜ。
取り返しのつくものでよかったです。
![IMG_1290.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/24bb6b52-f10e-8554-0940-ed31491888c4.jpeg)


## キースイッチ付けたら動作確認
キースイッチを一つだけ半田づけしてみて動くか動作確認です。
キースイッチを全て付けてからでは、戻る際の半田吸い取りがとても大変です。fail fastです。


## Backlight付けたら動作確認
[qmk official doc](https://docs.qmk.fm/#/)に[Backlight操作のkey code](https://docs.qmk.fm/#/feature_backlight)があるので、キーマップに設定して光るか確認しましょう。


## ProMicro付けたら動作確認
スプリングピンヘッダを使いましょう。PCB側を半田付けしなくてよくなるのでmogeても交換すれば済みます。
ピンヘッダで実装した場合、半田吸い取りが地獄です。ほんと。もう2度とやりたくありません。


## 完成したら自キを堪能

![IMG_1299.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/8adf7b87-68f6-08c6-b7ed-4552866b92bc.jpeg)
最高では？グラデーションで色も変わっていくよ!

![IMG_1300.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/4e9a3e8f-f2b4-0c88-3cb1-b2d7b24975fd.jpeg)
レインボー!

![IMG_1301.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/f5fd45cc-e49b-ab11-1ea1-3a1bc631a206.jpeg)

クリスマス!!点滅するよ!

![IMG_1302.JPG](https://qiita-image-store.s3.amazonaws.com/0/222199/f8d4508c-cd61-495a-92df-3a6320b88640.jpeg)
スネーク!!!動くよ!


以上になります。


いかがでしたか?

自キは思っている以上に簡単です。
build guideは丁寧だし、遊舎工房の方はわからないこと教えてくれるし。
せっかく日本に実店舗ができたことだし、この際に沼にハマりに来てはいかがでしょうか。
grepチートシート

# OR条件で検索する

```sh
grep -e '条件1' grep -e '条件2'
```

# ディレクトリを再帰的に検索するとき、FIFOなどを除外する

BSD: `-D skip`をつけるとよい。

```sh
grep -D skip -nri gnuplot ~/playground/
```

# バイナリファイルを除外して検索する

`-I` をつける。


# マッチした行だけ色をつける

`0a`にマッチした行に色を付ける場合:

```sh
grep --color -E '0a|$'
```
シャムナ vs ルルーシュ問題

# 注意

**この記事は「[コードギアス 復活のルルーシュ](http://www.geass.jp/R-geass/)」のネタバレを含んでいます。これからこの映画を観ようと考えている方は、先に観てからこの記事を読むことをお勧めします。**

ネタバレがあっても大丈夫な方のみ、スクロールして本編へ進んでください。また、このページ自体が本当に雑な思い付きなので、そこまで内容に期待しないでください🙏


<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<!-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed accumsan blandit lectus et hendrerit. Aenean ullamcorper tempus felis sed tempor. Ut orci sapien, placerat vehicula consectetur sed, lacinia sit amet mauris. Praesent fringilla lacus in ex sagittis bibendum. Etiam sit amet congue augue, at elementum est. Aliquam non sem interdum, finibus elit nec, iaculis turpis. Ut iaculis dolor in gravida consectetur. Ut venenatis dui leo, vitae rhoncus enim porttitor fringilla. Fusce mollis lobortis ligula rutrum blandit. Integer mattis mollis sem id molestie. Pellentesque nec scelerisque sapien. Sed mauris est, finibus eu lobortis non, faucibus eu felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu scelerisque felis. Nulla justo magna, viverra at auctor ut, tristique pellentesque purus. Integer facilisis ipsum quis hendrerit lobortis. -->


# 問題の概要

戦士の国「ジルクスタン」のシャムナは、死ぬことで記憶を持ったまま数時間の時を遡るというギアス（能力）の使い手である。ルルーシュは、特殊な能力を持つものの基本的に普通の人間と考えてよい。このようなシャムナとルルーシュがいま、あるゲームを実行している。ゲームに敗北した場合、敗北者は死ぬことになるが、シャムナにおいては敗北した場合は時間を遡りゲームを途中からやりなおすことができると考えられる。このようなとき、ルルーシュは、ゲームをどのように進めることでシャムナが「時を遡ることができる」という能力を持つと判定できるだろうか。

# シャムナとルルーシュの能力

かなり雑だが、このように考えられる。

- シャムナは時を遡る能力があることを除いて他に特殊な能力はないことから、時を遡る機能を持つ古典コンピュータがあると考えてよいだろう
- ルルーシュは「人間に自由な命令を与える」ことができるが、それを除いて古典コンピュータであると考えてよいだろう

# CTC

[@iKodackさんの記事](https://qiita.com/iKodack/items/d606a09f0a40b95bf2b6#%E6%99%82%E9%96%93%E9%81%A1%E8%A1%8C%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)によると、時間を遡行するコンピュータとして**CTC**があるそうだ。これを使って、なにかできないだろうか？

# 対話型証明

量子コンピュータでは、古典コンピュータしか持たない者が、量子コンピュータなどを持つ者に計算をしてもらう**（量子）対話型証明**というものがある。これのCTC版を作ったらなにかが得られたりしないだろうか？

# まとめ

ちょっとずつ考えていきたいかな。
摩擦コストの自己認識。 #超ポエム

# 摩擦コスト。

どうにも仕事で、自分が動けなくなるときは、摩擦のコストが起きている。

# 報連相をした方が良い、相談をした方が良いシチュエーション。だが一瞬で動けない。なんども迷っては、摩擦の壁の前でUターンする。

影響因子には自分の性格も、その日のコンディションもある。メンバーの相談しやすさ、話しかけやすさもある。

# これを世間では一般的に、気分と呼ぶが、馬鹿にできないパラメータだ。

自分が何度も摩擦コストの前で、アクションの競合に敗れる姿を見る。自己観察する。認知できれば、対策できる。

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/587








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
複数Targetを単一ファイルで対応する (Xcode)

Apple Watch 対応アプリなどを作成していると、複数 Target でほとんど同じコードを使用したいことが出てくると思います。例えば Object の定義ファイルなど。
ただその中でも1行だけ Target ごとで分岐したい箇所があったりすると思います。そのようなときの分岐方法をまとめました。

# 環境
- Xcode 10.1

# Conditional Compilation Block について

下記みたいなやつです。

```swift
#if [条件式]
[処理]
#endif
```

使えるのは、 `#if` `#elseif` `#else` `#endif` で、条件式で用いれるのは `&&` `||` `!` です。

```swift:全て混ぜたグチャグチャな例
#if !os(watchOS)
print("osがwatchOSではない")
#elseif arch(i386) || arch(x86_64)
print("CPUがi386かx86_64")
#else
print("osがwatchOS、もしくはCPUがi386かx86_64以外")
#endif
```

条件式で使える値は以降で説明します。

# OS ごとの分岐

```swift
#if os(watchOS)
```

使える値は `os(iOS)` `os(watchOS)` `os(macOS)` `os(tvOS)` `os(Linux)` です。

## その他の分岐 (Swiftバージョン等)

シミュレータか実機かの判定。

```swift:Simulator
#if targetEnvironment(simulator)
```

`swift()` で括弧内は `>=数字` `<数字` が使用できます。

```swift:Swiftバージョン
#if swift(>=4.2)
```

他の条件や詳しくは [docs.swift.org Conditional Compilation Block](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538) にて。
`arch()` や `canImport()` などあります。


# Target や Configuration で分岐

**Active Compilation Conditions** に独自の値を設定することで、

<img src="https://qiita-image-store.s3.amazonaws.com/0/42826/ad10c2cd-76be-704e-d0d4-4e04daf3f5a0.png">

下記のようにすることができます。
(おそらくDEBUGはデフォルトでセットされてると思います。)

```swift
#if DEBUG
```

Target ごとに設定したり Configuration ごとに設定することで、自由に分岐できます。

## $(inherited) を活用

例えば複数 Target があり、全ての Configuration `Debug` の **Active Compilation Conditions** に対して `DEBUG` をセットしたい場合。
それぞれの Target ページで設定してもいいのですが、一括でセットしたい。

このようなとき、値がより優先される *Project* の方に値を記述し、各 *Target* の方には `$(inherited)` と記入することで、*Project* の値が利用されます。

値の優先順位と $(inherited) について詳しくは [こちらのQiita記事](https://qiita.com/paming/items/34f94a829c09eddfee95) を参照ください。

## Xcode 7 以前でやっていたこと

**Active Compilation Conditions** は Xcode 8 から登場しました。
以前は [**Preprocessor Macros** と **Other Swift Flags** をいじる](https://dev.classmethod.jp/smartphone/iphone/xcode-build-environment-adding-scheme/)ことにより実現していました。

以前の方法を使用するメリットはないと思いますが、念の為手段の一つとしてご紹介しました。


# 参考
- Swift Conditional Compilation Block について<br>https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538
- 実機とシミュレーターの分岐<br>https://qiita.com/_mogaming/items/d6731485196cb0ce0c54
- APNGKit で実際に OS 分岐しているコード<br>https://github.com/onevcat/APNGKit/blob/master/APNGKit/APNGImageView.swift#L32
- ビルド構成文について<br>https://qiita.com/HaNoHito/items/1e51118c101419e75122
- Build Settings で値が決まる優先順位と $(inherited)<br>https://qiita.com/paming/items/34f94a829c09eddfee95
- Xcode 7 以前に使用されていた方法<br>https://dev.classmethod.jp/smartphone/iphone/xcode-8-active-compilation-conditions/<br>https://dev.classmethod.jp/smartphone/iphone/xcode-build-environment-adding-scheme/
font-size:62.5%で要素の幅や高さにrem使用は注意

レスポンシブ案件では 640px(320px @&#x200b;2x)のデザインカンプが主流でしたが、近年は750px(375px @&#x200b;2x )でのカンプ作成も増えてきました。
マークアップの際、ルート要素(html)のフォントサイズに10px相当となる 62.5% を指定し、各パーツにrem単位を使うのはよくあるパターンです。


## chrome の最小フォントサイズは10px 

#### ルートフォントサイズを62.5%にすると、1rem 10px以下にならないので幅や高さ単位のrem使用には注意が必要

今回、375pxベースのデザインをもらい、いつも通りデザインをマークアップしほぼ完了したところ、当初要件外だったハズの320pxサイズに対応しなくてはならなくなり、少しハマッたのでメモ。

375pxベースのデザインと言ってもレスポンシブのマークアップでは、基本リキッドレイアウトで作るので、デザインによっては画面内に収まるのですが、今回はパーツ数が多く密度の高いデザインだったため、小さい画面内にデザインを納めるにはフォントやモジュールパーツを縮小する必要がありました。

そのため、下記のようにメディアクエリとvwを利用して画面サイズの縮小比率に応じてパーツサイズを可変にしたのですが、問題が発生。

```css
html {
  font-size: 62.5%;
}
@media (max-width: 375px) {
  html {
    font-size: 2.66vw;/* 10/375*100 */
  }
}
body {
  font-size: 1.4rem; /* basic size 14px */
}
.test {
  width: 10rem;
  font-size: 2rem; 
  line-height: 2rem;
  background-color: #f00;
}
```
chromeはフォントサイズが 10px 以下にならないため、画面幅が375px以下となりvwサイズが有効になっても width: 10rem; が 100pxより小さくなってくれず、デザインが画面内に収まりませんでした。
※フォントサイズ自体は10pxまでは縮小されます。

ルートフォントサイズを62.5%指定で10pxにしてしまうと、chromeではそれ以下の値になってくれません。
仕方なくブラウザデフォルトの 100%(16px) をルートサイズに使うことにしました。

ただ、10px基準でないと、各cssモジュールパーツの単位として使っているrem の計算が面倒になってしまうため、多少パフォーマンスは犠牲になりますが、保守運用を考慮して calcを使うことにしました（sassが使える案件なら関数で済むのですが）。

> calc(10rem/1.6)

※通常の相対単位で再現可能なデザインであれば、%やemの方がラクだと思います。

```css
html {
  font-size: 100%;
}
@media (max-width: 375px) {
  html {
    font-size: 4.26vw; /* 16/375*100  */
  }
}
body {
  font-size: 0.875rem; /* basic size 14px */
}
.test {
  width: calc(10rem/1.6);
  font-size: calc(2rem/1.6);
  line-height: calc(2rem/1.6);
  background-color: #f00;
}
```
ちなみに、ユーザー依存となりますが、chrome最小フォントサイズはブラウザ設定で変更できます。

以上、ありがとうございました。
【stata tips】行列から条件を満たす行を抜きとる

# 1. 目的
stataで，行列Aのある列について特定の値をとる行のみを抜き取り，新たな行列Bをつくる．

# 2. コード
##2-1. 行列Aを作成
 - 行列Aを4×3とする．
 - 行名，列名をつける．

```
mat A = (1,3,4\1,3,5\2,3,4\2,3,5)
mat rownames A = row1 row2 row3 row4
mat colnames A = col1 col2 col3
mat list A
```
 - 出力：

```
A[4,3]
      col1  col2  col3
row1     1     3     4
row2     1     3     5
row3     2     3     4
row4     2     3     5
```

##2-2. 特定の行の抜き出し
 - 1列目の値 = 1を満たす行であるrow1, row2のみを抜き出し，新たな行列Bを作成する．
 - mataを使うのが便利っぽい．

```
mata: st_matrix("B", select(st_matrix("A"), st_matrix("A")[.,1]:== 1))
mat list A
```
 - 出力：

```
B[2,3]
    c1  c2  c3
r1   1   3   4
r2   1   3   5
```
##2-3. 行名・列名の変更
 - 行名・列名がデフォルトのr#, c#になってしまったので書き換える．

```
mata: st_matrixcolstripe("B", st_matrixcolstripe("A"))
mata: st_matrixrowstripe("B",select(st_matrixrowstripe("A"),st_matrix("A")[.,1]:== 1))
mat list B
```
 - 出力：

```
B[2,3]
      col1  col2  col3
row1     1     3     4
row2     1     3     5
```

#3. 参考
 - statalistのポスト：
https://www.statalist.org/forums/forum/general-stata-discussion/general/1412467-remove-row-from-matrix-not-mata