OmniAICreator/Qiita-1.07M huggingface dataset:
集合と論証 倍数と個数「2024 札幌医科大学 前期【１】(3)」をChatGPTとsympyでやってみたい。Floor and ceiling functions

・タイトルに「倍数と個数」を追加しました。(2024/03/08)

# オリジナル

数学入試問題 様

https://kamelink.com/blog/2024/03/05/1-7-24-sapporoidai-1-3/

上と同じです。大学入試数学問題集成 様＞前期【１】(3) テキスト
https://mathexamtest.web.fc2.com/2024/202411001/2024110010100mj.html#top-0103

公式ホームページ
未登録(2024/03/06)

# ChatGPT-3.5先生へ
```
<p class="slevel"><a name="q-0103" 
id="q-0103"></a><span 
class="qnum">【１】</span>　次の各問に答えよ．</p>
<p class="s1level"><a name="s-0103" id="s-0103"></a><span 
class="shomon1">(3)</span>　<math>
<mn>1</mn><mspace width=".2em"></mspace>
</math>から<math>
<mspace width=".2em"></mspace><mn>1000</mn><mspace width=".2em"></mspace>
</math>までの自然数のうち，<math>
<mrow><mn>4</mn><mspace width=".2em"></mspace><mtext>，</mtext></mrow>
</math><math>
<mrow><mn>6</mn><mspace width=".2em"></mspace><mtext>，</mtext></mrow>
</math><math>
<mn>10</mn><mspace width=".2em"></mspace>
</math>のいずれかで割り切れる数は全部で何個あるか．
</p>
```
(途中省略)
```python
count = 0
for i in range(1, 1001):
    if i % 4 == 0 or i % 6 == 0 or i % 10 == 0:
        count += 1

print(count)
```
・SymPy Liveで

https://live.sympy.org/

```
366
```
(私)**いいですね～**
# ChatGPT-3.5先生へ。ガウス記号
・続けて
```
倍数の個数はガウス記号を用いるとよいでしょう。
```
```　
確かに、ガウス記号（または等差数列の和の公式）を使用することで、簡単に解決できます。
(途中省略)
したがって、答えは451個です。
この計算方法によって、ガウス記号を使用して効率的に解を導くことができます。
```
？？？　私は、どこが間違っているかわかりませんでした。**教えて下さい。**


# ChatGPT-3.5先生へ。sympyのガウス記号
・続けて
```
sympyのガウス記号で教えて下さい。
```
(途中抜粋)
```python
from sympy import ceiling

# 4、6、10で割り切れる数の個数をそれぞれ求める
count_4 = ceiling(1000 / 4)
count_6 = ceiling(1000 / 6)
count_10 = ceiling(1000 / 10)

# 4と6、4と10、6と10で割り切れる数の個数をそれぞれ求める
count_4_6 = ceiling(1000 / (4*6))
count_4_10 = ceiling(1000 / (4*10))
count_6_10 = ceiling(1000 / (6*10))

# 4と6と10で割り切れる数の個数を求める
count_4_6_10 = ceiling(1000 / (4*6*10))

# 答えを計算
total_count = count_4 + count_6 + count_10 - count_4_6 - count_4_10 - count_6_10 + count_4_6_10

print(total_count)
```
・SymPy Liveで

https://live.sympy.org/

```
438
```
？？？ 私は、どこが間違っているかわかりませんでした。**教えて下さい。**
？？？ 366,451,438

# sympyで、やっぱり、私のいつもの方法です。
・私は、？？？意味がわかっていません。
・(追加)ceilingについて、コメントいただきました。ありがとうございました。
```python
ceiling(1000 /4)+ceiling(1000 /6)+ceiling(1000 /10)-ceiling(1000 /12)-ceiling(1000 /30)-ceiling(1000 /20)+ceiling(1000 /60)
```
wolframalpha でも

https://ja.wolframalpha.com/input?i=ceiling%281000+%2F4%29%2Bceiling%281000+%2F6%29%2Bceiling%281000+%2F10%29-ceiling%281000+%2F12%29-ceiling%281000+%2F30%29-ceiling%281000+%2F20%29%2Bceiling%281000+%2F60%29

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

# いつもと違うおすすめです。

https://en.wikipedia.org/wiki/Floor_and_ceiling_functions

https://ja.wikipedia.org/wiki/ガウス記号
Viteでプロキシを設定する

# やること
ローカル環境で、Vite + Reactから別のローカルサーバにリクエストを送る際にプロキシを使用します。
一応、構成としては以下のようになっています。

```mermaid
flowchart LR
   a(frontend: React + Vite) --request--> b(backend: Spring boot)
```

# 方法
`vite.config.ts`に、`server.proxy`設定を追加します。
```diff_typescript:vite.config.ts
export default defineConfig({
  plugins: [react()],
+  server: {
+    proxy: {
+      "/api": {
+        target: "http://localhost:8080/",
+        changeOrigin: true
+      }
+    }
+  }
})
```

上記の設定を追加することで、`fetch("/api/users")`のようにバックエンドサーバ向けのリクエストをした際に`localhost:8080/api/users`へリクエストされるようになります。

# 参考
https://ja.vitejs.dev/config/server-options.html#server-proxy
【APG4b AtCoder】ABC041 よわよわ学生のアルゴリズム4日目

## APG4b ABC041 よわよわ初心者解いてみた。
### 結果 -> 解けなかった（笑）
https://atcoder.jp/contests/abc041/tasks/abc041_a

~~~c++
#include <bits/stdc++.h>
using namespace std;

int main(){
  string s;
  int i;
  cin >> s >> i;
  i--;
  if(i>=0 && i<=s.size()){
    cout << s.at(i) << endl;
  }else{
    cout << "Out of range Error" << endl;
  }
}
//躓いたときのmain関数内↓
// string s;
//   int i;
//   char ans;
//   cin >> s;
//   cin >> i;
  
//   ans = s.at(i);
//   cout << ans << endl;
~~~
* 最初躓いていたときは、RE errorが立て続けに出ていた。恐らくそれは、out of rangeエラーでi--していなかったのが原因だった！for文のときは、0から始まることを留意していたつもりだが、at()でもハマってしまったため、次回以降気を付けようと思う！
妊娠〜育休〜復帰 を目指すならリモートワークの職場が最高

## この記事について
私の妊娠中の働き方から職場復帰するまでの流れを書きました。

こんな方に読んでほしいです。
- 妊娠中はどうやって働いたかの一例を見たい方
- 産休育休後に職場復帰できるか不安な方
- 会社の人事や経営者で社内環境を整える方法が知りたい方
- 働きやすい転職先を探しているデザイナー・エンジニアの方

## 自己紹介
Fignny株式会社にて2020年よりUI/UX/Webデザイナーとして働いています。
- WebサイトやWebアプリのデザイン・コーディング
- モバイルアプリのデザイン
を主に担当しています。

## 妊娠中はどんな働き方をしていたか
私はつわりが重い方でした...
どんな症状かというと1ヶ月以上ノロウイルスにかかっているような感じですね...
そんな中でも休職せずに働けました！

#### 会社の環境でありがたかったこと
- リモートワークだった
    - 現在は週一出社ですが当時はフルリモートでした
    - こんな状態では通勤できませんし、そもそも人前に出られません
- つわりが辛い時期の数ヶ月間、業務量を減らしていただいた(それに伴いお給料も)
    - 休憩をとりながら働けました
- 妊娠報告したあとも、社長やクライアントがとても温かい対応だった
    - 通常通り働けずに申し訳なさが生まれていましたが、優しい対応をしてくださり精神的に助かりました(神！)

つわりの重さは人それぞれですが、普段の体調とは異なるので妊娠中にリモートワークの環境は本当に助かります！！

## 弊社の産休育休
私はFignnyで第１号の産休取得者でした。

つわりが落ち着いたあと、まずは産休育休制度の情報調べを始めました。
何の制度があるのか?会社として手続きするものは？個人して手続きするものは？申請書類や提出先は？妊娠中の体で慣れない作業をするのは結構大変でした。

現在は社労士さんにもお願いしたり、前例があるので大丈夫です！
ちなみに弊社では現在女性1名男性1名が育休取得中です！



## 育休中
育休中は月に２回、会議に自主的に参加していました。
デザイナー勉強会と全体会(社員全員が集う月１MTG)です。

- 大人と話がしたい
- 仕事の直感を忘れないため
- 育児以外のことを考えるため
└ 参加理由はこんな感じです。

勉強会の宿題はこどものお昼寝中か、一時保育に預けて行っていました。
夜の授乳が長い期間あったので一緒にお昼寝して睡眠不足を補っている日も多く、できる月だけ宿題をやって、できなかった時は聞き専で参加していました。(無理ない範囲で参加していました！)


#### 会社の環境でありがたかったこと
- 育休中でもslackやFigmaにアクセスできる環境を作ってもらえていた
- 全てリモートでの会議だったので参加しやすかった

## 職場復帰
2023年11月に時短にて職場復帰をしました。
1年以上育休を取得していたため、会議参加や勉強会参加をしてはいましたが、不安もありました。

#### 日本語が全然上手く話せなくなっていました
産前、元々説明が苦手だったのですが、Fignnyに入ってからクライアントへの提案する機会が増えて苦手克服できた！と思っていました。

産後ボケなのか復帰後は入社前よりもひどくなっていました。
例えば「新年会」という言葉を思い出すまでに10秒くらいかかってしまったり
(忘年会じゃなくて〜その逆の〜...みたいに)
「NG集」を思い出せなくて「ダメ集?」と言ってしまったり...という感じでした ><

自宅で大半の時間は赤ちゃんと二人っきりで
「バナナ いる？」「おてて ジャージャーしようね(洗うこと)」などしか話していなかったので...笑

復帰から数ヶ月経った今では、また、前と同じような環境で働かせていただき元に戻りつつあります！

#### 会社の環境でありがたかったこと
- 時短勤務なのに裁量のある仕事を任せていただけている
    - おかげで言語能力も戻りつつあるし、楽しみながら仕事が出来ている
- 私の育休中に始まった新たな勉強会で、私が遅れをとってしまっていた時に周りがサポートしてくれた
- 時短勤務で時間の都合上対応できないことや、こどもの体調不良で早退するときなどがありますが嫌なことを言ってくる人がいない
    - 弊社は人柄の良い方が多いな〜と思っています


## おわりに
改めて振り返ってみると「リモートワーク最高！」です。

今の会社の環境がちょっと...
裁量を持って働ける＆今後も長く続けられそうな働きやすい環境に転職したい！という方

弊社では一緒に働く仲間を募集しています。ご興味を持っていただけた方は下記バナーをクリックしてみてください！
[![採用バナー横長大2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3736406/9e2e11cc-b4e6-7473-416a-b8a1e40539bf.png)](https://www.wantedly.com/companies/company_1847744/projects)




最後までお付き合いいただきありがとうございました！
ChatGPTでExcelファイルを丸ごと翻訳する方法

Excelファイルを丸ごと翻訳したいと思い、ネットで色々と調べてみました。

その結果、ほとんどの方法ではまずExcelからテキストを取り出し、Google TranslatorやChatGPTなどでそのテキストを翻訳し、再度そのテキストをファイルに貼り付ける必要があります。

しかし、形式が複雑なExcelの場合、このプロセスにかなりの時間がかかることがあります。特に、複雑な形式のExcelを翻訳する場合は、時間がかかることが予想されます。

この問題を解決するために色々と調べた結果、DOC2LANG（https://doc2lang.com/ja) というウェブサイトを見つけました。このウェブサイトを利用すると、Excelをまるごと翻訳することができます。さらに、例えば図表が含まれていても、ちゃんと元の形式で翻訳できるため、非常に便利です。
![スクリーンショット 2024-03-06 15.57.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3736638/9948b5bd-7d5a-1fc0-9191-878cac36092f.png)
この方法が必要な方にはぜひお勧めしたいですので、活用してみてください。

こちらは、Doc2Langサービスを使用してExcelファイルを別の言語に翻訳する方法を紹介するYouTube動画です。
<iframe width="560" height="315" src="https://www.youtube.com/embed/bmzoTSwO4cQ?si=5iplnVd8rmytAzJl" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Micorosoft365認定資格のロードマップ

おそらくMOS並みに需要が無いであろうMicrosoft365の認定資格。

自腹で同じ金額を使うのであれば、普通の人はAzureの資格を取得するであろう。
それでも会社命令で取得しなければいけない場合もあるかもしれない(というか自分)ので、備忘録でメモしておく。

Microsoft 365 Certified: Administrator Expert　認定資格

https://learn.microsoft.com/ja-jp/credentials/certifications/m365-administrator-expert/

久しぶりに見ると、EXPERTの認定試験が2つ(Microsoft 365Identity and ServicesとMicrosoft 365Mobility and Security)から1つ(Microsoft管理者)に減っていた。
EXPERT認定には2つ試験を受かればいいという事のようだ。

しかし有効期限はたったの1年。(試験を受ければ延長は可能)
正直、その勉強時間と費用をAzureやAWSに回したいというのが本音である。
【開発実績】エンジニア向け就活マッチングサイト【Rails】

# はじめに
株式会社prezyのインターンにて、エンジニア向け就活マッチングサイトを開発した。
エンジニア3名で開発し、そのうち1人がフロント、2人がバックエンドを担当した。私の担当はバックエンドである。

# アプリの内容
## 企業紹介
企業は、自社の情報を登録できる。
業種や所在地、従業員数などの基本的な情報に加え、その企業が出している求人情報を登録できる。
求人情報は、詳細を登録することもでき、そこで詳しい業務内容などを記載できる。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/db943967-d436-1235-6293-7e0445ea91a2.png)

## 学生検索
企業は、条件で絞り込んで学生を検索できる。
条件には、
・希望業種　・言語スキル
を指定できる。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/c6feede1-d6e7-488d-6c12-c1e94d8e0c68.png)

## スカウト機能
企業は、気になる学生にスカウトをすることができる。
スカウトは、企業が持つ求人内容から選んでスカウトすることができる。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/cce2d689-9497-fc54-e562-ef06a4340b4b.png)

## メッセージ機能
マッチした学生と企業はチャットでやり取り可能である。
企業側は、採用が確定した学生は[採用済み]の欄にチャットルームをさせることで管理できる。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/366b6712-6f99-29a7-6251-99b897fc1c20.png)

## 学生詳細ページ
学生は、自身の詳細情報を登録できる。
就活情報として、
・希望業種　・希望業界 ・希望領域
プログラミング経験として、
・過去の制作物 ・インターン ・ゼミ
スキルに関する情報として、
・プログラミングスキル ・資格
の情報を登録できる。
企業はこれらの情報をみて、学生をスカウトできる。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626170/b9b8c471-e3e5-3f03-c171-3875f27fd8c8.png)

# おわりに
個人開発以外では、0からのアプリ開発は初めての経験だったので、多くの学びがあった。
コードの管理はGithubで行った。開発を始める前に、コミットメッセージの規則を定めた。
・新しく機能を追加した場合は[add]
・バグ等を修正した場合は[fix]
・仕様変更の場合は[modify]
・削除の場合は[delete]
をコミットメッセージの頭につけ、どのような種類の変更が行われたかが分かりやすくした。
今回はエンジニア3人と、少人数での開発だったのでコミュニケーションがとりやすく、はじめに定めた規則を守らなかったり、コミットメッセージを「update」だけにしてしまっても、ある程度円滑に開発を進められた。
しかし、10人など、もっと人数が多いチームで開発するとなると、このような規則をきちんと守ることで、開発速度の向上と正しい意思疎通につながると思った。
【ABC050 】AtCoder APG4b Addition and Subtraction Easy

## ABC050 APG4b Addition and Subtraction Easy
https://atcoder.jp/contests/abc050/tasks/abc050_a

~~~c++
#include<bits/stdc++.h>
using namespace std;

int main(){
  int a,b,ans=0;
  char x;
  cin >> a >> x >> b;
  if(x=='+'){
    ans = a+b;
  }else if(x=='-'){
    ans = a-b;
  }else{
    cout << "Operator error" << endl;
  }
  
  cout << ans << endl;
}
~~~
一般的にEasyなこの問題も私は躓きました（笑）とりあえずAtCoder練習し始めて4日目!!3日坊主は乗り越えた!
ZED SDK の設定可能な候補を見つける

ZED SDK はStereoLabsのカメラ zed2, zed-x, zed mini を使うためのライブラリである。
そのZED SDK を概観するために、各項目で設定できる項目には何があるのかを見つけるためのpythonスクリプトをメモする。

## 想定する読者
stereolabsのzed2, zed mini, zed z などのステレオカメラの利用者
いまどきのステレオカメラは何ができるのかを知りたい人
## 前提
ZED SDK 4.0

## 注意
無保証です。

## 実施方法
- 以下のスクリプトを実行する。

```:.py
import inspect

import pyzed.sl as sl


def show_params(some_params):
    print(f"{str(some_params)}")
    for k, v in inspect.getmembers(some_params):
        if k.find("__") < 0:
            print(f"{type(some_params)} {k} {v}")

if __name__ == "__main__":
    zed = sl.Camera()
    init_params = sl.InitParameters()
    runtime_parameters = sl.RuntimeParameters()

    print(zed.get_sdk_version())
    show_params(init_params)
    show_params(sl.UNIT)
    show_params(sl.COORDINATE_SYSTEM)
    show_params(sl.RESOLUTION)
    show_params(sl.DEPTH_MODE)
    show_params(sl.VIDEO_SETTINGS)
    show_params(sl.VIEW)
    show_params(sl.MEASURE)

    err = zed.open(init_params)
    if err != sl.ERROR_CODE.SUCCESS:
        exit(1)

    show_params(zed)
    show_params(runtime_parameters)
    zed.close()

```


## 蛇足
- ZED SDK の公式のチュートリアルで、それらの設定がわかれば、うれしいのだが。
VMwareの代替選択：Hyper-V、Nutanix、Virtuozzo そしてRedhatの紹介

## はじめに
BroadcomによるVMware買収が顧客、パートナー、およびエコシステム全体に複数の懸念を引き起こしています。特にライセンスモデルの変更とビジネスユニットの売却は、顧客とパートナーの未来に対する不確実性を高めています。そんな中、多くの企業が代替ソリューションを模索しています。
日本での実績がありかつしっかりしたサポート体制もついているという観点でVMwareの代替品を探してみました。（KVM、OpenStackのようなオープンソースについて今回の記事から外します）

## 本文

### [Hyper-V](https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/get-started-with-hyper-v-on-windows)
Microsoftが提供するHyper-Vは、Windows Serverに統合されているため、Windows中心の環境に最適です。強力なセキュリティ機能、直感的な管理コンソール、そして比較的低コストで提供されることが最大の魅力です。

**強み**:

- Microsoft製品との統合性が高く、Windowsベースの環境で強力なパフォーマンスを発揮
- コスト効率が良いとされ、中小企業に適している

**弱み**:

- 非Windows環境ではその機能を最大限に活かせないことがある
- VMwareに比べると、特定の高度な機能が欠けている場合がある
### [Nutanix](https://www.nutanix.com/jp)
NutanixはHCI（ハイパーコンバージドインフラストラクチャ）ソリューションのリーダーであり、使いやすいスケーラブルなインフラを提供します。一つの統合プラットフォームで、ストレージ、コンピューティング、仮想化を処理することができます。

**強み**:

- シンプルなHCIプラットフォームで、スケーラビリティと管理の容易さを提供
- クラウドのような柔軟性と、オンプレミスの制御を組み合わせる

**弱み**:

- 高価な初期投資が必要となることがある
- VMwareと比べて市場での認知度が低い
### [RedHat](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/virtualization_getting_started_guide/index)
Redhatの仮想化ソリューションは、オープンソースベースで、柔軟性とカスタマイズ性に優れています。Redhatは特に、エンタープライズLinuxユーザーに強い支持を受けています。OpenShiftと組み合わせてフルスタックのクラウドも構築可能です。

**強み**:

- オープンソースであるため、カスタマイズと柔軟性が高い
- 強力なLinuxサポートと、コミュニティベースのイノベーションを享受できる

**弱み**:

- Windows環境では最適とは言えない
- サポートや維持に関してはオープンソースゆえの課題が存在する
### [Virtuozzo](https://www.virtuozzo.com/jp/)
Virtuozzoは、特にサービスプロバイダーにとって魅力的な選択肢です。高度に最適化されたストレージ、パワフルなVirtuozzo Hyperconverged Infrastructure（VHI）機能により、仮想マシンをスムーズに運用できます。マルチテナント構造と、複数のレイヤーでのセキュリティ保護を提供します。それ以外にPaaS製品とLinuxOSも提供しています。

**強み**:

- Virtuozzo Hyperconverged Infrastructureは、効率的な運用と低運用コストを実現
- 仮想マシンの管理に優れたツールを提供

**弱み**:

- 業界での認知度と市場シェアの面でVMwareに後れを取る
- 特定の企業ニーズに対するカスタマイズが必要になることがある

## まとめ
VMwareのライセンスコストと独自エコシステムに縛られることなく、Hyper-V、Nutanix、Redhat、Virtuozzoなどの代替品を通じて、あなたの企業のニーズに合わせた柔軟な仮想化ソリューションを選択することができます。中では、NutanixやVirtuozzoのようなHCI製品は、コスト効率とパフォーマンスのバランスが優れております。また、本日紹介していないですが、kubernetesのkubevirtなどを利用した仮想化技術もあります。
この記事は、あなたのビジネスにとって最適な選択を見つけるための出発点になれば幸いです。
dockerfileでgitのインストール(ターミナルに色つける)

# dockerfile上でgitのインストール & 設定を終わらせたい！
毎回コンテナ起動後に`apt install git-all`やって、
`git config --global user.name "XXX"`やってメールもやって～って面倒くさいよね。
けど、dockerfileに`RUN apt-get install git-all -y`って書くとタイムゾーンで止まりますよね。
そんなときは、
```dockerfile
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
```
ってタイムゾーンを指定しよう。
その後はgitの初期設定もベタ打ちして終わり。**(共有するときは消す)**
# ～彩りを加える～
素やとターミナルが白でなんかテンションが上がらない。
```dockerfile
ENV TERM xterm-256color
```
これで色がついて華やかな開発ライフ！
lpython: llvmでNativeコンパイル可能な型付Python派生言語

あけましておめでとうございます。

時間がないので、おいおい加筆・修正する予定です。=> この記事は、紹介だけ。

lpythonなる派生Pythonが出現しています。
未だ、よく読めていませんが、PythonをNativeコンパイルできるようです。
JITコンパイラも備えているみたい。

URL
1. https://lpython.org/
2. https://github.com/lcompilers/lpython

|名前|書き換え必要か?|Native|JIT|MEMO|
|---|----|---|---|---|
|Cython|No|Yes|No||
|PyPy|No|No|Yes|
|lpython|No?|Yes?|Yes?||
|mojo|**YES**|Yes|No?||
|codon|import部の書き換えが必要|Yes|No||


私が高速化に使っているのは主にCythonで、時々PyPyを使用。
今後、選択肢にlpythonが加わってくれる事を願っています。
ZED SDK  point_cloudをplyファイルとして保存する

## 想定する読者
stereolabsのzed2, zed mini, zed x などのステレオカメラの利用者
いまどきのステレオカメラは何ができるのかを知りたい人
## 前提
ZED SDK 4.0

## ZED SDK が提供している方法
```:.py
point_cloud_to_save = sl.Mat()
zed.retrieve_measure(point_cloud_to_save, sl.MEASURE.XYZRGBA, sl.MEM.CPU)
err = point_cloud_to_save.write('Pointcloud.ply')
```

## 自前でply ファイルを保存する方法
ascii 形式で出力されたply ファイルを読んでみよう。
header 行のあとは、簡単なデータ形式になっているのがわかるだろう。
それを利用して自前で書くことも可能だ。
### 注意点：
- `zed.retrieve_measure(point_cloud_to_save, sl.MEASURE.XYZRGBA, sl.MEM.CPU)`
で取得したpoint_cloud_to_saveのデータの中には、有限でない値の座標を含んでいる。（すなわちnp.isfinite()を満たさない座標も含んでいるので、有限の値の座標だけを出力対象にすること。

自前でplyファイルを出力する場合には、forループを書くことになるので、遅くなりやすい。
標準で用意されているやり方で十分ならば、自前の処理をかかないこと。


## point_cloud に影響する設定
- fill_mode にするかどうか
- カメラの解像度
- sl.RESOLUTION
- カメラの撮影条件各種（露出など）
- `sl.VIDEO_SETTINGS` の各種項目
- depth_modeの設定
propsで受け取った画像情報が表示できない

## 初めに
今回ReactをUdemyで学習していて、propsのオブジェクト受け取って、画像を表示することを実装しました。
ですが凡ミスによって画像表示ができなかったので、今後気をつけるためにも記事に残します！

##失敗コード
```react
<img
  height={160}
  width={160}
  src="{user.image}"
  alt="{user.name}"
/>

<dl>
  <dt>mail</dt>
  <dd>{user.email}</dd>
  <dt>TEL</dt>
  <dd>{user.phone}</dd>
  <dt>会社名</dt>
  <dd>{user.company.name}</dd>
  <dt>WEBサイト</dt>
  <dd>{user.website}</dd>
</dl>
```
このコードではmail、TEL、会社名、WEBサイトはpropsからデータを受け取って表示できますが、画像情報が表示されません。

## 解決策
```react
<img
  height={160}
  width={160}
  src={user.image}
  alt={user.name}
/>
<p>名前</p>
<SDl>
  <dt>mail</dt>
  <dd>{user.email}</dd>
  <dt>TEL</dt>
  <dd>{user.phone}</dd>
  <dt>会社名</dt>
  <dd>{user.company.name}</dd>
  <dt>WEBサイト</dt>
  <dd>{user.website}</dd>
</SDl>
```

僕はいつもweb制作を主に行っているのですが、その癖で<img>タグのsrc属性、alt属性を`src="{user.image}"
alt="{user.name}"`と書いていました。
この場合はjsの式を記述するので文字列を記載する""(ダブルクォーテーション)が余分でした。

## 終わりに
凡ミスって意外と気づくことが少ないので、今後はchstGPT等にチェックしてもらうのも一つの手だなと考えています！
【APG4b AtCoder】ABC048 A - AtCoder *** Contest

## APG4b AtCoder 学習記録用 AtCoder***Contest
https://atcoder.jp/contests/abc048/tasks/abc048_a
~~~c++
//AtCoder + "標準入力" + Contest
//標準入力の頭文字を取得

#include <bits/stdc++.h>
using namespace std;

int main(){
  string a,s,c;
  cin >> a >> s >> c;
  a = a.at(0);
  s = s.at(0);
  c = c.at(0);
  
  cout << a + s + c << endl;
}
~~~
- string型の変数にchar型を入れているように見えるが、解いた後にgptに解説頼んだところ、char型を含むstringオブジェクトを変数に格納しているとのこと
- 空文字変数を事前に定義しといて、`for(int i = 0; i <1 ; i++)`で`at(0)`だけやって、この変数に格納してbreakするのも冗長かもしれないけどいいと思いました！
ラッパーを作れば労働時間が減るかもしれない【adapterパターン】

# adapterパターンとは
安定してるプログラムの中身(Adapteeの中身)を変えずに仕様を変更するためのパターン
ようはラッパーを作るってことです

中身を変えないから
仕様を変更しても既存クラス(Adaptee)の品質が保証されますね
つまりテストが減ります貴方の労働時間は減ります



# クラス図（委譲を使用した実装）
![スクリーンショット 2024-03-06 130636.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3714713/34f3c01e-ac8e-c1e5-b059-b0f8cddc1e5c.jpeg)



# 詳しい解説
こちらの記事が非常に詳しく解説しているので委譲(丸投げ)します
> 引用: よしたろうブログ

https://yoshitaro-yoyo.hatenablog.com/entry/Adapter_Pattern


# おわりに
ラッパーを作るという考え方を頭の片隅に置くための
きっかけを目指してみました

ふと思ったんですけど
機械学習ライブラリkerasはTheano，TensorFlowの利便性向上を目指したラッパーなのでリポジトリを見てみたら参考になるかもしれないですね
権限確認・変更

# まずは権限の確認
カレントディレクトリ内のファイルとディレクトリの詳細なリストを表示するためのコマンドを入力する。
```sh
$ ls -l
```
そうするとこのような形式で表示される。
```sql
-rw-r--r-- 1 user group 1234 Mar 6 10:00 example.txt
drwxr-xr-x 2 user group 4096 Mar 6 10:01 directory
```
## パーミッションの読み方
「-rw-r--r--」や「drwxr-xr-x」の10文字についてですが、
最初の１文字目はファイル種別を表している。
ファイルの種別の表示は3つあり「 - 」はファイル、「 d 」はディレクトリ、「 l 」はリンクを表す。
![段落テキスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686853/160d35de-e90a-c66a-7fc8-942758b90f68.png)
2文字目から4文字目はファイルの所有者に対する権限を表し、
5文字目から7文字目はファイルの所有グループに対する権限を表し、
8文字目から10文字目はその他に対する権限を表している。(画像参照
)

- 権限の基本種類

|読み込み権限|書き込み権限|実行権限|
| :---: | :---: | :---: |
|r|w|x|

- 覚えておく
```sh
4 2 1
r w x
```

- 権限の範囲
数値0~7で各区分が所有する権限の範囲を設定できるようになっている。0 は権限が無く、7 は全ての権限を有する。

|数値|権限|内容|
| :---: | :---: | :--- |
|0|---|権限なし|
|1|--x|実行|
|2|-w-|書込|
|3|-wx|書込・実行|
|4|r--|読込|
|5|r-x|読込・実行|
|6|rw-|読込・書込|
|7|rwx|読込・書込・実行|

## 権限の変更コマンド

```sh
#形式
$ chmod 777 ファイル名
```

### 指定例
|権限|数値|概要|
| :---| :---: | :---|
|rwxrwxrwx|777|誰でも読み書き可能、誰でも実行可能|
|rwxr-xr-x|755|所有者は読み書き実行可能、所有者以外は読み取りと実行可能（コマンドの実行ファイルなどよくroot所有でこのパーミッションになっている）|
|rw-rw-rw-|666|誰でも読み書き可能、実行権限は誰にもない（テキストやHTMLなど実行するものではない場合これでいい）|
|r--r--r--|444|誰でも読み込み可能、誰も書き込めない|
|rwx------|700|所有者はフル権限、所有者以外は何もできない|

> [chmod コマンド](https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95) #Qiita 
>[Linuxの権限確認と変更(chmod)（超初心者向け）]( https://qiita.com/shisama/items/5f4c4fa768642aad9e06) #Qiita @shisama_より 
> [【Linux】ファイルパーミッション早見表 at softelメモ](https://www.softel.co.jp/blogs/tech/archives/7381) @softelmemoより
【SharePoint】条件式を使ってフォーム列の表示/非表示を制御してみた

こんにちは！
M365（特にSharePoint,Power Automate,Power Apps,Teams）に関する記事やちょっとした小ネタなどをご紹介していきます。

# はじめに
今さらではありますが、SharePoint Online の機能について改めて情報収集していたところ、「あれ、こんな機能があったんだ！？」と個人的に少しテンションが上がった機能があったので、実際に検証してみました。

# SharePointリストに対する思い込み
SharePointリストの「新しいアイテム（入力フォーム）」画面で、これまで出来ないと思っていたことの１つに、「ある入力項目で特定の値を選択したときだけ、追加の入力項目を表示したい」というものがありました。

Microsoft Forms や Power Appsの登場により、条件分岐あるいは特定条件による項目の表示／非表示などのカスタマイズが出来るようになりましたが、SharePointだけで完結出来る方法は確立されていなかったのではないかなとずっと思いこんでいました。

今回ご紹介する機能ではあまり複雑なものは出来ないかもしれませんが、簡易的なフォームの制御としては使い道があるのではないかなと思い、サンプルフォームを作成してみました。

# サンプルの作成
動作確認用に以下のようなリストを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/15cf7198-e87b-350a-0271-ccd81c7e0609.png)

ここから、以下の条件で表示制御を行う準備をしていきたいと思います。
①申請区分が「変更・取り下げ」の場合に、変更申請理由の記入欄を表示させる
②取得対象が「代理申請」の場合に、実際に休暇を取得するユーザーの入力欄を表示させる

## （1）条件によって追加表示させる列の作成
通常の手順で、追加表示用の列を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/584e2b64-2f91-6fbc-2325-f769dcc6b419.png)

## （2）列の表示条件の設定
条件の設定は、以下の手順で行います。

1．新しいアイテム画面を開き、右上のフォームの編集から「列の編集」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/8a7a349d-71a3-9c2b-ef31-b506703e21c6.png)

2．表示制御を行いたい列のアクションメニューから「条件式の編集」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/f1c73e70-cb90-3e40-b5e3-198670529912.png)

3．数式の欄に条件式を入力し、保存をクリックします。
今回は申請区分列の選択肢で「変更・取り下げ」が選択された場合にのみ列を表示させたいので、下図のように入力しています。

`=if([$内部名]==’条件値’,’true’,’false’)`
※true＝列を表示、false＝列を非表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/fba39b94-ad3f-4493-b761-a5511c940428.png)

4．同様に、「休暇取得者名」列にも条件式を設定します。
ここでは、取得対象列の選択肢で「代理申請」が選択された場合にのみ列を表示させるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/74185cfc-c900-4f10-fc79-c51ce40e186c.png)

5．設定が保存されると対象の列がグレーアウトされ、表示の条件を満たさない場合は、入力フォームから対象の列が非表示となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/aab3e8cf-4c48-8ab9-33f6-52807516fa96.png)

::: note warn
条件式で条件に利用する列は、入力フォーム上に表示されている必要があります。
※ 今回の場合、上図の「ステータス」や「承認コメント」のようにフォームから非表示にしている列の値を条件に指定しても、制御が適用されませんので注意が必要です。
:::

6．最後に、フォーム列の編集画面上部の「保存」をクリックして設定を保存します。

# 動作確認
設定したフォームで動作を確認してみます。
フォームを開いた直後の画面と、条件が一致するように選択肢を変更した場合の画面はそれぞれ以下のようになります。

▼ フォームを開いた直後の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/d8cb5c38-07e7-14d7-0296-5e26c3f78ab8.png)

▼選択肢を変更した後の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/0877f6e9-8341-746a-5a52-77bb8f8dd337.png)

アイテムを登録した後の閲覧画面および編集画面でも、列の表示/非表示は保持されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/a484d338-b61c-3c03-a86d-b390a52ae2bd.png)

# まとめ
今回は選択肢に含まれる文字列を条件に、表示／非表示を制御する検証を行いましたが、これ以外にも数字や日付などを条件にした制御も可能なようです。
※ 詳細は参考リンクをご覧ください。

これ使えそう！と思った方はぜひ試してみてください。

# 参考リンク
リスト フォームまたはライブラリ フォームの列の表示/非表示を切り替える
https://learn.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/list-form-conditional-show-hide
【Rails】gemの削除・バージョン変更方法

## 記事概要
gemの削除・バージョン変更方法についてです。
※自分は「bundler」を使っているので「bundle exec」を加えてのコマンド紹介になっています。
(bundleは、Rubyで使用されるGemの管理ツールです。)

### gemの削除方法
```
$ bundle exec gem uninstall 消したいgem名
```
　　　　⬇︎
Gemfileから消したいgemを削除
　　　　⬇︎
```
$ bundle install
```
以上でGemfile.lockからも消えます。
<br/>

・具体例(「sorcery」と言うgemを消す場合)
```
$ bundle exec gem uninstall sorcery
```
　　　　⬇︎
Gemfileから今回消したいgem = 「sorcery」 を削除
　　　　⬇︎
```
$ bundle install
```

### gemのバージョン変更方法
バージョン変更はまず上記で紹介したように「元々あるgem」を削除した上で、Gemfileで「インストールしたいバージョン」を記述すればいいだけです。

元々あるバージョンを変えたいgemを削除
　　　　⬇︎
Gemfileにインストールしたいバージョンをのgemを追加
例：gem 'sorcery', "0.16.3"
　　　　⬇︎
```
$ bundle install
```
ホームページでデフォルト時「テキスト編集カーソル」にしない方法


通常、何も指定しなければテキスト上にカーソルがあると「テキスト編集カーソル」になります。常に「テキスト編集カーソル」になっている事自体、コピーを促しているように感じてしまうのです(私だけではないはず)。

![カーソル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/235ff1c9-eaef-28b1-55c8-0d98d0899009.png)

そこで、デフォルトでは「テキスト編集カーソル」にしない方法を紹介します。

:::note warn

※ これは2016-03-29に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## CSS を用いた方法

CSSに次の1行を追加するだけです。

```css
html {
  cursor: default;
}
```

## HTML を用いた方法

HTMLのどこかに次の1行を追加するだけです。

```html
<style>
  html {
    cursor: default;
  }
</style>
```

## 結果

テキストの上にマウスを置いても通常のカーソルになります。

![テキストをホバーしても、デフォルトのカーソルになっている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/79f0235f-e70c-42e9-578e-bab3da07cd2e.png)

リンクをフォーカスしている時にちゃんと指のカーソルになります。

![リンクを選択すると、指のカーソルになりました](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/735402a5-a9a6-a65f-af59-fa709b904c9e.png)
WordPress ショートコードで自サイトの他の記事をそのまま挿入


WordPressのショートコードを用いて自サイトの他の記事をそのまま挿入する方法を紹介します。

:::note warn

※ これは2016-04-09に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## functions.php へコードを追加

まず、テーマの `functions.php` に次のコードをコピペします。`functions.php` にすでにコードが追加されている場合は `<?php` 及び `?>` が二重にならないようお気をつけください。WordPressがエラーで起動できなくなってしまう場合があるためバックアップしてから保存してください。

```php
<?php
function shortcode_insert($atts){
extract(shortcode_atts(array('id'=>0),$atts));
if(get_post($id)!=null)return wpautop(do_shortcode(get_post($id)->post_content));
}
add_shortcode('insert','shortcode_insert');
?>
```

## 使用方法

そして挿入したい場所に次のようにショートコードを記入します。

`[insert id=123]`

123の部分は記事IDです。

記事IDは編集時のURLや投稿ページでのURLなどで確認ができます。

![URLの /wp-admin/post.php?post=xxx 部がIDです。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/5d8e386c-c43b-3d30-74a3-cd3bdb70f08d.png)

![記事一覧の編集リンク先のURLを確認することでもIDを確認できます](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/14fe9962-9220-5b61-40be-0c78ca2d4c93.png)

尚、誤ったIDを指定した場合は何も表示されません。また、非公開、下書き、パスワード保護関わらず表示ができます。挿入元が更新された際には挿入先でも更新されます。非公開記事を作成し、このツールで挿入するという使い方も可能です。
/packer/でBase62エンコードしたJavaScriptコードをデコードするツール


[/packer/](http://dean.edwards.name/packer/)でBase62エンコードしたJavaScriptコードをデコード(復号)するツールです。

:::note warn

※ これは2016-04-19に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## デコードツール

`eval(function(p,a,c,k,e,r){e=function(c){return(` で始まるコードをコピペしてDecodeボタンを押してください。すべてブラウザで処理され、サーバーには送信されませんのでご安心ください。

2重、3重にエンコードされている場合もあります。その場合は数回Decodeボタンを押してください。

https://codesandbox.io/embed/frosty-mendel-x0uv0j?&theme=light&view=preview

デコードされたコードをわかりやすく見たい場合は[Online JavaScript beautifier](http://jsbeautifier.org/)のようなツールをご使用下さい。

## デコードコード

次のJavaScriptでデコードが可能です。

```js
var a; /*デコード前のjs*/
var b; /*デコード後のjs*/
eval("b.value=String" + a.value.slice(4));
```

## おまけ

/packer/はすでに開発を停止しています。現状ではエラーを引き起こすエンコードを行ってしまう場合があります。ECMAScript 5レベルまでのプログラムであれば使用できそうです。アロー関数式などは全滅のようで、事前にトランスコンパイルする必要があります。

## おまけ 2

漫画村のアドフラウド（隠し広告）を実行するためのJavaScriptコードが/packer/で難読化されていたそうです。意外と難読化のツールとして使われているのですね。
署名なしのドライバーをインストールする方法 (GW-USH300N を Windows10 で動作させてみた)


2010年9月に発売されたGW-USH300Nを試行錯誤の中、Windows10で動作させる事ができたので紹介します。

Windows 8やWindows 8.1でも同様の方法で動作するはずです。

追記:Windows 10 Anniversary Update及びCreators Updateした際に再インストールが必要になる可能性があるそうです。その際もこちらの方法で再インストールできます。

:::note warn

※ これは2016-03-29に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## GW-USH300N はそのままでは Windows 10 で動作しない

GW-USH300Nの動作対象はWindows 7（32/64bit）/ Vista（32/64bit）/ XP（32bit）に限られています。

GW-USH300Nのドライバーは「ドライバー署名」がないため、セキュリティが強化されたWindows 8の64ビット及びWindows 10ではドライバーのインストールが不可能なのです。

## ダウンロードする

先にGW-USH300Nのドライバーを[公式サイト](https://www.planex.co.jp/support/download/wireless/gw-ush300n.shtml)からダウンロードします。

この後の再起動後、ネットワークに繋げなくなる可能性があるためです。

## インストールする

一時的にOSのセキュリティ機能を一部無効にしてインストールします。再起動したらまたセキュリティ機能が戻りますのでご安心ください。

### シフトキーを押しながら再起動する

**シフトキーを押しながら**再起動をします。

![シフトキーを押しながら再起動を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/a9d6a0a4-099b-513a-0f53-585c58987e0c.png)

### 再起動時にオプションを設定する

トラブルシューティング → 詳細オプション → スタートアップ設定 → 再起動をクリックします。

![「オプションの選択」で、「トラブルシューティング」を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/efd7a570-88b2-821f-aef2-d9a8efbe1053.jpeg)

![「トラブルシューティング」で、「詳細オプション」を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/02e9fabf-7df1-776c-8091-cb766a891cdf.jpeg)

![「詳細オプション」で、「スタートアップ設定」を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/715de3a6-f4a6-dcfd-14eb-a5b72e787bfc.jpeg)

再起動後に次の画面が出るので「ドライバー署名の強制を無効にする」つまりキーボードの7を入力します。

![スタートアップ設定で「(7)ドライバー署名の強制を無効化する」を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/acade8e8-175a-3cde-1133-afd3f9f0f923.png)

### 互換性の設定をする

インストールソフトの「Setup.exe」を右クリック → プロパティから「互換性」より「互換モードでこのプログラムを実行する」にて「Windows 7」に、「設定」にて「管理者としてこのプログラムを実行する」と設定します。

![Setup.exeのプロパティで、「管理者としてこのプログラムを実行する」を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/e3cc0adb-dc26-0e76-54b5-b8cb4cc3c69f.png)

### ドライバーをインストールする

「Setup.exe」を起動してインストールします。インストール中「ドライバーソフトウェアの発行元を検証できません」と警告が出ます。「このドライバーソフトウェアをインストールします」を選択します。その後、再起動をしたらインストール終了です。

![「ハードウェアを検索し、ドライバをインストールしています PCI GW-USH300N Driver」](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/27cd9e4a-8532-4779-3f79-cac1cb57d620.png)

![Windows セキュリティより「ドライバー　ソフトウェアの発行元を検証できません」警告の表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/1547b857-b6d5-aa99-7698-f4aecc786286.png)

### 再起動する

「完了」をクリックして再起動すると接続できるようになります。

![「Install Shield Wizard の完了」](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/7ca24842-a708-546b-f658-37dfda3840c6.png)

![PCI GW-USH300N Utility](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/b653dc76-2850-7472-2ec1-002744e00835.png)
CSSで勝手に英語大文字になってしまう原因と対処法


WordPressでタイトルが勝手に英語大文字になってしまう原因と対処方法を紹介します。

:::note warn

※ これは2016-03-10に[個人ブログ](https://bicstone.me)で公開した記事を移植し、[CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.ja)で提供しています。情報は古い可能性があります。

:::

## 現象

とあるWordPressテーマを適用すると、タイトルの英語部分が勝手に大文字になってしまいました(画像はイメージです)。

![記事のタイトルが管理画面に入力したとおり表示されている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/f1e40f31-31cb-98c3-587b-0969a7d418b7.png)

↓

![記事のタイトルの英字がすべて大文字になっている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684999/f48caebb-2187-a0e7-eb40-1025ccc0d6f4.png)

## 対処方法

CSSによって大文字に変更されています。よって、テーマのCSS上に存在する、下記2つのスタイルをすべて削除することで改善します。

```css
text-transform: uppercase;
```

```css
text-transform: capitalize;
```

https://developer.mozilla.org/ja/docs/Web/CSS/text-transform

「uppercase」はすべて大文字、「capitalize」は1文字目のみ大文字にするように指定したものです。

親テーマのCSSを変更することに問題がある場合は子テーマのCSSへ対象のセレクタに次のスタイルを指定します。

```css
text-transform: none;
```
AWS 踏み台サーバーを経由したプライベートサーバーへのアクセス（※自分用メモ）

### 踏み台サーバーを経由したssh接続


```linax
# 一時的な鍵の保存
ssh-add ~/.ssh/⚪︎⚪︎⚪︎⚪︎⚪︎.pem
# 鍵の保存ができているか確認
ssh-add -l  

# 踏み台サーバーへアクセス
# -Aは鍵をプライベートサブネットへ転送するオプション
ssh -A -i ~/.ssh/⚪︎⚪︎⚪︎⚪︎⚪︎.pem ec2-user@パブリックIP
# 踏み台サーバからプライベートへのアクセス
ssh ec2-user@プライベートIP
```
Azure CLIを使う

## はじめに

[Azure CLI](https://learn.microsoft.com/ja-jp/cli/azure/) 使っていますか？  
本エントリではAzure CLIを使いはじめる際に知っておくといいことについて書いていきます。

## なぜ使うの？

いきなりですが、なぜAzure CLIを使うといいのでしょうか。Azureポータルで十分じゃないかと。

端的にいうと「自動化」の恩恵が受けられることです。

日常の作業もポータルのスクショ付き手順書でポータルで行なうよりもはるかに楽に、正確になります。なにより共有がスクリプトになりますので圧倒的に簡単になります。

## さっそく使う

インストールは [Azure CLI をインストールする方法 \| Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli) を参考にお使いの環境に合わせて行なってください。

本エントリは az コマンドを bash で実行することを前提にコマンド例を記述します。

## 使う時のお約束

Azureにログインしたあとにお約束として実行することをお勧めします。

```bash
az login
az account list -o table
```

```text
Name          CloudName    SubscriptionId                        TenantId                              State    IsDefault
------------  -----------  ------------------------------------  ------------------------------------  -------  -----------
Hoge Hoge     AzureCloud   00000000-0000-0000-0000-000000000000  00000000-0000-0000-0000-000000000000  Enabled  True
```

例のように1行だけの方は次に読み進めてください。

複数ある場合、デフォルトのサブスクリプション(Subscription)が作業対象になっているかを必ず確認しましょう。

```text
Name          CloudName    SubscriptionId                        TenantId                              State    IsDefault
------------  -----------  ------------------------------------  ------------------------------------  -------  -----------
Hoge Hoge     AzureCloud   00000000-0000-0000-0000-000000000000  00000000-0000-0000-0000-000000000000  Enabled  False
Fuga Fuga     AzureCloud   00000000-0000-0000-0000-000000000000  00000000-0000-0000-0000-000000000000  Enabled  True
```

右端の`IsDefault`欄が`True`になっているものがデフォルトのサブスクリプションです。

違う場合は変更します。

```bash
az account set -s <SubscriptionId>
## 又は
az account set -n <Name>
```

`SubscriptionId`か`Name`を指定できます。

## デフォルトを指定する

Azureのリソース操作につき物の location や resource group のデフォルト値を設定できます。

```bash
az configure --defaults location=<location>
az configure --defaults group=<resource-group>

## まとめて指定も可
az configure --defaults location=<location> group=<resource-group>
```

設定内容の確認

```bash
az configure --list-defaults
```

設定をクリア

```bash
az configure --defaults group=
```

[fzf](https://github.com/junegunn/fzf) を併用して location, group, subscription を設定できます。

```bash
az fzf location
```

詳しくはこちらをどうぞ。

[az fzf \| Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/fzf?view=azure-cli-latest)

## 具体的な例が知りたい

Azure CLIで具体的にどう使ったらいいのか悩んだら、サンプルをチェックしてみましょう。

たとえば、

- Azure CLI を使用してサーバーレス Python 関数アプリを作成する

といった具合でたくさんのサンプルがあります。

[Azure CLI サンプルの完全なリスト \| Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/samples-index?source=recommendations&tabs=service)
プログラマ３５歳限界説

※2024/03/06　この記事は2019年に書いたものです。

## プログラマに年齢はどこまで関係するのか？

よく
「プログラマ３５歳限界説」
というのを耳にする。

理由は

- 新しいことを学習する能力が落ちるから
- 単価が上がるから(客先常駐の場合)
- 管理職へ上がるタイミングだから

というところだろうか。
今年で３５歳になる私にとって、他人事ではない。
ちょっと考えて見ようと思う。

### 新しいことを学習する能力が落ちるから

一般に流れている説として、
年齢が上がるほど学習能力が落ちると言われている。
１０代の頃に比べると、３５歳のほうが物覚えが悪い、と。

しかし。

これはたぶん、すこし本当で、あとは嘘なんだと思う。

たとえば、ポケモンの名前をすべて覚える能力なら、
１０代のほうが高いんだと思う。
つまり、意味を考えず、単に丸暗記する能力なら、
若いときのほうが高いんじゃないか、ということ。

一方で、意味を考えながら覚えるようなことについては、
年齢が上がるほど、経験が増えるほど、論理力が高いほど、
覚える能力が上がっていくんじゃないかと思う。

と考えると、プログラムは「考えて覚える」ものだから、
年齢が上がったら覚える能力が落ちるどころか、
若い頃よりも高まっていると考えられるのではないか。

それから、日常的に勉強や考えるようなことを
しているかどうか、というのもある。

以前の会社の営業の人は、日頃勉強をする人ではなかった。
そういう人は、年齢が上がったほうが学ぶ能力が
上がっていることを自覚できていないのではないか。
だからこそ、先入観による結論が出てくるのではないか。

という気がしている。

自分の実感としても、
高校生の自分と「よーいどん」で勉強すると、
余裕で勝てる自信がある。

ただし、勉強する時間がない、というのはある。

### 単価があがるから

客先常駐限定の話かな。
これは、今はあまりないんじゃないかと思う。
昔は年齢が上がると単価が高くなり、
客先から敬遠されがちになっていたそうだ。

しかし。

むかしから５０代のプログラマが
客先常駐としていたし、今だっている。
単価が高くて年をとっている人が敬遠される、
というのは、あまりないんじゃないかと思う。

ちなみに、昔５０代の人と一緒に仕事をした。
その仕事はVB.NETだったのだが、
その人はそれまでCOBOL中心でJavaを少し、
という人だった。
しかし、ひと月の間にすっかりマスターして、
サクサクとかけるようになっていた。
このことからも、ひとつめの
「新しいことを学習する能力が落ちるから」
というのは違うんだろうなぁと思ってる。

### 管理職へ上がるタイミングだから

これは難しい。
今の日本の多くの組織は、
プログラマの次はシステムエンジニアで、
その次はプロジェクトマネージャで、
というキャリアが多い。
そして

プロジェクトマネージャ>システムエンジニア>プログラマ

という序列がついていたりする。
個人的には、それぞれ必要なスキルが異なるだけで、

プロジェクトマネージャ=システムエンジニア=プログラマ

だと思っている。
ついでにシステムエンジニアという
なんとも曖昧な職は不要では？
とも思ってる。

ちょっとグチっちゃった。

で。
こういうキャリアパスが描かれてしまっているので、
本人が望む、望まないにかかわらず、
プログラマとして続けるのが難しくなってくる面はある。

だからこれに関しては、
働き方や所属している会社によって大きく異なる。
半分、本当ともいえるかな。

### まとめちゃう

実感として、
「プログラマ別に限界とか無い説」
を唱えたい。

そもそも３０，４０代からプログラマになる人もいるし、
年齢による限界っていうのは考えにくい。
プログラマに限定せず、「考える、想像する」職業と考えると、
６０，７０代のデザイナーや建築士なんてザラにいる。
将棋の棋士や数学科の教授や作家だって年齢なんか関係ない。

能力うんぬんというよりも、
環境や固定観念によるものが大きんだと思う。
続けようとすれば、いつまででも能力を向上しながら
続けることが可能だ、という結論になった。

### とはいえ

ひとつだけ。
将棋の羽生さんやMLBのイチロー選手などなど、
多くの一流の人達が似たようなことを言っている。

「情熱を傾け続けることが大切」

と。

そう、プログラマだって同じで、
情熱を持ち続けることが出来るかどうか？
というのは、一番大切なポイントなんだと思う。

### 個人的なこと

では、自分はどうなのか？
というと、
実はいま、プログラムへの情熱が薄れつつある。
いわゆる
「燃え尽き症候群」の1.5歩手前くらいにいる。

だからこそ、こんな記事を書いてみた。

情熱は維持するように工夫するか、
流れに身を任せて、他のことに傾けるか。
そんな分岐点にいる気がする。
いったい僕らはどこまで学べばいいのだろうか

※2024/03/06　この記事は2018年に書いた記事です。

# いったい僕らはどこまで学べばいいのだろうか

転職して、新しい技術を学んでいる。
今まではオープンソースの世界だったけど、
今回は本当にクローズドの世界になった。
例えば Ruby や Python は、自宅で勉強できるけど、
自宅では勉強できない言語をいじっている。
Docker も使えないし、Jenkins でビルドもできない。
世界はホント、広い。
...Mac が恋しい...。

そこでふと考えていたのが、
なんというか、エンジニアっていうのは
何をどこまで学べば良いのだろうか、ということ。
ドンドン新しい技術が生まれてくるし、
かと言って古い技術も使われなくなるわけではないし。

いったい技術の世界はどれだけ広いのか?
思いつく限りの範囲で、書いてみる。

## プログラミング言語

これはもう、信じられないほどの数があるんだと思う。
そのうち、知っているものを並べてみる。

- C
- C++
- BASIC
- FORTRAN
- Java
- JavaScript
- VisualBasic
- C#
- F#
- D
- Go
- Ruby
- Python
- Swift
- kotlin
- COBOL
- Objective-C
- PHP
- Perl
- Haskell
- Smalltalk
- Lisp
- R
- VBScript
- PowerShell

思いつくだけでも 25 言語くらいはある。
プログラミング言語って、2 つくらいやれば
他の言語の習得も容易になるけど、
深いところまで探ろうとすると
ひとつの言語で手一杯になる。
どこまで学べばいいんだ？

## フレームワーク

言語を生で使うよりも、
フレームワークを駆使刷るほうが多いよね。

- Ruby on Rails
- Django
- flask
- .NET
- .NETCore
- ASP.NET
- WordPress
- Vue.js
- React
- Angular
- Java EE
- PlayFramework
- JQuery

JavaScript はフレームワーク天国。
いや、地獄かもしれない。

## 細々としつつも深い知識

メイン技術ではないけど、
知っておいたほうが良いもの。

- 正規表現
- コマンドプロンプト
- Shell スクリプト
- OS の仕組み
- SSH 接続

## OS

実際に使うのは 2-3 種類だけど、
世の中は広いのだ。

- Windows 関連
- Mac
- Linux
- Unix
- AS400

AS400 は IBM のメインフレームで動いてる。
マニアックだけど 30 年前に書いたプログラムが
最新のバージョンでもほぼそのまま動くので、
金融や製造では根強い人気があるとか。

## ネットワーク

ネットワークの仕組み、理解してる?

- TCP/IP
- UDP
- SSL 証明書
- TLS
- WAN
- LAN
- 公開鍵暗号方式
- DNS
- DMZ
- ルーティング

## ハードウェア

これがないとプログラミングできない。

- マザーボード
- CPU
- GPU
- メモリ
- SSD

マザーボード...。

## 暗号技術

暗号を制するものは、世界を制する。

- ハッシュ
- ブロックチェーン
- ワンタイムキー

## その他

- ビジネス
- プロジェクトマネジメント
- 基礎的なデザイン
- aws や azure などのサービス
- VisualStudio とか Vim とかツールの使い方
- DevOpes とか関数型プログラミングとかの思想やポリシー

いやもう書くのにも疲れてきた。

## で、結局なにをどこまで学べばいいのか?

好きなだけ学べば良いんだと思う。
学びたくなければ、学ばなくてもいいし。
学ぶというより、知る、遊ぶ、のほうが適切かもしれないけど。

とはいえ、軸は、たぶん、ふたつ。

- 好きなことを、好きなだけ学ぶ
- 必要な知識を、必要なだけ、学ぶ

「やりたいこと」「必要なこと 」があるなら、
それを実現するために必要なことを学べばいい。

プログラミングそのものが好きなら、
好きなことを好きなだけ、学べばいい。

「どこまで」っていうのは、無いんだな。
いろいろ書いてみた

※2024/03/06　この記事は2018年に書いたものです。

あくまで私の経験から。
ちがうケースもあると思う。

## Web系とSIer系の違い

Web系はお客様がユーザーそのもの(ユーザー企業と呼ばれる)。
なので、コーディングの前提があくまで対ユーザーになる。
だから仕様書は少なくていいし、エビデンスも不要だったりする。
いわゆる「憧れのエンジニア」は多分こっち。

SIer系はお客様がユーザー企業になる。
なので、コーディングの前提はユーザーというよりは企業の担当者向けみたいになる。
ユーザー企業(非エンジニア)に対して仕事をするので、
詳細な仕様書を求められることが多く、
ちゃんと動くことを証明するための画面エビデンス(全機能・全操作分)を
求められることも多い。
いわゆる「IT土方/ブラック企業」は多分こっち。

Web系はとかくコードを書く。
SIer系はとかくドキュメントを書く。

Web系は育成をある程度してくれる。
SIer系は育成とかしない(メンターとかいないので、現場で自分でもがくしかない)。

Web系は服装自由が多い。
SIer系はスーツが多い(エンジニアというより会社員という感じ)。

Web系はリリースが多い(週1回とか)。
SIer系はリリースが少ない
(バグがない前提だから複数リリースしない事が多い、Webシステムの場合は月1回とかはあった)。

Web系は自動テストが多い。
SIer系は打鍵テストが多い
(エンジニアのレベルにばらつきがあるからだと思う)。

Web系はエビデンスが最小限。
SIer系はエビデンスが最大限
(押す、スクショとる、エクセルに貼り付ける、をひたすら繰り返す)。

Web系はエンジニアの最低レベルが高い
(ある程度はできる人が多い)。
SIer系はエンジニアの最低レベルが低い
(if文がギリわかる新人からペーパープログラミングしてた超ベテランまで幅が広い)。

Web系は人の入れ替わりが少ない
(もちろん転職や引き抜きもあるだろうけど)。
SIer系は人の入れ替わりが多い
(契約終われば終了だし、突然他のプロジェクトに持っていかれたりする)。

Web系はWeb系。
SIer系はオンプレミス(ローカル環境で動くアプリ)が多い。

Web系はスキルが身につく。
SIer系は上手く行けばスキルが身につくが、ヘタなところにいくと何も身につかない。

Web系はある言語や環境に専門的になれる(受託開発ではない場合)。
SIer系は幅広く学ぶことができる
(C#,Python,RPG(ゲームではなくてIBMの言語),DBもOracle,DB2,MySQLなど)。

## 個人的にいいなぁと思った環境

やり方は任せてくれるところで、人間関係が良好なところ。
心理的安全性とまでいかなくとも、思いやりがある人が多いところ。
デュアル以上のモニタをくれるところ。
※追記 MacでRetinaとかならデュアル出なくても良い。
あと、不可能な納期を押し付けて来ないところ。

## Web系にSIerの人が来たらすぐに馴染めるか？

もはや人によるとしか言えない。
自由な雰囲気に馴染めるかどうか。
戸惑う人のほうが多そう。
ただ、スキル的にはSIerは知らないスキルの習得が得意な人が
多い印象があるので、スキルの問題はないと思う。
あと、Macは珍しくて操作を知らない人のほうが多いと思う。

## プログラミングに飽きる？

飽きる。
そりゃ飽きる。
人間だもの。
飽きたらちょっと離れて、やりたくなるのを待ったりする。
エンジニアリングに完全に興味がなくなったら、
本屋さんとかで働きたい。

## アルゴリズムは役立つか？

直接役に立つ場面は多くないのかな。
詳しくないから多分だけど、
処理速度がすごく求められる場面では逆に知らないと太刀打ち出来ないイメージ。
デザインパターンも合わせて学ぶといいと思う。

## プログラム上達の最短ルート

王道なし。

体系的に学んだことがないから、むしろ教えてほしい。
体感的に言うと、
入門書読んで、なにか簡単なものを作ってみて、いじってみる。
小さく初めて、ちょっとずつ学ぶ感じ。
入門書100回読んだりProgate100周するよりも、
入門が終わったら何か作ってみたほうがいいと思う。
自分の頭を回してみる必要がある。

あとは、言葉を覚えること。
クラスとか、メソッドとか、正規化とか。
そういう意味で、基本情報技術者試験はオススメ。
実務に役立たないと言われるけども、
学ぶ上での基礎にはなる。

## 他言語を学ぶコツ

王道なし。

これもまた教えてほしい。
多分、まずは言語の思想を知ること。
オブジェクト指向なのか、関数型なのか、
動的型付けなのか、静的型付けなのか。
思想を知った上で、最低限を学ぶ。
変数・if文・for文等はほぼすべての言語にあるから、
その書き方を学べばいいと思う。

## コードレビューのコツ

わからん。
場面によりけりだと思う。
処理速度より読みやすさが必要な場面なら、読みやすいかどうかだし。
時と場合によるのでは。
ただ、どうしてそういう書き方をしたのか、
理由が説明できないコードはNGだと思う。
理由は論理的以外にも、
「時間がなくて」とか「思いつかなくて」でも良い。
そして、責めないこと。
責めても得られるものはない。

## 便利ツール

Visual Studio Codeがすごくいい。
AtomもSublimeもBracketsもいいが、
今はVSCodeがひとつ抜けている感じがする。
プラグインが豊富で、あらゆる環境に対応してくれる。

DBクライアントは
OracleのSQLDeveloperがいい。無料で、会員登録は必要。
特別優れたところは無いけど、見た目がわかりやすい。
Windowsにもあるというのが強み。

AdobeXDは素敵なツール。
UIを考えるのに便利。制限付き無料、会員登録必要。

Todo管理は
Microsoft To-Doが好き。
チェックリストを階層化できるし、
チェック項目ごとにメモを書ける。

Trelloも便利。
カード一覧で見れて把握しやすい。

MarkdownのメモにはVSCode。

Slackも使う。
最近はMicrosoft Teamsに注目してる。

あとは...無いものは作ればいいので作る。

## フォント

フォント好きなのでコーディング用フォントも使ってたりする。
最低限、ゼロとオーの区別が付きやすいフォントがいい。
あと等幅がいい。

Fira Code
リガチャという見せ方がついてるフォント。

https://qiita.com/tonkotsuboy_com/items/e512bfa5db7593b87d74

なれるとわかりやすくて便利。

Myrica
シャープでかわいくて読みやすい。

## 最近気になっていること

Vue.jsがすごくいい。
これからも伸びそう。

Microsoftの勢いがすごい。
Appleの株価を抜いたし。

機械学習は面白そう。

インフラ・プログラマ・デザイナーの垣根が
どんどん下がっていってる気がする。

味噌ラーメン屋。北海道絶対うまい。

https://r.gnavi.co.jp/dhe1jmek0000/
1行で発狂するコード

## 人は1行の記述で死ぬこともある

公開からコンスタントに閲覧をいただいている以下の記事。需要がありそうなので、もう1つ記事を書いてみようと思う。

https://qiita.com/jaque/items/a82929709407d5c3beb2

題材は前回同様のJavaScriptのクソコードではあるが、前回は冗長を極めたクソコードであるのに対し、今回はたった1行である。

1行なのに、なんと示唆~~深い~~に富む(決してほめていない)コードだろうか。

## 不可思議なコード

では、実際に見てみよう。

```javascript
return a = a >= 10 ? 10 : a >= 5 ? 5 : a >= 3 ? 3 : a >= 2 ? 2 : 1, z * a;
```

これを見て、何が `return` で返されるかわかります？

### 代入演算子

最初見たとき、代入文 `a = ×××` の評価値って何になるのかな？ `a` が `return` されるのかなと思いました。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Assignment
 > 割り当て操作は、**割り当てられた値として評価されます。**
 
 JavaScriptの仕様を確認し、「`return a = ×××` は、`a` がローカル変数である限り、  `return ×××` ということか、冗長だな」と判断しました。

 しかし、このコードは `a` を返すことはありません。

 ### 閑話休題(?) 三項演算子

 この1行の大半を占める三項演算子 `? :` は、もはや筆者には見慣れたものだ。規約で使うなといわれることが多いが、私はそれほど抵抗はない。
 しかし、演算子の優先順位が重要なこの例示の1行では、 `?` の前の条件式部分には、せめて `()` で括って意味のまとまりを見せておきたいかな？
 `(a >= 10) ? 10 : (a >= 5) ? 5 :  ………`

 三項演算子のネストがひどいのではないかという読者も多いだろうが、筆者はこれを見たときにはそんなに感情は動かなくなった。`a` を対象として比較する一貫性があるので、まだ見られるコード。

 ### カンマ演算子（コンマ演算子）

 この行の最後は、`1, z * a` で終わる。私は当初、すべての三項演算子で 偽 と判定されたら、`z * a` が返されるのかなと思っていた。カンマ演算子の仕様を見てみよう。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comma_operator

> それぞれの演算対象を（左から右に）評価し、最後のオペランドの値を返します。

ただ、筆者の理解は間違っていた。このカンマ演算子は、優先順位が最低位の演算子であることを見落としていた。しかも、前方の 代入演算子 `=` よりも後に評価される。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_precedence#%E4%B8%80%E8%A6%A7%E8%A1%A8

つまり、`1, z * a` をカタマリとして理解してはダメで、最後のオペランドとしては `z * a` のみであり、`return` される対象は、`return` から一番遠い、`z * a` なのだ。
`,`の前の `a = a >= 10 ? 10 : a >= 5 ? 5 : a >= 3 ? 3 : a >= 2 ? 2 : 1` は、返す値を決めるために計算しているだけだったのだ。

~~いみじくも~~Wikipediaを見ていると、以下のようにある。

https://ja.wikipedia.org/wiki/コンマ演算子
> 左被演算子を評価し**その値を捨て**、その後右被演算子を評価する演算子である。

だいぶ後ろに記述されたカンマ演算子ごときでその値が捨てられるのである。頭から机上デバッグしていたレビューアーは、「捨てんのかい！」とツッコミを入れずにはいられない。

### 1行にすることの罪

1行で何でもしようとすると、デバッガでブレークポイントを置きづらいのも苛立つポイントである。デバッグ目的で2行以上に変更すればブレークポイントも貼れるのだが、改行によって処理が変わらないか確認するのも難しい。

## 処理の順序

前述の不可思議なコードを書き直してみよう。
```javascript
if(a >= 10) {
    a = 10;
}
else if(a >= 5) {
    a = 5;
}
else if(a >= 3) {
    a = 3;
}
else if(a >= 2) {
    a = 2;
}
else {
    a = 1;
}
return z * a;
```
上記は、解釈しやすいように記述しているので、行数でいえば冗長かもしれない。ただし、`return`で何が返ってくるのは`z * a`とわかりやすくなった。

せめて下に示すぐらいには分けられなかったのかね。

```javascript
const b = ((a >= 10) ? 10 : (a >= 5) ? 5 : (a >= 3) ? 3 : (a >= 2) ? 2 : 1);
return z * b;
```

そうそう、別に `a` に代入する（`a` に書き戻す）必要はないよね。

## まとめと学び

+ 代入文の評価値は、代入した値である
+ 三項演算子はネストもできる
+ カンマ演算子の評価値は、最も右にあるオペランドである
+ 可読性の観点から1行書く限度がある

この1行は、結果的に学びにはなった。だからといって感謝はしていない。
オススメの言語はなにか？

※2024/03/06　この記事は2018年に書いたものです。

名前がカッコいいやつをやればいいと思う。
半分冗談、半分本気。
あまりオススメとかはない。
好きなのをやればいいと思う。
それだけだと物足りないので、ちょっとだけまとめてみる。
大きく分けると「2種類+コマンド+SQL」を学ぶと良いと思う。

## 言語2種類

いろんな分類方法はあれども、
プログラムは大きく分けて

- 静的型付け言語
- 動的型付け言語

に分かれる。
これらを一つづつ覚えておくと、何かと便利。

動的型付けだけだと、型への意識が薄くなるので、
DBが絡みで困る場面が出てきそう。
特に日付書式まわりで、エラーの原因を特定するのが
苦手になりそうな感じがする。

静的型付けだけだと、、、
うーん、困る場面は思いつかないけど、
RubyやJavaScriptは幅広く使われているから、
キャリアや面白さという意味で幅が狭まるかな。

### 静的型付け言語

- C#
- Java
- Go
- Swift
- Scala
- C/C++

代表的なのはこの辺りかな。
個人的に好きなのはC#。
VisualStudioがなんといっても優秀すぎる。
これは他の言語にない最大のメリット。
IntelliSenseの優秀ぶりがすごい。
今はVisualStudio for Macもあるし、
ザマリンを使えばWin,Mac,Android,iOSのアプリを
C#で書くことが出来るという強みがある。

そういと、Javaにも同じような強みがある。
プラットフォームを選ばないので、
未だに幅広く人気がある。

C/C++はやや難易度が異なるけども、
言語の王様という意味で学習しておくのは良いと思う。
メモリ管理とか、仕組みを学べる。

###動的型付け

- Python
- Ruby
- JavaScript
- PHP

好きなのはPython。
入門に最適でいて、いま絶好調の言語でもある。
Rubyはとても優しくて良い言語。
単独で用いるというよりはRailsとセットなイメージ。
JavaScriptはWeb関連なら必須。
PHPはディスられがちだけど、WordPressが優秀だし、
デザイン系なら覚えて損はなし。

##コマンド

- bash
- コマンドプロンプト(正式名忘れた)
- PowerShell
- zah

Windows10ならbashが使えるし、
PowerShellはオープンになったからMacでも使える。
この辺どれかひとつ、扱える様になると生産性が格段に上がる。
ファイルのリネームやコピー、ファイル名をまとめて抽出など、
細かい作業をコマンドでちゃちゃっと出来ると、
早くてカッコいい。
ん?RubyでもPythonでも出来るって？
環境があるならばそれでも良いと思うけど、
非エンジニアのPC/Macに、
Ruby/Pythonの環境が果たして入っているかな？

##SQL

Sier系ならば、言語よりも何よりも先に覚えたほうがいいやつ。
書き方は覚えなくてもいいけど(私は未だにInsert文の書き方覚えてない)、
一通り使えることは必須。パフォーマンスにも大きく影響する。
最低限、分析関数(ウィンドウ関数)とCASE式を覚えればなんとかなる。
SQLは極めれば、そのままデータ解析もできる。
ちなみに、Sier系はよく「この処理をSQLで書くか、コードで書くか」を迷うことが多い。
いわゆる富豪プログラミングができないケースが多いからだと思う。

##結論

好きな言語をやればいいと思う。
どのみち業務では、業務にあった言語を使うんだし。
どんな言語でも対応できるようになってると強い。
思い通りに動かないときの対処方法

※2024/03/06　この記事は2018年に書いたものです。

エラーが出てないけど、思っているのとはちがう結果が出るときの対処を書いてみた。  

##思ったとおりに動いている最前線はどこか？  

 思ったとおりに動いている最前線を探す。
 例えば、足し算アプリを作るとして、結果が正しく帰ってこない時は、 
入力値のフォーマットは正しいか？
入力値は処理にわたされているか？
 処理はきちんと動作しているか？
 出力時に結果を出力するようになっているか？
 このあたりを確認して、
処理までは正しい、ということがわかれば、 あとは出力部分を確認していくだけ。

##入力・処理・出力のどこに問題があるか切り分ける。

 プログラムの基本は入力・処理・出力なので、ここをベースに考える。
 コードを読むときもこれを意識すると便利。
 入力場所はただしいか？
入力値がまちがっているのか？
入力されたデータは処理に届いているか？
 処理はきちんと動作しているか？
 出力先が書かれているか？
出力するタイミングは正しいか？

##putsやprintを使ってコンソールに結果を表示してみる。 

putsの場所を色々と変えてみて、どこまではうまく行っているのか探る。

##ステップ実行できるなら、ステップ実行をしてみる。 

ステップ実行をしながら値を確認してみる。
 実行の順序が想定どおりになっているか流れを追ってみる。

##出力箇所の値を計算結果ではなくて、固定の値にしてみる。 

出力箇所の値をなにか固定の値にしてみる。
 設定した固定の値が出力されるならば、出力以前の部分に問題がある可能性が高い。
 設定した固定の値が出力されなければ、別の箇所の値が出力されている可能性が高い。

##親は正しく動いているか確認する。 

そもそも、元になっているクラスのメソッドが正しくうごいているか確認してみる。

##出力がまとめられていないか確認する。 

for文の中で出力処理を書いていたりする場合、 
プログラムの構成によっては最後の結果だけ出力されていたりする。
 ５回ループさせて、５行の結果がほしいのに、５回目の結果しかでない、 そういうこともある。

##最小限度の構成で正しく動くものを作ってみる or サンプルを見てみる。 

計算処理や値の受け渡しをひとまず無視して、 イベントが起きたら値が表示される、
 という感じの最小限度の構成で正しく動くものを作ってみる。
 動かないものと比較したり、
 最小限度のものに肉付けしていったりしてみる。
 あるいはサンプルを見つけて動かしてみる。
いきなり正解に行くのではなく、小さく初めてみる。

##単純なミスがないか確認してみる。 

変数のスペルミスはないか？ 
変数のスコープはまちがってないか？
 書式の間違いはないか？日付や時間の区切り文字、小数点まで表示、など。 
必要な所をコメントアウトしてないか？ 
if文やfor文、メソッドの終了箇所を間違ってないか？

##環境設定に間違いが無いか確認する。 

環境設定に誤りはないか？
DBのスキーマ名はあっている？ホストは？などなど。
「まさかここじゃないよな」というところに、問題があったりする。
思い込みは敵。

##記載場所を変えてみる。

実行順序に問題がある可能性がある。
AのあとにBが実行されるつもりで書いていたのに、  
実はAのあとにDが実行されていたりすることもある。 問題箇所を見つけるためにも、
コードを書いてある場所を変えて試してみる。

##とにかくいじってみる。 

gitやフォルダコピーでもなんでもいいので、バックアップをとっておいて、
 とにかくいじって、実行してみる。

##ググってみる。 

たとえばRailsのGreapを使っていて、かつ初心者なら
 [rails greap api サンプル]
 [rails greap api 入門] 
[rails greap api はじめて]
 等で探してみる。
 あるいは、ITに特化したサイトで探してみる。
 Qiitaとかhatenaとか。 

##質問してみる。 

周りに人がいれば聞いてみる。
 掲示板とかも利用してみる。 [[https://teratail.com/]](https://teratail.com/%5D)
ただし、セキュリティには十分注意すること。

##お茶にする。 

いったんプログラムの事を忘れて美味しいコーヒーでも淹れてみる。
 散歩してみる。 
帰る。
お風呂に入る。
 寝る。
なんでもいいから、いったん離れてみる。
 いったん離れてみると、視野が広がってアイデアが出てきたりする。

##とにかく思い込みから離れる 

思い込みの魔法に掛かっていることを意識すること。
大体、気がつくとなんでもないミスだったりする。

##ここに書いてある内容を忘れること。  

ここに書いたのはひとつの方法論でしか無い。
未来永劫使えるわけでも、誰にでも、いつでも当てはまるわけではない。
なので、必要な部分だけ持っていくこと。
あとは、さっさと忘れてしまうこと。
今までに読んだ本、のうち、覚えているものリスト

※2024/03/06 この記事は2018年に書いたものです。

# 読んだ本リスト  

全然覚えてないなぁ。
思い出せたものだけ。
絶版になったものもあるかも。  

## 技術系  

具体的なコードの本(C#とかPythonとか)が少ないのは、
あまり本で勉強しなかったから...。
知らないコードを読む、解析する、触ってみる、考える、理解する。
ひとつ言語がわかるようになると、あとは入門書なくても大丈夫だと思う。
ただし、ASP.NETやRailsみたいなのはコードではなくて仕組みなので、
知らなければ入門から学んだほうがいいと思う。
だたこれもまた、Railsが分かればASP.NETもDjangoも大体、わかると思う。

### 全般的な知識系

直接的に役立つというよりは、間接的に役立つ知識。
そしてコーディングの生産性は案外、こういう間接知識に左右されたりする。  

- プロダクティブ・プログラマ
- エンジニアのための時間管理術
- リーダブルコード
- オブジェクト指向でなぜつくるのか
- プログラムはなぜ動くのか
- 暗号技術入門 第3版　秘密の国のアリス
- 正規表現技術入門 ――最新エンジン実装と理論的背景
- アジャイル・サムライ  

### WEB・ネットワーク系 

インフラ系でなくても、最低限度の知識を知っておくと役立つ。
基礎を知っておくと、解決方法のアイデアが増えると思う。 

- 3分間ネットワーク基礎講
- 3分間HTTP&メールプロトコル基礎講座
- Webを支える技術 -HTTP、URI、HTML、そしてREST

### DB・SQL系

Web系ならあんまりいらないかな...と思ったけど、
データ解析やAIが出てきてるし、処理速度にも大きく影響するし、
SQLやDBの知識はあったほうがいい。
SQLは分析関数くらいまで理解できれば十分だと思う。
[理論から学ぶデータベース実践入門]までは読まなくてもいいと思う。

- SQL 第2版 ゼロからはじめるデータベース操作
- SQL実践入門──高速でわかりやすいクエリの書き方 
- 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL

### Java

具体的にやったのはこれぐらい。とても良い本。
著者の結城浩さんの本はどれも良い本なのでオススメ。

- Java言語プログラミングレッスン 第3版

### Python

細かい面倒ごとを自動化。
環境に問題が無いなら、Rubyでもいいと思う。

- 退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

## クリエイティブ系  

世界は思っているより広い。
せめてデザインの基礎くらいは抑えておいたほうがいい。
デザイナーと仕事をするときに役に立つし、
デザインに関する考え方は応用範囲が広い。

- クリエイティブ・マインドセット 想像力・好奇心・勇気が目覚める驚異の思考法
- デザイン思考が世界を変える (ハヤカワ・ノンフィクション文庫)
- 誰のためのデザイン？　増補・改訂版
- ノンデザイナーズ・デザインブック [第4版]
- なるほどデザイン〈目で見て楽しむ新しいデザインの本。〉
- 佐藤可士和の超整理術
- 問題解決ラボ――「あったらいいな」をかたちにする「ひらめき」の技術
- アイデアのつくり方
- デザインのデザイン

## 人に伝える系

エンジニアは、非エンジニアと話をする機会も多い。
最低限、伝わる文章がかけるといいね。

- 数学文章作法 基礎編
- 理科系の作文技術
- 伝わる・揺さぶる!文章を書く
- 話すチカラをつくる本
- あなたの話はなぜ「通じない」のか

## その他読み物系

役に立つとか、立たないとか、まぁ置いといて。
面白かった本。

- 職場で、家で、学校で、働くあなたの疲れをほぐす すごいストレッチ
- いかにして問題をとくか
- 人工知能は人間を超えるか ディープラーニングの先にあるもの
- コンテンツの秘密 ぼくがジブリで考えたこと (NHK出版新書)
- 角川インターネット講座 (1) インターネットの基礎情報革命を支えるインフラストラクチャー
- 上達の法則―効率のよい努力を科学する
- 諦める力 〈勝てないのは努力が足りないからじゃない〉
- 大局観 自分と闘って負けない心
- 決断力
- 直感力
- 海馬　脳は疲れない
- 単純な脳、複雑な「私」 (ブルーバックス)
- 進化しすぎた脳―中高生と語る「大脳生理学」の最前線
- のうだま1 やる気の秘密 (幻冬舎文庫)
- 脳には妙なクセがある (新潮文庫)
- 平常心を鍛える 自衛隊ストレスコントロール教官が明かす「試練を乗り切るための心の準備」
- ゼロ―――なにもない自分に小さなイチを足していく
- 脳科学は人格を変えられるか?
- 世界一やさしい問題解決の授業―自分で考え、行動する力が身につく
- 投資家が「お金」よりも大切にしていること (星海社新書)
- 数学ガールシリーズ
- 昭和史(半藤一利)
- ファスト&スロー(上) あなたの意思はどのように決まるか? (ハヤカワ・ノンフィクション文庫)
docker内でlaravel作成後にアクセスした時の「file not found.」エラー

完全honaki用
悪しからず

# エラー内容

```
docker-compose exec php bash
```
の後に
Laravelプロジェクトを作成するコマンド
```
composer create-project "laravel/laravel=6.x" . --prefer-dist
```
を行い
http://127.0.0.1　
または
http://localhost
にアクセスしたときに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3726068/a8e8f14d-f637-b8a2-3bbe-fbdc21207355.png)
このエラーが出てきた

# 解決策
https://qiita.com/isaatsu0131/items/f472fd0b7a82e3eb8e53