OmniAICreator/Qiita-1.07M huggingface dataset:
wordpressで作成したHPのテーブル内の改行をきれいにする方法

#解決したい課題
以下のように表示されており､汚い｡
>・仕事の範囲が不明確な場合や変更が多く発生しても周囲と良好な
コミュニケーションを取れる

以下のように､改行された先頭文字は"・"の一文字を開けて(字下げして)表示されてほしい｡かつ､固定ではなくてサイズによって可変にしたい｡
>・仕事の範囲が不明確な場合や変更が多く発生しても周囲と良好な
　コミュニケーションを取れる

#結論
"・"はちょっと太くなっちゃいますが､`<ul>`タグを使用すれば良い｡
><ul><li>仕事の範囲が不明確な場合や変更が多く発生しても周囲と良好なコミュニケーションを取れる</ul>


#悩み抜いた過程
####どのファイルを編集するの？
そもそも､wordpressのcssは複数箇所に分かれているため初心者は迷う｡｡｡
wordpressでのhtmlとcssの関係､どこを編集すればよいのかは[こちら](https://qiita.com/higurit/items/988251336e3f49a93bdf "wordpressでのhtmlとcssの関係_どこを編集すればいいの？")

####そのファイルのどこをどう編集するの？
ここが今回の難関｡
テーブル内であることを無視すれば､以下のような方法で解決可能｡
・【CSS】2行目以降を1文字下げる［text-indent］の使い方。
https://on-ze.com/archives/323

・【css】文章中に改行がある時に、行頭を揃える小ワザ
https://nodoame.net/archives/1888

→ただ､これだと2行目移行がすべて1文字下がっちゃうんです､､､｡今回は2行目だけ("・"から続く文章だけ)下げたいんです｡｡｡

テーブルの中身じゃなければそれぞれ`<p>`タグで囲ってやったりすればいいのですが､今回はテーブルの中身なんですよ｡｡｡
やってる人全然いなくて困りました｡

###発想を変えてみる
ここまでは､"2行目をどうずらすか？"という発想で調査していた｡
発想を変えて､"どうきれいに箇条書するか？"と考えてみた｡

すると､､､`<ul>`タグと`<li>`タグで表記しちゃえばテーブルの中だろうときれいに表示されてくれるのでは？
と気づく｡
````
<p class="s_title">経験・スキル</p>
<table>
<tbody>
<tr><th>求めるスキル</th><td class="txt" data-label="内容">
<ul>
<li>コミュニケーション能力
<li>事務処理能力
</ul>
【歓迎スキル】
<ul>
<li>秘書経験
<li>秘書検定取得
</ul>
</td></tr>
<tr><th>求める人物像</th><td class="txt" data-label="内容">
<ul>
<li>仕事の範囲が不明確な場合や変更が多く発生しても周囲と良好なコミュニケーションを取れる
~以下略~
````

#小言
そもそも"・"を直打ちするのがちょっとナンセンスなのかも｡
`<ul>`と`<li>`を使いましょう｡
Chromeをbatで起動しサイトの並び替えを行う方法

chromeに起動時に表示するサイトの設定はありますが、並び替えができずに困る経験をしたことはありませんか？

開くサイトが多すぎるは場合は、並び替えるとなると削除して追加しなおさなければならずとても面倒です

そんな時にbatを使って簡単に並び替えるようにしたので参考にして頂ければと思います。
(プログラミングの知識がなくてもコピペで簡単に導入できると思います)

###ファイルを作成
下記の作業フォルダーを作成し「chromeListOpen.txt」「chromeListOpen.bat」を作成します

```
C:\work\chromeOpen
chromeListOpen.bat
chromeListOpen.txt
```

###開きたいサイトを「chromeListOpen.txt」に記載

```text:chromeListOpen.txt
https://www.google.com/?hl=ja
https://www.yahoo.co.jp/
https://www.nikkei.com/
```

###「chromeListOpen.bat」に下記の処理を追加
マウス右クリックで編集をクリックするとメモ帳で開くのでコピペします。
「chromeListOpen.txt」と「chrome.exe」の場所が違う場合は変更してください。
(同じ場合は修正の必要はないです)

```bat:chromeListOpen.bat
for /f %%a in (C:\work\chromeOpen\chromeListOpen.txt) do (
  start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" --profile-directory="Default" %%a
  timeout 1 /nobreak >nul
)
exit
```

これで、「chromeListOpen.bat」を起動するとテキストの順番でサイトが開きます。
順番を変えたい場合は「chromeListOpen.txt」を並び替えればオッケーです

役に立ったと思ったら「LGTM」お願いします
wordpressでのhtmlとcssの関係_どこを編集すればいいの？

#解決したい課題
wordpressのhtmlとcssを修正したいが､どこを編集すればいいのかわからなかった｡複数箇所に分かれているため初心者は迷う｡｡｡


#結論
各投稿のcssはstyle.cssをincludeしているはずで､以下のページを編集する｡(includeしてない場合はどうするんだろう？)
外観>テーマエディタ
これで､Stylesheet(style.css)の編集画面にたどり着く

固定ページのcssは､各ページごとにカスタムCSSが設定されているため､固定ページ下部の"カスタムCSS"欄を編集する｡
IntelliJ IDEA 便利設定

# はじめに
`IntelliJ IDEA CE` を利用する機会がありましたので、チューニングや便利な設定を備忘として残しておきます。


# 前提環境
- IntelliJ IDEA CE 2020.2（[Japanese Language Pack EAP](https://plugins.jetbrains.com/plugin/13964-japanese-language-pack-eap) 導入）
- Apple Mac Book Pro

# IntelliJ IDEA CE チューニング

## メモリ設定変更
１．「ヘルプ＞カスタムVMオプションの編集」を選択する

２．メモリ設定に以下を追記する ※利用する端末のスペックにより細かな変更をしてください
```
-Xms2G
-Xmx4G
-XX:+UseG1GC
-XX:-UseParNewGC
-XX:-UseConcMarkSweepGC
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops
-XX:+OmitStackTraceInFastThrow
-Dsun.io.useCanonCaches=false
```

３．保存し `IntelliJ IDEA CE` を再起動する


## 手動でのメモリ解放(ガベージコレクション実施)
１．「表示＞外観＞ステータスバーウィジェット＞メモリインジケータ」を選択する
２．`IntelliJ IDEA CE` の画面右下にメモリインジケータが表示される
３．メモリインジケータをクリックするとメモリ解放が実施される


# IntelliJ IDEA CE 便利プラグインの紹介
`IntelliJ IDEA Ultimate` には標準搭載されている便利機能の代替プラグインの紹介です

## [Docker Pugin](https://plugins.jetbrains.com/plugin/7724-docker)
Docker操作が `IntelliJ IDEA CE` から実施できるようになります

## [Database Navigator](https://plugins.jetbrains.com/plugin/1800-database-navigator)
`IntelliJ IDEA UltimateのDataGrip` の代替プラグイン。DB操作が `IntelliJ IDEA CE` から実施できるようになります
djangoのインストール場所

djangoで開発してるけど、djangoそのものはどこにインストールされてるの？
と思ったので、調べてみました。

## djangoの場所
pythonの対話モードで確認できます。

```python
>>> import django
>>> django
<module 'django' from '/home/sampleuser/application/venv/lib/python3.7/site-packages/django/__init__.py'>
```

下記ディレクトリにインストールされてる事が確認できます。
`/home/sampleuser/application/venv/lib/python3.7/site-packages/django/`

## 参考URL
https://stackoverflow.com/questions/7037468/where-is-my-django-installation
OpenChain: spec v2.1 の紹介 第5回 / Commentary of spec v2.1 vol.5, §3.4

## OpenChain Spec v2.1 第3.4章  

本日は、OpenChain v2.1の中身の紹介 第5弾 (3.4章) です。
3.4章には、実際に提供するソフトウェアに含まれるOSSのライセンス条件を遵守するために、どのような資料を作成、ユーザに渡す必要があるか、について記載されています。

確認すべき項目が2つ定義されており、OSSを含むソフトウエアを頒布する場合、ライセンスで定義された提供すべき資料一式を作成、適切なかたちで頒布するための**社内プロセスを整備する必要があること**。また、その資料一式を**然るべき期間、保管しておくこと**です。
これら資料について、重要になってくるのは**SBOM**(Software Bill of Materials)です。SBOMのフォーマットがバラバラだと部署間、会社間での情報共有が煩雑になります。

Japan WGでは、SBOMについての理解を深めたり、使いやすくするための提案をするLicense Info SGが活動しています。明日はサブグループのリーダー、伊藤さんから、License Info SGの紹介をしていただきます。

## OpenChain Spec v2.1 §3.4

Today is the 5th part (Clause 3.4), introducing the contents of OpenChain v2.1.
Chapter 3.4 describes what documentation you need to create and provide to users in order to comply with the OSS licensing terms contained in the actual software you provide.

2 items to be checked are defined.
When distributing software including OSS, **internal processes should be developed** to create and appropriately distribute a set of materials to be provided as defined in the license. And **keep the set of materials for a reasonable period of time**.
For these documents, **SBOM**(Software Bill of Materials) is very important. Different SBOM formats complicate information sharing between departments and companies.

In the Japan WG, the License Info SG is working to deepen understanding of SBOM and to make it easier to use. Ito-san as a leader of this subgroup will introduce our activities of License Info SG tomorrow.
Stay tuned!
rmでフォルダ全削除する時、yes/noを全部yesで答えて一発で消す

# gitレポジトリをrmで削除する際、やたらyes/noを聞かれる
コマンドライン からフォルダを削除する際、大量のファイルにyes/noを聞かれることがある。

```
rm -r {folder_name}
```

```
override r--r--r--  user01/CATK\Domain Users for folder/.git/path/to/hashxxxxxxxxxxx? 
override r--r--r--  user01/CATK\Domain Users for folder/.git/path/to/hashyyyyyyyyyyy? 
override r--r--r--  user01/CATK\Domain Users for folder/.git/path/to/hashzzzzzzzzzzz? 
```
とにかく消したいので、全部yesで答えて欲しい。

# 使用するコマンドの答え
```
yes | rm -r {folder_name}
```
yesコマンドをパイプで渡すのがポイント。

# コマンド解説
## yesコマンドとは
実際にコマンドライン で打ってみれば分かるが、無限に`y`を出力するコマンドである。

```
$yes
y
y
y
y
y
y
y
```
### 任意の文字列を出すことも出来る
yesの後に任意の文字列を渡せば、y同様任意の文字列を無限に出すことが出来る。

```
$yes hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
```

## yesを使って自動的にyes / noを答える
yesをパイプで後続のコマンドに渡すことで、後続のコマンドの出力結果(今回で言えばyes / noを聞かれるファイル数)がいくつであれ、全てyesで答えることができる。

```
yes | {command}
```
従って

```
yes | rm -r {folder_name}
```
とすることで、`rm `コマンドを実行した結果聞かれるyes / noに全てyesで答えられる。
OpenCV 4.5.0をCMakeでVS2019用にビルドする

[Installation in Windows](https://docs.opencv.org/master/d3/d52/tutorial_windows_install.html)に記載の　やり方からVS2019用に変えるには
```
CMAKE_CONFIG_GENERATOR="Visual Studio 14 2015 Win64"
```
を
```
CMAKE_CONFIG_GENERATOR="Visual Studio 16 2019"
```
にして
```
cmake -G"$CMAKE_CONFIG_GENERATOR" 
```
を
```
cmake -G"$CMAKE_CONFIG_GENERATOR" -A x64
```
とする。

あとは[Installation in Windows](https://docs.opencv.org/master/d3/d52/tutorial_windows_install.html)に記載の通りでビルド可。
PHPで非公開のプロパティを外部から参照・設定する方法


次のような非公開なプロパティを外部から参照する方法について、一般的な方法から特殊な方法まであれやこれやと記載していきます。

```php5
class App
{
    private $hoge = 'ほげほげ';
}
```

## getter/setterを経由する
通常はgetter/setterを経由して非公開のプロパティを取得/設定します。
```php5
class App
{
    private $hoge = 'ほげほげ';
    public function getHoge()
    {
        return $this->hoge;
    }
    public function setHoge($hoge)
    {
        $this->hoge = $hoge;
    }
}

$app = new App();
$app->setHoge('ふがふが');
$value = $app->getHoge();
var_dump($value);
//# string(12) "ふがふが"

```

## マジックメソッドを利用する
マジックメソッドの`__get`、`__set`、`__call`を利用して非公開のプロパティやメソッドを無理やり参照可能にできます。
以下の例ではプロパティの存在確認なども端折っていますが、traitを切っておけば他のクラスにも流用可能になります。

https://www.php.net/manual/ja/language.oop5.magic.php

https://www.php.net/manual/ja/language.oop5.traits.php

```php5
trait Xref {
    public function __get($name)
    {
        return $this->$name;  
    }
    public function __set($name, $value)
    {
        $this->$name = $value;  
    }
    public function __call($name, $argments)
    {
        return $this->$name(...$argments);
    }
}

class App
{
    use Xref;
    private $hoge = 'ほげほげ';
    private function foo() { echo "$this->hoge:「ホゲホゲ」"; }
}

$app = new App();
$app->hoge = 'ふがふが';
$value = $app->hoge;
var_dump($value);
//# string(12) "ふがふが"
$app->foo();
//# ふがふが:「ホゲホゲ」
```


## リフレクションクラスを利用する
PHPにはReflectionClassが用意されています。
`$p->setAccessible(true)`とすることでアクセサの制約を無視して外部からプロパティ値の取得や設定が可能になります。

https://www.php.net/manual/ja/class.reflectionclass.php

```php5
class App
{
    private $hoge = 'ほげほげ';
}

function getPropertyValue($object, $propetyName)
{
    $ref = new ReflectionClass(get_class($object));
    $p = $ref->getProperty($propetyName);
    $p->setAccessible(true);

    return $p->getValue($object);
}

$app = new App();
$value = getPropertyValue($app, 'hoge');
var_dump($value);
//# string(12) "ほげほげ"
```

## その他
serialize()を利用すればもっと黒魔術ができるのかも知れない。

https://www.php.net/manual/ja/function.serialize.php

https://stackoverflow.com/questions/2226103/how-to-cast-objects-in-php
Tera Termを安全に使うオススメ設定３選

#本番作業は危険がいっぱい#
BFT名古屋支店 インフラエンジニアの山口です。

エンジニアの方が日常的に利用されるターミナルエミュレータ**「Tera Term」**
よくつなぐサーバであればマクロを作っておくのが便利ですが、
単発でつなぐ場合に事前にやっておくと作業の安全性や信頼性が高まる設定があるので
私のオススメを紹介したいと思います。

#Tera Termの設定を変更しよう#
##その１．右クリックでの貼り付けを禁止##
Tera Termって文字列を選択してコピー、右クリックで貼り付けができるのがとても便利です。
が、間違えて張り付けて想定外のコマンドを実行してしまった、なんて話はよく聞きます。
再鑑している人のクシャミで作業者が右クリック押しちゃったとか…（涙）

設定はTera Termを起動して、[設定]-[その他の設定]から行います。
<img width="400" alt="TeraTerm設定_1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/042abaaa-5a91-a6d0-d4e3-f9e44343f615.png">

[コピーと貼り付け]タブの[右クリックでの貼り付けを無効にする]にチェックすると、
**「Alt + v」** または **「Shift + Insert」** で貼り付けます。
<img width="300" alt="右クリック貼り付け禁止_1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/627de55c-ec00-b3cd-9807-a80e7b9c6097.png">

[コピーと貼り付け]タブの[右クリックでの貼り付けを確認する]にチェックすると、
右クリックで貼り付ける前に確認が入るのでこちらでも構いません。
私はこちらが好きです。
<img width="300" alt="右クリック貼り付け禁止_2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/d7a682d8-9f0b-2ae7-3c47-32d615243c41.png">
チェックをしたら[OK]を押して設定を反映させましょう。

##その２．ログの自動取得##
事前に設定しておくことで、「うわぁぁぁぁ、ログ取るの忘れてたぁぁぁぁ！！！」という事態を防ぎます。

その１同様、[設定]-[その他の設定]から設定を変更します。
[ログ]タブの[標準ログファイル名(strftimeフォーマット可)]を変更し、
[自動的にログ採取を開始する]にチェックを入れます。

ファイル名はstrftimeフォーマットに従って好きなものを指定できますが、
年月日と時間、接続先ホスト名は必須ですね。ここでは以下のようにします。

**20201112(年月日)-150030(時間)-<ホスト名>.log**
<img width="350" alt="ログ自動取得" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/cd0432de-64d9-c5b3-5723-c4a9656ff651.png">
ファイル名を入れてチェックをしたら[OK]を押して設定を反映させましょう。

##その３．ウィンドウの色を接続先ごとに変える##
Tera Termの設定は、プログラムのインストールディレクトリにあるTERATERM.INIに保存されます。
そのため、接続先ごとにウィンドウの色を変えるためには、接続の度に手でやる必要があるので少し面倒です。
マクロを用意できる場合は、マクロで設定を変更したINIファイルを指定した方が楽なのでオススメです。

[設定]-[ウィンドウ]から設定を変更します。
<img width="400" alt="TeraTerm設定_2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/1b179045-aac5-0794-1e6d-803819a0c327.png">
[カラー]の[背景]ラジオボタンを選択し、赤・緑・青の色を調整します。
<img width="300" alt="背景色設定_1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/fd394e9b-c0e8-450f-8a6a-05d0f3f65af2.png">

上の図は、赤200, 緑50, 青100にしています。
赤50, 緑150, 青150、赤50, 緑100, 青200の例はこんな感じです。
<img width="300" alt="背景色設定_2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/635b878e-da1d-8f18-1d81-e3441a8d30d6.png">

通常は問題ないけど、リンクやエラーが見えにくいなど使っていくと出てくるので
いろんなコマンドの出力結果から見やすい色にしていくとよいと思います。

変更したら[OK]を押して設定を反映させましょう。
#Tera Termの設定をINIファイルに反映させよう#
上記の設定変更はこの接続のみのものですので、次立ち上げた時も同じ設定となるよう設定ファイル（TERATERM.INI）に反映させます。
[設定]-[設定の保存]を押し、Tera TermのインストールディレクトリにあるTERATERM.INIを上書き保存します。
<img width="300" alt="TeraTerm設定反映" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/6c76e812-4782-e243-6f6d-28e7b5f8f2df.png">
<img width="300" alt="TeraTerm設定上書き" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36592/cb215991-b18a-94da-9a77-47469fc936f9.png">

##まとめ##
エンジニアは準備８割と言われます。
何かあった時に素早く、効率的に、安全に作業ができるように
前もって設定を入れておきたいですね！
Unity 2D #3 androidにおけるjsonファイルの読み書き

androidではStreamReaderによるIOができません。そのため、unityのEditorとjsonファイルの読み方を変えなければなりません。

以前のUnity 2D #2で作成したCharacterTableのjsonファイルをandroidでも読み込めるようにします。

CharacterTableの概要

```
[System.Serializable]
public class CharacterTable{
    public List<CharacterIndividual> characters;
}

[System.Serializable]
public class CircleIndividual {
    [SerializeField] public int Id;
    [SerializeField] public string Name;
}
```

CharacterTableの読み込み

```
IEnumerator CharacterStatusSet()
{
CharacterTable gettwo;
string filePath = Application.streamingAssetsPath+"/Characters.json";
#if UNITY_EDITOR
　　　　StreamReader reader = new　StreamReader(filePath);
　　　　string getone = reader.ReadToEnd();
　　　　reader.Close();
　　　　gettwo = JsonUtility.FromJson<CharacterTable>(getone);
#elif UNITY_ANDROID
　　　　UnityWebRequest www = UnityWebRequest.Get(filePath);
　　　　www.SetRequestHeader("Content-Type", "application/json");
　　　　yield return www.SendWebRequest();
　　　　string tmptext = www.downloadHandler.text;
　　　　gettwo = JsonUtility.FromJson<CharacterTable>(tmptext);
#endif

// gettwo.characters[0].Name
// 炎の魔術師

yield return null;
}
```

　#if UNITY_EDITOR ~ #elif までに記述したコードはunityのeditor上で実行され、android端末で実行したときは#elif UNITY_ANDROID ~ #endif までに記述したコードが実行されます。
また、jsonファイル(Characters.json)はAssetsフォルダ直下にStreamingAssetsフォルダを作成し、その中に入れています。
Assetsフォルダ直下にjsonファイルを配置し、filePathをApplication.dataPath+"/Characters.json"とした場合、androidとeditorでApplication.dataPathが示す場所が異なるため、android端末でうまく読み込みすることができません。

また、関数CharacterStatusSetは

```
StartCoroutine(CharacterStatusSet());
```
で呼び出すコルーチンとなっており、CharacterStatusSetを普通の関数で記述してしまうと、これもファイルの読み込みが失敗する原因の一つとなってしまいます。

また、StreamingAssetsはandroid端末で情報の書き込みができない（らしい）ので、所持しているアイテムのデータなどはApplication.persistentDataPathの下にjson形式で保存したいと思います。

```
// ロード
StreamReader reader = new StreamReader(Application.persistentDataPath+"/character.json");
string getone = reader.ReadToEnd();
reader.Close();
CharacterTable gettwo = JsonUtility.FromJson<CharacterTable>(getone);

// セーブ
string characters_jsonToSave = JsonUtility.ToJson(gettwo);
StreamWriter streamWriter = new StreamWriter(Application.persistentDataPath + "/character.json", false);
streamWriter.Write(characters_jsonToSave);
streamWriter.Flush();
streamWriter.Close();
```

Application.persistentDataPathを使用する場合はandroid端末とunity editorで処理を分ける必要がありません。
FactoryBot　ActiveStorageを使った画像を紐付ける方法

# FactoryBotとは
RSpecにテストを効率化するための機能です。
予め値を設定しておき、それに沿ったインスタンスを生成します。

#ActiveStorageで画像を紐付けよう

```ruby:factories/post.rb
FactoryBot.define do
  factory :post do
    #{ } の値が参照されて保存される。
    text {"テキストです"}

    #afterメソッド。Postインスタンスをbuildした後、画像をつける。
    after(:build) do |post|
      post.image.attach(io: File.open('spec/fixtures/test_image.png'), filename: 'test_image.png', content_type: 'image/png')
    end

  end
end
```
Postインスタンスのimageカラムに画像をつけるよう記述します。
HTTPリクエスト経由で画像を付けない場合は、

`io: File.open('画像ファイル場所指定'), filename: 'ファイルの名前', content_type: 'ファイルのタイプ(imageとかtextとか）/拡張子`

と記述します。

以上です！
無名関数をアロー関数に書換える

# アロー関数

無名関数を記述しやすくした記法。

```javascript:無名関数の例

const b = function(name) {
  return 'hello ' + name;
}
```

これをアロー関数で書き換えると

```javascript:アロー関数

const b = (name) => {
  return 'hello ' + name;
}
```
となる。


##引数が１つの場合
さらにアロー関数は、引数が１つの場合、丸カッコ（）が省略できる。

```javascript
const b = name => {
  return 'hello ' + name;
}
```
また、実行する行が１行のみの場合は、波カッコ{}とreturnも省略できる。

```javascript
const b = name => 'hello ' + name;
```

##引数を２つ以上取る場合

```javascript
const b = (name, name1) => 'hello ' + name + ' ' + name1;
```
このように記述する。

## 引数を取らない場合

```javascript
const b = () => 'hello ';
```
丸カッコは省略不可な点に注意すること。

**アロー関数で書き換え可能な部分は記述量が少なくなるので、アロー関数を使おう！！**
Googleの一次ソース一覧

## はじめに

Googleの一次ソースを紹介します。

## Googleの一次ソース一覧

### Google

#### Android

Android Studioのインストール
https://developer.android.com/studio/install
https://developer.android.com/studio/install?hl=ja

Androidベータプログラム
https://www.google.com/android/beta
https://www.google.com/android/beta?hl=ja

Android Studioなどのリリース情報
https://androidstudio.googleblog.com/
https://androidstudio.googleblog.com/feeds/posts/default

Android 11の説明
https://developer.android.com/about/versions/11
https://developer.android.com/about/versions/11?hl=ja
全体的な変更点、特筆すべき変更があればセクションが追加される

Android 10の説明
https://developer.android.com/about/versions/10
https://developer.android.com/about/versions/10?hl=ja

Android 11のリリースノート
https://source.android.com/setup/start/android-11-release

Android 10のリリースノート
https://source.android.com/setup/start/android-10-release

Android 9のリリースノート
https://source.android.com/setup/start/p-release-notes

AndroidXのリリースノート
https://developer.android.com/jetpack/androidx/versions
https://developer.android.com/jetpack/androidx/versions/all-channel
https://developer.android.com/feeds/androidx-release-notes.xml

Android Studioのリリースノート
https://developer.android.com/studio/releases
https://developer.android.com/studio/releases/?hl=ja

Android Gradleプラグインのリリースノート
https://developer.android.com/studio/releases/gradle-plugin
https://developer.android.com/studio/releases/gradle-plugin?hl=ja

Google APIs for Androidのリリースノート
https://developers.google.com/android/guides/releases

Android Developers Blog
https://android-developers.googleblog.com/
https://android-developers.blogspot.com/atom.xml

Android Developers Japan Blog
https://android-developers-jp.googleblog.com/
https://android-developers-jp.googleblog.com/atom.xml

Androidデベロッパー向けニュースレター
https://developer.android.com/newsletter
https://developer.android.com/newsletter?hl=ja

#### Firebase

Android SDKのリリースノート
https://firebase.google.com/support/release-notes/android

Apple SDKのリリースノート
https://firebase.google.com/support/release-notes/ios

JavaScript SDKのリリースノート
https://firebase.google.com/support/release-notes/js

セキュリティルールのリリースノート
https://firebase.google.com/support/release-notes/security-rules

#### Chrome

ダウンロード
https://www.google.com/intl/ja_jp/chrome/

β版のダウンロード
https://www.google.com/intl/ja/chrome/beta/

デベロッパー向けのダウンロード
https://www.google.com/intl/ja/chrome/dev/

リリースブログ
https://chromereleases.googleblog.com/

リリースノート
https://developer.chrome.com/native-client/sdk/release-notes

Enterpriseのリリースノート
https://support.google.com/chrome/a/answer/7679408
https://support.google.com/chrome/a/answer/7679408?hl=ja

### SNS

#### Twitter

Google
https://twitter.com/Google

Google Japan
https://twitter.com/googlejapan

Google Play
https://twitter.com/GooglePlay

Google Play JP
https://twitter.com/GooglePlayJP

Google Developers
https://twitter.com/googledevs

Google Devs Japan
https://twitter.com/googledevjp


Android Developers
https://twitter.com/AndroidDev

Flutter
https://twitter.com/flutterdev

Firebase
https://twitter.com/Firebase

Firebase Release
https://twitter.com/FirebaseRelease

Actions on Google
https://twitter.com/ActionsOnGoogle

## おわりに

他にもありましたら、コメントなどで教えていただけると嬉しいです :relaxed:
【rails】カラムを確認する簡単な方法

```
rails c
```
でコンソールを開く。

```
User.column_names
```
でカラムを確認する。
すると下記のように、他の不要な情報を取得せず現在作成しているカラム名だけを取得し確認することができる。

```
[1] pry(main)> User.column_names
=> ["id",
 "email",
 "encrypted_password",
 "reset_password_token",
 "reset_password_sent_at",
 "remember_created_at",
 "created_at",
 "updated_at"]
```
ちなみにUser.columns.map(&:name)でも同様の確認が可能です。

```
[2] pry(main)> User.columns.map(&:name)
=> ["id",
 "email",
 "encrypted_password",
 "reset_password_token",
 "reset_password_sent_at",
 "remember_created_at",
 "created_at",
 "updated_at"]
```
しかしこれだと記述が長いので、User column＿namesで確認するのが良いかと思われます◯
rails6のjbuilderでArgumentErrorが発生したときの解決方法

# エラー内容
![スクリーンショット 2020-11-12 17.38.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517223/a82f087b-d4d4-4dc2-f955-02b2cad81296.png)

## 解決策
jsonをシンボルで指定してあげると解決します

```ruby
- render 'index', formats: 'json', handlers: 'jbuilder'
+ render 'index', formats: :json, handlers: 'jbuilder'
```
AWSのsecurity groupがどのリソースと紐づけられているかを見つける方法。

## 背景
気づいたら増えまくってるsecurity group。
整理する際に、どれがどのリソースに使われてるのかを調べる方法。

参考 : https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-find-security-group-resources/

## 正確な調べ方
1. 'セキュリティグループ'から該当sgのidを調べる。
2. 'ネットワークインターフェース'を開き、該当idを貼り付ける。
3. sgが紐づけられたeni一覧が出るので、そこからどのリソースについてるかを調べる。


## 雑な調べ方
1. 'セキュリティグループ'から該当sgをチェックし削除を選択。
2. 何かと紐づけられてる場合は、「消せません」とアラートが出てくるので、リンクに飛ぶ。
3. 紐づけられてるものがない場合は、「消してもいいですが？」とアラートが出てくるので、消しても良さそうなら消す。
R　複数データの総当り単回帰分析

#0 はじめに
かなり初歩的な内容です。備忘録も兼ねて。
Rにおいて複数要因間の単回帰分析をまとめて行う際の流れをまとめます。
今回は心理学分野で利用されるためにまとめられたpsychのcorr.test関数を用いました。

相関係数のみ分かれば良い場合にはcor関数を使うとよいです。

#1 前準備
用いるパッケージとデータセットをRに読み込みます。

用意するデータセットは下の画像の様な形式になります。
各列に外部要因、各行にサンプルのデータが格納されています。
（今回用いたものは199サンプル×22要因）
![スクリーンショット 2020-11-12 17.07.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/873522/975a014c-cc6b-d226-eec9-f42555e31907.png)

```R
setwd("/Directory1/Directory2") #ディレクトリの指定
install.packages("psych") #psychパッケージのインストール
library("psych")#パッケージの呼び出し

dat1 <- read.csv("for_cor.csv", header=TRUE,row.names=1,fileEncoding="CP932")
# データセットの読み込み
# RはEXCELで通常保存される[.xlsx]の拡張子ファイルを扱うことは難しいので[.csv]形式でのデータセットを用いる
#列名、行名が不要の場合にはheader=FALSE, row.names <- NULL
```
#2 相関分析の実行
デフォルトでは"pearson"の相関係数が出力されますが"spearman"または"kendall"による相関係数の算出も可能です。
その他adjustはじめ複数のパラメータ変更ができます。
詳細は[4 引用]から。

```R
result1 <- corr.test(dat1) #dat1についての相関分析結果をresult1に格納
result1 #結果表示(必要なら)
```

#3 データの出力
各項目について別々のファイルに出力したかったので以下を実行しました。


```R
names(result1) #相関分析により得られたデータ項目の確認(必要なら)
cor1 <- result1$r #result1のr(相関係数)に関するデータのみを取り出しcor1に格納
write.csv(cor1, file = "cor1.csv") #相関係数のデータをcsvファイルに出力

corr.test(cbind(dat4))$p
pv1 <- result1$p #result1のp(p-value)に関するデータのみを取り出しpv1に格納
write.csv(pv1, file = "pvalue.csv") #p-valueに関するデータをcsvファイルに出力
```
p-valueについては出力される対称行列の上側が補正後、下側が補正前の値が出力される点に注意。

###4　引用
>以下のサイトを参考にしています。
>[https://www.rdocumentation.org/packages/psych/versions/2.0.9/topics/corr.test](corr.test function | R Documentation)
【React】チェックボックスにチェックされたときだけ送信ボタンを有効化(関数コンポーネント)

`プライバシーポリシーに同意する`にチェックがあったときだけ、問い合わせを送信できるようにした時に。
`required`属性つけるだけでも実装できるけど、HTMLのフォームエラーのデザインが気に入らない時などに。

## 概要
- `isChecked`というstate(boolean)を作成
- 送信ボタンのdisabled属性に`isChecked`をセット
- `isChecked`の値を変化させる関数(`toggleCheckbox`)を作成
- `toggleCheckbox`をチェックボックスの状態が変化した時に発火

## コード
```jsx
import React, { useState } from "react"

export default () => {
  const [isChecked, setIsChecked] = useState(false)
  const toggleCheckbox = () => {
    setIsChecked(!isChecked)
  }
  return (
    <>
      <h2>お問い合わせ</h2>
      <form method="post" action="#">
        <label htmlFor="email">メールアドレス</label>
        <input type="text" name="email" id="contact_email" />
        <label htmlFor="content">お問い合わせ内容</label>
        <textarea name="content" id="contact_content" cols="30" rows="10"
        ></textarea>
        <p>利用規約に同意します。</p>
        <input type="checkbox" name="agree" id="agreeCheck" onChange={() => toggleCheckbox()}
        />
        <label htmlFor="agreeCheck">同意する</label>
        <div>
          <button type="submit" disabled={!isChecked}>送信</button>
        </div>
      </form>
    </>
  )
}
```
レビューの際・レビューをしてもらう前に確認すること

# この記事は何？
- レビューの際
- レビューをしてもらう際

上記の際に確認・気を付ける点を列挙し、理由を述べる。
内容はすべて自らの経験から。
## 対象者
業界3年目までくらい

# セルフレビューをする
一度レビュアーにレビューしてもらう前にレビューイ自身で成果物を見直す。
不要なコミュニケーションが発生したり、単純なミスの指摘などを無くす効果がある。
レビューの基準が定まっている場合はそれに照らし合わせて自分の成果物を見てみる。

# レビュー基準を統一する
レビューは非常に時間がかかるのでそれをいかに減らすか。
その場合レビューの基準をあらかじめ統一できていると判断する項目が減らせる。
不要な論議などをなくし、定めておこう。
複数人からのレビューをされる場合に不整合がおきることを減らす。
どうみるかを標準化しよう。

# 目的とするものは一つにする
複数の内容の変更は、ファイルがどれに対応するかなどレビュイーの負担が高い。
レビュー対象がなんの変更かがすぐわかるようになっているのであれば、レビュイーは考える事項がヘリ、レビューしやすい。
差分をなるべく対象の物だけにしてレビューを依頼するのが望ましい。

# レビューされやすさ
- 何をレビューして欲しいのか
- なんの目的があるのか
- 特にどこの部分を見て欲しいか
- 問題はなんだったのか
- テスト結果はどうなったのか
フ- ァイルの関連はどのようになっているか
こう言った点がコメントに含まれているとレビュアーはレビュー対象が読みやすく判断しやすい。

# テストを書く
誤字脱字・変数やメソッド名の間違えなどはテストを書けばなくすことができる。
実行できない、意図した動作が行われていない場合はコードレビューをする段階ではない。
仕様をコードにおこした形だけ確認するのであれば、コードを書く前に内容を確認してもらう方がよい、二度手間である。
# ループを抜ける処理は上に書く
for文などでループを抜ける処理が発生するのであればできる限り、上の部分で書くほうが良い。
不要な変数へ値を格納する必要も処理を走らせる必要もない。
# インデントを気にする
インデントが深いとコードを見る際に非常に不便である。
どこからどこまでが対象の処理なのか判別をする際に不便である。
例えば以下の場合はネストが深くならないように真偽判定の処理を見直すべきである。

```php5:変更前
foreach($result as $num => $info){
    if(empty($test)){
        //処理
    }else{
        //処理
    }
}
```

```php5:変更後
foreach($result as $num => $info){
    if(!empty($test)){
        //処理
    }
    //処理
}
```

# SQLを見直す
不要なデータを取得していないか、使う予定もないのに取得しようとしていないか。
使わないのであれば取得する必要はない。
# 責任分解できているか
メソッドに対して役割を付与しすぎていないか。
変数を判定する処理をそのメソッドでする必要があるのか。
必要以上の機能を付与していないか、それぞれの必要とする役割を考える。
以下が参考になる。
https://note.com/ywatanabe/n/n590d77662214
https://note.com/ywatanabe/n/n064f05bdd6c2
# 変数名は誰にでもわかるようにする
省略した形で変数を定義せず、そのままの形で表した方がわかりやすい。
コード補完もあるので長い変数名でも気にしない。

# 内容の意図をコメントに記載する
ここでのコメントはコードに挿入されるコメントではなく、
レビューをしてもらう際に連携するためのコメントである。
どんなに優秀なエンジニアであってもコードだけをみて仕様を把握することはできない。
どうしてもなぜこのようなことになっているのかわからない場合がある。
コードレビューをしてもらう際に処理フローについてのコメントを添えておけば、一手間も二手間も省くことができ、仕様についての質問なども最小限で済ますことができる。
特に、リモート環境となった世の中で、できるだけ応答回数を減らすことがそれぞれのパフォーマンスを上げることにつながる。
簡単でもいいのでどのような意図で処理を書いたか添えると相手が見やすい。

# レビューはコミュニケーション
これが最も大事なことである。
相手に対して自分の意図を伝える、何がわからないかつ伝える。
具体的に適切に書く、だから何なのかを適切に伝えられるようになる。
負の感情を伝えない、そんなことをしてもなんの意味もない、注意を促せばそれで良い。
それらが守られるだけで有益なレビューになる。


# 参考
2021.1.1の更新はSDの良いレビューを行う技術を参考に行った。
https://www.amazon.co.jp/dp/B08Q82B3Y5
SQLの勉強を忘れかけていたPostgreSQLで始めるときに見る記事

## 概要
SQLの書籍をスムーズに実践するためのPostgreSQL関連についての簡単なまとめ

## 参考
[PostgreSQL チートシート 入門 - Qiita](https://qiita.com/yusk24/items/e102f3660120ff4fa5e0)
[PostgreSQLコマンドチートシート - Qiita](https://qiita.com/Shitimi_613/items/bcd6a7f4134e6a8f0621)
[テーブルの作成(CREATE TABLE) ｜ PostgreSQLではじめるDB入門](https://db-study.com/archives/233)
[PostgreSQLのデータ型](https://thinkit.co.jp/cert/marugoto/2/1/19/2table.htm)

## 起動から始める
postgreSQLサーバの起動し、一応データベース一覧を確認。

```
% pg_ctl start -D /usr/local/var/postgres
% psql -l
                                 List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |      Access privileges
-----------+-------------+----------+---------+-------+-----------------------------
 postgres  | user        | UTF8     | C       | C     |
 template0 | user        | UTF8     | C       | C     | =c/         +
           |             |          |         |       | 
 template1 | user        | UTF8     | C       | C     | =c/         +
           |             |          |         |       | 
```

データベース”sql”を作成し接続する

```
% createdb sql
% psql sql
sql-# \dt #テーブル一覧
```
テーブル”mst_users”を作成しデータを挿入（サンプルコードコピペ）

```
CREATE TABLE mst_users(
    user_id         varchar(255)
  , register_date   varchar(255)
  , register_device integer
);

INSERT INTO mst_users
VALUES
    ('U001', '2016-08-26', 1)
  , ('U002', '2016-08-26', 2)
  , ('U003', '2016-08-27', 3)
;

```
確認してみると、書籍通りのテーブルが完成！

```
sql=# SELECT*FROM mst_users
sql-# ;
 user_id | register_ date| register_device
---------+---------------+-----------------
 U001    | 2016-08-26    |               1
 U002    | 2016-08-26    |               2
 U003    | 2016-08-27    |               3
(3 rows)
```


### postgreSQLが起動できない？
```
pg_ctl: another server might be running;〜
```
いざ起動させようとすると、上記のエラーが表示されてしまった。。
以下のサイトを参考に、ファイルを削除してから起動させると問題なく起動できた。
[postgres をちゃんと終了しないと.pidファイルが残っちゃって、Rails が起動しないもんだい · GitHub](https://gist.github.com/taea/8865831)
[postgresに接続できなくなったのでやったこと - Qiita](https://qiita.com/aiyu427/items/4716903ddeef5ecf16c9)

```
rm /usr/local/var/postgres/postmaster.pid
```
postgreSQLで学習後は以下のコマンドでしっかり終了させておくこと。

```
$ pg_ctl stop -D /usr/local/var/postgres
```
Appleの一次ソース一覧

## はじめに

Appleの一次ソースを紹介します。

## Appleの一次ソース一覧

### Apple

#### 全体

Newsroom
https://www.apple.com/newsroom/
https://www.apple.com/newsroom/rss-feed.rss
https://www.apple.com/jp/newsroom/
https://www.apple.com/jp/newsroom/rss-feed.rss

イベント
https://www.apple.com/jp/apple-events/

デベロッパー向けのニュース
https://developer.apple.com/news/
https://developer.apple.com/news/rss/news.rss
https://developer.apple.com/jp/news/
https://developer.apple.com/jp/news/rss/news.rss
https://developer.apple.com/news/site-updates/
https://developer.apple.com/news/site-updates/rss/site-updates.rss
https://developer.apple.com/jp/news/site-updates/
https://developer.apple.com/jp/news/site-updates/rss/site-updates.rss

RSSフィード一覧
https://www.apple.com/jp/rss/

#### OS・アプリ

OSやアプリの最新版
https://developer.apple.com/news/releases/
https://developer.apple.com/news/releases/rss/releases.rss

OSやアプリのβ版（ログインが必要）
https://developer.apple.com/download/

β版OSのインストール
https://developer.apple.com/jp/support/install-beta/

Apple Beta Software Program
https://beta.apple.com/sp/ja/betaprogram/

iOSとiPadOSのリリースノート
https://developer.apple.com/documentation/ios_ipados_release_notes

macOSのリリースノート
https://developer.apple.com/documentation/macos-release-notes

Xcodeのリリースノート
https://developer.apple.com/documentation/xcode-release-notes

#### Safari

リリースノート
https://developer.apple.com/documentation/safari-release-notes

Technology Previewのリリースノート
https://developer.apple.com/safari/technology-preview/release-notes/

### Swift

ブログ
https://www.swift.org/blog/
https://www.swift.org/atom.xml

### SNS

#### Twitter

Apple
https://twitter.com/Apple

App Store
https://twitter.com/AppStore

Swift Language
https://twitter.com/SwiftLang

Tim Cook (Apple CEO)
https://twitter.com/tim_cook

## おわりに

他にもありましたら、コメントなどで教えていただけると嬉しいです :relaxed:
[解決]Rails6にVuetifyを導入した時のwebpackerエラー "ActionView::Template::Error Webpacker can't find hello_vue ~"

# エラーになった過程

vueをrails6に導入して、vuetifyを追加。→試しにvuetifyのパーツをコピペ。→うまく機能しているかブラウザで確かめるため、rails s→コンパイル時にエラー発生。

#エラー内容


```bash
ActionView::Template::Error (Webpacker can't find hello_vue in /usr/src/myapp/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
  "application.js": "/packs/js/application-9afcbb5693aa87623e69.js",
  "application.js.map": "/packs/js/application-9afcbb5693aa87623e69.js.map",
  "components/user.js": "/packs/js/components/user-156f569cb5c8b04ee2e1.js",
  "components/user.js.map": "/packs/js/components/user-156f569cb5c8b04ee2e1.js.map",
  "entrypoints": {
    "application": {
      "js": [
        "/packs/js/application-9afcbb5693aa87623e69.js"
      ],
      "js.map": [
        "/packs/js/application-9afcbb5693aa87623e69.js.map"
      ]
    },
    "components/user": {
      "js": [
        "/packs/js/components/user-156f569cb5c8b04ee2e1.js"
      ],
      "js.map": [
        "/packs/js/components/user-156f569cb5c8b04ee2e1.js.map"
      ]
    },
    "main": {
      "js": [
        "/packs/js/main-f6918c73db91592ebf7f.js"
      ],
      "js.map": [
        "/packs/js/main-f6918c73db91592ebf7f.js.map"
      ]
    }
  },
  "main.js": "/packs/js/main-f6918c73db91592ebf7f.js",
  "main.js.map": "/packs/js/main-f6918c73db91592ebf7f.js.map"
}
):
    11: 
    12:   <body>
    13:     <%= yield %>
    14:     <%= javascript_pack_tag 'hello_vue' %>
    15:   </body>
    16: </html>
  
app/views/layouts/application.html.erb:14
^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: 2020-11-12 02:56:13 +0000 ===
- Goodbye!

```

ここにも書いてあるが、→https://github.com/rails/webpacker#vue
下のコマンドを上から実行していくと、エラーが解決しました。

```bash
./bin/rails webpacker:install
./bin/rails webpacker:install:vue
bin/webpack
```
Rubyでreturnを省略する際に気をつけること

返却前の処理に気をつけると良い。

## example

例えば、以下のようなメソッドを実装する場合、

```ruby

p sample_method()
# => { 'hoge' => 0, 'piyo' => 0 }
```

返却前の処理を誤って記述してしまうと、returnを利用する場合は構文エラーを出してくれるが、

```ruby

def sample_method
  result = { 'hoge' => 0 }

  # 1の後に間違ってカンマ","をつけてしまった
  result['piyo'] = 1,
  return result
end

# =>
# SyntaxError (xxx:nn: void value expression)
#   return result
#   ^~~~~~
# xxx:nn: syntax error, unexpected local variable or method, expecting `end'
#   return result
#          ^~~~~~
```

returnを省略する場合は意図しない値が返ってきてしまう場合がある。

```ruby

def sample_method
  result = { 'hoge' => 0 }

  # 1の後に間違ってカンマ","をつけてしまった
  result['piyo'] = 1,
  result
end

p sample_method()
# => [1, {"hoge"=>0, "piyo"=>[...]}]
```

Rubyとしては正しい構文であるため、エラーは発生しない。
Box Driveの巨大なログ、キャッシュをシンボリックリンクで退避する方法

Box Driveを使っていて、ログが異常に大きいとか、キャッシュが突如大きくなるなどのご相談があったので、Windowsのシンボリックリンク機能で別マシンに飛ばせないかを検証してみました。

WindowsのシンボリックリンクはWindowsServer2016以降（Windows10以降）と以前で機能が異なりますのでこの記事は、WindowsServer2016以降（Windows10以降）での検証記事です。

手順としては、
1、まずBoxDriveをインストールしてログの位置を調べます。
　検証環境ではC:\Users\AdminUserID\AppData\Local\Box\Box\logs　でした。

2、BoxDriveをアプリからアインインストールして一度WindowsServer2016を再起動します。
　※ここで再起動しないとアンインストールしてもlogsだけWindowsががっちり掴んでいます。

3、再起動するとlogsがリネーム出来るようになっています。例えばlogsorgなどとし、現状をバックアップします。　（そもそもlogsがあるとシンボリックリンクが作成出来ませんので作成出来るようにします）

4、コマンドプロンプト（cmd）の管理者権限用を立ち上げて
mklink /d C:\Users\AdminUserID\AppData\Local\Box\Box\logs \\10.XXX.XXX.XXX\c$\Box
このコマンドを入れて正常に処理されるとlogsにシンボリックリンクマークが付きます。（改行マーク）
※この場合事前にネットワークドライブの\\10.XXX.XXX.XXX\c$\Boxに読込、書込権限があることを確認します。この例はIP10.XXX.XXX.XXXマシンのCドライブのBoxディレクトリの場合を想定。
![Windows2016シンボリックリンク.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608295/42b6009b-7744-d932-8917-d8e55f7e9e2e.png)


5、もう一度BoxDriveをインストールします。
すると、シンボリックリンク先のドライブにログが出力されています。
![シンボリックリンク2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608295/ce237cea-8faf-0ec1-cb25-9bdaa3627f13.png)


もちろんこのドライブに他のファイルを移動するとBoxDriveの入っているマシンのHDD容量には影響がなくなります。

メーカーの保証のない方法ではありますが、これでBoxDrive搭載マシンのCドライブを圧迫させることが無くなります。※ネットワークドライブ側のドライブ容量は一定量大きなディスクが必要です。

これであれば特にCLIを使わなくても今までのものにログだけシンボリックリンクでHDDのボリュームを外に出して使うと言う事が可能と思われます。

この検証はBoxDriveの無償試用版を使って2週間程度継続検証しました。
Decorator Pattern

<font color="#00f">オブジェクトをラップし、ラップしたオブジェクトの機能を拡張する</font>

[Design Pattarm MENU](https://qiita.com/old_cat/items/852d980bedb9100dd7e3)

サンプルコードでは、新しく機能を追加する代わりに、Stringオブジェクトをカッコでラップします

以下のクラス構成で確認します

|クラス|説明|
|-----|----|
|abstract<br>Display.class|各クラスの共通型とする<br>抽象メソッドを定義|
|Message.class|Displayを拡張<br>このクラスのStringフィールドがラップ対象|
|Decorator.class|Displayを拡張<br>Decoratorを実装する|
|user(Main.class)|動作を確認する|

＊user　他の開発者がこのパターンを利用する、という意味合いを含みます

以下はサンプルコードです

```java:abstract_class_Display
abstract class Display{
  abstract String getStr();
}
```
```java:Message.class
class Message extends Display{
      String  msg;
      Message(String s){this.msg=s;}
      String  getStr() {return msg;} 
}
```
```java:Decorder.class
class Decorator extends Display{
      Display   display;
      StringBuffer sb = new StringBuffer();
 
      Decorator(Display d){this.display=d;}
      String getStr(){
             return makeBorder(display.getStr());}
      String makeBorder(String msg){
             sb.append("<")
               .append(msg)
               .append(">");
             return sb.toString();
  }
}
```
```java:user(Main.class)
public static void main(String[] args){
       Display d1 = new Message("Hello java");
       Display d2 = new Decorator(new Decorator(new Decorator(d1)));
       System.out.println(d2.getStr());
}
```
お試し投稿

# テスト投稿
こんにちは。スネオと申します。qiitaへの初テスト投稿、失礼致します。
markdown技法も初めてなので、いろいろここで試してみます。

# いろいろ試す

|  | のびた | スネオ | ジャイアン |
|:-:|:-:|:-:|:-:|
| HP  | 23  | 20  | 80  |
| MP  | 10  | 35  | 5  |
| LV  | 3  | 3  | 8  |

2x3とか3x3とかやるとテーブルを挿入というメニューが出てきて入力支援をしてくれるんですね。
なかなか便利そうです。

# 画像
![すねお.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569911/f6590b59-51ed-5525-9ea7-512b7a1802d1.png)

```JavaScript:qiita&#x20;とりあえず適当に.rb
let hairetsu1 = ['あ','い','う','え']
console.log(hairetsu1);
console.log(hairetsu1[1]);
```

ありがとうございました。
IBMCloud macOSからKVM接続

##背景
IBMCloudの仮想サーバを使用しており、SSHやRDPで接続できなくなった・・・。
という時にはTightVNCを用いたKVM接続でアクセスできる。
**Mac用のソフトは公開されていないが、Java Viewer経由でアクセスできる**ので紹介しておく。

具体的な接続はこちらの方の記事がわかりやすいので参照してください。
[図解で、IBM Cloud の仮想サーバーOSにログイン（KVMコンソールで復旧作業)](https://qiita.com/1Kano/items/9abc37c6f1ca4cfb519b)

##環境
* ローカル端末：macOS Catalina 10.15.7 1台

##Java Viewerダウンロード
Zipファイルをダウンロード
https://www.tightvnc.com/download.php

* [TightVNC Java Viewer JAR in a ZIP archive](https://www.tightvnc.com/download/2.8.3/tvnjviewer-2.8.3-bin-gnugpl.zip)

##Zipファイルを展開して起動

すると、**tightvnc-jviewer.jar**が入っているのでダブルクリックする。
確認画面がでるので、**開く**を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/5ea6862b-107e-a97f-05c3-81bc41ce4a1a.png)

ソフトが起動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/06b685a1-1dfb-8da0-04c0-ad59fa8bfce9.png)

##KVM接続

MortionProなでどVPN接続をしておく
![貼り付けた画像_2020_11_12_16_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/248067c9-adfd-dd12-9532-536e2ffb3e32.png)

接続したい仮想マシンの画面まで行き、画面右の**アクション** -> **KVMコンソール**を選択
![IBM_Cloud_-_仮想サーバー詳細.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/b8ba6bb3-1e4c-0b55-a5f4-95909d8bd540.png)

**続行**を選択
![スクリーンショット_2020_11_12_16_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/cb5c1f8e-beee-45be-92e6-ee423e2d2e55.png)

**Address**を**Remote Host**にコピペ
**Port**を**Port**にコピペして、**Connect**を選択する
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730333034332f61396163613031312d366263392d313431652d363937622d3439383462616538333839382e706e67__3314×1566_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/b305f324-cd70-425f-79eb-b54c38bfa2eb.png)

**Password**を**Password**にコピペして、**OK**を選択する
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730333034332f65343061613234302d353334302d353437642d396135642d3130316162313134376361342e706e67__3358×1624_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/2225afde-ab13-5526-2062-6862cac44363.png)


Linuxコンソールが表示された。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730333034332f61366462363033302d326566632d653037322d303234312d3432306663646263623732662e706e67__3318×1602_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/81dbc83d-3c64-1fbd-052f-f643617d6dac.png)


Windowsも問題なし
Ctrl+Alt+Deleteは赤枠の部分
![acs-supark-win_tsstesting_com_-_Virtual_Terminal__zoom__100___と_IBM_Cloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d335dae4-43b5-dc4e-1fb6-f0fea6adc1ee.png)
mysql 改行され続けて困った

vscodeでmysqlを操作していてひたすら改行され続けるので対処法

やったこと
mysqlからデータを選択しようとして、　”一つの後にエンターを押した。

すると、下記のようになった

mysql>　コマンド "（ここで改行）
    "> 
    "> 何か打つ
    "> 同じようになる

上記の繰り返しになって焦った。

対処法
もう一度　" のみ入力
すると、
    ->　となった

原因
"を入力すると閉じが必要
私は""のように閉じていなかったため、延々と入力待ち状態になっていた。
自称、Splunk中級者向けjoin系コマンドの罠

はじめに
----
- SplunkのSPLコマンドに慣れてきた方へ
- 気づかずにSPLの制限にはまっていて、実はサーチ結果が不十分な結果になっていた。。
    - なんてことにならないために、よくあるSPL制限をまとめていきたいと思います。
- まずはSplunk中級者？がハマりがちなsubsearchs、join、append、inputlookupの制限をチェック
    - Splunk Version 8.1.0をベースに記載


subsearches (join, append, inputlookupの組み合わせ利用)
----
- デフォルトのイベント件数の制限
    - サブサーチの結果は**10,000**件まで！
    - サブサーチ結果を**join**コマンドで繋げる場合は上限が**50,000**件に変わります！
    - サブサーチ結果を**append**コマンドで繋げる場合は上限が**50,000**件に変わります！
- 詳細説明
    - https://docs.splunk.com/Documentation/Splunk/8.1.0/Search/Aboutsubsearches


```:やりがちなSPL例：実はasset.csvが10,000件しか読み込まれていない。。。
|join IpAddress [|inputlookup asset.csv |rename ip as IpAddress]
```
↓

```:置き換えSPL例(lookupコマンドで代用する)
|lookup asset.csv ip as IpAddress
```
- lookupコマンドの場合、イベント件数制限ではなくlookupファイルをメモリに展開するサイズ制限になります。カラムの数にも依存しますが、inputlookupの件数制限よりも多くマッチングできることが多いのでオススメ
    - https://docs.splunk.com/Documentation/Splunk/8.1.0/Admin/Limitsconf


inputlookup
----
- デフォルトは最大イベント件数が**1,000,000,000件**
    - しかし、subsearchと組み合わせると最大イベンド件数が変わるので注意。**subsearch**にて説明

```:SPL例
|inputlookup asset.csv 
```


- 詳細説明
    - https://docs.splunk.com/Documentation/Splunk/8.1.0/SearchReference/Inputlookup


append
----
- デフォルトは最大イベント件数が**50,000件**

```:SPL例
|append [|search index=main sourcetype="xxx" status=Unassociated] 
```

- 詳細説明
    - https://docs.splunk.com/Documentation/Splunk/8.1.0/SearchReference/Append


join
----
- デフォルトは最大イベント件数が**50,000件**

```:SPL例
| join product_id [search vendors | rename pid AS product_id]
```

- 詳細説明
    - https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Join


stats
----
- 集計の祖、statsコマンドにもやはり上限値はあります。

#### stats list(xxx)
    
```:limits.conf.specより抜粋
list_maxsize = <integer>
* Maximum number of list items to emit when using the list() function
  stats/sistats
* Default: 100
```

- 結果に不審な点を感じたら、limits.confをチェック
    - https://docs.splunk.com/Documentation/Splunk/8.1.0/Admin/Limitsconf
パンくずリスト（Breadcrumb NavXT）のホームを変更する方法

WordPressで開発をする際にお世話になる`Breadcrumb NavXT`。

初期設定では、`%htitle%`となっています。
![cc118542cf0c861fff82a2ccf80c57dd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/f6cd9c3e-1da2-bf26-03cd-b6ad1b89d951.png)

`%htitle%`は 設定のサイトのタイトルと結びついています。そのままで問題ない人はこのままでもよいでしょう。
![04752bbb0d94d96b3a7d7be4ac3f5be1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/c455ced9-7525-580e-430a-9a99be28fbd6.png)
▼これが現在の出力状況です。
![5cc1ff5f24d2e5b4561897e0725a1b18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/0b7befd9-2d97-9e39-f9ba-5f9312cc4f47.png)

このように好きな文字を入力する。（今回はデイトラ卒業制作の`完全版マハーバーラタ`）
![5dabda66528a7a14d0fd9e24e0d294a5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/30108ef4-802c-2675-651c-53c71961bd60.png)

変更後はこのようになります。
![19d769575934c94d8d2118c0c1930a97.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592040/1cd44212-9d72-21ff-3237-53de71004374.png)
DTMの標高値をグラフで表示してみた

#DTMとは
Digital Terrain Mapの略。今回は火星探査機MROに搭載されたHiRISEというカメラが取得したDEMデータを使う。

#HiRISEとは
MROの搭載カメラの一つ。めちゃくちゃ高解像度。
![gahag-0040798691.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/337de9b6-a20d-5312-1cfc-02842bb790d8.jpeg)
上の画像もその一つらしい。（これは擬似カラー画像）

#手順
ダウンロード:[HiRISE アーカイブサイト](https://hirise-pds.lpl.arizona.edu/PDS/DTM/)
ESPとかPSPとかはカメラが画像を取得した時のmodeになっている。（どれでもいい）

今回はPythonで読んでいきます。
適当にgdalとか使って読み込んでください。（飛ばします。）

```python:dtm.py
xx=int(len(data_array))+1
yy=int(len(data_array[0]))+1
data_array = np.where(data_array<=-8000, data_array*(-0.0), data_array)
x = np.arange(0, xx-1, 1)
y = np.arange(0, yy-1, 1)
Z = data_array
Y, X = np.meshgrid(y, x)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(X, Y, Z)
plt.show()
```
雑な直貼り。
配列の長さ出して。-8000以下の標高はありえないから...それを使う。無効値をとりあえず0。max, minを特定。メッシュでプロット。
ちなみに、値とかみていくのにコメントアウト含めると270行もあった。中身こんなに薄いのに...

とりあえず、こんな感じでやると

![Figure_1_3D.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/2dc96536-d485-8bdb-a036-53407d7fbdf4.png)
こんなのができる。
###見にくい！

#まとめ
表示はできたから綺麗にしようかな...
これ何に使うのかはわかりませんw
何かしらには使えるかな...綺麗にすれば!

###以上！雑多なまとめでした！
以降も何かしら面白いことや研究の延長戦でやったことなどをまとめてみます。
研究も就活もやらなくては...ゲームもしたいんだけどなぁ...
PythonでNetCDF形式のデータを扱う

#環境
Ubuntu18.04LTS
Python3


#環境構築
Python3でNetCDF形式のファイルを使用するためにはNetCDF4モジュールが必要。
このモジュールはpip3で簡単にインストールできた。

#PythonでNetCDFファイルのI/O
以下は緯度、経度、時間の三次元変数T2が格納されたNetCDFファイルを開いて、新たにtest_ncout.ncというファイルを作成するプログラム。

```python
#coding: utf-8
# This is a sample program to read and write s netCDF file with Python3
from netCDF4 import Dataset
import numpy as np

#*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
#read netCDF file
#*~*~*~*~*~*~*~*~*~*~*~*~*~*~*

#open a netCDF file to read
ifile = "test.nc"
ncin = Dataset(ifile, 'r')

#check
#print(ncin.file_format)

#get variables
#print(ncin.variables.keys())

#get axis data
tin = ncin.variables['time']
latin = ncin.variables['lat']
lonin = ncin.variables['lon']

#get length of axis data
ntime = len(tin)
nlat = len(latin)
nlon = len(lonin)

#check axis
#print(tim[:])
#print(latin[:])
#print(lonin[:])

#read data
vin = ncin.variables['T2']

#check data
#print(vin[:,:,:,:])

#*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
#write netCDF file
#*~*~*~*~*~*~*~*~*~*~*~*~*~*~*

#open a netCDF file to write
ncout = Dataset('test_ncout.nc', 'w', format="NETCDF4")

#check file format
#print(ncout.file_format)

#define axix size
ncout.createDimension('time',ntime)
ncout.createDimension('lat', nlat)
ncout.createDimension('lon', nlon)

#create time axis
time = ncout.createVariable('time', np.dtype('f4').char, ('time'))
time.long_name = 'time'
time.units = 'months since 1850-1-1'
time.axis = 'T'

#create lat axis
lat = ncout.createVariable('lat', np.dtype('f4').char, ('lat'))
lat.long_name = 'latitude'
lat.units ='degrees_north'
lat.axis = 'Y'

#create lon axis
lon = ncout.createVariable('lon', np.dtype('f8').char, ('lon'))
lon.long_name = 'longitude'
lon.units = 'degrees_east'
lon.axis = 'X'

#create variable arry
vout = ncout.createVariable('T2', np.dtype('f4').char, ('time', 'lat', 'lon'))
vout.long_name = '2m temperature'
vout.units = 'K'

#copy axis from original data
time[:] = tin[:]
lon[:] = lonin[:]
lat[:] = latin[:]
vout[:] = vin[:]

ncin.close()
ncout.close()

```



#リファレンス
http://unidata.github.io/netcdf4-python/
https://github.com/Unidata/netcdf4-python
統計処理@HEP

# ライブラリ一覧

- HistFactory
- HistFitter

# 基本のキ
## Chi square

```math
\chi^2 = \sum_{i=1}^{n} \frac{( O_i-E_i)^2}{E_i}
```

# asimov data
シミュレーションから擬似データ（asimov data)を作る。

# Confidence Level 

# CLs method

# Profile likelihood
## nuisance parameter 
まずはじめに。「ニューサンス（ヌイサンス？）パラメーター」について。

> nui‧sance /ˈnjuːsəns/ 
a person, thing, or situation that annoys you or causes problems

という意味（ロングマン辞典）。Profile Likelihood の文脈では「興味はないけど、その値は案外重要」みたいな意味合いで使われていて、統計誤差・系統誤差を意味していると考えておく。

## 統計誤差がNPとして含まれる意味合い
統計誤差もnuisance parameterとして含む。これはその他の系統誤差によってイベント数が上限するためで、それら系統誤差との相関を取ることで、統計誤差の推定値が求まる。

# RooFit
## RooSimultaneous
マルチスケールシミュレーション特論：第 5 回をまとめてみた

\![ruby-2.5.5p157](<https://img.shields.io/badge/ruby-2.5.5p157-brightgreen>) 


# ruby 構文(hello world)


## はじめに

どんなプログラミング言語もまず始めは hello world から始めるものなので hello world を通して様々な出力用の関数を覚えていく


## Strings を打ち出す方法

まず初心者の人は基本として以下のどれかを覚えておけばよい

-   print: 改行が必要
-   puts: 自動改行をしてくれる
-   p: coding の最中に debug がわりに打ち出すとき
-   pp: p の pretty print, require 'pp'が必要
-   printf: format を整えるときに便利

上記の中で私はよく python を使うので慣れている、~print~ を使う事にする


## print の使い方について

print には改行が必要なので以下のように改行用の文字(\n)が必要となる

```
print "Hello " + ARGV[0] + "\n"
```



------
 - **source** ~/Downloads/git/grad_members_20f/members/taiseiyo/memos/class5.org
VScodeでDockerのコンテナから抜ける設定

## はじめに
デバッグするときにDockerにattachした際、デタッチ(コンテナから抜ける)するときに
`Ctrl+P` → `Ctrl + Q`を使うと思います。

しかし、VScodeではすでにこれらのショートカットキーが登録されていてそちらが優先されてしまいます。
VScodeｍでデタッチできるように、VScodeのショートカットキーが効かないように設定を変更してみました。

## 設定
ショートカットを確認すると`ctrl+P`と`ctrl+Q`がすでに登録されていることが確認できます。
![スクリーンショット 2020-11-12 16.02.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497683/36e651bb-e32b-7510-6c0b-78bb9b7b75f8.png)



VScodeの`keybindings.json`に下記を記載します。(`command+P`でファイル検索を開き、`>keybindings.json`と打つと開きます！)

すでに設定されているcommandに`-`をつけることで`ctrl+P`と`ctrl+Q`のショートカットキーを削除できます。

```keybindings.json
{
    "key": "ctrl+P",
    "command": "-workbench.action.quickOpenSelectPrevious"
  },
  {
    "key": "ctrl+Q",
    "command": "-workbench.action.quickOpenView"
  }
```
【Swift】これで解決！Delegate実装の図解

##はじめに

Swiftを始めた人なら誰しもが最初に思ったであろう
教材・記事「Delegateは代理人で..」
読者「代理人ってなんやねん」

この記事では図解でDelegateを紹介し、使い方まで説明します。
読み終えた頃には
「なるほどDelegateは代理人だな」
と思っていることでしょう。

##Delegateを理解する


![スクリーンショット 2020-09-29 21.32.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585922/6353be83-37d5-0401-0846-6bcfdfab86c4.png)
以下、protocol PopViewDelegate: UIViewの部分が間違っていて
　　　class PopupView: UIView になります。

![スクリーンショット 2020-09-29 21.36.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585922/b8cb8fe2-3078-afa8-1708-7c02dda99888.png)

##終わりに

いかがでしたでしょうか？
「Delegateは代理人なんだな」と思っていただけたことかと思います。
周りにDelegateの理解に苦しんでいる方がいたら是非、
この記事を紹介してみてください。
初心者への問題｜htmlでコンテンツを非表示にする方法３つを考える

# プロローグ
先日にあった、あるサイトの更新の話

クライアント：「期間限定キャンペーンの部分、もういらないから消してください」

私：（消すのはいいけど、絶対にまた同じ様なキャンペーン内容を表示させるよな...）

# 問題：非表示にする最適解は？
クライアントは「消せ」というが、サイト管理者として完全に消したくない場合に（該当部を非表示で留めておきたい場合に）、どの手段を取るのが最適か？

なお、htmlファイル単体で更新を行うものとします。

# 選択肢
* A）該当部に`style="display:none"`を追加
* B）該当部に`style="visibility:hidden"`を追加
* C）該当部をコメントアウト `<!-- -->`

上記はいずれもコンテンツを見た目上では非表示にすることができます（ソースコード上には残っています）

# 検討
## 参考サイト１） display:none と visibility:hidden の違い
[【CSS】display:noneとvisibility:hiddenの違いと非表示にする際の注意点](https://begeeek.com/article/365/)
* 要約すると「display:none と visibility:hiddenの違いは、要素をなくすか非表示にだけするか」ということ

## 参考サイト2） 「display:none」はSEO効果を下げる！？
[「display:none」はSEO効果を下げる／Google発言、長い論争に決着](https://seopack.jp/seoblog/20160622-display-none/)
* 要約すると、例えばウィンドウサイズで（メディアクエリで）コンテンツの表示/非表示を切り替えるために「display:none」を使うのは構わないが、常時に（どんな場合でも）「display:none」しているようなコンテンツがあると、SEO的に不利でっせ、ということ

## 参考サイト3） コメントアウト部をGoogleは完全に無視する
[コメントアウトの便利な使い方と注意点についてご紹介します](https://blog.final-seo.jp/internal-seo/coment-out/)
* 要約すると「コメントアウト部をGoogleは完全に無視する」「ただし、コメントアウト部が多ければ、ファイル量も増えるし、レスポンスの観点からSEO的には不利になるんちゃうかな。不要なコメントアウトは消しましょう」ということ

# 結論
今回は「C）該当部をコメントアウトする」を選択しました。

## A）じゃない理由
* A）該当部に`style="display:none"`を追加
* クライアントの指示があるまで該当部は、ずっと非表示にしているので、SEO的に良くない為。

## B）じゃない理由
* B）該当部に`style="visibility:hidden"`を追加
* 要素自体が消えるわけではなく、サイトのデザイン的に不自然な空白が生まれる為。

## C）である理由
* C）該当部をコメントアウト
* 非表示にしたかったのは、画像１つとテキスト数行だけ。レスポンスに影響があるようなものではないと思うので。


本稿は以上です。