OmniAICreator/Qiita-1.07M huggingface dataset:
kintone JavaScript APIイベント一覧

# kintone JavaScript APIイベント一覧

毎回調べるのでメモ。

### 追記
[一覧ページあった。](https://developer.cybozu.io/hc/ja/articles/360000361686-kintone-JavaScript-API%E4%B8%80%E8%A6%A7)

## 一覧イベント

### レコード一覧画面の表示

- app.record.index.show
- mobile.app.record.index.show



## 一覧インライン編集イベント

### 編集開始時イベント

- app.record.index.edit.show

### フィールド値変更時イベント

- app.record.index.edit.change.<フィールドコード>

### 保存実行前イベント

- app.record.index.edit.submit

### 保存成功後イベント

- app.record.index.edit.submit.success

### 削除前イベント

- app.record.index.delete.submit



## レコード詳細画面イベント

### 表示された時のイベント

- app.record.detail.show
- mobile.app.record.detail.show



### 削除前イベント

- app.record.detail.delete.submit
- mobile.app.record.detail.delete.submit



## レコード追加画面イベント

### 表示された時のイベント

- app.record.create.show
- mobile.app.record.create.show

### フィールド値変更時イベント

- app.record.create.change.<フィールドコード>
- mobile.app.record.create.change.<フィールドコード>

### 保存実行前イベント

- app.record.create.submit
- mobile.app.record.create.submit

### 保存成功後イベント

- app.record.create.submit.success
- mobile.app.record.create.submit.success



## レコード編集画面イベント

### 表示された時のイベント

- app.record.edit.show
- mobile.app.record.edit.show

### フィールド値変更時イベント

- app.record.edit.change.<フィールドコード>
- mobile.app.record.edit.change.<フィールドコード>

### 保存実行前イベント

- app.record.edit.submit
- mobile.app.record.edit.submit

### 保存成功後イベント

- app.record.edit.submit.success
- mobile.app.record.edit.submit.success
Pygameを使ってWHILLをJoyConで動かす

#PythonでWHILLを制御できるらしい
先日、以下のSDKを発見しました。

[WHILL Model CR SDK for Python](https://github.com/WHILL/pywhill)

いじいじしているうちにMakerFaireKyoto2019に出展することになっていたので記事書きます

#やってみる
あーだこーだ文字を連ねる文章力はないので早速まとめてみます
##環境
OS : MacOS Mojave Version10.14.4
Python : Python3.7.3
Pygame : 1.9.6
#ソースコード

```Python:main.py
import whillpy
import whill_data
import pygame
from pygame.locals import *
import time

def main() :
    whill = whillpy.connect(port='WHILLとPCを繋ぐポート')
    pygame.joystick.init()
    joystick0 = pygame.joystick.Joystick(0)
    joystick0.init()

    print ('joystick start')

    pygame.init()

    x, y = 0, 0
    while True:
         # コントローラーの操作を取得
        eventlist = pygame.event.get()

        # イベント処理
        for e in eventlist:
            if e.type == QUIT:
                return

            if e.type == pygame.locals.JOYAXISMOTION:
                x, y = joystick0.get_axis(0), joystick0.get_axis(1)
                print ('axis x:' + str(x) + ' axis y:' + str(y))
            elif e.type == pygame.locals.JOYHATMOTION:
                x, y = joystick0.get_hat(0)
                print ('hat x:' + str(x) + ' hat y:' + str(y))
            elif e.type == pygame.locals.JOYBUTTONDOWN:
                print ('button:' + str(e.button))

        whill.move(straight=int(-x * 30), turn=int(y * 30))
        time.sleep(0.01)

if __name__ == '__main__':
    try:
        main()
    except pygame.error:
        print ('joystickが見つかりませんでした。')
```
pywhillのOS SupportにMacが入っていませんが動きます（動きました）
WHILL Model CR のシリアルポートからRS232Cに繋いであげてそこからUSBに変換すればPCには繋げます（実行環境にもよる）
JoyConはBluetoothでPCに繋げてあげてください。 
あとはwhillpyとwill_dataを同じ階層に移動してあげて
Pygame、pySerialをpip installしてあげるだけで動きます。

#おしまい！
動くと楽しかった！！！そしてMakerFaireKyoto2019楽しかった！！！そしておすし美味しかった！！！！！！！！！！

#追記
コメント欄よりMacで操作する場合のリンクをいただいたので紹介します。

Macはこっち
https://pypi.org/project/whillpy/
https://github.com/ShibataLab/whillpy/tree/master/whillpy
【WordPress】wp_enqueue_styleで読み込んだパスがエンコードされるのをなるべく防ぐ

## エンコードされた例

```php
wp_enqueue_style( 'font', '//fonts.googleapis.com/css?family=Roboto:400,700');
↓
<link rel='stylesheet' id='font-css'  href='//fonts.googleapis.com/css?family=Roboto%3A400%2C700&#038;ver=xxx' type='text/css' media='all' />
```

## ちょっと減らせた例

```php
// wp_enqueue_style
wp_enqueue_style( 'font?family=Roboto:400,700', '//fonts.googleapis.com/css');
↓
<link rel='stylesheet' id='font-css'  href='//fonts.googleapis.com/css?ver=xxx&#038;family=Roboto:400,700' type='text/css' media='all' />
```
あと```&```だけ・・・
Microsoft flowのフリープランではHTTP(Webhook)が利用できない

[Microsoft Flow](https://flow.microsoft.com)はIFTTTなどと異なり、アクションが連続で複数書けそうだったので、利用してみました。

が、

![flow.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62354/a20376ae-c1bd-d687-0087-aefe78a6f1fa.jpeg)

組み込みのHTTPを使おうとすると

![premi.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62354/cca5bb77-99a3-c4b2-0a2c-2bde22473523.jpeg)

Premium アカウントが要求されました。

よって早くも断念…。
Premiumタブにないもので要求されたのでなにか勘違いしているのかも。してるといいな。

もし本当に想像通りにアクション結果を次のアクションに渡せてどんどん処理できるならすごく便利そうなのです。
HTTPは便利すぎるのでPremiumというのならある意味頷けるので、フリーでは既存サービスの連携ぐらいにとどまりそうでしょうか。
Firebase Hostingをさわってみる

# Firebase Hosting
https://firebase.google.com/docs/hosting/quickstart?hl=ja
↑ガイドを読めばいいですが、自分用にメモ

# プロジェクトを作成
`プロジェクトを追加` をクリック
<img width="80%" alt="スクリーンショット 2019-05-08 18.33.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/ab3752df-f8b2-28e6-6df9-9137faea9ca5.png">

プロジェクト名を決めて、
<img width="50%" alt="スクリーンショット 2019-05-08 17.57.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/1c6cda88-3711-90bf-98ad-e8e2a727bf5d.png">

作成!!
<img width="50%" alt="スクリーンショット 2019-05-08 17.58.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/af651d68-d54d-0dde-e745-3b8b3de6bcfe.png">

# 設定
コンソールの `開発` → `Hosting` → `始める`
<img width="1274" alt="スクリーンショット 2019-05-08 17.58.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/d062391f-ba6f-f4ae-d16a-ce3d2445ee8b.png">

GCPでCloud Shellを開いて、設定の指示に従って入力する
<img width="80%" alt="スクリーンショット 2019-05-08 18.09.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/7198cf8d-3f33-9fb9-9d6c-fb84af5a47b4.png">

Cloud Shell上にディレクトリを作って、その中で開始する

```
mkdir try-try-firebase
cd try-try-firebase
firebase init
```
<img width="80%" alt="スクリーンショット 2019-05-08 18.09.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/e0f8c388-aa22-efe7-54be-12c9461bc9af.png">
###質問に答えていく
Which Firebase CLI features do you want to set up for this folder? 
→ `Hosting`を選択

Select a default Firebase project for this directory:
→ publicがdefaultなので、`Enter`

Configure as a single-page app (rewrite all urls to /index.html)?
→ `No`


`✔  Firebase initialization complete!`  完了＼(^o^)／

### 確認
Cloud Shellの右上にある`コードエディタ`を起動
<img width="80%" alt="スクリーンショット 2019-05-08 18.20.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/6f1db060-60ba-1e91-1190-e9ba8e3d88bf.png">

`try-try-firebase`ディレクトリの中にファイルが作られているのを確認
<img width="80%" alt="スクリーンショット 2019-05-08 18.23.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/57f2cc01-0d1a-eec0-9640-0c348072ad40.png">

### deployする
`try-try-firebase` → `public` → `index.html`の中身を書き換えて、

```html
<!DOCTYPE html>
<html>
    <head>
        <title>Try Firebase Hosting</title>
    </head>
    <body>
        <p>Try Firebase Hosting!</p>
    </body>
</html>
```

Cloud Shellでdeploy!!

```
firebase deploy
```
完了したら、`Hosting URL`をクリック

```
✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/try-try-firebase/overview
Hosting URL: https://try-try-firebase.firebaseapp.com
```

反映されました＼(^o^)／
<img width="80%" alt="スクリーンショット 2019-05-09 14.24.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333838/9c5071cd-2f8f-01c8-3b2b-2a06b20abb20.png">

# おわり
次は`Functions`を使います！
TouchDesignerのSyphon Spout Inで映像を受け取れないとき(Windows)

#目的
TouchDesigner以外のソフトウェアからのSpoutを受信，またTouchDesignerからのSpoutの送信を行いたい．

#現実
なんかエラー出てきた．．
![bandicam 2019-05-09 14-08-34-828.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184790/0bb7d865-81b4-6916-9754-eb4904f691f7.jpeg)

#解決策
色々調べてみるとグラボがNVIDIAだとSpoutがうまくいかないみたいな記事を見かけたので，グラボをIntelに変更しました．
これはデスクトップ上->右クリック->NVIDIAコンパネで出てきます．
![bandicam 2019-05-09 14-09-47-440.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184790/56e04ea2-c400-7803-f94c-78f81eb9d76a.jpeg)

その後，Touchを再起動してみると．．

TouchDesigner：送信
![bandicam 2019-05-09 14-11-14-994.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184790/da00ebb1-ce84-432f-55a8-d9314add4a14.jpeg)


TouchDesigner：受信
![bandicam 2019-05-09 14-05-25-303.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184790/c9d45d86-c832-561e-e2ff-748ca4d8aa0a.jpeg)

解決しました～！
#追記
Spoutはグラフィックデータをハードウェア的に共有することで実現しているようなのでグラボを送受信側と合わせないといけないという点も重要そうです．
Spoutの中身については理解が足りない部分も多いですが，なにか指摘があればコメントください．
#peco で既にコンソールに入力済みのキーワードを候補に反映しつつコマンド履歴を検索する  #zsh の設定例

~/.zshrc

```
function peco-history-selection-keep() {
    BUFFER=$(history -n 1 | tail -r  | awk '!a[$0]++' | peco --layout=bottom-up --query="$BUFFER")

    CURSOR=$#BUFFER
}

zle -N peco-history-selection-keep
bindkey '^R' peco-history-selection-keep


```

`--query="$BUFFER"` がポイント


# Original by Github issue

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








<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
php-master-changes 2019-05-08

今日は CURLPIPE_HTTP1 の非推奨化、継承時の型チェック処理の修正、reflection の最適化、ハッシュ関数の実装最適化の修正があった！

# 2019-05-08
## cmb69: Deprecate CURLPIPE_HTTP1
- https://github.com/php/php-src/commit/72e1da81b6792d4141b4b41f6fc3e92b68aa0f3e
- [7.4~]
- ext/curl で、[CURLPIPE_HTTP1](https://curl.haxx.se/libcurl/c/CURLMOPT_PIPELINING.html) の非推奨化
- curl 7.62.0 から非推奨化されていて使っても効果がなくなっている

## nikic: Fix resolution of "parent" during inheritance check
- https://github.com/php/php-src/commit/d19b6aa5ba6ea7b488cca748934264e11469f3d5
- [7.2~]
- 継承時の parent のチェック処理を修正
- [元々こう](https://3v4l.org/Ee2to)なっていた

## nikic: Deduplicate inheritance type check implementation
- https://github.com/php/php-src/commit/5c474010fbe6f2969eec966250f8fbdf05a6d96d
- [7.4~]
- 継承時の型チェックコードの重複排除
- 引数の順序を変えると convariance / contravariance 両対応できるようになってる

## nikic: Refactor inheritance type check implementation
- https://github.com/php/php-src/commit/f778e1a0b2b2535398bd37cb2e63ad06c82f8cd7
- [7.4~]
- 継承時の型チェック処理をリファクタリング

## nikic: Optimize $name/$class property population in reflection
- https://github.com/php/php-src/commit/ee0fc1b5ae9470e7edd43b608d43a8bea93188d2
- [7.4~]
- ext/reflection で、name と class のプロパティ設定コードを最適化

## dstogov: Improve PHP hash function.
- https://github.com/php/php-src/commit/90e285f6fda679c18259e459c8585ebf284805b0
- [7.4~]
- ハッシュ関数の実装を最適化
- [「今どきのコンパイラだと素直に乗算書いてた方がはえーんです！」](https://lemire.me/blog/2016/07/21/accelerating-php-hashing-by-unoptimizing-it/)ということらしい
- 話としては [PR:4126](https://github.com/php/php-src/pull/4126) で出てきた奴、この PR 投げてるのは[前日](https://qiita.com/sj-i/items/9d6417ce1f7754fa5352)に AArch64 用の修正上げてる AWS の人
- こういうみみっちい話好きな人は見てみるのがいいかも
【忘備録】教師あり分類とは

教師あり分類・・・前のデータ（教師データ）に基づいて、処理対象の分類を行う方法。


<img width="450" alt="スクリーンショット-2018-08-04-9.22.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396141/0489f49a-0249-dc8e-7fc3-d89adbc279ac.png">

![machine_learning_problems.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396141/31abf864-7ea7-8ccb-4d7e-6fc27d83ac15.png)
MacでDoxygenのGUIとGraphvizを使ってC#のクラス図を生成する使い方

# はじめに
Doxygenを使用してC#プロジェクトを図にして欲しいと頼まれたので使い方を備忘録。
Macでは主にコマンドラインを使用しているが、Doxyfileの内容を理解したかったので、
今回はインストーラーからGUIを使用する。

# ダウンロード
**Doxygen**
https://sourceforge.net/projects/doxygen/files/rel-1.8.15/
しばらく更新入ってないが、現時点で最新の上記から`Doxygen-1.8.15.dmg`をインストール。

**Graphviz**
dot言語をクラス図で出力する。以下のコマンドでダウンロード。

    $ brew install graphviz
    $ dot -V
    dot - graphviz version 2.40.1 (20161225.0304)

# 設定
Doxygenのインストールパス

    /Applications/Doxygen.app/Contents/Resources

Graphvizのインストールパス

    /usr/local/Cellar/graphviz/2.40.1/bin

`上記を踏まえた上で`設定を行っていく。

1.起動する
`Step1`の部分にはインストールした`Doxygen自身のパス`を指定しなければいけない。
しかも実行ファイルではなく、`実行ファイルのあるディレクトリ`を設定する。
つまり`Doxygen-1.8.15.dmg`をインストールすると
`/Applications/Doxygen.app/Contents/Resources/doxygen`
に実行ファイルが配置されるが、最初に記載した`Doxygenのインストールパス`を指定。
注意点として、パスの設定は右側の`Select...`ボタンを使用しないと反映されない。
<img width="775" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/785109a3-40e1-b42c-0c68-338205c02b4e.png">
2.Modeを選択
<img width="777" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/cb155c6d-7a94-7b81-f659-ed696387f0ad.png">
3.Outputを選択
<img width="776" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/0a0ef519-ed60-01f4-ceb8-69ba04fcc8e7.png">
4.Diagramsを選択
<img width="776" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/d0002f14-b8be-a75d-2be7-0d86a9a98226.png">
5.Expertタブを選択
OUTPUT_LANGUAGEをJapaneseにする（お好み）
<img width="778" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/08bc1715-a8ba-5f7f-7620-55a9d759629c.png">
6.そのままExpertタブの状態でTopicsをスクロール
`DOT_PATH`には最初に記載した`Graphvizのインストールパス`を設定。
諸々の設定が完了したら`Next`ボタンを押下する。
<img width="776" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/fd8a931f-1ba0-d7d1-af32-630d99198020.png">
7.赤いところを押すと実行される。
`Show HTML output`にて出力されたHTMLを開ける。
（指定した出力ディレクトリのindex.html）
`Show configuration`にてGUIで設定した`Doxyfile`が見れる。
<img width="774" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153841/414c224f-cabd-2a21-476a-9764e18bf888.png">

#デフォルトの`Doxyfile`との差分

    PROJECT_NAME           = "UserProject"
    OUTPUT_DIRECTORY       = /Users/user/Documents/
    OUTPUT_LANGUAGE        = Japanese
    OPTIMIZE_OUTPUT_JAVA   = YES
    EXTRACT_ALL            = YES
    INPUT                  = /Users/user/work/Project/Scripts
    RECURSIVE              = YES
    GENERATE_LATEX         = NO
    CLASS_DIAGRAMS         = NO
    HAVE_DOT               = YES
    CALL_GRAPH             = YES
    CALLER_GRAPH           = YES
    DOT_PATH               = /usr/local/Cellar/graphviz/2.40.1/bin

# 終わりに
dmgでインストール後デフォルトの`Doxyfile`は以下のコマンドで生成できる。

    $ /Applications/Doxygen.app/Contents/Resources/doxygen -g

生成先は`$HOME`になる。

GUIで設定したものは`Doxygen実行後`に`×`でウインドウを閉じようとすると
`Doxyfileの保存先を選択`できるので、
その時に保存すれば設定した`Doxyfile`が作成される。
（逆にそうしないと設定が保存されない）
保存した`Doxyfile`を開くには、Doxygenを起動後、
`ファイル→開く`で`Doxyfile`を選択しないと読み込まれない。

**以上です。**
OpenJDKの選定について

#商用で使用できなくなったOracle JDK問題
Java8であってもすでにライセンスが変更されて開発以外はNGとなった。


代替品としては以下が提案されている。
[Java is Still Free 2.0.3](https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244)より
>Free Binary Distributions
>Free Builds for Linux, Windows, Mac, etc. [OpenJDK, no commercial support]:

>AdoptOpenJDK (commercial support also available by IBM and jClarity)
>Amazon Corretto
>Azul Zulu (commercial support also available)
>BellSoft Liberica JDK (commercial support also available)
>Linux Distros
>Oracle OpenJDK build
>SapMachine

AdoptOpenJDK は2019年1月リリースからWindows版にはmsiが用意されておりWindowsであれば簡単にインストールが出来る。

概ね第一候補としてAdoptOpenJDKが支持されており、Ecripseもこちらを採用したようなので流れに乗った。
どのみち実装が同じとは限らないので検証は必要。

SikuliXは
AdoptOpenJDK with Hotspot 8
で取り急ぎ問題なく動作しているのでこのままとする。
何か出たら記事を作成予定。

#AdoptOpenJDK インストール方法
#1.Oracle JDKをアンインストールする。

#2.公式からインストーラーをダウンロードする。
公式サイト　https://adoptopenjdk.net/index.html 

現時点で一番サポート期間が長いのは8
https://adoptopenjdk.net/support.html
>At Least Sep 2023

今回は8を入れることとする。

表示されたまま取り急ぎLatest releaseボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345260/92c908eb-9cd9-4f0e-8839-1522138a5df6.png)

2.Choose a JVMは基本的に今までのOracleJDKもHotSpotなのでそのまま踏襲。

#3.インストール
OpenJDK8U-jdk_x64_windows_hotspot_8u212b03.msi
みたいなファイルがあるのでダブルクリックしてインストール
基本デフォルトのままYESマンで問題なくSikuliXやPentahoは動作した。
Jupyter Notebook で別の Kernel が立ち上がってしまう時は kernel.json 内のパスを書き換える

# Jupyter Notebook で `Kernel error` (`FileNotFoundError`)

Pyenv等を用いることによってPython3の環境が複数ある場合、Jupyter Notebook を立ち上げたときに、他の（すでにアンインストールした）Kernelを参照しようとして `Kernel error` になるときがある。

そのような場合、

`~/Library/Jupyter/kernels/python3/kernel.json` 内のパスを書き換えると解決する。

```
{
 "argv": [
  "/path/to/kernel",  # ここを書き換える
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}
```
windows server 構成に役立つ記事まとめ

DNS前方参照ゾーン
https://news.mynavi.jp/itsearch/article/hardware/976

Windows Server DNS ゾーン
https://miya1beginner.com/windows-server-dns-%E3%82%BE%E3%83%BC%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

Windowsでログインパスワードを忘れたときに無理やり書き換える方法
https://qiita.com/32b0c58/items/c87d2220cad906b5fd88

ドメインの時刻をNICTのNTPと同期させる
http://www.vwnet.jp/Windows/WS08R2/NTP/w32time.html

windows server 2012 所有者と組織名を変更する
https://i-think-it.net/windowsserver2012r2-change-organization-and-owner-how-to/


##役立つコマンド
ADのテスト --> **dcdiag**
DNSの明細を表示 --> **ipconfig /displaydns**
コンピュータ基本情報を表示 --> **systeminfo**
FSMO完了後確認 --> **netdom /query fsmo**
ライセンス認証　プロダクトキー入力 --> **slmgr -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX**
ライセンス認証　電話認証ダイアログを呼び出す --> **slui 04**
windowsのバージョン確認 --> **winver**


##メモ情報
windowsライセンス電話認証日本連絡先（無料）：**0120-801-734**
windowsライセンス電話認証日本連絡先（有料）：**+81-3-6831-3460**
Tableau JavaScript API でセカンダリデータソースのフィルタリングをしたい

Tableau JavaScript APIを使ってワークブックの表示やらフィルタリング機能やらを実装していた時に、セカンダリデータソースのフィルタ機能を実装する必要があったので、やり方を忘れないようにメモ

# やりたいこと
複数のデータソースを利用しているTableauワークシートで、セカンダリデータソースをJavaScript APIからフィルタリングしたい

# やり方
`applyFilterAsync`にデータソース名ごとフィールド名を指定すると良い
`[Data Source Name].[Field Name]`の形式で指定するらしい

例

```js
workSheet.applyFilterAsync('[Data Source].[field name]', value, tableau.FilterUpdateType.REPLACE);
```

`applyRangeFilterAsync`も同様

```js
workSheet.applyRangeFilterAsync('[Data Source].[field name]', { min: hoge, max: fuge });
```

# 参考
- https://kb.tableau.com/articles/howto/applying-a-filter-on-a-secondary-data-source-from-javascript-api
- https://community.tableau.com/thread/261472
開発環境を「かわいい」かつ「使いやすい」ようにカスタムする

# はじめに
## 本記事の趣旨
- 新人エンジニアに向けて、自分の開発環境をお好みにカスタムして、愛着をもって使うことを知ってもらう。
- ベテランエンジニアの皆様も、気分転換がてらどうぞ。
- IDE文化な人も、これを機にエディタデビューしてみては？
- `かわいい`or`かっこいい`開発環境だと、モチベーションが上がる。
- 筆者のかわいい環境を紹介する。
- 便利な機能やツールを紹介する。
- 本記事はLinuxを想定しているが、クロスプラットフォームなものもいくつか取り上げているため、参考になれば幸いである。

## 筆者の使用OS
- Debian testing

# ターミナル
ターミナルエミュレータには、[Tilix](https://github.com/gnunn1/tilix)を使用している。
背景テーマには[ポケモンテーマ](https://github.com/LazoCoder/Pokemon-Terminal)を使い、かわいいターミナルにしている。
私は`pip`で導入している。

# エディタ
エディタは[Emacs](https://www.gnu.org/software/emacs/)を使用している。[こちらの記事](https://qiita.com/Ladicle/items/feb5f9dce9adf89652cf)を参考にして、かわEmacsにしている。
他のEmacsの拡張もいくつか紹介する。

## [nyan-mode](https://github.com/TeMPOraL/nyan-mode)
ミニバッファ上でねこが現在のカーソル位置を教えてくれる、心のオアシス的存在。
`ぬこ is かわいい`

## [atomic-chrome](https://github.com/alpha22jp/atomic-chrome)
GoogleChromeの拡張である[GhostText](https://github.com/GhostText/GhostText)と連携して、web上のテキストボックスへの記述をエディタ上のバッファと連動させることができる。markdownやコードスニペットを書く時に便利。

## [rustic](https://github.com/brotzeit/rustic),[rls](https://github.com/rust-lang/rls)
Rustを書く時のモードは`rustic`を使っている。また、rustのLanguage Serverである、`rls`を導入している。また、Emacs側のクライアントには[lsp-mode](https://github.com/emacs-lsp/lsp-mode)を使用している。
Language Serverについては[こちらの記事](https://qiita.com/Ladicle/items/e666e3fb9fae9d807969#lsp-language-server-protocol%E3%81%A8%E3%81%AF)が参考になる。

## [python-mode](https://github.com/emacsmirror/python-mode),[python-language-server](https://github.com/palantir/python-language-server)
pythonを書く時は、デフォルトの`python.el`ではなく、`python-mode`を使用している。また、`python-language-server`を導入している。
新人プログラマの皆さんは、python環境を構築する際に、`Lint`と`フォーマッタ`を導入すると良い。(`python-language-server`にはどちらも含まれている。)

## [straight.el](https://github.com/raxod502/straight.el)
Emacsのパッケージマネージャは`straight.el`を使っている。
`use-package`と連携できたり、lockファイルが作れたりと便利。
[こちら](https://nukosuke.hatenablog.jp/entry/straight-el#straightel)や[こちら](http://www.mhatta.org/wp/2018/09/23/org-mode-101-6/)が参考になる。

# キーボード
キーボードは、[HHKB Professional2 Type-S 白／無刻印](https://www.pfu.fujitsu.com/direct/hhkb/detail_hhkb-pro2-nl-types.html)を使用している。
言わずとしれた静電容量無接点方式キーボードの代表格である。
カッコがとなり合わせになっていることと、`Ctrl`キーの位置が決め手。特にEmacsユーザの小指の腱鞘炎防止の強い味方である。
無刻印なのは、`かっこいいから`
そのうち、キーキャップを買い替えて、かわいくしたい。
余談ではあるが、最近は開発環境が賢いため、タイピングを軽視するような考えもあるようだが、やはりタイピングは速いに越したことはない。（恥ずかしながら、過去の私もそうであった…）

# マウス
[Kensington ExpertMouse ワイヤレストラックボール](https://www.kensington.com/ja-jp/p/products/control/trackballs/expertmouse-/)を使用している。
マウスのような握る動作がないので、ターミナルやエディタはキーボード、ブラウザはトラックボールという使い分けがスムーズにできる。
また、腱鞘炎防止も期待している。(私はギターを弾くので、歳をとってからの腱鞘炎が怖い。)
マウスによる腱鞘炎については[こちら](https://www.sanwa.co.jp/seihin_joho/ergo/column_shisei.html)を参照してほしい。

#  最後に
お付き合いいただき、ありがとうございます。
「動けば何でもいい」という考えもありますが、お気に入りの環境や道具を見つけると、モチベーションアップにつながると思います。特にエンジニアにとっては、1日の大半を共にする「パートナー」のような存在です。ぜひ、愛着をもって欲しいと思います。また、環境をカスタムすること自体にも面白さがあります。その面白さの一端が伝われば幸いです。
便利なツールも日々進化しています。色々試してみると、作業効率が上がるもの、かわいいデザインのものがみつかるかもしれません。
Cognos Analytics レポートをURLにパラメーター条件付けて呼び出す

#レポートをURLにパラメーター条件付けて呼び出す
ポータルからレポート名をクリックしてレポートを表示するのではなく、レポートを直接URL指定して呼び出し、URLにパラメーターを埋め込む手順を学びます。
※URLの中に「製品ライン」=キャンプ用品&ゴルフ用品、「年」=2012、という絞り込み条件を入れている
![007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/d231ecb5-051a-fa7f-d5e7-eb01c9f4bd1d.jpeg)



#手順
A6.Reportを開始点とする。
![001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/441b962d-194b-945f-7039-befb1d71d01a.jpeg)

「クエリー1」に詳細フィルターを以下のように作成する。
[年] = ?pYear?
※これにより、このレポートはpYear(年)というパラメーターと、pPL(製品ライン)というパラメーターを持つ。
![002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/b1ab73c8-f92a-8154-57ce-618cc6aee059.jpeg)

レポートを「A18.Report」として保存し、ポータル画面のレポートの「・・・」から「共有」を選択。
![003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/1a52544b-1a40-cd95-6692-58764147e831.jpeg)

「リンク」に表示されているURLをコピー。
![004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/b267fdbb-6ab8-6af6-77be-63031269f020.jpeg)

コピーしたURLをメモ帳等に貼り付け、URLの最後に以下を付与
**&p_pPL=ゴルフ用品&p_pPL=キャンプ用品&p_pYear=2012**
※パラメーター名の前に**p_**を付与し、**&**で各パラメーターの指定値をつなぐ

以下のようなURLとなる。

```html
http://hostname:9400/bi/?pathRef=.public_folders%2FQiita%2F%25E8%2587%25AA%25E5%25B7%25B1%25E5%25AD%25A6%25E7%25BF%2592%2FA18.Report&p_pPL=ゴルフ用品&p_pPL=キャンプ用品&p_pYear=2012
```

このURLをブラウザのURLに貼り付けると、A18.Reportが以下のように製品ライン＝ゴルフ用品&キャンプ用品、年=2012、で絞り込まれて表示される。
![005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/3ce4ad2c-76b8-7b75-4313-48963f24b780.jpeg)

ちなみに、IEブラウザの場合などで、URLに直接日本語NGの場合、「URL エンコード」などのキーワードで適当にググッて、エンコード後の文字をURLに入れる事で、問題なくURLレポート呼び出しができる。
![006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/2228067d-9765-560a-529f-cb3017126638.jpeg)

その場合のURL

```html
http://hostname:9400/bi/?pathRef=.public_folders%2FQiita%2F%25E8%2587%25AA%25E5%25B7%25B1%25E5%25AD%25A6%25E7%25BF%2592%2FA18.Report&p_pPL=%e3%82%b4%e3%83%ab%e3%83%95%e7%94%a8%e5%93%81&p_pPL=%e3%82%ad%e3%83%a3%e3%83%b3%e3%83%97%e7%94%a8%e5%93%81&p_pYear=2012
```


#自己学習記事一覧
**Cognos Analytics をエンドユーザーの方に自己学習して頂くためのサイト**
https://qiita.com/shinyama/items/95885c7246dc413b6448
Hyper terminal 3.0 を win10 で使うときに `Error updating plugins [DEP0005]` が出たら

## :rocket: TL;DR

- とりあえず npm コマンドが使えて、proxy が設定されていることを確認する
  - `$ npm config get proxy`

## :rotating_light: 確認されたエラー

![Program Manager 2019-05-07 17.45.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221423/2273bc24-7ca8-2711-d903-5597cfb79eb4.png)

むむっと思ってメッセージで検索するも、それらしい解決策が見つからず。

いったん Hyper 2.1.2 を入れてみたところ、エラー内容が Timeout 的なやつに代わって、そういえば Proxy 設定してないやと、解決に至る:angel:
NSDataをNSStringに変換すると(null)になる。

例
NSData card_data:<----- ------ ------ ----->
NSString card_no:@"12345678"

<b>AES128</b>で<b>復号処理</b>を行った上記のNSDataを

NSString* cardNoStr = [[NSString alloc] initWithData: card_data encoding: NSUTF8StringEncoding];

NSDataの情報をNSStringに変換する処理を実行したのですが、変換結果がNULLになってしまいました。

上記の方法で他のエンコード(UTF16,ASCII)方法も試しましたが、全てnullになってしまいました。
card_noの値が出る方法を教えてください。
docker + Go言語でAPIサーバを立てる

## やること

Docker + Go言語でAPIサーバを立てたいという時の環境構築をします。その際、以下のことを満たせるようにDockerfile等を設計していきます。

- multi stage buildを用いて、production環境でのimageサイズをなるべく小さくする
- Dockerfileはdev環境とprod環境で共通のものを用いる

## Dockerfileの書き方

まず、Docker 17.05でmulti stage buildという機能が導入されているので、それを使います。

次のように`FROM`が2つあるようにし、中間ステージのものに対しては`AS build`のように名前をつけておきます。

```dockerfile
FROM golang:latest AS build
WORKDIR /go/src/github.com/nkjmsss/sample
ENV GO111MODULE=on
# make cache
COPY go.mod .
COPY go.sum .
RUN go mod download
# COPY the source code as the last step
COPY . .
# build app for next stage
RUN go build -o /go/bin/app

FROM alpine:latest
WORKDIR /app
COPY --from=build /go/bin/app .
# add user
RUN addgroup go && \
    adduser -D -G go go && \
    chown -R go:go /app/app
CMD [ "./cms" ]

```

これの大事な部分について説明していきます。

### 1. GO111MODULE

これは、Go 1.11より導入されたバージョン管理機能を有効にするためのフラグです。v1.11と現バージョンのv1.12では、これはデフォルトでautoとなっているので、これを強制的にonにしておきます（gopathの中では、GO111MODULEのautoはoffと等価です）。なお、秋頃リリースと噂のGo 1.13ではこの環境変数がデフォルトでonとなるようなので、過渡期の今限定で設定しなければならないものです。

なぜこれをわざわざ指定しているかというと、例えばechoというフレームワークでAPIサーバを立てる場合、v4を明示的に指定する必要があるためです。個人的にはecho + swaggoでの開発が好きなのですが、そうする場合次のようにimportすることになります。GO111MODULEを指定していない段階ではそもそも組み合わせるのがかなり困難だったので、指定するようにしましょう。

```go
import (
	"github.com/labstack/echo/v4"
	echoSwagger "github.com/swaggo/echo-swagger/v2"
)
```



### 2. cache

imageのビルドを高速化するにはかなり重要な部分です。

Go modulesが有効な状態では、go.modとgo.sumの2つのファイルで使用するパッケージのバージョンを指定しています。そして、これらは通常の開発の場合はパッケージを追加インストールする時くらいしか更新されません。なので、これらをdockerの中の単独なレイヤーにしておくことで、ビルド時にdockerがcacheを使えるようになり、`go mod download`を高速化できます。

最初に`COPY . .`としてしまうとcacheが上手に使えず、ビルドの度に`go mod download`でネット上からダウンロードしようとするので非常に時間がかかってしまいます。

### 3. 中間ステージからのCOPY

後半に`COPY --from=build /go/bin/app .`というものがありますが、`--from=build`でbuildステージで予めビルドしておいたものをコピーしてきます。これのおかげでproduction環境の方はGoをインストールする必要がなくなるので、イメージサイズを小さくすることが可能になります。

### 4. ユーザの追加

[公式doc](https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user)にあるように、rootでないユーザで実行するようにしたほうがセキュリティの観点上良いと思われます。

## docker-compose.ymlの書き方

```yaml
version: "3.5"
services:
  echo:
    build:
      context: .
      target: build
    volumes:
      - .:/go/src/github.com/nkjmsss/sample
    ports:
      - "1323:1323"
    command: go run main.go
```

これの大事なところは、versionを**3.4以上に指定**してbuild時にbuild stageをtargetにすることです。

## docker-compose.prod.ymlの書き方

```yaml
version: "3.5"
services:
  echo:
    build: .
    ports:
      - "1323:1323"
```

こちらでは、別にversion3.5を指定する必要は特にないです。

## おわりに

```shell
$ docker-compose build
$ docker-compose up -d
```

とすると、dev環境が立ち上がり、

```shell
$ docker-compose -f docker-compose.prod.yml build
$ docker-compose -f docker-compose.prod.yml up -d
```

とするとprod環境が立ち上がります。

今回は説明の都合から最小構成で書いていますが、

- docker-compose.ymlにdev環境かどうかを指定する環境変数を追加する
- realize等のツールを用いて、dev環境では自動リロードできるようにする
- makefileで長い`docker-compose -f docker-compose.prod.yml build`等を簡潔にする

などをしておけば、より快適な開発環境が整うのではないでしょうか。

ちなみに、自分の最近作ったAPIサーバでは、build stageが1GB程度あったものが、prod環境では90MBとイメージサイズを1/10程度にすることができています。
pythonの環境をpipenvで構築してjupyter notebookを使ってみた（Mac）

## 前提
- homebrewがインストールされていること
- Xcode Command Line Toolsがインストールされていること

## install pipenv
pythonでのnpmのような管理ツール
brewからinstall

```bash
brew install pipenv
```

## gitへのcommit
Pipfile（とPipfile.lock）をコミットに含める 
npmでのpackage.jsonやpackage-lock.jsonのようなものです

## jupyter notebook
work ディレクトリを作成しjupyterとjupytextをinstall

```bash
mkdir <directory_name>
cd <directory_name>
pipenv install jupyter jupytext
```

### 初回のみ行う手順
- pipenv run jupyter notebook --generate-configコマンドを実行し、~/.jupyter/jupyter_notebook_config.pyを作成します。

- echo 'c.NotebookApp.contents_manager_class = "jupytext.TextFileContentsManager"' >> ~/.jupyter/jupyter_notebook_config.pyコマンドを実行し、Jupytextを利用可能にします。

- echo 'c.ContentsManager.default_jupytext_formats = "ipynb,py"' >> ~/.jupyter/jupyter_notebook_config.pyコマンドを実行し、Jupyter NotebookとPythonスクリプトが連動するように設定します。

### 起動
```bash
pipenv run jupyter notebook
```
ブラウザ上でJupyter Notebookが開く

### 終了
Jupyter Notebookを起動しているターミナル上でCtrl+Cを押す

## nbextensionsを導入
nbextesionsはjupyter notebookをカスタマイズするためのもの  

```bash
pipenv install jupyter-contrib-nbextensions
pipenv install jupyter-nbextensions-configurator
```

### nbextensionsを有効化
```bash
pipenv run jupyter contrib nbextension install --user
pipenv jupyter nbextensions_configurator enable --user
```
nbextensionsのオススメカスタマイズについてはこちら
http://pynote.hatenablog.com/entry/jupyter-notebook-nbextensions

### syntax highlightの有効化
```bash
pipenv run jupyter nbextension enable highlight_selected_word/main
```

## numpy, pandasのinstall
ここからは使いたいpackageを以下のようにインストールしていただけば大丈夫です。 

```bash
pipenv install numpy pandas
```

## まとめ
npmでの開発に慣れている方にはpipenvでpythonのプロジェクトを作るのは非常にオススメです。
pipenvでのプロジェクトを始めたいときは

```bash
pipenv install
```
でPipfile内にあるpackageがインストールされます。（npm installと同じですね）  

以下に実際にやってみたものがあるので、すぐにjupyter notebookを使い始めたい方にどうぞ 
https://github.com/YuanzhongLi/python_environment
FirebaseにAndroidアプリを追加

### アプリケーション登録

<img width="627" alt="スクリーンショット 2019-04-27 15.10.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260353/bb09b88e-8e64-d94e-2c01-8577f9c1d3be.png">

<b>Android パッケージ名</b>
Android Studioで作ったパッケージ名をそのまま入れる

<b>アプリのニックネーム</b>
これは任意

<b>デバッグ用の署名証明書 SHA-1</b>
[こちら](https://qiita.com/Dreamwalker/items/5888bfac4bfa65d3d68e)が参考になりますが、Android Studioが最新である場合は、このようになります
<img width="407" alt="スクリーンショット 2019-04-27 15.20.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260353/f3907620-f629-0f46-281f-c7d06685c0ff.png">

こちらの`signingReport`をタップすると、このように`SHA-1`が表示されるので、その内容をコピー
<img width="115" alt="スクリーンショット 2019-04-27 15.23.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260353/d3113e58-d54b-9c9e-2afd-9b398c83b624.png">


これらを済ませて`アプリを登録`

### 設定ファイルのダウンロード
手順の通り `app`配下であることに注意

### Firebase SDKの追加
手順の通り app/gradle と gradleを間違えないように

### アプリを実行してインストールを確認
終わらないときもありましたが、何回かやり直してどうにか疎通確認できました
k8sでpythonのapiサーバをはいしんする。


今回はpythonのバックエンドにuwsgiとnginxを1つのコンテナ内に収めた。
php-fpmとhttpdを1つのコンテナに同居させてしまう感じ。
プロセスが2つになるのでちょっといまいち。でもuwsgiにhttpを話させるわけにはいかない。

こんな感じのファイル配置。フレームワークにFlaskを使ったよ。pythonはapp/main.pyを最初に読み込む。

```
❯ tree .
.
├── app
│   ├── config.py
│   ├── dapps.py
│   ├── main.py
├── app.config.yaml
├── config
│   ├── dev.app.config.yaml
│   └── prod.app.config.yaml
├── Dockerfile.dev
├── Dockerfile.prod
├── k8s.gascenter-web-backend-dapps.prod.yaml
├── Pipfile
├── Pipfile.lock
├── uwsgi.dev.ini
└── uwsgi.prod.ini

```


# 1. Dockerfile

tiangolo/uwsgi-nginx-flaskを利用した。

```
# dappsのbackend(api)コンテナ
FROM tiangolo/uwsgi-nginx-flask:python3.7

RUN pip install pipenv

ENV UWSGI_CHEAPER 4
ENV UWSGI_PROCESSES 64
ENV NGINX_MAX_UPLOAD 1m
ENV LISTEN_PORT 3030
EXPOSE 3030
ENV NGINX_WORKER_PROCESSES auto
ENV UWSGI_INI /uwsgi.prod.ini

COPY ./ /
RUN pipenv install --system
COPY config/prod.app.config.yaml ../app.config.yaml
```

# 2. k8s yaml

80で受けてコンテナの3030に流す。

```yaml

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: gascenter-web-backend-dapps
spec:
  replicas: 2
  selector:
    matchLabels:
      app: gascenter-web-backend-dapps
  template:
    metadata:
      labels:
        app: gascenter-web-backend-dapps
    spec:
      containers:
      - args:
        image: 026695289470.dkr.ecr.ap-northeast-1.amazonaws.com/gascenter-web-backend-dapps:latest
        imagePullPolicy: Always
        name: gascenter-web-backend-dapps
        ports:
        - containerPort: 3030
          protocol: TCP
      imagePullSecrets:
        - name: awsecs
---
kind: Service
apiVersion: v1
metadata:
  name: gascenter-web-backend-dapps-svc
spec:
  # externalTrafficPolicy: Local
  type: NodePort
  ports:
  - name: "http-port"
    protocol: TCP
    port: 80
    targetPort: 3030
  selector:
    app: gascenter-web-backend-dapps
```

今回はURIのpathでサーバを振り分けたため、Ingress(ALB)設定で配信先サーバを振り分ける。

```yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gascenter-web-backend-app
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    # alb.ingress.kubernetes.io/subnets: subnet-000000,subnet-111111,subnet-22222
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-1:026695289470:certificate/65a878de-ed52-4415-a69e-c0fcf9aeca7a
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
spec:
  rules:
    - host: api.coinpedia.cc
      http:
        paths:
          - path: /api/v1/gas
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /api/v1/gas*
            backend:
              serviceName: gascenter-web-backend-gas-svc
              servicePort: 80
          - path: /api/v1/dapps
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /api/v1/dapps*
            backend:
              serviceName: gascenter-web-backend-dapps-svc
              servicePort: 80
```
【Unity】UniRx入門リンク集

# はじめに
この記事は、UniRxに関する知識がゼロの状態から、UniRxを大まかに理解できるようになるまでに私が勉強に使用したサイトのリンク集です。

## 概要を掴む
- [【Unity】UniRxをお勧めしたい](https://www.nicovideo.jp/watch/sm34345310)
- [【Unity】UniRxで快適プログラミング！](https://www.nicovideo.jp/watch/sm34377074)

UniRxを使うとどんなメリットが得られるのかが短い動画内にまとめられています。

- [Unityで斑鳩ぽいゲーム作ってチュートリアルの先へ進もう Part8](https://www.nicovideo.jp/watch/sm34823114)

UniRxの概要について30分程度の動画にがっつりとまとめられています。
また、この方の[Unity講座](https://www.nicovideo.jp/mylist/63813067)シリーズはとてもおすすめです。

## UniRxに慣れる
- [UniRxのシンプルなサンプルの取り扱い説明書](https://qiita.com/Marimoiro/items/b0c66c6c22cf58bde049)
- [UniRx入門　~ データバインディングとUnityイベント関数の購読 ~](https://qiita.com/su10/items/6d7fd792d4b553454a4f)

豊富なサンプルに触れて、UniRxに慣れることができます。

## 詳細を学ぶ

- [UniRx入門シリーズ 目次](https://qiita.com/toRisouP/items/00b8a5bb8e7b68e0686c)
- [未来のプログラミング技術をUnityで -UniRx-](https://www.slideshare.net/torisoup/unity-unirx)
- [はじめてのUniRx](https://www.slideshare.net/torisoup/uni-rx)
- [こわくないReactive Extensions超入門](https://qiita.com/acple@github/items/6cfee916f09632037a6e)
- [Reactive Extensions入門「まとめ」](https://blog.okazuki.jp/entry/20101002/1286011016)
- [Rx入門](https://blog.xin9le.net/entry/rx-intro)
- [Reactive Extensions再入門](http://d.hatena.ne.jp/okazuki/20111031/1320072227)
- [Reactive Extensions入門](https://www.slideshare.net/okazuki0130/reactive-extensionsv01)

## サンプル

- [【Unityでも】UniRxを使ってみた。マウスクリックの回数を数える【リアクティブプログラミング】](https://qiita.com/RyotaMurohoshi/items/7e1509e03d8e3a1eae4f)
- [【OnClickAsObservable】UniRxでボタンのクリック回数をテキストに表示する【SubscribeToText】](https://qiita.com/RyotaMurohoshi/items/01df35f1940e93fbb10d)
- [UniRxことはじめ](https://www.slideshare.net/shoichiyasui7/unirx-79382950)

## 公式
- [UniRx](https://github.com/neuecc/UniRx)
- [Reactive Programming by UniRx for Asynchronous & Event Processing](https://www.slideshare.net/neuecc/reactive-programming-by-unirxfor-asynchronous-event-processing)
#AWS のアカウントを作成したのにログインできない。パスワード再発行も出来ない場合。

# URL

https://console.aws.amazon.com/console/home

![image](https://user-images.githubusercontent.com/13635059/57420696-ab127680-7243-11e9-81ce-4ca394905173.png)

# ログイン画面

- ここでアカウントに適当な文字列を入力すると、加えて「ユーザー名」と「パスワード」を入力するモードになってしまうらしい。
- ブラウザが色々と覚えていたせいか、この状態がデフォルトになってしまっていた。

![image](https://user-images.githubusercontent.com/13635059/57420586-2a537a80-7243-11e9-9bcc-b1b3bf39b9c6.png)



# 「ルートアカウント認証情報を使用してサインイン」 を選んで画面を戻る

ここでEmailアドレスを入力するとルートユーザーとしてのログインモードに進み「パスワードをお忘れですか？」も表示されるっぽい。

![image](https://user-images.githubusercontent.com/13635059/57420614-46efb280-7243-11e9-90fd-b9c9b97b438f.png)

# 無事ログインできました。

![image](https://user-images.githubusercontent.com/13635059/57420713-c1b8cd80-7243-11e9-84f1-971f90dc5e9a.png)

![image](https://user-images.githubusercontent.com/13635059/57420714-c2e9fa80-7243-11e9-949b-b9a225577260.png)


# Original by Github issue

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








<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
SKPhysicsContactDelegateについて

#SKPhysicsContactDelegate
Methods your app can implement to respond when physics bodies come into contact.//物理学団体が連絡を取ったときに対応するためにアプリが実装できるメソッド

##宣言
```swift
protocol SKPhysicsContactDelegate
```
##概要
SKPhysicsContactDelegateプロトコルを実装するオブジェクトは、重複するcontactTestBitMask値を持つ2つの物理体が物理学の世界で互いに接触しているときに応答できます。連絡先メッセージを受信するには、SKPhysicsWorldオブジェクトのcontactDelegateプロパティを設定します。連絡先の開始時または終了時にデリゲートが呼び出されます。

**・重要**
物理学コンタクトデリゲートメソッドは、物理学シミュレーションステップ中に呼び出されます。その間、物理学の世界は変更できず、シミュレーションにおける物理学的本体への変更の振る舞いは未定義です。このような変更を加える必要がある場合は、didBegin（_ :)またはdidEnd（_ :)内にフラグを設定し、SKSceneDelegateのupdate（_：for :)メソッドでそのフラグに応じて変更を加えます。

連絡先イベントが発生したときに、連絡先デリゲートを使用して、サウンドを再生したり、プレーヤーのスコアを上げるなどのゲームロジックを実行したりできます。次のコードは、ballという名前の2つのノードが接触したときに衝撃波効果を表示する方法を示しています。このコードは、衝突のインパルスが指定されたしきい値を超える場合にのみ効果を生み出します。

```swift

let shockWaveAction: SKAction = {
    let growAndFadeAction = SKAction.group([SKAction.scale(to: 50, duration: 0.5),
                                            SKAction.fadeOut(withDuration: 0.5)])
    
    let sequence = SKAction.sequence([growAndFadeAction,
                                      SKAction.removeFromParent()])
    
    return sequence
   }()

 func didBegin(_ contact: SKPhysicsContact) {
    if contact.collisionImpulse > 5 &&
        contact.bodyA.node?.name == "ball" &&
        contact.bodyB.node?.name == "ball" {
        
        let shockwave = SKShapeNode(circleOfRadius: 1)

        shockwave.position = contact.contactPoint
        scene.addChild(shockwave)
        
        shockwave.run(shockWaveAction)
    }
}
```
##Responding to Contact Events
```swift
func didBegin(SKPhysicsContact)
```
**2つのボディが最初に互いに接触したときに呼び出されます。**
contactパラメータに記述されている2つの物理体は、保証された順序で渡されません。 次のコードは、いずれかの物理学本体がgroundという名前のノードによって所有されている場合に、contactイベントの開始に応答してコードを実行する方法を示しています。

```swift
func didBegin(_ contact: SKPhysicsContact) {
    if contact.bodyA.node?.name == "ground" || contact.bodyB.node?.name == "ground" {
        // execute code to respond to object hitting ground
    }
}
```
---

```swift
func didEnd(SKPhysicsContact)
```
**2つの物理体の間で接触が終了したときに呼び出されます。**
contactパラメータに記述されている2つの物理体は、保証された順序で渡されません。 次のコードは、いずれかの物理学本体がgroundという名前のノードによって所有されている場合に、contactイベントの終了に応答してコードを実行する方法を示しています。

```swift
func didEnd(_ contact: SKPhysicsContact){
    if contact.bodyA.node?.name == "ground" || contact.bodyB.node?.name == "ground" {
        // execute code to respond to object hitting ground
    }
}
```
Ansibleでios-xrを書く時に知っておくといいこと

# 前提条件
ciscoのios-xrに対してAnsibleで自動化する時に
階層構造に悩まれるエンジニアへの記事です。

# ios-xrについて
ios-xrはJunosみたいな表示をすることが出来ます。
show run formatをうってみてください。
すると以下のように表示されると思います。
一部抜粋
interface GigabitEthernet0/1/0/27
interface GigabitEthernet0/1/0/27 shutdown
interface GigabitEthernet0/1/0/28
interface GigabitEthernet0/1/0/28 shutdown
interface GigabitEthernet0/1/0/29
interface GigabitEthernet0/1/0/29 shutdown
interface GigabitEthernet0/1/0/30 description test interface
interface GigabitEthernet0/1/0/30
interface GigabitEthernet0/1/0/30 ipv4 address 192.168.0.1 255.255.255.0
interface GigabitEthernet0/1/0/31

このようなコマンドでもconfigを入力することが出来ます。
つまり改装構造を気にしなくてもいいということですね。

# Ansible-playbook
実際に簡単な物を作成すると以下のようなものが作れます。
以下はvrf書くとに使ったAnsibleです。

```
- hosts: ios show version
  gather_facts: no
  connection: local

  tasks:
      - name: configure
        iosxr_config:
         lines:
           - vrf SHIMA
           - vrf SHIMA address-family ipv4 unicast
           - vrf SHIMA address-family ipv4 unicast import route-target
           - vrf SHIMA address-family ipv4 unicast import route-target 9598:1
           - vrf SHIMA address-family ipv4 unicast export route-target
           - vrf SHIMA address-family ipv4 unicast export route-target 9598:1
```

# 最後に
ios-xrに新たな知見あればTwitter→@katu7414まで
numpy.arrayの共通集合の抽出で注意すること

# はじめに
numpyは配列演算を高速に行うことができるpythonのライブラリです。

```python
import numpy as np
```
通常は上のようにimportし、npと略記してスクリプト内で呼び出します。
np.arrayをうまく使えると、シンプルで速いスクリプトを書けるため、積み重ねていくと良いと思います。

# np.intersect1d
今回のメインは、複数の集合の共通部分の抽出です。各集合は、np.array型の一次元の配列で表してあるものとします。

最も単純には、以下のような挙動をします。

```py
array_1 = np.array([1, 2, 3, 4, 5])
array_2 = np.array([1, 3, 5, 7, 9])

In:  np.intersect1d(array_1, array_2)
Out: array([1, 3, 5])
```

3つ以上の配列を引数にそのまま渡すことはできません。以下のようにfunctools.reduceを活用します。

```py
In:  reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
Out: array([3])
```


注意が必要なのは、intersect'1d'である点です。2次の配列を渡すと、以下のように一次元配列に勝手に直した後で、共通部分を返します。

```py
array_2d_1 = np.array([[1, 'b'], [3, 'b'], [4, 'a']])
array_2d_2 = np.array([[2, 'b'], [3, 'c'], [4, 'a']])

In:  np.intersect1d(array_2d_1, array_2d_2)
Out: 〇 array(['3', '4', 'a', 'b'], dtype='<U21')
     ×  array([[4,'a']], dtype='<U21')
```

# おまけ
2次以上の配列の共通部分を求める方法としては、
`一度各行の要素を一つのセットオブジェクトに変換してnp.intersect1d()を用いる`
があります。
こちらを参考にしてください。（https://stackoverflow.com/questions/8317022/get-intersecting-rows-across-two-2d-numpy-arrays）

# 参考リンク
[numpy全般](https://to-kei.net/python/data-analysis/what-is-numpy/)
Windows で時刻同期の参照先を ntp.nict.jp に変更する

以下のテキストファイルを unicode 以外の文字コードで作成してダブルクリックで、実現可能となる。

```text:DateTime.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"
"1"="ntp.nict.jp"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"
"1"="ntp.nict.jp"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152444/56873779-5130-48a6-24bf-383e56bfe58c.png)

```text:SpecialPollInterval.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
"SpecialPollTimeRemaining"=hex(7):74,00,69,00,6d,00,65,00,2e,00,77,00,69,00,6e,\
  00,64,00,6f,00,77,00,73,00,2e,00,63,00,6f,00,6d,00,2c,00,37,00,64,00,64,00,\
  36,00,35,00,66,00,62,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152444/e0db822a-0203-8763-5b96-47af7774600e.png)

```text:NtpServer.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"NtpServer"="ntp.nict.jp,0x9"
"ServiceDll"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,\
  00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
  77,00,33,00,32,00,74,00,69,00,6d,00,65,00,2e,00,64,00,6c,00,6c,00,00,00
"ServiceDllUnloadOnStop"=dword:00000001
"ServiceMain"="SvchostEntry_W32Time"
"Type"="NTP"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152444/ac1ec1fe-43ed-429b-cfb1-a91dcd718766.png)
pandocで2カラムのpptxファイルを表示する

# pandocで2カラムのpptxファイルを表示する

## pandocでpptxファイルを出力する方法

こちらの記事を参考にしました。

https://qiita.com/cheuora/items/cdd902bacb2669fe61d0

## 画像が1ページに1枚

画像が1ページにつき1枚しか入らない。しかもそれ以外の文字とかをいれることもできない。なんとかしたい。

## テンプレートファイルを見る

2カラムのレイアウトがあるので、左になんかかいて、右に図を置くこともできるかもしれないと思った。

## 検索

検索すると、RMarkdownのリファレンスページが見つかった。

https://bookdown.org/yihui/rmarkdown/powerpoint-presentation.html

RMarkdownはRで実行できるマークダウン変換の環境みたいな感じだった。RMarkdownの内部ではpandocが動いているみたいなことが書いてあったので、この通りに書いたら上手くいった。

## 結論

`````` md 
---
title: タイトルスライド
author: uwaai
date: 2019年5月9日
---

# セクション１

## 1カラムのスライド

ひとつコンテンツが

## 2カラムのスライド

:::::: {.columns}
::: {.column width="40%"}
ふたつ
:::
::: {.column width="60%"}
![図も入る](./img/fig5.png)
:::
::::::
``````

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/365595/d44bc296-ab29-9734-6296-e83ab4f78b08.png)
AsyncStorageはもういらない！react-native-storageを使ってみた！

　![alt](https://user-images.githubusercontent.com/26253721/39765058-e8d0eae4-531b-11e8-9305-4c852f269517.png)

###react-nativeのデータベースには、三つの選択肢がある。
1. AsyncStorage
2. react-native-storage
3. realm

1のAsyncStorageは、react-native標準のデータベースだが、文字列しか保存出来ない！！！
なんと、Integer,Boolean,Arrayなどを保存するにはラッパーを書く必要がある。

3のrealmは、クエリを投げれて、一番複雑なことが出来るが、react-native-linkが必要になる。
出来ればnativeコードを使いたくないので、これも除外

２のreact-native-storageは、AsyncStorageの薄いラッパーで、わずか350行で書かれている。
しかし、AsyncStorageよりはるかに使いやすい

そこで、私はreact-native-storageを使うことにした。

## 使い方

まず、

```bash
yarn add react-native-storage
```

### 次にstorageを作成する。

```js
import Storage from 'react-native-storage';
import AsyncStorage from '@react-native-community/async-storage';

const storage = new Storage({
  storageBackend: AsyncStorage
})
```

###セーブ
keyと、dataを指定するだけ。objectとか、arrayをそのまま突っ込めるのが素晴らしい。

```js
storage.save({
  key: 'someKey',
  data: {
    name: 'kabaya',
    age: 25,
    hasGirlFriend: false,
    array: [1,2,3],
    object: {foo: 'foo'}
  }
})
```
### ロード
データのロードは一行で済む。keyを指定すると、objectが帰ってくる。

```js
storage
  .load({key: 'someKey'})
  .then(res => console.log(res))
  .catch(err => console.warn(err))
```

## 結論
react-native-storageは、react-nativeのデータベースのデファクトスタンダード、
内部では、indexも貼っていてくれて、生でAsyncStorageを使うより、高速で、扱いやすい。
ぜひお試しあれ！
機能試験の記事拝見記録 Qiita(3)

表題のない記事に遭遇した。
https://qiita.com/acid_chicken/items/1a2b789ffb4b5b39918a

@acid_chicken さんの記事一覧で、表題のない記事のコメント数がついていた。コメント数字をクリックすると記事の画面になった。

表題も本文も空白で読めない。

コメントのなかに、
@PINTO
>PCで右上の目次を読みましたか？

というのではっと気がつきました。
たしかに目次はある。ということは、なんらかのコードを打っているはず。

編集リクエストボタンを押してタグ構成などを拝見。

類似のシステムを作成した時の試験データとして引用させてください。

```markdown
<!--

# 概要

###### どうも Qiita の目次機能にはバグがあるらしいというだけの記事。とても簡潔に説明すると、本来の仕様ではこのような Markdown 内でコメントアウトされた文章は見えないように実装しなければいけない。しかし、現に右サイドの目次から見えてしまっている。ソース等を読んでいないのでなんとも言えないが、おそらく目次機能の実装において、文頭のシャープのみを判定に利用しているのではないのだろうか。

なお一応目次でしかないので、このように通常の文章は目次には表示されません。
ちなみにQiitaのMarkdownチートシートはこちら <https://qiita.com/Qiita/items/c686397e4a0f4f11683d>

<h2>追記</h2>

<h6>こんなクソ記事が予想以上に伸びてしまっていて正直驚きを隠せません。追記として HTML タグでも同様の現象は発生するのかをちょっと試してみようと思います。もしこの文章も目次に乗っていたら HTML タグにおいても誤判定が起きていると言えますね。</h6>

# 結論
###### Qiita さん、お時間ありましたらご修正頂けるとありがたいです。


-->
```

## 本文
なるほど。本文が読めない記事は、目次の ~~使用~~ 仕様について言及したかったからと理解。

## コメント

コメントも、空白になるようにされている方がおみえになる。

## 標題

個人的には、標題(title)が読めない記事は勘弁してほしい。

ついでにQiitaで、標題が読めない記事をはじくようにしてもらえるとありがたいかも。

# まとめ

この記事への賛否があるかもしれません。

この記事は試験データとして有用です。

現状の理解のために掲載させていただきました。

p.s. 
標題のない記事で迷路に入らないためにも。

# 推測

処理の順番の課題かも。

C言語系では、コメント処理は、他の処理より先にする。
いいかげんと言われているC言語でも、コンパイルの際の処理段階の順番などについて規定がいろいろある。

html, markdownでの常識を知らない。あちこちで試験してみよう。

# 参考資料(reference)

GCC コメント除去、単語計算
https://qiita.com/kaizen_nagoya/items/3248e445754dc8b0b21c

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.

# 文書処理(document history)
ver. 0.01 初稿　20190509 午前
ver. 0.02 推測、参考資料追記 20190509 昼
ver. 0.03 誤記修正、補足追記 20190509 午後
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
Windows のデスクトップにビルド番号を表示させるレジストリ

以下のテキストファイルを unicode 以外の文字コードで作成してダブルクリックで、実現可能となる。

```text:PaintDesktopVersion.reg
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
"PaintDesktopVersion"=dword:00000001
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152444/6b4b6b31-93fb-aad7-ec9f-1a9481d0f78c.png)