小ネタプログラミング

WSHでファイル選択ダイアログを表示するのに飽きたので、他言語にて。

飽きた。ファイル選択ダイアログを表示する為の標準的な手段が用意されていないのにダイアログを表示しようだなんて高望みするから妙な苦労をするのだ。やはりここは別の言語に活路を見出すべきだろう。 PowerShellの場合 例えばPowerShellなら.NET Framewor…

JVMベースの言語処理系用にシンボリックリンクを張りなおすMakefile

Javaプラットフォームで動作する言語処理系を幾つかUbuntuに入れている。$HOME/langs以下に各処理系のアーカイブを伸張・展開しておき、付属の実行スクリプトへのシンボリックリンクを$HOME/binに作成して使用している。アーカイブを展開した後のディレクト…

ソースファイルをHTML化する(シンタックスハイライト付き)

シンタックスハイライトは偉大だ。断言してもいい。世の中にはシンタックスハイライトの為なら魂を売り渡しても構わないと考えるプログラマがごまんと存在する。彼らにとって、はてなダイアリーを使っている理由=ソースをシンタックスハイライト付きで表示…

Ubuntuで音が出ないWMV(Windows Media Video)を音が出るフォーマットに変換する

問題編 手元のUbuntu 10.04はWMV形式の動画を再生できるようにしてあるのだけど、時々コーデックの関係か音声が再生されないファイルがある。大概は音声コーデックとしてWMA(Windows Media Audio)9が使われていて、ライセンスの関係でUbuntuにはこれ用のコ…

「クリップボードのテキストをGnuPGで復号化」の代替品を作る

問題編 仕事でGnuPGを使用している。Windows上で使うこともあり、今までは古いWinPT*1を使用していた。鍵の管理はWinPT経由で行い、メールの暗号化/復号化にはEnigmailを使用し、ファイルの暗号化/復号化は内製のツールを使用していた。古いWinPTを使って…

文字コード&改行コード変換ツールをでっちあげる

これは車輪の再発明。WindowsとLinuxを行き来していると、テキストファイルの文字コードと改行コードを変換したくなる事が結構ある。文字コードの変換だけならiconv、改行コードの変換だけならdos2unixやtrやPerlなどを使えば済む。もっとも大抵は文字コード…

そしてVBScript(WSH)でワンライナー、不発ぎみ

id:eel3:20120227:1330345751 でWSHのJScriptでワンライナーできるようになった以上、VBScriptでも実現しておかないと夜道が怖いので*1。 Option Explicit If WScript.Arguments.length <> 1 Then WScript.StdErr.WriteLine "usage: cscript " & WScript.Scr…

JScript(WSH)でワンライナー

id:eel3:20120227:1330277669 を元に、今度はWSHのJScriptでワンライナーする為の仕組みを作ってみた。 /*jslint windows: true, evil: true, maxerr: 50, indent: 2 */ (function () { 'use strict'; if (WScript.Arguments.length !== 1) { WScript.StdErr…

PhantomJSでワンライナー

SpiderMonkey、Rhino、Node.jsといったJavaScriptの処理系には引数に記述したスクリプトを実行する -e オプションがある。一方でPhantomJS 1.4.1にはそのようなオプションは無いようだ。なので現時点ではコンソールからPhantomJSでワンライナーすることはで…

ディレクトリツリーから最下層(リーフ)のディレクトリのみ列挙する

id:eel3:20091026:1256558649 でやり残した宿題みたいなエントリ。元々はWindows上でフォルダツリーを辿り、最下層のフォルダ(つまり中にファイルはあってもフォルダは無いもの)で且つ特定の名前だったらその中にフォルダを作る、ということをやりたかった…

8つの言語で1つのツール(2つのコンソールアプリの出力を加工する類のツール)を書き比べた

id:eel3:20120116:1326675419 で書いたように、funclenというC言語用の行数計測ツールを使っている。単純にソースファイル中に定義されている関数名を列挙するだけにも使えるが、ある条件の時に誤った関数名を出力してしまう。なのでExuberant ctagsとgawkを…

ソースファイル中に定義してある関数の名前を列挙する

仕事をしていて、時々ファイル中の関数名を列挙したいことがある。例えば、単体テストする関数の数が多いので難易度別に分けようと思い立ったけど関数名を一々手作業で列挙するのが面倒なので自動的に抜き出して表にするとか、他人のソースを読む時に関数が…

カーナビ三部作その3:microSDHCにMP3ファイルを書き込む順番で苦労する

id:eel3:20110619:1308413539 の続き。何やら妙なところで色々と苦労したものの、遂にMP3をmicroSDHCに書き込めるようになった。なので早速フォルダごとMP3ファイルをコピー……とはいかない。このmicroSDHCはカーナビで使うのだ。カーナビ――そう、相手は組み…

gcovの要約情報から欲しいものだけ抜き出す

過去に何度か書いているが、普段からgccとgcovをよく使っている。基本的にCプログラマなので仕事でCで書くことが多く、書いたソースのコンパイルチェックや単体テストにMinGWを使っているのだ。gcovを使うと未実行のパスが可視化されて便利なので、使ってい…

コマンドプロンプト上で「*.[ch]」の代替を模索する

これは間違いなくバッドノウハウ。 問題 あるディレクトリにC言語のソースファイルとヘッダファイルを含む数種類の複数のファイルが置いてある。そのソースファイルとヘッダファイルに対して、あるキーワードでegrepしたくなった。Linux上なんかでbash等のシ…

Notepad++のXMLファイルをソートして整形して出力する:ワシのコードは4発目まであるぞ

id:eel3:20110306:1299399719 のリベンジ。で、これで打ち止め。XSLTを使ってノードをソートした所、xsl:sortのソート順がNotepad++の要求する順序と異なっていて問題となった。あれから少し調べたものの、このソート順の問題をXSLTにて解決する方法は見つか…

Notepad++のXMLファイルをソートして整形して出力する:3発目は不発

id:eel3:20110226:1298686840 にてRubyでXMLファイルをソートしたのだが、どうも釈然としないものがある。XMLを変換するのならXSLTではないだろうか? XSLTではないだろうか?*1もう5年以上も前になるが、人生で初めてプログラミング言語に触れて4〜5ヶ月ぐ…

Notepad++のXMLファイルをソートして整形して出力する:2発目

id:eel3:20110225:1298647360 に載せたコードは個人的に「これはいかがなものか」と問い質したくなる代物だったので、全面的に書き直してみることにした。前回の反省を踏まえて、こんな方針で攻めてみた。 設定XMLファイルをテキストファイルとして扱わず、…

Notepad++のXMLファイルをソートして整形して出力する:1発目

Notepad++には関数補完とコールチップ機能*1があって、その実現にXMLで書かれた設定ファイルを使用している。例えばC言語用のXMLはこんな感じ。 <NotepadPlus> <AutoComplete language="C"> <Environment ignoreCase="no" startFunc="(" stopFunc=")" paramSeparator="," terminal=";" /> <KeyWord name="#define" /> </keyword></environment></autocomplete></notepadplus>

Windowsサーバのフォルダアクセス権限(DACL)を再帰的に取得する

イントロダクション あるファイルサーバの運用・管理に関わっている。別に本業ではないし*1、サーバ管理を本職としていた経験も皆無なのだが、基本的に社内に常駐している人なので都合が良いのだろう。まあ中小企業の社内システム管理なんて、(直接的に利益…

コマンドプロンプトで一時的にMicrosoft謹製のコンパイラを使う

これは半分備忘録。ふと「.NETの勉強をしよう」と思い立って、勉強用の環境を整えることにした。言語はC#、C++/CLI、JScript .NET。盛り沢山だけど、一気に全部使う訳ではない。触ってみて気に入った言語を継続して勉強しよう、という魂胆だ。環境を整えると…

改行のみのテキストファイルを作る

空の行(改行のみの行)が数十行あるだけのテキストファイルが急に欲しくなったので、Rubyで作ってみた。 ruby -e '30.times { print "\n" }' > test3.txt 見た目通り、何の捻りもない。後でこんな書き方もあることに気づいた。 ruby -e 'print "\n" * 30' >…

JScript on WSHでディレクトリ(フォルダ)を再帰的に辿る処理の雛形

2009/04〜2009/05ぐらいだったか、あるディレクトリ以下の階層に潜っていって最下層のディレクトリが特定の名前だったらその中にディレクトリを作る、という作業をやろうとして、開始5秒で手作業でやることに決定したことがあった。悔しいので今更ながらリベ…

RFC-822風オレオレファイルフォーマット覚え書き

これは備忘録。こんなことをやりたかった。 テキストファイルにテストデータを書いておき、テストアプリに流し込む。 1ファイルに1テストデータ。 テストデータは非構造的。 テストデータだけでなく、ちょっとした設定情報もテキストファイルに含めたい。 つ…

テキストファイルをソートする

テキストファイルをソートしたくなった時、どうすればよいのだろうか?最近vimのC/C++用辞書ファイルを昇順にソートした。辞書ファイルにはC/C++のキーワードが450個ぐらい書いてある。キーワードは改行で区切られているので、1行に1単語だ。最初に思いつく…

alias万歳。doskeyは微妙。

シェルのalias機能が好きだ*1。シェルといっても普段はWindows上でbashやtcshを使っているのだけど、例えばlsにはaliasでオプションを付けている。特に「--show-control-chars」が無いと8bitキャラクタの情報が無視されてしまい、日本語のファイル名が表示さ…

MinGWにおける単一のCソースファイルからのアプリのビルドを省力化する

id:eel3:20090422:1240404222 と微妙に絡んでくる話。日頃からMinGWには大変お世話になっている。というかVisual C++をインストールしてあるのに、MinGWばかり使っているのは微妙かもしれない。 警告レベル最大でコンパイルして警告の有無をチェックするのに…

Windows標準の電卓アプリを意地でも使わない(その3)

id:eel3:20090301:1235909263 や id:eel3:20090302:1235922399 で書いた方法は、さくっと簡単に計算する場合に向いている。でも色々と試行錯誤しながら計算する場合は対話型のツールの方が使いやすいと思う。対話的に計算するツールで昔からあるものといえば…

Windows標準の電卓アプリを意地でも使わない(その2)

Windowsには、標準の電卓アプリ以外で電卓代わりに気軽に使えるソフトは無いようだ。なので id:eel3:20090301:1235909263 で挙げたツールはUnix由来のものだけだ。もっとも本当に無いのか時間をかけて調べた訳ではないので「実は標準機能でこんなものが……」…

Windows標準の電卓アプリを意地でも使わない

仕事をしていて、時々ちょっとした計算をしたい場合があるのだけど、最近「プログラムを書く時みたいな感じで計算できないかなぁ」と考えるようになって、試しにWindows標準の電卓アプリを使わない生活をしている。もちろん(?)コマンドプロンプトを活用。…