OmniAICreator/Qiita-1.07M huggingface dataset:
データレプリケーションツール Qlik Replicate をお手軽に体験してみる

こんにちは。インサイトテクノロジーの松尾です！

本記事ではニアリアルタイムでう異なるデータベースのデータを同期することができる Qlik Replicate を Web からサクッと申し込んで体験する方法を紹介します。

## はじめに：Qlik Replicate とは

Qlik Replicate は異なるデータベース間のデータをニアリアルタイムで同期することができるソフトウェアで、いわゆる「論理レプリケーション」製品になります。

リレーショナルデータベースだけでなく、多種多様なデータソース(連携元)、ターゲット(連携先)に対応していることも特徴の一つで、主な利用シーンとしては大きく以下の 2 つが挙げられます。

* 現行業務 DB は維持しつつ、DWH やデータ分析基盤などにデータを集約
* DB 移行 (クラウド移行はハード更改、バージョンアップ) 時のダウンタイム最小化

前者のユースケースでは、最近、クリティカルだけれども簡単に卒業できないようなメインフレームや SAP など、重要な情報が含まれているが、なかなか活用されてこなかったようなデータをリアルタイム活用することができるようになります。

後者の移行用途で利用する場合、本ソフトウェアを用いて移行作業前にデータを同期させておき、停止時の作業を最小化することでシステムのダウンタイムを最小化します。EC サイトや病院など、長期間のシステム停止のインパクトが大きい場合に利用されます。

参考：https://www.insight-tec.com/products/qlik-replicate/

## Qlik Replicate をお手軽に体験してみる

ところで、この Qlik Replicate を実際に少し触ってみたい！と考えられたときのため、一定期間利用することのできる無償トライアル環境(テストドライブ)が用意されています。

Qlik Replicate テストドライブ：https://www.qlik.com/ja-jp/trial/replicate

テストドライブは以下の特徴があります。

* 必要な情報は、氏名、メールアドレス、会社名、部署名、国のみ。クレジットカード番号などは不要。
* 申し込み後、すぐ利用可能。
* 利用時間は 4 時間。4 時間経過後は環境へのアクセス不可。
* 試すことのできるソースとデータ同期のパターンは以下。
    * RDB (MySQL → PostgreSQL) 間の同期
    * RDB (MySQL) から Kafka へのデータ連携

では早速始めてみましょう。テストドライブのリンクから、必要事項を入力して「今すぐ試す」をクリックします。

![テストドライブの登録](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/b228cded-e2a1-b5eb-cfe1-5d867ecafef4.png)

登録すると、以下の画面が表示され、アクセス先が記載されたメールが届きます。

![テストドライブの開始](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/b5a45acb-8bb5-a24d-1bfe-f361cac52dcd.png)

※私が試したときは、登録後すぐに届きました。

メールに記載されたアクセス先を開くと以下のような説明の画面が表示されます。

![テストドライブのGet Started画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/797cd4c0-f7fb-a7cd-3088-6f5443e5d389.png)

日本語ではありませんが難しいことは書かれておりません。先述の通り、このテストドライブで試すことができるのは以下の 2 パターンです。

* RDB (MySQL → PostgreSQL) 間の同期
* RDB (MySQL) から Kafka へのデータ連携

「GETTING STARTED」画面の中ごろに、実際の Qlik Replicate の画面へのリンク、管理者ユーザー名、管理者パスワードの情報が記載されています。

Qlik Reolicate の画面を表示して以降の操作の流れについては「TUTORIAL」のページに詳しく記載されています。こちらも英語にはなりますが、画面イメージつきでステップバイステップで記載されているので、戸惑うことはないでしょう。

![チュートリアル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/30fc73fe-1b1a-d77b-03ef-46cb8a89c3fa.png)

ちなみに、テストドライブの時間は 4 時間となっていますが、このチュートリアルに従って実施する場合、4 時間は十分な時間だと思います。RDB 間のデータ連携がどのように行われるのか、Kafka にはどのような形でメッセージが連携されるのか、まずは体験してみたいという時には非常にお手軽な環境ですのでぜひお試しください。

## おわりに

本記事では、データレプリケーションツールがどういったものかを手軽に体験できる Qlik Replicate のテストドライブを紹介しました。もう少し詳しい話を聞きたい、自分の環境で試してみたい、など場合は、弊社や Qlik 社などへお問合せいただければと思います。
【ふりかえり】AWS CLIによる静的なWEBサイト構築

# はじめに
[【AWS 上で静的な Web サイトを公開しよう！】](https://aws.amazon.com/jp/events/aws-event-resource/hands-on/)をもとに、AWS CLIで静的なWEBサイトを構築する手順をアウトプット資料としてまとめました。

* 作業手順としては、以下の流れになります。
①バケット作成
②パブリックアクセス許可
③バケットポリシーの作成
④バケットポリシーのアタッチ
⑤index.htmlファイルのアップロード
⑥WEBサイト用に設定
⑦WEBページの確認

* Hands-on Begginersでは、CloudFrontやACM、Route53の設定もこの後に続きますが今回の記事ではこれらのサービスは省略し、静的WEBサイト構築のCLI手順に絞って記載します。
（時間を見つけて、これらの手順も更新していきたいです）
# 手順

## S3バケットの作成
```
aws s3 mb s3://(バケット名)
```
## パブリックアクセスを許可する
[　※【参考】put-public-access-block](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html)
```
aws s3api put-public-access-block --bucket (バケット名) --public-access-block-configuration  "BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false"
```

パブリックアクセス許可設定を確認します。
```
aws s3api get-public-access-block --bucket (バケット名)
```
出力例は以下の通りです。
```
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": false,
        "IgnorePublicAcls": false,
        "BlockPublicPolicy": false,
        "RestrictPublicBuckets": false
    }
}
```
## バケットポリシーの作成
```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow", 
            "Principal": "*", 
            "Action": "s3:GetObject", 
            "Resource": "arn:aws:s3:::(バケット名)/*" 
        } 
    ] 
}
```
## 作成したポリシーのアタッチ
```
aws s3api put-bucket-policy --bucket (バケット名) --policy file://bucket-policy.json
```

## index.htmlをアップロード
```
aws s3 cp index.html s3://(バケット名)/index.html
```
## WEBサイトの設定
```
aws s3 website s3://(バケット名) --index-document index.html
```
## WEBページの確認
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/cb78b63f-81fa-cd46-33de-c215d49d0061.png)

 

# 参考
[AWS CLIを使って、Amazon S3で静的ウェブサイトをホスティングしたい](https://dev.classmethod.jp/articles/amazon-s3-website-hosting-with-aws-cli/)
hostsを使用したローカルサーバにiPhone,Androidからアクセスする

# はじめに
この記事はMacでhostsを使用しドメインからアクセスできるようにしているローカルサーバにiPhone,Androidからアクセスする方法を記事にしています。

# 今回使用したもの
Mac OS Ventura 13.3.1
squid 5.9
iPhone,Androidなどアクセスする端末

# やりかた
方法としては、`squid`でMac上にプロキシサーバを構築し、それを経由してローカルサーバにアクセスする。  

## IPの固定
各端末からアクセスできるようにMacのIPアドレスは固定にしておく。

## hostsの設定
hostsに固定したIPアドレスとドメインを追加する。  
hostsは`/private/etc/hosts`にある。
```
192.168.x.x   hogehoge.com
```

## squidのインストール
```
$brew install squid
```

## squidの設定
squidの設定の設定を行う。`/opt/homebrew/etc/squid.conf`を編集する。  
(`/usr/local/etc/squid.conf`にあるとの情報もありました。)
```
#
# Recommended minimum configuration:
#
visible_hostname コンピュータ名      #<---追加
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
acl localnet src fc00::/7       	# RFC 4193 local private network range
acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines
acl localnet src hogehoge.com     #<---追加

acl SSL_ports port 443
acl Safe_ports port 80		# http

<省略>

# For example, to allow access from your local networks, you may uncomment the
# following rule (and/or add rules that match your definition of "local"):
http_access allow localnet    #<---コメントアウトを外す

```
`visible_hostname`を追加してコンピュータ名を設定する。  
`acl localnet src hogehoge.com`を追加してプロキシがドメインを認識できるようにする。  
`http_access allow localnet`で設定を有効にする。

## squidの操作

### squidの起動
```
$brew services start squid
```

### squidの起動確認
startedになってればOK
```
$brew services list
squid started user ~/Library/LaunchAgents/homebrew.mxcl.squid.plist
```

### squidの停止
```
$brew services stop squid 
```

### squidの再起動
`squid.conf`を変更したときなど
```
$brew services restart squid
```

## squidのログ
ログは`/opt/homebrew/var/cache/squid/cache.log`に出力される。  
(`/var/log/squid/cache.log`にあるとの情報もありました。)

## 端末の設定
Wi-Fiの設定を開いて、プロキシの設定を手動にする。  
ホスト名をMacのIPアドレス、ポートを3128に設定する。  
ポート情報は`squid.conf`に書かれている。3128がデフォルト

## 確認
端末のブラウザを開いて`hogehoge.com`にアクセスできればOK
459. Repeated Substring Pattern

https://leetcode.com/problems/repeated-substring-pattern/

# アプローチ
- Brute-force


```java
class Solution {
    public boolean repeatedSubstringPattern(String s) {
        String str = s + s;
        String str1 = str.substring(1, str.length() - 1);
        return str1.contains(s);
    }
}
```

下記の記事を参考しました

https://leetcode.com/problems/repeated-substring-pattern/solutions/3938580/99-42-2-approaches-o-n/
AZ-900に合格しました！！

AZ-900に無事合格したので、勉強方法などをまとめます。
内容は、2023年8月時点になってます。少しでも、参考になれば幸いです。

## ●AZ-900とは
> AZ-900とは、マイクロソフト社が実施する認定資格試験の1つです。
> 本試験に合格すると、クラウドサービスの基礎知識と、
> Microsoft Azureの基礎知識があることが認定されます。
> クラウドベースのソリューションやサービスを使い始めた方や、
> Azure初心者向けの資格です。
>
> 出典：[Udemyメディア](https://udemy.benesse.co.jp/development/qualification/what-is-az900.html#:~:text=AZ-900%E3%81%A8%E3%81%AF%E3%80%81%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E7%A4%BE%E3%81%8C%E5%AE%9F%E6%96%BD%E3%81%99%E3%82%8B%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%81%AE1%E3%81%A4%E3%81%A7%E3%81%99%E3%80%82%20%E6%9C%AC%E8%A9%A6%E9%A8%93%E3%81%AB%E5%90%88%E6%A0%BC%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E3%81%A8%E3%80%81Microsoft,Azure%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E8%AA%8D%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%20%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%84%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%81%9F%E6%96%B9%E3%82%84%E3%80%81Azure%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91%E3%81%AE%E8%B3%87%E6%A0%BC%E3%81%A7%E3%81%99%E3%80%82)

## ●試験概要
* 試験時間：45分
* 問題数：35～40問前後
* 合格ライン：700点
* 受験料：13,750円（税込み）
* 受験場所：試験センター、またはオンライン（自宅）

## ●受験方法
以下のサイトを参考にしました。
* [【Azure/認定資格】Azure認定資格試験の申し込み方法](https://aireblog.com/how-to-apply-for-azure-exam/)


## ●勉強方法
1. 以下のサイトで勉強する
* [Azure入門者でも安心！合格を目指してAZ-900を無料で学び始めよう！](https://az-start.com/)

2. Udemyの問題を解く
* [最短で合格！Azure Fundamentals AZ-900 試験対策問題集](https://www.udemy.com/course/microsoft-azure-az900-exam/)

## ●まとめ
同じ会社の人たちがみんな一発合格で自分だけ落ちたらどうしよう…。
受験料も無駄になっちゃうと思うとなかなか寝れなくて
不安だらけの受験でしたが、無事に一発合格できて一安心です。
Udemyの問題を何度も解いてたらギリギリ7割は取れそうです…！！
高得点を取るならしっかり勉強した方がいいとは思います！
aws-lambda-power-tuningのS3payloadを利用する

## 背景
Lambda Power Tuningの設定には、`input` フィールドにテストケースを含めることができますが、制約としてテストケースのサイズは262144バイト以下である必要があります。そのため、base64エンコードされた画像データをそのまま含めることは難しいかもしれません。

この制約を回避するためには、input` フィールドに **payloadS3** というパラメータを利用します。

## 設定すべき項目
1.**Lambda Power Tuning**をデプロイする時、アプリケーションの **payloadS3Bucket** パラメータに **バケット名**(eg.your-bucket) を設定します。Lambda Power Tuning アプリケーションの設定には、S3 バケットの情報が含まれているはずです。もしこのパラメータが誤っている場合、アプリケーションは正しいバケットにアクセスできません。

2.ステートマシンのロールに、S3バケットにアクセスする権限を与えます。

3.`input` フィールドを設定します。
```
{
    "lambdaARN": "your-lambda-function-arn",
    "powerValues": [128, 256, 512, 1024],
    "num": 50,
    "payloadS3": "s3://your-bucket/your-object.json"
}
```

### 既にデプロイされたLambda Power TuningにpayloadS3を利用したい場合
既にデプロイされたLambda Power TuningのステートマシンのロールにS3バッケットアクセス権限を与えても、以下のエラーが表示される可能性があります。

```
Error: Permission denied when trying to read s3://lambda-tunning-test/payload.json. You might need to re-deploy the app with the correct payloadS3Bucket parameter.
```

その場合、`Lambda>アプリケーション>serverlessrepo-aws-lambda-power-tuning`
**デプロイメニュー**から、cloudformationスタックを開く、既存のテンプレートを利用するままで、**payloadS3Bucket** パラメータ項目を修正して、再デプロイを行います。
swap領域の追加方法

swap領域は、物理メモリが不足した際に一時的にデータを格納するための領域です。今回はLinuxシステムにおけるswap領域の作成方法を記載します。

<h3>1.swap領域の作成<h3>

最初に、新しいswap領域を作成します。以下のコマンドを実行してください。

```
# cat /proc/swaps
    ：現在のswap領域の状況を確認します。

# dd if=/dev/zero of=/path/to/swapfile bs=単位<1G or 1M 等> count=サイズ
    ：指定したサイズでSwap用のファイルを作成します。

# mkswap /path/to/swapfile
    ：作成したSwap用ファイルをswap領域として初期化します。
```


<h3>2.swap領域の有効化<h3>

作成したswap領域を有効化するには、次のコマンドを使用します。

```
# swapon /path/to/swapfile
```

<h3>3.作成したswap領域の確認<h3>

新しいswap領域が正しく設定されているか確認します。
```
# cat /proc/swaps 
```

<h3>4./etc/fstabにswap領域を追記する<h3>

自動的にマウントされるようにするには、/etc/fstabファイルにエントリを追記します。

```
# vi /etc/fstab
/path/to/swapfile  swap  swap  defaults  0  0
```

これにより、システムが起動するたびにswap領域が自動的に有効化されます。

以上、Linuxシステムにおけるswap領域の作成手順の紹介でした。
Microsoft Defender for Endpoint （要件：Windows2012R2）

https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/configure-server-endpoints?view=o365-worldwide#prerequisites
Windows Server 2012 R2 の前提条件
１．カスタマー エクスペリエンスと診断テレメトリの更新

https://www.microsoft.com/ja-jp/download/details.aspx?id=42334
https://www.microsoft.com/ja-jp/download/details.aspx?id=42153
https://www.microsoft.com/ja-jp/download/details.aspx?id=48637

KB2919442 1番目にインスト	
KB2919355  2番目にインスト	
KB3080149 3番目にインスト	

２．Windows での Universal C Runtime の更新

https://www.catalog.update.microsoft.com/Search.aspx?q=3118401

KB2919442 1番目にインスト	
KB2919355  2番目にインスト
KB3118401 3番目にインスト	


３．Windows Server 2012 R2 用のセキュリティ更新プログラム (KB3045999)

https://www.catalog.update.microsoft.com/Search.aspx?q=KB3045999

KB2919442 1番目にインスト	
KB2919355  2番目にインスト	
KB3045999 3番目にインスト
「第2章」初心者のJSP勉強記録！！！！！

Ⅰ．スクリプトレット
-------------------------------------------
一般的にJSPページでよく使えるスクリプトの要素で、プログラミングのロジックを記述する場合よく使える。

⋆　スクリプトレットで宣言した変数はJSPページがサブレートに変換される際にローカル変数として使われる。

【書き方】
```　
<%　
　　JAVAコード　
%>
```


--------------------------------------
![스크린샷 2023-08-21 135442 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532853/92569aa3-65a5-01a6-379b-a138fc60ccc9.png)
《これはただ文章に認識されます》
![스크린샷 2023-08-21 154746.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532853/6538a5cd-4bed-2e39-88ec-1ed069641a3a.png)
《このようにスクリプトレットの中にコードを作成するのが出来ます》




Ⅱ．宣言部
----------------------------------------

一般的JSPページでJAVAのメンバー変数、またはメンバーメソッドに使うと、よく使われるプログラミングのロジック技術。

⋆　宣言文の変数はサブレートに変換される時にメンバー変数に変換され、
宣言文でのメソッドはサブレートでメソッドに作られる。

【書き方】
```　
<%!
    JAVAコード
%>
```
------------------------------------
![스크린샷 2023-08-21 155658.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532853/38e6df04-d8fc-98f1-d351-0a47a2164e0d.png)
《これが宣言部》

Ⅲ．式
---------------------------------------

一般的にJSPページでJAVAのSystem.out.println()と類似して使われる。
（でーたを出力する時よく使われるプログラミングのロジック技術）

【書き方】
```　
<%=
    JAVAコード
%>
```

------------------------------------

![스크린샷 2023-08-21 160305.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532853/736e3084-b80c-edd7-5ce2-7653790507f6.png)

《これを起動すると》

![스크린샷 2023-08-21 160605.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3532853/94b6b363-14ac-5fd4-1396-d797642d8d4a.png)

《ウェブブラウザにaの値が表示されます》






------------------------------------
1人2役　Q&A
------------------------------------
:fist:　：　は～いっ！じゃースクリプトレットと宣言部は何が違いますか。


:relaxed:　：　
スクリプトレット　＝　ローカル変数
宣言部　＝　メンバー変数

まー普通に宣言部はよく使わないけど覚えるのがいいですよ！
[Vuetify] 文章中の改行文字を反映する(CSS) .text-pre-wrap class

## Problem

vue + vuetify 改行コードが含まれるvalueを表示するとき、CSSで自動で改行させたい。

## Solution

cssで"white-space:pre-wrap;"など書いても良いが、
vuetifyならすでにclassが用意されているので、これだけで良い。

```vue
<span class="text-pre-wrap" v-text="value"></span>
```

## 参考

https://github.com/vuetifyjs/vuetify/issues/11761

https://qiita.com/ryo511/items/3ab46d70edddb5f9335e
RECRUIT 日本橋ハーフマラソン 2023夏（AtCoder Heuristic Contest 022）265位 参加記

RECRUIT 日本橋ハーフマラソン 2023夏（AtCoder Heuristic Contest 022）265位でした. 初めに思いついた解法を3つ紹介し, その後何を考察したか時間経過ごとに長々と書きます. 
最後に黄perf以上取るために何がAHCに必要なのか考えました.

# 解法①
placementパート いい感じに設定します.
meassureパート
それぞれの入口iの周囲9マスに対し, それぞれ1回推定する. (m_P[i][0][0] ~ m_P[i][2][2])
入口i, 出口j とすると, sum[i][j] = pow(m_P[i][0][0] - P[Y[j] - 1][X[j] - 1], 2) + ... + pow(m_P[i][2][2] - P[Y[j] + 1][X[j] + 1], 2)を計算し,
sum[0][E[0]] + ... + sum[N-1][E[N-1]]が最小となるEを求める. (最小コストフロー問題に帰着できると思っています。(AtCoder Libraryのを使う))

# 解法②
placementパート 一点のみを1000にし, その他は0にする.
meassureパート
それぞれの出口jから1000までのdy, dxを保存する. (dy, dxのサイズはN)
入口iからdy, dxを推定していき, 1000となる確率が高いものを答えとする.

# 解法③
出口に8bitの2進数を設定します.この2進数は出口ごとに異なる.
n番目のフラグ(0<=n<=7)ごとにdy[n], dx[n]を設定する.
placementパート
出口jに1010000と設定すると, (Y[j] + dy[5], X[j] + dx[5])と(Y[j]+dy[7], X[i]+dx[7])のPをMax_P, その他はMin_Pとする. (Max_P, Min_Pは1000, 0などマップの最大値, 最小値).
meassureパート
すべての入口iはそれぞれのdy, dxをm_N回推定する. (m_Nは10000 / (N * 8)で12~20となる)
同じところをm_N回推定すると, その平均値の分布の標準偏差が S / sqrt(m_N) となりSが大きくても正解できるようになる.
m_N回推定後, そこがMin_PかMax_Pかを判定する. 出口にごとに異なる2進数を設定しているので, ここを正確に判定できると間違えは0になる.
ひどい解説なのでわからないところがあれば言ってください！

# 考察
・1,2日目
解法①を実装し結果を見るとS >= 400でボロボロだったので, 設定するPを0, 1000にする案を考え, 解法②が思いつきました.
・3日目
解法②を実装し結果を見ると, 推定回数がN * Nとなり0か1000を区別するのに, 1~2回しか推定できないため, (実装は10000回上限を忘れてた)不可能だと判断し, この解法を捨てました. 設定回数を削減しようと考え, 入口ごとにN回するのがダメそうななので, 8回(logN + 1)にすると, 0か1000を区別するのに, 12~20回推定できるため良さそう. こんな感じで解法③を思いついた.
・3~最終日
入口ごとにN回 → 8回が天才だと思いましたがダメでした. この解法はplacement_costが5 * 10^7とかになり, いくらwaが少なくても満点には届きません.
placement_costを少なくするため, 色々しましたが, placemnt_costを下げるとwaが多くなり, トレードオフだなと思い, 最終日までここに固執しました.
・終了後
1位の人などは解法②を採用してました. (https://twitter.com/Jiro_tech15/status/1693203060821225548)
僕のように解法③に固執していた人は同じような感想を持ってました. (https://twitter.com/through__TH__/status/1693206079679910082)

# 黄perf以上を狙うため何が大事か
まず長期(1~2週間)コンテストを振り返る
・AHC013 90位
 　・詳細な解法提案をせず, コンテスト中盤でパラメータを調整 (大まかな解法はあっている)
・AHC014 138位, AHC017 198位
 　・詳細な解法を思いつかなかった (大まかな解法はあっている)
・AHC016 102位, AHC018 153位
 　・詳細な解法提案に固執, 他の大まかな解法すら考えていない (大まかな解法が違う)
・ AHC022 265位
　・詳細な解法提案に固執, 他の大まかな解法を知識不足で捨てる (大まかな解法が違う)
上3つに, はまらないようにしましたが, 新しいパターンで失敗しました. AHC017と同じ流れかと思っていた.
それぞれの大まかな解法A, B, Cがあって, それぞれに詳細な解法a, ,b cが存在する.
Aaである程度のスコアをとれるとAb, Acを思いつくように時間を割く.
思い直してBaを考えるがダメそう. ここでBb, Bcを思いつくように時間を割くと今回では正解する. でも, 上から２つにはまるかもしれない.
今回の問題でいうと,
問題観察力 : Sが重要そう, score関数よりmeassure_costとplacement_costが重要そう, 入口iが独立している(?)など
解法提案力 : 上を意識して解法を考える.
とすると, プログラミング能力, 問題観察力, 解法提案力がある程度あれば青perfはとれそうですが, Bを捨てる判断や,正解のAb, Acが存在するなど何かしらの嗅覚(?)なのか, 経験値や知識なのか未だに何が必要なのかわかってないです.
解法②は最初からうまくいったのか, 途中からうまくいったのか, 解法③は思いついたけど捨てたのか, 捨てる理由は何なのか知りたいです.
また, 長期AHCは月1で開催してほしいです!!
今すぐにでも使いたいPower Appsのモダンコントロール（Spinner）

# はじめに
本日はPower Appsのモダンコントロールについて、ショート記事を！

https://powerapps.microsoft.com/en-us/blog/modern-controls-coming-to-canvas-apps/

**試験段階ですが、今すぐにでも使いたい良い機能を抜粋してご紹介！！**

# モダンコントロールについて
https://fluent2.microsoft.design/

Microsoftのユーザー体験を強化するデザインとのこと！
頻繁に更新されている機能です。

徐々に設定できる項目が増えている印象です。

## 現在の私の環境

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/077d00f1-7246-d1a2-729f-2264c1063ab7.png)


まずは環境を確認しましょう。
1. 設定
1. サポート

こちらから現在のバージョンが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/bb6db8b8-fd07-2f4e-25c1-6c8e6630ee43.png)

ここから **「モダン コントロールとモダン テーマ」をオン** にすると使えるようになるわけです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/96694ca8-5813-f532-c4a5-72f627d9e7d5.png)

👆モダンコントロールが追加されました！！

# 個人的に嬉しいのはSpinner!!
現在は**試験段階**ですので、全ての機能が今までのコントロールと同様に、多くの設定がサポートされているわけではありません。

これからが楽しみ!!な機能ですが、今すぐにでも使いたい**Spinner** を推してまいります！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/6b448956-11ae-a42e-9870-489be264f3f8.png)

**進行状況バー** もクールな機能ですが、先に**Spinner**を！

GIF画像でお見せすると
![gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/dbaa1a10-612c-61b3-bcb1-4b005c9435c6.gif)

このようなアプリの動作状況がわかるものです。
いや～欲しかったですね。自前で作る必要がありましたが、
**これからはこのコントロールでまかなえそう！**

# デモっぽいものをやってみます。
アプリが今どうなっているのか、ユーザーが理解できるということはとても大切です。

具体例作って見てみましょう！

処理中は**赤線**のボタンが出るアプリを作って見ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/f8a0478d-1513-e8d6-b695-db901cedc512.png)

`Spinner`の`Visible`をコンテキスト変数で`_visible`としておきましょう。

時間がかかりそうな処理をButtonのOnSelectに仕込みます。

```yaml:OnSelect
UpdateContext({_visible:true});
UpdateContext({_result:なんか長い処理.Run().result});
UpdateContext({_visible:false});
```

**なんか長い処理の概要**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/0bc7e04f-b520-7ff0-86da-d305d5e7de78.png)

### Spinnerで処理状態を可視化👀✨

![gif2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/03eb5a1e-b1f9-ca82-2b16-ed511e739b8c.gif)

処理状態が良い具合に可視化されていますね！
これは**即採用**！

# もっと詳しい説明は！
[益森 貴士さん](https://qiita.com/Takashi_Masumori)は、Power Appsに関する有益な記事を沢山書いてくださっていて、モダンコントロールの詳しい説明も既に載せてくださっています！

https://qiita.com/Takashi_Masumori/items/ae700eeb59ee54ca6bbc

Power Apps Loverは要チェックです👀✨
Oracle Analytics Cloud：現在年でフィルタ設定する

はじめに	
---	
検索条件を固定で入れる場合は、条件値を選択します。	
では、今年や今月とか条件値をワークブックを実行するときにあわせて変更したいといった場合についてみてみましょう	
今回はYEAR、CURRENT_DATEという関数を利用してみます	
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/ebfe79ab-5615-431b-b026-b460e5ae49c3.png)

YEAR、CURRENT_DATEという関数を利用し「今年(2023)」を表示しています	
ワークブックを開く（実行する）と、実行した日を基準に、現在年でフィルタ設定がなされます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/f8cb46cb-7bbd-b172-6591-7118ba37341f.png)

記事記載時のOAC ver：Jul 2023 Update	
	
ワークブックを開く	
---	
2021、2022、2023年の受注実績が表示されているワークブックを利用します	
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/2bfc6995-4e9b-181f-16c2-ba427864cc44.png)

上部フィルタペインの「フィルタの追加」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/fa97090f-4d7e-6048-b16f-ba520ea73f59.png)

「式フィルタの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/ff2dacec-6b9f-488e-2f5b-d1b5a3f41b2d.png)

左部のデータセットで、「年数」をドラッグして、式フィルタの式のところにドロップします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/90f25d62-871a-58a7-aea1-8bfa581537f8.png)

式フィルタの右上部にある「f(x) 使用可能な関数の表示」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/457c224b-302d-a604-008d-5cfd66e85cb8.png)

演算子の▲をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/b3ba02fb-3684-02c6-babb-e4ab7585273d.png)

「＝」をダブルクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/9a7b25f7-b68c-b008-5fe8-074d57b8cb51.png)

年数の右に「＝」が追加されます
カレンダ/日付の▲をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/6402f9b8-d727-bd85-5171-27da6a145879.png)

カレンダ/日付関連の関数が表示されます。スクロールダウンし、「Year」関数をダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/15ede24d-e70b-9e24-0f38-0c3424d406b0.png)

YEAR関数が式に追加されます。ディメンションと表示されているところに、CURRENT_DATE関数を追加します。CURRENT_DATE関数とは現在の日付をセットします。
カレンダ/日付関連の関数のところをスクロールアップします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/b7eb4c61-4e59-b0aa-8823-4cf08d4c4bf7.png)

カレンダ/日付の一番上にあるCurrent_Dateをドラッグして、ディメンションの上にドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/2960d47d-278d-1567-5c03-d82affa70f82.png)

式に、「年数=YEAR(CURRENT_DATE)」と表示されていることを確認します。※関数のリストを使わずに直接、入力することも可能です。
下部の「検証」をクリックします。エラーがないことを確認して、「適用」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/0d221be8-beaf-16f3-7fb9-32a4ebd3e155.png)

CURRENT_DATE、YEAR関数を使った式フィルタで、「今年(2023)」の条件でワークブックが実行されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516153/d58a9115-98da-8edb-fee3-fff991e4da24.png)

関数のリファレンス
---
関数の説明は、以下のURLにて公開されています。
[Oracle Analytics Cloudでのデータの可視化とレポートの作成 
 第４部 32.式エディタのリファレンス
 関数](https://docs.oracle.com/cd/E83857_01/paas/analytics-cloud/acubi/functions.html)

以上
スッキリわかるJava入門 第３版を読んでみて- part12 -多態性

# はじめに
こんにちは(・ω・）ﾉ
今回は多態性について学びました！
## 第１２章　多態性
### 1.多態性とは
__多態性__ ...オブジェクト指向プログラミングの３大機能の１つ

:sparkles: 多態性のあいまいなイメージ
「あるものをあえてザックリ捉える」ことで様々なメリットを享受しようという機能

ザックリ捉えるメリット
日常でも...
救急車、タクシー、バスなどいろいろな車種があるがザックリいうと”車”である

車に限らず、人間は世の中にある複雑なものをザックリ捉えることで
厳密には違うものを「似たようなもの」としてうまく利用している

このような「現実世界でラクするためにザックリ捉える方法」をプログラムでも実現する機能
⇨多態性である

### 2.ザックリ捉える方法
多態性に専用の文法はない
⇨「代入の文法」を使うことでザックリ捉えることができる

例としてSuperHeroクラスを用いる
SuperHeroクラスには親としてHeroクラスさらにその親にCharacterクラスを持っている

通常SuperHeroのインスタンスを生成して利用する
` SuperHero h = new SuperHero(); `

SuperHeroを「ザックリCharacterとして捉える」
` Character c = new SuperHero(); `
このように左辺と右辺の型を変えることも可能
以後このcを利用すると本当はSuperHeroでもあくまでもCharacterとして捉えて利用する

多態性を活用するためには「箱の型」と「中身の型」という２つの型が関係してくる
インスタンスをどのように捉えるかはどの型の変数に代入するかで決まる

##### できる代入とできない代入
newするときに左辺と右辺は同じ型でなくてもいい
ただ許されない代入もある
わかりやすい判別方法...絵に書いてみて嘘にならないインスタンスの代入は許される

##### 継承のもう１つの役割
絵に嘘が含まれるかの判断には「〜は〜の一種である」という前提知識が必要
人間には「犬が生き物の一種である」「剣は武器の一種である」ということを知っている
Javaには「何が何の一種であるか」ということを知らない
⇨継承によって「is-aの関係」をJavaに知らせるという役割も担っている

:sparkles: 抽象クラスやインタフェースの型
抽象クラスやインタフェースからインスタンスを生み出すことはできないが、
それらの型を利用することは可能

### 3.ザックリ捉えたものに命令を送る
ザックリと捉えることで利用にどのような違いが生まれるか
⇨あいまいで抽象的なほど用途は限定され、具体的に捉えるほど用途は増える

:sparkles: あいまいな型の箱へのインスタンスの代入
インスタンスをあいまいに捉えることとなり、
「厳密には何型のインスタンスだったか」がわからなくなる

:sparkles: 「箱の型」と「中身の型」
箱の型...どのメソッドを「呼べるか」を決定する
中身の型...メソッドが呼ばれたら「どう動くか」を決定する

### 4.　捉え方を変更する方法
ザックリと捉えることをした後に捉え方を変更する
⇨エラーになる
なぜか？
Character型の中身にはgirlやHeroなどがある場合
失敗する可能性があるとコンパイラが判断してエラーにする

キャスト演算子で強制的に変換できる
```
Character c = new Wizard();
Wizard w = (Wizard)c;
```
「あいまいな型に入っている中身を厳密な型に代入する」...ダウンキャスト

キャストの失敗時...ClassCastException
キャストによる強制代入の結果「嘘の構図」になったため強制停止せざるを得ないというエラー

インスタンスを代入可能かチェックする...instanceof演算子
:pencil2: 安全にキャストできるかを判定する
`変数 instanceof 型名`

### 5.多態性のメリット
多態性の真価は次の２つを組み合わせたときに発揮される
1.ザックリ捉えてまとめて扱う
2.メソッドの動作は中身の型に従う
↑何ができるか
呼び出し側は相手を同一視し、同じように呼び出す
呼び出される側は、きちんと自分に決められた動きをする

同じ呼び出し方なのに、多数の異なる状態を生み出すことがあるという特性...多態性の由来

## まとめ
is-aの関係ならインスタンスを親クラス型の変数に変えることができる
⇨まとめて扱うことができる
どのメソッドを利用できるかは箱の型（対象をどう捉えているか）で決まる
メソッドがどう動くかは、中身の型（対象が何であるか）で決まる
同一視して取り扱っても、個々のインスタンスは各クラスにおける定義に従い、異なる動作を行う

今回もありがとうございました！
ではまた〜　＊˙︶˙＊)ﾉ"
model作成時にrails db:migrateを実行しようとしたらundefined method `stiring'とエラーが出たのでその解決に至るまでをアウトプットする

## やりたかったこと
アプリケーションを作成するにあたり、userの情報を格納するためのusersテーブルが必要になったので以下のようにコマンドを打ち込んでmodelとマイグレーションファイルとRSpec用のモデルスペックファイルとFactory Bot用のファクトリファイル作成しようとした。
```
rails g model User name:stiring email:string password_digest:string
```
その後、DBに反映させるために`rails db:migrate`を実行したら以下のようなエラーが出た
```
StandardError: An error has occurred, this and all later migrations canceled:
undefined method `stiring' エラー文が続く...
```

## 解決までの道のり
#### 1.エラー文の解読
上記のエラー文をよく見てみると、自分のタイピングミスでstiringなんてメソッド（今回の場合は、データ型）は存在しないよとおこられた。

#### 2.migrationのステータスの確認とファイルの削除
そのマイグレーションファイルを削除するためにまずは、downになっていることを確認しようと思ってrails db:migrate:statusでマイグレーションファイルの状況を確認すると以下のようになっていた
```
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20230815080323  Create tasks
   up     20230817012833  Add expiry date to tasks
   up     20230817014502  Remove expiry date from tasks
   up     20230817023012  Add expired at to tasks
   up     20230817062638  Add status to tasks
   up     20230819041152  Add priority to tasks
   up     20230819144335  Add index tasksnot started yet
   up     20230819144533  Remove not started yet to tasks
   up     20230819144709  Add index tasks not started yet
  down    20230821015454  Create users
```

まだ、rails db:migrate実行前なのでdownになっていた。<font color = red>本来なら、ファイルがdown状態の時はマイグレーションファイルに直接書き込み、stiringをstringに訂正して、再度`rails db:migrate`を実行すればよかった</font>のだが、自分がマイグレーションファイルの理解があまりできていなかったので、失敗したらファイルがdownになっているのを確認してからrmコマンドでファイルを消た。

### 再度rails g model とrails db:migrateを実行
stringに綴りのところに気をつけながら、再度、`rails g model User name:string email:string password_digest:string`を実行し、その後、rails db:migrateを実行すると以下のようにschemaに無事に反映された。
```
  create_table "users", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.string "password_digest"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end
```

### まとめ
・マイグレーションファイルがdown状態の時は、直接、マイグレーションファイルに書き込んで変更しても良い。
・マイグレーションファイルをupからdownにする方法は以下の通り
1.`rails db:migrate:status`で状況の確認及びdownさせたいマイグレーションファイルのidを取得する
2.`rails db:migrate:down VERSION=downさせたいマイグレーションファイルのid番号`でdownさせる
3.訂正が終わったら、`railｓ :db:migrate`でupさせ、schemaファイルに反映されているかを確認する


#### 3.おまけconflictとforceについて
`rails g model User name:string email:string password_digest:string`を再度実行した時にターミナルには以下のように表示された![スクリーンショット 2023-08-21 13.24.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125392/ce21da43-3c1c-a737-9d2b-fdf965b1e582.png)
この時に赤文字で表示された赤文字の`conflict`と黄色文字の`force`が気になったので調べてみた結果を以下のようにまとめてみた。
`conflict`:前にタイピングミスで`rails g model`実行時に生成されたRSpec用のモデルスペックファイルとFactory Bot用のファクトリファイルがすでに存在しており、今回正しい表記で`rails g model`をした際に作られたRSpec用のモデルスペックファイルとFactory Bot用のファクトリファイルが再度生成され、それぞれが競合（conflict）が発生しています。という意味での赤文字での警告だった
その下にあるOverwriteのところで上書きしますか？みたいな表記でenterを押した
`force`:enterを押したことで強制的に後者で作られたRSpec用のモデルスペックファイルとFactory Bot用のファクトリファイルの内容に上書きしたという意味。
【自分用メモ】Linuxのコンソール操作でよく使うコマンド

主に Ubuntu 20.04 上で確認しています。

# ディストリビューション、バージョンの確認
```
lsb_release -a
```
参考：[Ubuntu／lsb_releaseコマンドでバージョン確認・インストール方法・オプション](https://studyinfra.net/lsb_release/#Ubuntu%EF%BC%8Flsb_release%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D)

# ディレクトリ削除
```
rm -rf ディレクトリ名
```
* ディレクトリとその中を、すべて削除
* 削除時の確認メッセージは表示しない。

参考：https://www.itmedia.co.jp/help/tips/linux/l0027.html


# パーミッション設定
```
chmod 777 ディレクトリ名
```
* ディレクトリとその配下のパーミッションを、全ユーザーに全権限を付与する

参考：https://qiita.com/shisama/items/5f4c4fa768642aad9e06


# ディレクトリのコピー
```
cp -r コピーしたいディレクトリ名 コピー後のディレクトリ名
```
* ディレクトリごとコピーする
* ディレクトリの中のファイルもコピーの対象となる

参考：https://eng-entrance.com/linux_command_cp#-r


# Linuxの時刻を確認したい
```
date
```
* Linux OS 上での日時とタイムゾーンを表示する

参考：[【Linux】時刻設定をする方法を解説](https://engineer-ninaritai.com/linux-date/#Linux)
Dataverseにデータをインポートするためのテンプレートの取得方法

**データインポートテンプレートとは**
---
Dataverseにデータをインポートする際に、エラーが発生しないようにデータ検証をする方法をご存じですか？データインポートテンプレートは、Dataverse環境にあるテーブルと同じデータ型で定義された空のテーブルを用意してくれる標準機能です。データ型が異なる値をセルに入力するとエラーが表示されるテンプレートをxlsx形式でダウンロードできます。
![スクリーンショット 2023-08-21 13.46.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/bc598785-07d8-10c4-657b-102fbd4850ca.png)

**テンプレートのダウンロード方法**
---
１. [Power Platform管理センター](https://admin.powerplatform.microsoft.com)を開き「環境」を押下する。
![スクリーンショット 2023-08-21 13.55.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/73bcb5f7-7e81-df61-acdb-a6e7bbe0693d.png)

２. 環境を選択する。
![スクリーンショット 2023-08-21 14.04.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/6ad15d19-748b-a6c5-d738-856ae1edcad0.png)

３.「設定」を押下する。
![スクリーンショット 2023-08-21 14.08.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/2c31c13c-423a-04c7-eaef-a878ab09ff55.png)

４. テンプレート配下の「データインポートテンプレート」を押下する。
![スクリーンショット 2023-08-21 14.12.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/f2c70441-96f7-afd4-a57c-bba3beffd437.png)

５. テンプレートを取得したいテーブルをドロップダウンで選択肢、「Download」ボタンを押下する。
![スクリーンショット 2023-08-21 14.16.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/ba5bfe5f-1f19-6395-9201-49ff08720880.png)

６. ダウンロードしたテンプレートを確認する。
![スクリーンショット 2023-08-24 10.35.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/476cbe37-a538-9e47-01a8-10ea27f8555d.png)

セルを選択すると、入力できるデータ型が表示されます。
定義されているデータ型と異なるものを入力するとエラーが表示されます。
これにより、データをDataverseにインポートする際にデータ型が異なるリスクを減らすことができます。
![スクリーンショット 2023-08-24 10.41.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533137/ee58cb2b-c580-6cdd-2729-82a21530e017.png)



**まとめ**
---
今回は、データインポートテンプレートのダウンロード方法をご紹介しました。
Dataverseにデータを投入する際に「データインポートテンプレート」を使用することで、エラーが発生しないようデータ検証できることを覚えておきましょう。
Qiita CLI どう？


なるほど、これは面白いかもしれない。
自分のエディタで記事投稿ができる、ってことで案内が来ていたので試してみました。
Qiita CLI。

https://github.com/increments/qiita-cli?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=1168971a55-EMAIL_CAMPAIGN_2023_08_16_08_45&utm_medium=email&utm_term=0_-1168971a55-%5BLIST_EMAIL_ID%5D


まあ、そもそもQiitaってどうなの？って話もあり。
技術ブログやるならやっぱり自前のサーバーでワードプレスでやんなきゃだめよ、みたいな話もあり。
Qiitaでなんかいいことあるのかなあってのはあるんだけどね。

これはいいね。
【CMake】GraphVizオプションを使用し、ターゲットの依存関係を可視化する

# 概要
CMakeではGraphVizファイルを生成するオプションがあり、これを利用するとターゲットの依存関係を可視化したグラフを自動で生成することができる。

https://cmake.org/cmake/help/latest/module/CMakeGraphVizOptions.html

GraphVizオプションの使い方を簡単にまとめる。

# 使用方法
上記リンクに記載されている通り、 `CMake Configure` 実行時にオプションを付与すればよい。

以下の実行例は最も簡単なIn-Souceビルドのコマンドオプションに、GraphVizオプションを付与したもの。
以下のコマンドを `CMakeLists.txt` が存在するプロジェクトディレクトリで実行すると、 `./build/dot` ディレクトリと、その直下にdotファイルが（ターゲットの数に比例して大量に）生成される。
```bash:実行例
cmake -S . -B build --graphviz=build/dot/graph.dot
# -S: <path-to-source-directory>
# -B: <path-to-build-directory>
# --graphviz: <path-to-graphviz-directory>
# オプションは例であるため、変更可能。
```

※Windowsの場合、「pthreadライブラリが見つからない」といった旨のエラーが発生する場合がある。その場合はvcpkgなどを用いてライブラリをCMakeオプションに追加する必要がある。

生成されたdotファイルは、以下のようにdotコマンドで画像やPDF形式に変換できる。（以下はPDFの例）
```bash:dotファイルをPDF形式に変換
dot -Kdot build/dot/graph.dot -Tpdf -o build/dot/graph.pdf
# -K: <layout-engine>
# -T: <output-format>
# -o: <output-file>
```
php7　バージョンアップに伴う変更箇所


# eregi_replace　→　preg_replace


# split →　explode



# 配列は初期化
Uncaught Error: [] operator not supported for strings

```php
$arr = "";
$arr[] = $arr ;
```
↓OK
```php
$arr = array();
$arr[] = $str;
```


# 関数に渡す引数が少ないとエラーが出る
エラー内容
Uncaught ArgumentCountError: Too few arguments to function test()



https://www.php.net/manual/ja/migration71.incompatible.php
> これまでのバージョンでは、ユーザー定義の関数に渡す引数が足りない場合は warning が発生していました。PHP 7.1 以降では、warning ではなく Error 例外が発生するようになります。 この変更はユーザー定義の関数に対してだけのもので、 内部関数には影響を及ぼしません。

→　引数が足りない箇所を変更する。


# qdmail.php
https://gist.github.com/YukiYamashina/2c53e0c43bf035ffc8d2bf0dcfbf7b29#file-qdmail-php
スマートフォンからの操作を意識したレイアウトで ElixirDesktop Androidアプリを作ってみました

# 1. イントロダクション
当記事は[LiveViewJP#20：【特別記念回】モダンなデザインをLiveViewと一緒に学ぼう](https://liveviewjp.connpass.com/event/289000/)というイベントに向けて作成しました。記事の内容は、ElixirDesktop使用してUI/UXを意識して制作したAndroidアプリについてです。ElixirDesktopを使用することでWebアプリケーションを制作しているような感覚でアプリが作成できます。

リポジトリです
https://github.com/BlackTanuTanuNinjas1035/algokit

# 2. UI/UXについて
## UI
UI(ユーザーインタフェース)とは、ユーザーとサービスやシステムとの接点です。スマートフォンアプリであれば、ユーザーが触れることで操作できるもの(ボタンなど)やアプリの外観がUIです。
## UX
UX(ユーザーエクスペリエンス)とは、サービスやシステムを利用することでユーザーが得る体験です。システムの使い心地やレイアウトの印象などの利用経験がUXとして捉えられます。

つまりUXを向上させるためには、システムの開発者がユーザーの視点になってストレスなく操作性の美しいUIデザインを行うことが重要です。
# 3. アプリについて
私が制作したアプリは「**Algokit**」といいます。
**Elixlir**という言語の**elixir-desktop**というライブラリを使い制作しました。Algokitにはゲーム制作に活用できるアルゴリズムがまとめてあります。ユーザはゲームに実装したい処理に関わるアルゴリズムを検索することで、疑似コードや使用例を見ることができます。アプリには以下の特徴があります。
* アルゴリズムの検索機能
    * カテゴリーごとにまとめられたアルゴリズムを検索し、説明と用途、疑似コード、実際にゲームに組み込んだときの動作を確認することができます。またブックマーク機能や直近に見たアルゴリズムへのリンクの機能があり、迅速に情報を見ることができます。機能を追加しながら都度実機で動作させるテストを行うことで、ユーザーの視点から必要な機能を洗い出しました。
* テーマに沿ったデザイン
    * Algokitはメモ帳やノートをテーマにしたデザインを取り入れております。アプリの背景は方眼紙を思わせるデザインにしており、見出しやオーバーレイは色ペンや付箋のような見た目にしております。これらにより学生のノート感を演出しています。
    * かわいらしいたぬきのアイコンがアクセントとなっています。機能だけでなく見ていて飽きない要素を追加することで、ユーザが楽しみながらアプリを利用できるようにしました。  


# 4. 制作過程と画面デサインの変化
アプリの制作過程では、初めてのAndroidアプリケーションの制作となり、スマートフォンに使いやすい画面レイアウトを作成することが求められました。自分以外のユーザーが使用することを意識したことが今までありませんでしたが、UXの向上のため以下のポイントに注力しました。

## ユーザーの操作の最適化
アプリの制作において、私は最初に処理の実装を行い、その後画面レイアウトを行うという開発手順をとりました。その際にユーザーがどのように操作することで機能を利用するかという点に注意が向いていなかったとこを認識しました。
当初、スマートフォンアプリの開発において、画面の高さは固定されるべきという固定観念がありました。そのためUIにおいてやや遠回りな操作をユーザーに要求する問題が発生して押しました。ですが、実際の使用や開発に協力して頂いた知りあいの方のフィードバック通じて、新たなアプローチを見つけることとなりました。
## レスポンシブデザイン
スマートフォンには様々なサイズは存在するため、画面サイズによって調整を行うことが求められました。しかし、この調整過程を通じて、ユーザーの操作に最適な画面デザインを発見し、アクセシビリティを向上させることができました。

以下に、制作過程でのデザインの変遷を示すため、UXを考慮する前のレイアウトと改善後のレイアウトのスクリーンショットを用意しました。
改善前
![変更前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3455723/ad2b1f85-1b75-cef5-e269-e0d125b89fd0.png)
改善後
![変更後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3455723/7cece1aa-217d-c030-0990-1097c044869c.png)


# 5. 操作デモ
こちらが基本的な操作のデモとなります。
1. アルゴリズムを見る
![基本.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3455723/e65db81e-b9ee-f33c-6c26-56979d0647db.gif)
2. ブックマークやソート、検索の機能です。
![検索機能.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3455723/2c3ff6ba-03e6-b957-acc9-d8e886b9bbf7.gif)


# 6. 展望
現在このアプリに入力されたデータは少なく、一部を除いて殆どが表示を確認するためのサンプルデータです。実際のデータを大量に用意し、アプリ本来の用途を満たせるようにしたいと思っております。
# 7. 結論
自分の勉強不足な点もあり、Elixirやelixir-desktop、Javascriptライブラリの機能を100%有効に使うことができませんでした。アプリ制作で得た知識やまだ知ることのできなかった機能を利用して、これからの開発をより良いものにしていきたいと思います。

### elixir-desktopについて
elixir-desktopはデスクトップ用GUIツールやiOS、Android用のスマートフォン向けアプリを作ることができます。またPhoenix、LiveViewを使っておりますので、画面のレイアウトにCSS(デフォルトでTailwindですが)を使えます。
SQL Insertクエリ

項目数が多いときダラダラSQL構文を記述する必要があるので
それを簡潔にするためのものです。
WPF、WinForms .NET FRAMEWORK

<B>あくまでサンプルです。例外処理などはご自身でお願いします。</B>

```c#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Data.OleDb;

namespace WPF_INSERT {

    public partial class MainWindow : Window {

        public MainWindow() {
            InitializeComponent();

            String ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DB\TEST.ACCDB";
            OleDbConnection conn;
            OleDbConnection connection = new OleDbConnection(ConnectionString);
            connection.Open();
            
            InsertSQL(connection);
        }

        private void InsertSQL(OleDbConnection connection){

            // new List<string>() に変えたり。
            string[] ax = new string[100];
            int c = 0;

            // DBの項目順番通りに記述
            ax[c++] = "A1";
            ax[c++] = "A2";
            ax[c++] = "A3";
                 
            string re = "";
            string rx = "";
      
            for (int v = 0; v < c; v++) {
                re = re + ax[v] + ",";
                rx = rx + "@" + ax[v] + ",";
            }

            // 最後の余計な , 取る
            string s1 = re.Substring(0, re.Length - 1); 
            string s2 = rx.Substring(0, rx.Length - 1);

            string sqlstr = "INSERT INTO T_1 (" + s1 + ") VALUES (" + s2 + ")";
          
            try {
                OleDbCommand command = new OleDbCommand(sqlstr, connection);
                List<OleDbParameter> sqlParameters = new List<OleDbParameter>();

                // ここも順番通りに記述
                sqlParameters.AddSqlParameter(new OleDbParameter("@" + ax[c++], OleDbType.VarChar)).Value = "A1";
                sqlParameters.AddSqlParameter(new OleDbParameter("@" + ax[c++], OleDbType.VarChar)).Value = "A2";
                sqlParameters.AddSqlParameter(new OleDbParameter("@" + ax[c++], OleDbType.VarChar)).Value = "A3";

                command.Parameters.AddParams(sqlParameters);
                command.ExecuteNonQuery();
                connection.Close();
                
            }
            catch (Exception e) {
                MessageBox.Show ("エラー" + e.ToString());    
            }
        }
    }

    // http://www.curict.com/item/cd/cdae4c2.html 参考URL
    public static class SqlParameterExtension {
        public static OleDbParameter AddSqlParameter(this List<OleDbParameter> list, OleDbParameter parameter) {
            list.Add(parameter);
            return parameter;
        }

        public static void AddParams(this OleDbParameterCollection collection, List<OleDbParameter> list) {
            foreach (OleDbParameter parameter in list) {
                collection.Add(parameter);
            }
        }
    }
}

```
Nx バージョン 0.6.0 の破壊的変更

## はじめに

Nx は Elixir で行列演算をするためのモジュールです

https://github.com/elixir-nx/nx

2023/8/15 にバージョン 0.6.0 がリリースされました

https://github.com/elixir-nx/nx/blob/main/nx/CHANGELOG.md#v060-2023-08-15

このバージョンでの破壊的変更について説明します

## 変更内容

公式の CHANGELOG から引用します

> Deprecations
> - [Nx.Serving] The post-processing function must now be a two-arity function that receives the {output, metadata} as a pair or the stream
>
> Breaking changes
> - [Nx.Serving] The nx.serving.postprocessing telemetry event no longer receives the serving output or serving metadata as event metadata

影響を受けるのは `Nx.Serving.client_postprocessing` の後処理関数の引数です

- v0.5.3: `(Nx.Container.t(), metadata(), client_info() -> term())`
- v0.6.0: `({Nx.Container.t(), metadata()}, client_info() -> term())`

今まで３つの引数だったものが、2つの引数に変わります

Nx.Serving の後処理を使っていない場合は影響を受けません

## 必要な修正

具体的には以下のような修正を行います

```diff_elixir
serving =
  fn opts -> Nx.Defn.jit(&Nx.multiply(&1, 2), opts) end
  |> Nx.Serving.new(compiler: EXLA)
  |> Nx.Serving.client_preprocessing(fn input ->
    # 前処理
    {Nx.Batch.stack([input]), :client_info}
  end)
- |> Nx.Serving.client_postprocessing(fn output, _metadata, _client_info ->
+ |> Nx.Serving.client_postprocessing(fn {output, _metadata}, _client_info ->
    # 後処理
    Nx.squeeze(output, axes: [0])
  end)
  |> Nx.Serving.distributed_postprocessing(fn output ->
    # 分散している場合の後処理
    Nx.backend_transfer(output, Nx.BinaryBackend)
  end)
```

単純に　`output, _metadata` を `{}` で囲うだけです

## まとめ

定期的に以下のリポジトリーを更新しているのですが、軽微で単純な変更だったので、修正も簡単でした

https://github.com/RyoWakabayashi/elixir-learning
メッセージレスポンスを作成するメソッドについて

ここの、メッセージを呼びだすの部分をよく読む！！
https://github.com/Soba-Noodles/sakura/wiki/messages.properties%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E5%87%A6%E7%90%86%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6


//Objectは、object型を指す。（メッセージにStringがくるか、Intがくるかわからないから）
...は、引数が複数入ったり、1つの場合があるから。
argsは引数のこと。　プレースホルダ。
動的に文字列が入ること。
private MessageResponse createErrorMessage(String errorCode, Object... args) {
        String message = messageSource.messageSource().getMessage(errorCode, args, Locale.JAPAN);
        return new MessageResponse(errorCode, message);
    }
マイナンバーカードを健康保険証に

:::note
この記事から発展した、実際の資格認証の設定をしてみた記事はこちら

「マイナンバーカードでの資格認証にチャレンジ!」
https://qiita.com/nanbuwks/items/e100ea418d58697aa881

:::

# マイナンバーカードを健康保険証に


制度としては「オンライン資格確認」というらしい。
令和5年4月からオンライン資格確認が原則義務化！・・・とのことだったが、各所でとてもとても対応できない感じで令和5年9月末までになった。大変だなー。


# オンライン資格確認とは

「資格」情報とは、被保険者証の情報らしい。
マイナンバーカードの情報を使い、支払基金・国保中央会にオンラインでアクセスして資格情報を取得するらしい。
オンライン資格確認に関連して「オンライン請求」もあるけれども、今回はオンライン資格確認のみ。


## 何が違うの?

病院側での処理

### 今まで

- 受付で紙の保険証を預かる
- 新規患者の場合は病院の患者管理システムに入力
- 既存患者の場合は病院の患者管理システムから患者情報を検索して特定
- 紙の保険証を返却

### オンライン資格確認を使った場合

- 受付でカードリーダーに患者自身がマイナンバーカードをセット
- 患者情報を取得
- 病院の患者管理システムに伝達、患者情報を連携


患者情報とは、


- 資格情報
- 診療・薬剤情報・特定検診情報(本人同意)
- 限度額・特定疾病情報(本人同意)
- 処方箋情報(薬局のみ)
- その他個人情報




# 認証処理

専用カードリーダーにマイナンバーカードを置いて、暗証番号または顔認証する。


## 顔認証とは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/073ef6da-40c4-86c5-289c-fbfe35ea2012.png)

このようなカメラ・スキャナー付きカードリーダを使用して、以下を照合するらしい。

- 撮影した顔
- カード格納された顔写真
- カードの券面をスキャン

このカードの券面のスキャンというのは、生年月日6桁、有効期限の西暦4桁、セキュリティコード4桁のスキャンらしい。



# マイナンバーカードの規格

- 接触・非接触両用カード
- 接触通信規格は ISO/IEC 7816
- 非接触の通信規格は ISO/IEC 14443 TypeB
  - ちなみに FeliCa は ISO/IEC 18092

# 回線

オンライン資格確認等システムのサーバーとつなぐための回線。
使用できる回線はかなり限定されている。

https://www.ssk.or.jp/seikyushiharai/online/online_04.files/claimsys35.pdf

ここに乗っているものだけ。

ISDNや、地域限定を除外すると、IP-VPN を使って閉域接続するか、IPsec + IKE サービスを使ってインターネット経由で接続するかになる。



## IP-VPN方式

- NTT東日本・西日本のフレッツ接続

 光ネクスト、フレッツ 光クロスなど。条件がかなり狭いので要確認


## IPsec + IKE サービス方式

インターネット経由できるけれども、以下のサービスの契約が必要。

- 株式会社NTTPCコミュニケーションズ IP-Members
- 株式会社ＮＴＴデータ中国 @OnDemand接続サービス
- 富士通株式会社 FENICSⅡ ユニバーサルコネクトアドバンス メディカルVPN接続サービス
- 三菱電機インフォメーション セキュアネットワークサービスSecureMinder オンライン資格確認




# 参考資料

「オンライン資格確認について」
https://honesty-inc.co.jp/image/online/orca/3_20200914.pdf


「顔認証付きカードリーダーの概要」
https://www.iryohokenjyoho-portalsite.jp/application/docs/3e5b26881c8e298cddf083ec047b9625_2.pdf

「資格確認端末において満たすべき要件」
https://www.mhlw.go.jp/content/10200000/000623527.pdf

医療機関等向けポータルサイト ホームページ
https://www.iryohokenjyoho-portalsite.jp/

医療機関などons
https://vendorons.service-now.com/


医療機関・薬局で端末の設定をするには（セットアップ手順書）
https://www.iryohokenjyoho-portalsite.jp/download/post-12.html#sousa_01

オンライン請求及びオンライン資格確認等システム接続可能回線・事業者一覧表
https://www.ssk.or.jp/seikyushiharai/online/online_04.files/claimsys35.pdf
投稿不慣れで申し訳なくソウロウ


　　　この前は写真アップ出来ず　
申し訳ございませんでした〜。なんとか今は　
写真アップ出来ていることでしょう　
　　　　　　　　↑ 
　　何故か他人事のZeRO0000でーす！　


　今日は、独学エンジニアの受講後になって　
いたい姿（イケメンになるとかではないw）　
について書いていきまーす！
　
まずは山浦清人さんのお言葉を… 
　「プログラミング学習を成功させる大きなポイントの一つは、学習を継続することです。　
学習を挫折しにくくするためには、目標を具体的に書き出すことが大事です。
目標がはっきりと定まっていないと、そのための行動もふわっとしがちです。
将来自分がどうなっていたいのか、自分のなりたい姿をできる限り具体的にイメージして書き出しましょう。」

　　　　　　　　な〜る〜

では早速、
①長期的になっていたい姿（定性目標）　　
→期間は大体2~3年後あたりを想定して、　
自分のオリジナルサービスでマネタイズできる
ようになることですかね！
→プログラマーとしては、インフラも開発も　
セキリュティも幅広いジャンルで60点を取れるようになりたいかと…


②受講後になっていたい姿（定性目標）　
→エンジニアとして転職する 
→どこに出しても恥ずかしくないポートフォリオを取りあえず作れるようになる　


③受講後の具体的状態（定量目標）　
→毎日独学エンジニアを受講する！　
→1週間で最低15時間は学習すること　
→6ヶ月以内に内定をもらっている
→4ヶ月以内にポートフォリオができあがっている　

どこまで達成できるのか、皆さん僕を応援してくれたら！？　　
嬉しいです　　　　希望的観測…
2年3ヶ月で辞めた会社に関して何をやったのかをまとめる

はじめましての方は初めまして、お久しぶりの方はお久しぶりです白々さじきです。
昨年の12月に2020年に中途で入社した会社を退職することにしました。
2年3ヶ月という短い期間での退職となりました。
前回退職してお世話になったのですが、色々あって自主都合での退社となりました。
ここでは、私が学んだ技術的なことを記載していきたいと思います。

## なぜ書くのか
今まで自分が学んだことを忘れないうちに記録するためと、今後技術的にどう成長させるかをまとめるためです。
(時期が遅かったので、だいぶ忘れている部分がありそうなので、次回はもう少し早めにかけるようにしたいです。)

## 学んだ技術スタック
・Python
・Trunado
・JavaScript
・HTML
・CSS
Trunadoに関しては、日本語のドキュメントがなかったのでほとんど理解できていなかったような気がします。
なので、どこかでちゃんと学びなおして記事にかければと思います。
この会社では、今まで触ってこなかったフロントエンド側に関しても触ることができました。
フロントエンドを触ることによってフロント側で何ができて、どんなAPIだと使いやすいのかのイメージが付くようになりました。
この部分に関しては、すごくいい経験になったと思います。
## 技術以外で学んだこと
・リーダー経験
・タスクの切り出し
・WBSの作成
・メンバーのサポート

最初はチームのメンバーとして参加していましたが、途中から追加でメンバーが2名入ったのでPMの指示でメンバーの管理と、サポートを行いました。
メンバーの管理では、タスクの切り出しを行い誰にどのタスクを渡すのかを考え、どの程度で終わるのかをお客さんに提示するためにWBSの作成、更新を行っていました。
経験の浅いメンバーに関しては、設計を一緒に考えたり、考え方を教えたりしながらメンバーのサポートを行っていました。
これらの経験がリーダー経験として自分の今後のエンジニア人生にプラスになったと思います。

## 今後したいこと
初めてちゃんとリーダーとして開発を進めていきましたがいい経験になったと思います。
ただ、あんまり向いてない気がしたので、メンバーとして力を付けつつ、プロダクトの方針決定とかに技術的な側面でアドバイスができるようなエンジニアになった方がいいと思いました。
また、フロントエンド側は、あんまり向いていないような気がしたので、バックエンド側をメインにしていこうと思いました。今後は、PythonだけでなくGo言語やPHPも触れるようになろうと思います。
また、この会社に在籍中にコロナが流行ったので、データベーススペシャリストを受けることができませんでした。
なので、データベーススペシャリストを取れるように頑張りつつ、新しいDBに関しての知見を増やしていければと思います。

## 最後に
短い間ではありましたが、様々なことを学ぶきっかけを頂いたことに感謝しています。
次の会社でも学んだことを生かしながらがんばっていこうと思います。
E5677: Error writing input to shell-command: EPIPEの解消法

dein.vimを使ってて、たびたび忘れるのでメモします:tea:

# 環境
- mac
- neovim
- dein.vim
- homebrew

# 発生する時
neovimをアップデートした後に、deinのアップデート忘れるとタイトルのエラーが発生します。

```bash
$ brew upgrade neovim
$ nvim .
:wq #gofmtが実行されるようにしている
```

`E5677: Error writing input to shell-command: EPIPE`

# 対応
## 1. neovimの更新

```bash
$ brew upgrade neovim
```

## 2. deinのmasterブランチをpull
エイリアスにしても良きですね。

```bash
$ cd ~/.vim/repos/github.com/Shougo/dein.vim
$ git pull origin master
```

## 3. deinのアップデート
```bash
$ nvim .
:call dein#update()
```
販売分野におけるSAPの適用と取り組み

0. はじめに
このシリーズでは、まず生産分野の全般的な事項として、SAP適用にあたっての基本的な考え方や注意点、導入によって得られる効果などについて触れます。その後数回にわたってSAP生産計画・管理分野の概要を紹介し、さらに生産の計画系、実行系にわたってSAPパッケージに準備されている具体的な機能を紹介します。

1. 販売注文の処理
販売プロセスは、顧客からの販売注文の受領から始まります。このステップでは、顧客の要求（製品、数量、価格、配送条件など）を正確に理解し、システムに入力する必要があります。正確な注文処理は、後続のプロセスの効率性と正確性に直結します。

2. 在庫確認と配送計画
注文を受けた後、製品の在庫状況を確認し、必要に応じて配送計画を立てます。この段階で、製品の可用性を確保し、顧客への納期を遵守することが重要です。在庫管理と配送計画の最適化は、顧客満足度を高める上で不可欠です。

3. 出荷と配送
出荷プロセスでは、注文された製品が倉庫から顧客へと配送されます。この際、製品の梱包、出荷文書の作成、運送手段の選定などが行われます。迅速かつ正確な出荷は、販売プロセスの信頼性を高める要素です。

4. 請求と支払い
製品が顧客に届けられた後、請求書が作成され、支払いが行われます。請求プロセスの効率化と精度は、キャッシュフローと顧客満足度に直接影響します。正確な請求と迅速な支払い処理は、企業の財務健全性にも寄与します。

5. 顧客サービスとサポート
販売プロセスの終わりには、顧客サービスとサポートがあります。顧客からのフィードバックを受け取り、問題があれば迅速に対応することで、長期的な顧客関係を築くことができます。

このプロセスを理解し、適切に実行することで、顧客満足度の向上、効率的なオペレーション、そして最終的には企業の利益増加につながります。SAPコンサルタントの初心者の皆さんがこの貴重なスキルを身につけ、成長していく過程を体感されることを楽しみにしています。
徒然なるままに勉強報告


　　　こーんにちはーでお馴染み、　
ZeRO0000です！今日は、独学エンジニア　
での勉強報告にしますよん。　
（サボってないことの証でもありますね）　
そのうちサボタージュするので…　

　　　　
　　まずは独学エンジニアの受講ペース
・一日2〜3時間は取りますぜ！
　　親分（誰？）　
・講座は603講座あったので、一日6〜7講座　
は見ていきましょう　頑張るどん！！

　　独学エンジニアのロードマップ!
写真が出ないです。本当にすいません！！

[httpsdokugaku-engineer.comcourseserversidecode=IhnzRD-WeZCVHKURxxDLqKXhaZ0VE6B0N4_2MbrD1zRuw&state=LWNUOTV4SkxFSkFRNDBjbkU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534155/e1db550d-8017-e5bc-3673-148754215dc3.png)


![独学エンジニア - 自走できるようになるためのロードマップ 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534155/08d777aa-91ae-edbc-832e-abe767aacfce.png)


![独学エンジニア - 自走できるようになるためのロードマップ 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534155/bfdd2375-0301-b42f-16a1-06cb1ce6765d.png) 


![独学エンジニア - 自走できるようになるためのロードマップ 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534155/8e47add8-3393-1a7b-9e48-5f1c964d46c1.png)


![独学エンジニア - 自走できるようになるためのロードマップ 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534155/bb9e1ca1-205b-7992-98f5-28f1dfe6eb69.png)


　　　　タイピングの進捗状況　
・e-typing←綴りあってる？　
でランクは良くてc,悪いとd-あたりです　

・寿司打で3000円コースはなんとか達成できるくらい… 目標は5000円コースの達成っす　
現在は、MIN約約3600円でMAX約4700円　
を行ったり来たり〜
　
　　　　　
　　　Javaシルバーの進捗　
・1日約1-1.5時間の勉強しています　
→問題を毎日15問解くようにしています　　
→問題難しすぎて何言ってんだ〜って感じ　
なので誰か助けてあげてくだされ…
　
今日はこんな感じで、写真がアップできないのは本当に申し訳ございませんでした。　では！