golangで適当なパッケージを作っていて、パッケージをリネームしようとしたらよくあるエラーが発生しました。
「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」
最悪OS再起動でどうにかなりますが頻発すると面倒なので原因を見つける方法を書いておきます。
環境、バージョン情報は以下です。
windows10 go 1.12 Visual Stadio Code 1.36.1 Go for Visual Studio Code 0.11.4golangで適当なパッケージを作っていて、パッケージをリネームしようとしたらよくあるエラーが発生しました。
「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」
最悪OS再起動でどうにかなりますが頻発すると面倒なので原因を見つける方法を書いておきます。
環境、バージョン情報は以下です。
windows10 go 1.12 Visual Stadio Code 1.36.1 Go for Visual Studio Code 0.11.4new
やmake
を使って変数宣言したりappend
を使ってスライスの追加なんかを自然とやってきたけど、ふとこれは何だっけと思って調べてみました。
するとビルトインパッケージとして参照することができた。
ソースを見た感じgodoc用に見えるので中身は説明を読んで使ってみる必要がある。
この辺は知らないと使えないものなのでおさらいしておきます。
websocketを使ってサーバーとの相互通信をしたい。
gin-gonic/gin と gorilla/websocket を使って動作確認してみます。golang開発をする中で公開する予定のない私的なライブラリ(パッケージ)をどう扱うか迷っています。
以前は適当なフォルダにまとめておいて相対パスで読み込んでいましたが、modulesで管理するようになってからはプロジェクト下に置く必要が出てきて使うものを都度コピペしていました。
プロジェクトごとに微妙に違う似たようなパッケージが生産され、そろそろ管理できなそうなのでGithubのプライベートリポジトリで管理する方法を試します。
GolangのWebパッケージginを用いて作ったWEBアプリをLinuxサーバーで公開するためのメモ。ポートとかの話の続きです。
今回はアプリ永続化のための部分。
一度実行したらアップデートなどで止めるまで動き続けてくれるようにします。
Linux環境: Ubuntu 16.04.5golangではtypeによる型定義とレシーバと呼ばれるメソッド定義ができます。
複数の外部パッケージを同時使用するときなどにレシーバ追加をしたいときがあるんですが、言語規則のためそのままだと追加できません。
基本的なことからおさらいしつつ対策を考えます。
bitnamiのwordpressが動いているサーバーにgolangのWEBサービスを追加します。
アプリ自体は8080ポートで実行してサブディレクトリにマップする形です。
Apacheで他WEBサーバーを動かす場合も同様のやり方で行けると思います。