うっかり、オレオレ 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 という変数…

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

方針としては リリースビルドの時は、テキストファイル(Misc\version.txt)に記載のテキスト スナップショットの時は、git describe --tags の結果 を使うことにしている。これはバッチファイルでも比較的簡単だ。 リリースビルドなら for /F %%I in (%~dp0Mi…

PowerShell で書く、Go言語プログラムのリリース管理的なアレ(1)目次

NYAGOS は 4.2.1 まではバッチファイルで、以下の作業を行っていた。 実行ファイルの作成 バージョン文字列の取得 リリース(make release)の時はテキストファイル(Misc\version.txt) スナップショット(引数なし make)の時は git describe --tags を使用 バ…

n番煎じの powershell 向け shebang !

PowerShell のスクリプトを実行しようとすると、実行ポリシーを一時的に変えるため powershell -ExecutionPolicy RemoteSigned -file HOGE.ps1 と長い起動コマンドラインになってしまいがちです。 ということで、HOGE.ps1 を実行するために、別途 HOGE.cmd …

海底神殿から金塊を受領しました

今から海底神殿から金塊を受領しまーす(だいたい水抜き済み、全エルダーガーディアン討伐済み) 底に穴をあけると金ブロックが! 金ブロック8個(金のインゴット72個相当)いただきました! 海底神殿を攻略すると、スポンジ、ランタンが入るのが大きくて、…

GoのEnum表現は、go:generate + stringer の出番?

go

Go の Enum 表現 - Qiita 主旨が違うかもしれないんだけど、そういうのは go:generate + stringer の出番と違うかなと思った。 package main import "fmt" type SkuNameEnum int //go:generate stringer -type=SkuNameEnum const ( Free SkuNameEnum = iota …

PowerShell での項目の並べ方整理

コマンドを書く場合は「空白」で区切る。 関数・外部コマンドに関係なく、引数リスト全体を囲む「括弧」は要らない。 Write-Verbose -Message "$ go build" コマンドの引数に「式」を書いて評価させる場合は、その引数1個を「括弧」で囲む 囲まないと、個別…

ファイルサーバ名が変わったので、リンク切れした「お気に入り」を修復

Windows7のエクスプローラで出てくる「お気に入り」は、%USERPROFILE%\Links というフォルダーにショートカットが全部並んでいる。 PowerShell を使って全部リネームしよう、そうしよう。 $fromName = "\\旧サーバ名\" $toName = "\\新サーバ名\" $wsh = New…

Write-Host と Write-Output ではリダイレクトした時の改行コードが変わってしまう

(※ 2017.09.15追記: stknohg さんから、いろいろ技術的な補足をいただきました。詳しくはコメント欄を参照ください) Write-Host の出力を、PowerShell の呼び出し元でリダイレクトすると、改行コードが LF になる。 CRLF にするには Write-Output を使わね…

OneNote 2016 を使ってみた

evernote のデータを本格的に移行しようとは思わなかったが、ちょっとお試しで OneNote を使ってみた。 OneNote の種類にとまどった 会社PC の Office2010 に入ってる OneNote と、Windows10 に最初から入っている OneNote のユーザインターフェイスが微妙に…

本当に Windows10 のコマンドプロンプトはエスケープシーケンスをサポートしたのか?

したっぽい。実験してみよう 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の小TIPS集

NYAGOS 4.2.0 以降が対象です。 ファイルはゴミ箱へ trash ファイル名 でファイルがいきなり削除ではなく、ゴミ箱に入ります。実体は Lua スクリプトで、COM経由でゴミ箱へファイルを移動しています。(nyagos.d/trash.lua) UTF8 変換に type 文 内蔵 type …

Visual Studio を NYAGOS から使う時

普通は Visual Studio のパスを通すため、下記のように .nyagos 上で Visual Studio コマンドプロンプトのバッチを source する。 nyagos.exec{'source',[[C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat]],'x86'} これやると NYAGO…

OJTばかりやって

OJTばかりやって、座学や書籍で理論をちゃんとやらんから、妙な社内標準・社内フレームワーク・社内ローカルルールが出来て、他所で通用しない社員ばかりになるんだな https://twitter.com/zetamatta/status/881672613889679360 四国の僧侶の先生が言ってた…

readline ライブラリ

nyagos 以外からでも簡単に使えるよう、いろいろがんばった package main import ( "context" "fmt" "github.com/zetamatta/nyagos/readline" ) func main() { editor := readline.Editor{ Default: "InitialValue", Cursor: 3, } text, err := editor.ReadL…

俺は荒木飛呂彦先生は…

ジョジョ第三部の途中で亡くなっていて、今描いているのは二代目ではないかと思っている。 画風が変わっている 登場人物が主人公をジョジョと全く呼ばなくなる このあたりから各話を適当に入れ替えても成り立つようなストーリー構成へ 先生自身が若返ってい…

Windows における su(sudo) 事情考察

su (sudo)とは suというと、通常は UNIX(Linux)で、ログアウトせずにユーザを切り替えるコマンドを指し、主に root (管理ユーザ)に切り替える用途に使われることが多い。そして、sudo は1コマンドだけユーザを切り替えて実行するコマンドだ。 最近、Windo…

expect for Command Prompt by GopherLua

コマンドプロンプト向けの expect を Go 言語で作った。 https://github.com/zetamatta/expect 特徴 スクリプトは Lua で書く。GopherLua を使ったので、lua53.dll は不要 画面のプロンプトを待つ except() 関数は、本家だと標準出力・標準エラーを監視する…

git for Windows 付属の ssh でのログインを自動化したい

「Linux なら expect というツールがあるけど、Windows の場合、どうしたらいいんだろう」などと思って、API を調べていたら、WriteConsoleInput などというコンソールイベントを「捏造」できる API があるのを発見。 ちょっと、ツールを作ってみた。 packag…

Thunderbird で External Editor(外部エディター起動アドオン) が動かなくなった俺達は

エディターが起動していないのに、エディターの終了待ちでハングしてしまう。 どうやら Thunderbird が52へアップデートしたタイミングで、動かなくなったアドオンがいろいろ出ているようだ。 (参考:Thunderbird 52.0 Release - とりかごとなり。) ググっ…

テスト用のWindows10の仮想環境(寿命90日)の作成と日本語化

(1)90日限定の試用版 Windows10 をダウンロード https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ OVAイメージ(4GB)をダウンロードできる。 このイメージは一度立ち上がると、90日後に使えなくなるが、立ち上げる前の状態のスナップショ…

import を全て絶対パスにした

こんな感じに - "../completion" - "../shell" + "github.com/zetamatta/nyagos/completion" + "github.com/zetamatta/nyagos/shell" これにより: ソースを GOPATH 内に置けなかった go get github.com/zetamatta/nyagos で全ソースをダウンロードできなか…

まだ、NYAGOS 4.2 は出せない

Lua のインスタンスのクローンについては今のところ問題は出ていない。 無論、不具合の一つ二つは出たが、 確認当日中にあっさりと解決できて、この程度で済むのなら上出来だったと思う。 また、もう一つの懸案も解決できた。 dir | find "<DIR>" · Issue #218 · </dir>…

Go for Windows で子プロセスに二重引用符を引数でそのまま渡したい時

問題の症状 親プロセスのソース: // exec1.go package main import ( "os" "os/exec" ) func main() { c := exec.Command("foo", `"<BAR>"`) c.Stdout = os.Stdout c.Stderr = os.Stderr c.Stdin = os.Stdin c.Run() } 子プロセスのソース(バッチファイル): @</bar>…

Qiita から回答をいただきました>自作公開OSSに関する解説はガイドラインの「自社の製品の宣伝行為はしない」に抵触しますか?

先日 Qiita に問い合わせてみました:自作公開OSSに関する解説はガイドラインの「自社の製品の宣伝行為はしない」に抵触しますか?という記事を書いたわけですが、 本日返信をいただきました。1営業日とは早い。 zetamatta さまが投稿されている記事を確認…

cd ショートカット.lnk

NYAGOS は cd ショートカット.lnk という書き方をサポートしている。 これは Go言語で実装した内蔵コマンドの cd で直接サポートしているわけではなくて、 nyagos.d\cdlnk.luaという Lua スクリプトで cd のエイリアスを書き、 その中で nyagos.create_objec…