日々のメモ書き
Debian Developerが綴るメモ
kerberos+pam
PAMを使ってKerberos認証を行うには。
README.Debianを読めというだけ。/etc/pam.d/common-*にKerberosのモジュールを使う設定を加えるだけ。
ただし、Active Directoryでは認証しかできない。アカウントが必要なら/etc/passwdに追加するか、LDAPで持ってくるかしないといけない。SFUという手もあるらしい。
apt.confメモ
testing(stable)環境からunstableを一部インストールする方法。
なんだっけと、すでに設定してあるPCから設定を探すことがあるのでメモ。
apt-lineにsidを追加する。それだけではsidが無分別に入るので、/etc/apt/apt.confにこう書く。
APT::Default-Release "testing";
2007-04-19修正
コードネーム(etch)では駄目。
Debian Etch installer
Debian Etch Installer rc2をテストしてみた。
expertguiでブートさせる。DebianでもGUIモードのインストーラが使えるなんて…。もうすぐ10年Debianを使い続けてきて、最初のころのひどいインストーラーから比べるとついにここまで来たかと思う。ほとんどインスーラーの言うとおりにまかせて適当にやっていくだけで日本語のgdmが起動するところまで進行。素晴らしい。
Xenとjp106
XenでJP106での入力がおかしいのを調べてみると。
http://lists.xensource.com/archives/html/xen-devel/2006-11/msg01185.html
qemu-dmあたりの問題ですか、そうですか。
Xnest + gdm
Xnestを使ってgdmを使いたいとき。
$ gdmflexiserver --xnest気付かなかったよ。ああ、これで楽になる。
PerlでKerberos5
続き。
/etc/krb5.confに次のように書く。
[realms]
SAMPLE.REALM = {
kdc = 192.168.0.1
}
で、プログラム側でREALMをSAMPLE.REALMに指定すればいい。Authen::Krb5::Simple(3pm)をもとにして書くとこうなる。
use Authen::Krb5::Simple;
my $krb = Authen::Krb5::Simple->new();
$krb->realm("SAMPLE.REALM");
my $authen = $krb->authenticate("username", "password");
unless($authen) {
my $errmsg = $krb->errstr();
dir "User: authentication failed: $errmsg\n";
}
認証されたあとどうすればいいんだろう、と思ったらこのモジュールでは認証以外のことは何にもできないのね。
PerlでKerberos5
Authen::Krb5::Simpleを使ってみようと思った。
/etc/krb5.confを書かなきゃいけなかったのね。どこでKDCを指定するんだろうって悩んでいたが。単純な話でした。
JasperReportsで日本語を使う
次は日本語だね、って適当にやってみるとエラーが出る。
さっき作ったJasperReportsのサンプルコードのデータソースに日本語を与えてみようと挑戦。次の段階として当たり前だね。jrxmlをiReportで編集。Textのプロパティを見ていけばPDF FontとPDF Encodingという欄がある。HeiseiMin-W3・UniJIS-UCS2-Hにそれぞれ設定。PDFのフォント設定として普通の設定ですね。
次にJavaのコードの変更。コード中に適当に日本語のデータを埋め込む。よし、これで実行…、あれ?
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : HeiseiMin-W3
pdfEncoding : UniJIS-UCS2-H
isPdfEmbedded : false
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:1465)
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1368)
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1351)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:1708)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:590)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:554)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:519)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:306)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:126)
at MapArrayDSReport.main(MapArrayDSReport.java:68)
というようなエラーが。調べてみるとiTextがデフォルトでCJKに対応してないからということが原因だった。iTextAsian.jarをダウンロードしてきてCLASSPATHに追加すると見事表示された。ここはまるので注意。
- http://www.lowagie.com/iText/faq.html#asianfonts
- http://itextpdf.sourceforge.net/ - 本当は上のFAQのリンクがあるんだけど、Not Foundなので直接こっちから
JasperReportに挑戦
やっとこさJasperReportを使ったプログラムを書けた。
一から頑張るなんてことはやらないで、JasperForgeにあるサンプルをもとに改造した。サンプルのjasperbook_chapter_5のソース(JasperCompileManager.java)を改造する。もともとのコードはサーブレットになっている。そんなことされてはめんどくさいのでその場でPDFを生成するように改造した。そのあたりはThinkITの記事を参考に。ずらずらとソースを並べても仕方がないのでmainのところだけ書く。
public static void main(String[] args) {
String templatePath = "./template/AircraftReport.jrxml";
String destPath = "./JasperSample1.pdf";
try {
JasperReport jasperReport = JasperCompileManager
.compileReport(templatePath);
JRDataSource dataSource = createReportDataSource();
JasperPrint print = JasperFillManager.fillReport(jasperReport,
new HashMap(), dataSource);
JasperExportManager.exportReportToPdfFile(print, destPath);
System.out.println("done");
} catch (Exception e) {
e.printStackTrace();
}
}
てな具合です。
ThinkITの記事はデータソースがデータベースとの接続を前提とした記事になっていたので別のコードを見なきゃデータソース変更の方法がわからなかっただけです。一回書いてみると別にデータソースの変更に面倒な話は何もない。Eclipseを使ったから勝手に補完にヘルプで楽だった。
練習開始
2ヶ月以上ほうりだしてあったロードバイクに乗る。
距離は50kmぐらい。気合の入ってない格好で気合の入ってない格好で走る。
久しぶりに乗ってみたらハンドルが遠かった。いかんな、体がMTBに慣れすぎている。
しばらく走ってみたら体が思い出したようで、きちんと乗れるようになってきた。だけど、まだまだ本気の練習ではない。来週こそ本格的に走りたいものだ。