Subversion で git show とか stash とかの動作をエミュレーション

あまりしっかりテストしていないので、ご利用はバックアップをとった上で、自己責任で… (自分の用事が終ったら放置モード) svn-show.cmd svn diff -r1000:1001 とかやっていられないので、svn-show 1001 で同じことをする。 @echo off setlocal if "%1" ==…

NYAGOS 4.4.3_0 を公開していただと…

連休前の話ですが、NYAGOS 4.4.3_0 公開したので、更新内容をご説明します。 (#116) readline: Ctrl-Z,Ctrl-_ による操作取り消しを実装 3年前に issue を起案してた UNDO をようやく実装しました。やってみたら、意外と簡単でした。まぁ、技術的に難しいと…

【解決編】UNCパスの補完機能の強化のためにコンピューター名一覧を出したいんだが、違うそうじゃない

UNCパスの補完機能の強化のためにコンピューター名一覧を出したいんだが、違うそうじゃない - 標準愚痴出力 記事を書いたら、自己解決する法則でもあるのかなぁ。 // +build run package main import ( "fmt" "unsafe" "golang.org/x/sys/windows" ) const R…

UNCパスの補完機能の強化のためにコンピューター名一覧を出したいんだが、違うそうじゃない

いまひとつうまくゆかん。 // +build gorun package main import ( "fmt" "unsafe" "golang.org/x/sys/windows" ) const RESOURCE_CONNECTED = 1 const RESOURCE_CONTEXT = 5 const RESOURCE_GLOBALNET = 2 const RESOURCE_REMEMBERED = 3 const RESOURCETYP…

NYAGOS保守日記: 空白文字が含まれたパスの補完とチルダ

補完の際、Windowsでは空白を打ち消す文字の定番が決まってないのでパス全体を引用符で囲む。すると ~\Program Filesは "~\Program Files" みたいになるが、~ が先頭でなくなってしまうので、 ~ を%USERPROFILE% に変換できなくなってしまう。 かといって、~…

VC++で書いたアドオンDLLの中で独自ダイアログが表示できなかった件

とあるアプリのアドオンを VC++ で書いていたんだけれども、自作のダイアログを出そうとしてもなぜか DoModal が素通りしてしまう。 しかも、Visual Studio 自体もなぜか不安定で、クラスウィザードのクラッシュも多発して、原因の切り分けができない!!! …

NYAGOS 4.4.2_1 を公開しました。

4.4.2_0(報告記事リンク)を出して間もないのですが、看過できない不具合がありましたので、修正版を公開しました。 Release 4.4.2_1 · zetamatta/nyagos(ダウンロードページ) 修正点は以下の2点 diskfree: 行末の空白を削除 これは大した問題ではなく、…

NYAGOS 4.4.2_0 を公開してしまいました

Release 4.4.2_0 · zetamatta/nyagos まだまだ修正する気満々だったのですが、リリースバイナリに未反映の修正がたまりすぎると不具合が発生した時、マスターと開発版をまた別管理しなくちゃいけなくなったります。それは避けたいので、4月になったし、いい…

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 でジャンクション作れない - 標準愚痴出力 「DeviceIoControl用の構造体」を作るのに、Microsoft ご本家の Go 言語パッケージ Microsoft/go-winio: Win32 IO-related utilities for Goを使ったら、うまく動作するようになった!やったね、た…

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_VALUE = ^windows.Handle(0…

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…

Windows のアプリケーションディレクトリ

nyagos では、ヒストリなどを Windows では %APPDATA%\nyaos_org Linux では $HOME/.nyaos_org に保存している。このパスは環境変数を元に生成しているのだが、ここのところで OS ごとに処理を分けるのは可読性を下げるので、できれば標準ライブラリが吸収し…

Shift-JISファイルの作成

go

現在のコードページの文字形式ではなくて、本当に ShiftJIS 固定となるので、日本語特化のアプリとなるが package main import ( "fmt" "os" "path/filepath" "golang.org/x/text/encoding/japanese" ) const fname = "search.lst" func main1() error { fd,…

PowerShell で .NET のアセンブリ内の関数の動作確認

HogeHoge.exe の中のクラス Config の shared メソッド Load を呼んでみる。 test.ps1: [reflection.assembly]::LoadFrom("bin\Release\HogeHoge.exe") $data = [HogeHoge.Config]::Load("hogehoge.xml") Write-Host("---") Write-Host($data.ToString()) Wr…

NYAGOS保守ノート: 欧州向けキーボード対応ふたたび(AltGR キー処理)

日本では馴染みがないのだが、ヨーロッパのキーボードには AltGR というキーがあるようだ。用途としては、英語圏にない文字等を入力する時にシフト的に用いるようだ。 それが入力できなくなったという issue を起案いただいた。 [regression] AltGR issue ・…

続・GoでCygterm っぽいことをやりたいので、ソケットサーバーを書いている

go

Go で Cygterm っぽいことをやりたいので、ソケットサーバーを書いている(勉強中) - 標準愚痴出力 アドバイスをいただきました(ありがとうございます) enter しないと文字が送られないのは、たぶん tera term のオプションで local echo を off にすると…

a[:0] と append の秘密

go

a = a[:0] は領域のサイズをリセットするが、a = make([]T,0,cap(a)) と違って、使っていたメモリブロックを再利用するため、allocation 回数を削減できる。 だが、旧a の領域が他で使われていないかを気にせず、無頓着に使うと append でおかしいことになる…

Go で Cygterm っぽいことをやりたいので、ソケットサーバーを書いている(勉強中)

go

(続きの記事 あり) serv.go : package main import ( "fmt" "net" "os" "strings" ) func handler(conn net.Conn) { defer conn.Close() var buffer [255]byte for { n, err := conn.Read(buffer[:]) if err != nil { fmt.Fprintln(os.Stderr, err) return …

Go Modules 使用時、最新タグよりも新しい Commit でモジュールを使用したい時

go

go mod -m github.com/<USER>/<REPOSITORY>@<COMMIT-HASH> でいいようです。</commit-hash></repository></user>