2017-01-01から1年間の記事一覧
次のバージョンから、環境変数の置換構文を組み合わせれば、下記のようなことができます。 $ foreach i *.go ; echo move %i% %i:go=goo% ; end move bindata.go bindata.goo move builtinfunc.go builtinfunc.goo move complete_lua.go complete_lua.goo mo…
NYAGOS、かんたん設定 Windows向け拡張コマンドラインシェル:NYAGOS (Nihongo Yet Another GOing Shell) の個人設定はホームディレクトリに .nyagos というテキストファイル(Luaスクリプト)を作成して行います。 Windows の場合ホームディレクトリは一般に …
dondon.cmd を実行すると vim が起動する。 投稿したい時は「:eq」 twtr.exe と mstdn.exe を使って、twitter と mstdn.jp に投稿する キャンセルする時は「:cq」か、ゼロバイトにしてから「:eq」 つ dondon.cmd @echo off setlocal set "DON=%TEMP%\don.txt…
※ ANSI/UTF8自動判別と書いているは行単位で判断しているので、混在しててもだいたい大丈夫 seek - color-grep for ansi/utf8 (Windows) おれおれ grep 。ANSI/UTF8自動判別・カラー対応。SJIS か UTF8 かによって、findstr と jvgrep をいちいち使い分ける…
(2019.04.19追記) Goで書き直した最新版は こちら godexcel.cmd C3 AA30 tmp.xls ./GodExcel.cmd という感じで実行すると、神 Excel「tmp.xls」の C3~AA30 の領域に、自分自身(GodExcel.cmd) の内容を展開して という感じになる。 つ GodExcel.cmd @set args…
つ dirdiff.cmd @set "arg1=%~1" & set "arg2=%~2" @powershell "iex((@('','','')+(cat '%~f0' | select -skip 3))-join[char]10)" @exit /b %ERRORLEVEL% $md5 = New-Object System.Security.Cryptography.MD5CryptoServiceProvider function Get-MD5s($di…
git で特定の2つのフォルダーを使ってる履歴のみ残して、後は消す 最初の commit だけは argf , seek フォルダーに関わってなくとも残ってしまう(あとで revert した) git rebase -i -root で、最初の commit も削除できた。
フォルダー一つだけなら git filter-branch --subdirectory-filter が使えるが、複数の場合はそうもいかない。 複数のフォルダーだけを残すために、Lua スクリプトをさくっと書いた。 function getgitlog(files) local fd = io.popen("git log " .. table.co…
先日、while( <> ){ } 的なものの Go 版ライブラリ argfを書いてみたわけだけれども、そのサンプルとして 簡単な grep (seek)を書いてみた。 https://github.com/zetamatta/experimental/tree/master/seek (また、例によって、実験用レポジトリ experimental…
@lua5.1.exe -e "_,_,b=io.input([[%~f0]]):read('*l','*l','*a');assert(loadstring('\n'..b,[[%~f0]]))()" @exit /b %ERRORLEVEL% print('ahaha') x 5行目にわざと Lua としては不適切な文字 x を入れている。これを実行すると lua: (command line):1: [st…
UNIX風のテキストファイルフィルターを書くのに便利なように Perl には while( <> ){ print $_ } という構文がある。これと同じような手軽さで Go でもフィルターを書くためのライブラリ argf を書いてみた。 package main import ( "fmt" "os" "github.com/…
以下、自分の思い込みもあるとは思うが、あまり気にしないで書いてみる。 Goは短く書くための言語ではない 短く書けるようにした結果、落とし穴が発生したり、 読みにくくなったり誤解が生じる余地があるならば、 そのような書き方は排除されている。 貴方が…
バッチファイルの話もするとたいへんなので、以下 PowerShell だけという方向で: Go ソースへの埋め込み これは簡単で、 go build "-o" nyagos.exe -ldflags "$ldflags -X main.version=$version" だけでよい。これで main パッケージの version という変数…
方針としては リリースビルドの時は、テキストファイル(Misc\version.txt)に記載のテキスト スナップショットの時は、git describe --tags の結果 を使うことにしている。これはバッチファイルでも比較的簡単だ。 リリースビルドなら for /F %%I in (%~dp0Mi…
NYAGOS は 4.2.1 まではバッチファイルで、以下の作業を行っていた。 実行ファイルの作成 バージョン文字列の取得 リリース(make release)の時はテキストファイル(Misc\version.txt) スナップショット(引数なし make)の時は git describe --tags を使用 バ…
PowerShell のスクリプトを実行しようとすると、実行ポリシーを一時的に変えるため powershell -ExecutionPolicy RemoteSigned -file HOGE.ps1 と長い起動コマンドラインになってしまいがちです。 ということで、HOGE.ps1 を実行するために、別途 HOGE.cmd …
Go の Enum 表現 - Qiita 主旨が違うかもしれないんだけど、そういうのは go:generate + stringer の出番と違うかなと思った。 package main import "fmt" type SkuNameEnum int //go:generate stringer -type=SkuNameEnum const ( Free SkuNameEnum = iota …
コマンドを書く場合は「空白」で区切る。 関数・外部コマンドに関係なく、引数リスト全体を囲む「括弧」は要らない。 Write-Verbose -Message "$ go build" コマンドの引数に「式」を書いて評価させる場合は、その引数1個を「括弧」で囲む 囲まないと、個別…
Windows7のエクスプローラで出てくる「お気に入り」は、%USERPROFILE%\Links というフォルダーにショートカットが全部並んでいる。 PowerShell を使って全部リネームしよう、そうしよう。 $fromName = "\\旧サーバ名\" $toName = "\\新サーバ名\" $wsh = New…
(※ 2017.09.15追記: stknohg さんから、いろいろ技術的な補足をいただきました。詳しくはコメント欄を参照ください) Write-Host の出力を、PowerShell の呼び出し元でリダイレクトすると、改行コードが LF になる。 CRLF にするには Write-Output を使わね…
evernote のデータを本格的に移行しようとは思わなかったが、ちょっとお試しで OneNote を使ってみた。 OneNote の種類にとまどった 会社PC の Office2010 に入ってる OneNote と、Windows10 に最初から入っている OneNote のユーザインターフェイスが微妙に…
したっぽい。実験してみよう package main import ( "fmt" "os" "syscall" "unsafe" ) var kernel32 = syscall.NewLazyDLL("kernel32") const STD_INPUT_HANDLE = uintptr(1) + ^uintptr(10) const STD_OUTPUT_HANDLE = uintptr(1) + ^uintptr(11) const STD…
NYAGOS 4.2.0 以降が対象です。 ファイルはゴミ箱へ trash ファイル名 でファイルがいきなり削除ではなく、ゴミ箱に入ります。実体は Lua スクリプトで、COM経由でゴミ箱へファイルを移動しています。(nyagos.d/trash.lua) UTF8 変換に type 文 内蔵 type …
普通は Visual Studio のパスを通すため、下記のように .nyagos 上で Visual Studio コマンドプロンプトのバッチを source する。 nyagos.exec{'source',[[C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat]],'x86'} これやると NYAGO…
OJTばかりやって、座学や書籍で理論をちゃんとやらんから、妙な社内標準・社内フレームワーク・社内ローカルルールが出来て、他所で通用しない社員ばかりになるんだな https://twitter.com/zetamatta/status/881672613889679360 四国の僧侶の先生が言ってた…
nyagos 以外からでも簡単に使えるよう、いろいろがんばった package main import ( "context" "fmt" "github.com/zetamatta/nyagos/readline" ) func main() { editor := readline.Editor{ Default: "InitialValue", Cursor: 3, } text, err := editor.ReadL…
ジョジョ第三部の途中で亡くなっていて、今描いているのは二代目ではないかと思っている。 画風が変わっている 登場人物が主人公をジョジョと全く呼ばなくなる このあたりから各話を適当に入れ替えても成り立つようなストーリー構成へ 先生自身が若返ってい…
su (sudo)とは suというと、通常は UNIX(Linux)で、ログアウトせずにユーザを切り替えるコマンドを指し、主に root (管理ユーザ)に切り替える用途に使われることが多い。そして、sudo は1コマンドだけユーザを切り替えて実行するコマンドだ。 最近、Windo…
コマンドプロンプト向けの expect を Go 言語で作った。 https://github.com/zetamatta/expect 特徴 スクリプトは Lua で書く。GopherLua を使ったので、lua53.dll は不要 画面のプロンプトを待つ except() 関数は、本家だと標準出力・標準エラーを監視する…
「Linux なら expect というツールがあるけど、Windows の場合、どうしたらいいんだろう」などと思って、API を調べていたら、WriteConsoleInput などというコンソールイベントを「捏造」できる API があるのを発見。 ちょっと、ツールを作ってみた。 packag…