2021/04/29

[golang]GO111MODULEはまだ使う

お仕事でgolangのプロジェクトをビルドしていた。
ビルドするだけなので手順通りにやったつもりなのだが、srcの下にファイルがないから取ってこい、みたいなエラーが出ていた。

実際にないので、go getで取ってくる。
ドキュメントを見ると -d でソースコードをダウンロードしてくれるようだ。

The -d flag instructs get not to build or install packages. get will only update go.mod and download source code needed to build packages.

が、実行して src/ の下を見てもダウンロードされていない。 pkg/mod/ の下にありそうなのだが、そこでは困るのだ。

 

ドキュメントに Legacy GOPATH go get というのがある。 gopath-get と書いてあるのだが、そんなものはない。

module-aware mode と legacy GOPATH mode というのがあるのだろうけど、go get のオプションが違うわけでもないし、何だかよくわからん。

 

そこで出てきたのが、 GO111MODULE=off だ。
これを指定すると src/ の方にダウンロードしてくれた。これが legacy というやつなのかね。

GO111、と妙にバージョンに依存した書き方になっているから不要になったのかと思ったが、まだそうもいかんようだ。全部がgo modを使う世界になったら不要になるとかなのかもしれん。

 

 

あと、gomobileか何かで Androidのをビルドしていたのだけど、そこで i386 でのビルドもしているためか GO386=GO387 はサポートしてない、というエラーになってしまった。
go v1.16からそうなったらしい。

GO386=softfloat、みたいにしておけば回避できるので、今回はそれで逃げよう。

2021/04/24

[win]AppDataとProgramData

私のPCはWindowsがインストールされている。
Windows10 Proしか今は無いと思うが、Homeでもそんなに変わらんだろう。

何かというと、インストールされたアプリが使用するディレクトリについてだ。
Windowsだとフォルダと呼んだ方が良いのかもしれん。

 

大昔、Windows3.1とかの時代は、たしかINIファイルに全部保存していたような気がする。
3.0Aまでかもしれんが、ちょっと記憶にない。
で、どこからかパーソナルじゃなくてマルチユーザで使う必要が出てきて、レジストリに保存するということになってたんじゃなかったか。
さらに時代は進み、複数OSで同じアプリを動かしたいことになったためかどうかは知らないが、設定ファイルを作る方式のアプリも多いと思っている。

 

Linuxなんかは、ユーザディレクトリの下にドットで始まるファイル名なりディレクトリ名なりで場所を作って、そこに設定を保存している。/etcとかもあるだろうが、とにかくある程度場所が決まっている。

それに対してWindowsの場合、歴史的経緯もあってか設定がどこに保存されているのか分かりづらい。

  • レジストリ
  • ユーザディレクトリの直下
  • ユーザのAppData
  • ProgramData

おそらくこんなところではないだろうか。
たまにルートディレクトリにファイルを残しているのがあるが、もうそういうのはあきらめよう...


Windowsで見えにくいディレクトリとして、%ProgramData%と%AppData%があると思っている。
ここはもう、個人の感想だ。

なんというか、インストールして動かしたことがあるアプリは、基本的に「直接」インストールしたプログラムファイルは削除しても、使っている間に作ったファイルなんかは削除してくれないイメージがある。
そういうファイルたちが残っているのがこの見えないディレクトリたちだと思っている。

いま%ProgramData%のサイズを見てみると4GB近くあったのだ。
256GBの4GBって、結構な占有率なのだよ。256GBもディスクのGB単位だし。

 

さらに腹立たしいのが%AppData%だ。
環境変数名でアクセスすると Roaming のディレクトリしか出てこないけど、実際に見えないのは Local, LocalLow, Roamingの3ディレクトリだ。
それが9GB近く使っている。

そしてこの3つの使い分けがよくわかってないので、怖くて消せないのだ。
ストレージに余裕があるなら残していてもよいかもしれないが、それでも使っていないファイルが残るのは気持ちが悪い。
見覚えのないファイルは全部消してしまえ!!

 

・・・と、いうのを私はよくやる。
削除好きとも言う。
そして、アプリがいくつか起動しなくなるというのもしばしば。そういうのは気にしないで再インストールさせれば済んだこともあったのだけど、最近はもうそういうのが通用しなくなってきている。
時代の流れは残酷かもしれないが、私も時代に対しては冷たくあしらっているかもしれないのでお互い様だ。

 

 

そんなわけで、こういうディレクトリ達をどうしてよいのか困っているところだ。
ストレージに余裕があるなら放置したかもしれないが、余裕はない。
それに、ファイアウォールで不正な通信はなるべく塞ごうとしているものの、限界はあるので削除できるものはしておきたいというのもある。

解決する案は何もないのだが、記事にしておくよいかもしれんので残しておこう。

2021/04/03

[win][lubuntu]ファイルコピーするとWindows側で変に見える

謎現象で、私の環境だけのような気もするが、メモを残しておこう。

 

Windows10 Pro

image

Lubuntu 20.04

image

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"

 

WindowsでVirtualBoxを立ち上げていて、、LubuntuはそのゲストOSとしてインストールされている。
あまり覚えてないが、たぶんLinux側でsambaをなんかインストールしてるはず。

 

  1. Windows側でLinux側のホームディレクトリをExplorerで開く
  2. Windows側でそこに空ファイルを作る(ここではtest1.txt)
  3. Linux側のPCManFMでそのディレクトリを開く
  4. test1.txtを選択してCtrl+C
  5. 続けてCtrl+V
  6. ダイアログが開くので、File nameを"test2.txt"にしてRenameをクリック
  7. PCManFMでは、test1.txtとtest2.txtが見える
  8. WindowsのExplorerで見ると、test2.txtが変なファイルとして見える

image

lsで見ても、特に違いが無いのだがね。。。

$ ls -la
total 8
drwxrwxr-x  2 xxx xxx 4096 Apr  3 10:31 .
drwxr-xr-x 47 xxx xxx 4096 Apr  3 10:08 ..
-rw-r--r--  1 xxx xxx    0 Apr  3 10:29 test1.txt
-rw-r--r--  1 xxx xxx    0 Apr  3 10:29 test2.txt

 

で、これをLinux側のコマンドラインから "cp test2.txt test3.txt"でコピーすると、test3.txtは普通のファイルとして見えるのだ。

"touch test4.txt" しても普通のファイルに見えるし、PCManFMで test4.txtを同じ手順で test5.txt にしても普通のファイルに見える。

Explorerで test5.txt を Ctrl+C, Ctrl+Vして test6.txtにしても普通のファイルに見えるが、 test6.txtを PCManFMで Ctrl+C, Ctrl+V して test7.txtにすると、それは変なファイルに見える。

 

そう、Windows側で新規にファイルを作った場合で、それを PCManFMでコピーした場合のみ、なのだ。この法則が分からなくて、ときどき変なファイルになってWindows側から編集できなくなっていたのである。

わかってしまえば、Windows側で新規ファイルにならないように操作すればいいだけなのだけど。今までこういうの無かったよなぁ。。。