Re* Programming

Thoughts, stories and ideas.

c#

DataTableの内容をcsv出力する(型付きでも可)

よくGridvuewなどにバインドしたデータテーブルをCSV(TSV)ダウンロードしたいということがあります。 以下そのコードです。 ポリモーフィズムを使いたかったので、オリジナルで持っていたコードとは別物になってしまいましたが・・・^^; なお、コードの内容については責任は持てません。使用者が最終的な判断をしてください。 使い方としては 1. ページ内で適当なDatatableを生成 2. DownloadHandlerクラスのGetNewInstance関数でDataTableをセット 第2引数でTSVかどうかを選択 3. IsHeadrWrite プロパティ お好みでタイトル行出力要否をセット デフォルトは出力する 4. Encode プロパティ デフォルトでの設定 CSVはASCII TSVはUNICODE(UTF-16)BOM付き Excelでの使用を前提にしていますので、このあたりは適当に・・・ 5. DownLoad(Page page)関数 ダウンロード開始です。 ○ ダウンロード出力イベ
5 min read
勉強会とか

ドキュメント勉強会に参加しました

前々からクライアントからこんな話を聞いていました。 * 会社の担当者によってドキュメント(の質)が違う * 他社のドキュメントに比べてレベルが低い また、僕自身最近では仕様書 / 要件定義のドキュメントを作成する時間や全体統括のための資料作成などかなり割合を占めるようになりました。 ん~、他社ってどんなの書いてるの? 旋盤工から転職した僕には、どの程度のレベルで着地すべきなのかがまったくわからない。 ということで、Twitterが縁でshin1x1さん [http://www.1x1.jp/blog]主催のドキュメント勉強会 [http://atnd.org/events/1020]に参加して来ました。 参加してみてやっぱり実感したのは、みんな難しく思っているということ。 うちの会社の場合は、仕様作成から納品まで一人で担当することが非常に多く、やはり脳内ドキュメントを使ってしまう。 でも人に振ったり、引き継ぐためにはやはり具体化が必要だなと思います。 今回はとなりのドキュメントということで、ひとつの題材(要件)について7名の方が仕様や作成ツールなどについて書き上げて
1 min read
IIS

IIS仮想ディレクトリでphpにアクセスすると404エラー

IISでPHPを動作させるため一般的な方法だと次のようになります。 pnp.iniファイル doc_root=C:Inetpubwwwroot しかし、これだと仮想ディレクトリをdoc_root以外に配置すると404エラーが表示されます。 その他にもdoc_root以下であってもエイリアスとディレクトリ名が違うと同じく404エラーが表示されてしまいます。 doc_root適時修正するのも手ですが、php.iniはIISでのPHP全体の動作に関する部分なので、他の仮想ディレクトリに個別対応できないのが問題。 doc_rootに対して複数設定できればいいんですが。。。 いろいろ調べていると以下の方法で回避できるようです。 php.iniのdoc_rootに値を設定しない http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q139538758上記回答欄参照 pnp.iniファイル doc_root= 確かに『doc_root=』 にすると仮想ディレクトリをwwwroot以外に設定したりエイリアスを変更し
1 min read
c#

IISでaspxへアクセスすると404エラーが発生する

IIS上に配置した拡張子.aspxにアクセスすると404エラーが発生する場合の確認を備忘録として。 ○ aspxに対するマッピングを確認 『IISマネージャ』で任意のサイトを右クリック→『プロパティ』→『構成』で拡張子aspxが記述されていることを確認する。 これは、IISより先に.netフレームワークをインストールしている場合などに発生する。 この場合、コマンドプロンプトから再マッピングを行うことで対応できる コマンド "%windir%Microsoft.NETFrameworkversionaspnet_regiis.exe" -i 参考ソースIIS を削除して再インストールした後、IIS マッピングを修復する方法 [http://msdn.microsoft.com/ja-jp/kb/kb00306005.aspx]○Webサービス拡張(IIS6.0) IISマネージャ『Webサービスの拡張』でASP.NETが許可されていることを確認する。 IIS6.0ではデフォルトでASP.NETの実行が禁止されています。 このため、状態を許可しないと表示できません。
c#

iText.Netでの他言語PDF出力(C#)

PDFライブラリiTextを使ってフォントを流し込んだ場合、フォント字形を埋め込みできない為、フォント・エンコードに注意が必要。 (追記)iTextのサンプル [http://www.ujihara.jp/iTextdotNET/ja/examples.html] を眺めていると、対応できそう??? iTextのベースフォントを以下の組み合わせで設定してみた。 (ここでは出力に必要なフォント設定しか記述していません。) ○日本語 BaseFont Font = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED); ○中国語(簡体字) BaseFont Font = BaseFont.createFont("STSong-Light ", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); BaseFont Font = BaseFont.
1 min read
PDF

PDF日本語フォントの埋め込み

他言語環境にてPDFをダウンロードする要件があって、ちょっとメモしておく。 PDFに日本語を表示する場合以下の二つの方法がある。 1.文字コードのみを埋め込む 2.文字コードだけではなく、フォントの字形も埋め込む 1の方法を使用する場合。 AdobeReaderの場合、クライアントPCにReaderの日本語パックをインストールしなければならない。 2.の方法を使用する場合。 そのPDFを作成するツールがフォントの字形を埋め込みできるなら、 『埋め込み』か『埋め込みサブセット』を使用して、フォントの字形をも埋め込める。 そのため、他言語で日本語フォントをインストールすることなくファイルを開くことができる。 サブセットとは使用されている文字のフォント情報のみを埋め込むことらしい。 こうすることでファイルサイズが小さくなっているんだろう。 ちなみにAcrobat4以降で埋め込みフォントの字形をフォローできるとのこと。
c#

Hashtableからの値取得

正直なところ『今時ハッシュテーブル?』とか言われそうなんですが、やっぱり開発で.net1.1なんかも未だにあったりするので書いておきます。 ポイント(?)としては、返値が『object』型なのでキャストが必要。 ArrayListなんかと一緒です。 .net2.0ならList<T> や Dictionary<T> を使用するんですが。。 そういえば、.net1.1での開発当時、簡単なListクラスもどきを実装してたような。 後日書いておきます。 ちなみに下記コード以外にもあったような気がするんですが、今のところこれだけ。 //ハッシュテーブル System.Collections.Hashtable hsTable = new System.Collections.Hashtable(); //値のセット hsTable.Add( "key1", "value1" ); hsTable.Add(
1 min read
c#

ダウンロードファイルの文字化け [.net 2.0]

.NET Framework Webアプリでダウンロードするファイル名を日本語にすると文字化けが発生する(IEのバグ)。 globalization 要素の responseHeaderEncoding 属性にHTTP ヘッダのエンコードが指定できる。これでASP.NET で Shift-JIS を使用して HTTP ヘッダを送信することが可能。  <system.web>     <globalization responseHeaderEncoding="Shift-Jis" /> </system.web>
c#

ファイルダウンロード

ファイルのダウンロード時にはSystem.Web.UI.Pageオブジェクトに関連付けられているResponseオブジェクトの関数を用途によって以下の方法を使い分ける。 ①Response.WriteFile() サーバーメモリにファイルをバッファリングし、ダウンロード サーバーのメモリ上限によって変化する。 protected void Page_Load(object sender, EventArgs e) { //ファイル情報の取得 System.IO.FileInfo oDownLoadFile = new System.IO.FileInfo("FilePath"); Response.WriteFile( oDownLoadFile.FullName ); //バッファリングされている出力を送信 Response.Flush(); Response.End(); } ②Response.Transmi
c#

ファイルアップロード [.net 1.1]

ファイルをアップロードするコンテンツを作るとき.net2.0なら サーバーコントロールのFileUploadコンポーネントを使用する。 しかしこれは.net2.0からの機能となる。 そこで.net1.1までは以下のように実装する。 <input type="file">をHTMLサーバーコントロールに変換して対応。 HTMLコード <div> <input runat="server" id="FileUpload" type="file" /> <br /> <asp:Button ID="BtnFileUpload" runat="server&
1 min read
windows

メモ帳のユニコード保存時の挙動

Windows XPのメモ帳でユニコードがらみの調査をしているときに発見したので書いておく。 メモ帳は文字コードがユニコードの場合、BOM付き/無しにかかわらず読み込むことができる。 逆に保存するときはBOMを自動的に付与する。 (BOM:Byte Order Markの略) 通常、Unicode(UTF-16):BOM無しのCSVファイルをエクセル(2000)で開くことができないんだけど、一旦メモ帳で保存し直すことでBOMが付与されてCSVファイルをエクセルで開くことが可能になる。
eclipse

Eclipse Ganymede

久しぶりにJavaベースの開発をすることになり、Java脳にするため自宅PCにEclipseのインストール Eclipse Ganymede [http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-java-ganymede-SR1-win32.zip] Eclipse Ganymede (3.4.1) 日本語化言語パック [http://sourceforge.jp/projects/nttdatagroup-oss-square/wiki/blanco_Framework%2Fnlpack.eclipse.ganymede] Tomcatプラグイン [http://sourceforge.net/project/showfiles.php?group_id=69218] template engine Velocityプラグイン
windows

セル内の改行を削除・置換

セル内の改行(コード)を削除する関数はClean関数 検索置換などで文字コードとして指定するときは『Ctlr + J』で指定する。 ただし、ヘルプに記載されていないらしく今後使えるかどうかは不明 【参考】 セル内の改行を検索/置換する [http://pc.nikkeibp.co.jp/article/NPC/20070216/262265/] 秘密の改行キー「Ctrl」+「J」 [http://pc.nikkeibp.co.jp/article/NPC/20070626/275918/]