標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

2019-03-01から1ヶ月間の記事一覧

NYAGOS保守ノート:more が Ctrl-C で死んでしまう

Ctrl-C kills nyagos.exe itself when more runs without redirect · Issue #342 · zetamatta/nyagos more が Ctrl-C で nyagos ごと死んでしまうという不具合です。これは常に発生しているわけではなくて、nyagos の中から nyagos を呼んで、その中の more …

Windows でジャンクション作れない・リベンジ編

go

前回 → Windows でジャンクション作れない - 標準愚痴出力 完成品→ https://github.com/nyaosorg/go-windows-junction 「DeviceIoControl用の構造体」を作るのに、Microsoft ご本家の Go 言語パッケージ Microsoft/go-winio: Win32 IO-related utilities for…

Windows でジャンクション作れない

go

【次回】 | 【完成品】 junction_go.run: package main import ( "os" "unsafe" "errors" "golang.org/x/sys/windows" "golang.org/x/xerrors" ) const ( _MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384 _FSCTL_SET_REPARSE_POINT = 589988 _INVALID_HANDLE_VAL…

appveyer の Go が 1.12 になってくれない

go

もうパッケージの多くが、Go 1.12 名指しになってるのに! go.mod を騙し騙しで調整し、Go 1.12 で追加された関数の使用を我慢しつづけてきたが、さすがにもう待てん! というわけで、Go 1.12 をビルド時にダウンロードさせるようにした(→ appveyer.yml: do…

Go Modules 使用時に「他人のレポジトリに来てるマージされてないプルリク」の影響を予め検証する

go

自分のプロダクトが依存しているパッケージ T についてプルリクエストが来ているようですが、まだマージされていません。 その修正の影響がどの程度こちらに影響にあるかあらかじめ検証したいと思いますが、go.mod にその修正をどう書くのが正解か、よくわか…

ネットワークドライブを維持したまま、管理者モードに昇格したコマンドプロンプトを起動する

setlocal call :"%1" endlocal exit /b :"install" powershell "start-process -FilePath 'cmd.exe' -ArgumentList ('/s /c '+[char]34+((get-wmiobject win32_networkconnection | %%{ 'net use '+$_.LocalName+' '+[char]34+$_.RemoteName+[char]34 }) -jo…

Windows のコンソールと、Unicode のサロゲートペアとゼロ幅文字

(2019.03.20 追記:Windows7 の Chrome では Unicode の合字が表示されないので、合字を画像に変えました) という文字を nyagos に貼り付けると、文字化けするだけでなく、カーソル位置もおかしくなるという問題 Zero width char deletion problem? · Issu…

nyagos と文字の幅問題

文字の幅については nyagos において頭が痛い問題です。 mattn/go-runewidth でカーソルを戻す時に発行するバックスペースの個数を算出しています。ですが、Windows のコンソールでの実際の文字幅は Unicode の規格のものと微妙に違うので、文字によってはカ…

ホームディレクトリ以下にある空白入りのファイル名の補完は難儀だなぁ

~\Share\Program Files というパスを補完する場合を考えよう。 bash だと ~/Share/Program\ Files と補完する。 UNIX だとワード単位で独立した引数としてコマンドに引き渡されるので「/home/USERNAME/Share/Program Files」をそのまま引き渡すことができる…

Lua のかわりに anko を組み込んだ anko-nyagos を作ってみました。

nyagos は lua53.dll → GopherLua への切り替えの際、組み込み言語のインターフェイスをある分離して、切り替えられるようにしたのですが、それを利用して、mattn 先生が開発された、Go製スクリプト言語 anko を組み込んだ anko-nyagos を試験的に作成してみ…

最近(4.4)の nyagos の方向性

ビルドバッチ(make.cmd)でかすぎ。簡略化する ソース、どこから読んだらいいか分からん。整理する 残イシュー多すぎ。はよ片付けろ CMD.EXE依存エイリアス撲滅(mklinkやren) セマンティックバージョニング対応は 4.5 以降から。具体的には 4.5.x_y を v5.x.y…

C:\Program Files へファイルをコピーするバッチファイルの作り方

一般ユーザでは C:\Program Files 以下へファイルをコピーすることはできないので、管理者権限で自分自身を起動しなおすようにする。 make.cmd setlocal set "EXE=%~dp0\bin\Release\HogeHoge.exe" call :"%1" endlocal exit /b :"install" powershell Start…

nyagos のソースフォルダー構成をもうちょっと簡単に

あまりにソースのサブフォルダーが多くて、改造しようという人が迷いそうなので、ちょっとだけ整理した(でも、まだ多い) Cmd/ … ビルド結果置き場 Doc/ … ドキュメント Etc/ … ビルド時に参照する設定ファイル置き場など(旧Misc/) alias/ … エイリアス機…

昔の Go は exit status が fmt.Errorf("exit status %d",ERRORLEVEL) で返ってきたような

go

Go 1.12 で、実行したプロセスの ERRORLEVEL を得るためのメソッド:"os".ProcessState.ExitCode() が追加されたので、対応の準備をすすめていて気づいたのだけれども… 昔の Go言語だと、0 以外の ERRORLEVEL を受け取ると、"os/exec".Cmd.Run() で fmt.Erro…