- 投稿日:2020-01-19T23:47:26+09:00
Mac の VSCode に PlantUML を導入
Overview
プライベートの開発タスクの依存関係を可視化するために、PlantUML を導入する。
インストール
brew コマンドを使って必要なパッケージを導入
$ brew install graphviz $ brew cask install adoptopenjdk $ brew install plantumlbrew コマンド自体がない場合は、以下でインストールしてから再実行する。
# コマンドがない! $ brew install XXX bash: brew: command not found # インストール $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # インストール確認 $ brew -v Homebrew 2.2.3 Homebrew/homebrew-core (git revision a0d66; last commit 2020-01-19) Homebrew/homebrew-cask (git revision 4bb1; last commit 2020-01-19)plantuml は Java が必要とのことで、入っていない場合は以下のエラーが表示される。
$ brew install plantuml plantuml: Java is required to install this formula. Install AdoptOpenJDK with Homebrew Cask: brew cask install adoptopenjdk Error: An unsatisfied requirement failed this build.VSCode で利用する
PlantXML 用の拡張をインストールする。
インストールが完了したら VSCode を再起動。
*.pu
形式のファイルを作成し、以下の様に記入してみる。@startuml Class01 <|-- Class02 Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 -- Class10 @endumlその後、
⌥(option) + D
を入力すると。。。
↓
少し時間をかけた後に上記の図が描写された!一度プレビューを表示すれば、後はリアルタイムで更新が反映されていくので確認しつつ修正ができる。これは便利。
画像として保存
⌘(command) + ⇧(shift)+ P
でコマンドパレットを開き、 Export Current File Diagrams を選択。
その後ファイル形式を聞かれるので、好きな形式を選択。
少し時間が経った後、 以下の通知が出れば作成完了。
今回の場合、
test.um
から/out/uml/test/test.png
を生成した。
生成ファイルのディレクトリが独自に作られるので、最初は少し迷うかもしれない。
GitHub 上で管理・閲覧する。
PlantUML Viewerを使うことで、GitHub 上のテキスト形式の UML図 を描写して確認することが可能。
確認する際は、そのファイルをGitHub上のRaw指定で表示する必要あり。詳しい書き方
Reference
- 投稿日:2020-01-19T19:21:06+09:00
アル中カタカタ〜!大事なキーを異世界に転生!また俺何かやっちゃいました?
システムエンジニアになって10ヶ月のピッチピチのJK(Java書き)のキー太郎です!
先日最近購入しましたMacBook Proを友達の家に持って行って、酒呑みながらカタカタいじってたときの失敗談です。ゆる〜く聞き流してください。週末久しぶりに友人と食事をした私はそのまま友人宅飲み会をすることに。MacBook Proを開きながらあれこれよくわからんウンチクを語りながら例の飲み物(角ハイ金)を飲んでいました。そしてどういう流れからか私は友人に自慢をしたくなりました。
キー太郎「そういえばさ〜最近秒で俺サーバ作れるようになったんだよね〜」
友人「どうやって?」
キー太郎「EC2ていうえーだぶりゅーえす?を使うと簡単にサーバ立ち上げることができるんだぜ〜」
友人「すげーーーーーーーーーー!!!!!!!!!!!!!!!!」
キー太郎「また俺何かやっちゃいました?笑笑」macでEC2を立ち上げるには
1:AWSマネジメントコンソールからEC2を選択し、キーペアを作成する。
2:作成した秘密鍵(pem)をダウンロードする。
3:キーの権限を変更する。chmod 400 ●●●●●.pem
4:sshコマンドを実行する。
ssh ec2-user@00.00.00.00 -i ●●●●●.pem
5:サーバが稼働する。
| _| )
| ( / Amazon Linux 2 AMI
__|_|___|ざっくりと説明しましたがこんな感じです。
さてその後一通り自慢を終えた私はキーを保存しておくためのディレクトリを作成し、作成後にキーを移動しようと思い実行に移します。そのことがある悲劇を生むとは梅雨知らず、、、
キー太郎(酔)「キーをただ外にほっぽり出しておくのもなんかアレだしディレクトリでも作成してそんなかで管理しておきますかね〜」
キー太郎(酔)「まずはディレクトリを作るぞーい」
キー太郎「ディレクトリを作るには確かmkdir or touch だったけな・・・」touch SSH
キー太郎「そんで次はカレントディレクトリにあるキーを移動させると・・・」
キー太郎「mvコマンドで異世界転生させたるわ!!!!!」mv ●●●●●.pem /●●/●●/SSH/
キー太郎「実行っと・・・うん!特にエラーもなく実行できたみたいだな」
キー太郎「さて無事に作業終わったし祝酒でも開けますかね笑笑」その後達成感に浸りながらとりあえず再びssh接続をしようと試みます。まずキーが入っているSSHディレクトリ移動しようとします。
cd SSH
キー太郎「移動っと・・・あれ?」
cd: not a directory: ●●●●●.pem
キー太郎「ディレクトリじゃない・・・?どういうこと?アクセス権限の問題か?いやディレクトリじゃないよってターミナルに言われとるし・・・」
その後あらゆる手段試してもそのディレクトリには移動できませんでした。
キー太郎「はあああああああ・・・・終わったわ。完全に詰んだ。ディレクトリに入れなかったら鍵取り出せんわ・・・・」
さて感の良い方なら最初の方に気づいているかもしれません。その通りです。この悲劇は最初に実行したコマンドであるtouchコマンドが原因なのです。
touchコマンドはファイルのタイムスタンプを変更するコマンドであり、存在しないファイル名を指定することで、内容の入っていないファイルを新規作成する機能を持っています。詳しくはググってください。
最初から整理します。
カレントディレクトリには
●●●●●.pem
touch SSH コマンド実行後のカレントディレクトリは
●●●●●.pem SSH
という状態になっておりtouchコマンドをディレクトリを作るコマンドだと思っていた私はSSHをディレクトリだと認識しています。その後キーをSSHディレクトリに移動させようとmvコマンドを実行します。
mv ●●●●●.pem SSH
ここでも深刻な問題が起っています。mvコマンドは移動させることだけではなく名前を変更させることもできるコマンドなのです!つまり・・・・
mv 名前を変えたいファイル名 変更したい名前
というように上記の私が実行したコマンドは移動させるのではなく名前を変えるコマンドととらえられてしまったのです。笑笑 また名前を変えた後SSHという同じ名前をしたファイルが存在することになるので、旧SSHファイルはSSHという名前に変わったキーである新SSHファイルに上書きされます。そうなるとカレントディレクトリに残るのはSSHという文字のみ・・・あたかもSSHディレクトリにキーの移動が成功したように見えるのです。
mvコマンド実行後のカレントディレクトリは
/*SSHというディレクトリが存在するのではなくSSHという名前の●●●●●.pemが存在しているだけ/
SSH酔っ払っていてそのことに気づかなかった私はあたかもキーがnot a directoryという自分で作った謎のディレクトリにキーを異世界転生させてしまったと錯覚したのです。
また俺何かやっちゃいました?
●今回の事件からの学び
・大事なファイルを移動させるときは細心の注意を払う。
・コマンドを正確に理解した上でコマンドを実行する。
・酒を飲みながら作業してはいけない。その後・・・
キー太郎「なんだったんだこれは・・狐に包まれた気分。」
友人「ぱっと見.txtとか.html.javaとかついてないとディレクトリかと思うよな」
キー太郎「まあ擬似異世界転生体験できたし良いか笑!!!」
友人「委員会!」以上です。ここまで駄文を読んでいただき本当にありがとうございます。何か気づいた点、突っ込みどころがありましたらなんなりとコメントを送ってください。
- 投稿日:2020-01-19T19:09:44+09:00
PATH を通すについてまとめてみた
PATH を通すとは ?
ターミナル上でコマンドを打てば処理が行われます。業務・日常的に触れる
cd
,vi
,mkdir
などなどです。
ls
であればカレントディレクトリのファイル一覧を確認することができます。ところが以下のようなエラー文が出ることがあります。新たに追加したライブラリ用のコマンドとかでですね。
PATHが通っていない時-bash: ${コマンド名}: command not foundこの
command not found
は PATH が通っていない ことを教えてくれています。
(そもそも、存在しないコマンドの可能性もあります。)コマンド 1 つ 1 つは、実行ファイルによって処理が行われます。そのため、実行ファイルがある場所までの 道標 を明示しなければコマンドは実行できなくなるのです。
つまり、 PATH を通す とは、コマンド実行ファイルを探しに行くパスを示してあげること です。
コマンド実行ファイルのPATH$ which ${コマンド名}
$PATH
はどこで示されているの ?PATH は
bash_profile
というファイルに書き込みます。
bash_profile はログイン時に 1 度実行されるファイルです。( terminal や iTerm などの起動時 )ファイルを開かないで確認するときは$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin $ printenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin # つまり 5 箇所 /usr/local/bin /usr/bin /bin /usr/sbin /sbinbash_profileの中身確認# 書き換えを含むなら $ vi ~/.bash_profile # readonly なら $ less ~/.bash_profile1 行でずらっと書かれていますが
:
で PATH は区切られます。ですので現在 PATH が通っているのは 5 箇所になります。この 5 箇所に関しては bash_profile に書かれていないくても PATH は通るみたいですが、実行ファイルを読み込めなくなったときは書き込む必要はありそうです。( Linux の標準コマンドだからかな ? )
$PATH
を通すにはbash_profile に、実行ファイルがあるディレクトリまでのパスを書き込む必要があります。bash_profile が存在しなければ新規で作成する必要があります。(
touch
コマンドで作りましょう)書きかたexport PATH="${通したいパス}:$PATH"mysqlのPATHを通す$ vi ~/.bash_profile # ファイル内に以下を書き込み保存 # 末尾の $PAHT はこの export 以前の $PATH を指定 export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"PATHの通し方2$ echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profilebash_profile に書かれている export が複数ある場合は、最後の export が
$PATH
の内容となります。ですので、$PATH
には
- 通したいパス
- これまでの $PATH
を書き込まなければいけません。
bash_profile
を更新して完了書き換えが終わったら最後に、bash_profile を再読み込みすれば完了です。ターミナルを再起動するか、
source
コマンドで更新することで可能です。ファイルを更新するsource ~/.bash_profile
完了と思ったけど意図したコマンドの挙動でないとき
「PATH を通して bash_profile も更新して、さあコマンドを打ったぞ! ...あれ、おかしいな、挙動がおかしい。」
こんなことが時たまあります。ライブラリの version 違いとか。
原因は export の書き方にあります。通したパスには優先順位が存在します。
コマンドの実行ファイルがあるかどうかの検索は左から順に行われ、見つけた瞬間に後続のパスは検索されません。ですので、挙動がおかしい場合は、同名の実行ファイル(コマンド)が手前のパス内にないか確認することで解決できます。
解決策は片方の実行ファイルを削除するなどで対応できます。(削除してはいけない実行ファイルの場合は他の策を考えます)
削除後はシンボリックリンクを書き換えます。
- 投稿日:2020-01-19T18:55:44+09:00
macにJulia(1.3.1)をインストールする
概要
mac に Julia をインストールします。
この記事では、ターミナルでコマンドを実行できるところまでを扱います。
IDEの利用やライブラリのインストールなどについては、今後の記事で書く予定です。ちなみに、この作業を行ったのは 2020/1/19 です。
バージョンや、公式サイトの更新等によって手続きが変わる可能性があります。環境
macOS:10.15.2 (Catalina)
Julia:1.3.1Juliaのインストール手続き
ダウンロード
公式サイトより、dmgファイルをダウンロードしてきます。
The Julia Language
https://julialang.org/トップページ
ダウンロードページ
mac OS10.8+
の項目にある64-bit
をクリック。
julia-1.3.1-mac64.dmg
がダウンロードされる。
インストール
dmgファイルを実行して、
app
ファイルをApplication
フォルダに入れるだけです。
Juliaを使ってみる
Juliaの起動
Application
フォルダに入れた app ファイルを実行すると、
ターミナルが起動し、Julia
が起動した状態となります。
また、この状態は、REPL(インタラクティブモード)
と呼ばれ、
enter
が押されるたびに、一行ずつ命令が実行されます。REPLの使い方については、以下記事で解説しています。
JuliaのREPL(インタラクティブモード)の使い方
https://qiita.com/beckyJPN/items/bde9913498f789c8d144起動できない場合
インターネットから落としてきたファイルの場合、セキュリティ上の関係で直接実行できない場合があります。
その場合は、以下サイトなどを参考に、実行できる状態としてください。Mac - インターネットからダウンロードしたアプリの実行許可 - PC設定のカルマ
https://pc-karuma.net/download-app-security/何か表示してみる
試しに以下コマンドを入力して、文字を表示してみましょう。
print("Hello Julia!")Juliaにパスを通す
とりあえず、これで準備は完了ですが、現在の状態だとパスが通ってないため、
単にターミナルを起動した状態では、julia
のコマンドを認識しません。
なので、ユーザーのHomeフォルダにある、
.bash_profile
にPATHを書いておきましょう。
ファイルがない場合は、作成しつつ書き込みます。$ cd ~ $ echo "export PATH=${PATH}:/Applications/Julia-1.3.app/Contents/Resources/julia/bin" >> .bash_profileこれで、パスが通りました。
ターミナルを再起動して、julia
と打ち込んで立ち上がるか確認してみてください。
- 投稿日:2020-01-19T16:25:11+09:00
【Mac】localhostでサーバーを立ち上げる際に立ち上がらない
【状況】
Macでローカルサーバー(localhost:8080)
を立ち上げる際立ち上がらない!
特にエラーも吐かれていない!【原因】
すでに立ち上げようとしているポート8080
がLISTENされている可能性がある!【解決策】
下記コマンドでLISTENされているポートとプロセス番号を確認する!
$ sudo lsof -i -P | grep "LISTEN" java 998 miki 157u IPv6 0x78963e449976890f 0t0 TCP localhost:8080 (LISTEN) Code\x20H 24811 miki 38u IPv4 0x78963e44c014124f 0t0 TCP localhost:38275 (LISTEN) Code\x20H 27337 miki 38u IPv4 0x78963e44c00d024f 0t0 TCP localhost:5023 (LISTEN) Code\x20H 33904 miki 37u IPv4 0x78963e44b07dfbcf 0t0 TCP localhost:13863 (LISTEN) node 34867 miki 25u IPv6 0x78963e449976a5cf 0t0 TCP *:6006 (LISTEN)やはり
8080
がすでに立ち上がっている!!下記コマンドで解放したいポートのプロセスをkillします。
$ kill -9 998これで
8080
を使えるようになりました。$ sudo lsof -i -P | grep "LISTEN" Code\x20H 24811 miki 38u IPv4 0x78963e44c014124f 0t0 TCP localhost:38275 (LISTEN) Code\x20H 27337 miki 38u IPv4 0x78963e44c00d024f 0t0 TCP localhost:5023 (LISTEN) Code\x20H 33904 miki 37u IPv4 0x78963e44b07dfbcf 0t0 TCP localhost:13863 (LISTEN) node 34867 miki 25u IPv6 0x78963e449976a5cf 0t0 TCP *:6006 (LISTEN)
- 投稿日:2020-01-19T16:25:11+09:00
【Mac / Windows】localhostでサーバーを立ち上げる際に立ち上がらない
【状況】
ローカルサーバー(localhost:8080)
を立ち上げる際立ち上がらない!
特にエラーも吐かれていない!【原因】
すでに立ち上げようとしているポート8080
がLISTENされている可能性がある!Mac の場合
【解決策】
下記コマンドでLISTENされているポートとプロセス番号を確認する!
$ sudo lsof -i -P | grep "LISTEN" java 998 miki 157u IPv6 0x78963e449976890f 0t0 TCP localhost:8080 (LISTEN) Code\x20H 24811 miki 38u IPv4 0x78963e44c014124f 0t0 TCP localhost:38275 (LISTEN) Code\x20H 27337 miki 38u IPv4 0x78963e44c00d024f 0t0 TCP localhost:5023 (LISTEN) Code\x20H 33904 miki 37u IPv4 0x78963e44b07dfbcf 0t0 TCP localhost:13863 (LISTEN) node 34867 miki 25u IPv6 0x78963e449976a5cf 0t0 TCP *:6006 (LISTEN)やはり
8080
がすでに立ち上がっている!!下記コマンドで解放したいポートのプロセスをkillします。
$ kill -9 998これで
8080
を使えるようになりました。$ sudo lsof -i -P | grep "LISTEN" Code\x20H 24811 miki 38u IPv4 0x78963e44c014124f 0t0 TCP localhost:38275 (LISTEN) Code\x20H 27337 miki 38u IPv4 0x78963e44c00d024f 0t0 TCP localhost:5023 (LISTEN) Code\x20H 33904 miki 37u IPv4 0x78963e44b07dfbcf 0t0 TCP localhost:13863 (LISTEN) node 34867 miki 25u IPv6 0x78963e449976a5cf 0t0 TCP *:6006 (LISTEN)【参考】
https://qiita.com/yokozawa/items/dbcb3b31f9308e4dcefcWindows の場合
【解決策】
下記コマンドでLISTENされているポートとプロセス番号を確認する!
$ netstat -nao TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 65652 TCP 0.0.0.0:2179 0.0.0.0:0 LISTENING 19892 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 65652 TCP 0.0.0.0:3380 0.0.0.0:0 LISTENING 65652 TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 39864下記コマンドで解放したいポートのプロセスをkillします。
taskkill /F /PID 65652これで
8080
を使えるようになりました。$ netstat -nao TCP 0.0.0.0:2179 0.0.0.0:0 LISTENING 19892 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 65652 TCP 0.0.0.0:3380 0.0.0.0:0 LISTENING 65652 TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 39864
- 投稿日:2020-01-19T14:22:41+09:00
MacでのRuby環境構築2020
MacでのRuby環境構築についてまとめます。改めて公式文書を読みながら進めたところ、今までやっていたことをスキップできる!と気づいたので、久々にQiitaに書こうと思います。
事前準備
動作確認環境
- MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports)
- Catalina 10.15.1
今回構築する環境の概要、ゴール
複数バージョンのRubyを管理するために、rbenv を使用します。インストールにはHomebrewを使います。
最終的に$ ruby --version
で意図したバージョン名が表示されることを確認します。前提
以下の環境であることを前提とします。
- Homebrewを使えること
- Homebrewがインストールできていない方は、 Homebrew を確認してインストールをお願いします
- gitを使えること
- Homebrewが使用できれば、
$ brew install git
でインストール可能です。rbenv環境構築
基本的に、https://github.com/rbenv/rbenv#installation にしたがって操作していきます。
1. rbenv のインストール
以下のコマンドを実行します。
$ brew install rbenvrbenvがインストールされます。
同時に、 ruby-build もインストールされます。2. rbenv のセットアップ
以下のコマンドを実行します。
$ rbenv init # Load rbenv automatically by appending # the following to ~/.zshrc: eval "$(rbenv init -)"上に書いたようなログが出力されています。指示通りに
eval "$(rbenv init -)"
を~/.zshrc
に書き込みます。
私の場合は、zsh
を使用しているため、このようなログ(# the following to ~/.zshrc:
)が出ていますが、お使いのシェルによって、どのファイルに書き込むかは(ログの内容も)変わってきます。eval "$(rbenv init -)" を ~/.zshrc に書きむとは何を意味するのか
ちょっと話題がそれますが、簡単に説明しておきます。
zsh
を使用している環境において~/.zshrc
ファイルに書き込まれた内容は、ログインしたときやターミナルを開いた時などに実行されます(ここでは詳しくは説明しません)。~/.zshrc
ファイルにeval "$(rbenv init -)
を書き込むということは、ログインするときやターミナルを開き直す度に、eval "$(rbenv init -)
を実行したい、ということになります。3. ターミナル再起動
ターミナルを再起動することで、
~/.zshrc
ファイルが読み込まれます。
ターミナル再起動の代わりに、$ source ~/.zshrc
でも内容を反映することが可能です。4. rbenvインストール環境確認
以下のコマンドを実行し、バージョンが表示されればrbenvのインストールは完了です。
$ rbenv rbenv 1.1.2 ... ...
ruby環境構築
インストールした
rbenv
を利用してruby
をインストールしていきます。
こちらも基本的に https://github.com/rbenv/rbenv#installing-ruby-versions にしたがって操作をします。1. インストール可能なバージョンの確認
以下のコマンドで、インストール可能なrubyのバージョンを確認します。
$ rbenv install -l 1.8.5-p52 1.8.5-p113 1.8.5-p114 1.8.5-p115 1.8.5-p231 ... ... 2.7.0 ... ...2. ruby のインストール
今回は現時点で stable (安定版)となっている2.7.0をインストールします。
$ rbenv install 2.7.0また、全てのシェルでこのバージョンを使用したいため、global設定を行います。
$ rbenv global 2.7.0
3. ターミナルの再起動
特に手順には書いてありませんでしたが、私の環境ではターミナルの再起動を行うことで意図したバージョンのrubyを使えるようになりました。
4. rubyがインストールされたことを確認する
以下のコマンドで、rubyのバージョンを確かめます。
$ ruby --version意図したバージョンになっていることが確認できれば、インストールは完了です。
参考