OmniAICreator/Qiita-1.07M huggingface dataset:
Windows 10 で言語切り替えショートカットを無効にする方法【Windows 10 21H1版～】

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

言語切り替えショートカットとは、「ctrl+shift」でIMEが切り替わるショートカットのことです。

Windows 10 で言語切り替えショートカットを無効にする方法【windows10 1803版】 - Qiita
https://qiita.com/ynott/items/5d8fde54e7c3a66b7af3

Windows 10 で言語切り替えショートカットを無効にする方法【Windows 10 1810版～】 - Qiita
https://qiita.com/ynott/items/5c97453fcc9bdf845636

Windows 10 で言語切り替えショートカットを無効にする方法【Windows 10 1909版～】 - Qiita
https://qiita.com/ynott/items/eca99ed763752316a128

を書いたのですが、21H1では設定方法が変わっていたので再度書いてみました。
どうも、20H2では既に変わっていたようです。

https://qiita.com/nabeya11/items/801217e7e69bcd86c34d

# 0. 前提条件

Windows 10は以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/8fa0457b-102f-7d3b-08a9-12ded29f95fd.png)

## 1. コントロールパネルを開いて「時刻と言語」を選択(変更なし)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/15176/5a930142-7a43-a88e-4143-88bdb6ba0913.png)

## 2. 時刻と言語で「言語」を選択(変更なし)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/15176/06515293-6edc-3bf6-d413-1354bc10ea88.png)

## 3. キーボードを選択(変更あり)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/4e2cb5fc-6264-e015-2f16-0ed9e5a3a653.png)

## 4. キーボードの詳細設定で「入力言語のホットキー」を選択(変更なし)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/daeb339b-bb67-791e-365d-8ec0adc41023.png)

## 5. キー詳細設定で「キーシーケンスを変更」をクリック(変更なし)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/15176/6decf19b-f0cd-e1cb-2f30-2db73eed24c6.png)

## 6. キーシーケンス変更で「割り当てなし」をクリック(変更なし)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/15176/675d69ab-f052-9d32-dce0-7e516be2a38d.png)

OKを押して終了

## 7. まとめ

途中の経路が1つ入れ替わりましたね。
React×Typescriptの環境開発で、初っ端に出たエラー

### 最初の壁
転職を目指している僕はある日reactとtypescriptを勉強し始めました。そんな時今までnpmを使っていましたがポートフォリオを作るにはyarnの方が良いだろうと、yarnの導入を検討した。（正直この記事を書くならコード書けって話。）

```
npm install --global yarn
```
↓

```
yarn global add create-react-app
```

↓

```

npx create-react-app --template typescript 好きなファイル名
```

そしてvs codeを開きyarn startを無事にいつものreactの画面が表示される。

『よし,次はsrcの中身を消してtsxファイルの作成だ。』

しかし現実は非情なものであった。

```
It looks like you're trying to use TypeScript but do not have typescript installed.

error Command failed with exit code 1.

```
翻訳してみると....
TypeScriptを使用しようとしているようですが、typescriptがインストールされていません。

『ん？　俺はファイル作成時にインストールしたんじゃないのか？？』

とりあえずGoogle先生にエラー文をぶち込んで調べる。今までの勉強でわかっていたが解決策が多すぎる。本当に多すぎる。一人一人環境が違うし知らない言葉ばかり、もはや違う国に来たと言っても過言ではない。
そんな中見つけたのがこれ。

```
yarn add --dev typescript @types/react @types/node
```
TS プロジェクトっぽいのにパッケージ無い時に使うらしい。
でもtsconfig.jsonはあったから中身を良い感じにいじるコマンドだと予想,するとどうでしょう。yarn startが走るではありませんか。まじで嬉しい、宝くじで１００００円当たるより嬉しい。

### ２つ目の壁

```
Could not find a declaration file for module 'react-dom'. '
/Users/satoshun/sufeing/node_modules/react-dom/index.js' 
implicitly has an 'any' type. Try `npm i --save-dev 
@types/react-dom` if it exists or add a new declaration 
(.d.ts) file containing `declare module 'react-dom';`
```
『ちくしょう、またエラーかよ』
なるほど、コウメ太夫のセリフはこういう時に使うのか。頭のCPUが余計なことに使われる。

調べてみると、どうやら原因はtsconfigにあるようでした。
したがって下記をcreate-reaxct-appで生成されたtsconfig.jsonに追加するだけで、ちゃんと起動するとか。

```json
{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "noImplicitAny": false,
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
    
  },
  "include": [
    "src"
  ]
}
```

tsconfig.jsonのこの位置に

```
"noImplicitAny": false,
```
を入れるとエラーは解消。
これでany型をエラーにしてるらしい。
なんでかわ調べてるけどまだ結論は出てないよ。

でもtsは型別で判別してくれるからなんとなく理解はできた。

エラーは自分を成長させてくれると思ってるから嫌いだけど好きだよ。
まだまだ勉強不足だけど周りの先輩エンジニアの方は優しいしほんとに環境に恵まれた感が強い。あっという間に４月だけど気合入れるしかない。
AtCoderログ：0042 - ARC 124 に参加しました

この記事は 2021年07月25日(日)21:00-23:00 に開催された [AtCoder Regular Contest (ARC 124)](https://atcoder.jp/contests/arc124) に参加した記録です。

#  結果
- 得点：300 (=300)
- 時間：49:58 (= 49:58 + 05:00 × 0)
- 順位：1866 / 2244
- パフォーマンス：420
- レーティング：251 → 270 (+19) Highest更新！
- 段級位：9級

![2021-07-25_arc124.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1589302/18f17d13-3cda-1abd-06c1-5e45ab603e8c.png)

# 詳細
|問題|得点|時間|提出コード|復習|
|:--:|:--:|:--:|:--:|:--:|
|[ARC 123 A](https://atcoder.jp/contests/arc124/tasks/arc124_a)|300|49:58|[○]()|[AtCoderログ：00**](https://atcoder.jp/contests/arc124/submissions/24541471![2021-07-25_arc124.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1589302/febc4750-0d6c-ea5b-1a76-6e370efa3936.png)
)|
|[ARC 124 B](https://atcoder.jp/contests/arc124/tasks/arc124_b)|400|---|---|---|
|[ARC 124 C](https://atcoder.jp/contests/arc124/tasks/arc124_c)|600|---|---|---|
|[ARC 124 D](https://atcoder.jp/contests/arc124/tasks/arc124_d)|700|---|---|---|
|[ARC 124 E](https://atcoder.jp/contests/arc124/tasks/arc124_e)|700|---|---|---|
|[ARC 124 F](https://atcoder.jp/contests/arc124/tasks/arc124_f)|1000|---|---|---|

# 感想
- 今回も A は解けたものの、B 以降に歯が立たず、時間を余らせての終了となりました。
- A は問題の意味を理解するのに手間取ってしまいましたが、何とか正解できました。
- B はベッドに入ってから解法がひらめきました...残念。
- レーティングが伸びたのは良かったですが、私には ARC はまだ早そうなので、ABC をメインにして、ARC は時間に余裕があったら参加することにしようと思います。

# リンク
- 前の記事 → [AtCoderログ：0041 - ABC 133 B](https://qiita.com/RoadLynton/items/951ae27c68dab707e87e)
【Google Cloud Day'21】「日本におけるメインフレームを取り巻く環境とクラウドを活用した脱ホストの実現に向けて」を視聴して

日本におけるメインフレームを取り巻く環境とクラウドを活用した脱ホストの実現に向けて
メインフレームを取り巻く環境は厳しさを増していますが、多くの大手企業において、様々な理由でメインフレームが残存しています。本セッションでは、日本におけるメインフレームを取り巻く環境と、脱ホストを今、実施する理由を述べた上で、クラウド化による脱ホストのアプローチをご紹介します。特に脱ホストと併せて DX を実現する際にはデータ処理の手当てが重要となり、Google Cloud の強みを活かすことが肝要となります。
https://cloudonair.withgoogle.com/events/google-cloud-day-digital-21/watch?talk=d2-pl-11

<table>
	<tr>
		<th>切り口</th>
		<th>内容</th>
	</tr>
	<tr>
		<th>レガシーシステムからの脱却時の課題</th>
		<td></td>
	</tr>
	<tr>
		<th>2スピードアプローチ</th>
		<td>基幹系のシステムに必要なアプローチ方法。右側は新しいデジタル技術。レガシーな領域を小さくしながら、デジタル領域を広げていく</td>
	</tr>
	<tr>
		<th>モダナイゼーションについて</th>
		<td></td>
	</tr>
	<tr>
		<th>GCPを選ぶ理由</th>
		<td></td>
	</tr>
</table>

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/268019b7-4321-c5d1-3480-a07c1b569ac7.png)


![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/09d78424-94a5-de0a-e21c-f06bac77c149.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/c342ded1-8ef8-2471-86e2-b4a20a832817.png)
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/931c7a5f-2ddf-687e-dda2-d959fc04b38e.png)
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/867347e6-1622-089f-2084-4c9725a46872.png)
投稿にタグ、カテゴリー付け　タグで検索できるようにする（単数タグ）ジャンル検索　タグ検索

<h2>やりたいこと</h2>
①投稿時にカテゴリータグ追加。
②カテゴリーのリンク押すと、同じカテゴリーの投稿を取り出せる
（"プログラミング"押すと、同じくプログラミングというタグで投稿されてる記事一覧を見れる）

![スクリーンショット 2021-07-29 9.35.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/54d7f023-6738-ecab-64b9-5014ea919eb2.png)

![スクリーンショット 2021-07-29 9.36.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/d364de56-f7a4-79be-c533-e2e516cd4fbe.png)

<h2>まずはカテゴリーを追加できるようにする</h2>

<h4>マイグレーションファイル記述</h4>

カテゴリーカラムを追加しました。

```
class CreateBooks < ActiveRecord::Migration[5.2]
  def change
    create_table :books do |t|
      t.text :title
      t.text :body
      t.string :category
      t.references :user,foreign_key:true
      t.timestamps
    end
  end
end
```

<h4>Viewファイル</h4>

form_withで受け取る

```
<%= form_with model:@book,url:books_path,local:true do |f| %>
 <label>Title</label>
 <p><%= f.text_field:title %></p>
 <label>Opinion</label>
 <p><%= f.text_area:body %></p>
  <label>カテゴリー</label>
 <p><%= f.text_field:category %></p>
```

<h4>コントローラー修正</h4>
カテゴリーも保存できるように修正。

```
private
  def book_params
    params.require(:book).permit(:title,:body,:category)
  end
```

<h4>View</h4>
一覧画面にカテゴリー表示する。

```
<% @books.each do |book| %>
 
<td><%= link_to user_path(book.user.id) do %>
<%= attachment_image_tag book.user, :profile_image,format: 'jpeg',size: "40x40", fallback: "no_image.jpg" %>
<% end %></td>
 
<td><%= link_to book_path(book.id) do %><%= book.title %></td>
<td><%= book.body %></td>
<td><%= book.category%></td>
```

ここまではカラムを追加するだけなので、なんてこともなくできました。

<h2>タグのリンクで検索できるようにする</h2>

<h4>コントローラー/ルーティング記述</h4>

``` perl:books_controller.rb
   def search_book
     @book=Book.new
     @books = Book.search(params[:keyword])
   end
```

```perl:routes.rb
get "search_book" => "books#search_book"
```
<h4>Viewファイル記載 検索ワードを受け取る</h4>
viewを以下の通りに書き換えます。

```
<td>
<%= link_to book.category, search_book_path(keyword: book.category) %>
</td>
```
book.categoryを、search_book_pathにkeywordとして送っています。
そのキーワードをコントローラーで受け取っています。


<h4>モデルファイルに検索方法記述</h4>

```perl:book.rb
def self.search(search_word)
    Book.where(['category LIKE ?', "#{search_word}"])
end
```

完全一致で検索しています。
self.searchは、Book.searchですね。これはコントローラーから、(search_word)に入る値を送っています。

<h4>Viewの記述：検索結果の表示</h4>

```perl:views/books/search_book.html.erb

省略

<tr>
 <% @books.each do |book| %>
 
<td><%= link_to user_path(book.user.id) do %>
<%= attachment_image_tag book.user, :profile_image,format: 'jpeg',size: "40x40", fallback: "no_image.jpg" %>
 <% end %></td>
 
<td><%= link_to book_path(book.id) do %><%= book.title %></td>
<td><%= book.body %></td>
<td><%= link_to book.category, search_book_path(keyword: book.category) %></td>

省略

```

<h2>次回は、複数タグ付けれるようにする！！！！！！</h2>
【Google Cloud Day'21】「ここから始めるカスタマー データ プラットフォーム ～ 導入までの課題と解決のヒント ～」を視聴して

ここから始めるカスタマー データ プラットフォーム ～ 導入までの課題と解決のヒント ～
https://cloudonair.withgoogle.com/events/google-cloud-day-digital-21/watch?talk=d2-gl-17
" 「 様々なシステムに保持しているデータをマーケティングに活かしたい、でもどこから手を付ければいいか分からない 」とお悩みの方。
データ連携、加工、活用に必要な環境をスピーディに解決するためのヒントを、弊社取扱いソリューションを中心にお客様事例と共にご紹介。デジタルシフトへの第一歩を踏み出すための一助となれば幸いです。
＊ご紹介製品：Matillion + BigQuery + Treasure Data "

<table>
	<tr>
		<th>切り口</th>
		<th>内容</th>
	</tr>
	<tr>
		<th>顧客の課題</th>
		<td></td>
	</tr>
	<tr>
		<th>課題解決１</th>
		<td></td>
	</tr>
	<tr>
		<th>課題解決２</th>
		<td></td>
	</tr>
	<tr>
		<th>課題解決３</th>
		<td></td>
	</tr>
</table>

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/e7889813-2b5a-f415-b29d-be0c344e1076.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/a861313e-a65a-8436-091b-d8169ab41144.png)
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/bead2da9-ef4e-2fdf-4aad-684e172275b1.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/14101737-97fe-957c-d6f9-efcb417fb81d.png)
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/358cbaf0-9405-6213-60d5-e91c977d7d81.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/53b4bc05-3427-8543-278d-55206d10deb5.png)
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/8cc8dbbf-522e-965c-972a-9420177e04f0.png)
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/8a663c83-1a59-2efa-71e6-97dafe65ed7c.png)
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556084/9b809248-f0dd-8af9-786a-f89feac72aab.png)
AtCoderログ：0041 - ABC 133 B

# 問題

https://atcoder.jp/contests/abc133/tasks/abc133_b

## 問題文
> $D$ 次元空間上に $N$ 個の点があります。
> $i$ 番目の点の座標は $(X_{i1},X_{i2},\dots,X_{iD})$ です。
> 座標 $(y_1,y_2,\dots,y_D)$ の点と座標 $(z_1,z_2,\dots,z_D)$ の点の距離は $\sqrt{(y_1−z_1)^2+(y_2−z_2)^2+\dots+(y_D−z_D)^2}$ です。
> $i$ 番目の点と $j$ 番目の点の距離が整数となるような組 $(i,j)~(i<j)$ はいくつあるでしょうか。

## 制約
> ・入力は全て整数である。
> ・$2 \le N \le 10$
> ・$1 \le D \le 10$
> ・$-20 \le X_{ij} \le 20$
> ・同じ座標の点は与えられない。すなわち、$i \ne j$ ならば $X_{ik} \ne $X_{jk}$ なる $k$ が存在する。

## 収録されている問題セット
- [AtCoder に登録したら次にやること](https://qiita.com/drken/items/fd4e5e3630d0f5859067) ([第04問類題](https://qiita.com/drken/items/fd4e5e3630d0f5859067#%E7%AC%AC-4-%E5%95%8F--abc-087-b---coins-200-%E7%82%B9))

# 回答
## 回答1 (AC)
整数 n と n 個の点の座標をベクトルを受け取った後、i 番目の点と j 番目の点の距離を計算し、それが整数ならカウンター answer に1を加える、という処理になります。ここで 変化 i は 0 から n-1 まで、変数 j は i+1 から n-1 まで変化させていけば良いでしょう。

距離が整数になるとき、二乗和 sum ($\sum_k (x_{ik}-x_{jk})^2$ のこと) は平方数になっているので、sum が平方数かを判定することになります。ここでは二乗和の平方根の整数部分を2乗したらもとの値になるか (つまり $(\lfloor \sqrt{x} \rfloor)^2 \stackrel{?}{=} x$ をチェックすることにしました。実際、$x=a^2$ ならば $(\lfloor \sqrt{x} \rfloor)^2 = (\lfloor \sqrt{a^2} \rfloor)^2 = (\lfloor a \rfloor)^2 = a^2 = x$ となりますが、$x$ が平方数でない場合には等号は成立しません。

```C++:abc133b-1.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n, d;
  cin >> n >> d;
 
  vector<vector<int>> x( n, vector<int>(d) );
  for ( int i=0; i<n; i++ ) {
    for ( int j=0; j<d; j++ ) {
      cin >> x.at(i).at(j);
    }
  }
 
  int answer = 0;
  for ( int i=0; i<n; i++ ){
    for ( int j=i+1; j<n; j++ ){
      int sum = 0;
      for ( int k=0; k<d; k++ ){
        sum += pow(x.at(i).at(k)-x.at(j).at(k),2);
      }
      if ( pow(int(sqrt(sum)),2)==sum ) {
        answer += 1;
      }
    }
  }

  cout << answer << endl;
}
```

# 調べたこと
## [AtCoder の解説](https://atcoder.jp/contests/abc133/tasks/abc133_b/editorial) → [ユーザ回答](https://blog.hamayanhamayan.com/entry/2019/07/08/212904)
回答1と同じ方針でしたが、平方数判定には isSquare という関数を使っていました、私の環境ではこの関数は使えなかったので、自作されているのでしょう。

## [AtCoder の解説](https://atcoder.jp/contests/abc133/tasks/abc133_b/editorial) → [コンテスト全体の解説](https://img.atcoder.jp/abc133/editorial.pdf)
回答1と同じ方針でしたが、平方数判定では浮動小数を用いない実装になっていました。

# リンク
## 前後の記事
- 前の記事 → [AtCoderログ：0040 - ABC 211 C](https://qiita.com/RoadLynton/items/8c9f23ee6ece7037a8c6)
【学習録】Linux-DB システム構築/運用入門- part2【64日目】

# ふくだ学習録とは？
ふくだが学習したことの備忘録。
目に見える形で残すことによってやる気を出す個人的な作戦です。
他人に見せるように書いているわけではないので、すごく読みにくいです。

### 今読んでいる本
[Linux-DB システム構築/運用入門 (DB Magazine SELECTION)](https://www.amazon.co.jp/dp/4798120723)

# Chapter01 論理ボリュームマネージャ（LVM）を活用する

### ext3ファイルシステムとは
[第３章　ディスク管理とファイルシステム](https://users.miraclelinux.com/technet/document/linux/training/1_3_3.html)

### ファイルシステムの拡張方法
2種類ある。どちらの方法を取るのかは、ファイルシステム毎に異なる。

- オフライン拡張
    - マウントしたまま拡張する方法。
- オフライン拡張
    - アンマウントした上で拡張して再度マウントする。


### ddコマンド
[【 dd 】コマンド――ブロック単位でファイルをコピー、変換する](https://www.atmarkit.co.jp/ait/articles/1711/30/news027.html)


# 今日の一言
面白いpart2！
Slack webhook url取得方法

### Slack webhook url取得方法

### チャンネル作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/0d9691b2-2aa6-fb19-87c0-1d182e7631d4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/3361aac2-b222-7a84-6fab-d885926facfa.png)


### チャンネルのOpen channel detailsクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/444b01de-ca3b-92d0-0d11-6212f07f2b35.png)

### Integrations タップクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/af2b5b4d-78e1-4907-c7d7-5264ed740c10.png)


### Add an App クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/48434aa4-e00b-1f25-fbf9-a96a35d123aa.png)

### Incoming WebHooks クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/5e44430b-3a68-e1c3-995e-09ffd2e6885d.png)

### Configuration クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/48e83cb9-37fa-f838-f676-a0e52ef28b7a.png)

### Add to Slack
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/71f39b48-a46e-de0f-7066-e790607a3f3e.png)

### チャンネル選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/fd8ca823-a524-7984-8f72-5a3e8b862380.png)

### Add Incomming WebHooks integration選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/4b860d4a-c319-c091-52b9-3f72499a4bbb.png)

### Webhook URL 取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88511/787b25a2-af2b-5a91-5570-646c7851acd1.png)
超初心者がPythonでMACDと5分足チャートをPlotlyを使って同時にグラフに表示してみた

MACDの値はY軸の単位が違うので、ローソク足チャートと同時に表示するにはY軸が2つ必要になる。PlotlyでY軸2つを設定する方法をやってた。ここではグラフ表示部分のコードだけ紹介。MACDの計算やらはなんとなく察してどうぞ。

## 参考

https://cafe-mickey.com/python/plotly-7/

Plotlyを使ったグラフ化は以下でもやってます。こちらはY軸1つ。

https://qiita.com/emilia/items/369565bde41db2a94b95

MACDの計算方法は以下でやってます。

https://qiita.com/emilia/items/691f1822044087c1ab6d

## コード

``` py

# グラフ化
interval = 12
vals = []
labels = []
for i in range(len(df)//interval):
    vals.append(df.index[i*interval])
    labels.append(df.index[i*interval].strftime('%Y-%m-%d %H:%M'))

fig = go.Figure(
        data=[
                go.Candlestick(
                    x=df.index,
                    open=df.Open,
                    high=df.High,
                    low=df.Low,
                    close=df.Close,
                    hovertext=['date:{}<br>open:{}<br>high:{}<br>low:{}<br>close:{}'
                        .format(i.strftime('%Y-%m-%d %H:%M'), 
                                df.loc[i,'Open'],
                                df.loc[i,'High'],
                                df.loc[i,'Low'],
                                df.loc[i,'Close']) for i in df.index],
                    hoverinfo="text",
                    name="Candle",
                    yaxis='y1'
                ),
                go.Scatter(x=df.index, y=df.MACD, line=dict(color='blue', width=1), name="macd", yaxis='y2'),
                go.Scatter(x=df.index, y=df.Signal, line=dict(color='red', width=1), name="signal", yaxis='y2')
            ],
        layout = go.Layout(
                xaxis = dict(
                    ticktext = labels,
                    tickvals = vals,
                    tickangle = -90
                ),
                yaxis = dict(title='y1', side='left', showgrid=False, range=[df.Low.min(), df.High.max()]), 
                yaxis2 = dict(title='y2', side='right', overlaying='y', range=[min(df.Signal.min(), df.MACD.min()), max(df.MACD.max(), df.Signal.max())])
        )
)
fig.show()

```

## グラフ

![スクリーンショット 2021-07-29 9.11.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69727/68607af8-2184-b088-7cca-b851b88c0152.png)

## ちょっと説明

go.Candlestick、go.Scatterの引数でY軸を指定してる。デフォルトだとy1が左でy2が右。その後、layoutでyaxis(=左）とyaxis2(=右）の設定をしている。yaxis2でoverlayingを指定しとかないとyaxisを上書きしてy1のデータがグラフに表示されないので注意。

rangeでY軸の最小値と最大値を指定できるので、適宜計算する。

## 感想

Plotly便利だなぁ（小並感）
Java独習(第４章：制御構文)

Java独習第４章
<b>制御構文
・条件分岐
・繰り返し
・ループの制御
</b>

4-1 条件分岐
順次/選択/反復を繰り返してプログラムを開発していくことを構造化プログラミングという
if文の基本に関しては既知のため省略
注意としてはboolean型のモノを==で比較しない。書くときは以下のようにする

```
Java
if (flag){
 System.out.println("練習です")
}
```
もしfalseを示したいのならば!flagと書く必要がある
なお条件式に否定が入っているとわかりにくいので取り除いた方が可読性が上がる
また、あまりにも深いネストも避けるべき

switch文

```
Java
var rank = "甲"
switch(rank){
case "甲":
  //式=値1の処理
  System.out.println("Great");
break;
case "乙":
　//式=値2の処理;
  System.out.println("Better");
break;
defalt:
  System.out.println("??");
break;
}
```

caseは１種類だけでなく

```
Java
case "ワイン":
case"ウイスキー":
case "日本酒":
処理
```
このように複数書いても可能


4-2 繰り返し処理

```
Java
while(条件式){
　　処理内容;
}
```

条件式がtrueの時処理を繰り返す
do..whileは後検証で文の最後に;が必要

```
Java
do{
　　処理内容;
}while(条件式);
```

forは既知のため省略
注意点としては以下のようなこと
<b>・カウンター変数に浮動小数点を利用しない(演算誤差を防ぐため)
・ブロックは以下でのカウンター変数を操作しない(2足したいならi+=2とすればいいがi++を２回書くとか)
・ループ内でのオブジェクト作成と例外処理(処理効率を下げないため)</b>
配列を駆使してこのようなこともできる

```
Java
var data = String[]{"梅", "桜", "桃"};
for(var data : data){
　　System.out.println(value);
}
```

4-3　ループ制御
break命令=現在のループを強制的に中断し、ifと併用する
continue命令=現在の周回だけをスキップ
脱出したいときは```limit```を使用する(下のプログラムは九九の表)

```
Java
limit:
for(var i = 1; i< 10; i++){
 for(var j = 1; j <10; j++){
  var result = i * j;
  if(result > 50){
    break limit;
  }
  System.out.printf("%2d", result);
 }
 System.out.println();
}
```
DeepL API Freeを利用して一括翻訳【Python】

#はじめに
教授「僕が知らなさそうな英論を読んで、発表してください。あぁ、君の専門分野外でよろしく」
僕「。。。」
教授「いつ空いてる？僕は明日空いてるけど？」
僕「。。。」

DeepLはかなり精度良く翻訳してくれますよね。今回はDeepLのAPIを利用して、テキストファイルを一気に翻訳する機能をPythonで実装しました。
まず、[公式サイト](https://www.deepl.com/pro?cta=header-prices/)にて事前に登録しておき、API_KEYを取得しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/300353/403ee222-8c49-1713-3ac7-b2196fa46b09.png)
FREE版でも月50万文字まで翻訳可能なので、有難く使わせて頂きました。
※データセキュリティの問題があるため、取り扱うテキストには注意してください。

#最終的なコード
翻訳したいテキストファイル（target.txt）を翻訳して、翻訳結果を異なるテキストファイル（convert.txt）に出力します。

```python
import requests

API_KEY = #ここにAPIキーを入力してください。

# ファイルを開く
f = open('target.txt', 'r', encoding='UTF-8')
TEXT = f.read().replace('\n', ' ') # 改行が含まれている場合はスペースに置換

# URLクエリに仕込むパラメータの辞書を作っておく
params = {
            "auth_key": API_KEY,
            "text": TEXT,
            "source_lang": 'EN', # 入力テキストの言語を英語に設定
            "target_lang": 'JA'  # 出力テキストの言語を日本語に設定（JPではなくJAなので注意）
        }

# パラメータと一緒にPOSTする
request = requests.post("https://api-free.deepl.com/v2/translate", data=params) # free用のURL、有料版はURLが異なります
result = request.json()

# 保存
f = open('convert.txt', 'w', encoding='UTF-8')
f.write(result["translations"][0]["text"])
```

###翻訳言語の指定
翻訳言語を任意に設定するためには、上記コード内のparams内のxxx_langを変更してください。

```python
"source_lang": # ここで元のテキスト言語を指定します
"target_lang": # ここで翻訳後のテキスト言語を指定します
```

###FREE版とPRO版における実装の違い
ポストするURLが異なります。以下のようにプランに合わせてURLを指定してください。

```python
# FREE版
request = requests.post("https://api-free.deepl.com/v2/translate", data=params)
# PRO版
request = requests.post("https://api.deepl.com/v2/translate", data=params)
```

# 参考文献
https://deepblue-ts.co.jp/nlp/deepl-api-python/
[JavaScript] import, exportについて

私は普段phpを書いており、最近はVue.js, Nuxt.jsも触っているのですが、
動かすことのできるコードは書けています。
Vue, Nuxt を触る前まではES5しか書いたことがなく、
ほぼ毎日レベルで見ている `import`, `export` を正直理解できていなかったので、
記事にしてまとめました。

---
## `import`, `export` is 何

変数・関数・クラスを文字通りexportすることができ、そのexportされたものをimportすることで、外部モジュールに記載された処理等々を使うことができる機能。  
phpでいえば importは `require` で、exportはpublic修飾子にあたるようなもの。

## `export` はクラスで言う、public修飾子？

public修飾子というわけではないが、exportをしなければ、そのファイル内に機能が閉じる。
そのためexportをすれば外部から参照する手段となるので、そういう意味では "public" という認識で間違いない。

## `export` の名前付き、デフォルトについて

- 名前付き
  変数・関数・クラスに付けられた名前でexportする。
  
- デフォルト
  変数・関数・クラスに名前を付けても付けなくてもいい。1つのファイルに1回しか使えない。

## `import` の名前付き、デフォルトについて
exportの方法が2種類あるのでimportの方法も2種類ある。

- 名前付き

```js
import {needCurlyBrace} from './Foo.js';
```

- デフォルト

  名前付きのように波括弧は不要だが、import時に命名する必要がある

```js
import Bar from './Foo.js';
```

## `import`, `export` の構文について

色々あるので、下記MDNを参照してください。

[import](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import)
[export](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/export)

## export で被った名前をimportしたらどうなるの？

  名前が被っている場合は、importできない。import時に `as` を加えて**別名**にする必要あり。

## importしたファイル内に同じ名前があった場合は？

  こちらも同様、importできない。import時に `as` を加えて**別名**にする必要あり。

## 名前付きのほうが良く無い？import側で毎回命名って辛く無い？

  そう思う。し、世間もそのようである。  
  export defaultを使わないようにしている記事もいくつかあるから、そうなんだと思う。  
  TypeScript Deep Dive でさえもそのような記事がある。
  また、Tree-Shaking的な観点でもやっぱりアンチパターンのようです。

  - [Qiita開発チームがReactの開発で default export を使わなくなった理由](https://qiita.com/ohakutsu/items/218939c93c8fc8620d77)
  - [なぜ default export を使うべきではないのか？](https://engineering.linecorp.com/ja/blog/you-dont-need-default-export/)
  - [Avoid Export Default](https://basarat.gitbook.io/typescript/main-1/defaultisbad#dynamic-imports)

  ちなみにJetbrains WebStormでは`default`で使われているものもコードジャンプできた。けどね。  
  もしできなかったらどこになにあるか分からなくて地獄だね。
## export default 使うタイミングってどこよ？
  調べたけど特に見つからなかった。
  ご存知の方いらっしゃいましたら教えてください！
  
---

# まとめ

基本 `named export` を使おう。  
命名はいつも通り気をつけよう。
使っていない（無駄な）`import` は避けよう。  

## 編集後記

以前ざっと `import`, `export` を調べた時は、
基本的に `export default` 推奨、って結構書かれてた気がするんだけど、全くの真逆だった。
調べると件数は少ないながらも、そのような記述している昔の記事がでてくるので、
トレンド的にそのような時もあったのかな。。
AppleのMetalを使って見た感想

Metalは、一言でいうとApple版DirectXです。MetalはMacOS, iOS, iPadOSなどApple製品の基盤となるライブラリです。ここではMetalでゲームを作ることがイケてるのかを書いてみます。個人の感想なので間違い多くあるかと思います。

## MetalはiOSアプリのパフォーマンス改善には役立つ

Metalの関連書籍は、実はMacOSではなくiOS用に書かれています。これはiPhoneアプリとMacアプリの市場規模を反映した結果といえるでしょう。

## MacとLinuxはゲームをプレイするのに向いていない

コンピュータゲームは多くの種類のデバイスが相互に連携しています。グラフィックス、サウンド、ゲームコントローラ。これらのデバイスについて、ドライバがきちんと整備されているOSでなければゲームを快適にプレイすることは困難でしょう。MacOSはゲームに向いていないOSであると断言できます。そもそもAppleは純正のゲームコントローラを提供していません(*)。SteamのタイトルのほとんどはWindowsにしか対応していません。Linuxがゲームに向いていない理由もMacOS然りです。ただしコスパは非常にいいです。

(*) Apple製品ではXbox, PS4, PS5コントローラをペアリングして使用することを推奨しているだけで、一応MFi(Made For iOS)コントローラというものが存在するようです。

## MetalとVulkanはゲームプログラミングに向いていない

Apple Arcadeの上位タイトルであるFANTASIANはUnityで実装されています。MetalとVulkanを教育目的で学習することは意義のあることですが、ゲームを作成するために使用することは推奨されません。ただしクロスプラットフォームのゲームエンジンを構築するために使うのは自然なことです。

## Appleの公式サイトにはSwiftで書かれたMetalのサンプルがない

これには私も驚きました。しかし事実なのです。参考のためにソースとなるスレッドをリンクしておきます。

[Why is all Metal documentation written in only Obj-C?](https://developer.apple.com/forums/thread/93755)
【Rails】Bootstrapを導入する方法

####My Profile
プログラミング学習歴②ヶ月目のアカウントです！
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。　



#対象者

* Bootstrapを導入してレイアウトを整えたい方


#目的

* bootstrapを導入して、使える状態にする

#実際の手順と実例
###1.Bootstrapとは

* 「Bootstrap：ブートストラップ」は、Twitter社が開発したCSSの「フレームワーク」
* RailsにはCSSのデザインテンプレートが準備されていないので、ページデザインも各自で設計しなければなりません。
Bootstrapを利用することで、整ったデザインを効率的に作れるようになります。


###2.Bootstrap導入方法

1. Gemfileを編集

* gemを入れていきます。
* 下記の「jquery-rails」はBootstrapがjQueryというライブラリに依存しているため、導入します。
* 最終行に追記

```
Gemfile

:
:

gem 'bootstrap', '~> 4.5'
gem 'jquery-rails'
```

2.bootstrapファイルを読み込む

直接編集、もしくは下記のコマンドでファイル名を変更します。

```
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
```

3.bootstrapをSCSSに読み込ませる

こちらも最終行に追記

app/assets/stylesheets/application.scss

```
:
:

@import "bootstrap";
```

4.application.jsファイルを編集する

app/assets/javascripts/application.js

```
//= require jquery3
//= require popper
//= require bootstrap-sprockets
```

これで準備完了です。


###3.実際にBootstrapを使ってみる

良く下記のサイトを参考にBootstrapを使っています。

https://hackerthemes.com/bootstrap-cheatsheet/#card__list-group

Bootstrap4なので少し古いですが
使えるものばかりなのでぜひ参考にしてみてください
戦略か戦術か、システムエンジニアかプログラマーか＝Excel

#要約
戦術は技術
戦略は如何に戦術を効果的に活用するかの工夫

###戦術
戦略を実現するための技術
プログラムやサーバ技術、AIなど
ローコード、ノーコードで先細り

###戦略
業務とシステムをつなぐ人材
戦術はEUC（End User Computing）で

###EUC
といえば、Excel
業務に必須！

###キャリアパス
まずはExcelから
【AWS】ネットワークサービス

# ネットワークサービス

## その他のネットワークサービス

### Amazon Route 53
DNSを提供するマネージドサービス

- 外部向けDNS（**パブリックホストゾーン**）
- VPC内DNS（**プライベートホストゾーン**）

:::note info
DNS機能だけではなく、通信を制御できるルーティングポリシーを使用できる
→レコード作成時にRoute 53がクエリにどう応答するかの設定をする
:::
***

### ALIASレコード
Amazon Route 53独自のDNS機能

- ELBやCloudFrontのエンドポイントを**CNAMEレコードではなく、Aレコードとして指定できる**
- Zone ApexレコードをAレコードとして扱える

:::note info
・CNAMEレコード
ドメイン名に対応する、別のドメイン名（あだ名）が書かれている行

・Aレコード
ドメイン名に対応する、IPアドレス（IPv4形式）が書かれている行

・Zone Apexレコード
サブドメインを含まないドメインが書かれている行
※通常NSレコードとして利用される

・NSレコード
DNSサーバーの名前が書かれている行
:::

[![Image from Gyazo](https://i.gyazo.com/a033fc10012e8cf970a8c85e1a8e278f.png)](https://gyazo.com/a033fc10012e8cf970a8c85e1a8e278f)
***

### Amazon CloudFront
- エッジロケーションからコンテンツを配信する**CDNサービス**
- 物理的に最も近いCloudFrontのキャッシュサーバーからコンテンツを受け取れるため、**低レイテンシーなWebサービス**
- オリジンとして、ELB／EC2／S3などのAWSサービスや**オンプレミス環境のサーバーも指定できる**

:::note info
CDN（Content Delivery Network）
世界中に配置されているCDNネットワークから効率的にコンテンツを配信する仕組み
閲覧者から最も近い拠点から配信する
:::

### CloudFrontの機能
#### SSLによる通信の暗号化
- ユーザーが用意した**独自のSSL証明書**を導入できる
- CloudFrontからバックエンドのAWSサービスまでをSSL暗号化通信にできる

#### 署名付きURL
- **一定時間だけアクセスを許可するためのURLを発行**
- 限定したユーザーのみに公開できる

#### カスタムエラーページ
オリジンからエラーコードが返されたとき、**あらかじめ設定したエラーページ**を表示する

#### 地域限定（地理的ブロッキング）
CloudFrontへ接続するユーザーの地域情報に基づいてアクセスを**許可／拒否**できる

#### ストリーミング配信
Webサービス以外にも**映像／音声のストリーミング配信にも対応**

:::note info
ストリーミング
コンテンツをダウンロードしながら表示や再生すること
:::
***

### AWS Global Accelerator
- AWSが管理するネットワークを利用して、アプリケーションを高いパフォマンスで提供できるサービス
- インターネット経由よりも高いパフォーマンスが期待される

[![Image from Gyazo](https://i.gyazo.com/e9cca9e99bab165e31b7b8a066ded464.png)](https://gyazo.com/e9cca9e99bab165e31b7b8a066ded464)
***

### VPCフローログ
- **VPC内のネットワークインターフェイス（ENI：Elastic Network Interface）**で通信するトラフィック情報を取得するサービス
- Amazon CloudWatch Logsへ転送される

:::note info
ENI（Elastic Network Interface）
AWSで利用する仮想ネットワークインターフェイス
パブリックIPアドレス／プライベートIPアドレスを設定でき、EC2インスタンスなどに接続して利用する
:::
***

### Elastic IP（EIP）
- **固定のグローバルIPアドレス**を提供するサービス
- インスタンスにアタッチされていない／インスタンスが停止中の場合、時間単位で料金が発生

:::note info
通常、EC2インスタンスを停止するとIPアドレスは保持できなくなるため、IPアドレスが変わるたびにアプリケーションやDNSの変更は手間がかかる
:::
***

### AWS Resource Access Manager（RAM）
- AWSアカウント／AWS Organizations組織内でサブネットやAWS Transit Gatewayなどのリソースを共有するサービス
- **全てのアカウントで共通して利用するリソースを集約して運用の負荷やコスト効率を向上できる**

:::note info
通常、複数のアカウントを利用している場合、用途が同じでもそれぞれのアカウントでリソースを作成する必要がある
:::
***

### AWS DataSync
- **オンプレミス環境のストレージとAWSのストレージサービス間**でデータ転送を高速に行うことができるサービス　
- AWSへのデータ移行が主な利用用途
- 専用のエージェントを導入して利用する
- 転送先のストレージサービスとして、**S3／EFS／FSx for Windows**などがある

***
#### 参考
https://wa3.i-3-i.info/word12290.html

https://wa3.i-3-i.info/word12288.html

https://wa3.i-3-i.info/word1816.html

https://www.f5.com/ja_jp/services/resources/glossary/cache-server

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/cache-hit-ratio-explained.html

https://aws.amazon.com/jp/global-accelerator/faqs/

https://docs.aws.amazon.com/ja_jp/datasync/latest/userguide/how-datasync-works.html
Trying to Access Google Documents in Lightning

何か良くわからんが、サポートにケースを申請して解決したようです。
何かの役に立つかな？

https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000C3bxw


Googleドライブの外部データソースを作成します。

しかし、アクセス許可セットに移動して、[外部データソースアクセス]をクリックすると、

私が作成した外部データソースは利用できません。

また、外部システムの個人認証設定に移動してみました。

私が作成した外部データソースは利用できません。
ローカル環境にDynamoDBを構築する(Java上に構築)

#概要
表題通り、DynamoDBをローカル開発環境に構築する記事です。
DyanmoDBのインストール方法は下記２つの方法がありますが、今回はJava上に構築します。
1. Java上に構築する方法
2. Docker上に構築する方法

##1. Javaのインストール
1-1の状態であれば、Javaのインストールが必要です。installを実施しましょう。
1-2の状態であれば、次のステップに進んでください。

```shell:1-1jarのinstall未実施
~/develop/aws/dynamodb/dynamodb_local_latest $ java --v
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
```
```shell:1-2jarのinstall済み
~ $ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
```

<details><summary>Javaのinstall</summary><div>
[リンク](https://adoptopenjdk.net/)からOpenJDKをinstallします。</details>
![スクリーンショット 2021-07-27 11.28.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/b820224e-3d09-f80e-17c8-4914fe7e56eb.png)

![スクリーンショット 2021-07-27 11.29.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/bfb8bbe4-689a-c397-737f-9b27473d4788.png)

![スクリーンショット 2021-07-27 11.30.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/14af26c8-0cfd-2727-4ca6-402011246e92.png)

![スクリーンショット 2021-07-27 11.30.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/bc0ef032-b3c2-65f3-da3c-b4232c4d80e3.png)

![スクリーンショット 2021-07-27 11.30.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/895e3ff2-c9d4-001d-fb85-d171146b1792.png)

```shell:1-2jarのinstall確認
~ $ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
```
</div>
##2. DynamoDBのインストール
[リンク](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)より、DynamoDBをダウンロードする。

解凍ファイルを任意の場所に配置する。

```shell:解凍ファイルを配置
~/develop/aws/dynamodb $ ls
dynamodb_local_latest
```

```shell:実行
~/develop/aws/dynamodb/dynamodb_local_latest $ java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Initializing DynamoDB Local with the following configuration:
Port:	8000
InMemory:	false
DbPath:	null
SharedDb:	true
shouldDelayTransientStatuses:	false
CorsParams:	*
```

```shell:dynamoDBにアクセス
~/develop/aws/dynamodb/dynamodb_local_latest $ aws dynamodb list-tables --endpoint-url http://localhost:8000
{
    "TableNames": []
}
```
これで、インストール完了です！！
数式の制限


[Answersで回答する時に使う情報のまとめに戻る](https://qiita.com/Keiji_otsubo/items/9e6e0e946826133eddc7)


+ [ロングテキストエリアはFlowでは使えない？](https://qiita.com/Keiji_otsubo/items/0a5c3ee9cbdaa13c41be)

# 全般的な制限

+ 文字数制限-数式フィールドには、スペース、戻り文字、コメントを含め、最大3,900文字を含めることができます。数式にさらに文字が必要な場合は、個別の数式フィールドを作成し、それらを別の数式フィールドで参照します
+ 数式の評価後に表示される最大文字数は1,300文字です。
+ 保存サイズの制限-数式フィールドは、保存時に4,000バイトを超えることはできません。数式でマルチバイト文字を使用する場合、保存サイズは文字数とは異なります。
+ コンパイルサイズの制限-数式フィールドは、コンパイル時に5,000バイトを超えることはできません。コンパイルサイズは、参照するすべてのフィールド、値、および数式を含む数式のサイズ（バイト単位）です。
+ コンパイルサイズと文字数制限の間に直接的な相関関係はありません。TEXT、DATEVALUE、DATETIMEVALUE、DATEなどの一部の関数は、コンパイルサイズを大幅に増加させます。
+ 数式で参照されているフィールドは削除できません。削除する前に、数式からフィールドを削除してください。
+ キャンペーン統計フィールドは、フィールド更新、承認プロセス、ワークフロールール、または検証ルールの数式では参照できませんが、カスタム数式フィールドでは参照できます。
+ 連絡先のカスタム数式項目は、個人アカウントから参照することはできません。詳細については、個人アカウントでのカスタム数式項目の使用を参照してください。

+ [数式フィールドの値が変更されたときに起動される更新後トリガーがあります。しかし、トリガーは発動しません。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007HL82p)

:::note
https://salesforce.stackexchange.com/questions/140168/formula-field-doesnt-fire-trigger

https://salesforce.stackexchange.com/questions/211168/formula-not-having-updated-value-in-after-trigger-apex-trigger
:::

# Long Textの制限

Error: You referenced an unsupported field type called "Long Text Area" using the following field: Long_text__c

Rich/long text area fields aren't available for formulas. If you need to pull this information through I think you'll need to use a workflow field update or trigger to copy it.

 

https://www.forcetalks.com/salesforce-topic/salesforce-long-text-area-fields-in-formulas/

[Salesforce: Long Text Area formula field](https://www.simplysfdc.com/2014/09/salesforce-long-text-area-formula-field.html)


 

# リッチテキスト領域フィールドの制限

リッチテキスト領域フィールドは数式で使用できません。これらは、検証ルールとワークフロールールで使用できます。

リッチテキストエリアでは使用できない機能があります。

たとえば、通常はISNULLを使用してフィールドが空かどうかを確認できますが、リッチテキストフィールド領域フィールドでは、代わりにLEN（Rich_Text_Area_field_Name）=0を使用する必要があります。

上記の例では、画像がリッチテキスト領域に挿入されている場合、画像の後にスペースを追加しない限り、LENも機能しません。

Salesforceは、リッチテキスト領域フィールドごとに最大131,072文字をサポートし、サイズは32KBから128KBです。


# コンパイルサイズを減らす

+ CASE（）の「デフォルト」値を活用する
+ ネストされたOR（）ステートメントの代わりにCASE（）を使用する
+ ロジックを再配置します

+ [Entry criteria exceptions for single users](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007Jk5y0)

I think it would be possible if the number of target users was small. Too many and you may run into length limitations.
Instead of hard-coding user IDs, consider using usernames, roles, and profiles.

You can make it a little smaller by using a case.


# 参考資料

+ [数式フィールドの制限と制限](https://help.salesforce.com/s/articleView?id=sf.formula_field_limits.htm&type=5)
+ [リッチテキスト領域フィールドを持つ数式フィールドを作成できません](https://help.salesforce.com/s/articleView?id=000329422&type=1)


# うまく作成できない場合

+ [Field Preferred_Provider_Axio__c is a picklist field. Picklist fields are only supported in certain functions. ](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000PYu2F)

:::note
You know what I tried to create again with the above formula field and it is working absolutely fine. 

上記の数式フィールドを使用して再度作成しようとしたところ、まったく問題なく動作していることがおわかりでしょう。
:::
DateFrameのフィルタリング

#概要
bool型のシーケンスを指定する事で**True**のものだけを取り出す。
変数に対して**.loc[df["カラム"] 条件式]**とする事で、条件式に当てはまる要素を含む行のDataFrameが作成される。

```python
import numpy as np
import pandas as pd
np.random.seed(0)
colums = ["apple", "orange", "banana", "strawberry", "kiwifruit"]

df = pd.DataFrame()
for colum in colums:
    df[colum] = np.random.choice(range(1, 11), 10)
df.index = range(1, 11)

display(df)
print()

print(df.index % 2 == 0)

display(df[df.index % 2 == 0])
print()

df = df.loc[df["apple"]  >= 5]
df = df.loc[df["kiwifruit"] >= 5]
# df = df.loc[df["apple"]  >= 5][df["kiwifruit"] >= 5]でも可

display(df)
```

#出力結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1736279/cb20e8e9-eba0-796a-798c-534271fe3cb8.png)
[2021年]Promoiseでwait風メソッド

# 前置き

以前こんな記事を書いてLGTMをたくさんもらいましたが今回はその別解でよりモダンな方法を紹介します。

https://qiita.com/ki-sato/items/3b0bb69f16a7381d9871

async, await, Promiseメソッドが実装されたことにより、より簡単に、しかも非jQueryでwaitを実現できるようになりました。

# 実装

```javascript
  function wait(msec) {
    return new Promise((resolve) => setTimeout(resolve, msec));
  }
```

これだけです。え？これどう動かすの、と言われたら使い方は二種類あります。

# パターン１

```javascript
console.log(new Date);

wait(5000).then(() => {
  console.log(new Date);
});
```

このタイプは単純にPromiseのメソッドチェーンを使っているのでどこでも使えます。ただしメソッド自体は非同期で走るのでwaitは素通りされてします。

# パターン2

```javascript
async function test() {
  console.log(new Date);
  await wait(5000);
  console.log(new Date);
}
```

今度のタイプはasyncメソッドの中であればawaitでpromiseを待つことができることを利用しているのでsleep関数みたいな使い方ができます。

javascriptは日々進化していて便利になっていってますのでついていくのが大変な反面面白い言語です。
看護師が医療情報技師合格に向け勉強してみた（2019　情報処理技術編）

医療情報技術者試験を2021年8月に受験することになったので、自分用にまとめてみることにしました。もしよろしければご活用ください。

#自己紹介
どうでもいいとは思うのですが、軽く自己紹介しておきます。
大学卒業→看護師・保健師として病棟で勤務→現場を効率化したいと思いITの勉強スタート
基本情報技術者合格→Java　silver se11に合格しました。
twitterで医療情報技術者という試験があるらしいとの情報を教えていただき勉強開始。試験まで後1ヶ月です。（ヒィー、やばい）

#環境
環境というか、参考書の紹介です。

* 医療情報技師能力検定過去問題集
* 医療情報 医療情報システム編
* 医療情報　情報処理技術編

#情報処理技術編（2019）を説いてみての不明点
めちゃ初心者的な視点からになりますよ。基本情報の知識も大きく抜けました。（悲しい）

2.　データ量を表す接頭語はM<G<T<P<E
読み方はメガ、ギガ、テラ、ペタ、エクサだそうです。テラ以上知らなかった。もはや知る機会すらなかったw各々1000倍（厳密には1024倍だそうです。）

6.　バッチ処理とは
手順を決めて複数の処理をまとめて実施する方法らしい。具体例や詳しい説明は下記をご参照ください。
https://www.imkk.jp/blog/what-is-batch-processing.html　

7.　SSDとは
そもそもパソコンにそこまで興味があったわけではないので、パソコンの仕組みとかを何回調べてもすぐ忘れてしまいます。
こういうのはいつか受けようと思っていた応用情報技術者のテキストにて振り返る。

## 動画コーディック

* H.263　テレビ電話に用いられる動画圧縮方式
* H.264　デジタルハイビジョン対応の動画コーデック
* MPEG-1　ビデオCDに用いられる

##サービス名称とポート番号
* POP３　１１０
* SMTP ２５
* SMTPs ４６５
* IMAP4s ９９３
* POP3s 995


##情報セキュリティ３要素

情報セキュリティ３要素（CIA）

* 可用性・・・他にアクセスが可能なことを示す
* 機密性・・・認可されていない個人やエンティティまたはプロパティに対して情報を使用不可または非公開にする特性を示す
* 信頼性・・・意図した動作及び結果に一致する特性


##情報セキュリティ関連の用語
* ISMS（情報セキュリティーマネジメントシステム）・・・情報セキュリティに特化したリスクマネジメントシステム
* NISC（内閣サイバーセキュリティセンター）・・・国の機関における情報セキュリティーを管轄する組織、２０１５に内閣官房に設置された
* CSIRT・・・コンピュターやネットワーク上で問題が発生していないか、発生した場合にはその原因の解析や影響範囲の調査を行う組織
* WPA2・・・無線LANのセキュリティプロトコルの認証プロトコル
Wiresharkでパケットトレースの収集と解析

Wireshark。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/792410ed-215f-2018-f592-b3e42632f7f7.png)

## Wireshark

### ダウンロード
https://www.wireshark.org/#download

### ざっくり

http://raven.air-nifty.com/night/2009/08/wireshark-af0f.html

> Wiresharkでトレースファイルを読み込み、最初から最後までざっとスクロールし、
再送や欠落が大量に出ていないかどうかを確認する。
デフォルトでは黒背景に赤系統の配色で表示されるはずだ。
ここで着目するのは主に次の4種類である。

> TCP Out-Of-Order
TCP Dup ACK
TCP Previous segment lost
TCP Retransmission

> Analyze→Expert Infoを使うと、取得パケットの中でErrorやWarningが何個あるかを表示してくれるので便利である。

> 異常シーケンスが多い場合は、これをなくすことが最初のアクションである。例えば次のような対処がある。

> * ケーブルを交換してみる。
* ネットワークスイッチの別のポートにつないでみる。
* 交換可能なものであればトランシーバ（SFP）を取り替えてみる。
* ネットワークスイッチのログを確認する。
* サーバのログを確認する。

![10.220.64.36to10.220.64.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/8190bca9-607c-e321-fc77-039dfc43133d.png)


### トラブル例
[ネットワークの接続が20秒でタイムアウトしている](https://shimaji.exblog.jp/12854771/) ような状況が起こった。
タイムアウト繋がりで [AWSのこんな内容](https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-socket-connection-timeout-error/) も調べたり。逡巡したが、結局、Wiresharkで捕捉した情報を頼りにお客様に再確認することに、など等。


http://piyopiyocs.blog115.fc2.com/blog-entry-564.html

https://knowledge.sakura.ad.jp/6286/


## その他

https://hldc.co.jp/blog/2020/04/15/3988/

https://ichibariki.com/entry/2019/03/21/215442

以上寄せ集めのメモです。参考になればさいわいです。
東京都内 新型コロナウイルス陽性者数の分布マップを作ってみた

# 目的
都内在住・在勤の者として、どのあたりで陽性者数が多いのかが一目でわかりやすくしたかったので個人で開発しました。プログラミング初心者のため、見やすさなどで至らぬ点もあるかとは思いますが、どうぞ温かい目で見守って下さいますと幸いです。
【今回作ったもの】
https://nobukuni-hyakutake.github.io/covid19tokyo/
時系列推移グラフも一緒に入っていますが、その解説はまた別でしようと思います。

# 内容概要
東京都のマップ上において、
1. 直近7日間の陽性者数(10万人あたり)がマークの直径と数字で表されています
2. 陽性者数の前週比がマークの色で表現されています
スマートフォンでも見られるように作ってあります。
# 作成環境
* 言語：Python3.9
* 使用ライブラリ： データ前処理はPandasとNumpy、マップ作成はJSONとFolium
* 使用サービス： GitHub pages

# コード詳細
https://github.com/Nobukuni-Hyakutake/covid19tokyo

# 特徴
* Pythonプログラムで元データCSVの取り込みからグラフのHTML出力まで一気に出来るので、毎日のデータ更新が簡単です。Pythonプログラムの実行→Gitコミット→Gitプッシュするだけで、最新データの公開が完了します。(自動的に定期実行させる方法もあるかも知れませんが、全然知識がなくやっていません)

# 開発した感想
* プログラミングを全く知らない状態から、半年かけてPythonを勉強して作り、なんとかものに出来てよかったです。モチベーションとしては、これが作りたかったのもありますが、仕事(コロナとは関係なし)でも使えるスキルを身につけたかったこともあります。
* 受け身的に本をただ読むだけより、具体的に開発したいものがあって必要に迫られたほうが、プログラミングの勉強がはかどるなと感じました。
* 区市町村別陽性者数のCSVオープンデータを公開して下さった[Code for Japan](https://www.code4japan.org/)、開発を応援してくださった[Code for Mitaka/Musashino](https://code4mm.org/)の皆様へ感謝申し上げます。

# 参考にした主なサイト
https://takaishikawa42.hatenablog.com/entry/2019/01/11/234716

https://www.monotalk.xyz/blog/python-folium-%E6%8C%87%E5%AE%9A%E3%81%A7%E3%81%8D%E3%82%8B-%E5%9C%B0%E5%9B%B3%E3%81%AE-%E3%82%BF%E3%82%A4%E3%83%AB-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

#　参考にした主な本
[データ分析者のためのPythonデータビジュアライゼーション入門 コードと連動してわかる可視化手法](https://www.shoeisha.co.jp/book/detail/9784798163970)

# 終わりに
感染された方へ、お見舞い申し上げます。
また、都内在住の方や他県から来られる方は、どうぞご参考にして頂ければと存じます。
【Chrome】おすすめ拡張機能5選（勉強・調べ物生産性アップ）

# はじめに
はじめまして、プログラミング初学者の[@kat_log](https://twitter.com/kat__log "Twitter")と申します。
勉強や調べ物が捗るクロームの拡張機能をご紹介いたします。

# 一覧
##[isear](https://chrome.google.com/webstore/detail/isear/cihgmhbajkkbciealhbbfhbbnmgaekdj?hl=ja "chromeウェブストア")
+ グーグルの検索結果が、単語単位で色別にハイライトされます！
+ 検索結果からアクセスした先のページもハイライトされます！

↓使用イメージ（公式から拝借しております）
![Top_animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/2e6722d0-7160-9be2-e8aa-f2e2b4673367.gif)

##[Weava Highlighter - PDF & Web](https://chrome.google.com/webstore/detail/weava-highlighter-pdf-web/cbnaodkpfinfiipjblikofhlhlcickei "chromeウェブストア")
+ ウェブページの任意の箇所にマーカーを引くことができます！
+ 引いたマーカーにコメントを付けれます！
+ アカウントを作成することで端末ごとに同期もできます！

↓使用イメージ、26秒あたりからマーカー引いてます（公式から拝借しております💦）
<iframe width="560" height="315" src="https://www.youtube.com/embed/K4THlgVyNJc?start=24" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

##[uAutoPagerize](https://chrome.google.com/webstore/detail/uautopagerize/kdplapeciagkkjoignnkfpbfkebcfbpb "chromeウェブストア")
+ 複数ページにまたがる記事を1ページで表示してくれます！
+ オンオフも簡単にできます

##[その本、図書館にあります。](https://chrome.google.com/webstore/detail/%E3%81%9D%E3%81%AE%E6%9C%AC%E3%80%81%E5%9B%B3%E6%9B%B8%E9%A4%A8%E3%81%AB%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82/ldidobiipljjgfaglokcehmiljadanle "chromeウェブストア")
+ 地元の図書館を設定することで、Amazonの本のページにアクセスしたときに、登録した図書館にその本があるのかを教えてくれます！（図書館を活用することで節約になります！）

↓使用イメージ
![Screen Shot 2021-07-25 at 11.38.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/ad753fa4-eafd-8b21-1605-29062256cebb.png)

##[iKnow! ポップアップ辞書](https://chrome.google.com/webstore/detail/iknow-%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E8%BE%9E%E6%9B%B8/omfegkgipldobddijcpagdabgifghdgb?hl=ja "chromeウェブストア")
+ 英単語にマウスオーバーすると日本語の意味がポップアップされます！

↓使用イメージ（公式から拝借しております！）
![unnamed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/1b93e1b9-83fd-c8fc-cffe-7fbf258267d9.jpeg)


# おわりに
閲覧ありがとうございました！
他にも「こんな拡張機能もあるよ！」といったものがありましたらぜひコメントで教えていただければ嬉しいです。
ありがとうございました！

# 参考
 - [isear](http://isear.intelfike.net/ "トップページ")
 - [Weava Highlighter - PDF & Web](https://www.weavatools.com/　"トップページ")
 - [その本、図書館にあります。](https://sonohon.com/ "トップページ")
 - [iKnow! ポップアップ辞書](https://iknow.jp/popup_dictionary_extension "拡張機能紹介ページ")
初学者による復習[エラー文nil:NilClassを解決しよう]

今回はよく見るエラー文に関しての復習。
私が実装しているアプリで以下のエラー文が。。。

![IMG_8627.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1678154/52c44865-3e6c-6c39-edde-afdeb2acad8e.jpeg)

注目したいのはnil:NilClassという文章。
これはどういうことかというと**何も存在しない**という意味。
例えば「ボールをバットで打とうとバッターボックスに入ったけどバット持ってないよ！」
みたいな例え。（著者の学の無さが比喩に出ているのはお許しください。伝われ！！）

ここで怒られているのは

```ruby
<% @messages.reverse_each do |message| %>
   <p><%= message.text %></p>
<% end %>
```

上記のように記述しているが
**「メッセージ持ってないじゃん！」**と怒られている。

なのでコントローラーの方に以下のように記述。

```ruby
def show
    @messages = Message.all
    @message = Message.new
end
```

これでメッセージを持たせたのでエラー解消！
比喩で例えたバットを持ってバッターボックスに入れたということ。
2021/07/27開催 Connpassイベントランキング

# 申込数TOP5

|順位|イベント名|グループ|申込数|定員|
|:---:|:---|:---|:---:|:---:|
|:one:|[【リクルートグループ主催】ビジネスをグロースするデザインプロセスを解剖する](https://business-and-creative.connpass.com/event/212648/)|[BUSINESS&CREATIVE](https://business-and-creative.connpass.com/)|386|400|
|:two:|[DMM meetup #31 〜DMMのインフラを支えるITインフラ本部の取り組み紹介〜](https://dmm.connpass.com/event/219572/)|[DMM.com](https://dmm.connpass.com/)|125||
|:three:|[SORACOM Meetup〜Wi-Fiからもソラコムを！はじめよう新サービスSORACOM Arc](https://soracom.connpass.com/event/218134/)|[SORACOM](https://soracom.connpass.com/)|124||
|:four:|[ビジュアルプログラミングIoTLT vol.8](https://iotlt.connpass.com/event/215203/)|[IoT縛りの勉強会! IoTLT](https://iotlt.connpass.com/)|86|91|
|:five:|[RPA勉強会 UiPath Talk～UiPath × VBA連携を学ぼう～](https://rpacommunity.connpass.com/event/219177/)|[RPACommunity](https://rpacommunity.connpass.com/)|81|89|
HDD以外の補助記憶装置

#リムーバルメディア
リムーバルメディアはバックアップ用途やソフトウェアの配布媒体として広く利用されている。

##光ディスク
レーザー光線でデータの読み書きを行うのが光ディスク装置という。

###CD

*　CDーROM　読み取り専用
*　CDーR　一度だけ書き込める
*　CDーRW　何度でも書き込める

###DVD
CDよりも波長の短い赤色レーザーで記録するため、ビットの高密度化が可能

* DVD-ROM　再生専用型のDVD
* DVD-R 追記型のDVD
* DVD-RW 　書き換え可能なDVD
* DVD-RAM　書き換え可能なDVD

###MO
magnet optical disk
レーザー光線と磁気によってデータの読み書きを行うもの

###磁気テープ
テープ状のフィルムに磁気を使って読み書きを行うカセット型の記憶装置

###フラッシュメモリ
PROM（programmable ROM）の一種を、補助記憶装置に転用したもの

###SSD
フラッシュメモリを記憶媒体として内蔵する
単価は高くなる
高速化が図れる
書き込み回数に制限がある
paiza POH steins_gate #paizaシュタゲ


## 正則表現のエントリーポイント

```sh:1.sh
#!/bin/sh
sed -z 's/\n/;/'
```

## 性能解析のタイプセーフ

経験値、振り分け時は分割できるのか(サンプルが丁寧だったので助かった)

```rb:2.rb
#!/usr/bin/ruby
n,k,*a=$<.read.tr('.','').split.map &:to_i
#p a.map{|e|(e+k-1)/k}.sum # 分割できないならこっちの式になる
p (a.sum+k-1)/k
```

## 例外処理のタブーサーチ

```rb:3.rb
n,_,l=gets.split.map &:to_i
a=n.times.map{gets.split.map &:to_i}
p *l.times.map{
	gets.split.map &:to_i
}.each_cons(2).map{|x,y|
	z=y.zip(x).map{|a,b|a-b}
	a.index(z)+1
}
```

## 進化戦略のプロシージャ

**問題文に記載がないが、どの部屋にも直接移動できる。** 連結成分がループならデッドロックあり。

```rb:4.rb
#!/usr/bin/ruby
n,m=gets.split.map &:to_i
h=Hash[*m.times.flat_map{
	gets.split.map &:to_i
}]
visited={}
h.each{|k,v|
	next if visited[k]
	next if k==v
	s=k
	while h.has_key?(k)
		nxt=h[k]
		break if visited[nxt]
		if nxt==s
			puts :Yes
			exit
		end
		k=nxt
		visited[k]=true
	end
}
puts :No
```

なお隣り合った部屋にしか移動できない場合は部屋の並び順が一致しているか見れば良い(はず)。

```rb:4_WA.rb
#!/usr/bin/ruby
n,m=gets.split.map &:to_i
a,b=m.times.map{
	gets.split.map &:to_i
}.transpose.map{|e|
	f=Hash[*e.sort.each_with_index.flat_map{|e,i|[e,i]}]
	e.map{|x|f[x]}
}
puts a==b ? :No : :Yes
```

問題文、あかんと思います。。

## ネット・ガーディアンの奮闘

点数が最もマイナスかつ削除可能なマスを削除。
…TLEが非常にきついです笑

```rb:ranking.rb
#!/usr/bin/ruby
D=[[-1,0],[1,0],[0,-1],[0,1]]
def is_safe_to_remove(r,xd,yd)
	cnt=0
	visited={}
	r.size.times{|y|r[0].size.times{|x|
		next if [x,y]==[xd,yd] || r[y][x]==0 || visited[[x,y]]
		cnt+=1
		visited[[x,y]]=true
		q=[[x,y]]
		while !q.empty?
			cx,cy=q.shift
			D.each{|dx,dy|
				nx=cx+dx
				ny=cy+dy
				if 0<=nx&&nx<r[0].size && 0<=ny&&ny<r.size && [nx,ny]!=[xd,yd] && r[ny][nx]==1 && !visited[[nx,ny]]
					visited[[nx,ny]] = true
					q.push [nx,ny]
				end
			}
		end
	}}
	cnt==1
end
h,w=gets.split.map &:to_i
a=h.times.map{gets.split.map &:to_i}
r=h.times.map{[1]*w}
start_time = Time.now
while Time.now - start_time<15
	#p r
	mh=mw=nil
	h.times{|y|w.times{|x|
		if r[y][x]==1 && a[y][x]<0 && (!mh || a[mh][mw]>a[y][x]) && is_safe_to_remove(r,x,y)
			mh=y;mw=x
		end
	}}
	break if !mh
	r[mh][mw]=0
end
r.each{|e|puts e*''}
```
NORENのDefineタグで空文字列を代入する方法

NORENの記事が少ないので、少しでも役に立てればと思い、記事を執筆しました。

## 環境
CMS：NOREN6

## 1. NORENのDefineタグの書き方
NORENのDefineタグの書き方は主に下記の2種類があります。
<br>
1つ目は開始タグと終了タグで、代入したい値を囲む方法です。

```NOREN
[[--DefineStart,name:$hoge--]]値[[--DefineEnd--]]
```

<br>
2つ目は開始タグと終了タグを省略する方法です。

```NOREN
[[--Define,name:$hoge,value:値--]]
```

## 2. 空文字列の代入方法
次に空文字列を代入したい場合はどうすればいいのか？
<br>
1つ目の開始タグと終了タグで、代入したい値を囲む方法の場合はシンプルです。

```NOREN
[[--DefineStart,name:$hoge--]][[--DefineEnd--]]
```

これでOKです。
<br>
2つ目の開始タグと終了タグを省略する方法の場合はこうなります。

```NOREN
[[--Define,name:$hoge--]]
```

すごくシンプルです。
シンプルすぎて気が付くまでに時間がかかりました。
NORENのアクションタグでForループを回すときのコツ

NORENの記事が少ないので、少しでも役に立てればと思い、記事を執筆しました。

## 環境
CMS：NOREN6

## 1. NORENのForタグの特徴
NORENのForタグには使い辛い特徴があります。

例えば、PHPでfor文を回すときは次の様に書くと思います。

```PHP
<?php
    $max = 3;
    for($i=0; $i<$max; $i++){
        // 処理内容
    }
?>
```

ですが、NORENの場合はこれが出来ません。
より詳しく言うと、Forタグでの変数展開が出来ません。
なので、上記のコードをNOREN場合はこうなります。

```NOREN
[[--ForStart,from:0,to:3--]]
    [[--- 処理内容 ---]]
[[--ForEnd--]]
```

まさかのループ回数が決め打ちです。
先述の通り、Forタグ内での変数展開は出来ないので、どうしてもこうなってしまいます。


そして、NORENの場合は配列変数を扱うことができない為、foreachに該当するアクションタグも活用できません。
（※厳密には違いますが…）

## 2. どうしてもForタグで変数を使いたい！
先程、NORENでは配列変数が扱えないため、foreachに該当するアクションタグも活用出来ないとお伝えしたのですが、力技でどうにかすることが出来ます。

まず、配列変数についておさらいですが、PHPの場合ですと下記の様になりますね。

```PHP
<?php
   $a = [0, 1, 2, 3];
?>
```

では、NORENの場合はどうなるのか？
結論から言うと配列変数は存在しましません。

ですが、Forタグのin属性を活用することで、Forタグでのみ利用できる配列変数もどきを作ることが出来ます。

```NOREN
[[--- 配列変数の宣言（配列の値はセミコロンで区切ります） ---]]
[[--DefineStart,name:$array--]]0;1;2;3[[--DefineEnd--]]

[[--ForStart,name:$value,in:[%$array%]--]]
    [[--- 処理内容 ---]][[--Write,name:$value--]]
[[--ForEnd--]]
```

まず、Defineタグで変数を宣言します。
この際、セミコロンで区切ることで、配列のような変数を作ることが出来ます。
（※Forタグのin属性の区切り文字がセミコロンのため）

inタグは配列の変数展開が出来るので、この様に力技でfor文を回すことが出来ます。
これでとりあえずForループが回せるようになります。

コードは見づらくなりますが、色々と活用出来ると思います。
よろしければ、お使いください。