20200122のGitに関する記事は15件です。

【Git】fatal: protocol error: bad line length character: usag の解消方法

はじめに

develop ブランチが更新されたので、pull しようとしたら、
fatal: protocol error: bad line length character: usag
が発生しました。
なかなか解決できず、2時間ほど時間を無駄にしました。

最初に結論からいうと、

.gitconfig を見直そう!!!!

環境

  • macOS Catalina バージョン10.15.2
  • git 2.21.1

やったこと

  • .bashrc の見直し(効果なし)
  • git のアップデート(効果なし)
  • 対象のブランチを削除して、取得し直す(効果なし)
  • プロジェクトを clone し直す(効果なし)
  • 仮想環境で clone してから ローカルに持ってくる(効果なし)
  • .gitconfig を見直す

.bashrc の見直し(効果なし)

参考文献より、

ググってみると、リモート先のサーバーにsshでログインする時に表示されるメッセージが悪いとか、
ssh関連で、.bashrcとか.zshrcとかの設定を見なおしたよ、というような内容が多い。

でした。
ただ、自分の Mac の Terminal は fish を使っています。
bash も zsh も使っていません。

念のため、.bashrc を確認しましたが、何も書かれていませんでした。
さらに念のため、.bashrc を消してみましたが、改善しませんでした。

git のアップデート(効果なし)

git のバグかと思ったので、 git のアップデートしました。
mac で HomeBrew を使用している方は、下記のコマンドでアップデートできます。

brew update
brew install git

XCode の CommandLineTools での git を使っている方は、 which コマンドで path が合っているか確認しましょう。

which git
# /usr/local/bin/git となっていれば OK

これでは改善しませんでした。

対象のブランチを削除して、取得し直す(効果なし)

今回は develop ブランチを pull しようとしたときに発生しました。
なので、 develop を削除して、取得し直そうと思いました。

git checkout master
git branch -D develop
git checkout -b develop origin/develop

これでももちろん改善せず。

プロジェクトを clone し直す(効果なし)

この際ヤケクソです。
プロジェクトを新たに clone することにしました。

git clone https://github.com/<ユーザー名>/<プロジェクト名>.git

ここでも、fatal: protocol error: bad line length character: usag が発生しました。
そこで、git そのものがバグっていると気づきました。

.gitconfig を見直す

rm ~/.gitconig
touch ~/.gitconig
git config --global user.email example@example.com
git config --global user.name example

と、.gitconfig を削除して、name と email を設定し直しました。
これで、エラーが発生しなくなり、clone も pull もできるようになりました。

最後に

どのタイミングでバグったのが気になるところですが、無事解消することができました。

参考文献

[エラー] bad line length character: Sysl - KayaMemo

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【macOS Catalina】CatalinaでJenkinsからの「git lfs」を通す【Jenkins】

はじめに

以下の記事を参考にgit lfsのコマンドが通らない問題を対処していたらCatalina特有の問題にぶつかりました。

【Jenkins】stderr: git-lfs filter-process: git-lfs: command not found - コガネブログ
http://baba-s.hatenablog.com/entry/2019/05/19/214600

2019年のMacBookなので、Mojaveにダウングレードすることも出来ず、一瞬Macを買い直そうかと思いましたが、なんとかする方法があったのでJenkinsで「git lfs」コマンドを通すまでの一連の設定方法を記事にしました(大体上記の記事とおんなじです)

環境

MacBook Pro(16-inch,2019)
macOS Catalina 10.15.2
Jenkins 2.204.1
git 2.25.0
Git LFS 2.9.2
(git、GitLFSはインストール済み)
(gitリポジトリにはGitLFSが入っています)

概要

上記のMacBookでgit cloneするだけのテストジョブを作っていたところ以下のようなエラーが出ました。

stderr: git-lfs filter-process: git-lfs: command not found

上記の環境の通り、GitLFSはインストール済みです。が、Jenkinsからの実行だとコマンドが通らないようなので、通るように設定します。

対応

原因はGitLFSの実行ファイルが「/usr/local/bin/」にあり、Jenkinsからだとパスが通らない為になります。
なので、シンボリックリンクを作ってパスが通るようにします。

SIPを無効化する

ということで、「/usr/bin/」にシンボリックリンクを作るのですが、システム保護(SIP)があるので無効化します。

  • まず、Macをリカバリーモードで起動します。 一度電源を切り、Cmd+Rを押しながらMacを起動します(リンゴマークが出れば離してOK)
  • 管理者アカウントのアイコンが表示されたウィンドウが出てくるので「次へ」をクリックし、パスワードを入力、ログインします。
  • 画面上部のメニューバーから「ユーティリティ→ターミナル」をクリック
  • ターミナルでcsrutil disableを実行し、再起動します
  • これでSIPが無効化されます。

この設定をしないとOperation not permittedと怒られます。

(Catalina)「/usr/bin/」の読み取り専用を一時的に無効化する

Catalinaでは「usr」などのディレクトリが標準で読み取り専用になります。

macOS 10.15 CatalinaでファイルシステムがRead-Onlyになる仕様はオプトアウトなしで、完全に無効にすることは不可能。 | AAPL Ch.
https://applech2.com/archives/20190610-read-only-system-volume-apfs-refresh.html

したがって、記事の通りに「usr/bin」にシンボリックリンクを作ろうとするとln: cannot create /usr/bin//git-lfs : Read-only file systemと怒られます。

なので下記のコマンドを実行します。

sudo mount -uw /

この設定は再起動すると元に戻るので注意してください。

シンボリックリンクを作る

以下のコマンドを実行します

sudo ln -s /usr/local/bin/git-lfs /usr/bin/

これまでの設定がうまくいっていれば、コマンドが通るはずです。

以上で、git lfsコマンドが通るようになり、GitLFSを使っているリポジトリでもクローンできるようになったはずです。

Jenkinsのジョブで「Git LFS pull after checkout」を追加

「ソースコード管理→追加処理」から「Git LFS pull after checkout」を選択して、処理を追加します。
これを忘れるとUnityから開けないファイルが発生するようです。

おわりに

記事を書きながら調べてみるとPATHを設定するシェルを書く解決方法もあるみたいです。

[JENKINS-52857] Cannot find git-lfs when it is not installed in /usr/bin/ - Jenkins JIRA
https://issues.jenkins-ci.org/browse/JENKINS-52857?focusedCommentId=380803&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-380803

今回はやりませんでしたが、ご参考までに。

Catalinaでは、今回の問題以外にも、UnityがHub経由から出ないとインストールできない問題があったり色々悩まされることが多いです。つらい。

参考文献

・初心者向け MacでOperation not permittedの解決方法 - Qiita
https://qiita.com/iwaseasahi/items/9d2e29b02df5cce7285d

・SIP is disabled, but /usr/bin is write protected anyway (macOS Catalina beta 10.5) - Stack Overflow
https://stackoverflow.com/questions/57440334/sip-is-disabled-but-usr-bin-is-write-protected-anyway-macos-catalina-beta-10

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【macOS Catalina】Catalinaでstderr: git-lfs filter-process: git-lfs: command not foundに対応する【Jenkins】

はじめに

以下の記事を参考にgit lfsのコマンドが通らない問題を対処していたらCatalina特有の問題にぶつかりました。

【Jenkins】stderr: git-lfs filter-process: git-lfs: command not found - コガネブログ
http://baba-s.hatenablog.com/entry/2019/05/19/214600

2019年のMacBookなので、Mojaveにダウングレードすることも出来ず、一瞬Macを買い直そうかと思いましたが、なんとかする方法があったのでJenkinsで「git lfs」コマンドを通すまでの一連の設定方法を記事にしました(大体上記の記事とおんなじです)

環境

MacBook Pro(16-inch,2019)
macOS Catalina 10.15.2
Jenkins 2.204.1
git 2.25.0
Git LFS 2.9.2
(git、GitLFSはインストール済み)
(gitリポジトリにはGitLFSが入っています)

概要

上記のMacBookでgit cloneするだけのテストジョブを作っていたところ以下のようなエラーが出ました。

stderr: git-lfs filter-process: git-lfs: command not found

上記の環境の通り、GitLFSはインストール済みです。が、Jenkinsからの実行だとコマンドが通らないようなので、通るように設定します。

対応

原因はGitLFSの実行ファイルが「/usr/local/bin/」にあり、Jenkinsからだとパスが通らない為になります。
なので、シンボリックリンクを作ってパスが通るようにします。

SIPを無効化する

ということで、「/usr/bin/」にシンボリックリンクを作るのですが、システム保護(SIP)があるので無効化します。

  • まず、Macをリカバリーモードで起動します。 一度電源を切り、Cmd+Rを押しながらMacを起動します(リンゴマークが出れば離してOK)
  • 管理者アカウントのアイコンが表示されたウィンドウが出てくるので「次へ」をクリックし、パスワードを入力、ログインします。
  • 画面上部のメニューバーから「ユーティリティ→ターミナル」をクリック
  • ターミナルでcsrutil disableを実行し、再起動します
  • これでSIPが無効化されます。

初心者向け MacでOperation not permittedの解決方法 - Qiita
https://qiita.com/iwaseasahi/items/9d2e29b02df5cce7285d

こちらの記事に写真付きで解説されていますのでよく分からなかったら併せて見ると良いかも。

この設定をしないとOperation not permittedと怒られます。

(Catalina)「/usr/bin/」の読み取り専用を一時的に無効化する

Catalinaでは「usr」などのディレクトリが標準で読み取り専用になります。

macOS 10.15 CatalinaでファイルシステムがRead-Onlyになる仕様はオプトアウトなしで、完全に無効にすることは不可能。 | AAPL Ch.
https://applech2.com/archives/20190610-read-only-system-volume-apfs-refresh.html

したがって、記事の通りに「usr/bin」にシンボリックリンクを作ろうとするとln: cannot create /usr/bin//git-lfs : Read-only file systemと怒られます。

なので下記のコマンドを実行します。

sudo mount -uw /

この設定は再起動すると元に戻るので注意してください。

シンボリックリンクを作る

以下のコマンドを実行します

sudo ln -s /usr/local/bin/git-lfs /usr/bin/

これまでの設定がうまくいっていれば、コマンドが通るはずです。

以上で、git lfsコマンドが通るようになり、GitLFSを使っているリポジトリでもクローンできるようになったはずです。

Jenkinsのジョブで「Git LFS pull after checkout」を追加

「ソースコード管理→追加処理」から「Git LFS pull after checkout」を選択して、処理を追加します。
これを忘れるとUnityから開けないファイルが発生するようです。

おわりに

記事を書きながら調べてみるとPATHを設定するシェルを書く解決方法もあるみたいです。

[JENKINS-52857] Cannot find git-lfs when it is not installed in /usr/bin/ - Jenkins JIRA
https://issues.jenkins-ci.org/browse/JENKINS-52857?focusedCommentId=380803&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-380803

今回はやりませんでしたが、ご参考までに。

Catalinaでは、今回の問題以外にも、UnityがHub経由から出ないとインストールできない問題があったり色々悩まされることが多いです。つらい。

参考文献

・初心者向け MacでOperation not permittedの解決方法 - Qiita
https://qiita.com/iwaseasahi/items/9d2e29b02df5cce7285d

・SIP is disabled, but /usr/bin is write protected anyway (macOS Catalina beta 10.5) - Stack Overflow
https://stackoverflow.com/questions/57440334/sip-is-disabled-but-usr-bin-is-write-protected-anyway-macos-catalina-beta-10

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

pre-commitとtextlintを使ってHTMLに潜むゼロ幅スペース文字や記号の表記ゆれを倒す

概要

括弧や数字の全角半角が表記揺れしていたり、href内にゼロ幅スペースが紛れ込んでいてリンク切れが起こってしまったりすることをtextlintを使って防ごうという記事です。

サクッとページ単位で確認できればいい方はこちら

textlintとは?

文章の校正をしてくれるリンターツールです。漢字よりひらがなのほうがいい場合や、「てにをは」がおかしいような文章を指摘してくれます。

導入手順

1. プロジェクトの作成

※ この工程はpackage.jsonを生成するものです。すでにある方はスキップしてください。

npm init

2. パッケージのインストール

npm install --save-dev textlint textlint-rule-prh # textlint関係
npm install --save-dev husky lint-staged # pre-commit関係

3. pre-commitが動作するように設定する

package.jsonに次の項目を追記してください。

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.html": "textlint"
  }
}

4. textlintの設定ファイルを作成

./node_modules/.bin/textlint --init

作成された.textlintrcファイルの中身を次のように上書きしてください。
これでtextlintがHTMLファイルを読むようになり、オリジナルの辞書を利用するようになります。

※今回は使いませんがHTMLを読むためのプラグイン「textlint-plugin-html」については後述します。

{
  "filters": {},
  "rules": {
    "prh": {
      "rulePaths": ["./prh.yml"]
    }
  },
  "plugins": {
    "@textlint/text": {
        "extensions": [".html"]
    }
  }
}

5. 辞書ファイルを作成

package.jsonと同じ階層にprh.ymlというファイルを作成します。
中身を次のように設定してみてください。

version: 1
rules:
  - expected: VS Code
    patterns: VSCode
    prh: 正しい表記はVS Code

  - expected: ""
    patterns: "/[\\u034f\\u200b\\u200c\\u200d\\u200e\\u200f\\u2028\\u2029\\u202a\\u202b\\u202c\\u202d\\u202e\\u2061\\u2062\\u2063\\ufeff]/"
    prh: ゼロ幅スペースを検出しました

項目を増やしたいときは次の塊を追加することで対応できます。patternsには正規表現も利用できますし、リストで複数項目設定することもできます。

  - expected: 正しい表記
    patterns: 検出する表記
    prh: エラーメッセージ(説明文)

参考:prh/prh.yml at master · prh/prh

6. 試してみる

プロジェクト内に適当なHTMLファイルを作成します。たとえば、test.htmlなど。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p>私はVSCodeが好きです</p>
<p>ここに→"​"←ゼロ幅スペース文字がいます</p>
</body>
</html>

このHTMLファイルがpackage.jsonと同じ階層にあるとき、次のようなコマンドでリンターに検査させられます。

./node_modules/.bin/textlint test.html

するとおそらく次のようなログがでるはずです。

D:\dummy\dummy\test.html
  10:6  ✓ error  VSCode => VS Code
正しい表記はVS Code           prh
  11:9  ✓ error  ​ =>
ゼロ幅スペースを検出しました  prh

✖ 2 problems (2 errors, 0 warnings)
✓ 2 fixable problems.
Try to run: $ textlint --fix [file]

出ない場合は、node_modulesフォルダを削除し、npm iコマンドを実行してみてください。

7. コミットしてみる

うまくpre-commitが動作していれば次のようなエラーが出てコミットが中断されるはずです。
こちらもうまく出ない場合は、node_modulesフォルダを削除し、npm iコマンドを実行してみてください。

Sourcetree

image.png

TortoiseGit

image.png

いろいろ試してみよう

検出には正規表現も使えるので、他にも様々な表記ゆれや誤実装を回収できそうです。

  - expected: 
    patterns: (
    prh: 全角括弧を利用してください

  - expected: 
    patterns: )
    prh: 全角括弧を利用してください

などなど…。Webサイトの運用で表記ゆれやゼロ幅スペースにお困りの場合は試してみてください。

タグを無視するtextlint-plugin-html

HTMLのタグを無視させたい場合はtextlint-plugin-htmlを一緒にインストールしてください。

npm i -D textlint-plugin-html

.textlintrcの設定は次のようになります。

{
  "filters": {},
  "rules": {
    "prh": {
      "rulePaths": ["./prh.yml"]
    }
  },
  "plugins": [
    "html"
  ]
}

なお、どうやら&copy;などは「©」として解釈されるようなので、不要な実態参照を検出するルールはできない模様。たぶん。おそらく。

検出されない場合がある(追記)

コードの順番など、特定のケースでうまく検出されない場合がある模様。調査中。
https://github.com/textlint-rule/textlint-rule-prh/issues/74

参考文献

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

NetCommons3/app/Plugin下の各リポジトリでgit config core.filemode falseする

NetCommons3はPluginが全部別々のGitリポジトリになってます。
開発環境でその各プラグイン全部が core.filemode trueになってたので、まとめて git config core.filemode false にしたくてシェルスクリプトでゴニョゴニョ

下記で無事目的をはたせました。

#!/bin/sh
# cd NetCommons3/app/
# bash gitCoreFileModeFalse.sh で実行
# 
dir_path="Plugin/*"
dirs=`find $dir_path -type d -maxdepth 0`

for dir in $dirs;
do
    echo $dir
    cd $dir
    git config core.filemode false
    cd ../../
done

Gist: https://gist.github.com/RyujiAMANO/48b0d6d2ea074463b17f676a6e6cea3e

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Quartus用のgitignoreを作る

はじめに

今まで個々のHDLしかgitで管理していなかったため
Quartusプロジェクト用のgitignoreファイルを作りました。
備忘録として残します。

HPSは管理対象に入っていません。

環境

Quartus Prime Version 18.1.0 build 625 09/12/2018 SJ Lite edition

gitignoreファイル

gitignore.ioで生成したQuartusのgitignoreを元に作成しました。

*.*
!/*.gitignore

# ignore Quartus generated folders
/db/
/incremental_db/
/simulation/
/timing/
/testbench/
/*_sim/

# project files
!*.qpf
!*.qsf
# source files
!*.bdf
!*.vhd
!*.v
!*.sv
# IP core files
!*.qip
!*.sip
!*.bsf
# SOPC builder project source files
!*.ptf
!*.bsf
# board description
!**/class.ptf
# sdc files:
!*.sdc
# tcl files:
!*.tcl

変更点

Quarutusが生成するフォルダを除外

論理合成やシミュレーション時に生成されるフォルダの除外を追加しました。

# Quartus generated folders
/db/
/incremental_db/
/simulation/
/timing/
/testbench/
/*_sim/

SystemVerilogファイルを追加

SystemVerilogでコードを書く場合があるため追加しました。

# source files
...
!*.sv

.qws(Quartus Window Settings ?)を管理対象外に変更

guiの設定は不要なので以下の記述を削除しました。

!*.qws

IP関連のファイルを追加

IP生成時に追加されるファイルを追加しました。
.bsfも生成されますが元々のgitignoreに入っています。

# IP core files
!*.qip
!*.sip

タイミング解析用のファイルを追加

sdcファイルを追加しました。

# sdc files:
!*.sdc

書き込み用のバイナリファイルを削除

プロジェクトから生成できるので以下の記述を削除しました。
巨大なプロジェクトの場合は生成に必要な時間が長くなるため管理対象にするのもよいと思います。

!*.sof

ソフト関連を削除

もともとコメントアウトされていたので削除しました。

## tbd

とりあえず残したもの

各基板用のファイル

評価ボードなどを使う場合に生成されると思われます。

# board description
!**/class.ptf

参考

https://www.gitignore.io/api/alteraquartusii
thomasrussellmurphy/quartus-DE0-project - .gitignore
https://www.gitignore.io
/var/log/hikalium - QuartusのプロジェクトをGitで管理する

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git logから最新タグ以降の `Merge pull request` だけを抜き出す

やりたいこと

  • 本番リリース毎に最新のコミットに対してタグを付けているので、リリース時に本番リリースされていない Merge pull request コミットの確認をしたい
    • 本番リリース前の最終チェックで、何が反映されるのか毎回手動で確認していたから何とかしたかった
  • 最新のタグが付いたコミットも表示させる

シェルコマンド

git log --pretty=format:'[%ad] %s %D' --date=iso --decorate-refs=tags | grep Merge.*pull | awk -F, '{if ( $0 ~ /tag\:/ ) {print; exit 0} else {print}}'

alias登録用

alias git-log-check="git log --pretty=format:'[%ad] %s %D' --date=iso --decorate-refs=tags | grep Merge.*pull | awk -F, '{if ( \$0 ~ /tag\:/ ) {print; exit 0} else {print}}'"
a
  • awkで利用する変数 $0 に対してエスケープが必要なのに気づくのにすごく時間がかかった

参考

いつもQiitaには感謝しています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

2020年の開発者が知っておくべき11の必須技能(回答編)

2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b27483

11 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio

Top 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language

11の技能を自己評価してみる。

0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。

点数を書いたら、その数だけURLを示す。

category と examplesに分けてみると、見出しにやや整合性がない。
下記表では、適当に補足・補正してみる。

category examples value
Containers Docker and Kubernetes 3
Cloud Platform AWS, GCP, or Azure 3
Data Structure and Algorithm Machine Learning or Quantum Computing 3
A Version Control Tool git 3
One Text Editors vim or Eclipse 4
IDEs VSCode or IntelliJIDEA 3
Database and SQL Oracle, SQL Server or MySQL 2
Unix or Linux Ubuntu, Raspbian or Debian 4
An OOP Programming language C++, Java or JavaScript 3
Networking basics TCP/IP and Wi-Fi 4
One Scripting language Python or Ruby 3

大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。

私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。

下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
暖かいご指導のほどお願いいたします。

1) Containers (Docker and Kubernetes):3

docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

docker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d

2) Cloud Platform (AWS, GCP, or Azure):3

「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5

日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。

転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bf

クラウドを利用するにあたってdockerを利用しているとよい点を記載。

製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f

製造業における機械学習でクラウド利用について記載。

3) Data Structure and Algorithm:3

機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化

『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3

仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2

データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。

仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f216

4) A Version Control Tool (Git):3

仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e

卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0

現在努力中
https://github.com/kaizen-nagoya

5) One Text Editors (VIM):4

VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88

仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c8

6) IDEs (VSCode or IntelliJIDEA):3

docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6

g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5a

docker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a

7) Database and SQL:2

仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f68

8) UNIX (Linux):4

Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f

xtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20

仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8

Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b

9) An OOP Programming language (C++, Java or Python):3

Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
抽象データ型に対応している言語ならどれでもよい。
Classによる体系化は一手法で、C++によるTemplateの方がいいかもしれない。

見出しはわすれば、例の言語を操れればいいと思うとよい。

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028

仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157

dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella

10) Networking basics:4

無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

情報処理技術者試験 ネットワークスペシャリストに合格 
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b

11) One Scripting language:3

shellでもいいかも。自動実行できればいい。

Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f

並べ替え

11の項目を、自分が大事だと思う順番に並び替えるのも良い。

4) A Version Control Tool (Git)
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm

5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language

参考資料(reference)

一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234

プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併

2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b27483

11 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio

Top 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language

11の技能を自己評価してみる。

0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。

点数を書いたら、その数だけURLを示す。

各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。

category examples value
Containers Docker and Kubernetes 3
Cloud Platform AWS, GCP, or Azure 3
Data Structure and Algorithm Machine Learning or Quantum Computing 3
A Version Control Tool git 3
One Text Editors vim or Eclipse 4
IDEs VSCode or IntelliJIDEA 3
Database and SQL Oracle, SQL Server or MySQL 2
Unix or Linux Ubuntu, Raspbian or Debian 4
An OOP Programming language C++, Java or JavaScript 3
Networking basics TCP/IP and Wi-Fi 4
One Scripting language Python or Ruby 3

大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。

私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。

下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。

1) Containers (Docker and Kubernetes):3

これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。

docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

docker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d

2) Cloud Platform (AWS, GCP, or Azure):3

いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。

「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5

日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。

転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bf

クラウドを利用するにあたってdockerを利用しているとよい点を記載。

製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f

製造業における機械学習でクラウド利用について記載。

3) Data Structure and Algorithm:3

機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。

『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3

仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2

データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。

仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f216

4) A Version Control Tool (Git):3

版管理がこんなに楽になるなんて。

仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e

卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0

現在努力中
https://github.com/kaizen-nagoya

5) One Text Editors (VIM):4

VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88

仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c8

6) IDEs (VSCode or IntelliJIDEA):3

docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6

g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5a

docker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a

7) Database and SQL:2

仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f68

8) UNIX (Linux):4

Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f

xtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20

仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8

Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b

9) An OOP Programming language (C++, Java or Python):3

Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
Classによる体系化は一手法でお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。

見出しは忘れて、一つの言語を操れればいいと思うとよい。

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028

仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157

dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella

10) Networking basics:4

無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

情報処理技術者試験 ネットワークスペシャリストに合格 
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b

11) One Scripting language:3

shellでもいいかも。自動実行できればいい。

Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f

並べ替え(re sort)

11の項目を、自分が大事だと思う順番に並び替えるのも良い。

K J category examples value
1 4 A Version Control Tool git 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5 One Text Editors vim or Eclipse 4
5 6 IDEs VSCode or IntelliJIDEA 3
6 10 Networking basics TCP/IP and Wi-Fi 4
7 8 Unix or Linux Ubuntu, Raspbian or Debian 4
8 11 One Scripting language Python or Ruby 3
9 9 An OOP Programming language C++, Java or JavaScript 3
10 7 Database and SQL Oracle, SQL Server or MySQL 2
11 2 Cloud Platform AWS, GCP, or Azure 3

自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya

cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。

項目合併(merge)

IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。

私版「開発者が知っておくべき8の必須技能」に縮退。ただし、Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。
A version control toolにはissuとwikiも合わせたdocument toolに拡張した。

K J category examples value
1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5+6 One Text Editors and IDEs vim, Eclipse, VSCode or IntelliJIDEA 4
5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4
6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3
7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2
8 2 Cloud Platform AWS, GCP, or Azure 3

おお、重複感が減りすっきりした。

どんな資料も、プログラマは再計画(re programming)すると良いかも。

参考資料(reference)

一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234

プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c

仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8

文書履歴(document history)

ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正 20200122 午後4時

このエントリーをはてなブックマークに追加

https://b.hatena.ne.jp/guide/bbutton

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併(8項目)

2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b27483

11 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio

Top 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language

回答編

11の技能を自己評価してみる。

0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。

点数を書いたら、その数だけURLを示す。

みだし補正

各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。

category examples value
Containers Docker and Kubernetes 3
Cloud Platform AWS, GCP, or Azure 3
Data Structure and Algorithm Machine Learning or Quantum Computing 3
A Version Control Tool git 3
One Text Editors vim, Emacs or Eclipse 4
IDEs VSCode or IntelliJIDEA 3
Database and SQL Oracle, SQL Server or MySQL 2
Unix or Linux Ubuntu, Raspbian or Debian 4
An OOP Programming language C++, Java or JavaScript 3
Networking basics TCP/IP and Wi-Fi 4
One Scripting language Python or Ruby 3

大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。

私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。

下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。

回答一覧

1) Containers (Docker and Kubernetes):3

これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。

docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

docker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d

2) Cloud Platform (AWS, GCP, or Azure):3

いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。

「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5

日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。

転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bf

クラウドを利用するにあたってdockerを利用しているとよい点を記載。

製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f

製造業における機械学習でクラウド利用について記載。

3) Data Structure and Algorithm:3

機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。

『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3

仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2

データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。

仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f216

4) A Version Control Tool (Git):3

版管理がこんなに楽になるなんて。

仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e

卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0

現在努力中
https://github.com/kaizen-nagoya

5) One Text Editors (VIM):4

VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88

仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c8

6) IDEs (VSCode or IntelliJIDEA):3

docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6

g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5a

docker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a

7) Database and SQL:2

仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f68

8) UNIX (Linux):4

Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f

xtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20

仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8

Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b

9) An OOP Programming language (C++, Java or Python):3

Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
COBOLは、元々Object Orientedな言語で、OOCOBOLでなくてもよいかも。機械語がいちばんのObject Oriented Languageだとずっと主張しつづけてきた。
Classによる体系化はOOPの一手法かもしれないがお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。

見出しは忘れて、一つの言語を操れればいいと思うとよいかも。

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028

仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157

dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
https://qiita.com/kaizen_nagoya/items/2d3a4f168b4c9a28b32e

10) Networking basics:4

TCP/IPを基本としてWi-Fiまで幅広く網羅してもらえると嬉しい。

無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

情報処理技術者試験 ネットワークスペシャリストに合格 
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b

11) One Scripting language:3

shellでもいいかも。自動実行できればいい。

Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f

並べ替え(re sort)

11の項目を、自分が大事だと思う順番に並び替えるのも良い。

K J category examples value
1 4 A Version Control Tool git 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5 One Text Editors vim, Emacs or Eclipse 4
5 6 IDEs VSCode or IntelliJIDEA 3
6 10 Networking basics TCP/IP and Wi-Fi 4
7 8 Unix or Linux Ubuntu, Raspbian or Debian 4
8 11 One Scripting language Python or Ruby 3
9 9 An OOP Programming language C++, Java or JavaScript 3
10 7 Database and SQL Oracle, SQL Server or MySQL 2
11 2 Cloud Platform AWS, GCP, or Azure 3

自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya

cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。

項目合併(merge)

IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。

私版「開発者が知っておくべき8の必須技能」に縮退。

K J category examples value
1 4 A Version Control git 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4
5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4
6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3
7 7 Database Oracle, SQL Server or MySQL 2
8 2 Cloud Platform AWS, GCP, or Azure 3

おお、重複感が減りすっきりした。もちろん、他の統合方法もいっぱいあると思う。
自分なりに整理すると仕事で役立つかも。

どんな資料も、再利用可能な方法で再計画(re programming)するのがprogrammer流かも。

内容追加(addition)

A version control toolにはissuとwikiも合わせたdocument toolに拡張した。
Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。

K J category examples value
1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4
5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4
6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3
7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2
8 2 Cloud Platform AWS, GCP, or Azure 3

参考資料(reference)

一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234

プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c

仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8

文書履歴(document history)

ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正、Emacs追記 20200122 午後4時
ver. 0.07 構造見直し 20200122 午後5時
ver. 0.08 抜け漏れ補正 20200122 夜
ver. 0.09 内容追加(addition)追記 20200123

このエントリーをはてなブックマークに追加

https://b.hatena.ne.jp/guide/bbutton

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併(8項目)→内容追記

2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b27483

11 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio

Top 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language

回答編

11の技能を自己評価してみる。

0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。

点数を書いたら、その数だけURLを示す。

みだし補正

各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。

category examples value
Containers Docker and Kubernetes 3
Cloud Platform AWS, GCP, or Azure 3
Data Structure and Algorithm Machine Learning or Quantum Computing 3
A Version Control Tool git 3
One Text Editors vim, Emacs or Eclipse 4
IDEs VSCode or IntelliJIDEA 3
Database and SQL Oracle, SQL Server or MySQL 2
Unix or Linux Ubuntu, Raspbian or Debian 4
An OOP Programming language C++, Java or JavaScript 3
Networking basics TCP/IP and Wi-Fi 4
One Scripting language Python or Ruby 3

大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。

私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。

下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。

回答一覧

1) Containers (Docker and Kubernetes):3

これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。

docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

docker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d

2) Cloud Platform (AWS, GCP, or Azure):3

いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。

「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5

日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。

転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bf

クラウドを利用するにあたってdockerを利用しているとよい点を記載。

製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f

製造業における機械学習でクラウド利用について記載。

3) Data Structure and Algorithm:3

機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。

『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3

仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2

データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。

仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f216

4) A Version Control Tool (Git):3

版管理がこんなに楽になるなんて。

仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e

卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0

現在努力中
https://github.com/kaizen-nagoya

5) One Text Editors (VIM):4

VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88

仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c8

6) IDEs (VSCode or IntelliJIDEA):3

docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6

g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5a

docker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a

7) Database and SQL:2

仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f68

8) UNIX (Linux):4

Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f

xtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20

仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8

Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b

9) An OOP Programming language (C++, Java or Python):3

Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
COBOLは、元々Object Orientedな言語で、OOCOBOLでなくてもよいかも。機械語がいちばんのObject Oriented Languageだとずっと主張しつづけてきた。
Classによる体系化はOOPの一手法かもしれないがお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。

見出しは忘れて、一つの言語を操れればいいと思うとよいかも。

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028

仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157

dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
https://qiita.com/kaizen_nagoya/items/2d3a4f168b4c9a28b32e

10) Networking basics:4

TCP/IPを基本としてWi-Fiまで幅広く網羅してもらえると嬉しい。

無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

情報処理技術者試験 ネットワークスペシャリストに合格 
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b

11) One Scripting language:3

shellでもいいかも。自動実行できればいい。

Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f

並べ替え(re sort)

11の項目を、自分が大事だと思う順番に並び替えるのも良い。

K J category examples value
1 4 A Version Control Tool git 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5 One Text Editors vim, Emacs or Eclipse 4
5 6 IDEs VSCode or IntelliJIDEA 3
6 10 Networking basics TCP/IP and Wi-Fi 4
7 8 Unix or Linux Ubuntu, Raspbian or Debian 4
8 11 One Scripting language Python or Ruby 3
9 9 An OOP Programming language C++, Java or JavaScript 3
10 7 Database and SQL Oracle, SQL Server or MySQL 2
11 2 Cloud Platform AWS, GCP, or Azure 3

自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya

cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。

項目合併(merge)

IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。

私版「開発者が知っておくべき8の必須技能」に縮退。

K J category examples value
1 4 A Version Control git 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4
5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4
6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3
7 7 Database Oracle, SQL Server or MySQL 2
8 2 Cloud Platform AWS, GCP, or Azure 3

おお、重複感が減りすっきりした。もちろん、他の統合方法もいっぱいあると思う。
自分なりに整理すると仕事で役立つかも。

どんな資料も、再利用可能な方法で再計画(re programming)するのがprogrammer流かも。

内容追加(addition)

A version control toolにはissuとwikiも合わせたdocument toolに拡張した。
Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。

K J category examples value
1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3
2 1 Containers Docker and Kubernetes 3
3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3
4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4
5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4
6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3
7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2
8 2 Cloud Platform AWS, GCP, or Azure 3

参考資料(reference)

一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234

プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c

仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8

文書履歴(document history)

ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正、Emacs追記 20200122 午後4時
ver. 0.07 構造見直し 20200122 午後5時
ver. 0.08 抜け漏れ補正 20200122 夜
ver. 0.09 内容追加(addition)追記 20200123

このエントリーをはてなブックマークに追加

https://b.hatena.ne.jp/guide/bbutton

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SourceTree SSH 接続で、ユーザ、パスワード入力をミスってハマった

単純パスワード認証のSSH接続でパスワードミスった

 お客さんが設置した VPS に、案件リポジトリがあって、そいつにプッシュしているんです。
 SSHはユーザ・パスワード認証。

 リポジトリパスを入力すれば、ユーザ、パスワードの認証ダイアログでますよね。
image.png

 素直に手打ちすればよかったんですが、横着してお客さんからもらったパスワードとかを記録しているExcelから直接コピペしたんですよ。
 セルを選択してコピペすると、末尾に開業コードが入るんですよね。

 そのおかげで、Access Denied になっちゃったんですよ・・・
 認証ダイアログもでてくれない。

 ローカルリポジトリ削除してクローンしなおしても、認証情報は記録されちゃっているから、認証やり直せないんですよ。

 最初は原因がわからず、あれやこれや調べても、Github GitLab とかの鍵交換の記事しかでてこないし、困り果てていたんですよ。

結論

 SourceTreeがローカルで認証情報やらキャッシュやら保存しているのは考えればわかること。
 そいつを削除しちゃえばいい、ってんでアンインストール。
 これ、ローカル情報ってアンインストールしても残るんですね・・・・・

 ということで手動削除。
 C:\Users\ユーザ名\AppData\Local\Atlassian

 この中を空っぽにしたら、認証ダイアログでました・・・・

 この問題で2時間も使っちゃった・・・

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

nvmを使ったNode.jsのバージョン管理

これまでWindowsならnodist、Macならnodebrewを使ってきましたが、nvmがユーザー数多いみたい( Google Trend によると)なのでnvm使うことにしたい。

nvmのGitHub上に手順や使い方があるけれど英語でさらに初心者にはさっぱりな部分もあるので自分用の備忘録もかねてのメモです。

(nvmリポジトリ)[https://github.com/nvm-sh/nvm]

Git経由でインストール

インストール方法は他にもあるけどnvmそのものの更新に対応するためには、Git経由でGitHub上のレポジトリクローンがよいみたいです。
更新された場合はプルするだけです。

1. nvm をインストール

github.com から nvm を clone する

$ git clone https://github.com/nvm-sh/nvm.git .nvm

clone したら最新バージョンに checkout してください。

2. nvm を使えるようにする

nvm.sh を実行して nvm を使えるようにする

$ source ~/.nvm/nvm.sh

これで以下が動けば成功です。

$ nvm --version

3. ~/.bashrcに追加

起動時に使えるように設定追加

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

以下で再読み込み

source .bashrc

3. Node.jsをインストール

利用可能なバージョン確認

$ nvm ls-remote

バージョン指定してインストール

$ nvm install <version>

以下が動けば成功

$ node -v
$ npm -v

4. その他よく使うコマンド

インストールしたバージョン一覧

$ nvm ls

使用するバージョンの指定

$ nvm use <version>

nvmの機能一覧

$ nvm --help

▼参考
https://ikkyu.hateblo.jp/entry/2019/05/03/003636
https://phiary.me/nvm-node-js-install/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitで複数のリモートリポジトリを設定する方法

手順(CUI)

やり方は簡単です!
コマンドライン上では以下のコマンドによって2つ目のリモートリポジトリを追加することができます。

$ cd {PROJECT_DIRECTORY}
$ git remote add {REMOTE_NAME} {REMOTE_URL}

初めてリモートをaddするときと何ら変わりません。
例えば、githubのリモートリポジトリを新たに追加したければ以下のような感じになります。

$ git remote add github https://github.com/{USER_NAME}/{PROJECT_NAME}

手順(GUI)

SourcetreeのようなGUI(Sourcetreeしか知りませんが笑*1)で行う場合は以下のようになります。
例としてSourcetreeで行っています

スクリーンショット 2020-01-22 0.56.31.png

メニューバーからリポジトリ -> リポジトリの設定を選択

スクリーンショット 2020-01-22 0.57.03.png

メニュータブのリモートを選択 -> 追加

スクリーンショット 2020-01-22 0.57.23.png

リモートの名前(originなど、好きな名前で大丈夫です)とURLを入力 -> OK

こうすることでリモートリポジトリを追加できます。

ということで 今回はリモートリポジトリの複数追加 についてお話しさせていただきました。
ここまでご覧いただきありがとうございます!
自分自身まだまだ未熟なので訂正、指摘等ございましたらコメントにてよろしくお願いします?‍♂️
もちろんその他ご意見ご要望ご質問等もお待ちしております!
それではまた次回の記事でお会いしましょう?

注釈

*1 他にGit GUIや、GitKrakenなどがあるようです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

リモートリポジトリへプッシュする時に詰まった話

はじめに

今回はLaravelの新規プロジェクトをGitで管理するのを目的としています。
リモートリポジトリにプッシュする際に詰まった時の話をまとめます。

環境

ProductName:    Mac OS X
ProductVersion: 10.14.6
BuildVersion:   18G2022

ホスティングサービス: GitHub
通信プロトコル: SSH通信

目次

  1. ローカルリポジトリを作成
  2. ステージエリアにファイルaddする
  3. コミットする
  4. リモートリポジトリを登録する
  5. Gitの設定をする
  6. 秘密鍵公開鍵を作成し、GitHubへ登録する。
  7. プッシュする

1.ローカルリポジトリを作成

Laravelのルートディレクトリに移動し、次のように実行します。

#イニシャライズ(ここをローカルリポジトリとします)
$git init

#実行結果
Initialized empty Git repository in ルートディレクトリのパス/.git/

#状態を確認
$git status

#実行結果(箇条書きで書かれているものがルートディレクトリにあるファイルとフォルダです。)
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .editorconfig
    .env.example
    .gitattributes
        〜
        (略)
        〜
    storage/
    tests/
    webpack.mix.js

ログの説明

On branch master
作業ブランチがmasterであると書かれています。
No commits yet
コミットがまだないと書かれています。
Untracked files:
(use "git add <file>..." to include in what will be committed)

未追跡ファイルが先ほどの箇条書きで書かれていたものがステージエリアに追加されていないと書かれています。git add <file>使って変更部分(新規追加)をaddしましょう

2.ステージエリアにファイルをaddする 

1.git add <file>を実行します。

#-Aオプションをつけることによって変更があった全てのファイルがaddされます。
$git add -A

#状態を確認
$git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   .editorconfig
    new file:   .env.example
    new file:   .gitattributes
    new file:   .gitignore
        〜
        (略)
        〜
    new file:   tests/TestCase.php
    new file:   tests/Unit/ExampleTest.php
    new file:   webpack.mix.js

(use "git rm --cached <file>..." to unstage)
ステージエリアから外したい場合はgit rm --cached <file>を使用してくださいと書かれています。

3.コミットする

git commit-mオプションを使用して実行します。

#addされたものをコミットします。-mオプションをつけ、「"」で囲むことでコメントを残せます。
$git commit -m "create new project"

#実行結果
[master (root-commit) 71a1d0a] create new project
 87 files changed, 8435 insertions(+)
 create mode 100644 .editorconfig
 create mode 100644 .env.example
 create mode 100644 .gitattributes
 〜
 (略)
 〜
 create mode 100644 tests/Feature/ExampleTest.php
 create mode 100644 tests/TestCase.php
 create mode 100644 tests/Unit/ExampleTest.php
 create mode 100644 webpack.mix.js

4.リモートリポジトリを登録する

git remote addを実行し、リモートリポジトリを登録する。

#originの後の文字列は使用するリモートリポジトリにある「Clone or download」で入手。
$git remote add origin git@github.com:GitHubのユーザー名/リモートリポジトリ名.git

5.Gitの設定をする。

git configを使用し、Gitの設定を行う。

$git config -global user.name "GitHubのユーザー名"
$git config -global user.email "メールアドレス"

6.秘密鍵と公開鍵を作成し、GitHubへ登録する。

6-1ssh-keygen秘密鍵公開鍵を作成する。

# -t で鍵の暗号化形式を指定。 -b でbit数を指定。2048以上がいいみたいです。
# -C でコメントを指定できる。
$ssh-keygen -t rsa -b 4096 -C "メールアドレス"

#実行結果
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/[ユーザー名]/.ssh/id_rsa.
Your public key has been saved in /Users/[ユーザー名]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:==========[作成されたキー]========== [メールアドレス]
The key's randomart image is:
+---[RSA 4096]----+
|         ~~======|
| ================|
|         ========|
|          =======|      
|          =======|
| ================|
|         ========|
|          =======|
|          =======|
+----[SHA256]-----+

Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa):
この()内のディレクトリにキーを作成するという確認。(Enterを入力)
Enter passphrase (empty for no passphrase):
パスワードを入力。
Enter same passphrase again:
もう一度同じパスワードを入力。

6-2 作成した公開鍵をGitHubに登録する。

id_rsaid_rsa.pubがそれぞれ秘密鍵公開鍵である。
両者が作成されたディレクトリに移動する。

$cd ~/.ssh 
$ls
authorized_keys id_rsa      known_hosts
config      id_rsa.pub

見つけた。ここで公開鍵の中身をコピーする

$pbcopy < id_rsa.pub

・GitHubのSettingsSSH and GPG keysタブに移動、
New SSH keyをクリックする。Titleを任意でつけ、Keyにコピーしたものを貼り付ける。
Add SSH keyをクリック。これで公開鍵は登録完了です。

7.プッシュする

 7-1git push origin masterを実行する。

ここでやっと本題に入ります。

#originはリモートリポジトリ、 masterはoriginのどこのブランチへプッシュするかを指定。
$git push origin master

#実行結果

何も反応しない。6-2lsコマンドで出てきた一覧に
known_hosts,authorized_keys,configファイルがあったと思います。
ここでは書いていませんでしたが、色々調べながらこれらのファイルも調べながら色々触っていました。
ここでそれぞれのファイルの役割について簡単に書いていきます。

・known_hosts
一度接続したことがあるサーバーを記録しているファイル
・authorized_keys
接続を許可する公開鍵を登録しておくサーバー側のファイル
・config
SSH接続の情報を書くファイル

調べると、configファイルの指定方法は下記のようになっているようです。
他にも設定できる項目はあります。

Host GitHub                       //Host名
    HostName github.com                    //接続先のIPアドレス
    IdentityFile ~/.ssh/id_rsa          //秘密鍵のファイルパス
    User git                                  //SSH接続するユーザー名

IdentityFileのファイルパスが間違っていた為、うまく接続できませんでした。configファイルを削除し、ローカルリポジトリへ戻り、git push origin masterを実行しました。

$git push origin master

#実行結果
Enter passphrase for key '/Users/[ユーザー名]/.ssh/id_rsa': 
Enumerating objects: 117, done.
Counting objects: 100% (117/117), done.
Delta compression using up to 4 threads
Compressing objects: 100% (97/97), done.
Writing objects: 100% (115/115), 59.17 KiB | 1.23 MiB/s, done.
Total 115 (delta 12), reused 0 (delta 0)
remote: Resolving deltas: 100% (12/12), done.
To github.com:[GitHubユーザー名]/[ローカルディレクトリ名].git
   54d630d..fa6f554  master -> master

成功しました。configファイルを削除したのに、プッシュが成功したのはconfigファイルが明示的に追加で設定するファイルだからだと思います。

スクリーンショット 2020-01-22 0.13.26.png

GitHubを確認するとプッシュできていました。fa6f554が実行結果の方にも書かれているのが確認できました。

さいごに

commitが3日前になっていることもわかりますが、問題の解決・記事の作成に3日かかってしまいましたが、SSH通信での秘密鍵公開鍵の仕組みを学ぶ良い機会になりました。まだまだ学ぶことが多いですが、今回はこれで。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む