<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sks blog &#187; 小技</title>
	<atom:link href="http://sks.s201.xrea.com/blog/archives/tag/tips/feed" rel="self" type="application/rss+xml" />
	<link>http://sks.s201.xrea.com/blog</link>
	<description>気になったこと、役に立ちそうだなと思ったことなどを公開しています。</description>
	<lastBuildDate>Sun, 19 Apr 2009 06:55:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Emacsのalignが便利</title>
		<link>http://sks.s201.xrea.com/blog/archives/602</link>
		<comments>http://sks.s201.xrea.com/blog/archives/602#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:50:34 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/?p=602</guid>
		<description><![CDATA[Emacsのalignがけっこう便利。桁揃えが簡単になるので、特にコーディングするときに重宝する。例えば次のようなコードがあるとする。

input HCLK; // Clock
output [31:0] HADDR; [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsのalignがけっこう便利。桁揃えが簡単になるので、特にコーディングするときに重宝する。例えば次のようなコードがあるとする。</p>
<pre>
input HCLK; // Clock
output [31:0] HADDR; // Address
output [1:0] HTRANS; // Transfer type
output HWRITE; // Transfer direction
output [2:0] HSIZE; // Transfer size
output [2:0] HBURST; // Burst type
output [31:0] HWDATA; // Write data
input [31:0] HRDATA; // Read data
input HREADY; // Transfer done
</pre>
<p>そして次に示すコマンドを実行してみる。</p>
<pre>
コードをリージョンで選択→M-x align-regexp→Align regexp: \[
コードをリージョンで選択→M-x align-regexp→Align regexp: H
コードをリージョンで選択→M-x align-regexp→Align regexp: //
</pre>
<p>するとコードが次のように桁揃えされる。</p>
<pre>
input         HCLK;   // Clock
output [31:0] HADDR;  // Address
output [1:0]  HTRANS; // Transfer type
output        HWRITE; // Transfer direction
output [2:0]  HSIZE;  // Transfer size
output [2:0]  HBURST; // Burst type
output [31:0] HWDATA; // Write data
input  [31:0] HRDATA; // Read data
input         HREADY; // Transfer done
</pre>
<p>
同じようなことを3回繰り返しているのでちょっと面倒だが、手作業でやるよりはマシだと思う。どこで桁揃えするかを正規表現で指定できるのでかなり応用が利く。場合によっては余計面倒になるかもしれないが…。
</p>
<p>
ちなみに<code>C-u M-x align-regexp</code>でもう少し複雑なことができる。詳細は<a href="http://www.emacswiki.org/emacs/AlignCommands">EmacsWiki: Align Commands</a>を参照。さらに、桁揃えのルールをあらかじめ定義しておくことができるので、これを定義しておけばもっと便利になりそう。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs(verilog-mode)でVerilogの数値リテラルを強調表示</title>
		<link>http://sks.s201.xrea.com/blog/archives/598</link>
		<comments>http://sks.s201.xrea.com/blog/archives/598#comments</comments>
		<pubDate>Wed, 01 Apr 2009 17:01:12 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/?p=598</guid>
		<description><![CDATA[Emacsのverilog-modeでは数値リテラルが強調表示されないので、以下のコードで対応。

(font-lock-add-keywords
 'verilog-mode
 '(("\\(\\]]></description>
			<content:encoded><![CDATA[<p>Emacsのverilog-modeでは数値リテラルが強調表示されないので、以下のコードで対応。</p>
<pre>
(font-lock-add-keywords
 'verilog-mode
 '(("\\(\\<[1-9][0-9_]*\\)?'h[0-9_a-fxz]+\\>" . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'d[0-9_xz]+\\>"    . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'o[0-7_xz]+\\>"    . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'b[01_xz]+\\>"     . font-lock-number-face)
   ("\\<[0-9][0-9_]*\\>"                      . font-lock-number-face)))
</pre>
<p>フェイスは好きなものを指定する。ちなみに<code>32'D0</code>とか<code>5e3</code>とか<code>0x</code>とかには未対応。使わないので。</p>
<p>Emacsを本格的に使い始めて1ヶ月もたっていないので間違いがあるかもしれないけど、とりあえず強調表示はできてる。Verilogを書くにはEmacsのverilog-modeが一番便利っぽい。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/598/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 3のツールバーボタンのテキストをアイコンの右側に表示する</title>
		<link>http://sks.s201.xrea.com/blog/archives/518</link>
		<comments>http://sks.s201.xrea.com/blog/archives/518#comments</comments>
		<pubDate>Sat, 26 Apr 2008 12:16:06 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/?p=518</guid>
		<description><![CDATA[userChrome.cssに以下を追加。

#nav-bar .toolbarbutton-1, #nav-bar .toolbarbutton-menubutton-button
{
    -moz-box-orient: horizontal !important;
}


]]></description>
			<content:encoded><![CDATA[<p>userChrome.cssに以下を追加。</p>
<pre>
#nav-bar .toolbarbutton-1, #nav-bar .toolbarbutton-menubutton-button
{
    -moz-box-orient: horizontal !important;
}
</pre>
<p><img src="/blog/wp-content/minefield_toolbar.png" alt="Minefieldツールバー" width="400" height="200" /></p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/518/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 3でファイルダウンロード時の自動ウィルススキャンを無効にする</title>
		<link>http://sks.s201.xrea.com/blog/archives/517</link>
		<comments>http://sks.s201.xrea.com/blog/archives/517#comments</comments>
		<pubDate>Sat, 15 Mar 2008 01:49:59 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/517</guid>
		<description><![CDATA[
about:configを開いてbrowser.download.manager.scanWhenDoneをfalseに設定。
]]></description>
			<content:encoded><![CDATA[<p>
about:configを開いて<code>browser.download.manager.scanWhenDone</code>を<code>false</code>に設定。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/517/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox 3のGoボタンを常に表示する</title>
		<link>http://sks.s201.xrea.com/blog/archives/516</link>
		<comments>http://sks.s201.xrea.com/blog/archives/516#comments</comments>
		<pubDate>Sun, 02 Mar 2008 14:39:23 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/516</guid>
		<description><![CDATA[userChrome.cssに以下を追加。

#go-button
{
    visibility: visible !important;
}

]]></description>
			<content:encoded><![CDATA[<p>userChrome.cssに以下を追加。</p>
<pre>
#go-button
{
    visibility: visible !important;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/516/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefoxのクイック検索バーにボタンを表示する</title>
		<link>http://sks.s201.xrea.com/blog/archives/515</link>
		<comments>http://sks.s201.xrea.com/blog/archives/515#comments</comments>
		<pubDate>Wed, 21 Nov 2007 12:27:30 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/515</guid>
		<description><![CDATA[
userChrome.cssに以下のコードを追加することで、Firefoxのクイック検索バーに「次を検索」などのボタンを表示することができます。マウス派の人にとっては便利ですよ。


#FindToolbar > *
 [...]]]></description>
			<content:encoded><![CDATA[<p>
userChrome.cssに以下のコードを追加することで、Firefoxのクイック検索バーに「次を検索」などのボタンを表示することができます。マウス派の人にとっては便利ですよ。
</p>
<pre>
#FindToolbar > *
{
    display: -moz-box;
}
</pre>
<p>
Firefoxの検索ツールバーに関しては<a href="http://www.mozilla-japan.org/access/type-ahead.html">キーボード機能: Find As You Type</a>を参照。ショートカットキーが載っているのでキーボード派の人はこっちの方が便利です。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/515/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordで数式の右に番号を挿入する方法</title>
		<link>http://sks.s201.xrea.com/blog/archives/486</link>
		<comments>http://sks.s201.xrea.com/blog/archives/486#comments</comments>
		<pubDate>Tue, 13 Mar 2007 15:11:41 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Word]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/485</guid>
		<description><![CDATA[
Wordでは図表番号を挿入するとき番号を選択項目の上に挿入するか下に挿入するか選択することができます。しかし右側に番号を挿入する方法は簡単ではありません。特に数式番号は数式の右側にあるのが普通です。単純に数式の右側にス [...]]]></description>
			<content:encoded><![CDATA[<p>
Wordでは図表番号を挿入するとき番号を選択項目の上に挿入するか下に挿入するか選択することができます。しかし右側に番号を挿入する方法は簡単ではありません。特に数式番号は数式の右側にあるのが普通です。単純に数式の右側にスペースやタブを挿入して調整する方法もありますが、相互参照を行う場合はうまくいきません。
</p>
<p>
ということで数式の右に番号を挿入する方法を探してみたところ、Microsoftのサイトの<a href="http://support.microsoft.com/kb/212381/en">WD2000: How to Insert a Right-Aligned Caption Next to an Equation</a>にありました。4つの方法が紹介されていて方法1は中央揃えタブと右揃えタブを用いる方法で、方法2、3は表を用いてレイアウトする方法です。方法4は方法2、3をマクロで記述したものでした。ちなみに相互参照を行う場合は方法2、3、4を用いる必要があるので注意。
</p>
<p>
ちなみにMathTypeというソフトを使えばこれらのことが簡単にできますよ。有料ソフトですが体験版があるので興味のある方は試してみたらどうですか。TeXを使っている人は問題ないですね。
</p>
<p>
今さら言うのも遅いですが論文などの長い文書をWordで書く場合はスタイル、図表番号、相互参照くらいは使ったほうが便利ですよ。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/486/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ContextMenuStripをタスクバー上に表示する</title>
		<link>http://sks.s201.xrea.com/blog/archives/469</link>
		<comments>http://sks.s201.xrea.com/blog/archives/469#comments</comments>
		<pubDate>Fri, 27 Oct 2006 19:38:23 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/469</guid>
		<description><![CDATA[
.NET Framework 2.0では.NET Framework 1.xのContextMenuの代わりにContextMenuStripというコントロールが追加されました。このContextMenuStripは多 [...]]]></description>
			<content:encoded><![CDATA[<p>
.NET Framework 2.0では.NET Framework 1.xのContextMenuの代わりにContextMenuStripというコントロールが追加されました。このContextMenuStripは多機能で便利ですが、タスクバー上に表示させようとするとうまく表示できません(タスクバーに重ならないように表示される)。SHAppBarMessageでデスクトップツールバーを作成したときなどは困るんじゃないかと。ということでContextMenuStripをタスクバー上に表示させるためにいろいろと調べてみました。
</p>
<p>
最初に注目したのはNotifyIcon。NotifyIconにContextMenuStripを設定すると正常にタスクバー上に表示されます。MSIL逆アセンブラでNotifyIconを覗いてみると、ContextMenuStripのShowInTaskbarというプライベートメソッドを呼び出していることが分かります。とりあえず、
</p>
<pre>
contextMenuStrip.GetType().InvokeMember(
    "ShowInTaskbar",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.InvokeMethod |
    System.Reflection.BindingFlags.Instance,
    null,
    contextMenuStrip,
    new Object[] { Cursor.Position.X, Cursor.Position.Y } );
</pre>
<p>
とすることでcontextMenuStripをタスクバー上に表示させることができました。
</p>
<p>
ただし、この方法では何故かメニューが常にマウスポインタの右上に表示されるようです。いまいちスッキリしないのでShowInTaskbarメソッドの中をさらに覗いてみると、ToolStripDropDownにWorkingAreaConstrainedプロパティが存在するらしい。強制的に作業領域に表示させるという意味なので、
</p>
<pre>
contextMenuStrip.GetType().InvokeMember(
    "WorkingAreaConstrained",
    System.Reflection.BindingFlags.NonPublic |
    System.Reflection.BindingFlags.SetProperty |
    System.Reflection.BindingFlags.Instance,
    null,
    contextMenuStrip,
    new Object[] { false } );
contextMenuStrip.Show( Cursor.Position );
</pre>
<p>
としてみるとうまく表示させることができました。ただし、メニューが表示されるとWorkingAreaConstrainedがtrueに設定されるようなので、表示させる前に毎回WorkingAreaConstrainedをfalseに設定しないと駄目なようです。
</p>
<p>
これらの方法は本来アクセスできないメソッドやプロパティに強引にアクセスしているわけで、実際はこのような方法は好ましくありません。とりあえずこのような方法もあるというだけです。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/469/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSDNライブラリのCDをDVDにまとめる</title>
		<link>http://sks.s201.xrea.com/blog/archives/427</link>
		<comments>http://sks.s201.xrea.com/blog/archives/427#comments</comments>
		<pubDate>Fri, 16 Jun 2006 16:34:06 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/427</guid>
		<description><![CDATA[
先日公開されたMSDNライブラリはCD4枚分のイメージをダウンロードすることができますが、DVD版は公開されていないみたいです。ちょっと不便なので1枚のDVDにまとめてみました。しかし、ただ単純にDVDに記録するだけで [...]]]></description>
			<content:encoded><![CDATA[<p>
先日公開されたMSDNライブラリはCD4枚分のイメージをダウンロードすることができますが、DVD版は公開されていないみたいです。ちょっと不便なので1枚のDVDにまとめてみました。しかし、ただ単純にDVDに記録するだけでは駄目でしたので、ちょっとメモしておきます。
</p>
<p>
まずDaemonToolsなどのソフトを用いてCD4枚分のイメージからファイルを抽出します。次にそれぞれのCDイメージから抽出したファイルを1つの適当なフォルダにまとめます。ここでちょっとした小細工が必要なのですが、msdn.msiというファイルの中にCDのボリュームラベルが記述されている部分があるのでそこをバイナリエディタで書き換えます。具体的にはmsdn.msiというファイルの中にMSDVJPND1、MSDVJPND2、MSDVJPND3、MSDVJPND4となっている部分がありますので、そこを全てMSDNVJPNDなどと適当に書き換えます(文字列の長さが変わらないようにする)。そして、ボリュームラベルをMSDNVJPNDにしてDVDに記録すればO.K.のはずです。いきなりで心配な方はDVDイメージを作成してDaemonToolsでテストしてみるといいかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/427/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>foobar2000をタスクバーからコントロール</title>
		<link>http://sks.s201.xrea.com/blog/archives/412</link>
		<comments>http://sks.s201.xrea.com/blog/archives/412#comments</comments>
		<pubDate>Mon, 22 May 2006 16:05:17 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[foobar2000]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/archives/412</guid>
		<description><![CDATA[
最近はfoobar2000というオーディオプレイヤーをよく使用しているんですが、foobar2000を最小化している時でもタスクバーからコントロールできるようにしてみました。このような機能を提供するソフトはいくつかある [...]]]></description>
			<content:encoded><![CDATA[<p>
最近は<a href = "http://www.foobar2000.org/" title = "foobar2000">foobar2000</a>というオーディオプレイヤーをよく使用しているんですが、foobar2000を最小化している時でもタスクバーからコントロールできるようにしてみました。このような機能を提供するソフトはいくつかあるようですが、今回はWindowsの機能のみを利用して実現してみました。
</p>
<p>
<img id="image411" src="/blog/wp-content/foobar2000_in_taskbar.png" alt="foobar2000 in taskbar" />
</p>
<p>
foobar2000はいくつかのコマンドライン引数を指定して実行することで、ある程度だけ動作をコントロールすることができます。いくつか例を挙げますと…
</p>
<pre>
foobar2000.exe /play
foobar2000.exe /stop
foobar2000.exe /next
</pre>
<p>
上から再生、停止、次の曲に相当します。何をしたいのかと言いますと、このようなコマンドライン引数を指定したfoobar2000.exeへのショートカットを適当なフォルダに作成し、そのフォルダをタスクバーに登録するだけです。ショートカットのアイコンやタスクバー上での表示方法をカスタマイズすることで上の画像のような構成にすることが可能です。Windowsの機能だけでもなんとなく形になりますね。
</p>
<p>
以前は<a href = "http://tnetsixenon.xrea.jp/foobar2000/index.php?foobar2000v0.8%2FUser%20interface#h25cd32d" title = "foo_remote">foo_remote</a>というタスクバーからfoobar2000をコントロールするためのコンポーネントが公開されていましたが、現在では開発が停止しているようです。また関連ソフトとして以前紹介した<a href = "http://sks.s201.xrea.com/blog/archives/337" title = "Winamp Deskband">Winamp Deskband</a>というWinampをタスクバーからコントロールするソフトもあります。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/412/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
