OmniAICreator/Qiita-1.07M huggingface dataset:
2022/11/18主にITとかセキュリティの記事

元FBI幹部「日本標的とした高度な攻撃急増」　サイバー攻撃から情報を守るには(11/15)
https://news.yahoo.co.jp/articles/03cc8842d821922877d6c2d31f9b35af07b229be

[FT]一歩先行く北朝鮮ハッカー　人材豊富で追跡難しく(11/16)
https://www.nikkei.com/article/DGXZQOCB160A60W2A111C2000000/

厚労省が医療機関にサイバーセキュリティ対策を注意喚起、サプライチェーン全体の確認呼びかけ(11/16)
https://scan.netsecurity.ne.jp/article/2022/11/16/48490.html

「セキュリティの不備」が調達排除や経営責任につながる日(11/16)
https://japan.zdnet.com/article/35195994/

自己管理型のハードウェアウォレット、週間売上高が過去最高に(11/16)
https://coinpost.jp/?p=408160

経産省、「工場システムにおけるサイバー・フィジカル・セキュリティ対策ガイドライン」を策定(11/16)
https://www.risktaisaku.com/articles/-/74263

「恐喝に応じるのも犯罪」ランサムウェアの身代金支払いの禁止を豪政府が検討中(11/16)
https://internet.watch.impress.co.jp/docs/yajiuma/1456139.html

Emotet、MoqHao、Pegasus… 星の数ほどあるマルウェア 感染拡大するのは(11/16)
https://scan.netsecurity.ne.jp/article/2022/11/16/48492.html

三菱電機の複数の家電に脆弱性、攻撃受ける恐れ-確認を(11/16)
https://news.mynavi.jp/techplus/article/20221116-2514354/

一般救急を再開　サイバー攻撃の医療センター(11/16)
https://news.yahoo.co.jp/articles/705ee597a5cebbe27d3455c003203d4dc5c24133

NFTレンディングとは？概要とその発展(11/16)
https://hedge.guide/feature/what-is-nft-lending-bc202211.html

韓国、多国間合同サイバーセキュリティ訓練実施へ　露米中など参加(11/16)
https://sputniknews.jp/20221116/13815356.html

PNG画像にマルウェアを隠してDropBoxも悪用したデータ窃取を確認(11/16)
https://news.mynavi.jp/techplus/article/20221116-2513416/

北朝鮮は仮想通貨の盗難が政権の主要な収入源の1つになっている(11/16)
https://gigazine.net/news/20221116-north-korea-crypto/

Windowsマークの脆弱性の悪用確認、ただちにアップデートを(11/16)
https://news.mynavi.jp/techplus/article/20221116-2514421/

日経225の過半数がDMARC導入、半年で12社増 ～ TwoFive調査(11/16)
https://scan.netsecurity.ne.jp/article/2022/11/16/48493.html

個人輸入の関税支払を偽るフィッシング詐欺に要注意(11/16)
https://news.mynavi.jp/techplus/article/20221116-2513420/

個人情報（メールアドレス）の流出について 滋賀県(11/16)
https://www.pref.shiga.lg.jp/kensei/koho/e-shinbun/oshirase/328441.html

NVIDIA Taiwanのツイアカがハッキングされる。何者かに乗っ取られてDogecoinの宣伝をしだす(11/15)
https://www.nichepcgamer.com/archives/nvidia-taiwan-twitter-account-hacked.html

Macのマルウェア、半分は「MacKeeper」が感染源との調査結果(11/16)
https://news.yahoo.co.jp/articles/90058fd72ff5491bac319047ee2d9825d1bcf5ed

自動運転向けAIを提供するストラドビジョン社が語る、自動車産業で求められるソフトウェア企業の条件とは(11/16)
https://engineer.fabcross.jp/archeive/221116_iso26262-2.html

特設サイトで設定ミス　鹿児島県大島支庁で個人情報流出　アンケート回答者１８人のメアドなど外部閲覧可能に(11/15)
https://newsdig.tbs.co.jp/articles/-/204992

来年1月からスタートする車検証の電子化、マイカーオーナーの7割以上が「知らない」(11/15)
https://news.yahoo.co.jp/articles/51edd413176340e8a9ad469e553c4bbe4d0052ee

日本は中国の5年遅れ、高性能車載コンピューターでContinentalが指摘(11/17)
https://xtech.nikkei.com/atcl/nxt/column/18/02249/111600001/

さよならBlackBerry、物理キーボード搭載の最後の愛機を分解(11/17)
https://xtech.nikkei.com/atcl/nxt/column/18/00009/00080/

リスキリングの場を提供する　その役割はシステム部門が担う(11/17)
https://xtech.nikkei.com/atcl/nxt/mag/nc/18/020900021/111000125/
ディレクトリ内にある画像をリサイズするPythonコードを公開するよ！！

ディレクトリ内にある画像をリサイズしたいとき、いつも同じようなコードを作り直している気がするので、メモがてらQiitaに投稿しようと思う。

## 必要なもの

- Python 3.10
- OpenCV for python (opencv-pythonでインストールすると楽)

## 使い方

下記のどちらかのコマンドを実行するだけ！
srcdirにある画像をリサイズしてdstdirに出力します。

```bash
# サイズを指定してリサイズ (サイズは`{width}x{height}`で指定する)
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -s 320x240
# 割合でリサイズ
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -r 0.5
```

## ソースコード

```python
import cv2
import argparse
import os
import sys
import numpy as np
from typing import Generator, Tuple

def valid_size(arg_str: str) -> (int, int):
  try:
    (width, height) = arg_str.split('x', 2)
    if width.isdecimal() and height.isdecimal():
      return (int(width), int(height))
    else:
      raise ValueError()
  except:
    raise argparse.ArgumentTypeError('size argument is invalid. please input value "{width}x{height}" like this: 800x600')

def get_args():

  parser = argparse.ArgumentParser()
  parser.add_argument('srcdir', type=str, help='Please enter your images directory')
  parser.add_argument('dstdir', type=str, help='Please enter your output directory')
  group = parser.add_mutually_exclusive_group(required=True)
  group.add_argument('-s', '--size', type=valid_size, help='resize parameter (you can specify resize size directly)')
  group.add_argument('-r', '--ratio', type=float, help='resize ratio parameter (you can specify resize ratio)')

  return parser.parse_args()

def image_loader(dirname: str) -> Generator[Tuple[str, np.ndarray], None, None]:
  for filename in os.listdir(dirname):
    filepath = os.path.join(dirname, filename)
    image: np.ndarray = cv2.imread(filepath, -1)
    if image is None:
      continue
    yield filepath, image

def image_resize(image: np.ndarray, size: (int, int) = None, ratio: float=None):
  if (size is not None):
    return cv2.resize(image, size, interpolation=cv2.INTER_CUBIC)
  else:
    return cv2.resize(image, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_CUBIC)

def main():
  args = get_args()
  print(args.srcdir)
  if not os.path.isdir(args.srcdir):
    print(f'{args.srcdir} is not directory.')
    return 1
  print(args.size, args.ratio)
  os.makedirs(args.dstdir, exist_ok=True)
  for (filepath, image) in image_loader(args.srcdir):
    filename = os.path.basename(filepath)
    dstfilepath = args.dstdir
    dstfilepath = os.path.join(args.dstdir, filename)
    dst_image = image_resize(image, size=args.size, ratio=args.ratio)
    cv2.imwrite(dstfilepath, dst_image)


if __name__ == '__main__':
  sys.exit(main())

```
picoCTF Writeup picoGym Practice Challenges information (注意<spoiler>)

# Description
Files can always be changed in a secret way. Can you find the flag? cat.jpg

画像には特に情報がないのでファイルを解析する。

$ exiftool cat.jpg >> cat.dat

```:cat.dat
ExifTool Version Number         : 11.88
File Name                       : cat.jpg
Directory                       : .
File Size                       : 858 kB
File Modification Date/Time     : 2022:11:18 01:11:13+09:00
File Access Date/Time           : 2022:11:18 01:14:31+09:00
File Inode Change Date/Time     : 2022:11:18 01:11:13+09:00
File Permissions                : rwxrwxrwx
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.02
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Current IPTC Digest             : 7a78f3d9cfb1ce42ab5a3aa30573d617
Copyright Notice                : PicoCTF
Application Record Version      : 4
XMP Toolkit                     : Image::ExifTool 10.80
License                         : cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9
Rights                          : PicoCTF
Image Width                     : 2560
Image Height                    : 1598
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 2560x1598
Megapixels                      : 4.1

```

文字として怪しいのがライセンスあたり。

デコーダーを使う。
[DenCode](https://dencode.com/ja/)

picoCTF{the_m3tadata_1s_modified}
VSCode で Julia の plot をするときの注意

困ったけど日本語でググっても出なかったのでメモ

環境

- windows10
- VSCode
- Julia-1.3.7

# 本文

```jl
using Plots

plot(sin)
```

のように書くと plot ができるが, 

```jl
using Plots

plot(sin)
println("hoge")
```

のように plot の後に print をすると plot が表示されない

また, 

```jl
using Plots

plot(sin)
plot(cos)
```

のように書くと $\cos$ のグラフしか表示されない

この対処法だが, display 関数を使うと上手くいくみたい

そもそも plot 関数は自動的に呼ばれた瞬間に出力はされていないらしい

```jl
using Plots

display(plot(sin))
println("hoge")
```

```jl
using Plots

display(plot(sin))
display(plot(cos))
```

のように書くことで, 期待する出力を得られる

なんでこっちがデフォルトじゃないんだ！ とは思ったがまぁ確かに `plot!` で書き換えたり複数をまとめて出力したいときに困りそう

```jl
using Plots

p = plot(sin)

display(p)
display(p)
```

みたいな書き方もできる
Pythonでエージェントベースシミュレーション: バイアスのない伝達(Mesoudi, 2021)


この記事では、Alex MesoudiのRで書かれたチュートリアルをpythonに翻訳する。


下記の記事ではバイアスのない伝達についてのモデルが紹介されている。これは文化進化理論におけるモデルの一つで、世代間における情報伝達の浮動(drift)をモデル化している。


https://bookdown.org/amesoudi/ABMtutorial_bookdown/model1.html#model1

モデルの概要としては、各エージェントは形質AかBのどちらかを持っており、各世代ごとにエージェントはN人いることになる。次の世代のエージェントはランダムで前の世代のエージェントの形質を継承することになるという感じだ。

# エージェントベースシミュレーション

まずは、必要なライブラリをインストールする。

```python:python
import pandas as pd
import numpy as np
import random
import math
import matplotlib.pyplot as plt
!pip install japanize-matplotlib
import japanize_matplotlib
```

特定の値を繰り返す行列を作る場合は、np.tile()を使う。第一引数が繰り返す値、第二引数は行、列の順に指定するタプルである。


```python:python
pd.DataFrame(np.tile(float('nan'), (t_max, r_max)))
``` 

random.choicesでweightsによって重み付けられたリスト内の値をk回の試行回数で、ランダムに取得することができる。

```python:python
random.choices(["A", "B"], k=N,  weights=[p_0, 1 - p_0])
```



下記で、unbiased_transmission関数を設計する。引数Nは個体数、p_0は形質Aの確率、t_maxは世代数、r_maxは試行回数となる。


```python:python
#関数名が元のコードではパスカルケースとなっているが、Pythonではスネークケースにする。
def unbiased_transmission(N, p_0, t_max, r_max):
    #結果の行列を作る
    output = pd.DataFrame(np.tile(float('nan'), (t_max, r_max))) 
    output.columns = ["run_" +  str(i) for i in range(r_max)]
    for r in range(r_max):
        #weightsで形質を持つ確率に重み付けをする
        agent = pd.DataFrame(random.choices(["A", "B"], k=N,  weights=[p_0, 1 - p_0]), columns = ["trait"]) 
        output.iloc[0, r] = sum(agent["trait"] == "A") / N

        for t in range(1, t_max):
            previous_agent = agent.copy()
            agent = pd.DataFrame(random.choices(previous_agent["trait"], k=N), columns = ["trait"])
            #世代における形質の割合を求め結果に格納する
            output.iloc[t, r] = sum(agent["trait"] == "A") / N 
            
    plt.figure(figsize=(10, 5), dpi=100)
    plt.plot(output)
    plt.title(f'N = {N}')
    plt.xlabel('世代数')
    plt.ylabel("形質Aを持つエージェントの割合")
    #matplotlibではデフォルトだと0スタートにならないため、追加で指定する必要がある。
    plt.xlim([0, t_max]) 
    plt.ylim([0, 1])
    plt.show()
```

では、実際にシミュレーションしてみよう。

```python:python
unbiased_transmission(N = 10000, p_0 = 0.2, t_max = 200, r_max = 5)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/12b05b9c-059b-9349-3961-2111ab7f6064.png)


このシミュレーションでの教訓は、次のように述べられている(Mesoudi, 2021)。
1. バイアスのない伝達それ自体は形質の頻度を変えるわけではない。
2. 集団の規模が小さいほど、形質が消える可能性が高くなる
3. バイアスのない伝達は、自然・文化選択のような非ランダムなパターンを検出する上で有用である。

# 数値シミュレーション
数値シミュレーションの場合、次のようになる。

```math
p′=p
```

```python:python
p_0 = 0.2
t_max = 200

p = np.repeat(float('nan'), t_max)
p[0] = p_0

for i in range(1,t_max):
    p[i] = p[i-1]


plt.figure(figsize=(10, 5), dpi=100)
plt.plot(p)
plt.xlabel('世代数')
plt.ylabel("形質Aを持つエージェントの割合")
plt.xlim([0, 150])
plt.ylim([0, 1])
plt.show()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581047/e9aad455-2916-0f0d-5ff5-b571463269a1.png)
picoCTF Writeup picoGym Practice Challenges Nice netcat... (注意<spoiler>)

# Description
```:picoCTF
There is a nice program that you can talk to by using this command in a shell: $ nc mercury.picoctf.net 43239, but it doesn't speak English...
```

とりあえずnetcatのコマンドをそのまま打つ。

```:netcat
112 
105 
99 
111 
67 
84 
70 
123 
103 
48 
48 
100 
95 
107 
49 
116 
116 
121 
33 
95 
110 
49 
99 
51 
95 
107 
49 
116 
116 
121 
33 
95                                                                                                     55                                                                                                     99                                                                                                     48                                                                                                     56                                                                                                     50                                                                                                     49                                                                                                     102                                                                                                    53                                                                                                     125                                                                                                    10  
```

もちろん出力は英語ではない。数字から見て~125値までの分であるから10進数ASCIIでありそう。

変換する。

[10進数からASCIIテキストへのコンバーター](https://bfotool.com/ja/decimal-to-ascii)

picoCTF{g00d_k1tty!_n1c3_k1tty!_7c0821f5}
ストレージアカウントとレプリケーションの種類

●ストレージアカウント
ストレージサービスを利用するために必要な入れ物。

●ストレージアカウントの種類
・Standard汎用v2
・PremiumブロックBLOB
・Premiumファイル共有
・PremiumページBLOB

●レプリケーションオプション
■ローカル上長ストレージ（LRS)
選択したプライマリリージョンの１つのデータセンター内で、データが３つのディスクに同期的にコピーさえる。

■ゾーン冗長ストレージ（ZRS)
選択したリージョンの3つの可用性ゾーン間で、データを同期的にコピーする。

■geo冗長ストレージ（GRS)
LRSと同様にプライマリリージョンの１つのデータセンター内で、データが同期的にコピーされて３つ保持される。
その後、ペアとなるセカンダリリージョンの１つのデータセンターに非同期的にコピーされ、セカンダリリージョン内でもデータが同期的に3つにコピーされる。
つまりは、結果的に６つのディスクで同じデータが保持される。

■読み取りアクセスgep冗長ストレージ（RA-GRS)
GRSと同様に、プライマリリージョンとセカンダリリージョンのそれぞれでコピーが行われ、結果的に6つのコピーが維持される。
GRSとの違いは、アクセスする際のURLとなるエンドポイントの構成である。

■geoゾーン冗長ストレージ（GZRS)
ZRSとGRSを組み合わせたオプション。
まずZRSと同様に選択したリージョンお３つの可用性ゾーン間でデータが同期的にコピ＾されて３つ保持さる。その後、GRSと同様にペアとなるセカンダリリージョンお1つの物理的な場所にデータが非同期的にコピーされ、さらにセカンダリリージョン内で同期的にコピーされて３つ保持される。結果的に６つのディスクで同じデータが保持される。

■読み取りアクセスgeoゾーン冗長ストレージ（RA-GZRS)
GZRSと同様にプライマリリージョンとセカンダリリージョンのそれぞれでコピーが行われ、結果的に6つのコピーが維持される。
GZRSとRA-GZRSの違いはGRSとRA-GRSの違いと同じ。アクセスする際のURLとなるエンドポイントの構成である。
何も有用じゃない記事3

# コメントありがとうございます
嘆きの記事でコメントをいただき本当にありがとうございます。
とても元気にでました
頑張っていきたいと思います。

# 雑記
仕事で自分で考えてコードを書くことができず、先輩に泣きつく日々……
悔しいのでPaizaで練習問題をポチポチといています。
平日のコーディングの組み立てる練習にちょうどいい…
本当は自分で何か一つアプリを立てれたらいいが、平日にそんな体力が…ない…
土日にがんばりたい…

https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step6

この問題をこれから解こうとしましたが、小学生の算数が苦手だった気持ちを思い出して
苦しい
点Pはうごくなー！兄弟べつべつに出発するなー！池をまわるなー！

これを書きたいがために記事を書いた

しょーもない技術的な話は身近な友人に話すのは少し恥ずかしいのでここで書くのがちょうどよく気楽
【サーバ構築】dockerでwebサーバ用のコンテナを2つ起動する

## はじめに
サーバに複数のwebサーバを立ち上げてみたかったので、dockerでやってみました。


### 前提
- dockerとdocker-composeをインストール済み
- osはcentos
- サーバはsakuravpsのサービスを利用（サーバの各portがデフォルトでは制限されていることがあるので、その場合は、vpsの管理画面でフィルタ等の設定で変更してください。）

### コンテナを立ち上げる前の準備

80と81のポートを解放する。


### docker-compose.yml

以下のymlファイルを異なるフォルダに格納し、同階層にindex.htmlをそれぞれ格納します。
```yml:docker-compose.yml
version: "3"
services:
  web:
    image: httpd
    volumes:
     - .:/usr/local/apache2/htdocs
    ports:
      - "80:80"
```
```yml:docker-compose.yml
version: "3"
services:
  web2:
    image: httpd
    volumes:
     - .:/usr/local/apache2/htdocs
    ports:
      - "81:80"
```
あとは、docker-compose.ymlのディレクトリで```docker-compose up -d```です。

## 最後に
なかなか繋がらないのでdockerの設定ばかり気にしてましたが、vps側の設定で80番ポートへのアクセスが制限されていました。
これでwebサービスを複数運用する際にportを分けることができます。
EC２インスタンスへSSH接続する方法

## EC2インスタンスへSSH接続する手順

自端末からパブリックサーバへのSSH接続と、
パブリックサーバからプライベートサーバへのSSH接続の手順についてまとめました

## 利用するもの
- サーバ：**Amazon Linux 2 AMI**
- ターミナル：**Tera Term**
- 認証：**Pageant**

### 前提
- OS：WindowsOS10,11
- Tera Term・Pageantをインストール済みであること
- パブリック・プライベートサブネットにEC2インスタンスを作成済みで、SSH接続（ポートは22）が出来るセキュリティグループを設定していること

### パブリック・プライベートのサーバの定義
　パブリックサーバ（パブリックサブネットのサーバ）＝外部アクセス可
　プライベートサーバ（プライベートサブネットのサーバ）＝パブリックサブネットに配置したサーバからのみアクセス可
　　　　
## 【手順】事前準備
AWSでキーペアを作成時にダウンロードするプライベートキーを安全な場所に保存します。
今回は分かりやすく、デスクトップに秘密鍵というフォルダを作成し、その中に秘密鍵を保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/d6248225-f856-8ace-dc3b-d89e50b2d97b.png)


次に、Pageantを起動させ、利用するプライベートキーを追加します。
Pageantを起動させると画面右下に下記のようにアイコンが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/6848fa23-5c32-29ed-61bf-341eef51fd66.png)

アイコンをダブルクリックし、下記画像の赤枠「Add Key」をクリックします。
先ほど作成した、デスクトップ配下の秘密鍵のなかにあるキーを指定（開くボタンをクリック）します。
指定したキーが「Pageant key list」に表示されていればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/a95ea5c4-f541-36d1-86bc-e811141b71f1.png)


## 【手順】自端末からパブリックサーバへのSSH接続
まず、接続先のEC2インスタンス（パブリックサーバ）のパブリックIPv4アドレスを確認します。
パブリックIPv4アドレスを確認は、
まず、AWSマネジメントコンソールのEC2の画面で、接続先のサーバを選択します。
選択すると下記画像のように「パブリックIPv4アドレス」が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/59ec4397-71dd-72e5-9f0a-3a3841ea018d.png)

パブリックIPv4アドレスは起動毎に数字が変わるものになっています。
今回は「13.112.44.214」です。

次に、Tera Termを起動します。
ホスト部分にパブリックIPv4を入力し、「OK」、「続行」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/04e691bb-8c70-4ddb-1f8e-c463ed577e97.png)

ユーザー名に「ec2-user」を入力し、選択する項目は下記と同様のものにし「OK」をクリックします。
※Amazon Linuxのデフォルトのユーザー名は**ec2-user**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/8da965ea-9cd5-1d7c-61cd-e6f2cf43f174.png)

下記画像のような表示が確認出来たらOKです。
```
[ec2-user@ip-プライベート IPv4 アドレス ~]$
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/b31c0fd6-771a-92a5-6624-6fe00c56108d.png)




## 【手順】パブリックサーバからプライベートサーバへのSSH接続
パブリックサーバへ接続が出来たら、プライベートサーバへ接続します。
接続時に必要な**プライベートサーバの**「プライベート IPv4 アドレス」の確認方法ですが、
前述した「パブリックIPv4 アドレス」の右隣に表示があります。

プライベートサーバへの接続コマンドは下記です。
```
ssh ec2-user@プライベートサーバのプライベートIPv4アドレス
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193125/781f0a53-3118-343c-4101-d18e730576ca.png)


実行すると、認証について警告が表示されますが「yes」と入力し続行します。
その後、「エージェントを受け入れますか？」というポップアップが表示されるので「はい」をクリックします。

接続先で「hostname」コマンドを実行し、**プライベートサーバの**「プライベート IPv4 アドレス」がテラタームで確認出来たらOKです。
DDDがわからない～みんなのまとめ役～

# なんかめんどくさい
この配送システムですがメモのやり取りを担当者同士で行っているため、メモがどう渡ったのかを特定しにくくなってしまっています。これでは、システムが変更されて手順が変わったときにメモのやり取りを考え直すのが面倒になってしまいます。
~~~text:手動配送システム
伝票担当
1. 伝票を全部確認して、今日の発注分の商品を地域ごとにメモする。(伝票メモ)
2. カタログ担当に伝票メモを渡す。

カタログ担当
1. 伝票担当のメモを見ながら商品カタログの今日必要な商品サイズをメモする(商品メモ)
2. 計算担当に伝票メモと商品メモを渡す。

車庫担当
1. 今日使えるトラックのサイズをメモする(車両メモ)
2. 計算担当にメモを渡す。

計算担当
1. 伝票メモと商品メモと車両メモを使ってトラックの効率的な積み込み方を決めてメモする(配送メモ)
2. それぞれのトラックの運転手に配送メモを渡す。 
~~~
# さあ、リーダーの出番だ
実際の作業はせずにみんなの管理をするリーダーを作ることで悩みを解決したいと思います。
~~~text:例の手動配送システム(リーダーあり)
リーダー
1. 伝票担当に今日の日付を伝えて伝票メモを受け取る。
2. カタログ担当に伝票メモを渡して商品メモを受け取る。
3. 車両担当に今日の日付を伝えて車両メモを受け取る。
4. 計算担当に伝票メモと商品メモと車両メモを渡して配送メモを受け取る
5. それぞれのトラックの運転手に配送メモを渡す。 

伝票担当
1. 伝票を全部確認して、今日の発注分の商品を地域ごとにメモする。(伝票メモ)
2. リーダーに伝票メモを渡す。

カタログ担当
1. 伝票担当のメモを見ながら商品カタログの今日必要な商品サイズをメモする。(商品メモ)
2. リーダーに商品メモを渡す。

車庫担当
1. 今日使えるトラックのサイズをメモする。(車両メモ)
2. リーダーに車両メモを渡す。

計算担当
1. 伝票メモと商品メモと車両メモを使ってトラックの効率的な積み込み方を決めてメモする。(配送メモ)
2. リーダーに配送メモを渡す。
~~~

メモのやり取りはリーダーが把握するので各担当者は楽になり、システムが変更になった場合にもリーダーにだけ聞けば全体の流れが確認できるので変更しやすくなります。
GetMaterialIndexのMaterialSlotNameについて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/05e3db80-089b-d0a4-b2dc-e8b43ac09fb9.png)

MaterialSlotNameに設定するSlotName

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249684/c2f2f102-25ca-2051-bbf5-8b160e6adae4.png)

SkeletalMeshにあるMaterialSlotsに設定されているSlot名を指定する
VSCode Dev Containerでssh-addがnot found

# やりたかったこと

VSCode Dev ContainerでGitリポジトリを操作するため、SSH接続を使用したい。

参考にした記事はこちら。

https://qiita.com/SolKul/items/3103fdde94c09b044a3a

# 問題

`ssh-agent`で秘密鍵を登録して、いざContainer上で確認すると「ssh-add: not found」に・・・

```
# ssh-add -l
/bin/ash: ssh-add: not found
```

# 原因

どうやら`openssh`が必要らしい。使っていたのはAlpineイメージで、`openssh`が入っていなかった。

# 解決

Dev Containerを使う時に必要なので`postCreateCommand`で`opnessh`をインストール。

```json:.devcontainer/devcontainer.json
{
    "postCreateCommand": "apk update && apk add -U --no-cache openssh"
}
```

rebuildすると無事に登録した秘密鍵が認識されていた。

```
# ssh-add -l
3072 SHA256:**************** *****@example.com (RSA)
```

最終的には`openssh`と一緒に`git`もインストールして、無事Container上でGitリポジトリを扱えるようになった。
[EAS Build] Error: Starting from Xcode 14, resource bundles are signed by default〜 というエラーでiOSのビルドが失敗する

## 発生した問題
iOSのeas buildをすると以下のエラーが出て失敗する
```
Error: Starting from Xcode 14, resource bundles are signed by default, which requires setting the development team for each resource bundle target.
To resolve this issue, downgrade to an older Xcode version using the "image" field in eas.json, or turn off signing resource bundles in your Podfile: https://expo.fyi/r/disable-bundle-resource-signing
```

## 環境
- expo: 46.0.16
- eas-cli: 2.7.0

## 経緯
- きっかけは特になし。突然iOSだけエラーで落ちるようになる

## 解決策
エラー文に表示されているリンク先の指示に従って`Podfile`の`post_install do |installer|`の中に以下のコードを追加

```ios/Podfile
# This is necessary for Xcode 14, because it signs resource bundles by default
# when building for devices.
installer.target_installation_results.pod_target_installation_results
  .each do |pod_name, target_installation_result|
  target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
    resource_bundle_target.build_configurations.each do |config|
      config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
    end
  end
end
```

これで問題が解決したことを確認。
WSL2のUbuntu／18.04 LTSから20.04 LTSへのアップグレード時につまづいたこと

## はじめに
Windows11のWSL2で動かしているUbuntu 18.04 LTSを、20.04 LTSにアップグレードしました。
そのとき、何度かつまづいたので記録しておきます。
つまづいたポイントは３つです。

## there is no development version of an lts available
参考にした以下の記事
https://www.nextofwindows.com/how-to-upgrade-existing-wsl-wsl2-ubuntu-18-04-to-20-04
これに「sudo do-release-upgrade -d」のように「-d」をつければよいと書かれていたので、実行してみたら、このメッセージがでまじた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/daf5128a-20b0-26e6-78d2-6ea9d038ae21.png)

僕のやった時には逆に「-d」をはずして以下のように実行したら、解消できました。
```
sudo do-release-upgrade
```
## Your python3 install is corrupted. Please fix the '/usr/bin/python3'symlink
処理の途中で、画面にこのメッセージが表示されてとまってしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/e4aee207-e137-711a-fab8-47a30ed589ad.png)
この原因は「Python3」のシンボリックリンクが壊れている・・というか・・アップグレードでの処理に適さないはられ方をしているということのようです。
これは「Python3」のシンボリックリンクをはりなおす事で解消できました。
```
sudo ln -fs /usr/bin/python3.6 /usr/bin/python3
```

##  Command terminated with exit status 1
これも処理の途中で停止したときに現れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/e52824a3-d1be-e37c-ee0c-96854d863253.png)
この原因は「snapd」のキャッシュに問題があるようです。
なので「snapd」を削除することで対応できました。
```
sudo apt remove snapd
```
snapd削除時の画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/af79fe0b-931e-3d35-d543-c6e9e3dd56c7.png)
ここで削除しても、アップグレードが正常にすすめば、自動的に最新バージョンがインストールされます。

僕の場合は、この３つをつぶせば最後までいけました。
ではでは。
CoreNFC使ってNFCタグのIDを取る方法

# はじめに
coreNFCではNFCタグのID(以下`UID`)を取得する関数が用意されていないのでなんとかして取り出しました。

# 取り出し方
以下のコードで取り出しました。
`scanTagID`の中にUIDが保存されています。
```
func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
        session.connect(to: tag){ (error) in
        if nil != error{
            session.invalidate(errorMessage: "接続失敗")
        }
        if case let .miFare(sTag) = tag{
            let scanTagID = sTag.identifier.map{ String(format: "%.2hhx", $0)}.joined()
            print("UID:",scanTagID)　 //UID:04a37ca2956482(example)
        }
}
```

# 仕組み
```
let scanTagID = sTag.identifier.map{ String(format: "%.2hhx", $0)}.joined()
```
この部分でUIDを引っ張ってきています。
`map`で`sTag.identifier`の中身をすべて文字列に変換しています。
[数値のString変換](https://www.sejuku.net/blog/34872)

`%.2hhx`なので小数点以下２桁の16進数の1byte文字(一文字)に変換している？（ここの理解が曖昧）

|変換指定子|変換データ型|詳細|
|:--|:--|:--|
|%hhx|char<br>unsigned char|16進数で読み込み、1Byte変数に変換|
|%.2|double|少数点以下2桁|

[変換指定子](https://monozukuri-c.com/langc-funclist-sscanf/)

## 備忘録map使い方
```
let ary1 = [1,2,3]
let ary2 = array.map { $0 * 2 } //　すべての要素に*5
ary2 // [2, 4, 6]
```
プロジェクトチームにおける役割

システム開発をチームで行う場合、それぞれのエンジニアはプロジェクトにおける役割が割り当てられます。

役割には以下のようなものがあります

- PM
- PL
- SE
- PG

## PM（プロジェクトマネージャー）

PMはプロジェクトの取りまとめを行うことが役割です。

クライアントワークから始まり、納品する終わりまで、プロジェクト全体のマネージメントを行います。

具体的には、プロジェクトの初期段階ではクライアントを交えてのヒアリング、予算や納期などを取り決めます。そして、ヒアリングの内容から要件定義・基本設計・詳細設計などの書類の作成、スケジューリング等を行います。開発が始まったらプロジェクトの進捗管理、テスト、レビューなど計画通りにプロジェクトが進行できるようマネージメントを行います。

## PL（プロジェクトリーダー）

PLはプロジェクトを計画通り進行させることが役割です。

プロジェクトメンバーの進捗状況やサポート、プログラムの品質管理などを行います。

PLはプロジェクトの規模によってはいない場合も多いです。

プロジェクトの規模が大きい場合など、メンバーが増えPMだけでは全体の管理が難しい場合などに開発現場での経験豊富なシステムエンジニアやプログラマーなどが選ばれることが多いです。

## SE（システムエンジニア）

SEは開発メンバーとして担当業務を遂行することが役割です。

開発業務を行うこともありますが、主な仕事内容はクライアントとの打ち合わせやシステム設計など上流工程です。

## PG（プログラマー）

PGは設計書を元にプログラムや単体テストをすることが主な作業です。


## おわりに

役割を兼任することや、PLなどいない場合など役割はプロジェクトによって変わります。

自分の役割をこなすことがプロジェクトの成功につながり、役割によって責任・業務の範囲が変わるため、自分の役割を把握することは重要ですね。
[GIMP]画像サイズを変更する

# 概要
元絵は変えずにサイズだけ変更したい時の手順です。
# 本文
GIMPを開いたらFinderから画像ファイルをドラッグ&ドロップします
![スクリーンショット 2022-11-17 22.59.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/8fe92437-4e4c-9794-b116-60c9d4779425.png)
画像 > 画像の拡大・縮小
![スクリーンショット 2022-11-17 23.01.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/9c3e5b49-1018-e1b7-3fa6-3da5d05ece81.png)
幅と高さを入力したら右下の拡大縮小ボタンを押します
（右の鎖アイコンをONにしてあればどちらか一つを入力してエンターキーを押すだけでもOKです）
![スクリーンショット 2022-11-17 23.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/e72254d9-d779-46c5-5dec-c86b236ab49b.png)
サイズ変更できた画像をエクスポートで保存します。
（今回の例の場合は上書きエクスポートで一発保存しました）
![スクリーンショット 2022-11-17 23.01.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/9b1bbc9a-93e4-eead-4cbc-1d54140ac6a7.png)
続けて他の画像もサイズ変更したい場合は、画面左上サムネイルのバッテンボタンを押せばキャンバスをまっさらにできます。
![スクリーンショット 2022-11-17 23.03.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/185f7d4f-8d69-db72-f2e0-aff6d138ae66.png)

# 切り取りたい場合は
切り抜きのツールアイコン
![スクリーンショット 2022-11-26 8.27.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/4ba77d0d-3864-4b5e-0740-42c16d9d5077.png)
もしくはメニューから切り抜きを選んで
![スクリーンショット 2022-11-26 8.30.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/5cd105e4-cb4f-b344-3c32-f3ba620e3898.png)
ドラッグで切り取り部分を選んだ後**エンターキーを押す**と
![スクリーンショット 2022-11-26 8.28.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/7845221f-4c91-0b8c-3800-6df13f549771.png)
切り取れます。後は画像サイズ変更と同じようにエクスポートしたら完了です。
![スクリーンショット 2022-11-26 8.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617265/5539b250-7f22-8fc0-22cb-687c05fedbba.png)
AWS EC2 WordPress環境構築したが500エラーになる

# 概要

- AWSのEC2にWordPress環境を構築したが500エラーになったので自分の環境の場合の解決策をまとめる。

# エラー発生までの経緯

- 下記手順で作業した
    1. VPCの作成などのネットワーク系の作業実施
    1. EC2の設置
    1. EC2にApache導入（このときApacheのテスト画面がEC2のパブリックIP直接指定で表示できることを確認）
    1. RDS作成
    1. EC2からRDSのエンドポイント指定してMySQLで入れることを確認
    1. wgetでWordPressインストールしtarで展開し/var/www/html直下に展開ファイルを設置

# エラー内容

- EC2パブリックIP直接指定でブラウザからアクセスしても500エラーが返される。

    ![13_230_134_148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/848a5758-40df-759f-3c30-f6343c162423.png)

# 解決までの経緯

- EC2インスタンス内のPHPのバージョン確認をしてみる。

    ```bash
    $ php -v
    PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:05) 
    Copyright (c) 1997-2013 The PHP Group
    Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    ```

- ん？なんかPHPがめっちゃ古い、、とりあえずamazon-linux-extrasで入れられる最も新しいPHP8.0を入れてみる。

    ```bash
    sudo amazon-linux-extras install php8.0
    ```

- よしPHP8.0が入った。

    ```bash
    $ php -v
    PHP 8.0.25 (cli) (built: Oct 31 2022 22:42:34) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.25, Copyright (c) Zend Technologies
    ```

- その他にも必要なパッケージ入れ忘れていたようなので入れる。

    ```bash
    sudo yum install php php-mbstring
    ```

- Apache再起動

    ```bash
    sudo systemctl restart httpd
    ```

- 正常起動した

    ![WordPress_›_Setup_Configuration_File.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/f2c01c86-fe9f-b66a-2a5b-36e4b5505b1a.png)

# まとめ

- PHPのバージョンと必要なパッケージが足りていなかった。。。
- よく見たらWordPressのPHPの必要バージョン7.4以上だった。。

    ```
    PHP バージョン 7.4 以上。
    MySQL バージョン 5.7 以上、または MariaDB バージョン 10.3 以上。
    ```

# 参考文献

https://ja.wordpress.org/about/requirements/
CRONとなでしこの華麗な連携 - 毎月1回自動でフォルダを作成する

# CRONとは？

Linux/macOSには、CRONというスケジュール実行のための仕組みがあります。Windowsのタスクスケジューラにあたるものです。これを使うと、毎月1回＊＊する、毎時間1回＊＊するといった定期実行が可能になります。

今回は、macOSやLinuxで、なでしこのプログラムを定期処理を実行する方法を紹介します。

## 「なでしこ」とCRONがどう関係するの？

なでしこ3のPC版は、コマンドラインから軽快に実行できるので、CRONになでしこのプログラムを指定しておけば、定期的にプログラムを実行できます。

例えば、「**毎月1回自動でフォルダを作成する**」という処理を行うことが可能です。

## シチュエーション

毎月、会社の経理処理のために、レシートなど経費の精算データを保存するフォルダを作って整理しているとします。
その際、次のような3個ほどのフォルダを作るとします。例えば、2022年12月であれば、次のようなフォルダを作成します。

- `経理/2022年/12月/レシート`
- `経理/2022年/12月/現金管理`
- `経理/2022年/12月/請求書`

もちろん、フォルダ3つくらい作るのは面倒ではないのですが、毎回微妙に異なる名前のフォルダを作る人がいて、統一されなくて困るという場合もあります。

プログラムを作るメリットというのは、「面倒な処理を自動化できる」することだけでなく、「手順をあらかじめ決めることができる」ことも含まれます。

### 経理処理はWindowsなんじゃないの？

その通りで、その場合には下記のプログラムを、タスクスケジューラで実行するように設定すればOKです。

ただし、オフィスの共有PCに大容量ストレージがつながれており、そこにアクセスして経理データを保存するという場面を想定しています。その際、その共有PCに安価なRaspberry Piを選択したという想定なのです！

また、Windows7とかサポート期限が切れた余ったPCに、Ubuntuなどの無料OSをインストールして、共有PCとして使うという場合もあるでしょう。

Raspberry Piでも、Ubuntuでも、なでしこのPC版を快適に動かせます。
Linuxを使う場合、**CRON+なでしこ** が威力を発揮するのです。

## プログラム

次のような、なでしこのプログラムを作ります。

```mkdir.nako3
基本名＝(システム時間を「経理/YYYY年/MM月」で日時書式変換)。
「{母艦パス}/{基本名}/レシート」のフォルダ作成。
「{母艦パス}/{基本名}/現金管理」のフォルダ作成。
「{母艦パス}/{基本名}/請求書」のフォルダ作成。
```

このプログラムを実行すると、以下のように`経理/2022年/12月/xxx`のような3つのフォルダを作成します。

![mkdir.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33180/cdd59aa2-4246-8258-37cc-ed09df89dbf7.png)

## CRON

CRONに上記のプログラム「mkdir.nako3」を登録します。ターミナルを開いて以下のコマンドを実行します。

```
crontab -e
```

そして、以下のように指定します。これは、毎月1日の朝10:00にプログラムを実行します。

```
00 10 1 * * 　(cnako3のパス) (プログラムのパス)/mkdir.nako3
```

CRONは便利で、ほかにも、いろいろな指定が可能です。以下が参考になります。

- (参考) https://qiita.com/katsukii/items/d5f90a6e4592d1414f99

## macOSの場合はセキュリティの設定が必要

なお、macOSの場合は、以下の手順が必要。cronにフルディスクアクセス権限を付与する必要があります。

- 「システム環境設定⇒セキュリティとプライバシー⇒フルディスクアクセス」を開く
- 「+」ボタンをクリック
- [command]+[shift]+[G]キーを押して、「/usr/sbin/cron」を選択。
- (参考) https://ageo-soft.info/knowhow/mac_knowhow/6980/
AWSハンズオン_5_IAMの5_Organization_2_SCPで組織のアクセス制限を試していく


AWSの初心者のさとしです
ハンズオンで勉強メモとして投稿いたします。
ご覧になったみんなさんにお役に立てればうれしいです
※：間違ったところがあれば、ご指摘していただければ幸いです
#本文
本日はSCPを作って、組織にアタッチして、その組織に所属するユーザがSCPのアクセス制限を試していきます。
手順：
１，SCPを作る
２，組織にアタッチ
３，組織のアカウントを使って、SCPで制限された機能を使用できるかを検証する

＃ハンズオン
１，SCPを作る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/8f26c734-81d4-fabe-4d9d-099e20a46cf6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/5fc254c3-4808-b117-ac98-bc47264820a6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/d95598e0-30b0-bd14-bcd3-f00b52f886d6.png)
![screencapture-us-east-1-console-aws-amazon-organizations-v2-home-policies-service-control-policy-create-2022-11-17-22_50_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/c5e9067b-ded5-2e9b-2ae4-c780361f1188.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/03ed348c-dca4-9f2e-7287-725e54273cd2.png)
「ポリシーを作成」ボタンをクリックして、SCPを作りました
![screencapture-us-east-1-console-aws-amazon-organizations-v2-home-policies-service-control-policy-create-2022-11-17-22_53_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/0be989cc-8330-0d9e-a041-631d6747a06e.png)

２，SCPをアタッチ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/cac17e0a-6311-2e95-8f0f-a995147b27ae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488091/4b412f4a-243d-7e5c-c7ca-7832e91eb090.png)

３，先の組織のユーザを使ってアクセスしに来ます。
下記のように、EC2のすべてのサービスは使えなくなりました

以上です
【Jetpack Compose】Image()コンポーザブルが使用できない

# どういうことか

Androidデベロッパーのチュートリアルをやっている。

https://developer.android.com/codelabs/basic-android-kotlin-compose-add-images?hl=ja#3

画像を表示するためにImageコンポーザブルを追加する、とある。

```kotlin: MainActivity.kt
Image(
   painter = image
)
```

テキスト通りに進めているハズだがエラーが出て画像を表示できない。

`Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:`

## 原因と解決

適切な `import` を行うことで解決する。
**チュートリアルには載っていない！**

```kotlin: MainActivity.kt
import androidx.compose.foundation.Image
```

自動補完でやってくれる `import` が適切なものではないことが多々あるっぽい。
先輩曰く

> androidおんなじ名前だけど違う関数間違ってimportするあるあるなので諦めてください

らしい。初心者殺し。
tableView使う際の備忘録

# 目次
1.cell内にUIボタンを置く際の注意

## 1.cell内にUIボタンを置く際の注意
cellの中にボタン(UISwitchやUISegmentedControl)を配置する際はtableの更新時に注意が必要。

下記のようにdata配列の値が更新された際にtableViewが更新される場合について考える。
```
var data = [
    ["name", "イベント名"],
    ["location", "緯度経度"],
    ["run", "1"]
]{
    didSet{
        detailTable.reloadData()
    }
} 

//ここでボタンからrunの値を操作する。
@IBAction func runChanged(_ sender: UISegmentedControl) {
    if (sender.titleForSegment(at: sender.selectedSegmentIndex) == "run"){
        print("run")
        data[2][1] = "1"
    }else{
        print("off")
        data[2][1] = "0"
    }
} 
```
下記のコードは先程のコードでtableViewが更新された際に実行される部分。
data(run)の値を取得し、それに合わせたボタンを選択した状態で再描画する。
この作業をしないとデータの中身と対応していない状態のボタンが描画されてしまう。
```
if(data[2][1] == "0"){
    runSwitch.selectedSegmentIndex = 1
}else{
    runSwitch.selectedSegmentIndex = 0
}
```
日常とムーアの法則_非エンジニア総務への共有

# ムーアの法則について
 [ムーアの法則(Wikipediaから)](https://ja.wikipedia.org/wiki/%E3%83%A0%E3%83%BC%E3%82%A2%E3%81%AE%E6%B3%95%E5%89%87)

# かいつまんで言うと
* 18か月で半導体の集積度が約2倍になっていくという法則。
* 近年限界説もあった。
* 実際のところ、製品にも依るが集積性は製法の進化で劇的に向上もしたりする。

# じゃあこれが仕事とどう関係するか
* 実際短期的な話ではないが、4年PCを使うと仮定して、性能は3倍前後の変化があるという見立て。
* 例えば、ハングアップしたり、メモリ不足、ストレージ不足、応答時間が長くなる等実害があるとすれば生産性の低下と言える。
* 単純に10年選手のマシンだとすると30倍処理差が出るという話ではあるが、まぁそこまでは出ないにせよ、処理能力は1,2割くらいまで低下はしてるかもしれない。

# 生活の中で例える話として
* スマホが定着した頃の話として、四半世紀前の1つの銀行の勘定系システムが手のひらに乗ったというイメージ。
* Android端末が2年くらいでもっさりしてくる場合があるが、それは、内部のプログラムに対して処理が追い付かなくなるということ。
今日のdocker error: You must put some 'deb-src' URIs in your sources.list

dockerでlinux kernel build

https://qiita.com/kaizen_nagoya/items/cefa69c0de90c94ed9b3

<この項は書きかけです。順次追記します。>


```ubuntu:bash
# apt  build-dep -y linux
Reading package lists... Done
E: You must put some 'deb-src' URIs in your sources.list
```
 
よくみると


```ubuntu:bash

 grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list
```

でlistをつくらなきゃいけなかった。見落とし。ごめんなさい。




 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221113
dockerでlinux kernel build

DockerでLinuxカーネルのビルドをしてみよう

https://scrapbox.io/neet/DockerでLinuxカーネルのビルドをしてみよう


 <この項は書きかけです。順次追記します。>


```macOS:bash
$ docker run -it gcc /bin/bash
```
dockerで



```ubuntu:bash
# apt update; apt -y upgrade
# grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list
# apt install -y git ccache fakeroot libncurses5-dev
# git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git /build-kernel/linux
# apt  build-dep -y linux


 
 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 　20221117
C++ 忘備録１　～基本構文

C++の基本構文をまとめます
# HelloWorld出力
```c++
#include <iostream>
using namespace std;
int main() {
  cout << "Hello" << "World\n";
}
```
# 入力
```c++
#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  cout << n;
}
```
Intelligent headlamp control ボッシュ自動車handbook 11版(156) p.1928

Drive assistance and sensors, Intelligent headlamp control ,  ボッシュ自動車handbook 11版(156)

人生で影響を受けた本100冊。

https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊

http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0-1) 課題と記事一覧new

https://qiita.com/kaizen_nagoya/items/a9d2887bf2a7598dc8e5

# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642
Management for spark-ignition engines,800
Gasoline-engine operation with alternative fuels, 886
Management for diesel engines, 906
Electrification of the drive, 970
Emission-control and diagnosis legislation, 1042
Chassis systems, 1108
Vehicle bodies,  1310
Comfort and convenience, 1392
Safety systems in the motor vehicle, 1410
Vehicle security systems, 1430
Automotive electrics, 1450
Vehicle electrical systems for hybrid and electric vehicles, 1560
Automotive electronics, 1620
Infotainment 1780
Drive assistance and sensors, 1804
Drive assistance systems 1872
Future of automated driving 1934
Appendics, 1940

# Intelligent headlamp control  , p.1928

## Motivation
## System designs

# Reference
参照なし

# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 20221117
【VSCode】Markdownに目次を自動作成する方法

## 作成方法

目次を自動で作成するために以下の拡張機能を使用します。  

https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one

インストール後にMarkdownファイルの目次を挿入したい箇所にカーソルを合わせます。  
コマンドパレットで`Markdown All in One: Create Table of Contents`を実行します。  
すると以下のように目次が挿入されます。  

```md
# タイトル

## 目次

- [タイトル](#タイトル)
  - [目次](#目次)
  - [セクション1](#セクション1)
    - [セクション1-1](#セクション1-1)
    - [セクション1-2](#セクション1-2)
  - [セクション2](#セクション2)
  - [セクション3](#セクション3)

## セクション1

### セクション1-1

### セクション1-2

## セクション2

## セクション3

```

デフォルトではファイル保存時に自動で内容が更新されます。  

## 目次に関する設定

### 更新

デフォルトではファイル保存時に更新されます。  
`settings.json`に以下のように記述することで無効にできます。  

```json:settings.json
{
  "markdown.extension.toc.updateOnSave": false,
}
```

手動で更新する場合にはコマンドパレットから`Markdown All in One: Update Table of Contents`を実行します。  

### 目次にする範囲

`settings.json`に以下のように記述することで目次にする範囲を指定できます。  

```json:settings.json
{
  "markdown.extension.toc.levels": "2..6"
}
```

デフォルトは`"1..6"`です。  
`"2..6"`とした場合には以下のように`#`は目次から除外されます。  

```md
# タイトル

## 目次

- [目次](#目次)
- [セクション1](#セクション1)
  - [セクション1-1](#セクション1-1)
  - [セクション1-2](#セクション1-2)
- [セクション2](#セクション2)
- [セクション3](#セクション3)

## セクション1

### セクション1-1

### セクション1-2

## セクション2

## セクション3

```

また特定の見出しの除外もできます。

`settings.json`に以下のように追記します。  

```json:settings.json
{
  "markdown.extension.toc.omittedFromToc": {
    "sample.md": ["## セクション2"]
  }
}
```

または絶対パスでファイルを指定します。  

```json:settings.json
{
  "markdown.extension.toc.omittedFromToc": {
    "/path/to/sample.md": ["## 目次"]
  }
}
```

設定後に目次を作成すると以下のようになります。  

```md:sample.md
# タイトル

## 目次

- [セクション1](#セクション1)
  - [セクション1-1](#セクション1-1)
  - [セクション1-2](#セクション1-2)
- [セクション2](#セクション2)
- [セクション3](#セクション3)

## セクション1

### セクション1-1

### セクション1-2

## セクション2

## セクション3

```

### 順序付きリスト

`settings.json`に次の記述を追加すると目次が順序付きリストになります。  

```json:settings.json
{
  "markdown.extension.toc.orderedList": true
}
```

追加後に目次を作成すると以下のようになります。  

```md:sample.md
# タイトル

## 目次

1. [目次](#目次)
2. [セクション1](#セクション1)
   1. [セクション1-1](#セクション1-1)
   2. [セクション1-2](#セクション1-2)
3. [セクション2](#セクション2)
4. [セクション3](#セクション3)

## セクション1

### セクション1-1

### セクション1-2

## セクション2

## セクション3

```
DDDがわからない～専門家に頼ろう～

# おじさんだけ職場
この会社は社員は全員おじさんです。
ここでは、指定された商品にぴったり合う箱とリボンとシールを用意する仕事をしています。
~~~text:おじさん株式会社
箱決めおじさん
1. 指定された商品のサイズを確認
2. 箱カタログから箱を決定しメモする(箱メモ)
3. 他のおじさんに箱メモを渡す

リボン決めおじさん
1. 箱メモからリボンの長さを計算する
2. リボンカタログからリボンを決定しメモする(リボンメモ)
3. 発注おじさんにリボンメモを渡す

シール決めおじさん
1. 箱メモからシールの色合を決定する
1. シールカタログからシールを決定しメモする(シールメモ)
3. 発注おじさんにシールメモを渡す

発注おじさん
1. 箱メモとリボンメモとシールメモを確認してメーカーに発注する
~~~

# 時代の流れ
しかし、時代の流れによってメーカーから「ぱーそなるこんぴゅーたー」を使って「でーたべーす」とやらにアクセスして情報を確認するようにというお達しがありました。
社内のカタログを見るだけだったのですが、おじさんたちはそれぞれパソコンを覚える必要が出てしまいました。頑張っておじさんたちに覚えてもらうのは大変だと思うのでこういった場合には専門家に頼りましょう。
~~~text:ネオおじさん株式会社
若者(専門家)
1. 貰ったメモでデータベースから各種情報を取得しメモする(DBメモ)
2. メモを渡されたおじさんに、各種メモをおじさんに渡す

箱決めおじさん
1. 指定された商品のサイズをメモする(サイズメモ)
2. 若者に商品サイズメモを渡してDBメモをもらう
3. 他のおじさんに箱メモを渡す

リボン決めおじさん
1. 箱メモからリボンの長さをメモする(長さメモ)
2. 若者にリボンの長さ目もを渡してDBメモをもらう
3. 発注おじさんにリボンメモを渡す

シール決めおじさん
1. 箱メモからシールの色合いをメモする(色合いメモ)
2. 若者に商品サイズメモを渡してDBメモをもらう
3. 発注おじさんにシールメモを渡す

発注おじさん
1. 箱メモとリボンメモとシールメモを確認してメーカーに発注する
~~~
若者のおかけでおじさんへの負担はかなり減ったのではないでしょうか？

今回のように外部から情報を取得するような場合には、内部の作業よりも意図しない変化をすることが多く難しいことを強いられることが多いため、専門家を用意したほうがいいです。

**おじさんを誹謗中傷する意図はありません**
Intersection assistant  ボッシュ自動車handbook 11版(155) p.1924

Drive assistance and sensors, Intersection assistant  ,  ボッシュ自動車handbook 11版(155)

人生で影響を受けた本100冊。

https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e

に掲載した本のうち、「新人プログラマ応援」企画で「私の推薦書３３冊」として３３冊紹介した。

新人プログラマ応援　私の推薦書３３冊

http://qiita.com/kaizen_nagoya/items/98c62f051dbdb4f8aca2
残りの６７冊から、順に過去の読書感想を引用し、新たな読書感想文を追記する。

 <この項は書きかけです。順次追記します。>


# ボッシュ自動車ハンドブック version 11, 2022

Automotive Handbook  May 2, 2022

https://www.amazon.co.jp/dp/1119911907/

ボッシュ自動車handbook(英語)11版(0-1) 課題と記事一覧new

https://qiita.com/kaizen_nagoya/items/a9d2887bf2a7598dc8e5

# Contents
Motor vehicle, 28
Basic principles, 32
Mathematics and methods, 204
Materials, 258
Machine parts, 354
Joining and bonding techniques, 426
Vehicle physics, 462
Operating fluids, 538
Refrigerants for air-conditioning systems, 591
Drivetrain(駆動系), 594
Internal-combustion engines(内燃機関),642
Management for spark-ignition engines,800
Gasoline-engine operation with alternative fuels, 886
Management for diesel engines, 906
Electrification of the drive, 970
Emission-control and diagnosis legislation, 1042
Chassis systems, 1108
Vehicle bodies,  1310
Comfort and convenience, 1392
Safety systems in the motor vehicle, 1410
Vehicle security systems, 1430
Automotive electrics, 1450
Vehicle electrical systems for hybrid and electric vehicles, 1560
Automotive electronics, 1620
Infotainment 1780
Drive assistance and sensors, 1804
Drive assistance systems 1872
Future of automated driving 1934
Appendics, 1940

# Intersection assistant  , p.1924

## EMotivation
## Left turn assistant
## Cross traffic assistant
## Trafic light and stop sign assistants



# Reference
[1] GIDAS database 2014
 
http://allie.dbcls.jp/pubmed/GIDAS;German+In-Depth+Accident+Study.html


# 自己参考資料(self reference)

ボッシュ自動車ハンドブック 

https://qiita.com/kaizen_nagoya/items/8e330ce57880f04d71d9
ボッシュ自動車handbook(英語)10版　目次

https://qiita.com/kaizen_nagoya/items/57c799ff544c96efdea9

自動車工学とBosch Vehicle Handbook

https://qiita.com/kaizen_nagoya/items/d13ff6b0e4d7c8907c0d

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴(document history)
ver. 0.01 初稿 20221117
[GitHub Actions] 鬼の爆速実装！！！フォーマッター(Black)とReviewDogを自動実行する

## この記事を読めばできるようになること
GitHub Actionsでフォーマッター(Black)とReviewDogを自動実行できる

## 説明しないこと
- GitHub Actionsとは何か
- ymlファイルの記述方法

## 注意事項
これから紹介するソースはdockerを利用している

## 該当のyamlファイル
```.github/workflows/black_action.yml
name: black-action
on: [pull_request]

jobs:
  linter_name:
    name: runner / black
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Check files using the black formatter
        uses: rickstaa/action-black@v1
        id: action_black
        with:
          black_args: "."
      - name: Annotate diff changes using reviewdog
        if: steps.action_black.outputs.is_formatted == 'true'
        uses: reviewdog/action-suggester@v1
        with:
          tool_name: blackfmt
```

## コマンド説明
###   runner / black, Annotate diff changes using reviewdogについて
- [Run black formatter](https://github.com/marketplace/actions/run-black-formatter)より引用
- runnter / blackでpull request時にフォーマッター（Black）が走るようになる
![スクリーンショット 2022-11-17 22.18.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2515002/b162d47f-a3db-f247-4552-a0e7154d1964.png)

- もしBlackに沿っていないソースの場合はreviewdogが修正提案をしてくれる🐶
<img width="1698" alt="image.png (156.8 kB)" src="https://img.esa.io/uploads/production/attachments/14274/2022/10/24/126296/ba7e6629-41fc-4012-bba5-32a8203afc58.png">

- ここでcommitメッセージとともにcommitすることが可能
- Add suggestion to batchで提案をまとめてcommitすることが可能
<img width="968" alt="image.png (53.6 kB)" src="https://img.esa.io/uploads/production/attachments/14274/2022/10/24/126296/000538cc-c5b4-4cee-9ba6-d22d0af7d712.png">

## 参考
[Run black formatter](https://github.com/marketplace/actions/run-black-formatter)

##### この記事がどなたかの役に立てば幸いです。。。
Twitter 撤退か進出か

Qiita,Twitterから撤退し、Githubに篭ろうと思ってから３年が経つ。　



Githubで教材作成

https://qiita.com/kaizen_nagoya/items/f81bf0eaf8e409d96706

GitHub から Qiita　への貼り付け：Qiita(40)

https://qiita.com/kaizen_nagoya/items/38a3f1789edba9682e7b


Microsoftとの歴史　Basicに始まり、Cコンパイラ、Windows95、Githubまで

https://qiita.com/kaizen_nagoya/items/d7c0cc257e99de0573cf


社外取締役はいかがでしょう

https://qiita.com/kaizen_nagoya/items/a77a81da08b17194699f

開発環境を豊かにする開発事例　過去・現在・未来

https://qiita.com/kaizen_nagoya/items/d9bf0c2c671fe7f1c749



twitter driven posting

https://qiita.com/kaizen_nagoya/items/8bcef58c94dc690f252f

アジャイルサムライ & 公開算譜は機敏だ(An Open Source Project is Agile)GitHub with Docker。仮説（51）

https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e
細かすぎて伝わらないWEBサイトのデザイン

# 前置き
近頃、WEBデザインに関するノウハウの多くをインターネットで学び、実践することができる環境が整っています。私もたくさんの本や記事を読んでWEBデザインを学んできました。今回はその中でも私が自分で考えて実践している他の記事などから持ってきていない方法を紹介します。
## 白は何色かあるほうがいい
200色とは言いませんが、何色か白っぽい色を用意し使い分けることをおすすめします。白はユーザーにとって非常にダメージ（物理）を与える色です。少しクリームっぽい白や少しだけグレーによった白を背景や文字に使うことによってユーザーへのダメージを抑え、デザインによって与える印象をコントロールすることができます。
![Screenshot 2022-11-17 22.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664165/4128a600-a10d-dddf-b48a-2f064621107d.png)
上記の画像では2色の「白っぽい色」を使うことでユーザーに柔らかい印象を与えています。

## 基本的にCSSで直線は書かない
イラストレーターなどのソフトでは線は少なくとも2つ、図形によっては3つのパターンが用意されています。線の違いは主に切れ目が丸くなっているか直角になっているかという点です。
![illustratorのパス（線）を丸くする方法.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664165/f67ec32e-86f2-f533-dca7-269e3c727700.png)

私は可愛いWEBデザインを志しているのでメニューなどで切れ目が直角の線は使いたくないです。私が直線のパーツを作る場合はイラストレーターで形を作り、それをSVGで書き出して実装しています。
## センタリングだけが正義ではない
とりあえず、写真をヘッダーの背景に貼ってマスクをかけて文字を入れるというコーディングが楽な割にはよく見える定番のデザインです。
![Screenshot 2022-11-17 22.09.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664165/2c2f8909-9ea1-f216-4570-260c85837f3e.png)
画像にもありますが、完璧に画面の中央にセンタリングするのではなく少し中央よりもタイトルを上に配置します。
![computer_side_man.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664165/0d2b185b-50a4-4b59-69f4-6b6c166a882b.png)
人間がパソコンやスマホを見るときその姿勢は画面と目線が垂直に交わるようになっているわけではありません。そのため、完璧に中央にセンタリングしてしまうと場合によっては少しタイトルが下にあるように見えてしまうのです。タイトルが中央より下にあって違和感を持つ人は多いですが、中央より上にあっても違和感を持つ人は少ないでしょう。フルスクリーンのWEBサイトをデザインする際は意識すると良いかもしれません。

## デザインとレスポンスの確認をしたければ家電量販店へ行け
WEBデザインの大敵は自身の環境とAppleの新製品です。自宅の環境ではきれいになるが、他のサイズのデバイスで動かないなどはザラにあることです。3:4のモニターやスマートフォン程度なら自宅にありますが、ワイドモニターで見たときの挙動やiPadの挙動は確認することができません。そんなときは家電量販店に足を運び、こっそり自宅のドメインを叩いて検証作業をしましょう。

## まとめ
繰り返しになりますが、WEBデザインとCSSの大敵は自身の環境です。モニターの発色やブラウザ、更にはユーザーの姿勢（物理）によってWEBサイトの印象は大きく変動します。友人や家電量販店に頼り多くのユーザーによりよい体験を届けるWEBデザインを心がけて行きたいです。

引用&参考
[イラレ屋](https://www.illareya.net/passrundtec.html)
Android実機でError: Activity class {} does not existが出てデバッグできない

# 背景
Androidアプリを開発してる際に以下のエラーが出始めて、実機デバッグができなくなってしまいました
（ここではパッケージ名を`com.package.name`としています）。

```bash
Starting: Intent { cmp=com.package.name/.MainActivity }

Error type 3
Error: Activity class { com.package.name/com.package.name.MainActivity } does not exist.
```

# 関連情報
調べると同じようなエラーで苦しんでいる人が世界中にいそうです。

- https://stackoverflow.com/questions/63075068/error-type-3-error-activity-class-mainactivity-does-not-exist
- https://stackoverflow.com/questions/58795063/error-activity-class-mainactivity-does-not-exist
- https://qiita.com/gekkoukisi/items/3ec35fb03963aad8b71d


# 原因
ネットで提案されている解決策を試しても特に変化はありませんでした。
そして、私は気づいたんです。スマホの画面に `セーフモード` という文字がいつの間にか表示されていることに。

セーフモードはサードパーティーアプリを動かなくさせるみたいですね。とりあえず、セーフモードを戻すことに。

すると、何事もなかったかのように実機にアプリがインストールされることが確認できました。

# まとめ
実機をセーフモードにしていると実機デバッグできないよ！
1日溶かしたので、怨念を供養するためにまとめました。