achartengine で null を扱う – Android

Androidアプリでグラフを描画するツール achartengine
null値を扱う場合について調べてみました。

まずはデモソースを下記からダウンロード。

http://code.google.com/p/achartengine/downloads/list

※現時点で achartengine-0.7.0-demo-source.zip となっています。

これを、Eclipseのファイルメニューからインポート(import)します。
import

ここでは “Existing Projects into Workspace” を選んで “Next”

Select Archive File

“Select Archive File” を選んで、ダウンロードしたzipファイルを指定して
“Finish” でプロジェクトの登録が完了です。
次にソースの編集に移ります。
例として、”AverageTemperatureChart.java” を編集してみます。

Average Temparature Demo

ソースを開くと、66行目あたりに温度の値が並んでいます。
average source

試しに実行してみます。
まずメニューが表示されるので、上から2個目の “Average Temparature” を選択。

すると次のようなグラフが表示されます。

この動作確認ができたら、値を null にしてみます。
正確には、achartengine で用意されている MathHelper.NULL_VALUE を使います。
ドキュメント(javadoc)はこちら

ソースの温度の値(数値)を適当に MathHelper.NULL_VALUE に書き換えてみます。

NULL_VALUE

実行してみる。

null chart

このように、null値のところをスキップしたチャートが表示されます。
ちなみに、NULL_VALUEの中身は 1.7976931348623157E308 という値なので
グラフの表示範囲(min, max)をY軸の値で自動計算する場合などは注意が必要です。

proguard.cfg のエラーでリリースができない – Android

Androidマーケットに公開しているアプリをメンテナンスしていて、
いざリリースしようとしたところでエラーが発生しました。

ソースを確認すると次のようなエラーメッセージが…

Obsolete proguard file; use -keepclasseswithmembers
 instead of -keepclasseswithmembernames

プロジェクト内の proguard.cfg というファイルにエラーがあるので
そのままではリリースできず。
メッセージにしたがって、
-keepclasseswithmembernames
となっている部分を
-keepclasseswithmembers
に修正して Run Android Lint を実行。

エラーがなくなりました。復旧。
ということでパッケージを作成してリリース。

以上です。

画像をリンクにする – WordPress

WordPressのページ編集において、画像を追加してそれを他のページへのリンクにしたい場合。

新規に画像を設置して他のページへのリンクにする場合

  • 「アップロード/挿入」をクリックして画像をアップロード
  • リンクURLを編集して「投稿に挿入」をクリック。
  • プレビューで確認して保存(完了)

設置済みの画像を他のページへのリンクにする場合

  • 編集画面でイメージタグを選択して「link」をクリック
  • URLを入力し、タイトルなど適宜編集して「Add Link」をクリック
  • プレビューで確認して保存(完了)

CTUを経由してリモートデスクトップ接続

以下、デフォルトのポート番号をそのまま利用した接続の手順です。
実際の運用では接続ポートを変更するなどセキュリティ面に配慮してください。

利用環境

  • クライアント側(接続元)
    WindowsXP(sp3) Home
  • サービス側(接続先)
    Windows7 Professional

クライアント側の準備

WindowsXP Homeの場合、デフォルトではネットワークレベル認証(NLA)を利用することができません。そこで、Microsoftの記事に沿って NLA を有効にしておきます。
Windows XP Service Pack 3 での資格情報のセキュリティ サポート プロバイダー (CredSSP) の説明
レジストリを編集します。(regeditを起動)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

を開いて Security Packages をマウス右クリックで修正。
Security Packages
“tspkg” を追加します。

さらに、

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders

を開いて SecurityProviders をマウス右クリックで修正。
SecurityProviders
“credssp.dll” を追加します。

そして再起動し「ネットワークレベル認証」がサポートされていることを確認します。

CTUの設定

サービス側のPCをローカルの固定アドレスにするため、
DHCPでの払い出しアドレスを固定アドレスとぶつからないようにしておきます。
※あるいはサービス側PCのMACアドレスに対して固定IPアドレスを設定することも可能です。

例)CTUの設定画面 -> 詳細設定 -> DHCPv4サーバ設定

次に、IPマスカレードの設定
例)CTUの設定画面 -> 詳細設定 -> 静的IPマスカレード設定
サービス側PCのIPアドレスを “192.168.1.10″ に固定した場合。
ポート番号はデフォルトのまま。

サービス側PCの設定

システムのプロパティを開き、リモートの設定を変更します。
※必要に応じて接続を許可するユーザを追加するなど。

接続してみる

以上の準備ができたらクライアント側でリモートデスクトップ接続を
起動して接続してみます。

このときの接続先のIPアドレス(WAN側IPアドレス)は
CTUの設定画面(情報 -> 現在の状態)などで確認します。

gnuplotのデータプロットで日付を扱う場合

gnuplotのグラフ出力において横軸を日付にしたい場合で、
しかも日付データが都合の良い形式になっておらず
ある程度編集が必要な場合を想定しています。
ここでは日付を “2011/01/01″ のようにスラッシュ区切り、
0埋めの形式にしてみます。

例えば日付データが次のような場合

年、月、日がそれぞれ数値として別々のセルに入っている。
※値1、値2はrand()関数で適当な値を並べています。

後の編集の都合により列を挿入しておきます。

空白のセル(D2)に次の式を書きます。

=TEXT(A2,"0000") & "/" & TEXT(B2, "00") & "/" & TEXT(C2, "00")

実際の画面はこのようになります。(LibreOffice Calcの例)

セルの内容が期待通り “2011/01/01″ と表示されたらオートフィル機能により
必要なところまでドラッグします。

挿入した列に期待通りの日付がセットされたら、値の列も含めて
必要な範囲を選択してコピーします。

そして新しいシートを選択して「形式を指定して貼り付け」
テキストと数のみにして貼り付けます。

「名前を付けて保存」します。このときファイルの種類を「テキスト CSV」とします。
※Excelの場合は CSV(カンマ区切り)です。適宜読み替えてください。

これでCSVデータが準備できたので、gnuplotにうつります。
wgnuplotを起動
CSVデータを保存したフォルダへ移動します。
例えば、CSVデータをマイドキュメント内の gnuplot というフォルダに保存した場合。

gnuplot> cd "C:/Users/(ユーザ名)/Documents/gnuplot"

X軸を日付(time)にセットします。

gnuplot> set xdata time
数値形式(numerical)に戻す場合は、
gnuplot> unset xdata
または
gnuplot> set xdata

日付形式をセットします。

gnuplot> set timefmt "%Y/%m/%d"

オプションの詳細はオンラインドキュメントの
“Time/Date data”
の章を参照してください。

http://www.gnuplot.info/documentation.html

PDF形式で日本語のドキュメントも用意されているようです。
次にセパレータをカンマ区切りにセットします。

gnuplot> set datafile separator ","

ここまでの作業でプロットの準備ができましたので、
ためしにプロットしてみます。

gnuplot> plot "datafile.csv" using 1:2 with linespoints;


期待通りのグラフが画面に表示できたらこれを画像ファイルに保存します。

現在の出力形式は、
gnuplot> show terminal
で確認できます。
png形式で出力する場合は、
gnuplot> set terminal png
ちなみに、対応している出力形式の一覧は、
gnuplot> set terminal

そして、保存先のファイル名を指定します。

gnuplot> set output "dataplot.png"

これでプロットを実行すれば、出力結果がpng形式で”dataplot.png”に保存されます。

gnuplot> plot "datafile.csv" using 1:2 with linespoints;

このままだと出力先のファイルがロックされたままになりますので、
プロットを実行した後は、出力先を元に戻しておきます。

gnuplot> set terminal wxt
gnuplot> set output

Chromeで文字化け – Windows7

昨年の記事「WordPressのダッシュボードで文字化け」に関連して、Windows7でも同様の文字化けがありました。
今回はWordPressとは関係なく、あるイベントの登録フォームに入力していて文字化けが発生。
スタイルを確認すると次のようになっています。

font: normal 1em Verdana, 'Trebuchet MS', Tahoma, sans-serif;

ちなみに[CTRL]+マウススクロールで画面のフォントサイズを変えてみると
文字化けが解消。特定の文字サイズのみ □ (白抜き四角)で表示される状況です。

そこで昨年のWinXPのときと同様にフォントをカスタマイズしてみました。
※Chromeのデバッグ機能(文字化けしている部分でマウスを右クリックして「要素を検証」)
今回は “Verdana” を削除したところで文字化けが解消されたので、
C:\Windows\Fonts フォルダを開いて “Verdana” をマウス右クリックで
「非表示」に設定して再起動。

これで文字化けが解消された模様です。
【追記】[2012.01.23]
… と思ったのですが、再度文字化けが発生。

フォントの設定で非表示にしてもアプリケーション側が対応していないと表示されるようです。
Windows 7 で非表示に設定したフォントが表示される

やはりフォントを削除する必要があります。
まず、削除するフォントを念のため他のフォルダあるいは他の媒体にバックアップしておきます。
それからフォントの削除。

コントロール パネル\デスクトップのカスタマイズ\フォント

を開いて “Verdana” をマウス右クリックで削除。(\Windows\Fontsフォルダからでも同様)

このようにエラーが発生して削除できません。
Chromeが “Verdana” を使用中ということですね。
Chrome を一旦終了すると “Verdana” を削除することができました。

gnuplot でデータをプロットしてみる

gnuplotを使って、総務省の統計データ(人口推計)をグラフにしてみます。

gnuplotを準備

gnuplotのウェブサイトから
gnuplotをダウンロードして展開します。
gnuplot/binary というフォルダの中に
wgnuplot.exe
というプログラムがありますのでそれを起動。

  • フォントの設定
    gnuplotウインドウに表示される文字が読みにくい場合はフォントを設定します。
    ウインドウ内でマウスを右クリックして「Choose Font…」を開く。
  • 設定を保存
    フォントの種類やサイズを変更したら、設定内容を保存します。
    上記と同様に、ウインドウ内でマウスを右クリックして「Update … ***.ini」を選択。

データファイル(CSV形式)を準備

総務省統計局のウェブサイトからデータ(Excel形式)をダウンロードします。

  • グラフを作成する範囲を選んで編集
    西暦と人口(数値)の必要な部分を選択して、ひとまず別のシートにコピー(貼り付け)
    不要な列を削除します。
  • セルのフォーマットを調整
    3桁ごとのカンマ区切りが邪魔になったりしますので、セルのフォーマットを変更して外しておきます。

    フォーマットの調整後
  • CSV形式で保存
    データが整ったらCSV形式で保存します。
    画面はLibreOffice Calcの例です。Excelの場合も同様にCSV形式で保存します。

データをプロット

準備が整いましたのでデータファイルを使ってプロットします。
gnuplot(wgnuplot.exe)の画面に戻ります。
gnuplotのプロンプトでデータファイル(CSV形式)を保存したフォルダに移動します。

gnuplot> cd "/users/(ユーザ名)/documents/gnuplot"
※(ユーザ名)は適宜読み替えてください。

セパレータを変更します。
デフォルトでは空白(whitespace)になっていますので、カンマに切り換えます。

gnuplot> set datafile separator ","

カンマに切り換えないと

 warning: Skipping data file with no valid points
 x range is invalid

のようなエラーメッセージが表示されます。
デフォルト(空白区切り)に戻す場合は、

gnuplot> set datafile separator whitespace
または
gnuplot> set datafile separator

と入力します。その他に、

タブ区切り
gnuplot> set datafile separator "\t"
または他の区切り文字を指定する場合
gnuplot> set datafile separator "(区切り文字)"

そしてプロットを実行します。
1列目をx軸に、2列目をy軸にする場合。

gnuplot> plot "datafile.csv" using 1:2 with linespoints;

1列目をx軸に、3列目と4列目をy軸にする場合。

gnuplot> plot "datafile.csv" using 1:3 with linespoints, "datafile.csv" using 1:4 with linespoints;

これで次のようなグラフが出来上がります。

画面のコピー – Windows7

Windows7で画面のコピー(スクリーンショット)を取る方法。

  • キーボードによるコピー
    従来のWindowsと同様に、[Print Screen]ボタンを押すと
    画面全体がクリップボードにコピーされます。
    [Alt]を押しながら[Print Screen]を押すと
    一番手前のウインドウ(アクティブウインドウ)のみが
    クリップボードにコピーされます。
    あとはWordやExcelに貼り付けたり、ペイントで編集したりします。
  • Snipping Toolによるコピー
    「スタート」メニューから
    「すべてのプログラム」->「アクセサリ」->「Snipping Tool」を開きます。

    そのままコピーしたい領域(四角形)をマウスで指定します。
    または「新規作成」の右側にある「▼」をクリックして切り取り方法を
    選びます。

    必要に応じて「ツール」メニューから蛍光ペンを選ぶなどして
    編集します。