20190413のMacに関する記事は10件です。

bashで拡張子を除いたファイル名を取得する

方法

長いこと sed と組み合わせて対処してましたが
basename コマンドだけでできることを知りました。

basename {パス} {拡張子}
$ basename /path/to/somewhere/foo.txt .txt
foo

basename コマンド

基本

基本構文
basename string [suffix]
  • string の先頭から最後に出現した / までを取り除く
  • その結果の文字列が suffix で終わっていればその部分を取り除く

つまり拡張子に限らず次のような使い方が可能。

$ basename /path/to/somewhere/foo20190101.txt 20190101.txt
foo

その他

オプション
-a : string を複数受け取る
-s : -a オプションを付けた場合の suffix 指定

複数指定できる場合の実用的な例が思いつかないですが、
上記のオプションを使ってたとえば次のようなことも可能。

$ basename -s "円" -a 200円 150円 300円
200
150
300

確認環境

macOS, Linux(Ubuntu) 標準の basename コマンド。

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

Goで世界にこんにちはする

はじめに

気になってたGo言語で世界に挨拶してみる
以下公式サイトのGetting Startedに沿って進めた。
Getting Started

環境

macOS Mojave(v10.14.4)
homebrew v2.1.0
go v1.12.3

インストール

まずはGoのインストールから
自分はHomebrewでインストールした。

$ brew install go

インストール成功したら、Goのワークスペースを作成する

$ cd $HOME && mkdir go

※Goはデフォルトワークスペースを$HOME/goとしているので、他のディレクトリをワークスペースにしたい場合は以下のようにGOPATHというパスを設定する必要がある
くれぐれもsource $HOME/.bash_profileを忘れずに

.bash_profile
export GOPATH=$HOME/World/Japan/qiita/go

【参考】
SettingGOPATH

世界に挨拶してみる

ワークスペースを作成したらソース用ディレクトリを用意する。

$ cd $HOME/go # もしくは $ cd $GOPATH
mkdir -p src/hello

ソースコードは以下を作成する。

hello.go
package main

import "fmt"

func main() {
  fmt.Printf("こんにちは, 世界\n")
}

packageは名前空間1を示し、importで依存パッケージを取り込むための指定を行っている。
そして、funcで関数の宣言を行い、fmt.Printfでコンソール出力を行うようだ。

ちなみに、Go言語はpackage mainのmain関数をエントリーポイント2として扱うので、名前空間と関数宣言がそれぞれmainになっている。

実行するときはgo run ファイル名
なお、ビルドして実行ファイルを作成したい場合は対象のファイル名を含んだディレクトリ内でgo buildを実行する。

$ go run hello.go
こんにちは, 世界

世界に挨拶できたらこっちのもんだ
これで僕も君も今日からGo使い。

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

Goで世界にこんにちはする HelloWorld

はじめに

気になってたGo言語で世界に挨拶してみる
以下公式サイトのGetting Startedに沿って進めた。
Getting Started

環境

macOS Mojave(v10.14.4)
homebrew v2.1.0
go v1.12.3

インストール

まずはGoのインストールから
自分はHomebrewでインストールした。

$ brew install go

インストール成功したら、Goのワークスペースを作成する

$ cd $HOME && mkdir go

※Goはデフォルトワークスペースを$HOME/goとしているので、他のディレクトリをワークスペースにしたい場合は以下のようにGOPATHというパスを設定する必要がある
くれぐれもsource $HOME/.bash_profileを忘れずに

.bash_profile
export GOPATH=$HOME/World/Japan/qiita/go

【参考】
SettingGOPATH

世界に挨拶してみる

ワークスペースを作成したらソース用ディレクトリを用意する。

$ cd $HOME/go # もしくは $ cd $GOPATH
mkdir -p src/hello

ソースコードは以下を作成する。

hello.go
package main

import "fmt"

func main() {
  fmt.Printf("こんにちは, 世界\n")
}

packageは名前空間1を示し、importで依存パッケージを取り込むための指定を行っている。
そして、funcで関数の宣言を行い、fmt.Printfでコンソール出力を行うようだ。

ちなみに、Go言語はpackage mainのmain関数をエントリーポイント2として扱うので、名前空間と関数宣言がそれぞれmainになっている。

実行するときはgo run ファイル名
なお、ビルドして実行ファイルを作成したい場合は対象のファイル名を含んだディレクトリ内でgo buildを実行する。

$ go run hello.go
こんにちは, 世界

世界に挨拶できたらこっちのもんだ
これで僕も君も今日からGo使い。

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

[Rust]Actixインストール手順

1. Rustのインストール

https://www.rust-lang.org/tools/install
こちらで推奨されている通り、下記コマンドでインストールします。

curl https://sh.rustup.rs -sSf | sh

下記の通り、コンソールログが表示されます。

kanayatBookpuro:~ taichikanaya$ curl https://sh.rustup.rs -sSf | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust programming 
language, and its package manager, Cargo.

It will add the cargo, rustc, rustup and other commands to Cargo's bin 
directory, located at:

  /Users/taichikanaya/.cargo/bin

This path will then be added to your PATH environment variable by modifying the
profile files located at:

  /Users/taichikanaya/.profile
  /Users/taichikanaya/.bash_profile

You can uninstall at any time with rustup self uninstall and these changes will
be reverted.

Current installation options:

   default host triple: x86_64-apple-darwin
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

上記で止まりますので、1を入れてEnter押下します。そしてしばらく待ちます。

>1

info: syncing channel updates for 'stable-x86_64-apple-darwin'
info: latest update on 2019-04-11, rust version 1.34.0 (91856ed52 2019-04-10)
info: downloading component 'rustc'
 78.9 MiB /  78.9 MiB (100 %)   1.7 MiB/s ETA:   0 s                
info: downloading component 'rust-std'
 51.1 MiB /  51.1 MiB (100 %)   1.6 MiB/s ETA:   0 s                
info: downloading component 'cargo'
  3.4 MiB /   3.4 MiB (100 %)   1.6 MiB/s ETA:   0 s                
info: downloading component 'rust-docs'
 10.2 MiB /  10.2 MiB (100 %)   1.5 MiB/s ETA:   0 s                
info: installing component 'rustc'
 78.9 MiB /  78.9 MiB (100 %)  10.8 MiB/s ETA:   0 s                
info: installing component 'rust-std'
 51.1 MiB /  51.1 MiB (100 %)  16.0 MiB/s ETA:   0 s                
info: installing component 'cargo'
info: installing component 'rust-docs'
 10.2 MiB /  10.2 MiB (100 %)   1.0 MiB/s ETA:   0 s                
info: default toolchain set to 'stable'

  stable installed - rustc 1.34.0 (91856ed52 2019-04-10)


Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH 
environment variable. Next time you log in this will be done automatically.

To configure your current shell run source $HOME/.cargo/env
kanayatBookpuro:~ taichikanaya$ 

2. IntelliJで新規Rustプロジェクト作成

https://github.com/intellij-rust/intellij-rust
こちらに載っている通り、IntelliJにRustプラグインを入れます。
・Toolchain locationにはRustのパスを設定します。
・Standard libraryはToolchain locationを入れると「rust up」リンクが表示されますので、
 それをクリックすると自動設定されます。
スクリーンショット 2019-04-13 17.34.45.png

下記の通り新規プロジェクトが作成されます。
スクリーンショット 2019-04-13 17.37.07.png

3. Cargo.tomlにactix設定追加

https://actix.rs/docs/installation/
こちらを参考に、dependenciesを追記します。

Cargo.toml
[package]
name = "xxxxxxx"
version = "0.1.0"
authors = ["xxxxxxxxx"]
edition = "2018"

[dependencies]
actix-web = "0.7" # これを追加

4. main.rsを実装

indexはhttpリクエストの受け口です。
mainではAPサーバを起動しています。

main.rs
extern crate actix_web;
use actix_web::{server, App, HttpRequest};

fn index(_req: &HttpRequest) -> &'static str {
    "Hello world!"
}

fn main() {
    server::new(|| App::new().resource("/", |r| r.f(index)))
        .bind("127.0.0.1:8088")
        .unwrap()
        .run();
}

5. いざ実行

cargo.tomlのあるディレクトリまで移動してから下記コマンドを実行します。

cargo run

6. Webブラウザからアクセス

このようにHello worldが表示されればOKです。
スクリーンショット 2019-04-13 18.24.30.png

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

command phasescriptexecution failed with a nonzero exit code エラーとの戦い

Xcode 10.2にしたらなぜか以上のエラーに襲われるように
ググった感じの下記対応は全滅でした。。

・PC再起動
・Xcode再インストール
・clean
・DerivedData削除
・keychainを開く->左メニューの ログイン を右クリック -> キーチェーンログインをロック -> キーチェーンログインのロックを解除

最終的な解決方

gawkとreadlineのバージョンが関係していたみたい

brew uninstall readline
brew uninstall gawk
brew install readline
brew install gawk

で解決

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

Appleの配送修理で修理後の追跡伝票番号を確認する方法

Apple 製品を配送修理して、修理後の発送完了メールには「配達伝票番号:」とありますが、番号が書かれていません。メール内の URL を開いても番号はありません。

Apple ID でログインすることで詳細情報を見られるようになります。
https://mysupport.apple.com/?selectedLocale=ja_JP

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

mac に root 権限で npm モジュールをグローバルインストールする

mac で TypeScript を使えるようにしようとして手間取った。

Node.js をインストール

Node.js 本体を https://nodejs.org/ からダウンロードしてインストールする。
インストールには管理者権限が必要。

npm のモジュールをグローバルインストール…失敗

ターミナルで npm install -g typescript を実行。
…インストール先ディレクトリーに権限がないということで失敗。


ターミナルでの入出力
bash
$ npm install -g typescript
npm ERR! path ../lib/node_modules/typescript/bin/tsc
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules/typescript/bin/tsc' -> '/usr/local/bin/tsc'
npm ERR! { [Error: EACCES: permission denied, symlink '../lib/node_modules/typescript/bin/tsc' -> '/usr/local/bin/tsc']
npm ERR! cause:
npm ERR! { Error: EACCES: permission denied, symlink '../lib/node_modules/typescript/bin/tsc' -> '/usr/local/bin/tsc'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/typescript/bin/tsc',
npm ERR! dest: '/usr/local/bin/tsc' },
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, symlink \'../lib/node_modules/typescript/bin/tsc\' -> \'/usr/local/bin/tsc\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/typescript/bin/tsc',
npm ERR! dest: '/usr/local/bin/tsc' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).
 
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/sdkei/.npm/_logs/2019-04-13T01_16_55_245Z-debug.log

root のパスワード?

Node.js が root 権限でインストールされていたので、npm install -g typescript も root ユーザーで実行する必要があった。
じゃあ sudo で…。
あれ、root ユーザーのパスワードとか知らんぞ?
管理者アカウントは root アカウントとは違うしな。

mac root でggる。
 ↓
Mac でルートユーザを有効にする方法やルートパスワードを変更する方法

システム環境設定から root ユーザーを有効にして(そのときにパスワードも設定する)、
それから root ユーザーを使い、
作業が終わったらまた無効にするとのこと。

やってみる

まずシステム環境設定から root ユーザーを有効化・パスワード設定して…。

sudonpm install を実行する。

$ sudo npm install -g typescript
/usr/local/bin/tsserver -> /usr/local/lib/node_modules/typescript/bin/tsserver
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
+ typescript@3.4.3

(実行した時点でパスワードを聞かれる。)

インストールできたようなので root ユーザーを無効に戻す。

typescript モジュールがインストールされたことを確認する。

$ tsc --version
Version 3.4.3

成功!

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

remove Loopback audio from device list

soundflowerを探す過程でloopback audioというsoftwareを試した.
しかし, 結局, loopback audioは不要ということになったので, applicationから削除した.
だが, soundのdevice listにloopback audioが残ってしまった.
サウンドデバイスから削除できない諸問題を解決した。[Soundflowerとか]
の方法ではloopback audioのkextが見つからず削除できなかった.

本記事はその解決方法の備忘録.

公式
にあるように,
loopback audioのinstallerを立ち上げて, そこでunistallを実行してやるとちゃんと消えた.

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

なかなか入門できなかった人のためのdocker(+go)入門以前 part1

まえがき

goのプログラムをdockerで動かしたい、あわよくばk8sでデプロイしたいシリーズ第二弾です。
この part1 では、 docker run してdocker上でプログラムを動作させるところまでを扱います。


流行りのdockerですが、なかなか波に乗り切れず、ローカル開発環境の方が簡単じゃない? と思ってしまっているうちにだいぶ時間が経ってしまいました。

これ以上化石になってしまわないように、なんとかdockerに入門したい。あわよくばgoを動かしたい。そんな記事です。

なお、先々にk8sでのデプロイを目論んでいる関係もあり、この記事ではdocker-compose1を扱いません。

想定読者

  • dockerよくわからない
  • docker使いたい
  • 急に複雑な構成が出てきても困る
  • オプションとかの細かい説明や「これが最強だ」みたいなハイテクコマンドが出てくると理解を拒否してしまう
  • ローカル環境やVagrantでなら非常に初歩的なことで躓いてdocker入門しきれてない
  • 環境構築的には、Vagrantfile(そこまで深くはわからんけど)いじったことあるよーぐらいのレベルの人

あまり想定していない読者

  • docker-composeの使い方を学びたい
  • goの最低限の動かし方を知りたい
    • 第一弾の記事を前提にこの記事では説明を進めるので、記事内でのgoに関する説明はあまりありません
  • webサーバーとか仮想環境とかなんのことだかよくわからない、ぐらいのレベルの人
    • ローカルwebサーバーとしてのdockerの立ち上げ方の説明を試みているので、そのあたりの前提になっている知識の説明が少ない可能性があります。
  • Windowsの方
    • 筆者がMacを使っていてMacの環境を前提に説明するので、Windowsの方に全然優しくない説明の可能性が高いです

dockerの特徴について

以下のような特徴があり、旧来の勢力であるローカル開発環境やVagrantのいいとこ取りがしやすいとのことで、近年急激に普及してきています。

  • 配布可能な仮想環境
    • DockerfileによってIac(Infrastructure as Code)が実現でき、共通の開発環境を簡単に配布できます
  • コンテナ型仮想化
    • コンテナと呼ばれる技術(というか、考え方?)を用いて環境構築をします。
    • イメージとしては、OSをdockerがエミュレート2してくれて、開発に実際に関係ある部分だけ都度環境構築するイメージ
    • 従来型のホスト型仮想化と呼ばれる形式と比べて軽量に動作しやすいです3
  • Kubernetes(通称k8s)などのコンテナオーケストレーションサービスとの連携
    • 連携しやすかったです(感想)。GKEでは作ったコンテナをCloud Registryに追加して画面ぽちぽちするだけでデプロイできました。
    • よりスケーラブルな話はまたいつか

以下の記事の方がよりわかりやすかったり、詳しかったりしそうです。

さて、入門以前に入っていきましょう。
動かすまでの手順というイメージです。

dockerをインストールする

docker公式サイトからインストールしてきましょう。

右上のGet Startedから、Get Started with Dockerのページに行って、 Download for Mac をクリックします。

DockerHubのDocker Desktop for Macというページに飛ばされるので、サインアップなどを済ませて Get Docker しましょう。

Docker.dmg

というファイルがダウンロードできたら、展開してインストールを進めます。
しばらくGUIの指示に従ってインストールを進めると、処理が完了しdockerが使えるようになります。

terminal上で

docker -v

として、

Docker version 18.09.2, build 6247962

のような表示が出れば成功です。(インストールだけは昔からしているので、↑はちょっと古いかも)

dockerを動かす

dockerを動かすまでには、いくつかのステップがあります。
最低限以下のことがわかっていれば、dockerを試すところまではいけると思います。

  • docker imageを取得する
  • docker imageからコンテナを起動する

それでは早速やっていきましょう。

docker imageを取得する

以下のコマンドを打てば取得できます。

docker pull golang:1.12.3-alpine3.9

このコマンドについてもうちょっとだけ説明していきます。
まず、

docker pull image名:タグ名

とすることで、 docker registry と呼ばれる docker image が保管されている場所から docker image を取得してくることができます。

取得してきた docker image の一覧は

docker images

を実行することで確認できます。

docker imageってなに?

とはいえ docker image って何よ、という話なのですが、端的にいうと「サーバーの設計書」です。
docker は docker image があれば、 docker container と呼ばれるサーバーをセットアップし、起動することができるのです。

今回でいうと、 golang というのが docker image の名称になります。

docker imageのタグについて

では、例にあるコマンドの 1.12.3-alpine3.9 ってなんなのでしょうか。
これはタグと呼ばれる情報で、取得するイメージのバージョンや環境などを選択できます。

1.12.3 の部分はgoのバージョンを表しています。

そのあとはモノによるのですが、今回のように追加情報が記載されていることがあります。

stretch と alpine について

golang イメージには主だったもので stretch 系と alpine 系のタグが存在します。

タグごとに docker image を定義している Dockerfile の記載が異なるので、動作が異なります。
stretch系はdebian系のimageで、 g++, gcc, libc あたりの機能をはじめにインストールしているみたいです。純粋にgolangを動かしたい方に向いている印象です。

alpine系はlinux系のimageで、あらかじめ bash, openssl などをインストールしているため通信系の機能などを含むアプリケーションの場合は取り回しがしやすいです。簡易的にWebAPIを作りたいようなときはこちらが便利そうですね。

色々と使いやすいのもあり、今回は 1.12.3-alpine3.9 を利用します。

なお、Dockerfileのレベルで確認したい方は以下のリンクが参考になります。
docker、最初はとっつきづらいなと思っていたんですが、慣れてくるとあらゆる情報がDockerHubなどを通じて公開されているのでこういうところがとても追いかけやすいなあ、と感じました。

docker imageからコンテナを起動する

docker run image名:タグ名

で起動できます4

このコマンドで起動され立ち上がったサーバーのことを、 dockerコンテナと呼びます。

起動時の動作に指定がない docker image の場合、上記のコマンドは成功しますがその後何も起きません。

コンテナ起動時には、パターンに応じて以下のオプションを理解しておくと良いと思います。

dockerコンテナのなかでbash等のコマンドを実行したい

bashなどのコマンドを実行したい場合、 -it オプションを用います。5

docker run -it image名:タグ名

dockerコンテナをホストマシンのディレクトリでマウントして、webサーバーとして起動したい

開発用のwebサーバーとしてdockerコンテナを起動したい場合、

  • 手元のコードを反映してほしい
  • ローカルマシンから localhost:8080 とかでアクセスできるサーバーとして立ち上がってほしい

というニーズがあると思います。
その実現にあたっては、ざっくり以下のことを把握しておくと良いと思います。

  • -p オプションで port forwarding
  • -v オプションで マウント元とマウント先の指定
  • -e オプションで 環境変数の指定
  • -d オプションで バックグラウンド実行
  • -it オプション + image:tag の後にコマンドを記載することで、webサーバー起動コマンドの流し込み

上記を踏まえた実行時のterminalのイメージは以下のような感じ。
/path/to/host/path/to/docker は仮のパスなので適宜読み替えてくださいませ。

docker run -it \                                     # コンテナ内部に入ってbashの操作を行う。最終行でコマンド指定
           -p 8080:8080 \                            # ホストマシンのポートとdockerコンテナのポートを接続する。
           -v /path/to/host/go:/path/to/docker/go \  # ホストマシンのディレクトリ情報でdockerコンテナの中身をマウントする。フルパスじゃないと動かないかも
           -e ENV_VARIABLE=env_value \               # 環境変数の指定
           -e ENV_VARIABLE2=env_value2 \             # 環境変数を複数指定する場合は繰り返し用いる
           -d \                                      # バックグラウンド実行
           image:tag \                               # 使用するdocker imageの指定。確か公式リポジトリにあるやつならdocker runするときに取ってきてくれる
           go run main.go /path/to/docker/go/main.go # 実行するコマンド。 -it コマンドの初期値として与えることができる

なお、 docker run の際にはタグ名を省略することもできますが、同じ名称のimageを複数pullしてきている場合はタグまで書いた方がわかりやすいです。

ここで起動されたサーバーのことをdocker containerと呼びます。

なお、コンテナを動かすにあたっては、こちらの記事がより参考になります。コマンドの実例集は本当にありがたい。。

起動したコンテナを使って開発や動作確認をする

動く docker run コマンドの例を書いてみます。
とりあえず動かしたい! という方は真似してみてください。

事前に、上記のdocker imageを取得しておいてください。

一旦仮定として、以下のパスにいることにしましょう。
/YOUR_USER_NAMEtestproject は適宜読み替えをお願いします。
また、 $GOPATH は ~/go という仮定で話を進めます。

pwd #=> /Users/YOUR_USER_NAME/go/src/github.com/testproject/

ここでいつものサンプルを作成します。

/Users/YOUR_USER_NAME/go/src/github.com/testproject/main.go
package main

import "github.com/gin-gonic/gin"

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "message": "pong",
    })
  })
  r.Run() // listen and serve on 0.0.0.0:8080
}

この状態で、以下のようなコマンドを実行します。

docker run -it \
           -p 8080:8080 \
           -v /Users/YOUR_USER_NAME/go/src/github.com/testproject:/go/src/github.com/testproject \
           golang:1.12.3-alpine3.9 \
           go run /go/src/github.com/testproject/main.go

これを実行すると、 docker image を元にした docker container が起動し、ローカルサーバーが立ち上がります。

localhost:8080/ping

にアクセスして、 {"message": "pong"} のレスポンスが返ってくれば成功です。

その他のコマンドについて

以下を覚えておくと入門以前のレベルとしては十分だと思います。

docker images              # 手元にある docker image が確認できる
docker rmi [IMAGE ID]      # 指定したimageが削除できる。IMAGE IDは docker images で確認できる
docker ps                  # 起動中のコンテナが確認できる
docker kill [CONTAINER ID] # 指定したcontainerを停止できる。CONTAINER IDは docker ps で確認できる

Dockerfile使ったりdocker buildしたりしたい。そしてコンテナをデプロイしたい

そんな感じで、dockerのなんとなくの概要とかをまとめつつ、docker runでサーバーが起動するところまでを駆け足でまとめてみました。
Dockerfileってなに?
手元で動くだけじゃ困るんだけど?
みたいな悩みが本番デプロイやdocker imageの配布などを行いたい人には発生すると思うのですが、これは次回以降に続きます。続け!


  1. docker-composeとは、複数のdockerコンテナ(記事内で言及予定)を構成管理できるツールです。よくセットで出てくるけどdockerに対するメタツールなので必須ではないものです。例えばWebアプリケーションサーバーとしてのコンテナと、MySQLサーバーとしてのコンテナを同時に立ち上げ、接続設定まで済ませるといったことが可能です。この記事ではできる限りシンプルにdockerの動かし方を学びたい(しかもこれ書いてる人もdocker-composeよくわかってない)ため、言及していません 

  2. 完全に余談ですが、シミュレートは内部の動作を再現すること、エミュレートは目に見える動作を再現することを指すらしく、位置付けがけっこう異なるようです。高度に完成されたシミュレーションとエミュレーションは同じ結果をもたらす、とも言われています。 

  3. IE8を再現するためのVirtualBoxイメージとかね・・・ 

  4. Vagrantでの vagrant up にあたります 

  5. Vagrantでの vagrant up → vagrant ssh にあたります 

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

Downgrade Java MacOS

After install Java check what versions do you have:

$ java --version

Something like this will appear:

Matching Java Virtual Machines (2):
    12, x86_64: "Java SE 12"    /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
    11.0.2, x86_64: "Java SE 11.0.2"    /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

Select the version you want:
/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

open your bash to edit:

$ sudo vi ~/.bash_profile

and add this line:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

update your bash:

source ~/.bash_profile

confirm:

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