OmniAICreator/Qiita-1.07M huggingface dataset:
UiPath Studio 2023.4.0 Activity 標準全ツリー(チートシート)と、2022.10.3との差異（プロセスの対応OS：Windows）

## 注釈
プロセスの対応OSが「Windows」用ですので注意してください。（Windows-レガシ用は[こちら](https://qiita.com/TechPark55/items/0ca44f7a90758595ec3d)）
UiPath Studio 2023.4.0で取得したActivityツリー（デフォルトのままで追加/削除Activityは無し）です。
モダン使用のツリーですが、クラシック分も後ろの方にあります。
皆さんなりのビューアで見るでしょうし、等倍でなく少し縮小しても内容は判別できますし、少しスクロールして見るのは許容範囲という方もいると思うので、いくつかのサイズを置いておきます。
（下に行くほど横長です。サイズが半端値なのは、できるだけ小さい矩形範囲に納めるためです。）

## ツリー取得時のプロジェクトの依存関係（プロセスの対応OS：Windows）
UiPath.Excel.Activities = 2.20.1
UiPath.Mail.Activities = 1.18.2
UiPath.System.Activities = 23.4.2
UiPath.Testing.Activities = 23.4.0
UiPath.UIAutomation.Activities = 23.4.4

## Activityツリー
2541x1555
![US2023.4.0_Activity_利用可能以降_PadL2_H1555_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/07b505a4-ecc7-eaf3-72c9-2f30da68c0c1.png)

2817x1388
![US2023.4.0_Activity_利用可能以降_PadL2_H1388_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/d1dcde50-ac54-a024-c191-b520b64bf8c0.png)

3101x1267
![US2023.4.0_Activity_利用可能以降_PadL2_H1267_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/b8129585-59bd-b5f5-9e3b-ba7fa9650ae5.png)

3323x1170
![US2023.4.0_Activity_利用可能以降_PadL2_H1170_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/8d9d725e-8e81-4f86-4b34-55c0872ea61b.png)

3548x1074
![US2023.4.0_Activity_利用可能以降_PadL2_H1074_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/fea8928b-484d-5924-0459-b4d12fd1c1a9.png)

3834x1002 **← 今回4Kディスプレイでの等倍表示で横幅を最大限に活かせるサイズを追加しました**
![US2023.4.0_Activity_利用可能以降_PadL2_H1002_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/22f811b9-da7f-d61f-c20a-62cbadb4f511.png)

## 2022.10.3と2023.4.0の差異
左が2022.10.3、右2023.4.0で差異を抜き出しています。差異はあくまで「絵的に」見た目の差であり、機能の差は表していません。
中央部の赤文字数字、記号は連番と、A:追加、D:削除、U:更新を表しています。（連番はこの説明をわかりやすく書くために付加）
例えば、1Uであれば日本語訳が変わっています（アイコンが変わっているだけの場合もあります（例:25U等））。
Activityツリーの並び位置が同じ場合U:更新判定となっていますが、日本語訳変更で並びが変わってしまった場合、D:削除とA:追加となる場合もあります（例:17Dと18A等）。
（補足：アイコンや文字のごく小さい範囲（今回は5Line分未満）のみの変更は抽出していません。アイコンの絵柄の一部が変わっただけと判断して、その程度の差異なら不要だろうと）
今回5Uなど行の途中で切られていますが、これはアイコンの一部が変更されているのみです。今までの記事では手作業でこういうのは除去していましたが、手間なのと見たらわかるだろうということで今回からそのまま出すこととします。ご了承下さい）
それ以外でここに出ていない部分は（自作比較アプリにバグがなければ）一致しているはずです。（コンペアという題材で本一冊書けるとか）
![差異_22.10.3比.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/009e876c-5236-0c8b-2c7a-88a1aa911873.png)

## 2022.10.3と2023.4.0の差異記号が付加されたActivityツリー
3548x1074のみ
![US2023.4.0_Activity_利用可能以降_PadL2_差異_H1074.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/4031a970-2cf5-0037-f47d-b88a6417d5b9.png)
UiPath Studio 2023.4.0 Activity 標準全ツリー(チートシート)と、2022.10.3との差異（Windows-レガシ）

## 注釈
プロセスの対応OSが「Windows-レガシ」用ですので注意してください。（Windows用は[こちら](https://qiita.com/TechPark55/items/fce7f38dee0e87f2e810)）
UiPath Studio 2023.4.0で取得したActivityツリー（デフォルトのままで追加/削除Activityは無し）です。
モダン使用のツリーですが、クラシック分も後ろの方にあります。
皆さんなりのビューアで見るでしょうし、等倍でなく少し縮小しても内容は判別できますし、少しスクロールして見るのは許容範囲という方もいると思うので、いくつかのサイズを置いておきます。
（下に行くほど横長です。サイズが半端値なのは、できるだけ小さい矩形範囲に納めるためです。）

## ツリー取得時のプロジェクトの依存関係（Windows - レガシ）
UiPath.Excel.Activities = 2.20.1
UiPath.Mail.Activities = 1.18.2
UiPath.System.Activities = 23.4.2
UiPath.Testing.Activities = 23.4.0
UiPath.UIAutomation.Activities = 23.4.4

## Activityツリー
2583x1556
![US2023.4.0_Activity_利用可能以降_PadL2_H1556_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/929331ce-e848-d63a-a715-1136c22757b5.png)

2860x1409
![US2023.4.0_Activity_利用可能以降_PadL2_H1409_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/0d7624ee-63cf-4c9b-ce30-d7d3bb8877c8.png)

3155x1288
![US2023.4.0_Activity_利用可能以降_PadL2_H1288_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/2ddb83c9-2328-7d29-b43a-71a17682826c.png)

3346x1171
![US2023.4.0_Activity_利用可能以降_PadL2_H1171_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/c801ac80-5ec2-802c-b998-910c92fb4c2f.png)

3605x1076
![US2023.4.0_Activity_利用可能以降_PadL2_H1076_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/5fbdc491-fc05-38be-1a3a-94b1bcc25464.png)

3829x1003 **← 今回4Kディスプレイでの等倍表示で横幅を最大限に活かせるサイズを追加しました**
![US2023.4.0_Activity_利用可能以降_PadL2_H1003_Pad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/60e55591-cb73-6572-41bd-9e18003ab9e6.png)

## 2022.10.3と2023.4.0の差異
左が2022.10.3、右2023.4.0で差異を抜き出しています。差異はあくまで「絵的に」見た目の差であり、機能の差は表していません。
中央部の赤文字数字、記号は連番と、A:追加、D:削除、U:更新を表しています。（連番はこの説明をわかりやすく書くために付加）
例えば、12Uであれば日本語訳が変わっています（アイコンが変わっているだけの場合もあります（例:14U等））。
Activityツリーの並び位置が同じ場合U:更新判定となっていますが、日本語訳変更で並びが変わってしまった場合、D:削除とA:追加となる場合もあります（例:10Dと11A等）。
（補足：アイコンや文字のごく小さい範囲（今回は5Line分未満）のみの変更は抽出していません。アイコンの絵柄の一部が変わっただけと判断して、その程度の差異なら不要だろうと）
それ以外でここに出ていない部分は（自作比較アプリにバグがなければ）一致しているはずです。（コンペアという題材で本一冊書けるとか）
![差異_22.10.3比.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/5bb51f6e-807c-0502-ebc2-cbc054372bfc.png)

## 2022.10.3と2023.4.0の差異記号が付加されたActivityツリー
3605x1076のみ
![US2023.4.0_Activity_利用可能以降_PadL2_差異_H1076.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456318/996adb32-1ce6-8aad-c854-c2d74474a5a9.png)
データサイエンスのための線形代数 第22回 行列関数の全単射

:::note info
本記事は数学講座[5.6 行列関数の全単射](https://www.matongxue.com/lessons/539/parts/1595)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::

# :sunny: 全単射

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/86b67547-8621-28b7-7a71-e5dbe47b9808.png" width=480>

全単射は単射且つ全射ですので、二つの必要十分条件を合わせる必要があります。

```math 

\begin{array}{c|c|c|c}
    \hline
    \quad行列関数\quad&\quad 単射の必要十分条件 \quad&\quad 全射の必要十分条件 \quad&\quad 全単射の必要十分条件 \quad\\\hline\\
    \quad \begin{aligned}A\boldsymbol{x}=\boldsymbol{y}\ \ \\\boldsymbol{x}^\mathrm{T}A=\boldsymbol{y}^\mathrm{T}\end{aligned} \quad&\quad \begin{aligned}列フルランク\\行フルランク\end{aligned} \quad&\quad \begin{aligned}行フルランク\\列フルランク\end{aligned} \quad&\quad フルランク\quad\\
    \\
    \hline
\end{array}

```
:::note info
補足：
1. 単射：定義域＝値域、唯一な解あるか
1. 全射：到達域＝値域、解存在か(指定の値が値域にあるのか)
1. 全単射：定義域＝値域＝到達域、解ある且つ唯一な解
1. フルランク：列フルランク且つ行フルランク、また、列ランク＝行ランクですので、$\ →　$　正方形行列

フルランクについて[こちら](https://www.matongxue.com/parts/2247/)を参照！
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/76e6200b-b3a7-f06d-c621-52a7ee1270ea.png)

# 全単射の例題

以下の線型方程式系では、解の状況は？

```math 
\begin{cases}
    x_1+3x_2=5\\
    x_1+6x_2=9
\end{cases}
```
以下のように列ベクトル行列関数に変換して：
```math 
\underbrace{\begin{pmatrix}1&3\\1&6\end{pmatrix}}_{\Large A}\ \underbrace{\begin{pmatrix}x_1\\x_2\end{pmatrix}}_{\Large\boldsymbol{x}}=\underbrace{\begin{pmatrix}5\\9\end{pmatrix}}_{\Large\boldsymbol{b}}
```

$A$が行フルランク且つ列フルランク、即ちフルランクですので、全単射です。だから、解があり、唯一な解です。

# 応用：

- $A\boldsymbol{x}=\boldsymbol{b}$、必ず解がある、且つ唯一な解
```math 
A=\begin{pmatrix}1&0\\0&1\end{pmatrix}
```
$A$がフルランクですので、全単射です。

- 以下の説明が正しいのは：
    - 正しい：$\boldsymbol{x}^\mathrm{T}A=\boldsymbol{y}^\mathrm{T}$が全射
    - 誤り：$A$の列ベクタル空間が$R^2$
    - 誤り：$Ax=y$が$\mathbb{R^3}\to\mathbb{R^2}$の関数です。
```math
A=\begin{pmatrix}1&0\\0&1\\1&1\end{pmatrix}
```
1. $A$が列フルランクです。$\boldsymbol{x}^\mathrm{T}A=\boldsymbol{y}^\mathrm{T}$の全射必要十分条件が列フルランクですので、これが全射です。
2. $A$が$R^3$での平面です。
3. $Ax=y$の四つ要素が以下の通りですので、該当行列関数の線形関数式が：$\mathcal{L}:\mathbb{R^2}\to \mathbb{R^3}$です。

```math 

\begin{array}{c|c|c|c}
    \hline
    \quad自然な定義域\quad&\quad マッピング規則 \quad&\quad 値域 \quad&\quad 到達域 \quad\\\hline\\
    \quad \mathbb{R}^2 \quad&\quad A \quad&\quad A\boldsymbol{x} \quad&\quad \mathbb{R}^3 \quad\\
    \\
    \hline
\end{array}
```



# 参考情報

https://mathlandscape.com/bijection/
お母さんでもわかるReact「_app.js」

## _app.js(アンストアップ)について
Next.jsにおいてとても大切な役割を持っており、できることも多い。

・全てのページに反映されるため、共通部分を記述する
・すべてのページで使用されるグローバルデータの取得（ログインユーザーの情報や、共通のコンテンツ）。
・サーバーサイドレンダリングの設定
・エラーハンドリング

### ファイルの詳細
_appは一番最初に呼び出される。
```jsx
export default function App({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
    </>
  );
}
```
**Component**には、レンダリングされるページの関数コンポーネントが渡ってきます。
→つまり現在のページに対応するコンポーネントが渡されます。

**pageProps**には、Conmponet に渡された関数コンポーネントが受け取る props が格納されたオブジェクトが渡ってきます。
→つまり現在のページに対応するコンポーネントに渡されるべきpropsが格納されている。
VBAでCSVからINSERT SQLを作成する方法

CSVと書いてありますがExcelから作ります。
シート名がテーブル名となります。

```vba
Sub ConvertToInsertStatements()
    Dim ws As Worksheet
    Dim outputWs As Worksheet
    Dim tableName As String
    Dim r As Long, c As Long
    Dim insertStmt As String
    Dim values As String

    ' 現在のアクティブなシートを処理対象とします
    Set ws = ActiveSheet

    ' 出力用の新しいシートを作成します
    Set outputWs = Worksheets.Add
    outputWs.Name = "InsertStatements"

    ' テーブル名をシート名から取得します
    tableName = ws.Name

    ' 1行目からカラム名を取得し、インサート文の基本形を作成します
    insertStmt = "INSERT INTO " & tableName & " ("
    For c = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column
        insertStmt = insertStmt & ws.Cells(1, c).Value
        If c < ws.Cells(1, Columns.Count).End(xlToLeft).Column Then
            insertStmt = insertStmt & ", "
        End If
    Next c
    insertStmt = insertStmt & ") VALUES "

    ' 2行目以降のデータ行を処理し、インサート文を生成します
    For r = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row
        values = "("
        For c = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column
            If IsNumeric(ws.Cells(r, c).Value) Then
                values = values & ws.Cells(r, c).Value
            Else
                values = values & "'" & ws.Cells(r, c).Value & "'"
            End If

            If c < ws.Cells(1, Columns.Count).End(xlToLeft).Column Then
                values = values & ", "
            End If
        Next c
        values = values & ");"

        ' インサート文を出力シートに書き込みます
        outputWs.Cells(r - 1, 1).Value = insertStmt & values
    Next r

    MsgBox "インサート文の生成が完了しました。", vbInformation
End Sub
```
EC-CUBEシリーズ！「EC-CUBE 2パターンのキャッシュ削除方法」

![ec_cube_cache.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/4474434c-ef90-5da3-96b8-6b39088a4bf1.jpeg)

エスプリフォートでは、ECによる請負開発やプロダクト（自社サービス）開発は長く行っており、その中の一つとしてEC-CUBEももちろん取り扱ってきました。

このEC-CUBEやEC-CUBEのアドオン開発に関することをご紹介していきます。

## EC-CUBE4の仕組み
EC-CUBEは独自にキャッシュ化することで高速化を図っています。
EC-CUBEの管理画面からテンプレート等を変更したり、FTPで直接テンプレートファイルを編集してアップロードした場合、キャッシュ削除をしないと変更した内容が反映されません。

# EC-CUBE4 2パターンのキャッシュ削除方法
EC-CUBE4になると管理画面から削除できますが、アドオン開発等をしている途中に困った現象が発生することがあります。

それは、管理画面の表示が崩れ、管理画面からのキャッシュ削除ができなった場合です。

管理画面での機能変更や機能追加等を行う際には、そもそも管理画面が使えないという事も発生する可能性もあります。

このような状態でも強制的にキャッシュを削除する方法があります。
強制キャッシュ削除と通常行う管理画面からのキャッシュ削除の２つの方法をご紹介いたします。

## 通常行う管理画面からのキャッシュ削除
EC-CUBE4のキャッシュ削除は、管理画面の「コンテンツ管理」->「キャッシュ削除」で実行します。
![ec-cube_cache.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/f6cfb238-655b-8092-3a2b-e840c96c97b7.jpeg)

## 強制キャッシュ削除
管理画面からキャッシュ削除ができない場合ば、直接キャッシュを削除します。
EC-CUBE4のキャッシュフォルダの場所は、

　「 [EC-CUBEをインストールしたrootディレクトリ]/var/cache/ 」

です。

この cache フォルダを削除することで、キャッシュクリアされ、サーバーに反映したプログラムなどが新たにキャッシュとして生成され、サーバーに反映されます。

## 最後に
アドオン開発をしていると物理的に削除しなければいけないシーンは結構ありますので、こちらの強制キャッシュ削除は役に立ちますので、覚えておいて損はないかと思います。

https://www.esprit-fort.co.jp/

https://www.esprit-fort.co.jp/recruit/
Pyneconeのメリットと限界

前のpynecone関連投稿につづけてpyneconeのメリットと限界を整理してみました。


#### Pyneconeのメリット

* Pythonエンジニアの立場でJavaScriptを気にする必要がない。
* Flutterのようにブロック形式のコード構造を持っていて、簡単に理解できる構造のコーディングが可能。
* 状態変数をpc.stateを使って簡単に処理することができる。
* フロント、バックエンドが一つの言語で動くフルスタック開発が可能。このためにはメソッド、クラス間の通信のためのpubsubと非同期プログラミングが必要。

#### Pyneconeのデメリット

* 静的なページ、例えばメールサービス、データ分析サービスなど明確な結果を見せるのは無理がある。

* 派手なビジュアルが入ること、例えばケラセルビュー、動的な写真スライド、動画挿入などは無理がある。

* 任意のReactコンポーネントをWrappingすることができますが、コンポーネント間のデータをstring以外の場合(コンポーネントがstringではなくArrayなど他のオブジェクトが必要な場合)には方法がわからない。

* HTMLコードをそのまま適用できるpc.htmlがありますが、やや制限的。`<script>`構文を入れるとエラーが発生する。

* 関連コミュニティがあまりなく、githubのdiscussionでほとんど質疑応答が行われるレベルなので、問題解決方法を見つけるのが難しい。


#### 結論

簡単な静的ページ、データ分析などには悪くない。しかし、ユーザー数が少なく、ライブラリなどにも問題が多く、もう少し改善されれば使ってみる価値はある。
14. 今日の日課１２　Prompt Engineering Guide

# はじめに
突然ですが、記事の名前を「論文調べ」から変更しました。
理由は活動の自由度を上げるためです。（論文だけだと飽きそう）
活動内容は論文や記事、本などを読んでまとめる感じです。
今日は論文ではなく、Prompt Engineering Guideのintroductionを読みました。

# Prompt Engineering Guideとは
Prompt Engineering Guideはその名の通り、Prompt Engineeringに関して解説したサイトです。
約一か月前に日本語版が出たばかりです。
url:https://www.promptingguide.ai/jp

# Prompt Engineering A lecture by DAIR.AI
Prompt Engineering Guideを作ったDAIR.AIさんのGitHubにPrompt EngineeringのPDFがあったので、要約しました。
出典：https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/lecture/Prompt-Engineering-Lecture-Elvis.pdf

## 要約
以下の要約はChatPDFによって行いました。
以下の要約だけだと、具体的な内容はわからないと思うので、詳しく知りたい場合は原文を読むことをお勧めします。

### 1.本講義で取り上げるプロンプトエンジニアリングの高度な技術とはどのようなものでしょうか？

素晴らしい質問ですね！このPDFファイルでは、18ページからご覧いただける「第2部」で、プロンプトエンジニアリングのためのさまざまな高度なテクニックを取り上げています。テンプレートの使用、言語モデルの微調整、外部知識ソースの活用など、さまざまなテクニックを紹介しています。また、32ページには、これらのテクニックを実践するためのデモンストレーションと演習が掲載されています。

### 2.プロンプトエンジニアリングは、言語モデルの改良にどのように利用できますか？

プロンプトエンジニアリングは、AIエンジニアや研究者が言語モデル（LM）を改良し、さまざまな用途に効率的に使用するために役立つスキルです。ユーザーを望ましい結果に導くためのプロンプトや質問を作成することで、プロンプトエンジニアリングは言語モデルの精度と効率を向上させることができる。この方法は、ユーザーがシステムや製品の操作方法を簡単に理解できるようにするため、インタラクティブデザインやソフトウェア開発でよく使用されています。プロンプトエンジニアリングの詳細については、本PDFファイルの5ページに記載されています。

### 3.このPDFファイルで説明される特定のツールやアプリケーションはありますか？

はい、このPDFファイルでは、いくつかのツールやアプリケーションについて説明しています。38ページの「ツールとアプリケーション」では、GPT-3、ハギング・フェイス・トランスフォーマー、OpenAI Codexなど、プロンプトエンジニアリングに使用される最も一般的なツールを取り上げています。また、20ページには「プロンプトエンジニアリングの応用」という項目があり、医療、金融、教育など様々な分野でプロンプトエンジニアリングがどのように活用されているのかが紹介されています。

# まとめ
プロンプトエンジニアリングはこれから何をするにしても必要になると思うので、早めにPrompt Engineering Guideは読んでおいたほうがよさそうです。
ChatGPTを使うときにもかなり役に立つと思います。
Laravelの非同期検索処理で詳細ページのURLも表示させる（２回目）

これは自身の学習用のページです。　
前回の記事で非同期での検索処理はできたが、それを表示することができなかったため、記録として残します。

前回記事はこちら　
：https://qiita.com/kota-done/items/084226a7181ac4819913

使用した手順は以下
①Chromeの検証機能のコンソールの項目で、検索処理のデータを確認
②必要なデータの有無とその位置を確認　
③表示させる
と単純ではあるが、これを理解して表示させるのに２週間要しました。　
　
理由としては、
１、データの中身の見方がわからなかった　
２、jsonデータをHTML形式で表示する方法がわからなかった。
の二つです。

## ①検索結果の確認


```php:blade.php
     $.ajax({
              type: 'POST',
              url: "{{ route('select') }}", //検索処理のメソッドのルート
              data: {
                     'search': searchSale,

                     },
             　dataType: 'json', //json形式で受け取る
            })

````

でJsonデータの形式で返す。

それを
```php:blade.php
      .done(function(data) { //ajaxが成功したときの処理  
                        console.log(data);
```
としたにつけて、dataの中身を確認。　
＊ここでのdataとは、一つ上に書いたdataとは別であり、あくまで検索処理をしたjsonデータの抽象的な呼び名としてのdataと私は理解しています。　
もう少し具体的に言うと、コントローラーでは、
```php:Controller.php
 return response()->json($search);
```
としている。　
$search = data　という感じです。

では、Chrome上での結果は、
　
Object
current_page: 1
<font color="red">data: (3) [{…}, {…}, {…}]</font>
first_page_url: "http://localhost:8888/〜〜〜〜
from: 1
last_page: 1
last_page_url: "http://localhost:8888/〜〜〜
next_page_url: null
path: "http://localhost:8888/〜〜〜〜
prev_page_url: null
to: 3
total: 3
[[Prototype]]: Object

という感じです。（一応URLなどは可能な限り消して表示しています。）
見直しやすいようにそのままURL表示しているので、クリックできますがページには飛びませんのでご注意を

## ②必要なデータの有無とその位置を確認　
dataを表示すると上記のようになり、赤文字にしたdataの中に今回の検索結果が入っていました。
つまり
dataというjsonデータの中のdataという項目？クラス名？に検索結果が入っていました。

## ③表示
先に、今回表示できたコードを表示
```php:blade.php
.done(function(data) { //ajaxが成功したときの処理  jsonデータ　data=$search
                        console.log(data);

                        $.each(data.data, function(index, val) {
                            console.log(index);
                            console.log(val);
                            var html = ` 
                            <tr>
                            <td>${val.id}</td>
                            <td>${val.指定したカラム}</td>
                            <td> <a href="${val.detailurl}">詳細</a></td>
                            </tr> `;
                            $('.表示させたい場所のクラス').append(html);
                        });


```
　
eachで配列の中身を取り出そうとします。 
先ほど伝えた通り、dataのdataに指定しないといけないので　
`$.each(data.data,function(){}`
その後の`function(index, val)`の中身はなんでもいいです。
ただのキーとバリューなので、
あとは、表示のために一度HTML形式で定義した後に、それをappendさせるだけ。　

var html =``　の点々は改行してもいいよという意味らしいです。

以上はコードを見たら皆様も「解説しなくてもわかるよ！」という内容ですね。　

さて、ようやく表題に入ります。

## 詳細ページのURLを表示させる　
実際に使用したコードは以下

`<td> <a href="${val.detailurl}">詳細</a></td>`

普段のHTMLでdetailというルートに飛ぶためのボタンを以下で使うとすると

` <a class="" href="{{ route('detail') }}">新規登録</a>`　　
ですが、

今回は
①コントローラーでdetailurlとdetailのルートを定義して、jsonデータに入れる　
②dataの中身にある、detailurlというカラムを指定して取り出す　
という手順で行なっています。

参考までにコントローラーのコード載せときます
```php:Controller.php
  foreach($search as $data){
         $data->detailurl = route('detail',['id' => $data->id]);
      }
      return response()->json($search);
   }
```
＄searchという検索結果をさらに$dataというバリューを使い
detailurlというカラムを追加してルートを定義しています。　
ルートの定義の仕方は、非同期処理までトライされている方なら今更だと思うので割愛します。

これで詳細ページの表示が問題ないならこれで非同期処理の検索結果から、　
さらに、詳細ページに飛ぶという流れが実装できると思います。　

長文お付き合いありがとうございます。
Must specify a non-empty plural label for the CustomObject の対処法

スクラッチ組織にソースをデプロイしようとしたら `Must specify a non-empty plural label for the CustomObject`というエラーが発生する事があるので、トラブルシューティングのTIPSをご紹介します。


## 事象
`sfdx CLI` 又は `sf CLI` で別の組織で開発を進めていたプロジェクトを自分の開発組織にデプロイした際に、次の様なエラーが発生する事があります。

```zsh:
$ sf start deploy project 
.....
Component Failures [1]
===========================================================================
| Type  Name     Problem                                                    
| ----- -------- ---------------------------------------------------------- 
| Error MyObj__c Must specify a non-empty plural label for the CustomObject 
```

## 原因
このエラーは、デプロイ対象のカスタムオブジェクトのメタデータに複数形の表示ラベルの指定がない場合に発生します。

Salesforce では、組織の言語が英語に設定されている組織で、新しくカスタムオブジェクトを作成する場合、通常の表示ラベルの他に複数形で表示するための表示ラベルを指定します。そしてこの機能は組織の言語が日本語に設定されている組織にはありません。そのため、日本語の組織で作成したカスタムオブジェクトを英語の組織にデプロイしようとすると必ずこのエラーが発生します。

## 対処法
対処法としては、カスタムオブジェクトのメタデータに `pluralLabel` を追加するだけです。これをエラーが発生したすべてのカスタムオブジェクトのメタデータで実施します。

```xml:MyObj.object-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    ...
    <pluralLabel>MyObjs</pluralLabel>
    ...
</CustomObject>
```

変更が完了したら、再度同じコマンドでデプロイします。すると先程のエラーは解消されているはずで、他にエラーがなければ正常にデプロイが完了します。

```zsh
% sf start deploy project
...
Deployed Source
==========================================
| State   Name  Type         Path
| ------- ----- ------------ -------------
| Changed MyObj CustomObject force-app/...              

```
エンジニアじゃない人でもFirebaseのイベントログをDebugViewで確認できるようにする方法（TestFlight）

## やりたいこと

- Xcodeとかの開発環境を持っていない（エンジニア以外の）人にイベントログを確認して欲しい
- 実機ビルドでもいいけどUDIDの登録とか面倒なことは省きたい
- リモートワークで済ませたい

## 実装

Firebaseの初期化前にProcessInfoに `-FIRDebugEnabled` を追加する。

```swift
// 出力しないときは `false` or コメントアウト
if true {
    var args = ProcessInfo.processInfo.arguments
    args.append("-FIRDebugEnabled")
    ProcessInfo.processInfo.setValue(args, forKey: "arguments")
}

FirebaseApp.configure()
```

これで、TestFlightからインストールしたアプリでもFirebaseのDebugViewでイベントログを確認できる。

**ただし、これを間違えてリリースしちゃうと、、、なので注意！！**

## 自分用チェックリスト

```md
- [ ] TestFlightのテスト内容にイベントログ確認用（DebugView有効）であることを記載する
- [ ] イベントログを確認してもらう
- [ ] 確認が終わったら、TestFlightのビルドを`ビルドを期限切れにする`でリリースできない状態にしておく
- [ ] DebugViewの設定を削除する
- [ ] TestFlightにアップロードし直す
```

## その他

- 忘れがち、間違いがちなポイント
↓の前に`ProcessInfo`を設定しないと意味無い。
  ```swift
  FirebaseApp.configure()
  ```

## 参考
- [How to enable Firebase Analytics Debugview on Testflight](https://stackoverflow.com/questions/57193660/how-to-enable-firebase-analytics-debugview-on-testflight)
- [Debug events](https://firebase.google.com/docs/analytics/debugview?hl=ja)
SalesforceとPardotの連携

+ [How Do Pardot and Salesforce Work Together? ](https://www.salesforceben.com/the-drip/pardot-salesforce-integration/)


|Salesforce オブジェクト	|同期方向	|Pardot でできること*|
|:--------------------------------|:----------------------|:----------------------|
|リード|双方向。 |Pardot は、リードの「読み取り」、更新、および作成を行うことができます。|
|取引先責任者 |双方向。 |Pardot は連絡先を「読み取り」、更新できます。「逆同期」が有効になっている場合、Pardot は (リードではなく) 取引先責任者を作成できます。|
|個人取引先 |双方向。 |Pardot は、個人取引先を「読み取り」および更新できます。|
|取引先 |一方向 (Salesforce → Pardot)。 |Pardot は取引先を「読み取る」ことができます。|
|商談 |一方向 (Salesforce → Pardot)。 |Pardot は商談を「読み取る」ことができます (商談取引先担当者の役割が必要です)。|
|キャンペーン |一方向の「読み取り」 (Salesforce → Pardot)、一方向の更新 (Pardot → Salesforce) |Pardot は、キャンペーン (接続済みキャンペーンと呼ばれる) を「読み取る」ことができます。Pardot はキャンペーン (エンゲージメント指標) を更新できます|
|キャンペーンメンバー |一方向 (Salesforce → Pardot)。 |Pardot は、キャンペーンメンバーを更新および作成できます。|
|Tasks |一方向 (Salesforce → Pardot)。 |Pardot はタスクを作成できます。|
|ユーザー |一方向 (Salesforce → Pardot)。 |Salesforce はユーザーを作成できます。Pardot はユーザーを「読み取る」ことができます。|

+ [フォームで入力されなかった項目の値](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeN9s)

以下をみると　取引先の連携はSalesforceからPardotの一方通行みたいですよね。

Accounts One-directional (Salesforce → Pardot).
Pardot can “read” Accounts.

[How Do Pardot and Salesforce Work Together? ](https://www.salesforceben.com/the-drip/pardot-salesforce-integration/)

もしフローなどの自動化処理が使えるならプロスペクトの会社名と取引先の会社名を比較して、異なっていたら上書きするようなこともできるかもしれません。

ただ、以下のようなアプリがあるということは標準ではできないのかも... 
**Flow Actions for Pardot | Sercante Labs**
https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000HEbwWUAT


またプロスペクト取引先のレポートで両方の会社名が違うレコードだけをレポートで抽出できれば、更新対象を絞ることができそうですが...（個人的には変更は確認後に手動の方が安全な気がします。）

+ [AEとSFの同期についてですが、AE側のデフォルト項目である会社名（Company）の値がSF側の値で上書きされないようにしたいのですが、うまくいかず悩んでおります。](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000PkN8lSAF)

:::note
AE側の会社名を、プロスペクトのカスタム項目で持たせるという考え方はいかがでしょうか。

標準項目の取引先については、同期方法については挙動を変えようがありません。

プロスペクトの登録が何によって行われているのかがわかりませんが、フォームハンドラー等の連携によって自動作成される場合には、会社名に相当する項目を「標準項目の会社名」と「カスタム項目の会社名」の両方へセットすることで、SFから同期して上書きされてもカスタム項目の方は残ります。
:::
RubyでAtCoder ABC271(A, B)を解いてみた

# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC271のA, Bを解きました。備忘録として解き方をまとめていきたいと思います。

# A - 484558
https://atcoder.jp/contests/abc271/tasks/abc271_a
```ruby:a-271.rb
puts gets.to_i.to_s(16).upcase.rjust(2, "0")
```
```ruby:別解
puts sprintf("%02X", gets.to_i)
```
## 解説
与えられた数字を16進数表記にして、英文字があれば大文字化しています。また、rjustメソッドにより16進表記後の大きさが2となるようにしています。

# B - Maintain Multiple Sequences
https://atcoder.jp/contests/abc271/tasks/abc271_b
```diff_ruby:b-271.rb
n, q = gets.split.map(&:to_i)
array = Array.new(n){ gets.split.map(&:to_i) }
query = Array.new(q){ gets.split.map(&:to_i)}

- q.times do |i|
-  puts array[query[i][0] - 1][query[i][1]]
- end
+ query.each do |factor|
+  puts array[factor[0] - 1][factor[1]]
+ end
```

https://qiita.com/shoya15/items/50fd17e37d7c64f2b166
千葉 達也の記事一覧(製品別)

# MySQL
* [MySQL 8.0インストール](https://qiita.com/chibatty/items/86549498a0e505aeff5b)
* [データベース作成](https://qiita.com/chibatty/items/0e8bfb4630cf2c05f2c7)
* [MySQLアカウント作成と権限付与](https://qiita.com/chibatty/items/0a46d8b79528ee609065)
* [テーブル作成](https://qiita.com/chibatty/items/d8c7a98c99d0754a18a0)
* [テーブルへのデータロード](https://qiita.com/chibatty/items/cc72fbf1c98a8c2b7bdc)
* [システム変数の変更](https://qiita.com/chibatty/items/0e01c0c3b6771514fc50)

# TiDB
* [TiDBクラスタ構築(1ノード構成)](https://qiita.com/chibatty/items/b90fa80d24709adc838a)
* [データロード](https://qiita.com/chibatty/items/4a94f412a2761edb5db1)
* [テーブルのリージョン情報の確認](https://qiita.com/chibatty/items/0ffca94370e1fa04cc61)
* [初めてのHTAP](https://qiita.com/chibatty/items/c4112a5b45d9318cb9e7)
 
# Oracle Database
* [Oracle Database Global Data Servicesの紹介](https://qiita.com/chibatty/items/f4f76c3309768fefb36e)
* [Oracle Database Global Data Services構築 その1](https://qiita.com/chibatty/items/5621f953d54e4d78aee1)
* [Oracle Database Global Data Services構築 その2](https://qiita.com/chibatty/items/f546fc4cbf1997defe16)
* [Oracle Database Global Data Services構築 その3](https://qiita.com/chibatty/items/d7e92946182dfabf1695)
* [Oracle Database Global Data Services構築 その4](https://qiita.com/chibatty/items/5363acdaac4ff4aa09a6)
* [Oracle Data Redactionの動作確認と考慮事項](https://qiita.com/chibatty/items/525c278d36a6a2c73f4b)

# Oracle GoldenGate
* [Oracle GoldenGate自動競合検出および解消機能の紹介（前編）](https://qiita.com/chibatty/items/d4b14df9cb81aaa1c795)
* [Oracle GoldenGate自動競合検出および解消機能の紹介（後編）](https://qiita.com/chibatty/items/bac4aff1815559cec61b)
* [impdpによるデータロード処理が抽出できない事象](https://qiita.com/chibatty/items/35abfbe7fa3f3101039d)
* [Data Guard環境におけるGoldenGate運用の考慮事項](https://qiita.com/chibatty/items/931abc2c3a89e5959d98)

# Oracle Cloud Infrastructure（OCI）
* [OCI資格試験とセミナがなんと無料(期間限定)](https://qiita.com/chibatty/private/46e1c7bf60bbcf71c48e)

# Oracle Exadata
* [KVMゲストの/u01拡張](https://qiita.com/chibatty/items/3a26772b6d5ed55ea1a7)
なるべく自動でお金をかけずに英語PDFを翻訳しよう

# やり方
1. 翻訳したい英語PDFを用意する。
1. PDFを.txtに変換してくれるWebサービスを使って変換する。（ちょっと難あり）
1. 以下のpythonプログラムをVScodeとかで作って、変換した.txtと一緒のフォルダに入れておく。
（詳しく説明すると、デスクトップから右クリックで`新しいテキストドキュメント.txt`を作り、名前を拡張子までEnPDF2JaTxt.pyに直す。.pyにすれば勝手にpythonだと認識してくれるはず。 それを適当なフォルダを作って入れておく。）

1. pythonソースコードの.txtファイルのパスを合わせて実行。
1. 出力された3000文字未満の.txtを手作業でDeepLに突っ込む。
1. 翻訳できた日本語を別のファイルにまとめる。
# python
~~~python:EnPDF2JaTxt.py
#このプログラムは英語の.txtをDeepLで翻訳しやすいように1500文字未満の.txtに整形して出力する自称便利プログラムです。

with open("C:/ここに翻訳したいテキストファイルのパスを合わせる.txt", encoding="UTF-8") as f:
    text = f.read()
    #テキストのアルファベット数をカウント
    print('テキストのアルファベット数は'+str(len(text))+'文字です。')

    #テキストの単語数をカウントする。
    wordlist = text.split()
    print('テキストの単語数は'+str(len(wordlist))+'単語です。')
    
    #DeepL翻訳は一度にアルファベット（と記号・空白）で1500文字までの翻訳が可能なので、3000文字未満のセットにテキストを分ける。
    
    #一文字ずつ数えていってキリの良いところまででテキストを作る方式
    buffer_text =''
    out_text =''
    b_count = 0
    o_count = 0
    output = 1
    for n in range(0,len(text)):
        if text[n] != ".":
            buffer_text += text[n]
            b_count += 1
        else:
            buffer_text += text[n]
            b_count += 1
            if b_count > 1500:
                out = open(f.name+'_output'+ str(output) +'.txt','x',encoding="UTF-8")
                out.write(out_text)
                out.close
                output += 1
                buffer_text = buffer_text[len(out_text)+1:]
                out_text =''
                #print(out_text)
                #print(buffer_text)
                out_text += buffer_text
                b_count = b_count - o_count
                o_count = 0
            else:
                out_text = buffer_text
                o_count = b_count
        if n == len(text)-1:
                out = open(f.name+'_output'+ str(output) +'.txt','x',encoding="UTF-8")
                out.write(out_text)
                out.close
                
    
    print('出力されるテキストファイル数は'+str(output)+'個になります。')

~~~
# 注意
+ デスクトップに.pyを置いて実行すると.txtファイルがデスクトップに生成されてしまいデスクトップが汚くなってしまうので注意。
+ 元の論文がめちゃくちゃ長いものだと.txtが大量に生成されるので注意。
+ PDFを.txtに変換する際に、PDF文書レイアウトによっては上手く読み取られず改行や同じ文が繰返し出てきてしまう。必要に応じて適宜手直ししてください。

# 追記（23/9/26）
+ DeepLのアカウント無し利用の場合の翻訳文字数制限が、3000から1500に変わったみたいです。上記コードの文字数カウントのところを1500に変更しておきました。
シンボルvs文字列

rubyを触っていると、何となく理解はしているが、シンボルと文字列の違いって何だっけ？とふと説明できないことに気がつきました。「シンボルはどこかに格納されているんだよなー」くらいの認識でした...

# シンボルと文字列の違いは？
rubyではシンボルを使っても、文字列を使ってもいい感じに処理をしてくれます。したがって、間違った使い方だとしてもうまく処理されてしまうわけです。

しかし、内部的には実は違うことが行われていて、特に処理速度の違いが明確です。

* __文字列__
「文字やバイトが並んだ列」で、テキストやバイナリデータの格納に向いている。
* __シンボル__
「文字やバイトが並んだ列」が識別子として付与された数値
→シンボルはIDと呼ばれる整数値のデータ型を包むオブジェクトラッパーとして扱われる。

シンボルはRuby内部で一意のIDを持ち、その識別子に対応する数値を探索することで高速に処理を行うことができます。つまり、シンボルを作成すると、IDが付与されて、呼び出された時にその識別子（ID）を使って探しにいく訳ですね。

__見た目は文字列なんですが、内部的には数値なんですね。__

当然、コンピューターとしては、数値の方が処理が速いので、シンボルの方が処理が速くなります。

でも、上述の通り、rubyは文字列だとしてもいい感じに処理をしてくれます。しかし、裏を返せば、文字列が渡された場合、Rubyは文字列をIDに変換するという余計な仕事をしなければならない訳です。



したがって、適切に文字列とシンボルを使い分けないと、コンピューターに無駄な仕事をさせたり、力を発揮させられなかったりする訳です...

もう少し大切なポイントを具体的なコードとともに見ていきましょう。

## シンボルはimmutableだ！
大切なのは「シンボルは書き換えられない」ということです。
以下のように文字列をdowncaseすると小文字に変換されますが、シンボルを小文字に変換しようとするとエラーが発生します。（破壊的ではない場合はもちろん普通に変換できます。）

要はIDが付与されているから、別のIDで書き換えるな！ということですね。
```
'HOGE'.downcase! #=> "hoge"
:HOGE.downcase! #=> NoMethodError
```

シンボルはRubyの内部で識別子として扱われており、値を変更することができません。
つまり、シンボルはimmutable（変更不可能）なオブジェクトであり、小文字に書き換えられません。

:::note 
補足
余談ですが、downcase, upcaseなどのメソッドの戻り値は実はシンボルです。
内部の処理としては、シンボルに対応づけられた文字列に対する操作結果を再びシンボルに変換しています。
```
:HOGE.downcase
=> :hoge
これは以下と同義
:HOGE.to_s.downcase.to_sym
=> :hoge
```
:::

# シンボルは同一だ!
これが本当かもう少し見てみると、以下から正しいことがわかります。
```
'hoge' == 'hoge' #=> true
'hoge'.equal?('hoge') #=> false
:hoge == :hoge #=> true
:hoge.equal?(:hoge) #=> true
```

equal?メソッドは、オブジェクトが同一のオブジェクトであるかどうかを比較するメソッドです。つまり、2つのオブジェクトが同じオブジェクトである場合にのみtrueを返します。

文字列は見かけ上は同じですが、実は文字列 'hoge' を２回 "hoge" と書いているように見えますが、それぞれが別々のオブジェクトとしてメモリに割り当てられます。そのため、'hoge'.equal?('hoge') は false を返します。

一方で、シンボルの場合は識別子が付与されているため、同一になるという訳です。

# どう使い分ければ良い？
で、色々とわかったのですが結局どう使い分けるか？が大切ですね。
まだ自信を持ってはいえないのですが、現段階では、

__テキスト操作をするならば、文字列を渡す。それ以外はシンボル。__
という認識で良いのかなと思います。

シンボルを受け付けられるのは、あくまでも内部で文字列に変換しているからに過ぎない訳です。ですので、コンピューターの処理を最大限にするために適切な方を選べるようになりたいです。また理解が深まったら修正しようと思います。

間違ったことを言っていたり不足があったらぜひコメントください！
Xcode 14.3以上  Apple Silicon でのエラー

## 古いXcode Projectビルド時のエラー

こんなエラー

```
Showing Recent Issues
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks ・・・

略
 
Command PhaseScriptExecution failed with a nonzero exit code
```

## 対応
`source="$(readlink "${source}")"` をxcodeで検索かけて、 
その部分を `source="$(readlink -f "${source}")"` に入れ替えます。
LLMとゲノムバイオインフォマティクス

# はじめに
昨日[学問バー](https://gakumon-bar.com/)で「機械学習で読み解く生命現象」という題でバーテンダーをやりましたが流行に迎合してLLMの話しかしなかったので忘れないうちにちょっとまとめておきます。

# LLMとは？
これを読もうという人でいまさらLLMって何って人はいないとは思うのですが、この記事ではLLMとはBERT登場以降の「大規模な文字列の学習を穴埋め問題や２文連続問題みたいな人間がラベル付けを行わないデータを学習した基盤モデル」を指すとします。なのでLSTMみたいのは含まないし、また、表現学習を使って特定の機能予測（例えばm6Aが起きるのはどこの配列か、みたいな予測をあらかじめm6Aサイトを集めておいて負例も作って表現学習で予測器を作る）するみたいのは含まないとします。
ざっくり言ってつい最近出たこの[プレプリ](https://doi.org/10.48550/arXiv.2304.13712)に取り上げられているようなものをLLMとし、そのゲノム科学への応用を扱うことにします。具体的にはこのプレプリの以下の図にふくまれているようなもの、ということになります。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199087/9cd12d7e-0088-0305-399d-7e11fd8c5cd2.png)


# 解説文書（英語）

現状、包括的なレビューはないんじゃないかなと思います（あったらすみません）。
- [AI & Genomics: How transformers and large language models relate to biological data](https://aiandfaith.org/ai-genomics-how-transformers-and-large-language-models-relate-to-biological-data/)
- [Take the DNA Delorean: The Promise of Large Language Models in Genomics](https://www.bio-itworld.com/news/2023/01/27/take-the-dna-delorean-the-promise-of-large-language-models-in-genomics)

ちょっと気づいた感じだとこのあたりのふわっとしたエッセイしかない感じですね。

あといくつか日本語の説明と原著論文の組み合わせで
- [ゴードン ベル賞受賞チームが大規模言語モデルを適用し、COVID-19 の新たな変異株を予測](https://blogs.nvidia.co.jp/2022/11/16/genomic-large-language-model-predicts-covid-variants/) 
  - [プレプリ](https://doi.org/10.1101/2022.10.10.511571
)
- [ゲノミクス用の大規模言語モデルが多様なタスクにおいて優れたパフォーマンスと汎化性を示す](https://developer.nvidia.com/ja-jp/blog/genomic-llms-show-superior-performance-and-generalization-across-diverse-tasks/)
  - [もうちょっと詳しい説明（英文）](https://www.formbio.com/blog/large-language-models-dna)
  - [プレプリ](https://doi.org/10.1101/2023.01.11.523679 )

蛇足ですが前者はGPT型、後者はBERT型となります。[プレプリ](https://doi.org/10.48550/arXiv.2304.13712)の分類
  

| |特徴|LLMs|
|:--|--:|:--:|
|BERT型（エンコーダーのみ、または、エンコーダー＋デコーダー）| (学習：穴埋め) (目的：判別) (タスク：穴埋め単語予測)|ELMo, BERT, RoBERTa, DistilERT, BioBERT, XLM, Xlnet, ALBERT, ELRCTRA, T5, GLM, XLM-E, ST-MoEe, AlexaTM|
|GPT型 デコーダーのみ|(学習：次単語作成) (目的：生成) (タスク：次単語予測)|GPT-3, OPT, PaLM, BLOOM, MT-NLG, GLaM, Gophermchnchilla, LaMDA, GPT-J, LLaMA, GPT-4, BlooombergGPT|

にもあるようにGPT型は生成に向いていてBERT型は判別に向いているのでそのような使わけになっているようです。

# おわりに

別に包括的なレビューとかをかけるほどちゃんと調べたわけじゃないんですけどガチなLLMを塩基配列に使った話ってまだまだ少ない感じの印象だったので。重要な点としてはLLMってなんでうまくいくかよくわからないわけでだけどいろんなパフォーマンスがすごいわけですよね。つまり意味が解らなくても解析できる。人類はゲノム配列も意味わかってないので、「意味が解らない文章をなぜか解析できる」というLLMの性能は実はゲノム配列データに使うのにとても向いているのではと思いました。
深層学習は機能サイトの予測とか、創薬の予測なんかに盛んに使われてきたわけですが、LLMは特に目的を決めず全部文章を読んでしまってそれからファインチューニングで機能性を持たせるという使い方(←ここ大事)なわけですが、それが意味の分からない配列が膨大にあるゲノム配列の解析にちょっと向いているかもしれないな、と思った次第です。まちがっていたらすみません。
git 取り消しのチートシート

Gitで「やっちまった。。(涙目)」な、経験はありませんか？
覚えやすいように以下でまとめました(@YuneKichiさん感謝)。
git commit前は git restore
git commit後は git reset

## push前
|何を取り消す？|コマンド|備考|
|:-|:-|:-|
|ローカルの変更|git restore ファイル名|
|git add|git restore -S ファイル名| -S は、--staged の略|
|直前のgit commit → staged状態|git reset --soft HEAD^|
|直前のgit commit → add前の状態|git reset HEAD^|デフォで --mixed 指定|
|直前のコミットでローカルの変更も取り消し|git reset --hard HEAD^|

## push後
### 履歴を残さずコミットを取り消す
コミットを取り消して、再度pushすれば OK
ただ、コミット先が他の人もコミットする環境では、不整合が生じる可能性があります。
正直に報告(＝ゴメンナサイ)しましょう。
```
git reset --soft HEAD^　(--の指定は上記を参照)
git push -f コミット先指定 (以前のコミットとコンフリクトするので -f を付ける)
```
複数のコミットを取り消したい場合は、`HEAD^`の後に数を指定する。
例：　`HEAD^3`　3つ前まで戻す(=2つ取り消し)

### 履歴を残す場合は、取り消しコミットを作成
```
git revert HEAD
（コミットメッセージを編集）
git push コミット先(リモート)を指定
```
HTB: 'Seasonal Machine'に挑戦しました(1) - 5/1/2023


<b>MonitorsTwo</b>

https://www.hackthebox.com/machines/monitorstwo

腕試しに'Seasonal Machine'に挑戦しました。結果は４時間かかりました。一番早い人は20分前後でPWNしているようなので全然です。Easyにカテゴライズされていますが、いくつかCVEを調べて、勉強になりました。やはりWrite-upが存在しないMachineをやってみるのは、緊張感があっていいですね。次回は公開スタートと同時に実施したいと思います。Machine自身は、難解ではありませんが、自分の次のアクションの決定と操作効率がよくないと感じました。自分の最適な環境を作りあげて自動化を高めたいです。また挑戦したらアップしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283070/c5b7e5b5-1e39-efb8-0289-1a33694fde62.png)

ハッピーハッキング
Long Text Area Field



+ [Long Text Area Field - Text Template (with Rich Text Format)](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeQCe)

Quote オブジェクトに長いテキスト領域があります。ロングテキストエリアフィールドを更新するフローがあります。 
リッチテキストに切り替えると、「正当化」するオプションが表示されません。右揃えのように試しても、これがわかります。 

:::note
 it looks like there is a right alignment of the <p> tag in your rich text field. If you modify the rich text field syntax directly, have you tried playing with that, such as setting that to text-align: justify
:::

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

+ [Long Text Area フィールドを数式で使う](https://qiita.com/Keiji_otsubo/items/89bf7854470464f9057d)

# レポートの検索条件


+ [ロングテキストエリア項目によるレポートの絞り込み](https://help.salesforce.com/s/articleView?id=000386801&type=1)

ロングテキストエリア項目の値でレポートを絞り込むことが可能になりましたが、実施する場合にはいくつかの制限があります。

標準ロングテキストエリア項目 (説明など) に適用される条件では、最初の 1,000 文字のみが検索の対象になります。
カスタムロングテキストエリア項目に適用される条件では、最初の 255 文字のみが検索の対象になります。

+ [項目と値の種別による条件検索に関する留意事項](https://help.salesforce.com/s/articleView?id=sf.notes_on_entering_filter_criteria.htm&type=5)

確かに条件に指定できた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3800f2e7-d7f5-3459-d93e-d22aec316516.png)


+ [Long text area filed in not visible in filter section of the report?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007clqYZSAY)

Sandboxではできるけど、本番ではできない？


一度暗号化して、元に戻したらしい

+ [カスタム リッチ テキスト エリア フィールドのデータの暗号化 (一般提供)](https://help.salesforce.com/s/articleView?id=release-notes.rn_security_pe_rta_ga.htm&release=218&type=5)
integer/float/rational/bigdecimalの何が違う？

数値型のクラスには、integer/float/rational/bigdecimalがあります。

これらは全て数値型のクラスですが、次のような違いがあります。

| クラス | 説明 |
|:-:|:-:|
|Integer   |整数を表すクラスで、Rubyにおいて、整数は通常、このクラスで表現される。 |
|Float|浮動小数点数を表すクラス。小数点以下の桁数に制限がなく、精度は一定ではないが、最も動作が速い。|
|Rational|有理数を表すクラス。分数として表現されます。例えば、 Rational(1, 2) は、 1/2 を表します。Floatより動作が遅いが正確（接尾辞にrをつけるとRationalとしてパースされる）|
|BigDecimal|任意精度の小数を表すクラス。精度が高く、誤差の問題が少ないため、金融関連の計算によく使われる。正確な反面、動作はFloat/BigDecimalと比較すると2〜６倍遅く、最も遅い。0.115e2みたいな値になる。この場合は、10の2乗を意味するので、11.5を表す。また-e2とかも可能。|


つまり、整数を表す場合はIntergerで良いのですが、小数を扱う場合にはFloat/Rational/BigDecimalのどれにするか適切に選択する必要があります。選択では、速さと正確性を考慮して決定していくこととなります。

例えば、金融機関やショッピングサイトの価格計算などの場合は遅くても正確性が必要です。したがって、BigDecimalが適切です。一方で、特に正確性は求めたり、複雑な計算をしない場合は最も速いFloatが適切です。


＜追記＞
railsでfloat型かdecimal型どちらを選択すべきか迷いました。
これはプロジェクトの要件次第なので、どれだけの精度を持たせたいかによります。
Bardによると以下の通りです。したがって、〇〇だからこの型にする！というのではなく、きちんとどれだけの精度が求められているのかを確認、把握することが重要ですね。

```
float型の精度は、小数点以下7桁です。そのため、小数点以下8桁の値を保存すると、約0.0000001の誤差が発生します。

double型の精度は、小数点以下15桁です。そのため、小数点以下8桁の値を保存すると、約0.00000000001の誤差が発生します。

このように、float型とdouble型では、精度に約10000倍の差があります。そのため、精度が重要な場合は、double型を使用することをお勧めします。
```
Keep Data Secure in a Recruiting App  【フローに変わった？】


+ [Create Custom Profiles](https://trailhead.salesforce.com/content/learn/projects/keep-data-secure-in-a-recruiting-app/create-custom-profiles)

自動化処理がプロセスビルダーからフローに変わってから検証ロジックが安定していないように思う。

+ [Favorite Fazil Abdullah Mohammad (Salesforce) asked in #Trailhead Challenges But in this module, when I create the HR Recruiter profile and then click edit, I can't find the Custom Object Permissions on the page. I have even created a playground](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeT0W)


# Automate Business Processes for a Recruiting App > Create Automation for Submitting Positions for Approval

+ [Automate Business Processes for a Recruiting App > Create Automation for Submitting Positions for Approval](https://trailhead.salesforce.com/content/learn/projects/automate-business-processes-recruiting-app/process-submitting-positions-approval)

+ [getting this error for this module Automate Business Processes for a Recruiting App](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeTcf)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/97ee1a31-fce1-9c88-7708-5e3e8dd92ab1.png)

:::note
I think that the content of the automation process has been replaced by the flow. Created in flow?
 
Use Flow Builder to Create a New Automation
:::

# Build an Automation for Creating Interviewer Records Learning Objectives

+ [Error:"Whoops, looks like there was a problem. Please try again."](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000PjH2a)

:::note
This trail could be cleared.
These are the ways in which it was solved.
-The problem itself differs between the Japanese and English versions.
　The Japanese version is a process builder, the English version is a flow.

-The language setting should be set to English for the organisation as well as the users.

Draft a case and have a user from Trailhead Help log in and check it.
:::

# 設定場所が違う？

+ [Hi I am facing the issue in the Keep Data Secure in Recruiting App module 2nd challenge not getting the job application in the edit page but its there in the previous page. By this issue i am not able to complete the another module till know completed 95%](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000J7kb0)
nilガードの使い方注意点

nilガードをする時はよくこう書きます。
これは@cached_valueがあれば@cached_valueに値を格納し、なければhogeを格納するという式です。
しかし、hogeがnil/falseの場合は、それ以外の値を返すまでの間、式は繰り返し評価され続けるらしい。
```
@cached_value ||= hoge
```

もしnil/falseを評価結果としてキャッシュしたい場合は、以下のように書く必要があります。
このように書くことで、@cached_valueがnil/falseの場合でも@cached_valueに格納されます。
```
if defined?(@cached_value) 
  @cached_value
else
  @cached_value = hoge
end
```
コミュニティ : タイルメニューが表示されない

+ [タイルメニューが表示されない](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000Jgwh3)

:::note
私も同じ問題を抱えていました。コミュニティのゲスト ユーザー プロファイルに移動し、ドキュメントに「読み取り」を追加することで問題を解決しました。

完全な解決策は、Salesforce ドキュメントで確認できます: 「注意 タイル メニューの画像をコミュニティ ユーザーが表示できるようにし、[ワークスペース] | [管理] で [ゲスト ユーザーがパブリック ページとログイン ページでアセット ファイルを表示できるようにする] を有効にします。次に、ドキュメントへの読み取りアクセスを許可します。 」

I had the same issue. I resolved it by going to the Guest User profile for the communtiy and adding "Read" on documents. 

You can see the full solultion in the Salesforce docs: "NOTE Make the images in the tile menu viewable by community users, enable Let guest users view asset files on public and login pages in Workspaces | Administration. Then, give read access to Documents."

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


[How to make the Tile Menu in your Salesforce portfolio visible?](https://www.linkedin.com/pulse/how-make-tile-menu-your-salesforce-portfolio-visible-arvind-ramesh?trk=pulse-article)
:::

+ [Title Menu component not visible in published Experience Site](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007aiBTv)

:::note
Please check this article.

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

+ [hi! after creating my portfolio the tile component is not showing to the public only when i login can i see it. pls how do i resolve it](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeTkA)

:::note
I had the same issue. I resolved it by going to the Guest User profile for the communtiy and adding "Read" on documents. 

You can see the full solultion in the Salesforce docs: "NOTE Make the images in the tile menu viewable by community users, enable Let guest users view asset files on public and login pages in Workspaces | Administration. Then, give read access to Documents."

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

How to make the Tile Menu in your Salesforce portfolio visible?
https://www.linkedin.com/pulse/how-make-tile-menu-your-salesforce-portfolio-visible-arvind-ramesh?trk=pulse-article

https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000Jgwh3
:::
Spring 23関連での問題


+ [Admin maintenance challenge Spring 23](https://qiita.com/Keiji_otsubo/items/068f7710082ef8691af7)
+ [Spring 23で何か変更されたのかもしれない:トレイルヘッド の影響](https://qiita.com/Keiji_otsubo/items/1ccb6648e5c5a39dd411)

+ [Beta Dashboard Widget Bug](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PeLTv)

:::note
I got confirmation from the product team that this is a known issue for the beta version. The subscriptions should work fine with text components once Summer '23 is deployed in your org.
:::

+ [Spring Release 23](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PejeX)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1e6e931c-a93d-6837-de3a-03e4bce396e5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e9fd22c0-3c06-4925-0c12-6e798b5fd311.png)

:::note
It looks like the Additional Information section is underneath the tab component, rather than within it. Drag the section up to where it says "Add Components Here" 
:::

# Error : We had trouble processing the request. We've reported the problem to Customer Support with error ID: undefined

+ [[Administrator-Spring ’23.] "error ID: undefined" occurred when saving after executing the "Upgrade Now" button in Record Detail.](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000QKerbSAD)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f84a26ce-1140-90ee-202a-7fb2a6531e5a.png)

:::note
 I have reviewed the same steps in a new playground org and the page saved without any error after upgraded it to Dynamic Forms.

 Can you please try it in a new playground org again?
:::


# Security Key - Your disconnect attempt could not be completed at this time. Please try again later.

+ [Security Key - Your disconnect attempt could not be completed at this time. Please try again later.](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000QKEUL)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/24681044-09b9-772a-30b5-a4fad6d8792d.png)

 I checked internally with the product team and from the internal case, I see the resolution to this bug is in progress and is scheduled to be released with our 246 i.e. Winter 23 release.

# Health Cloud Care Plan ユニット

+ [Health Cloud Care Plan ユニットの [Check Challenge] ボタンで問題が発生しています。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000QKUml)

# 面接官レコード作成のためのプロセスの作成

+ [面接官レコード作成のためのプロセスの作成](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000PiZmY)

このトレイルヘッドの課題のページの言語設定を英語にしてみてください。
何故か日本語のページだけが自動化処理はプロセスビルダーで、他の言語ではフローになっています。

一旦プロセスビルダーを無効化して、英語のページの指示のようにフローで作成してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/bfddf31f-2960-8d36-4774-5c899ef1abd0.png)
Vim 9.0 patchダイジェスト (2023/03)

[Vim](http://www.vim.org/)のリリースされた[patch](https://github.com/vim/vim/commits/master)の説明です。
([9.0.1368](https://github.com/vim/vim/commit/4ed914b18a47192f79f342bea5e8f59e120d5260) ～ [9.0.1433](https://github.com/vim/vim/commit/869113f3765d51fc822a61b2ba53d339797c1231))
**新機能、大幅な仕様変更には、:four_leaf_clover:が付いています。**

* [9.0.1397](https://github.com/vim/vim/commit/6a7c7749204b256e779c245b1e999bf852ad7b64): :four_leaf_clover:ポップアップメニュー関連のハイライトグループ `PmenuKind`, `PmenuKindSel`, `PmenuExtra` および `PmenuExtraSel` を追加しました。

---
#### 凡例

|表記|意味|
|:------|:------|
|:four_leaf_clover:|新機能、大幅な仕様変更|
|:alien:|Vim開発者向けの追加、変更|
|`'hoge'`|オプション (`:h options`参照)|
|`:hoge`|Exコマンド (`:h :index`参照)|
|`hoge()`|組み込み関数 (`:h functions`参照)|
|`v:hoge`|Vim定義済変数 (`:h v:`参照)|
|`+hoge`|feature (`:h +feature-list`参照)|

---
#### 方針
[こちら](http://qiita.com/h_east/items/23cd0d10932505072e6b#%E6%96%B9%E9%87%9D)を参照。
Journey Builder


[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめA～M](https://qiita.com/Keiji_otsubo/items/f3ddedee6793bf1576f8)


```JavaScript
<script type="module" src="https://cdn.jsdelivr.net/npm/chart.js@4.0.1/dist/chart.min.js"></script>
```

```Java
<script type="module" src="https://cdn.jsdelivr.net/npm/chart.js@4.0.1/dist/chart.min.js"></script>
```


+ [PowerBI または SAP を使用して Marketing CLoud でカスタマー ジャーニーを作成できますか?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ifq8d)

:::note
PowerBI または Salesforce の SAP を使用して Marketing Cloud でカスタマー ジャーニーを作成することはできません。 

Marketing Cloud のカスタマー ジャーニーは通常、Journey Builder を使用して作成されます。Journey Builder は、マーケティング担当者が顧客とのやり取りや行動に基づいてパーソナライズされたカスタマー ジャーニーを設計および自動化できるようにする Marketing Cloud プラットフォーム内のツールです。 

PowerBI と SAP は、顧客ジャーニーを作成するために Marketing Cloud と直接統合されていません。
:::
郵便番号を検索する AppleScript を作ったら地名の読みがわかって便利かも

## きっかけ
　日本郵便の[郵便番号データダウンロードサービス](https://www.post.japanpost.jp/zipcode/download.html)を見つけたので、早速「住所の郵便番号（CSV形式）」の、「読み仮名データの促音・拗音を小書きで表記するもの」をダウンロードしてみた。（全県分）
テキストエディタで検索することもできますが、簡単に検索できるよう AppleScript で作ってみました。
ネットが利用できない環境でも利用できるのも良いです。　また、
読みが登録されているので、地名の読み方も分かりますね。


## ファイルの形式
　ダウンロードしたデータの詳細は、[郵便番号データの説明](https://www.post.japanpost.jp/zipcode/dl/readme.html)に掲載されていますが、ポイントは、
・**文字コードが Shift-JIS**
・**改行コードが CR**
なのでした。
Macで使用するので、それぞれ **UTF-8、LF** に変換しておきます。
項目の詳細は、
1. 全国地方公共団体コード（JIS X0401、X0402）………　半角数字
2. （旧）郵便番号（5桁）………………………………………　半角数字
3. 郵便番号（7桁）………………………………………　半角数字
4. 都道府県名　…………　半角カタカナ（コード順に掲載）　（注1）
5. 市区町村名　…………　半角カタカナ（コード順に掲載）　（注1）
6. 町域名　………………　半角カタカナ（五十音順に掲載）　（注1）
7. 都道府県名　…………　漢字（コード順に掲載）　（注1,2）
8. 市区町村名　…………　漢字（コード順に掲載）　（注1,2）
9. 町域名　………………　漢字（五十音順に掲載）　（注1,2）
10. 一町域が二以上の郵便番号で表される場合の表示　（注3）　（「1」は該当、「0」は該当せず）
11. 小字毎に番地が起番されている町域の表示　（注4）　（「1」は該当、「0」は該当せず）
12. 丁目を有する町域の場合の表示　（「1」は該当、「0」は該当せず）
13. 一つの郵便番号で二以上の町域を表す場合の表示　（注5）　（「1」は該当、「0」は該当せず）
14. 更新の表示（注6）（「0」は変更なし、「1」は変更あり、「2」廃止（廃止データのみ使用））
15. 変更理由　（「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止（廃止データのみ使用））

## ソースコード
　AppleScript のコードです。
検索結果は複数の行がヒットすることがあるため「テキストエディット」を起動して、そこに表示するようにしています。（コメントアウトしている Display dialog を使っても良いでしょう）

```AppleScript:郵便番号検索
--
-- 郵便番号の検索をします。（正規表現が使用できます）
-- ダウンロードした CSV ファイル(KEN_ALL.CSV)は、
-- 文字コードが shift JIS 、改行コードが CR なので
-- 文字コードを UTF-8 に、改行コードを UTF-8 に変換し、
-- アプリとして保存したフォルダーの直下に置いて使用します。
--
-- set filePath to "/Users/<YOUSER ID>/Downloads/KEN_ALL.CSV"
set pathToMe to path to me
set path2me to POSIX path of pathToMe
set filePath to path2me & "KEN_ALL.CSV"

display dialog "検索文字/郵便番号を入力" default answer ""
set q to text returned of result
if q = "" then return
set cmd to "grep " & q & " " & filePath

set rslt to do shell script cmd

-- display dialog rslt
tell application "TextEdit"
	activate
	make new document at beginning of documents
	set text of front document to rslt
end tell
```
### 利用する前に
　このスクリプトをスクリプトエディタで開いて、アプリケーションとして保存して、
そのアプリケーションを右クリックして「パッケージの内容を表示」して開いたところ（アプリの直下）に
郵便番号データダウンロードサービスからダウンロードして、文字コード、改行コードを変換したファイル（KEN_ALL.CSV)を置いて
から、アプリケーションとして利用します。
　あるいは、スクリプトの冒頭のコメントアウトしている
set filePath to "/Users/&LT;YOUSER ID&GT;/Downloads/KEN_ALL.CSV"
を使って、直接ファイルパスを指定するようにしても良いでしょう。その場合はその下の３行をコメントアウトします。

## 使用方法
　起動すると検索文字を入力するダイアログが出てきますので、
・郵便番号から住所を検索するなら郵便番号を
・住所から郵便番号を検索するなら住所を
入力します。
住所を入れるときは、都道府県名、市区町村名など別れたデータなので、正規表現を使います。例えば「東京.\*銀座」のようにすると
**「13102,"104  ","1040061","ﾄｳｷｮｳﾄ","ﾁｭｳｵｳｸ","ｷﾞﾝｻﾞ","東京都","中央区","銀座",0,0,1,0,0,0」**
が見つかります。（「.*」は任意の文字列）