ブログ

  • strings.xml の警告(Warning) – Android開発

    自作したAndroidアプリをメンテナンスしていて、
    リソースファイル(strings.xml)の中に警告が出ているのを見つけました。

    <string name="menu_pos">Position 1-3</string>
    

    例えば、上記のように文字列にハイフン “-” が含まれている場合など。
    警告のメッセージは次の通りです。

    Replace "-" with an "en dash" character (–, &#8211;) ?
    

    調べてみると、昨年(2011)11月頃に文法チェックのルールがいくつか追加された模様。
    New Lint Rules

    ということで、

    <string name="menu_pos">Position 1&#8211;3</string>
    

    このように修正しました。

  • LibreOffice Draw のフォント設定

    普段、設計書などドキュメントを書く場合に LibreOffice Draw を使っています。表がメインの場合は Calc のほうが便利ですが、文章と図(画像)がメインの場合は、セルの制約がなくてグリッドで簡単に位置決めができたり、コネクタの機能など Draw が好みです。

    で、Draw で文書を作成する場合に、デフォルトの文字サイズがプレゼンテーション用の 18pt となっていて設計書としては大きすぎ。この文字サイズを、テキスト枠を配置する際に毎回変更となると非常に手間がかかります。

    そこで、文書の標準のスタイルを編集します。

    「書式」->「スタイルと書式設定」を開くと、

    スタイルと書式設定

    次のウインドウが表示されますので「標準」を右クリックして「変更」を選択。

    スタイルと書式設定 – 変更

    すると「標準」スタイルの各種設定が表示されます。

    フォントサイズ

    「フォント」タブを開いて「西洋諸言語用フォント」および「アジア諸言語用フォント」のサイズを希望の数値に変更(例えば、18pt -> 12pt など)してOKをクリックします。

    これでテキスト枠を追加する際は変更したサイズで文字を書くことができます。ただし、新規にファイルを作成する場合は、やはりデフォルトの18ptになってしまいます。
    新規の場合も変更したフォントサイズで書きたい場合はテンプレートを編集します。

    まず、新規ファイル(Draw)を開きます。
    そして、先ほどの手順と同様に「スタイルと書式設定」を編集して標準のテキストのサイズを変更しておきます。

    次に、ドキュメントテンプレートを保存します。
    「ファイル」->「ドキュメントテンプレート」->「保存…」

    ドキュメントテンプレートの保存

    ドキュメントテンプレートのダイアログが表示されますので、「自分のテンプレート」を選んで MyTemplate など自分で名前をつけてOKボタンで保存します。

    自分のテンプレート

    これではテンプレートを保存しただけで、新規ファイルの作成時には適用されません。
    「標準のテンプレート」に設定するには次の操作が必要です。
    「ファイル」->「ドキュメントテンプレート」->「管理…」

    ドキュメントテンプレートの管理

    ドキュメントテンプレートの管理画面が開きますので、先ほど作成した「MyTemplate」を選んで「コマンド」メニューから「標準のテンプレートとして設定」を実行します。

    標準テンプレートとして設定

    これで、次回新規にDrawのファイルを開いた際に希望のフォントサイズで作業を始めることができます。

  • LibreOffice Calc で CSVファイルを扱う

    LibreOfficeのCalcでCSVを編集して保存する際に区切り文字や
    クオートが思うようにならない場合があったので調べてみました。

    サンプルのCSV(メモ帳)

    このような、カンマ区切り、ダブルクオートなしのテキストファイルを用意します。

    ファイルのアイコンをマウス右クリックでCalcから開きます。

    「テキストのインポート」のダイアログが表示されます。

    インポートするCSVのフォーマットに合わせて「区切りのオプション」を
    適宜変更します。
    今回はカンマ区切りでクオートなしなので「テキストの区切り記号」を
    空にしておきます。

    OKボタンでファイルを開くとCalcのスプレッドシートにCSVの
    内容が表示されます。

    スプレッドシートの内容を編集します。

    編集が完了したら上書き保存して一旦ファイルを閉じます。
    そしてメモ帳で開いてみます。

    問題なさそうです。

    では次にCSVを読み込む際のオプションを変えてみます。

    ここでは区切りのオプションを「タブ」、「コンマ」、
    そしてテキストの区切り記号を「”」(ダブルクオート)
    にしました。

    そして同様にCSVファイルを開いて適当に編集し、上書き保存します。

    ODF形式ではない場合の確認ダイアログが表示されました。

    「選択した書式を保持」で保存します。

    メモ帳で開いてみると、タブ区切りでテキスト項目が引用符(ダブルクオート)で
    囲まれています。

    ファイルを開く際の「区切りのオプション」の選び方によって
    保存する際のCSVのフォーマットが変わってしまうようです。

    ということで、CSVファイルを開く際の「区切りのオプション」を正しく
    選んでおくとよさそうです。
    それと、CSVファイルを開いたときの状態がわからない場合は、
    上書き保存ではなくて「名前を付けて保存」として、
    さらに「フィルタ設定を編集する」をチェックしておけば、

    保存時に「区切りのオプション」を調整することができます。

    参考)LibreOffice Help CSV ファイルのインポートとエクスポート

  • 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” を選んで、ダウンロードした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をダウンロードして展開します。
    gnuplot/binary というフォルダの中に
    wgnuplot.exe
    というプログラムがありますのでそれを起動。

    フォントの設定

    gnuplotウインドウに表示される文字が読みにくい場合はフォントを設定します。
    ウインドウ内でマウスを右クリックして「Choose Font…」を開く。

    gnuplot – Choose Font

    設定を保存

    フォントの種類やサイズを変更したら、設定内容を保存します。
    上記と同様に、ウインドウ内でマウスを右クリックして「Update … ***.ini」を選択。

    Update … *.ini

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

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

    男女別人口

    グラフを作成する範囲を選んで編集

    西暦と人口(数値)の必要な部分を選択して、ひとまず別のシートにコピー(貼り付け)
    不要な列を削除します。

    不要な列を削除

    セルのフォーマットを調整

    3桁ごとのカンマ区切りが邪魔になったりしますので、セルのフォーマットを変更して外しておきます。

    セルのフォーマット
    フォーマットの調整後

    CSV形式で保存

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

    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;

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

    Gnuplot window