結論からいえば、動作します。
基本的にInstalling on a headless serverや、Installationの手順に従えば使用できるようになります。
いくつかつまづいたことがあったので記録しておきます。
package-installコマンドでemacs-eclimをインストールできない
apt-get upgradeコマンドを実行したらインストールできました。
package-list-packagesコマンドを実行するとemacsがバックグラウンドに回る
bash on Ubuntu on Windowsのバグらしいです。
どうにかしてX Window System経由でemacsを起動しないと対応できないようです。
これでEmacs on Bash on Ubuntu on Windowsでも快適にJavaが書けます。
2017年8月28日月曜日
2017年1月2日月曜日
PowerShellで、ショートカット情報を得るフィルタを作ってみる(5.1.14393.576対応)
PowerShellで、ショートカット情報を得るフィルタを作ってみるにて、Windows PowerShellからショートカットの情報を得る方法が紹介されています。
しかし、残念ながら私の環境では動作しませんでした。
以下のように、CreateShortcutメソッドへ渡すパラメータを$_から$_.FullNameへ変更することで動作させることができました。
しかし、残念ながら私の環境では動作しませんでした。
以下のように、CreateShortcutメソッドへ渡すパラメータを$_から$_.FullNameへ変更することで動作させることができました。
filter Get-Shortcut() { $shell = New-Object -ComObject WScript.Shell return $shell.CreateShortcut($_.FullName) }
2016年9月26日月曜日
ExcelからRSSを取得するサンプルプログラム
MSXMLを使用すれば、ExcelからRSSを取得できます。
XmlNode.SelectNodesメソッドを使用するときは名前空間(Namespace)に注意します。
サンプルではXMLDOMDocument.setPropertyを使用して名前空間を指定しています。
以下、サンプルプログラムです。
XmlNode.SelectNodesメソッドを使用するときは名前空間(Namespace)に注意します。
サンプルではXMLDOMDocument.setPropertyを使用して名前空間を指定しています。
以下、サンプルプログラムです。
Public Sub Msxml() Dim namespaces As String Dim xml As Object Dim ret As Boolean Dim nodeList As Object Dim item As Object namespaces = "xmlns:rss='http://purl.org/rss/1.0/'" namespaces = namespaces + " xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'" Set xml = CreateObject("MSXML2.DOMDocument.6.0") Call xml.setProperty("ServerHTTPRequest", True) Call xml.setProperty("SelectionNamespaces", namespaces) xml.async = False ret = xml.Load("http://b.hatena.ne.jp/sample/rss") If ret Then Set nodeList = xml.SelectNodes("/rdf:RDF/rss:item/rss:title") For i = 0 To nodeList.Length - 1 ActiveSheet.Cells(i + 1, 1).Value = nodeList.item(i).Text Next End If End Sub
2016年8月1日月曜日
POIで絵文字を出力するためのハック
この記事では、POIを使ってExcel(xlsx)ファイルへ絵文字を出力するためのハックを紹介します。
「ハック」と表現したように、あまりお行儀のいい方法ではないと思っているので、もっとスマートな方法を御存知でしたらコメントなどで教えていただけると嬉しいです。
「ハック」と表現したように、あまりお行儀のいい方法ではないと思っているので、もっとスマートな方法を御存知でしたらコメントなどで教えていただけると嬉しいです。
POIで絵文字を出力しようとすると、そのままでは「??」と文字化けしたようになってしまいます。
これは、Apache XMLBeansのTextSaver(org.apache.xmlbeans.impl.Saver.TextSaver)クラスのisBadCharメソッドが絵文字に対してtrueを返すからです。
Apache XMLBeansはすでに開発が終了しています。isBadCharメソッドはprivateで定義されているので、オーバーライドもできません。私はクラスを上書きする方法を選択しました。
まずは、Apache XMLBeansのソースを取得します。
svn export http://svn.apache.org/repos/asf/xmlbeans/trunk/ xmlbeans
次に、xmlbeans\src\store\org\apache\xmlbeans\impl\Saver.javaをプロジェクトへコピーします。必要なディレクトリ(org\apache\xmlbeans\impl)を作成し、その配下へコピーします。
最後に、isBadCharメソッドを書き換えます。書き換え後は次のようになります。
private boolean isBadChar ( char ch ) { if (Character.isHighSurrogate(ch) || Character.isLowSurrogate(ch)) return false; return ! ( (ch >= 0x20 && ch <= 0xD7FF ) || (ch >= 0xE000 && ch <= 0xFFFD) || (ch >= 0x10000 && ch <= 0x10FFFF) || (ch == 0x9) || (ch == 0xA) || (ch == 0xD) ); }
OptimizedForSpeedSaverにも同様のメソッドがあるので、ついでに書き換えておきます。
以上で絵文字を出力できるようになります。
2015年11月9日月曜日
ASP.NETでファイルをダウンロードするボタン
クリックするとファイルをダウンロードするボタンを作りました。
主な機能は以下のとおりです。
主な機能は以下のとおりです。
- クリックするとFileプロパティにセットされたファイルをダウンロードする
- FileプロパティはClickイベントやDownloadingイベントでセットすることもできる
- Downloadedイベントで動的に作成したファイルを削除することもできる
使用するには、以下の手順に従います。
- FileDownloadButtonをプロジェクトに追加する
- FileDownloadButtonをツールボックスへ追加する
参考: 方法 : Visual Studio でカスタム ASP.NET サーバー コントロールを使用するの「カスタム コントロールをツールボックスに追加するには」 - *.aspxへFileDownloadButtonを配置し、イベントハンドラを設定する
例:<cc1:FileDownloadButton ID="FileDownloadButton1" runat="server" Text="Download" OnDownloading="FileDownloadButton1_Downloading" OnDownloaded="FileDownloadButton1_Downloaded"/>
- *.csでイベントハンドラを実装する
例:protected void FileDownloadButton1_Downloading(object sender, EventArgs e) { // Tempファイルを作成する var path = Path.GetTempFileName(); var file = new FileInfo(path); // Tempファイルへデータを出力する using (var s = file.OpenWrite()) using (var w = new StreamWriter(s)) { w.WriteLine("Hello"); w.Flush(); } // FileDownloadButtonのFileプロパティへTempファイルをセットする FileDownloadButton1.File = file; } protected void FileDownloadButton1_Downloaded(object sender, EventArgs e) { // Tempファイルを削除する FileDownloadButton1.File.Delete(); }
Content-Typeの設定やレスポンスの呼び出しなど、低レベルな処理をカプセル化できるので、導入のメリットはそこそこあると思います。よろしければご利用ください。
以下、FileDownloadButtonのソースです。
2015年9月28日月曜日
ASP.NETで動的に画像を生成して返す(IHttpHandler版)
ASP.NETで動的に画像を生成して返すようなときは、WebFormを使用するのが一般的なようです。
この記事ではIHttpHandlerインターフェイスを実装して画像を生成して返す方法を紹介します。
以下2つの手順に従います。
この記事ではIHttpHandlerインターフェイスを実装して画像を生成して返す方法を紹介します。
以下2つの手順に従います。
- IHttpHandlerインターフェイスを実装した画像を出力するクラスを実装する
- 1のクラスをweb.configファイルへ登録する
- IHttpHandlerインターフェイスを実装すること
- 画像のバイナリデータをHTTPレスポンスへ出力すること
- Content-Typeヘッダを適切に設定すること
namespace HttpHandlerSample { // 動的にPNG画像を生成するクラス public class PngHandler : IHttpHandler { // このオブジェクトが再利用可能かを返すプロパティ public bool IsReusable { get { return true; } } // ...略... // HTTPリクエストを処理するメソッド public void ProcessRequest(HttpContext context) { // 画像を生成する using (var image = GenerateImage()) { // PNG形式でHTTPレスポンスへ出力する var output = context.Response.OutputStream; image.Save(output, ImageFormat.Png); output.Flush(); } // Content-TypeヘッダをPNG形式に設定する context.Response.ContentType = "image/png"; } // ...略... } }
IHttpHandlerにはIsReusableプロパティとProcessRequestメソッドが定義されています。このProcessRequestメソッドを実装することで機能を実現します。
画像のバイナリデータを出力するには、Image#Saveメソッドを使用します。
Content-Typeヘッダを指定するには、HttpResponse#ContentTypeプロパティを使用します。画像の形式が一致するように設定します。
次に、上のクラスをweb.configへ以下のように設定します。
以上で動的な画像の生成が実現できます。
以下、サンプルコード全体です。
画像のバイナリデータを出力するには、Image#Saveメソッドを使用します。
Content-Typeヘッダを指定するには、HttpResponse#ContentTypeプロパティを使用します。画像の形式が一致するように設定します。
次に、上のクラスをweb.configへ以下のように設定します。
<configuration> <system.webServer> <handlers> <add name="PngHandler" path="*.png" verb="GET" type="HttpHandlerSample.PngHandler"/> </handlers> </system.webServer> </configuration>ちなみに
以上で動的な画像の生成が実現できます。
以下、サンプルコード全体です。
2015年8月31日月曜日
年齢を計算する関数
過去に実装した年齢計算プログラムのロジックが残念なことになっていましたので、考えを整理しました。
記事の最後に載せたプログラムのコメントにも書きましたが、ポイントは2つあります。
「年齢を求める日付」はいい言葉が思いつきませんでした。いい言葉をご存知の方はコメントして頂けると助かります。
2015/8/31
NARITA Shoさんから「Excel 界隈では「基準日」という語が使われているみたいですね。」とのコメントを頂きました。ありがとうございました。
以下、xyzzy lispとC#での実装を記載します。
2015/9/2
C#での実装例を追加しました。
記事の最後に載せたプログラムのコメントにも書きましたが、ポイントは2つあります。
- 基準日の年と生年の差
- 基準日がその年の誕生日よりも前のときは1を減算する
2015/8/31
NARITA Shoさんから「Excel 界隈では「基準日」という語が使われているみたいですね。」とのコメントを頂きました。ありがとうございました。
以下、xyzzy lispとC#での実装を記載します。
2015/9/2
C#での実装例を追加しました。
登録:
投稿 (Atom)