2018/01/09


Windows と Linux 間でちょっとしたファイル転送をしたいと思った時に msys2 の ssh コマンドや WinSCP が入ってなくて、さらにレジストリなどを汚したくない環境で手軽に使える使えるファイル転送ソフトが欲しかった。Linux 側から Samba で繋いでも良いんだけど、その用途の為だけに Samba いれたくないなと思ったのでバイナリを1個ポンとコピーすれば使える物を作った。

GitHub - mattn/ft

ft is CLI tool that transfer files.

https://github.com/mattn/ft

使うには両方の端末に ft というコマンドがインストールされている必要がある。「Go が入れられるなら msys2 も(ry」とか言われてしまいそうだけど、実際にそういう環境や要件ってあるのですよ。はい。

Go で書いたので go get が出来る環境ならば1発でインストール出来ます。使い方は、ファイルを送りたい側が

$ ft serve

を実行し、受け取りたい側が

$ ft download -a 192.168.123.4

の様に実行する。serve を実行した側のカレントディレクトリ配下が download を実行したカレントディレクトリ配下に転送される。

仕組みは gRPC のストリーム API で作られている。一つはファイルの一覧を返す ListFiles、もう一つはバイナリを転送する為の Download というインタフェース。

syntax = "proto3";

//google.protobuf.Timestamp
//import google_protobuf "github.com/golang/protobuf/ptypes/timestamp";
import "google/protobuf/timestamp.proto";

package proto;

service FileTransferService {
  rpc ListFiles(ListRequestType) returns (stream ListResponseType) {};
  rpc Download(DownloadRequestType) returns (stream DownloadResponseType) {};
}

message ListRequestType {
}

message ListResponseType {
  string name = 1;
  int64 size = 2;
  uint32 mode = 3;
  google.protobuf.Timestamp modTime = 4
}

message DownloadRequestType {
  string name = 1;
}

message DownloadResponseType {
  bytes data = 1;
}

Download もストリームになっているのでデカいファイルでも転送出来ます。通信は gRPC のレベルで圧縮されます。現状は in-secure になっているけど、今後 secure オプションも付けていきたいと思う。TLS 通信をサポートしています。


2017/12/27


Twitter でだけで告知しててこっちで書いて無かったので。

私用の TODO 管理には Wunderlist を使っていたのだけど、Wunderlist は Microsoft に買収され Microsoft To-Do が出来た。機能に差があり慣れないと移行しづらかったけど、いつ無くなるか分からない Wunderlist を使い続けるのもアレだったので移行した。その際にデータ移行で使ったりコマンドラインから追加したりしたかったので CLI 書いた。

GitHub - mattn/to-do

Dismiss Join GitHub today GitHub is home to over 20 million developers working together to host and ...

https://github.com/mattn/to-do

使い方はシェル操作好きそうな人向け。

NAME:
   to-do - Microsoft To-Do client

USAGE:
   to-do [global options] command [command options] [arguments...]

VERSION:
   0.0.1

COMMANDS:
     add, a     Add new to-do item
     delete, x  Delete specified to-do item
     done, d    Done the specified to-do item
     list, l    Show to-do items
     show, s    Show specified to-do item
     help, h    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

list コマンドには --json もあるので jq 等のコマンドと連携も出来る。



Twitter でだけで告知しててこっちで書いて無かったので。

Dropbox Paper、外出先などで連載記事のネタなどを書きとめておくのに便利で使っているのだけど、手元の Vim で途中まで書いたチラ裏の様な物を一括でアップロードしたり削除するのが面倒だったので CLI 書いた。

GitHub - mattn/dboxpaper: client for Dropbox Paper

README.md dboxpaper client for Dropbox Paper Usage NAME: dboxpaper - Dropbox Paper client USAGE: dbo...

https://github.com/mattn/dboxpaper

使い方は

dboxpaper list

で一覧表示。Dropbox Paper の API がイケてないのでタイトルを取るには2回 API を発行する必要がある。タイトルも欲しい人は dboxpaper list --title の様にフラグを付ける。JSON で欲しい人は --json で。

アップロードは標準入力から。

cat README.md | dboxpaper upload

cat も出来る。

dboxpaper cat XXXXXXXXXXX

XXXXXXXXXXX は dboxpaper list で表示されるID。

削除も。

dboxpaper delete XXXXXXXXXXX

シェル操作大好きで Dropbox Paper 使ってる人には割と便利だと思うのでお使い下さい。