- 投稿日:2020-03-18T21:17:56+09:00
MACのvimでコピーができるようになるまで
最初に
mac標準のvimで、文章を書こうとしたら、なぜかyyでコピーもできなかった。。。
ググって、下記を見つけた。
macのvimでクリップボードにコピーを使いたい!!なるほど、homebrewでインストールすればいいのかと思い、とりあえず実行。
これだけやれば、vimでコピーはすぐ使えるようになった!
brew updatebrew install vim以上!コピーできるようになった!良かった!
補足
情報元の方が書いた方法だと、よく考えたらアップデート対応が面倒だな〜と思い、他に方法がないか探していた。
で、下記を見つけた。
OS X に Vim を Homebrew でインストールして vi で起動する - Qiita
オプション入れたらいけるのかーと思い、トライしてみた。brew install vim --with-override-system-viでも、このコマンドをやってみると、下記のエラーが出ていた。
Error: invalid option: --with-override-system-viなんでだろーと思い、調べてたら、下記を発見。
brew install got Invalid option error #817まあ、みんな気になっていたみたいだけど、
結局のところ、オプションなしで入れてみて、同じような結果になることがわかった。
オプションがデフォルトになって、インストールが簡単になったのかな。
上記のコマンドの結果、最終的なvimとしては、下記のようにリンクで参照されていた。OK。$ which vim /usr/local/bin/vim $ ls -la /usr/local/bin/vim lrwxr-xr-x 1 user admin 30 3 18 20:19 /usr/local/bin/vim -> ../Cellar/vim/8.2.0350/bin/vim環境
$ brew --version Homebrew 2.2.10 Homebrew/homebrew-core (git revision d7e71; last commit 2020-03-17) Homebrew/homebrew-cask (git revision 382de; last commit 2020-03-18)
- 投稿日:2020-03-18T19:53:22+09:00
MacからUbuntu18.04へのリモート接続設定備忘録(UFW設定方法付き)
MacからUbuntu18.04へのリモートデスクトップ接続の設定方法をいつも忘れて困ってしまうので備忘録メモとしてまとめます。
検証環境
Mac: macOS 10.14.6 Mojave
Ubuntu: Ubuntu 18.04.4 LTS環境設定 @ Ubuntu
まずはUbuntu側で設定します。
Vinoのインストール
画面共有(リモートアクセス)を有効にする為に、Vinoをインストールします。
sudo apt install -y vinoVinoの通信を暗号化するとMacと通信出来ない不具合が有るので通信の暗号化を無効化します。
gsettings set org.gnome.Vino require-encryption false
sudo
を付けている情報もネットに有りますが、正しくはsudo
を付けません。
sudo
を付けるとエラーが出ます。$ sudo gsettings set org.gnome.Vino require-encryption false [sudo] user のパスワード: (process:3278): dconf-WARNING **: 23:34:23.211: failed to commit changes to dconf: 接続が閉じています参考: デスクトップを共有する
画面共有の設定
設定画面
から共有/画面共有(S)
順にクリックします。必ずパスワードを要求する
を選択し、パスワードを設定します。UFWの設定
Ubuntuのファイアウォールの設定を行います。Ubuntu18にはUFW(Uncomplicated Firewall)というファイアーウォールがデフォルトでインストールされています。初期状態では
非アクティブ
状態なので、そのまま使用できますが、本記事ではファイアーウォールの設定を行います。UFWの状態を確認
Desktop版の場合、初期状態では
非アクティブ
状態です。$ sudo ufw status 状態: 非アクティブUFWを有効化
Uncomplicated Firewallを有効化します。
$ sudo ufw enable ファイアウォールはアクティブかつシステムの起動時に有効化されます。状態を確認します。
$ sudo ufw status 状態: アクティブ To Action From -- ------ ----ポート5900番を開放
sudo ufw allow 5900
設定後の状態を確認します。IPv4, IPv6両方のルールが登録されます。
$ sudo ufw status | grep 5900 5900 ALLOW Anywhere 5900 (v6) ALLOW Anywhere (v6)
- 設定内容の格納先
- IPv4:
/etc/ufw/user.rules
- IPv6:
/etc/ufw/user6.rules
参考: ufwの基本操作
mDNSの設定
<USER_NAME>@<HOST_IP>
ではなく、同じネットワーク上のホストへの接続なら<HOST_NAME>.local
で接続出来る様にするために、mDNS(multicast DNS)をインストールします。Ubuntuではavahi-daemon
をインストールします。sudo apt install -y avahi-daemon参考: mDNSを設定して、いちいちIPアドレスを打ち込むのをやめよう。
環境設定 @ Mac
続けてMac側の設定を行います。Mac用のリモートデスクトップソフトは標準搭載の物を用います。
接続設定
Finderを起動し、
command + K
を同時に押すと以下の様なウィンドウが表示されます。上側の入力欄にvnc://<HOST_NAME>.local:5900
と入力し、接続をクリックします。ログイン画面が表示されるので画面共有の設定で設定したパスワードを入力し、サインインをクリックします。
ログインに成功するとデスクトップが表示されます。
まとめ
Macからサーバー用途に用いているUbuntuデスクトップへのリモート接続の設定方法をいつも忘れてしまい、再設定時にあちこち探し回って設定していたため、本記事では備忘録メモとしてまとめました。今後は備忘録メモも記事として投稿していこうと思います。
Reference
- 投稿日:2020-03-18T19:29:44+09:00
オーディオファイルのメタ情報を参照する
オーディオファイルのメタ情報を手軽に参照したいなと思ったとき、SoX (Sound eXchange) が簡単に利用でき便利です。元々 SoX はオーディオファイルの変換を主な機能とするコマンドラインツールですが、他にも様々な機能を提供しています。
macOS を利用している方なら Homebrew からインストールできます。
$ brew install sox試しに次の URL で公開されている MP3ファイルのメタ情報を参照してみると、以下のようにメタ情報を参照することができます。Sweeping Broom Shorter Sounds | Effects | Sound Bites | Sound Clips from SoundBible.com
$ sox --info sweeping_straw_broom-mike-koenig.mp3 Input File : 'sweeping_straw_broom-mike-koenig.mp3' Channels : 2 Sample Rate : 44100 Precision : 16-bit Duration : 00:00:07.81 = 344465 samples = 585.825 CDDA sectors File Size : 312k Bit Rate : 320k Sample Encoding: MPEG audio (layer I, II or III)
- 投稿日:2020-03-18T17:08:51+09:00
mac chainercv install failed
environment
- Macos Catalina 10.15.1
- python 3.6.8
- pip 20.0.2
installation
$ pip install -U numpy $ pip install chainercverror
Building wheels for collected packages: chainercv Running setup.py bdist_wheel for chainercv ... error . . . error: command 'clang' failed with exit status 1 . . .solution
$ xcode-select --install
- 投稿日:2020-03-18T16:57:14+09:00
Mac上のファイルにAndroidからアクセスするには
Mac上のファイルにAndroidからアクセスしたかった話
ことの発端はHTMLであるページを作っていた時の話。
当然PCでHTMLファイルを記述していたわけだが、そういや公開したらスマホでも見るかもしれないな(というか多分そっちのほうが多いだろう)と思い、(私は手持ちの端末がAndroidなので)ファイル共有して開こうと思った…
が!
私は保守や作成時にわかりやすいよう、ファイル(特にCSS)を大量に分割して記述することが多く、ファイル転送がめんどくさい!
(いや、がんばれ)ということで、手持ちの環境でファイル共有ができないかと模索してみた。
FTP
無知な私が最初に思いついたのはFTP。スマホのファイルマネージャーに簡単にFTPが作れる物があったからだ。
FTPとは、File Transfer Protocol、ファイル転送プロトコルのこと。
プロトコルっていうのは、Wikiによればプロトコルまたはプロトコールとは、複数の者が対象となる事項を確実に実行するための手順について定めたもの。
もともとは「人間同士のやりとり」だけに関する用語であった。戦間期の学術的批判を経て、情報工学分野でマシンやソフトウェア同士のやりとりに関する取り決め(通信規約)を指すためにも用いられるようになった。
ーーWikipedia
ということで、つまりは手順や取り決めと言ったところ。
そこで、無知な私が(2回目)FTPについて調べてみると、基本的にFTPや、その類似であるSFTP、FTPSなどはサーバー、クライアント間でファイル共有をする時に使うもの。
私がやりたいのはスマホからアクセスしたいので、もしかしたら深く調べればできるのかもしれないが、今回は断念。
ケーブル経由
そりゃあもちろんケーブル経由も検討しましたが、それはなんかチガウので却下。
あまり調べてはいないが、ケーブル接続したら自動でファイルの同期処理とかもできるかもなあと思った。
macOSのファイル共有
macにそんな機能ないかななんて、設定で探したら"共有"(Sharing)なんていうおあつらえ向きの設定項目があるじゃないですか。
これを使ってみよう!としたのだが、ファイル共有(File Sharing)とかの項目はあるのだが、どう考えてもアドレスがandroidからアクセスできるようなものではない…
afb://やsmb://
から始まるものであった。調べてみれば、AFPは
Apple File Protocol
というもので、名前からしてApple独自のものだろう。SMBは
Server Message Block
というものらしく、Windows間でのファイル共有を行うためのものらしい。…ちっがーう!
Android側を頑張ってみる
mac側で色々調べてみたが、どうにもうまく行かないものなので、Androidをどうにか対応できないか考えてみることにする。
SMB?
これ気になる。
Windows間でのファイル共有ができるのならばAndroidは対応しているのでは…?という考えに至り、ちょっと探してみたところ、ありました。
私は今まで
File Manager HD
という、ネットワーク探査などができるファイルマネージャーが使いやすくそれを使っていたのだが、残念ながらSMBには対応していなかった。そこで見つけたのが
Cx File Explorer
。
UIが非常にFMHDに似通っているのでそそくさと乗り換え。ちょっと使ってみたところ、UXも上々。メモリ1.8GBのスマホでも動いたので良いですねこれ。
さて本題、SMBに接続する準備をしていく。
SMBを使用する準備
まずMac側から。
設定の共有設定項目から、ファイル共有を選択、これをオン。
続いて、右側、共有フォルダ(Shared Folders)に、必要であれば+
ボタンを押してフォルダを追加。右側、ユーザー(Users)の欄に使うユーザーが追加されているかを確認。
なければ+
ボタンを押して追加。
ファイルにアクセスするだけならば読み取りのみ(Read Only)で構わないが、書き込みとかをするのなら読み取りと書き込み(Read & Write)に変えておく。その後、設定(Options...)のボタンからWindows共有(Windows Sharing)の下の欄にあるユーザー一覧から使用するユーザーのチェックボックスをオンにしておく。
次にAndroid側。
ネットワークを確認して、MacのあるLAN上に接続しているかを確認しておく。
使ってみる
ファイルマネージャーからネットワーク、SMBを選択してアドレスを入力。
アドレスは上の画像(マスクしてあるが)File Sharing:Onの下の説明文のところに
smb://192.168.11.101
のような形で表記してある。ユーザー名とパスワードも忘れずに匿名のチェックを外して入力し、接続。
うまく行けば、macで設定したフォルダが表示されるはずです。
がっ…ダメ…!
しかし、私の環境ではなぜか一部のフォルダにはアクセスできなくなってしまいました。
なぜ…?と思いましたが、調べても解決せず…
なので泣く泣く他の方法を模索することに
リモートログイン
気になったのは、File Sharingの時に数段下にあったリモートログイン(Remote Login)。
名前からして外部からファイルにアクセスできそう…!
ということで少し調べてみると、どうやらSSH暗号化を使ってアクセスするらしい…
と、ここでピンと!
最初の方に出てきたSFTPを調べていた時、説明の中にSSHという言葉が出てきたような気がしたのです。
物は試し、やってみることにしました。
SFTP-リモートログイン
まずはMacの準備。リモートログインの項目を開いて、使用するユーザーを追加しておく。
次にAndroid側から、ファイルマネージャーのネットワークから同じように追加するのだが、この時、タイプをSFTPにする。
アドレスを入力(リモートログインの下、
type "ssh ~~~~~@......"
の...
部分)し、ユーザ名とパスワードを入力して接続。うまく行けば、ユーザーのホームフォルダに移動するはずだ。ここから辿らなければならないのは面倒ではあるが、SMBを使うよりもSFTPを使ったほうが良いかもしれない。
SFTPの利点
SFTPは常にSSHという方法で暗号化されている。これはSecure SHellの略で、ファイルの閲覧等からパスワードの認証など、通信のすべてが暗号化される。
SSHは共有鍵と公開鍵を使用するハイブリッド暗号化方式で、安全性が高い(…らしい)
これは感覚だが、SMBなんかより断然接続が早かったように感じる。
まとめと補足
- FTPは普及率は高いが暗号化が一切されておらず、パスワードなども平文で送信するため盗聴される可能性もある。しっかり調べよう
- 今度ケーブル経由での同期方法も作ってみようと思った。
- 詳細は今度書くかも
- MacOSの機能を使って今回は解決することができたが、ちょっと調べただけではダメだね。
もっとしっかり調べないと。- SMBは対応しているアプリ等が少なく、あまりおすすめできない上に、私の環境ではエラーが頻発。
なんだコレ。- SSHという文字列から今回の解決方法にたどり着けたのは僥倖。
やっぱりよく調べておかないと。(何なら普通に調べたらこの方法出てきたけど。)- SFTPはエラーもなく普通に快適に使えた。どうやら対応しているアプリも非常に多かった。
- File Manager HDも対応していた…
今更戻す気にもならないが。- セキュリティは大事だね。しっかり調べないと(n回目)。
- ついでに速度大事。UX。
- UXとUIについては論じ始めたら止まらないと思うんだけど僕だけかな
- IPは再接続しても変わらないのは初めて知りました
- いちいち再編集しなくても簡単に再アクセスできますね
今回思ったこと以上9点。
特に深い技術的な内容ではないかもしれないが覚え書きと同じようなことで躓いた人に。
浅い調べ方だったり調べ方違ったりすると出てこないからね。
- 投稿日:2020-03-18T14:59:15+09:00
【Mac】BOM付きファイルの変換
- 投稿日:2020-03-18T10:41:50+09:00
Macの仮想環境上でaws-cliが実行できない時の解決方法(python3.8インストール後)
経緯
pythonの仮想環境上で、aws-cliを使用しようと公式のコマンドを実行しようとしても上手くできなかったので、その解決方法の備忘録。
設定を色々いじってもダメだったので全部消してから再インストールしてみました。(2020/03)仕様
Macbook: MacOS Mojave
Python: Python 3.8.0aws-cliをインストール
公式に従い、以下を実行
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/installしかし、
$ aws --version
でバージョン確認したところエラー発生cannot execute binary file
デバッグ
色々試したものの、どれもうまくいかなかったので一度仕様してないファイルはきっちり消すため
$ rm '/usr/local/bin/aws'
$ rm '/usr/local/bin/aws_completer'
で削除を実行。そこから
$ pip install --user virtualenv $ virtualenv ~/[仮想環境名]で新たに仮想環境を作成して
#仮想環境を activate $ source ~/[仮想環境名]/bin/activate新しい仮想環境に awscli を pip install
([仮想環境名])~$ pip install --upgrade awscliawscli が正しくインストールされたかを確認
$ aws --versionaws-cli/1.18.23 Python/3.8.0 Darwin/18.7.0 botocore/1.15.23
インストール成功しました!
この後awsコマンドも正常に利用できていることを確認できました!まとめ
色々ググったけれど、公式サイトがなんやかんや最強でした。
参考・引用元
仮想環境に AWS CLI バージョン 1 をインストールする(公式サイト)(ちなみに私はAWS CLI バージョン 2 をインストールしようとして失敗したので、バージョン 1 をインストールすることで解決しました。)
バージョン 2 インストール公式はこちら↓
Linux での AWS CLI バージョン 2 のインストール(公式サイト)
- 投稿日:2020-03-18T10:41:50+09:00
Macの仮想環境上でaws-cliが実行できない時の解決方法(Python3.8インストール後)
経緯
pythonの仮想環境上で、aws-cliを使用しようと公式のコマンドを実行しようとしても上手くできなかったので、その解決方法の備忘録。
設定を色々いじってもダメだったので全部消してから再インストールしてみました。(2020/03)仕様
Macbook: MacOS Mojave
Python: Python 3.8.0aws-cliをインストール
公式に従い、以下を実行
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/installしかし、
$ aws --version
でバージョン確認したところエラー発生cannot execute binary file
デバッグ
色々試したものの、どれもうまくいかなかったので一度仕様してないファイルはきっちり消すため
$ rm '/usr/local/bin/aws'
$ rm '/usr/local/bin/aws_completer'
で削除を実行。そこから
$ pip install --user virtualenv $ virtualenv ~/[仮想環境名]で新たに仮想環境を作成して
#仮想環境を activate $ source ~/[仮想環境名]/bin/activate新しい仮想環境に awscli を pip install
([仮想環境名])~$ pip install --upgrade awscliawscli が正しくインストールされたかを確認
$ aws --versionaws-cli/1.18.23 Python/3.8.0 Darwin/18.7.0 botocore/1.15.23
インストール成功しました!
この後awsコマンドも正常に利用できていることを確認できました!まとめ
色々ググったけれど、公式サイトがなんやかんや最強でした。
参考・引用元
仮想環境に AWS CLI バージョン 1 をインストールする(公式サイト)(ちなみに私はAWS CLI バージョン 2 をインストールしようとして失敗したので、バージョン 1 をインストールすることで解決しました。)
バージョン 2 インストール公式はこちら↓
Linux での AWS CLI バージョン 2 のインストール(公式サイト)
- 投稿日:2020-03-18T09:15:57+09:00
お前らのGo環境は間違っている!GOPATHからの解放。
Welcome Gopher
Gopherの皆さんこんにちは。
Goの環境構築をより使いやすく、そしてシンプルにするためにこの記事を書きました。
Goの環境構築時に、GOPATHを設定した方が対象です。
GOPATHからの開放
Goの開発環境を構築する際に、
GOPATH
を設定する記事が散見されます。しかし、時代は変わるもの、Goのエコシステムも大きく変わろうとしています。
長い間Goの環境を支えてきた
GOPATH
も、Go 1.13
からは廃止されたようです(たぶん)Goのブログにも記載されています
Our aim is for Go 1.13, scheduled for August 2019, to enable module mode by default (that is, to change the default from auto to on) and deprecate GOPATH mode. In order to do that, we’ve been working on better tooling support along with better support for the open-source module ecosystem.
GOPATH
に変わり、GO 1.11
から実装されたmodule
が今後のGoの開発には大きく貢献していくでしょう。これから、Go開発に乗り出そうとする人は過去の栄光を捨て去り、これまでGoで開発してきた人は既存プロジェクトの様子を見ながら新しいGoのエコシステムに乗り換えましょう。
Goプロジェクトに
module
を導入と言っても、環境構築をさらに楽するために導入された
module
なので、導入も驚くほど簡単です。
より詳しい情報は、公式ページを確認してくださいGoのインストール
On Mac
terminal$ brew install goプロジェクトのセットアップ
GOPATH以外のディレクトリで、プロジェクトを作成します。
と言うのも、GOPATH以下のディクトリでは、
module
は無効になっています。
GOPATHを指定していない場合、デフォルトでは,$HOME/go
になっているので、それ以外のディレクトリでプロジェクトを作ります。terminal$ mkdir go-module-env $ cd go-module-envGo moduleの導入
モジュール名、もしくはプロジェクト名で
module
を初期化します。terminal$ go mod init go-module-env go: creating new go.mod: module go-module-envソースコードの作成
ソースコードを用意します。
以下のコードは、Goの軽量Webフレームワークで、サーバーに送られるリクエストをリッスンして、JSONを返すだけの簡単なwebアプリです。
main.go
に、Gin
を使用したコードおを書きましょう。
(ソースコードは、Ginのリポジトリからお拝借)terminal$ echo '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() }' > main.goor
terminal$ touch main.gomain.gopackage 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() }Build!!!
ビルドしましょう!
terminal$ go build go: finding module for package github.com/gin-gonic/gin go: found github.com/gin-gonic/gin in github.com/gin-gonic/gin v1.5.0ちなみに、
go.mod
を見ると、パッケージとその依存関係を確認できます。terminal$ cat go.mod module go-module-env go 1.14 require github.com/gin-gonic/gin v1.5.0Goのバージョンが
go 1.14
で、gin v1.5.0
の依存関係を明示しています。Run!!!
ビルドで作成された実行ファイルを使い、ソースコードを実行します。
terminal$ ./go-module-env [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080実行時に、ネットワークへの接続の許可お画面が表示されます。
「許可」で許可しましょう。
これで、全ての準備が整いました。
http://localhost:8080/ping にアクセスしてみましょう。JOSN形式で、レスポンスが返ってきてました。
では、ターミナルを見てみましょう。
terminal[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2020/03/18 - 09:13:11 | 200 | 236.388µs | ::1 | GET /ping先ほどのコマンドの一番下に、
/ping
へのGET
リクエストを取得して、200ステータス
を返していることが確認できました。これで、
Go module
を使ったGoプロジェクトの作成が終わりました。うむ、簡単である
Happy Hacking !
- 投稿日:2020-03-18T09:15:57+09:00
お前らのGo開発環境は間違っている!GOPATHからの解放。
Welcome Gopher
Gopherの皆さんこんにちは。
Goの環境構築をより使いやすく、そしてシンプルにするためにこの記事を書きました。
Goの環境構築時に、GOPATHを設定した方が対象です。
GOPATHからの開放
Goの開発環境を構築する際に、
GOPATH
を設定する記事が散見されます。しかし、時代は変わるもの、Goのエコシステムも大きく変わろうとしています。
長い間Goの環境を支えてきた
GOPATH
も、Go 1.13
からは廃止されたようです(たぶん)Goのブログにも記載されています
Our aim is for Go 1.13, scheduled for August 2019, to enable module mode by default (that is, to change the default from auto to on) and deprecate GOPATH mode. In order to do that, we’ve been working on better tooling support along with better support for the open-source module ecosystem.
GOPATH
に変わり、GO 1.11
から実装されたmodule
が今後のGoの開発には大きく貢献していくでしょう。これから、Go開発に乗り出そうとする人は過去の栄光を捨て去り、これまでGoで開発してきた人は既存プロジェクトの様子を見ながら新しいGoのエコシステムに乗り換えましょう。
Goプロジェクトに
module
を導入と言っても、環境構築をさらに楽にするために導入された
module
なので、導入も驚くほど簡単です。
より詳しい情報は、公式ページを確認してくださいGoのインストール
On Mac
terminal$ brew install goプロジェクトのセットアップ
GOPATH以外のディレクトリで、プロジェクトを作成します。
と言うのも、GOPATH以下のディクトリでは、
module
は無効になっています。
GOPATHを指定していない場合、デフォルトでは,$HOME/go
になっているので、それ以外のディレクトリでプロジェクトを作ります。terminal$ mkdir go-module-env $ cd go-module-envGo moduleの導入
モジュール名、もしくはプロジェクト名で
module
を初期化します。terminal$ go mod init go-module-env go: creating new go.mod: module go-module-envソースコードの作成
ソースコードを用意します。
以下のコードは、Goの軽量Webフレームワーク
Gin
を用いた、サーバーに送られるリクエストをリッスンして、JSONを返すだけの簡単なwebアプリです。
main.go
に、Gin
を使用したコードを書きましょう。
(ソースコードは、Ginのリポジトリからお拝借)terminal$ echo '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() }' > main.goor
terminal$ touch main.gomain.gopackage 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() }Build!!!
ビルドしましょう!
terminal$ go build go: finding module for package github.com/gin-gonic/gin go: found github.com/gin-gonic/gin in github.com/gin-gonic/gin v1.5.0ちなみに、
go.mod
を見ると、パッケージとその依存関係を確認できます。terminal$ cat go.mod module go-module-env go 1.14 require github.com/gin-gonic/gin v1.5.0Goのバージョンが
go 1.14
で、gin v1.5.0
の依存関係を明示しています。Run!!!
ビルドで作成された実行ファイルを使い、ソースコードを実行します。
terminal$ ./go-module-env [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080実行時に、ネットワークへの接続の許可の画面が表示されます。
「許可」で許可しましょう。
これで、全ての準備が整いました。
http://localhost:8080/ping にアクセスしてみましょう。JOSN形式で、レスポンスが返ってきました。
では、ターミナルを見てみましょう。
terminal[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2020/03/18 - 09:13:11 | 200 | 236.388µs | ::1 | GET /ping先ほどのコマンドの一番下に、
/ping
へのGET
リクエストを取得して、200ステータス
を返していることが確認できました。これで、
Go module
を使ったGoプロジェクトの作成が終わりました。うむ、簡単である
Happy Hacking !