OmniAICreator/Qiita-1.07M huggingface dataset:
irix インストール

#概要

irixインストール手順。

#環境

sgi origin 2000
irix 6.4

#ターミナルの準備

Origin2000はサーバタイプでVGA等はついていませんのでシリアルコンソールで操作します。
origin2000は、デリケートですので、室温を２６度以下にしましょう。

#System Maintenance Menuの起動

biosの様なものです。

起動したら、[Esc]キーを押して、入ります。

```
System Maintenance Menu

1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
```

#ディスクのフォーマット

インストールCDを入れます。
起動して、escでSystem Maintenance Menuに入ります。
５でCommand Monitorに入ります。

```
boot -f dksc(0,6,8)sash64 dksc(0,6,7)stand/fx.64
```

［ここで、extended modeを使うかどうかをきいてくる→yes（こうしないとformatの選択は出てこない）］

fx:"device-name"=(disc) ［リターン］
fx:ctlr#=(0)　［リターン］
fx:drive#-=(1)　［リターン］
...openingdks(0,1,0) 
［メニューが出る］

（１）すでにHDがIRIXでフォーマットされている場合→(re)partitionを選ぶ (fx> re)
［メニューが出る］→（２）を飛ばして下へ

（２）新規のHDの場合→(d)ebugを選ぶ (fx> d)
［メニューが出る］

[fo]rmatを選ぶ (fx/debug> fo)

fx/debug/format: Drive Parameters to use in formatting = (current) ［リターン］
* * * * * * W A R N I N G * * * * *
about to destroy data on disk (0,1,0) ok? ［"yes"と入力］
ディスクの大きさによりかなり時間（数十分）がかかる →

fx>format>.. ［ドット２つ］
［メニューが出る］

［ヴォリュームラベル］
fx>l (label) 
fx>l> c (create)
fx>l>c> a (all)

fx>l>c>../../ ［２つもどる］
［メニューが出る］

［repartitionを選ぶ］→ fx>re(p artition)
［メニューが出る］[ro]otdrive [o]ptiondrive [e]xpert [u]serrootdrive [re]size

fx/repartition>ro (rootdrive)

fxにもどる→ fx/repartition> .. ［ドット２つ］

fx> exit ［終了→Command Monitorへもどる］

#インストール
インストールCDを入れます。
起動して、escでSystem Maintenance Menuに入ります。
2でInstall System Softwareに入ります。
file system(efs/xfs)をきいてくる→xfs（を選ぶ）
block size(512/4096)をきいてくる→4096を選ぶ （１ＧＢまで可能らしい）

【最低限インストールするソフトのＣＤを記憶させる。】
（１）inst> open
Install Software from: [/CDROM/dist]と出るので、リターンすると、まず、
(1)Place me on the maintenance stream
(2)Place me on the feture stream
の選択をきいてくる。
maintenance streamは、最少のインストールとなり、ブラウザやアイコンなしの画面となる。従って、通常は、(2)を選ぶ。

以下のＣＤを挿入し、[/CDROM/dist]→リターン→[/CDROM/dist]→挿入をくりかえす。

Installation Tools and Overlays(1 of 2)
Overlays(2 of 2)
IRIX 6.4 Foundation 1
IRIX 6.4 Foundation 2
Applications

これで、ＣＤの情報が記憶され、順次、挿入を指示してくるようになる。

（２）Install Software from: [/CDROM/dist]done
Inst>keep *
Inst>install standard → Inst>

Inst>go

以上。
【効率化】フォルダ一括作成のやり方

備忘録
初心者でもわかりやすかった方法（参考サイト）をまとめています。

## ①Ecxelからバッチ作成
（参考URL）
[【フォルダ作成】大量の連番フォルダを一括で作る方法 - 理想ライフクリエイター笹澤裕樹の公式ブログ](https://hiro2n.com/create-folder-993)

1. A列に`md`、B列にフォルダ名を入力
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/6a3b8d42-041c-456b-4348-132b34fcab98.png" width=70%>

2. `CSV(コンマ区切り)(*.csv)`でExcelファイルを保存
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/6efa3545-dc2e-b1c3-2271-e1a12a38436c.png" width=70%>
☆ 保存したらファイルは閉じる

3. フォルダを一括作成したい場所にCSVファイルを移動（もしくはコピー）
4. 拡張子を`.bat`に変更
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/5a297f28-bfbc-b599-3fe5-30977fcebc26.png" width=80%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/ceed06f8-0a23-1fb5-a76f-eb3480d3cfb6.png" width=60%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/3231d072-249c-92e6-65e9-d66a4650b962.png" width=80%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/2ec3ca74-886d-1eb5-c4f5-e36a60fece9c.png" width=80%>
☆ ファイルを閉じておかないと怒られます

5. バッチ起動（ダブルクリック）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/fac17d1b-070b-7b3c-b6ca-a510c12f750f.png" witdh=80%>
アルファベット順になってしまって美しくなかった。


## ②テキストファイルからバッチ作成
（参考URL）
[リストアップされた名前のフォルダーをいっきに作る方法 - 週刊アスキー](https://weekly.ascii.jp/elem/000/000/016/16041/)

1. フォルダ名一覧（テキストファイル）を用意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/9cb07172-4f44-3338-5fc6-953ff2d2d982.png)
※空白を含むフォルダ名は不可
※コマンドプロンプトにて意味を持つ以下の文字の使用は不可

2. 以下のテキストをバッチファイルとして保存

    ```
    for /f %%a in (%1) do md %%a
    ```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/391661a8-4c97-842d-c919-50434a504211.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/643da99f-aeb4-32ff-48dd-066d4fe5c187.png)
☆ 1も2もフォルダを作成したい場所に置いておく

3. 1のテキストファイルを2のバッチファイルにドラッグ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/654d7294-72c6-a318-6e7b-bf5fb8104f5e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430585/c3c2d040-8089-f285-31d4-d3c2ca8a4133.png)


# おわり
複数フォルダ名からフォルダリストを作成する
というのも見かけました。
とても便利だと思いました。

どんどんスマートな人間になっていきたいです。
メモ：mysqlのapidriverによっての違い

db:cloud for sql (mysql 5.7)

・mysqldb(mysql_client)の方がselectが早い10%以上早い（select 100件 loop 100回)
・pymysqlの方がinsertは早い

用途によってapidriverを使い分けた方がチューニングできる・・・かも？
【SwiftUI】1-2 Building Lists and Navigation を噛み砕いていく【チュートリアル】

実行環境

- MacOS 10.15.3
- Xcode Version 11.3.1 

---

最初の章「SwiftUI Essentials」は以下の3章からなってます
- Creating and Combining Views
- **Building Lists and Navigation (今回)**
- Handling User Input

今回はAppleさんがスタートファイルを用意してくれているので、プロジェクトファイルをダウンロードして「starting point -> 〜.app」から始めてください
<img width="700" alt="スクリーンショット 2020-02-24 22.48.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/443316/bd2eaf7c-7390-ac1b-3737-b5cc44ec958f.png">

**該当ページからプロジェクトファイルをダウンロードしないと、できない演習がありますので、毎回必ずダウンロードしてからチュートリアルを進めてください。**

今回解説するBuilding Lists and Navigationは全部で8編あります
　　
1. データの扱い方
2. 行表示の基本とデータの引用
3. 行表示をプレビュー構造体ないで操作し表示する
4. リストを行表示する方法
5. リストを作る方法
6. 2〜6の知識をまとめて1つのUIを作ってみよう
7. 子viewにデータを渡す
8. 色々な機器でプレビューする方法


S1 データの扱い方と今回使うデータの確認
---
要点…ファイルの内容と連携を確認する。今回はデータ内容を.jsonで管理し.swiftでデータの型や利用を宣言するという内容でした

用語

※注…今後の演習でこれらの関係が把握できてないと演習で困るので頭に入れておいてください(チュートリアルにも書いてる)

Landmark.swift...データの型や扱いを宣言しているファイル。プレビューはない
landmarkData.json…データの詳細が記述されてるファイル。Landmark.swiftで宣言された型と一致したデータが格納されている。
LandmarkDetail.swift…プレビューはここでする。前回のチュートリアルで使ったLandmark.swiftと同じ。

S2 行表示の基本とデータの引用
---
要点…bodyで必要なデータを宣言して今回のファイルで扱う方法と、プレビューでそれを反映する。

```swift:LandmarkRow.swift
struct LandmarkRow: View {
    var landmark: Landmark
```

とチュートリアルで宣言しますが「landmark」と「.json (引用したいデータ)」という表現が頻出します。
「landmark」は好きな名前で宣言しても大丈夫ですが、：の後はファイル名なので一致しないとエラーを吐きます。

```swift:LandmarkRow.swift
...
landmark.image
Text(landmark.name)

...
struct LandmarkRow_Previews: PreviewProvider {
    static var previews: some View {
        LandmarkRow(landmark: landmarkData[0])
    }
}
```

等で使われていることを確認してください。
Xcodeではcommandキーを押しながら「Edit all in scope」をクリックすると、同じ構造体内で宣言した箇所の名前を一括で変更できます。

.nameを.stateにしてもエラーが出ずに反映されることも確認してみてください。型が不一致だと当然エラーを吐きます

また

```swift:LandmarkRow.swift
        LandmarkRow(landmark: landmarkData[0])
```

[0]の部分は配列の順番を反映していて、データの数以内の数字であればそれもプレビューに反映されます。1とか入れてみるとわかります。

用語…なし
S3 行表示をプレビュー構造体で操作し表示する
---
要点…プレビューはGroup{}でデータを操作できるよ。プレビューレイアウトはGroup{}外で一括管理できるよという話。これを使わずに

```swift:LandmarkRow.swift
struct LandmarkRow_Previews: PreviewProvider {
    static var previews: some View {
        LandmarkRow(landmark: landmarkData[0])
        LandmarkRow(landmark: landmarkData[1])
    }
}
```
と書くと要素が2つ表示されずにエラーを吐きます。(2つ表示する方法は次のSでやります)

ちなみに、.previewLayoutをコメントアウトするとiPhoneのプレビューが2つ並びます。

用語…なし
S4 リストを行表示する方法
---
要点…List{}で表示すれば、リストを並べられるよという話。配列を増やせばその分表示される。

S5 List{}を使わずに、リストを生成する方法
---
要点…Identifiableプロコトルを使えば表示できるよという話。Appleさんは2つの方法(S4とS5)の方法があるよと言ってる。

用語
プロコトル…正直よくわからないので、後で書く

S6 Listにナビゲーションリンクを追加する
---
要点…ナビゲーションリンクを追加すると、リストをタッチした時に反映されるという話

S7 子viewにデータを渡す
---
要点…正直ここはなにがしたいのかわからなかった。後でわかったら追記します。

S8 プレビューに色々な機器で表示する
---
要点…プレビューで色々なiOS機器を指定できるというだけ。


```swift:LandmarkRow.swift
ForEach(["iPhone SE", "iPhone XS Max"], id: \.self) { deviceName in
 
```
ここにプレビューしたい機器を書き込めば反映されます
その他

- var…型推測してくれる宣言です。intとかStringとかをJavaとかCのように宣言しなくてもいい高級言語の特徴。PHPとかでも同じものがある。
- structの後に宣言されてる「Hashable, Codabl」とは…？
Amazon Linux 2 日付変更

## タイムゾーンの変更

調べてたら幾つか方法があるみたいなのでそれぞれメモ

### 方法1．設定ファイルの書き換え

#### 1) /etc/sysconfig/clockの書き換え

```
# vi /etc/sysconfig/clock
```

```:/etc/sysconfig/clock
ZONE="UTC"
UTC=true
```

「ZONE」を変更↓

```:/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
```

#### 2) シンボリックリンクの更新

```
# ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

#### 3) シンボリックリンクの確認

```
# ll /etc/localtime
~~~ /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo
```

### 方法2．timedatectl コマンドを使う

#### 1) timedatectl コマンド

```
# timedatectl set-timezone Asia/Tokyo
```

#### 2) シンボリックリンクの確認

```
# ll /etc/localtime
~~~ /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo
```

同じ結果でした！！！
なお「/etc/sysconfig/clock」は元の「ZONE="UTC"」に戻っていました。
【Udemy Python3入門+応用】　22. タプルのアンパッキング

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ "現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル")」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun "酒井潤")さんから許可をいただいた上で公開しています。**

##■タプルのアンパッキング
#####◆タプルをバラす
```python:tuple_unpacking
num_tuple = (10, 20)
print(num_tuple)

x, y = num_tuple
print('x =', x, type(x))
print('y =', y, type(y))
```
```:result
(10, 20)
x = 10 <class 'int'>
y = 20 <class 'int'>
```
タプルの要素をバラすことができる。


#####◆並列で代入することの実際
```python:tuple
X, Y = (0, 100)
print('X = ', X, type(X))
print('Y = ', Y, type(Y))

min, max = 0, 100
print('min = ', min, type(min))
print('max = ', max, type(max))
```
```:result
X =  0 <class 'int'>
Y =  100 <class 'int'>
min =  0 <class 'int'>
max =  100 <class 'int'>
```
タプルは`()`を省略することができた。
`min`と`max`のように並列で記載するということは、
一旦`0, 100`がタプルと判定されたあと、それがアンパッキングされた結果、
int型となって代入されたことになる。

#####◆タプルのアンパッキングを利用したオブジェクトの入れ替え
```python:change_object
a, b = 1, 2
print(a, b)

a, b = b, a
print(a, b)
```
```:result
1 2
2 1
```
一度代入したオブジェクトを入れ替えることができる。
Windows 特定プロセスのCPUコア数を制限

#我慢できなくなった
社内PC監視のため、CMでも流れる有名な運用管理ソフトウェアが導入された。USBコピー問題や会社PCの私物化防止のためなら仕方ない。
しかし、運用管理者が人のPCを覗きニヤニヤするシーンを見てしまってやっぱりと呆れていた。それでも資産管理のためなら仕方ないと目を瞑った。
しかし！これだけはもう我慢できない。
普段はそこまでではないがコンパイルする度に運用管理ソフトウェアの複数プロセスが連動してトータルほぼ100%までCPUパワーを食う。
仕事に支障がでるので遮断まではしないがCPU使用率を抑えたい。

# PC起動時にプロセスのコア数を変更

 * i5の4コアの内、CPU3のみを与えたい
 * ProcessorAffinity=8

### タスクスケジューラ
 * タスクの実行時に使うユーザーアカウント：SYSTEM
 * トリガー：スタートアップ時
 * 操作

```bash
PowerShell "Get-Process SXXX | % { $_.ProcessorAffinity=8 }"
PowerShell "Get-Process CtlXXX | % { $_.ProcessorAffinity=8 }"
PowerShell "Get-Process CtlXXX64 | % { $_.ProcessorAffinity=8 }"
PowerShell "Get-Process SvcXXX | % { $_.ProcessorAffinity=8 }"
PowerShell "Get-Process LogChromeXXX | % { $_.ProcessorAffinity=8 }"
```


# メモ
 * 優先度も変更できる
https://itengine.seesaa.net/article/453362400.html
 * テストでコンパイルしてみると前より暴れない。よかった。

![ee13dc41446e570059f3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249425/b0eb329c-8a18-da8f-3aa3-fe2ebcf9ee88.png)


# 参考
 * https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-script
 * https://github.com/guitarrapc/PowerShellUtil/blob/master/Set-ProcessPriorityClass/Set-ProcessPriorityClass.ps1
ruby-odbcがインストールできないときに試すこと

ruby-odbcがインストールできず、解決するまでに割と時間がかかったのでメモを残します。

# 注意
TD-agent + ruby-odbcでのインストールメモになります。

# 環境
- Windows10 64bit
- Ruby2.4
- td-agent-3.5.1

# 最初の現象
1. td-agentインストール（td-agent-3.5.1-0-x64.msi）
2. ruby-odbcインストール($ fluent-gem install ruby-odbc)  
こんなエラーが・・・  

```Td-agentCommandPrompt.
ERROR:  Error installing ruby-odbc:
        ERROR: Failed to build gem native extension.
```  
調べてみると、
 
- ruby-odbcを入れるにはDevKitが必要
- td-agentにはDevKitは入っていない
- td-agent3.5のrubyは2.4
- ruby2.4からDevKitはMSYS2を使っている  

とのこと。

というわけで、MSYS2をインストール。

# MSYS2をインストール + 他に必要なパッケージもインストール
[MSYS2のインストーラー](https://www.msys2.org/)をダウンロードし、インストール。  
インストーラーに従ってポチポチするだけでOKです。  
インストールが完了すると｢MSYS2 MSYS Shell｣が立ち上がるので、パッケージを更新します。

```MSYS2MSYSShell.
$ pacmamn -Syu
```

他には、gccとmakeも必要なので、インストールします。

```MSYS2MSYSShell.
$ pacman -S mingw-w64-x86_64-toolchain
$ pacman -S make
```

# ruby-odbcインストールのリベンジ
Td-agent Command Promptを起動し、MSYS2にPathを通してあげて、インストールすると成功しました。

```Td-agentCommandPrompt.
$ set PATH="%~dp0embedded\bin";C:\msys64\mingw64\bin;C:\msys64\usr\local\bin;C:\msys64\usr\bin;C:\msys64\bin;%PATH%
$ fluent-gem install ruby-odbc
...
Successfully installed ruby-odbc-0.99999
```

# まとめ
MSYS2をインストールして、gccとmakeをインストールして、MSYS2のpathを通してやればインストールできるようになります。

# 参考ページ
- [MSYS2 による gcc 開発環境の構築](https://qiita.com/spiegel-im-spiegel/items/ba4e8d2418bdfe0c8049)
- [https://blogs.osdn.jp/2018/01/30/msys2-mingw.html](https://blogs.osdn.jp/2018/01/30/msys2-mingw.html)
基本情報20週目(03/02週)

# 目標と結果
### 目標
- 参考書をみる。
- [基本情報技術者試験ドットコム](https://www.fe-siken.com/)を使う。
- 午後で通用する様に内容を理解する。
- 情報セキュリティの勉強をする。
- アルゴリズムの勉強

### 結果
- 問題
    - https://www.fe-siken.com/kakomon/24_aki/pm04.html
        - セキュリティ事故の対応
            - 前提としてSQLインジェクションが何かを知っておく必要がある
    - https://www.fe-siken.com/kakomon/28_haru/pm01.html
        - Webサーバへに対する不正侵入の対応
            - パスワードの強度問題が難しい
                - 英小文字26字から大文字、数字、記号も受け付けるときの強度比較
                - 小文字6字から8字への強度比較「26^8/26^6=26^2」
    - https://www.fe-siken.com/kakomon/29_aki/pm01.html
        - SSHと公開鍵、秘密鍵の効果
            - 一ヶ月前の復習
    - https://www.fe-siken.com/kakomon/23_aki/pm04.html
        - 情報セキュリティにおけるリスク
            - 問題文をよく見てリスク評価表に書き込んでいくことが大事
    - https://www.fe-siken.com/kakomon/28_aki/pm01.html
        - 販売支援システムの情報セキュリティ
            - DMZにはwebサーバを置く
            - webサーバからLAN内のDBサーバにアクセスさせる


# 振り返り
### Keep
- 情報セキュリティは継続して勉強していく

### Problem
- アルゴリズムを避けてしまっている
    - 09週はアルゴリズムと向き合う

### Try
- アルゴリズムの勉強
SIMRIWの導入

#Git for windows の導入
1.https://gitforwindows.org/
2.インストール
3.再起動
4.バージョン確認　'git --version'

#SIMRIW with Pythonの導入
##作業手順
1.Anacondaで仮想環境の構築（simriw_test)
2.pip install -U git+https://ky0on@bitbucket.org/ky0on/pysimriw.git
3.インストールの確認　pip list
4.simriw.py の実行→エラー
5.ライブラリのインストール
　1.hjson
　2.numpy
　3.pandas
　4.print_function
　5.matplotlib
6.画像ファイル、csvファイルの出力先フォルダの作成
7.パスの上書き
##参考
https://github.com/ky0on/simriw
https://github.com/ky0on/pysimriw
Nuxt.jsでgenerateした時に404.htmlを作成する方法

# genarate
Nuxt.jsで静的ファイルを書き出す際は以下のコマンドを実行します。

```
$ npm run generate
```

これで`dist`が作られその中に静的ファイルが書き出されます。

```
$ npm run dev
```

でサーバーをたてて開発している場合、存在しないURLにアクセスすると404ページが表示されますが、静的ファイルをかき出した時、なにも設定してないと404の考慮はなされません。

# nuxt.config.jsの変更
`nuxt.config.js`に以下の変更を加えることで`generate`時に`404.html`が書き出されます。

```js:nuxt.confing.js
export default {
  generate: {
    fallback: true
  }
}
```

https://ja.nuxtjs.org/api/configuration-generate/#fallback

# サーバ側の設定
Apacheを利用している場合は`.htaccess`等でリダイレクトの設定をしましょう。

```apache:.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ 404.html
</IfModule>
```
Rubymineが環境変数読んでくれなかったときにやったこと

direnvとかで環境変数を読んでいるプロジェクトで、rubymine上でテストを実行したところ環境変数が読まれなかった。
一度rubymineを落としてプロジェクトのディレクトリで

```
$ mine .
```

でrubymineをcliから起動したら読んでくれるようになった。
基本情報3月の勉強計画

#目標と結果
### 目標
- 基本情報技術者試験ドットコムを活用する。
- アルゴリズムと表計算を重視する。
- 情報セキュリティは確実に出題されるので解けるようにしておく。
- 模擬試験をセルフでやる。

### 結果
- 週2~4問のペースで問題に取り組んだ
    - セキュリティとアルゴリズムを重点的に

# 振り返り
### keep
- 確実に出題されるセキュリティ、アルゴリズム、表計算の勉強

### Problem
- アルゴリズムと表計算の勉強のバランスが悪かった

### Try
- SQLの勉強

# 週次計画
###[20週目(03/02)](https://qiita.com/Yuya_nakano/private/3cfe5fb880395a58cf66)
###[21週目(03/09)](https://qiita.com/Yuya_nakano/items/98f93bf41b599f4d6ca3)
###[22週目(03/16)](https://qiita.com/Yuya_nakano/items/b1b13e7e6e16f9d94b32)
###[23週目(03/23)](https://qiita.com/Yuya_nakano/private/017f7313631405c7cef6)
Node.jsアプリにSass導入

# はじめに
生のCSSを書くよりも、Sassで書いたほうが良いらしい。
導入が想像よりも面倒だったので、備忘録として残す。
ざっくりとした理解で書いているので、誤解を生む表現もあるはず。
その点、ご注意ください。

ちなみに、本記事では、``gulp.js``を使う方法を紹介する。

## 環境
- windows 10 home 64bit 
- node.js 12.12.0
- **gulp.js 4.0.2**
    - **バージョン3と4では仕様が異なるため注意！**

## Sassとは

CSSを便利に書くための言語みたいなもの。

SASS記法とSCSS記法の2種類がある。
SCSS記法のほうが、CSSの書き方に近い。
本記事では、SCSS記法で進める。

ざっくりとした使い方（？）としては、
1. Sassを使えるように、環境構築する。
2. CSSで記述したい部分をSassで書く。
3. SassをCSSにコンパイルする。（``.sass``または``.scss``ファイルを、``.css``ファイルに変換する。）

## Node.jsアプリケーションでSassを使うには

Sassを自動コンパイルしてくれる[gulp.js](https://gulpjs.com/)を使うのが、調べてみたところ無難そう。
コンパイルが自動化されることで、Sassを書くだけで済む！
自分でCSSに変換する必要なくなる！

おおまかな流れとしては、
1. node.jsアプリ作成
2. そのアプリにディレクトリ移動
3. gulp.jsをローカルインストール
4. ``gulpfile.js``ファイルを作成＆必要な情報の記述
5. ``package.json``の記述
6. 開発開始！

## Sass導入
### Node.jsアプリケーションの作成

適当にNode.jsのアプリケーションを作成。

```:command
mkdir hoge_node_sass
cd hoge_node_sass
npm init
```

### gulp.jsをインストール

```:command
npm install gulp --save-dev
npm install gulp-sass --save-dev
```

``--save-dev``にしている理由は、gulpもSassも開発時にしか使わないため。
公開時には、コンパイルされたCSSが適用されるため、gulpもSassも不要。

ちなみに、グローバルインストールすると``gulp``コマンドが使えて便利だが、インストールするものはプロジェクトごとに管理したほうが良いらしいので、ローカルインストールがオススメ。

### gulpfile.jsの作成
``gulpfile.js``を同ディレクトリに作成。

```js:gulpfile.js
const gulp = require('gulp')
const sass = require('gulp-sass')

// sassの読み込み先とcssの保存先指定
const hoge = () => {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(gulp.dest('./css/'))
}

// 自動監視のタスク、sassWatchって名前にする
const sassWatch = () => {
  const watcher = gulp.watch(['./sass/**/*.scss'])
  watcher.on('change', hoge)
}

// sassWatchをデフォルトのタスクに設定
exports.build = sassWatch
exports.default = gulp.series(sassWatch)
```

### package.json記述

``"scripts"``に``"gulp": "gulp"``を追加。
これにより、コマンドプロンプトから``npm run gulp``と打つことで、``gulpfile.js``の処理を実行できる。

```json:package.json
"scripts": {
  "gulp": "gulp"
}
```

### ディレクトリ構成

さいごに、ディレクトリ構成を載せておく。

```:ディレクトリ構成
├ css
  ├   // コンパイル後のCSSが自動で追加される
├ sass
  ├ hoge.scss  // コンパイル前のSCSS（またはSASS）
├ gulpfile.js
├ index.html
├ package.json
```

### 開発開始

gulpを実行して監視モードにすれば、準備完了！
Sassでの開発開始！

```:command
npm run gulp
```

## 追加しておくと便利な機能

```:command
# ベンダープレフィックス
npm install gulp-autoprefixer --save-dev
```

```js:gulpfile.js
const gulp = require('gulp')
const sass = require('gulp-sass')
const autoprefixer = require('gulp-autoprefixer') // 追記

const hoge = () => {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(autoprefixer()) // 追記
    .pipe(gulp.dest('./css/'))
}

const sassWatch = () => {
  const watcher = gulp.watch(['./sass/**/*.scss'])
  watcher.on('change', hoge)
}

exports.build = sassWatch
exports.default = gulp.series(sassWatch)
```

## さいごに
書いてるうちにSassというよりもgulpの説明がメインになってた気がする…
間違いやご指摘などあれば、コメントよろしくお願いします。

## 参考サイト

- https://gulpjs.com/
    - gulp.js公式
- https://liginc.co.jp/web/tutorial/117900
    - v3系の内容だが、gulpによるSassの自動コンパイルについてわかりやすい記事
- https://qiita.com/M_amourr/items/09c8bb4e2b2981cafe7a
    - 同じくv3系の内容だがわかりやすい記事
- https://qiita.com/Michinosuke/items/11908fd276d1794aedeb
    - v4系の内容で、シンプルにまとまっていて参考になる記事
pandasで#行を無視して読み込む

## TL;DR

csvファイルとかだとまず行内に#から入るコメントアウト行が入ってたりすることはないと思いますが、バイオインフォマティクス特有のgffやらvcfやらbedやらはコメント行が含まれていて、普通にpandasで読み込むのがめんどくさかったので調べました。pandasは賢いのでそういう機能もあるようです。

## comment引数

解決策は非常に簡単で、読み込む時にcomment引数にコメントの最初につける記号を入れるだけです。

```python
import pandas as pd


df = pd.read_csv("/path/to/file", comment='#')
```

これで読み込めないイライラが解消される...
【Udemy Python3入門+応用】　21.タプル型

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ "現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル")」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun "酒井潤")さんから許可をいただいた上で公開しています。**


##■タプル型
#####◆タプル型の基本
```
>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> type(t)
<class 'tuple'>
```
リスト型では[]を使っていたが、
タプル型では()を使う。
タプル型においても、インデックスやスライス、`.count()`や`.index()`などが使える。

#####◆タプル型とリスト型の違い
```
>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> t[0] = 100
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
```
リスト型では後からリスト内の要素を編集できたが、
タプル型では基本的に要素を編集することができない。

#####◆タプルとタプルの足し算
```
>>> x = (1, 2, 3)
>>> y = (4, 5, 6)
>>> z = x + y
>>> z
(1, 2, 3, 4, 5, 6)
```

#####◆`()`の省略
```
>>> t = 1, 2, 3
>>> t
(1, 2, 3)
>>> type(t)
<class 'tuple'>
```
`()`を省略した場合、タプル型と判定される。

```
>>> a = 1
>>> a
1
>>> type(a)
<class 'int'>

>>> b = 1,
>>> b
(1,)
>>> type(b)
<class 'tuple'>
```
`,`がつくと、タプル型と判定される。
うっかりつけてしまった`,`によりタプル型と判定され、バグの原因になることがあるので注意。
AndroidのBLEのstartScanとstopScan同じCallbackインスタンスを渡すこと

## これだとStopできない

    private fun bleStartScan() {
        BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(object : ScanCallback() {
        })
    }

    private fun bleStopScan() {
        BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(object : ScanCallback() {
        })
    }

## こっちだとStopできる

    private val scanCallback = object : ScanCallback() {
    }

    private fun bleStartScan() {
        BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(scanCallback)
    }

    private fun bleStopScan() {
        BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(scanCallback)
    }

## 結論
startScanとstopScanには同一のCallbackインスタンスを渡そう。
この世で最もシンプルな、RX220内蔵E2データフラッシュのサンプルコード（2byte書き込み版）



# 概要

ルネサスRX220マイコンのE2データフラッシュへデータを格納する処理を、できる限りシンプルにしてみました。

## E2データフラッシュの仕様

|項目|内容|
|:--|:--|
|メモリ空間|              8Kバイト| 
|アドレス|0010 0000h～001F FFFFh|
|プログラム単位|2バイトまたは8バイト| 
|イレーズ単位|128バイト|  

# 内容

- 書き込み時には、問答無用で全空間イレース！
- ブランクチェックとかせずに、とにかくイレース！
- 書き込み/読み出しアドレスは、アドレス固定で先頭アドレスのみ！
- 書き込み/読み出しは、`unsigned short`の配列のみ対応（2byte書き込みのみ）
- 引数の`length`には配列の要素数を指定（byte数じゃないよ！）
- 8Kbyte以上の入力データは通知なしで破棄
- エラーチェック無し
- タイムアウトチェック無し
- 割り込み無し
- プロテクト系は解除したまま放置
- 周辺クロック通知は初回のみ
- `FLASH.PCKAR.WORD`へは、動作周波数を入力してください

# サンプルコード
```c
#include <machine.h>
#define E2_BASE_ADDR (0x00100000)

void e2_init(void)
{
	// unprotect
	FLASH.DFLRE0.WORD = 0x2D0F;
	FLASH.DFLWE0.WORD = 0x1E0F;
	// mode -> E2 P/E
	FLASH.FENTRYR.WORD = 0xAA80;
	FLASH.FWEPROR.BIT.FLWE = 1;
	// preiod
	FLASH.PCKAR.WORD = 20; // 20MHz
	*((volatile unsigned char *)E2_BASE_ADDR) = 0xE9;
	*((volatile unsigned char *)E2_BASE_ADDR) = 0x03;
	*((volatile unsigned short *)E2_BASE_ADDR) = 0x0F0F;
	*((volatile unsigned short *)E2_BASE_ADDR) = 0x0F0F;
	*((volatile unsigned short *)E2_BASE_ADDR) = 0x0F0F;
	*((volatile unsigned char *)E2_BASE_ADDR) = 0xD0;
	while (!FLASH.FSTATR0.BIT.FRDY)
		;
	// mode -> ROM/E2 read
	FLASH.FWEPROR.BIT.FLWE = 2;
	FLASH.FENTRYR.WORD = 0xAA00;
}

void e2_write(unsigned short *data, int length)
{
	// mode -> E2 P/E
	FLASH.FENTRYR.WORD = 0xAA80;
	FLASH.FWEPROR.BIT.FLWE = 1;
	// erase (128byte * 64block = 8Kbyte)
	for (int i = 0; i < 64; i++)
	{
		// block erase
		*((volatile unsigned char *)(E2_BASE_ADDR + i * 128)) = 0x20;
		*((volatile unsigned char *)(E2_BASE_ADDR + i * 128)) = 0xD0;
		while (!FLASH.FSTATR0.BIT.FRDY)
			;
	}
	// write (2byte * length)
	for (int i = 0; i < min(length * 2, 8192); i += 2)
	{
		*((volatile unsigned char *)(E2_BASE_ADDR + i)) = 0xE8;
		*((volatile unsigned char *)(E2_BASE_ADDR + i)) = 0x01;
		*((volatile unsigned short *)(E2_BASE_ADDR + i)) = *data++;
		*((volatile unsigned char *)(E2_BASE_ADDR + i)) = 0xD0;
		while (!FLASH.FSTATR0.BIT.FRDY)
			;
	}
	// mode -> ROM/E2 read
	FLASH.FWEPROR.BIT.FLWE = 2;
	FLASH.FENTRYR.WORD = 0xAA00;
}

void e2_read(unsigned short *data, int length)
{
	// read (2byte * length)
	for (int i = 0; i < min(length * 2, 8192); i += 2)
	{
		*data++ = *((unsigned short *)(E2_BASE_ADDR + i));
	}
}

```
```c
void main(void)
{
	unsigned short e2rd[10];
	unsigned short e2wd1[10] = {0, 11, 222, 3333, 44444, 5555, 666, 77, 8, 9999};
	unsigned short e2wd2[8] = {9, 80, 700, 6000, 50000, 4000, 300, 20};
	e2_init();
	e2_write(e2wd1, 10);
	e2_read(e2rd, 10);
	e2_write(e2wd2, 8);
	e2_read(e2rd, 8);
}

```
Objective-CからSwiftへの移行でfailed to emit precompiled header '（略）/MyprojectName-Bridging-Header-swift_xxx.pch' for bridging header '（略）ModuleName-Bridging-Header.h'

先週発生してマジで会社辞めようかと思いましたが、なんとか解決しました。
とにかく情報なくて辛かったので、書いておきます。

# 作業内容
Objective-CのClassをSwiftに書き換えるリファクタリングをしていました。
下記の作業内容をしました。

1) 移行先のSwiftのStructを一旦別名で作成
2) 移行先のClassと同名のStructを作成して、1)の記述内容をコピー
3) 1)と移行先のClassを消す
4) ブリッジヘッダーやその他Objective-Cヘッダから消したクラスに関する記述を削除
5) 必要に応じてObjective-C側に記述を追加

# エラー内容
ビルドしようとしたところ、下記のコンパイルエラーで先に進めなくなりました。
Clean BuildやXcodeの再起動、なんならMacBookの再起動までしましたが、ダメ。

```swift
failed to emit precompiled header '/Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch' for bridging header '/Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'
```

※エラ〜メッセージは下記のStackOverflowから借りています。
　[Xcode 9 - failed to emit precompiled header [duplicate]](https://stackoverflow.com/questions/46293028/xcode-9-failed-to-emit-precompiled-header)

# 原因
途方に暮れていたところ、Swift実践入門を読んだら、こんなことが書いてありました。

> ただし、SwiftはObjectiveCを内包している一方、ObjectiveCはSwiftのすべての概念を表現できません。たとえばSwiftの構造体や列挙型はObjectiveCには対応する概念がなく、ObjectiveC側から参照できません。また、Swiftのクラスに関してもObjectiveCから利用するにはさまざまな制限があります。

今回作ったSwiftの構造体は、ガッツリObjective-Cから参照されます。
そこで、Structで作っちゃダメなのでは？　と思って、Classに書き換えたら発生しなくなりました。

# その他細かいこと
- Class名に`@objcMembers`を指定すると、全体がObjective-Cから参照可能になる
- Objective-C → Swiftの参照（そもそもあまり良くないが）する際は、ライブラリ指定に

```objc
#import "module-Swift.h"
```

```objc
@class NewClassName;
```

を入れると参照可能。
エラ〜メッセージを真面目に読むと、`module-Swift.h`の.pchファイル（これ何なんだ？）が読めなくなって、ブリッジできなくなりました、
みたいな意味なんだと思いますが、ちょっと絶望感ありました。

- あと＠objcMembersつけても、別のSwiftファイルの@objcメソッドの引数から呼ぼうとしたらエラーになりました。
    - NSObjectを継承しなきゃダメみたいですNE

誰かの助けになれば幸いです。
japandas をインポートするとエラーが出てくる件(問題未解決)

#実行環境
python 3.8.1

```python:qiita.rb
import japandas
```

上記を実行すると以下のようなエラーが出てくる


```python:qiita.rb
 File "c:\Users\name\Documents\excel_python\python_prg\test.py", line 1, in <module>
    import japandas
  File "C:\Users\name\AppData\Local\Programs\Python\Python38-32\lib\site-packages\japandas\__init__.py", line 4, in <module>
    import japandas.core.strings                                                          # noqa
  File "C:\Users\name\AppData\Local\Programs\Python\Python38-32\lib\site-packages\japandas\core\strings.py", line 8, in <module>
    from pandas.compat import PY3, iteritems, u_safe
ImportError: cannot import name 'PY3' from 'pandas.compat' (C:\Users\name\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\compat\__init__.py)
```

上記に対して
①pandas-compatのインストールは実施済みが、改善されず。
②pandasのバージョンを0.24にしてみるが改善されず。

という状況が続いています。
エラー文を検索してもズバリ同様の症状を訴える人がいなかった模様なので投稿することにしました。
Googleカレンダーのエクスポートファイルからイベント一覧を取り出す


## やりたいたこと
Googleのカレンダーでイベントを細かく管理しているので、過去にどんなことが有ったのかの記録として、取り出しておきたいと思いました。

ところが、Googleカレンダーでカレンダーのエクスポートをすると、vCalendar 形式のファイル（拡張子は .ics）で出力されます。（zip圧縮を解くと）
> BEGIN:VEVENT
UID:11A04694-11B0-4053-984C-700328F928BF
DTSTAMP:20150808T044239Z
LOCATION:
TRANSP:OPAQUE
SUMMARY:重要な会議だよ
SEQUENCE:0
DTSTART:20200302T003000Z
DTEND:20200302T013000Z
END:VEVENT

日付と時刻は、こんなパターンもある
> DTSTART;VALUE=DATE:20200302
DTEND;VALUE=DATE:20200302


このままでは検索性や一覧性に欠けるので、次のような日時とイベントタイトルが一行になったテキストデータに変換しようと考えました。
> 2020/03/02 09:30 - 10:30　重要な会議だよ

## プログラム
　Mac の OS Xには Perl が標準で入っているので、以前 Mac のカレンダーアプリの .ics ファイルを加工しようとしたときに Perl で書いたプログラムを、Googleカレンダー用に流用しました。微妙に仕様が違うんですよ。
タイムゾーンは面倒なのでTokyo固定で +9 時間するようにしています。

### perl のソース

```perl:ics2txt.pl
#!/usr/bin/perl
#### use encoding 'utf8', STDOUT=>'shiftjis';
while(<>) {
     ($EventName, $EvantData, $EventTime, $EventEnd, $Reccurence) = "" if(/BEGIN:VEVENT/) ;
     chop;
     chop;
    $EventName =  $1 if(/SUMMARY:(.+)/);
    $EventDate  = substr($1, 0, 4) . '/' . substr($1, 4, 2) . '/' . substr($1, 6, 2)  if(/DTSTART;.+:([0-9]+)/);
    $EventDate  = substr($1, 0, 4) . '/' . substr($1, 4, 2) . '/' . substr($1, 6, 2)  if(/DTSTART:([0-9]+)/);
    $EventTime  = substr($1,1, 2) . ':' . substr($1, 3, 2)  if(/DTSTART;.+:[0-9]+(T[0-9]+)/);
    $EventTime  = substr($1,1, 2) . ':' . substr($1, 3, 2)  if(/DTSTART:[0-9]+(T[0-9]+)/);
    $EventEnd  = substr($1,1, 2) . ':' . substr($1, 3, 2)  if(/DTEND;.+:[0-9]+(T[0-9]+)/);
    $EventEnd  = substr($1,1, 2) . ':' . substr($1, 3, 2)  if(/DTEND:[0-9]+(T[0-9]+)/);
    $Reccurence = " >> " . $1  if(/RRULE:(.+)/);
    if (/END:VEVENT/) {
        $StartHHMM = TimeZone($EventTime);
        $EndHHMM = TimeZone($EventEnd);
        $wk = substr($EventDate,0,10) . " $StartHHMM - $EndHHMM　" . $EventName . $Reccurence . "\n";
        printf($wk);
    }
}

sub TimeZone {
    $arg = @_[0];
    return "00:00" if(length $arg < 5);
    $mm = substr($arg, 3, 2);
    $hh = substr($arg, 0, 2);
    $hh = ($hh + 9) % 24;
    if ($hh <= 9) {$hh = "0" . $hh};
    return $hh . ":" . $mm;
}
```

二行目はコメントアウトしていますが、出力したい文字コードを変更したい場合に書き換えて利用してください。　`use encoding 'utf8', STDOUT=>'shiftjis';`

## 利用方法
このプログラムを保存して実行権限を与えたら、ターミナルで以下のようにコマンドを実行します。
（sort を組み合わせて、日時の順にすると良いでしょう）

`$ cat （Googleカレンダーでエクスポートしたファイルパス） | ics2txt.pl | sort > （結果を書き出すファイルパス） `
（例）　`$ cat 2020Calendar.ics | ics2txt.pl | sort > 2020Cal.txt`

cat を使うと、複数のカレンダーを一括で処理できます。
 `$ cat Calendars/* | ics2txt.pl | sort >iCalAllData.txt `

お役に立てば幸いです。
【Rails】Deviseでユーザーログイン後のリダイレクト先を変更

開発環境--------------------
windows
ruby 2.7.0
Rails 5.2.4.1
●----------------------------


大前提
-
deviseのコントローラーを作成してある
コマンドで以下を打つ

```rails g devise:controllers users
```

アプリケーションコントローラーに以下を加えるだけ
-
やり方はシンプル。
users/application_controller.rb
に以下を加える

```users/application_controller.rb
def after_sign_in_path_for(resource)
	user_path(resource)
end
```

redirect先は、routesで確認
-

コマンドで、
rails routes
と打つと、詳細が出てきます。

僕の場合、user/showでマイページを作成しているので、そこにredirectさせたかったので、
routesで調べたら、
 
|Prefix 　|Verb   |URI Pattern　         |Controller#Action                                                                         
|user     |GET    |/users/:id(.:format)  |users#show       

と設定されているので、
user_pathでusers#show が行われる。

よって、上記に変更でOK
Db2 トリガー作成をファイルに記載する場合に、ステートメント終了文字がセミコロンのままでも実行できる裏技

Db2ではセミコロン(;)を各SQLステートメントの終了文字にして、複数のSQLステートメントをファイルに記述し、

```
db2 -tvf ファイル名
```
として実行することができます。（-tvf は　-tfでもいい）
ステートメントの終了文字はセミコロンがデフォルトなのですが、CREATE TRIGGERの記載があると、セミコロンが使えない場合があります。

それはCREATE TRIGGER内にBEGIN～ENDの指定がある場合です。
というのも、BEGIN～ENDの間の各SQLステートメントの終了を示す文字もセミコロンなので、ファイルに記載する各SQLステートメントのデフォルトの終了文字のセミコロンと区別できず、そのまま実行するとエラーになってしまうのです。

そのため、通常CRAETE TRIGGER内にセミコロンを記載した場合は、以下のように各SQLステートメントの終了文字はセミコロン以外（例えば#）にします。

```
CREATE TABLE TAB1 (COL1 CHAR(1)) #
CREATE TABLE TAB2 (TNAME CHAR(10), COLVAL CHAR(1)) #

CREATE OR REPLACE TRIGGER TRIG_INS
AFTER INSERT ON TAB1
REFERENCING NEW AS TN
FOR EACH ROW
WHEN (TN.COL1 = 'A')
BEGIN ATOMIC
 INSERT INTO TAB2 VALUES ('TAB1','A');
END
#
```

そしてファイルの実行時に、-tdオプションでステートメント終了文字は#であることを指定する必要があります。

```
db2 -td# -vf ファイル名
```

でもこれって、ファイルの内容によって指定方法が異なって面倒だし、あまり使わないのでどうやって指定するんだっけ？　とつい忘れちゃいますよね！

ここで便利な記載方法をご紹介します。

それは、以下のように、BEGIN～ENDの間のステートメントの終了文字のセミコロンのあとに--を追加するする方法です。（ ;-- と記載するということ）

```
CREATE TABLE TAB1 (COL1 CHAR(1)) ;
CREATE TABLE TAB2 (TNAME CHAR(10), COLVAL CHAR(1)) ;

CREATE OR REPLACE TRIGGER TRIG_INS
AFTER INSERT ON TAB1
REFERENCING NEW AS TN
FOR EACH ROW
WHEN (TN.COL1 = 'A')
BEGIN ATOMIC
 INSERT INTO TAB2 VALUES ('TAB1','A');--
END
;
```

こうしておくと、他の各SQLステートメントの終了文字はセミコロンのままで、通常と同じように

```
db2 -tvf ファイル名
```
で実行できますので、覚えておくと便利です。

この方法、Db2 V9.7～現時点最新のV11.5でも利用できることは確認していますが、おそらくマニュアルには掲載されていないので、あくまでも裏技扱いでお願いします。
lagrange 補間式

```{r}

library(dplyr)

data=data.frame(num=1:20,y=c(0.20, 0.10, 0.49, 0.26, 0.92, 0.95, 0.18, 0.19, 0.44, 0.79, 0.61, 0.41, 0.49, 0.34, 0.62, 0.99, 0.38, 0.22,0.71,0.40),x1=c(84,87,86,85,82,87,92,94,88,84.9,78,90,88,87,82,84,86,83,85.2,82),x2=c(61,55.5,57,57,50,50,66.5,65,60.5,49.5,49.5,61,59.5,58.4,53.5,54,60,58.8,54,56),x3=c(24.5,24,23,22.5,22,24,25,26,25,24,23,21,26,25.5,24,23,24,24,24,22)+50)

data=data%>%group_by(x2)%>%summarise(y=mean(y))

Y=data$y[1:2]*100;X=data$x2[1:2]

L=function(s){

L_f=function(J){

x_vec=X[-J];xj=X[J]

return(prod((s-x_vec)/(xj-x_vec)))

}

vec=c()

for(i in 1:length(X)){

vec=c(vec,Y[i]*L_f(i))

}

return(sum(vec))

}


samples=seq(min(X),max(X),0.1)

pre=c()

for(i in 1:length(samples)){

pre=c(pre,L(samples[i]))

}

plot(samples,pre)

```
docker for windowsが起動しない。

Running pre-create checks...
Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"
Looks like something went wrong in step ´Checking if machine default exists´... Press any key to continue...

dockerをインストールしたが動かない。
https://teratail.com/questions/124097

[2017/9/10] VirtualChecker 3.0.1
https://openlibsys.org/index-ja.html

![intelvt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51423/97f5f4fe-5be2-a39c-97c9-7737a7d5f583.png)
Next.js + TS でwebpack.resolve.aliasを設定する

## 概要
Next.jsで別のコンポーネントをimportするとき、デフォルトでは相対パスで `../components/Nav` のように指定することでimportできます。

importしているコンポーネントが多いとき、コンポーネントの配置場所が変わったときに変更するのが手間なのでwebpack.resolve.aliasを設定しておくことで、webpackが絶対パスでモジュール間の依存を解決してくれます。

## 設定方法
```next.config.js
const withTypescript = require("@zeit/next-typescript");
const withSass = require("@zeit/next-sass");
const path = require('path'); // 追記

module.exports = withTypescript(
  withSass({
    webpack(config) {
      config.resolve.alias['~'] = path.join(__dirname) // 追記
      return config;
    }
  })
);
```

TypeScriptの場合、tsconfigにも追記する必要があります。

```tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./", 
    "paths": {
      "~/*": ["./*"]
    },
    ...
```

上記のように設定することで、以下のようにimportできるようになります。

```pages/index.tsx
import React from 'react'
import Nav from '~/components/Nav'

const Home = () => {

  return (
    <>
      <Nav />
    </>
  )
}

export default Home
```
C++11 chrono で float 精度で time_since_epoch の時刻をキャストしてはいけない

```
float GetCurrentTimeInMilliSeconds()
{
  std::chrono::system_clock::time_point p = std::chrono::system_clock::now();

  std::chrono::milliseconds msecs = std::chrono::duration_cast<std::chrono::milliseconds>(p.time_since_epoch());
  return msecs.count();
}
```

のような感じで,

```
float start_t = GetCurrentTimeInMilliSeconds();
float end_t = GetCurrentTimeInMilliSeconds();

float diff = end_t - start_t;
```

のようにして計時(時間差分取得)すると, 現在の epoch time は大きすぎて(?) float 精度ではうまく表現できないようで大きくずれてします.

double を使うか, st::chrono::milliseconds などの chrono が用意する型を使って計算するのがよいです.
azure app service で kintone アプリデータ公開その４（JS API）

azure app service で kintone アプリデータ公開その４です。
ブラウザー上で、REST API を呼び出すための JS API を作成します。

# 概要

JavaScript で、REST API を呼び出すには、xmlhttprequest などを使えば可能ですが、いちいち手順を踏むのは面倒です。
簡単に REST API を呼び出す JS API を作ってみます。
kintone.api のようなものです。

# 参考情報

REST API を呼び出すには、axios が便利そうです。
kintone-js-sdk でも、axios を使っていましたので、axios を利用します。

- [axiosを乗りこなす機能についての知見集](https://qiita.com/terrierscript/items/ccb56b6fc05aa7821c42)
- [axios を利用した API の使用](https://jp.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html)
- [axios](https://github.com/axios/axios)

# 作成する JS API

- kbrowser.api<br>
処理内容は、kintone.api と同様です。

# rex0220-kbrowser.js の追加

ブラウザー上で実行しますので、リンクで参照できるように /public/rex0220-kbrowser.js　に追加します。
とりあえず作成するのは 'GET' 処理だけで、他は未実装です。
axios は、Promise 対応しているので、記述がわかりやすいですね。

callback, errback は、未実装です。いるかな？
kbrowser は、グローバル変数に設定して、各JSから直接利用できるようにします。

```rex0220-kbrowser.js
(function () {
    'use strict';

    window.kbrowser = {};
    var kbrowser = window.kbrowser;
    kbrowser.api = function(req, method, body) {
        var resp = {};
        switch(method) {
            case 'GET':
                return axios.get(req, { params: body })
                  .then(function (response) {
                    // console.log(response);
                    resp = response.data;
                  })
                  .catch(function (error) {
                    console.log(error);
                    resp.error = error;
                  })
                  .then(function () {
                    // always executed
                    return resp;
                  });
            case 'POST':
            case 'PUT':
            case 'DELETE':
                break;
            default:
                break;
        }
        return resp;
    };
})();
```

# rex0220-kbrowser.js の使い方

kintone.api と同様ですね。

```sample.js
        var parm = {
            app: 549,
            query: 'order by $id'
        };
        kbrowser.api('/api/v1/list', 'GET', parm).then(function(resp) {
            console.log('list api', resp);
        });
```

# 次にやること

- [azure app service で kintone アプリデータ公開その５（グリッド表示）](https://qiita.com/rex0220/items/b16689ccd1ea1b0da000)


# あとがき

これでクライアント上から kintone アプリレコードを取得できる準備ができました。
次はグリッドライブラリを使った、レコード表示をしてみます。
GitHub Actions で Windows で C++ プロジェクトをビルドする設定(cmake, ninja, msvc)の準備メモ

## 背景

GitHub Actions で cmake + ninja + msvc(or llvm-mingw or clang or gcc) C++ アプリの CI ビルドをしたい.

現状(2020 年 3 月)ですと, cmake はインストールされていますが, ninja などは自前でインストールしないといけないようで, AppVeyor とかのほうが使えるならそちらのほうが楽そうです.

https://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md

以下は頑なに GitHub Actions で CI したい用です.

## 情報

https://github.com/actions/starter-workflows/issues/53


https://github.com/ilammy/msvc-dev-cmd

Using GitHub Actions with C++ and CMake
https://cristianadam.eu/20191222/using-github-actions-with-c-plus-plus-and-cmake/

GitHub Actions v2使ってMSBuildを試してみた
https://qiita.com/y428_b/items/f8e0c598238d75f808b1

## how to

デフォルトでは PowerShell で実行されるようで, batch file を呼びたい場合, ".\" を付けて git repo のディレクトリ基準にしないとエラーになります

OK: .\mybatch.bat
NG: mybatch.bat
GAS ES6 import/export

1.GAS調査中
　GASがES６対応になったので、色々使えるものを調べていると、import/exportがない。
　クラスの派生とか実質無理じゃね、といろいろいじってみた。

2.そもそも必要ない
 GASの場合、プロジェクトに追加されているJSファイル内はすべて同じスコープ（？）内にあるので、（**最終的に**）別ファイルという認識はないので、

```javascript:axx.js
class A {
}
```

は、同じプロジェクトであれば、どこのファイルからも

```javascript:bxx.js
let a = new A();
```

として使用可能となっている。

3.例外
　というか罠は、**参照する前に定義されていなければならない**ので、

>　Claspの場合　.clasp.jsonでファイルの順番を指定する
　GASエディタ　　左のファイルの上から順に参照される

という対応。Claspを使うほうが間違いがないですかね。
HugoのMarkdownでGitHub的改行をしたい

## 現在

HugoのMarkdownレンダラーはgoldmark。

```toml:config.toml
[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      hardWraps = true
```

## 古いバージョン

blackfridayだった。

```toml:config.toml
[markup]
  [markup.blackfriday]
    extensions = ["hardLineBreak"]
```
Android SIP アカウント設定

# 標準の通話アプリで設定する方法

1. Android 標準の通話アプリを開く（電話とか）

2. 右上のメニュー（点が縦に三つ並んでるやつ）から「設定」を開く

3. 「通話アカウント」を選択
> もしかすると「通話」がメニューにあって、それのあとに「通話アカウントがあるかも」

4. 「SIPアカウント」を選択

5. 「＋」（追加）を選択

6. アカウント情報を入力する

(例) SMARTalk の場合

|項目名|内容|
|:---:|:---:|
|ユーザー名|電話番号から 050 を除外した番号|
|パスワード|XXXXXXXX|
|サーバー|smart.0038.net|

7.「保存」を選択する

8.「通話できるアカウントを選択」で「すべての通話アカウント」を選択

9. 「インターネット通話を使用」で「すべての通話」を選択

10. 「インターネット通話の着信を受ける」をONにする

> 着信、発信の確認して終了

# あとがき

いつか、画像をつけたい。
OS や機種によって、少しメニューなどが異なるかも。
.ps1ファイル実行後にウィンドウを勝手に閉じないようにする方法 | 新人SEの備忘録

PowerShellを自動で動かすときに使用する.ps1ファイルですが、デフォルトだと処理が終わるとウィンドウを勝手に閉じてしまいます。

これでは動作ログを確認するのに不便なので、勝手に閉じないようにしました。

具体的には、Enter キーを入力するとウインドウを閉じるように設定します。

# 解決方法
解決方法は.ps1ファイルの最後に**「pause」**と入力するだけです。
具体的には、以下のようになります。

#### .ps1 ファイルの内容例

```
cd \
robocopy C:\robocopy\before C:\robocopy\after
pause
```

#### 出力結果例

```
（略）

   終了: 2020年3月2日 13:50:52

続行するには、Enter キーを押してください...:

```

Enterキーを入力すると、処理が終了するのでウインドウが閉じます。

# 参考サイト
Windowsバッチファイル（.bat）、処理が終わった後にウィンドウを閉じない | マコトのおもちゃ箱　～ぼへぼへ自営業者の技術メモ～
http://piyopiyocs.blog115.fc2.com/blog-entry-1039.html
Mail.app の index がなんかおかしい時の対処方 

主にSmartFolderがなんかおかしいという状態がたまに発生する

# いつもこうしてる
* Mail.app を終了する
* $ mv ~/Library/Mail/V5/MailData/Envelope\ Index* /tmp
* Mail.app 起動

(V5の所はmacOSのversionによって異なります。V5はHighSierra。MojaveはV6)

すると

![Screen Shot 2018-08-07 at 18.36.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17434/439f833f-7ef6-02cf-efee-36c3a857c937.png)
[Continue] する

![Screen Shot 2018-08-07 at 18.37.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17434/ba4c8485-f8fb-c410-f352-ed86aefa0286.png)

:house_with_garden:  帰る

終了 :checkered_flag: 

### 注意点

Mojave からはターミナルにディスクフルアクセスの権限がないと `~/Library/Mail` へアクセスできません。
https://applech2.com/archives/macos-mojave-new-privacy-full-disk-access.html
Docker環境のクリーンアップコマンド

Dockerでいろいろ遊んだあと、環境をクリーンアップするコマンドの覚書です

## Dockerコンテナの一括削除
コンテナを削除するには`docker container rm`を使います

```docker
docker container rm -f $(docker container ls -aq)
```

## Dockerイメージの一括削除
上のコマンドだけだと、ビルドしたイメージがPCに残ったままになるので、ディスク容量を開放したいときは`docker image rm`を使ってイメージを削除します

まずは`docker system df`を使ってImagesが実際に使っているディスク容量を確認します。

```common-lisp
$docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              4                   3                   1.428GB             918.5MB (64%)
Containers          3                   2                   63B                 0B (0%)
Local Volumes       18                  1                   597.6MB             555.5MB (92%)
Build Cache         0                   0                   0B                  0B
```
👆出力結果から、DockerのImagesのSIZEは1.428GBと確認できます

そして`docker image rm`を使ってImageを削除します

```docker
docker image rm -f $(docker image ls -q)
```
もう一度`docker system df`で状況を確認します

```common-lisp
$docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              0                   0                   0B                  0B
Containers          1                   0                   0B                  0B
Local Volumes       18                  0                   597.6MB             597.6MB (100%)
Build Cache         0                   0                   0B                  0B
```
出力結果から、DockerのImagesは削除され、SIZEが0Bになっているのを確認できます。


---

補足：リポジトリにフィルターをかけたい場合は、オプションに-fをつけます

```docker
docker image rm -f $(docker image ls -f reference='hello-world' -q)
```
gemとは

##gem
一言で言えばGemfileに必要な機能を記述すれば使える機能のことです。
例えばgemでpry-railsというのがあります。pry-railsはrails cコマンドでコンソールを立ち上げたとき、irbでなくPryを起動させることができます。それでなにが変わるかというと例えば削除するときにエラーが発生したとします。
そういった場合、原因がどのコードにあるのかをPryを使って確認することができます。binding.pryをコード内に記述すると、そこがブレイクポイントとなりrailsの処理を止めることができます。
##すでにインストールされているgemの確認

ターミナルで

```
$ gem list
```
で確認できます。
##Gemfileでの記述
Gemfileの中の一番下に

```
gem 'pry-rails'
```
と記述しターミナルで

```
$ bundle install
```
を実行すればgemに適応される。
##バージョン指定したいとき
Gemfile内の記述でmysql2のバージョンを指定したいときは

```
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
```
と上記のように指定しておけば「mysql2は、0.4.4以上、0.6.0未満のバージョンを適用」となります。
バージョン指定したらターミナルで

```
$ bundle update
```
でバージョンを指定ができました。
「diaplay inline-block+幅を％指定」で均等横並びにしても最後の要素が改行されてしまう問題 

# はじめに

「diaplay inline-block+幅を％指定」で均等横並びをする際、
最後の要素だけ改行されてしまい困った経験をしたので、自分への備忘録も兼ねて、
だれかの参考になればと思い書かせていただきます。

# 概要
まずは、問題の状況を確認します。

```html:index.html
<div class="content1">content1</div>
<div class="content2">content2</div>

```
```css:style.css
div{
    display: inline-block;
    width: 50%;
}
.content1{
     background: blue;
}
.content2{
     background: red;
}
```

上記のコードをブラウザで開くと、下記の画像のように縦並びになってしまいます。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308386/a9527f1c-4a6e-5fc6-0124-cbe6ae08c9d2.png)

ちなみに、divタグを`width: 49%;`にすると、下記画像のように横並びになりますが、隙間が空いてしまいます。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308386/2540f35a-96e2-b910-f3c4-9f5c77859cbb.png)

幅いっぱいに要素を並べるにはどうすればよいのでしょうか。

#解決法

原因は、ソースコード上でdivタグを改行して記述していたからでした。

```html:index.html
<div class="content1">content1</div>
<div class="content2">content2</div>　/* ここを改行しているのが原因 */
```


下記のようにdivタグを改行せずに記述し、ブラウザで確認してみると、

```
<div class="content1">content1</div><div class="content2">content2</div>
```

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308386/0d59b12d-11be-07ce-31b8-679ce758f43c.png)

ちゃんと幅いっぱいに均等横並びができました。

## なぜソースコード上の改行が原因なのか

html上の改行は、半角スペース一つ分として認識されてしまうからです。
それぞれのdivタブはちゃんと50%ずつの幅になっていますが、2つのdivタブの間に半角スペースが入ってしまい、画面全体の幅を超えてしまったため、最後の要素が改行されてしまうというのが、今回の問題の正体でした。


意外とめっちゃ基本的なことが原因でした。。
まだまだ勉強が足りないことを実感した経験でした。

# おまけ①

ソースコード上で改行せずに記述すると、問題は解決できましたが、可読性悪いですよね。

```html
<div class="content1">content1</div><div class="content2">content2</div>
```

可読性を良く、半角スペースが入らない解決方法をまとめてみます。

## 方法1 divタグの終了タグを改行する
```html
<div class="content1">content1</div
><div class="content2">content2</div>
```

## 方法2 コメントを利用する
```html

<div class="content1">content1</div><!-- 
--><div class="content2">content2</div>
```

少しは読みやすくなったのではないでしょうか。 


# おまけ②

今回は、2個の要素の均等横並びを前提にお話ししましたが、要素の個数が増える場合は、次のように幅指定してあげると、均等横並びができるようです。

| 要素の個数      |       width |
|:-----------------:|:------------------:|
| 2個             |              50% |
| 3個             |              33.3333% |
| 4個             |              25% |
| 5個             |              20% |
| 6個             |              16.6667% |
| 7個             |              14.2857% |
| 8個             |              12.5% |
| 9個             |              11.1111% |
| 10個             |              10% |
| 11個             |              9.0909% |
| 12個             |              8.3333% |


# 参考
- https://stackoverflow.com/questions/6871996/two-inline-block-width-50-elements-wrap-to-second-line
- https://beiznotes.org/last-item-goes-next-line-assigned-by-css-width/
JavascriptのDate.getDate()でハマった

## 他言語からきますた

ワイ「日が欲しい…getDay()かな？」
JS「今日の曜日はこちらです。いかがでしたか？」
ワイ「違う、そうじゃない」

## Javascriptで日付を得るにはgetDate()

数字なので取れたと思いきや、getDay()は曜日、getDate()が日。
素直に「getDayOfWeek()」とかにして欲しかった。

## 他言語からJavascriptにきました。リファレンスはどこ？

MDN Web Docが鉄板。基本的な使い方に関してはここ以外見なくて良いくらい。

[MDN Web Doc](https://developer.mozilla.org/ja/)
【Rails】Deviseでユーザー登録後のリダイレクト先を変更

開発環境--------------------
windows
ruby 2.7.0
Rails 5.2.4.1
●----------------------------
quiitaの他の記事も同様のタイトルがあったのですが、間違いがあってできなかったので、
記事を書いておきます。

大前提
-
deviseのコントローラーを作成してある
コマンドで以下を打つ
```
rails g devise:controllers users
```

やり方はシンプル。
users/registrations_controller.rb
ファイルを以下の通り書き換えるのみ。
（コメントアウトを取り消して、1行だけ修正。）

before

```
  # The path used after sign up.
  # def after_sign_up_path_for(resource)
  #   super(resource)
  # end
```

after

```
  # The path used after sign up.
    def after_sign_up_path_for(resource)
     user_path(resource)  ※修正行
    end
```

redirect先は、routesで確認しよう。
コマンドで、
rails routes
と打つと、詳細が出てきます。

僕の場合、user/showでマイページを作成しているので、そこにredirectさせたかったので、
routesで調べたら、
 
|Prefix 　|Verb   |URI Pattern　         |Controller#Action                                                                         
|user     |GET    |/users/:id(.:format)  |users#show       

と設定されているので、
user_pathでusers#show が行われる。

よって、上記に変更でOK
AMD RyzenにmacOS 10.15 CatalinaをOpenCoreでinstallする（その１）

AMD Ryzen搭載の自作PCでmacOS 10.15.3 Catalinaを動かすまでの手順です。
以前は、AMD用のpatchを当てたkernelが必要なため、手順が複雑でしたが、
新しいBoot loaderであるOpenCoreによりmacOSはvanillaなまま比較的簡単にinstallすることができました。
現在、稼働しているmacOS(High SierraとかMojave）があることを前提とします。

# 参考にしたガイド
- https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/
　ここの手順に従います。

# hardware
- CPU : AMD Ryzen 7 1700
- MB  : MSI X370 GAMING Pro Carbon 
- GPU : Radeon RX 570
- SSD : Toshiba THNSNH128GCST
- Memory : Corseai DDR4 PC4-25600 8GB 2枚組
- USB stick : Silicon-Power16G


# software
- macOS 10.15.3 Catalina 　ApplicationフォルダにDL
- Opencore https://github.com/acidanthera/OpenCorePkg/releases
- AppleSupport https://github.com/acidanthera/AppleSupportPkg/releases
- ProperTree https://github.com/corpnewt/ProperTree

# USB installerを作成
- 16GBのUSBメモリを用意
- Disk UtilityでUSBメモリを初期化。 HFS+/MacOS Journaled,GUID partitionでMyVolumeという名前に
- Terminalで以下を実行

`sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
`
# USB installerのEFI
- MountEFIを入手　https://github.com/corpnewt/MountEFI
- MountEFIを実行 "Install macOS Catalina"を選択。"q”で終了。
- OpenCore-0.5.5-DEBUG.zipを展開
- OpenCore-0.5.5-DEBUG/EFIフォルダを /Volume/EFIにコピー
    (/Volume/EFI/EFIとなります。/Volume/EFIと思い込んでいて起動失敗した）
- OpenCore-0.5.5-DEBUG/Docs/Sample.plistを/Volume/EFI/EFI/OCにコピー
- Sample.plistをconfig.plistと名前を変える

# ファイルを集める
- SSDT-EC-USBX-AMD.amlを入手 https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-EC-USBX-AMD.aml
- SSDT-EC-USBX-AMD.amlをOC/ACPIフォルダにコピー
- AppleSupport-2.1.5-DEBUG.zipを展開
- DriversフォルダのApfsDriverLoader.efiとVBoxHfs.efiをOC/Driversにコピー
- OC/DriversのAppleUsbKbDxe.efi,NvmExpressDxe.efi,XhciDxe.efiを削除

# kextを集める
- VirtualSMC.kextを入手　https://github.com/acidanthera/VirtualSMC/releases
- Lilu.kextを入手 https://github.com/acidanthera/lilu/releases
- WhateverGreen.kextを入手 https://github.com/acidanthera/whatevergreen/releases
- AppleALC.kextを入手 https://github.com/acidanthera/applealc/releases
- Ethernetのkextを入手　ここはMB/boardのchipに合わせる
    - SmallTreeIntel82576　https://github.com/khronokernel/SmallTree-I211-AT-patch/releases
    - IntelMausiEthernet　https://github.com/Mieze/IntelMausiEthernet
    - AtherosE2200Ethernet　https://github.com/Mieze/AtherosE2200Ethernet/releases
    - RealtekRTL8111　https://github.com/Mieze/RTL8111_driver_for_OS_X/releases
- 集めて展開したkextをOC/Kextsにコピー

（[その２](https://qiita.com/blueknight611jp/items/0d17eba68065971fc925)に続く）
【Vuetify】v-tabs内のVue.Draggableがタッチデバイスで正常に動作しない現象の対策

# 現象

入れ替え自体はできるが、ドラッグしたアイテムがドラッグされたままのような状態になっている。
機能的に問題はないがとてもカッコ悪い。
<img width="205" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93814/9b55c40c-3ee2-9c04-5e32-3cd7fec15745.png">
# 考察
v-tabのスワイプでのタブ切り替え操作でタッチイベントが競合しているのではないか？

# 対策
スワイプのタブ切り替えを無効にしてみる

```tab.vue
       <v-tabs-items :touchless="true">
            <v-tab-item key="tab-search">
                <order-search/>
            </v-tab-item>
            <v-tab-item key="tab-application">
                <orders-application/>
            </v-tab-item>
            <v-tab-item key="tab-keep">
                <order-keep/>
            </v-tab-item>
        </v-tabs-items>
```

# 結果
解決しました