Go 言語で /subsystem:windows

Windowsコマンドプロンプト (コンソール) を表示したくない場合は、「-ldflags="-H windowsgui"」をつけてビルドする。VC++ でいうところの、WinMain 相当。

go build -ldflags="-H windowsgui" main.go

golang entry point WinMain」などとググっても見つからないので、ないものと諦めていたが、マニュアル (http://golang.org/cmd/ld/) に書いてあった。。

一つ見つかると、色々見つかる。

@mattn のリクエストで追加されたようだ。

PowerShell: .Resx を CSV に変換する

PowerShell

翻訳を頼むときに必要になったので書いてみた (なぜ XLIFF でないかはさておいて)。

$resx = [xml](Get-Content .\FormMain.resx -encoding utf8)
$resx.root.data | Select Name,Value | Export-Csv -Encoding Default -Path .\FormMain.csv -NoTypeInformation

.Resx の文字列リソースは、 タグの name 属性 (名前) と タグ (値) で格納されているので、これらを取り出して CSV として出力している (参考: MSDN:.Resx ファイル形式のリソース)。

Export-Csv の文字化け対策は、Export-CSVで文字化けする理由 - PowerShell Memo を参考にした。

設定

init.el に以下を追加。
README は ココ にある。
%SystemRoo%\Microsoft.NET\Framework\v4.0.30319 は使用している .NET Framework の msbuild.exe の場所に変更すること。

;; README では inferior-fsharp-program, fsharp-compiler を setq するよ
;; うにガイドされているが、そのように設定しても動作しない. PATH を通す
;; と、fsi, fsc, msbuild を自動認識する.
;; https://github.com/fsharp/fsharpbinding/issues/136
(mapc (lambda (path) (and (not (find path exec-path))
                          (push path exec-path)))
      (list (concat (getenv "SystemRoot") "\\Microsoft.NET\\Framework\\v4.0.30319")
            (concat (getenv "ProgramFiles") "\\Microsoft F#\\v4.0\\")))

(setq auto-mode-alist (cons '("\\.fs[iylx]?$" . fsharp-mode) auto-mode-alist))
(require 'fsharp-mode)
(autoload 'run-fsharp "inf-fsharp" "Run an inferior F# process." t)

;; fsharp-compile-command を "" で囲む. fsharp-compile-command は
;; fsharp-mode.el で初期化されるが "" で囲まれていないため、compile の
;; 実行に失敗する.
(and fsharp-compile-command
     (not (char-equal (aref fsharp-compile-command 0) ?\"))
     (setq fsharp-compile-command
           (concat "\"" fsharp-compile-command "\"")))

(add-hook 'fsharp-mode-hook
          (lambda ()
            (define-key fsharp-mode-map (kbd "M-RET") 'fsharp-eval-region)))

fsautocomplete.exe の実行に失敗する場合は FSharp.Core.dll が存在していない可能性があるので、再配布パッケージ をインストールすると解決するかも.