約25MBのPDFが約6MBになってビックリ

以下のPublickeyの記事で知ったMatt Raible氏のスライドなんですが…PDFでダウンロードすると約25MBのサイズでした。

まぁ、25MBが大きいかどうか最近となっては微妙ですが…小さいに越したことはないわけです。

で、このファイルをAcrobat 9.4で開いてPDFの互換性レベルを9のみ(PDF 1.7)で保存してみると…なんとサイズが約6MBにまで小さくなりました :roll:

セキュリティホールの多いソフトとして定評のあるAcrobat Readerですし、今さら9以外のバージョンを使ってる人も少ないでしょうし、9のみで十分じゃないかと(あ、最新はXでしたね)…しかし、互換性を保つために20MB近くも消費してるってことですか :?:

まぁ、今回のPDFの場合画像背景とかもあったりするので、それだけが原因じゃないと思いますが…久々にAcrobatが役に立ったなぁと思いました ;)

そう言えば、Matt Raible氏は2007年のApacheConでも今回とよく似た比較を公開して話題になってましたよね(以下のInfoQの記事参照)~3年しか経ってないのにWebフレームワークの様相も変わってますね。

しかし、この業界変化が早すぎですね~数年くらい『抜け駆けなしの全員』で立ち止まってみたいんですけど ;)

それにしても、Acrobat X Suiteって高いっすね :roll:

TrackBack URL :

さくらのVPSでLiferayを動かしてみた

さくらのVPS話題ですよね~なんと言っても月額980円ってのがすごいです ;)

メモリ512MBで、ディスクが20GB…用途にもよるでしょうけど、微妙なところを突いてきます :|

と言うことで、最近お気に入りのCMSというかポータルというか、Liferayをインストールして動かしてみました~OSはデフォルトのCentOSのままです。

  1. Liferayをダウンロード
    ここで、ダウンロードしたのはCommunity Edition(CE)の現時点の最新6.0.5で、Bundled with Tomcatです。
  2. JREもダウンロードしてインストール
    JREもLinux(64bit版)最新版をダウンロードして、インストールしました。LiferayにJRE同梱されているのですが…同梱されてるのはWin版なので :)
  3. Liferayをインストール
    まぁ、インストールと言ってもダウンロードしたzipファイルをVPSに上げて、unzipで展開するだけなんですけど…場所もどこでもOKですし。
  4. Liferayを起動
    startup.shするだけ:)
  5. Liferayの管理者になって、ちょこちょこイジる
    ここが、一番面倒なところですけど…現時点で本運用するつもりはないので、超適当イジりです。はい。

で、めでたく動き出したLiferayの表示画面が以下です。

次にメモリの状態は以下のような感じです。

さすがに厳しいわけですが…別に問題なく動いてます。もっさり感はありますけど。

それにしても、sshとかで操作してて感じるのは速いこと、速いこと。昔、昔、結構な値段で専用サーバを借りてた(もちろん、個人で借りれる程度の安物)わけですが…遅くて遅くて、文字の流れが目視できたことを思うと隔世の感がありますね。あ、あの頃は回線も遅かったか :roll:

で、今ここで動いているレンタルサーバの値段と比較しちゃうと…月額980円ってのも結構高かったりします :oops: と言うことで、さくらVPS良いんだけど…移行するか悩み中です。更新時期の問題もあるし。

てか、SCMサーバとして会社で借りてくれないかなぁ~でも、漏えいとかの問題でダメなんだろうなぁ~ディスクを逐次暗号化とかすれば…いや、こんな運用をしたいと申請した時点で鼻からダメだろうな :cry:

TrackBack URL :

Liferay 6.0.3リリース

某所でポータルサイトを構築するために試用しているLiferayなんですが、ようやく待ちに待ってた6系のRCがGA版(6.0.3)となりました ;)

ポータルというか、CMSってなかなかどれも帯に短し襷に長しって感じで、しっくりくるものがないんですが…日本語訳が微妙だったり色々問題があったりするんですけどLiferay気に入ってたりします。

日本語訳は6.0.3になって少しましになってる :?: 「札の雲」もチャンと「タグクラウド」になってますね :) あと、ワークフロー等もRCでは外されてたのですが、チャンと入ってますね~でも、使い方が良くわかりません :cry:

Liferayの一番の欠点は日本語での情報が少ないことですかね~日本語の情報があれば教えていただけるとうれしいです。カスタマイズしたいんですけど敷居が高いです :cry:

Liferay Portal 6 Enterprise Intranets
Jonas X. Yuan
1849510385

て、言うか英語でも6の情報は少ないですね :|

導入時に参考にしたCMSの比較資料としては、登録が必要なのと英文ってのがアレなんですが…グラフとかが多いのでOpen Source CMS Market Share Report 2009は役に立つと思います。まぁ、この資料を見るとLiferayって選択にならないかも知れないですけど ;)

TrackBack URL :

findJAR.com…これは便利かも

『jar を見つける – kameidの備忘録』を見て、うんうんワタシも「いっつもわからなくなる・・。」と…うなづいてしまった :)

で、そこで紹介されていた。

が便利そうなので、Mycroft Projectで探してみたらありました。と言うことで早速Firefoxの検索に登録しておきました。

TrackBack URL :

Java Plug-inの△!警告がウザイ件

Java 6u10でJava Plug-inが新しくなってから、少し気にはなっていたんですけど…何がって言うと下の画像にあるようにJWS(Java Web Start)やJava Appletのウィンドウの右上に表示される黄色の△!マークの警告です :|

JWSwarnning

信頼されないアプレットウィンドウが使用されていることを通知するためのセキュリティ警告なのですが…Java 6u10以前のバージョンでは、控えめに表示されていただけなのですが、Java 6u10以降は警告アイコンがウィンドウから飛び出てるわ黄色で目立つわで、表示されるとウザイことこの上ない :roll:

まぁ、Java SE 6 Update 10 リリースノートに以下のように明記されてるわけですが…。

Windows 上での署名されていない Java アプレットウィンドウの変更

Windows では、新しい最上位ウィンドウを開く署名されていないアプレットは以前、そのウィンドウが「Java アプレットウィンドウ」であることを識別するために、ウィンドウのいちばん下にステータスバナーを配置していました。6u10 では、そのバナーが、右上隅に配置された小さい三角形の警告アイコンに置き換えられました。そのアイコンの上にマウスポインタを置くと、「Java アプレットウィンドウ」というメッセージがツールヒントとして表示されます。

でも、セキュリティ警告なので簡単に設定などでは表示をオフできないのが難点です。あたり前なんですけど… :arrow:

結局、このウザッたい警告を消すにはJWSやAppletのJarファイルに署名して信頼できるものにするしかありません :cry:

仕方ないので、『テストのため、オレオレ証明書でjarに署名する方法 – 今日覚えたこと』を参考にして、署名したら確かにウザッたい警告は表示されなくなりました。

う~ん、昔AntのSignJarタスクとかを使って署名したりしてたんだけど…完全に記憶の彼方です。毎回、手作業で署名するのは面倒なので調べて思い出さなきゃ :|

あ、今回某マシンのJREをJava 6u11にアップデートしたのはアプレットの起動が速くなることを期待したためで…アプレットの作りにも依るようですが、ほとんど速くならないものもある一方、ものによっては初期画面がでるまでの時間が約半分に高速化されたケースもありました ;)

警告アイコンは、そのアップデートの副作用です。まぁ、アップデートする前はそんなことすっかり忘れてたんですけど :oops:

Ant第2版 Ant第2版
Steve Holzner 長瀬 嘉秀 テクノロジックアート

Apache Maven 2.0入門 Java・オープンソース・ビルドツール Jakarta Commons クックブック―Javaプロジェクト必須のレシピ集 Effective Java 第2版 (The Java Series) Tomcatハンドブック Java魂―プログラミングを極める匠の技
by G-Tools

追記 2009-02-04 23:50:03
Twitterでhiromasa師匠にJava SE 6 Update 12のリリースノートに以下のような記述があることを教えてもらったので…早速ダウンロードして確認してみました。

信頼できないアプリケーションのトップレベルウィンドウで使用されるセキュリティ警告が、以前のものより目立たないものに改善されました。

ところが…黄色が灰色になっただけ?かと思ったら、マウスがウィンドウに入った瞬間に黄色くなったり、ウィンドウが非アクティブでマウスが上にないと警告自体が消えたり。
目立たなくなったのか、目立つようになったのか、これは改善なのか…。

TrackBack URL :

Microsoft Small Basic v0.2…少し試してみた

もり ひろゆきの日々是勉強の「Microsoft Small Basic v0.2が公開されています。」で知りました :)

A simplified programming language and environment to help teach programming to beginners

と言うことで、シンプルでビギナーでも学習しやすいBASIC環境って感じですね。

ちなみにHello Worldは以下のような感じ ;)

TextWindow.WriteLine("Hello World")

起動してフラクタルのサンプルプログラムを読み込んでみたところです。

SimpleBasic1

実行してみました。あたりまえですが、確かにフラクタルが描かれますね。

SimpleBasic2

次にIntellisenseも以下のような感じでクルクルして面白いですね :)

SimpleBasic3

あと、グラフィックはTurtleで描くようですね~LOGOLOGO チックで個人的には嫌いではないです。言語仕様etc.詳しく見ていないのですが、遊びに使うには十分でしょう ;)

TrackBack URL :

JFreeChart…サンプルコードは有償だったのね

Java Appletでグラフを描くなら、色々な選択肢はあるけどJFreeChartが良いんじゃないかなぁ~昔、訊かれて答えた気がする。その時は自分が絡むなんて一切思わずに ;)

で、ちょっとした改造がしたいと…現状は折れ線グラフと棒グラフの2つのグラフを重ねてるところに、もう1本折れ線グラフを追加したいと。

以下のJFreeChartサンプルデモにあるMultipleAxisDemo1のグラフを1本減らして、1本を棒グラフに変えたようなイメージ。

JFreeChartSample

元もあるので、簡単簡単よく分からないけど…縦軸増やして、データセットを1本分増やして、折れ線のレンダラも増やして…って感じでアッという間にほぼ完了。

しかし、当然なんだけどデフォルトでは凡例が追加した順に表示されるので折れ線、棒、折れ線となって気持ちが悪い :|

でも、凡例の方だけで順番を入れ替えたいんだけど…参考になりそうなページが検索すると見つかるんだけど意図とは少し違う。結局、コッテリした実装になってしまったが…要点だけ晒してみる。

XYPlot plot = chart.getXYPlot();
…
LegendItemCollection legendItems = plot.getLegendItems();
LegendItemCollection setLegendItems = new LegendItemCollection();
 
setLegendItems.add(legendItems.get(0));
setLegendItems.add(legendItems.get(2)); // 2と1を入れ替え
setLegendItems.add(legendItems.get(1));
 
plot.setFixedLegendItems(setLegendItems);

他に良い方法があれば、教えていただけるとうれしいです ;)

しかし、JFreeChartのサンプルデモって充実してるなぁ~ソースみたいなぁ~と思ったら…有償なんですね知りませんでした :oops: このような戦略は嫌いじゃないですし、お世話になってるので積極的に買いたいくらい。

う~ん、個人で買う気までは起こらないんだよなぁ…でも、会社では買いにくい形態なんですよね~ダウンロード販売って :|

TrackBack URL :

JUDE 5.4正式リリース…サポート対象外のサンプル機能が面白い

「JUDE 5.4βリリース」で書いたように5.4での目玉はUML 2.0対応で、Professional、Communityともに5.4正式版がリリースされています ;)

でも、今回一番興味を持ったのは…サポート対象外とのことですが、以下の3つのサンプル機能がリリースされたこと。

  • C++リバースプログラム
    C++のソースコードからJUDEモデルを作成できます。本アプリケーションは、Doxygenというフリーソフトと併せて動作します。事前にDoxygenによってソースコードをパースして作成したXMLファイルを使用して作成します。
  • クラス図・ER図のメトリクス
    JUDEのプロジェクト内のクラス図、クラス、属性、操作やER図、エンティティ、リレーションシップ等の数や平均値を算出するメトリクスをCSV形式で出力します。
  • C#リバースプログラム
    JUDE APIを利用して、C#のソースコードからJUDEモデルを作成するサンプルプログラムです。Doxygenというフリーソフトを利用します。

これらのサンプルが動作するのはProfessional限定なんですよね~そろそろ会社で買ってもらう時期かなぁ :?

DoxygenはC++では愛用しているので、うまく行けばそのままリバースできるかも。でも、C#リバースでDoxygenてのはいただけないなぁ~やはり、標準のXMLコメントに対応してもらわないと :|

結構、CommunityとProfessional間の機能差が広がってきましたね。

JUDEで学ぶシステムデザイン JUDEで学ぶシステムデザイン
株式会社チェンジビジョン


by G-Tools

JUDEの公式ガイドブックもでるんですね ;)

TrackBack URL :

MFC Grid control…使い方メモ

『MFC Grid Control…使い方を忘れてる』と書いておきながら、一切使い方を書いていなかったので自分用メモ。

わけあってeVC++を使ったので、その手順だけど…他でも同じようなモノだろう。さらに言えば、この手順が正しいとも限らない :arrow:

  • MFC Grid controlソースデモプロジェクトに含まれるソース(こちらの方が良さそうです)を入手する(v2.25)
    自分のプロジェクト内にソースを取り込んでしまう。ちなみにGridCtrl_srcフォルダごとコピーしてガッとソースとヘッダーを取り込んじゃう。あと、GridCtrl_srcの中のExperimental Upgradesフォルダは今回は使ってないので無視。
  • ソース取り込んだら、とりあえずコンパイル
    エラーがなければよいけど…たぶん、『MFC Grid Control…使い方を忘れてる』に書いたところでエラーになるので、1行コメントアウト。
  • リソースエディタでグリッドコントロールを貼りたい場所にカスタムコントロールを貼り付ける
    カスタムコントロールのプロパティを開いてクラスにMFCGridCtrlを設定する。
  • カスタムコントロールを貼ったクラスにメンバー変数を追加する
    こんな感じのモノを追加、CGridCtrl m_Grid;可視性はよしなに。
  • 初期化部分に以下のようなコードを書けばグリッドコントロールが表示されてめでたしめでたし
    この例で『MFC Grid Control…使い方を忘れてる』の画面が表示される。
    m_Grid.EnableDragAndDrop(TRUE);
    m_Grid.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xE0));
 
    m_Grid.SetEditable(TRUE);
    m_Grid.SetRowResize(TRUE);
    m_Grid.SetCallbackFunc(NULL, 0);
    m_Grid.Refresh();
    m_Grid.SetListMode(TRUE);
 
    m_Grid.InsertColumn(_T("連番"));
    m_Grid.InsertColumn(_T("ID"));
    m_Grid.InsertColumn(_T("世代"));
    m_Grid.InsertColumn(_T("ダミー4"));
    m_Grid.InsertColumn(_T("ダミー5"));
    m_Grid.InsertColumn(_T("ダミー6"));
    m_Grid.InsertColumn(_T("ダミー7"));
    m_Grid.SetFixedColumnSelection(FALSE);
    m_Grid.SetFixedRowSelection(TRUE);
    m_Grid.EnableColumnHide();
    m_Grid.AutoSize();
    m_Grid.SetColumnWidth(0, 40);
    m_Grid.SetColumnWidth(1, 150);
    m_Grid.ExpandLastColumn();
    m_Grid.SetCompareFunction(CGridCtrl::pfnCellNumericCompare);
 
    TCHAR buffer[BUFSIZ];
    TCHAR buffer2[BUFSIZ];
    for (int i = 1; i < 30; i++) {
        wsprintf(buffer, _T("%d"), i);
        m_Grid.SetRowCount(i);
        m_Grid.InsertRow(buffer);
        wsprintf(buffer2, _T("日本語テスト(%d)"), i);
        m_Grid.SetItemText(i, 1, buffer2);
        m_Grid.SetItemText(i, 2, buffer);
        m_Grid.SetItemText(i, 3, buffer);
        m_Grid.SetItemText(i, 4, buffer);
        m_Grid.SetItemText(i, 5, buffer);
        m_Grid.SetItemText(i, 6, buffer);
    }
    m_Grid.SetFixedRowCount(1);
    m_Grid.SetFixedColumnCount(2);
 
    m_Grid.ShowWindow(SW_SHOW);

CGridCtrlクラスは機能豊富で、もっと色々なことができます。わたしには、とても使いこなせませんが :|

TrackBack URL :

JDK 6 Update 10正式リリース

Java SE DownloadsからJDK 6 Update 10正式版がダウンロードできるようになってます ;)

『首を長くして待ってるんだけどなぁ…Java SE 6 update10』で書いたように待ちに待っていたので…待ち人来るって感じです :!:

update 10が、ただのマイナーアップデートじゃないと言う日本語で解説されてるPDF文章を再掲しておこうっと…『Mediacast – Introduction of Java SE 6 update10』です。

j6u10

でも、このバージョンに揃えましょうって誰が顧客を説得するんだ :roll:

TrackBack URL :