内蔵Luaで実行する際、@ で始まる行を無視するよう修正した

nyagos 4.3 で、バッチファイルに Lua を組み込んで実行する際、内蔵Lua が 5.3 から 5.1 になったため、ラベルの文法がなくなって @setlocal & set "ARGS=%*" & nyagos.exe --norc -e "_,_,b=io.input([[%~f0]]):read('*l','*l','*a');assert(loadstring('\…

nyagos 内蔵 Lua 組み込みバッチファイルの雛型

nyagos内蔵Lua が 5.1 になったので前の 5.3 向けの方法が使えなくなった donyagos.cmd @setlocal & set "ARGS=%*" & nyagos.exe --norc -e "_,_,b=io.input([[%~f0]]):read('*l','*l','*a');assert(loadstring('\n'..b,[[%~f0]]))()" @endlocal & exit /b %…

自分のマシンの IP アドレスを列挙するコマンドを作った

localhosts 自分の IP アドレスを表示するだけのコマンド。Go の net ライブラリを使った。 IPv4 アドレス UP している loopback でない キーワードが指定されている時は、そのキーワードがインターフェイス名に含まれたものとする マシンのブート時に以下の…

nyagos豆知識!(じゃじゃーん)- 「cd -h」

「cd -h」とすると、それまでたどったディレクトリが一覧で出るよ。もし「-2 C:\Users\hymko」とか表示されたら「cd -2」でそこへ移動できるよ! <DESKTOP-LGGUCRA:~/go/src/github.com> $ cd -h -3 C:\Users\hymko -2 C:\Users\hymko\go\src\github.com\zetamatta\nyagos -1 C:\Users\hymko\go\sr</desktop-lggucra:~/go/src/github.com>…

静的型付け言語に慣れた開発者が AutoLISP でやったアレコレ

(2018.06.02) 「静的型付け言語に慣れた開発者が貧弱なCAD用 Lispでやったアレコレ」からタイトル変更しました 静的型付け言語になれた身としては、欲しい機能がいろいろなくて、つらたにえん。せめて、CommonLisp だったら、もうちょっと楽なんだろうなぁ(…

バッチファイルで strtok 的な変数の分割切り出し処理

%PATH% の各ディレクトリを一つずつ処理する(ここでは表示するだけ) @echo off setlocal set "PATHS=%PATH%" :loop for /F "tokens=1,* delims=;" %%I in ("%PATHS%") do ( echo %%I set "PATHS=%%J" ) if not "%PATHS%" == "" goto loop endlocal $ strto…

go get でインストールされる実行ファイル置き場をバッチファイルで得る

%GOPATH%\bin と書いてしまいがちだが %GOPATH% が未定義の時 %USERPROFILE%\go が代替として使われる %GOPATH% に複数のディレクトリが登録されている時 最初のディレクトリが使用される ので、一工夫必要だ。 @echo off setlocal if "%GOPATH%" == "" ( se…

続・nyagos で lua53.dll のかわりに GopherLua を使おう

続・nyagos で lua53.dll のかわりに GopherLua を使おう - Qiitaより転載 続・nyagos で lua53.dll のかわりに GopherLua を使おう 「nyagos で lua53.dll のかわりに GopherLua を使おう - Qiita」の続き: β2 を出しました。 Release 4.3_beta2 · zetamat…

nyagos で lua53.dll のかわりに GopherLua を使おう

2018/04/25 付け記事:nyagos で lua53.dll のかわりに GopherLua を使おう - Qiitaより転載 nyagos で lua53.dll のかわりに GopherLua を使おう Using GopherLua instead of lua53.dll · Issue #300 · zetamatta/nyagos lua53.dll にはいくつか問題があり…

連休中の作業メモ(4/30)

nyagos 4.3β lua53.dll を GopherLua にリプレースしたバージョンの初バイナリ Typing C-o looks to raise hang up until Enter or ESCAPE is typed (on 4.3beta) 出してからしばらくして、Lua とは関係ないreadline.Console の bufio.Writer 化した際の Flu…

let のない Lisp で lambda を let のかわりにつかう

無いものを嘆いていても仕方がないので、できることを模索しよう。 autolisp系のLispでは let が使えず、ローカル変数は、関数の頭でしか宣言できない。また、use strict 相当のものがないため、関数が長くなるとローカル変数の宣言漏れがないかどうかをチェ…

F-Secureという Anti-virus が NYAGOS を誤検出したらしいので、誤検出を報告した

登録ページ:https://www.f-secure.com/en/web/labs_global/submit-a-sample 件名「I heard your product reports my open source software as malware」 I am developing the Open Source Software: NYAGOS(Nihong Yet Another Going Shell). https://githu…

NYAGOS 4.2.5βが、いかにしてバッチファイルでの環境変数の変更取り込みを可能としたか

通常、環境変数は親プロセスから子プロセスへの一方通行で継承されるものであり、逆はありえない。 CMD.EXE で「環境変数設定バッチ」というものが成り立つのは、バッチファイルを子プロセスではなく、バッチファイルを呼び出しているCMD.EXEプロセス自身で…

Appveyor がまだ Go 1.10 をサポートしてなかったので、自前で取ってくるよう設定した

go

strings.Builder を使いたくて、ローカルの環境を Go 1.10 にしたが、Appveyor がまだ Go 1.9.2 のままだ。そのせいで、git push するたびに失敗マークがついてしまう。 Appveyor のサポートサイトを適当に見てみたら、Go 1.3 しか入っていない頃に書かれた …

現在いるページの URL とタイトルと選択テキストを mstdn.jp へ投稿するブックマークレット

twitter のものを適当に変えてみた。前にやった時はダメダメぷぅだったんだが… ますとどん、バージョンアップして出来るようになったのかな? javascript:(function(){var v=window.getSelection();window.open('http://mstdn.jp/share?text='+encodeURIComp…

git履歴の先頭に、後から「空commit」を割り込ませる

git

本件を実行する前に git clone でバックアップを取っておきましょう あらかじめ、全commitの履歴を cherry-pick するスクリプトを作成しておく git log --pretty="format:%H" | gawk '/./{ line[i++]=$0 } END{ while(--i >= 0){ print "git cherry-pick ",l…

【ポエム】NYAGOS 2017年ふりかえり

Nihongo Yet Another GOing Shell についての駄文です。関心ある方に読んでいただければと 参考:2017年冒頭に言ってたこと Luaデータ共有との戦い > 完全に改善した!(← うさんくさい) < 4.0 全コマンド(=goroutine~スレッド)で 1-Lua インスタンスを…

まともな foreach が使えるようになります

次のバージョンから、環境変数の置換構文を組み合わせれば、下記のようなことができます。 $ 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、かんたん設定

NYAGOS、かんたん設定 Windows向け拡張コマンドラインシェル:NYAGOS (Nihongo Yet Another GOing Shell) の個人設定はホームディレクトリに .nyagos というテキストファイル(Luaスクリプト)を作成して行います。 Windows の場合ホームディレクトリは一般に …

vimとバッチファイルでtwitter と mstdn.jp にコマンドプロンプトから同時投稿する

dondon.cmd を実行すると vim が起動する。 投稿したい時は「:eq」 twtr.exe と mstdn.exe を使って、twitter と mstdn.jp に投稿する キャンセルする時は「:cq」か、ゼロバイトにしてから「:eq」 つ dondon.cmd @echo off setlocal set "DON=%TEMP%\don.txt…

ここ近年、Go で作った UNIX っぽい Windows のツール

※ ANSI/UTF8自動判別と書いているは行単位で判断しているので、混在しててもだいたい大丈夫 seek - color-grep for ansi/utf8 (Windows) おれおれ grep 。ANSI/UTF8自動判別・カラー対応。SJIS か UTF8 かによって、findstr と jvgrep をいちいち使い分ける…

神Excel にテキストファイルを流し込むスクリプト書いたよー

godexcel.cmd C3 AA30 tmp.xls ./GodExcel.cmd という感じで実行すると、神 Excel「tmp.xls」の C3~AA30 の領域に、自分自身(GodExcel.cmd) の内容を展開して という感じになる。 つ GodExcel.cmd @set args=%* @powershell "iex( (@('','','')+(cat '%~f0'|…

PowerShell で、二つのフォルダーのファイル構成を比較するコマンドを作る

つ 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つのフォルダーを使ってる履歴のみ残して、後は消す

git

git で特定の2つのフォルダーを使ってる履歴のみ残して、後は消す 最初の commit だけは argf , seek フォルダーに関わってなくとも残ってしまう(あとで revert した) git rebase -i -root で、最初の commit も削除できた。

git で特定の2つのフォルダーを使ってる履歴のみ残して、後は消す

フォルダー一つだけなら git filter-branch --subdirectory-filter が使えるが、複数の場合はそうもいかない。 複数のフォルダーだけを残すために、Lua スクリプトをさくっと書いた。 function getgitlog(files) local fd = io.popen("git log " .. table.co…

うっかり、オレオレ grep (seek)を書いてしまった。

go

先日、while( <> ){ } 的なものの Go 版ライブラリ argfを書いてみたわけだけれども、そのサンプルとして 簡単な grep (seek)を書いてみた。 https://github.com/zetamatta/experimental/tree/master/seek (また、例によって、実験用レポジトリ experimental…

Lua 5.1 向け shebang for Windows

@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…

while( <> ){…} みたいなことを Go で

go

UNIX風のテキストファイルフィルターを書くのに便利なように Perl には while( <> ){ print $_ } という構文がある。これと同じような手軽さで Go でもフィルターを書くためのライブラリ argf を書いてみた。 package main import ( "fmt" "os" "github.com/…

Go言語についての3つくらいの誤解

go go

以下、自分の思い込みもあるとは思うが、あまり気にしないで書いてみる。 Goは短く書くための言語ではない 短く書けるようにした結果、落とし穴が発生したり、 読みにくくなったり誤解が生じる余地があるならば、 そのような書き方は排除されている。 貴方が…

PowerShell で書く、Go言語プログラムのリリース管理的なアレ(3)バージョン文字列の設定

バッチファイルの話もするとたいへんなので、以下 PowerShell だけという方向で: Go ソースへの埋め込み これは簡単で、 go build "-o" nyagos.exe -ldflags "$ldflags -X main.version=$version" だけでよい。これで main パッケージの version という変数…