17 Dec 2014, 16:20

Java で log4j の使ってみた (Eclipse, Emacs Viewerも)

はじめに

仕事で log4j を利用しているので, Eclipse での使い方を少し調べてみた.

環境

  • log4j 2.3
  • Eclipse 4.4
  • Java 1.7

log4j とは

Java で, ログを残すための便利で有名なライブラリ.

install

以下から最新版をダウンロード.

設定

適当なところに解凍後, クラスパスを通す.

Eclipse だと,

  • ツールバー > ウィンドウ > 設定
  • Java > ビルド・パス > ユーザライブラリ
  • 新規 -> Log4j と入力
  • 外部 Jar 追加 を選択
    • 以下を登録
      • log4j-core-2.x.jar
      • log4j-api-2.x.jar
      • log4j-1.x-api-2.x.jar

続いて, プロジェクトを右クリックして,

  • プロバティ > Java ビルド・パス > ライブラリータブ
  • ライブラリー追加 > ユーザライブラリ > 次へ
  • 上で作成した Log4j を追加.

Hello log4j

標準出力に log を出すことを目指す.

log4j2.xml を作成.

以下を参考に logger.xml を作成して, src 配下に配置.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

<Root level=“xxxx”>を調整することで, ログレベルを調整できる.

ログレベル

Wikipedia から引用. 以下のようにログのレベルがある.


Fatal 致命的なエラー. プログラムの異常終了 ERROR エラー. 予期しないその他の実行時エラー WARN 警告. INFO 情報. 実行時の何らかの注目すべき事象 DEBUG デバッグ用の情報 Trace トレース情報. DEBUG よりも詳細な情報


コードを作成

サンプルコード作成.

package sample;
import org.apache.log4j.Logger;

public class LoggerSample {
        public static void main (String[] args) {
        Logger logger = Logger.getLogger (LoggerSample.class.getName ());

        logger.trace ("Hello trace");
        logger.debug ("Hello debug");
        logger.info ("Hello info");
        logger.warn ("Hello warning");
        logger.error ("Hello error");
        logger.fatal ("Hello fatal");
    }

出力結果

23:57:03.111 [main] TRACE sample.LoggerSample - Hello trace
23:57:03.112 [main] DEBUG sample.LoggerSample - Hello debug
23:57:03.112 [main] INFO  sample.LoggerSample - Hello info
23:57:03.112 [main] WARN  sample.LoggerSample - Hello warning
23:57:03.112 [main] ERROR sample.LoggerSample - Hello error
23:57:03.112 [main] FATAL sample.LoggerSample - Hello fatal

Eclipse Plugin

Eclipse で log4j のログを表示させるプラグインはいくつかあるみたい.

JLV

JLV を試す. ためそうと思ったらこれは, log4j 1.x 用だったので, 1.x を入れる.

以下にしたがって設定.

カラフルに色が表示される. 検索機能も便利.

Emacs Lisp

こんなのみつけた.

text におとした log をみるモード. 自動で更新されるのもよい.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >

  <appender name="file" class="org.apache.log4j.FileAppender">
     <param name="File" value="./sample.log" />
     <param name="Append" value="true" />
     <param name="Encoding" value="Shift_JIS" />
     <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n" />
     </layout>
  </appender>

  <root>
    <appender-ref ref="file"/>
  </root>
</log4j:configuration>

helm-swoop とかとくみあわせると, 抜群の検索効果.

JTags と組み合わせると, なんと Log からソースへジャンプできる.

BookMark

18 May 2014, 10:47

Eclim で Emacs と Eclipse のいいとこどり!Emacs で Java 開発環境を構築した (副題 打倒 Eclipse!)

[toc]

はじめに

よし, 認めよう. 私は, Eclipse フリークだった.

Eclipse ですべての開発環境の統合を夢見て, あらゆるプラグインを試した.

全 C/C++ プログラマに捧ぐ!Eclipse CDT を使う時のオススメ機能/ プラグインまとめ | Futurismo

歳をとるにつれて, 若かりし誤った考えを改めた. 真の統合開発環境は Emacs なのでは?

いや, うすうすは気づいている. Java 開発では Eclipse が最強なことくらい.

しかし, それを分かっていてあえて Emacs を使うことは美しい行為ではないか?

それは, 死を覚悟して決戦に挑む武士のように.

この記事は, そんな不安と挑戦の記録です.

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      Linux Mint 16
    </li>
    <li>
      Eclipe 4.3 Kepler
    </li>
    <li>
      Emacs 24
    </li>
  </ul>
</div>

Java 開発環境について

まずは, Emacs における Java 開発環境を調べた.

以下の 3 つが選択肢としてある. 詳細な解説はリンク先に譲る.

JDEE

<div class="outline-text-3" id="text-2-1">
  CEDET ベースのツール. あまりメンテナンスされていないようだ.</p> 

  <ul class="org-ul">
    <li>
      <a href="http://mikio.github.io/article/2012/12/23_emacsjdeejava.html">Emacs 中毒者に贈る JDEE による Java 開発環境の構築|ざる魂</a>
    </li>
    <li>
      <a href="http://epian-wiki.appspot.com/wiki/Emacs/JDEEEmacs/JDEE%20-%20epian-wiki">http://epian-wiki.appspot.com/wiki/Emacs/JDEEEmacs/JDEE%20-%20epian-wiki</a>
    </li>
    <li>
      <a href="http://www.emacswiki.org/emacs/JavaDevelopmentEnvironment">EmacsWiki: Java Development Environment</a>
    </li>
  </ul>
</div>

malabar-mode

<div class="outline-text-3" id="text-2-2">
  JDEE にかわってでてきたモダンな java のメジャーモード.</p> 

  <ul class="org-ul">
    <li>
      <a href="http://d.hatena.ne.jp/nekop/20101215/1292380225">Emacs で Java を書く &#8211; nekop の日記</a>
    </li>
    <li>
      <a href="http://d.hatena.ne.jp/lranran123/20130404/1365088550">Emacs で Java の環境構築, CEDET と yasnippet と malabar-mode &#8211; 趣味プログラマがまれになんかしたことの記録</a>
    </li>
  </ul>
</div>

Eclim

<div class="outline-text-3" id="text-2-3">
  Emacs から Eclipse をつかう. その発想があったか!</p> 

  <ul class="org-ul">
    <li>
      <a href="http://sleepboy-zzz.blogspot.jp/2014/02/emacsjava_22.html">memo: Emacs で Java の設定</a>
    </li>
    <li>
      <a href="http://d.hatena.ne.jp/clairvy/20100630/1277854580">Emacs-Eclim を試す &#8211; クラなんとか or くらなんとか or cla なんとかの日記</a>
    </li>
  </ul>
</div>

選定する

<div class="outline-text-3" id="text-2-4">
  <p>
    選ぶに当たって重視する機能は,
  </p>

  <ul class="org-ul">
    <li>
      JUnit 連携機能
    </li>
    <li>
      リファクタリング
    </li>
    <li>
      コード補完・タグジャンプ
    </li>
    <li>
      Android 開発連携
    </li>
  </ul>

  <p>
    malabar-mode に挑戦したが, maven がよくわからずに挫折.
  </p>

  <p>
    なので, eclim を試す.
  </p>
</div>

開発環境を整える

eclim

<div class="outline-text-3" id="text-3-1">
  インストーラがあるので, 指示にしたがって入れればよい.</p> 

  <ul class="org-ul">
    <li>
      <a href="http://eclim.org/install.html">Download / Install &#8211; eclim (eclipse + vim)</a>
    </li>
  </ul>
</div>

eclim-emacs

<div class="outline-text-3" id="text-3-2">
  emacs から利用するためには, eclim-emacs を入れる.</p> 

  <ul class="org-ul">
    <li>
      <a href="https://github.com/senny/emacs-eclim">senny/emacs-eclim</a>
    </li>
  </ul>
</div>

使い方

設定ファイルに以下を追記.

[sourcecode language=”emacs-lisp” title=””]
(require ‘eclim)
(require ‘eclimd)

;; java-mode で有効
(add-hook ‘java-mode-hook ‘eclim-mode)
[/sourcecode]

M-x start-eclimd で eclipse を eclim デーモンとして起動.

M-x eclim-project-mode で workspace にあるプロジェクト一覧が表示される.

適当にソースを選んでごにょごにょ. 詳しくは, README 参照. まだ, あんまりいじくりまわしていない.

M-x stop-eclimd で eclipse を eclim デーモンを終了.

このページがとても詳しいのでリンクをはっておきます.

[[http://www.skybert.net/emacs/java/][.:: skybert.net :: emacs
java ::.]]

auto-complete/company-mode で自動補完

<div class="outline-text-3" id="text-4-1">
  <p>
    auto-complete/company-mode で eclipse の補完機能と連携できる.
  </p>

  <p>
    [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> ;; regular auto-complete initialization<br /> (require &#8216;auto-complete-config)<br /> (ac-config-default)<br /> ;; add the emacs-eclim source<br /> (require &#8216;ac-emacs-eclim-source)<br /> (ac-emacs-eclim-config)
  </p>

  <p>
    ;; for company-mode<br /> ;; (require &#8216;company-emacs-eclim)<br /> ;; (company-emacs-eclim-setup)<br /> [/sourcecode]
  </p>
</div>

タグジャンプ

<div class="outline-text-3" id="text-4-2">
  <p>
    &#8216;eclim-java-find-references で定義元にジャンプできる. しかし, gtags をしてもいい.
  </p>

  <p>
    [sourcecode language=&#8221;elisp&#8221; title=&#8221;&#8221;]<br /> (define-key eclim-mode-map (kbd "C-c C-e l") &#8216;eclim-java-find-references)<br /> [/sourcecode]
  </p>
</div>

Program 起動

<div class="outline-text-3" id="text-4-3">
  <p>
    org.eclim.java.run.mainclass にメインクラスを設定.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://eclim.org/vim/java/java.html">Java / Jps &#8211; eclim (eclipse + vim)</a>
    </li>
    <li>
      <a href="http://eclim.org/vim/settings.html">Settings &#8211; eclim (eclipse + vim)</a>
    </li>
    <li>
      <a href="http://stackoverflow.com/questions/7394811/eclim-what-to-set-org-eclim-java-run-mainclass-to">vim &#8211; Eclim &#8211; What to set org.eclim.java.run.mainclass to? &#8211; Stack Overflow</a>
    </li>
  </ul>

  <p>
    設定方法は, .settings/org.eclim.prefs というファイルを作成して,以下を書き込む
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221;]<br /> org.eclim.java.run.mainclass=<Class Name><br /> [/sourcecode]
  </p>

  <p>
    しかし, これだけでは動作しなかった. main メソッドの場所で eclim-run-class を実行すると, ようやく eclim 経由で java program が起動.
  </p>

  <p>
    起動は, eclim の機能を利用するのではなくて, 別のビルドツールを利用したほうがいいな.
  </p>
</div>

JUnit を動かす

<div class="outline-text-3" id="text-4-4">
  <p>
    これで JUnit が動いた. これはいいな.
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://groups.google.com/forum/#!topic/emacs-eclim/Bj0kyZ2mUSk">https://groups.google.com/forum/#!topic/emacs-eclim/Bj0kyZ2mUSk</a>
    </li>
  </ul>

  <p>
    [sourcecode language=&#8221;elisp&#8221; title=&#8221;&#8221;]<br /> (defun eclim-run-test ()<br /> (interactive)<br /> (if (not (string= major-mode "java-mode"))<br /> (message "Sorry cannot run current buffer."))<br /> (compile (concat eclim-executable " -command java_junit -p " eclim&#8211;project-name " -t " (eclim-package-and-class))))<br /> [/sourcecode]
  </p>
</div>

最後に

使いこなすには, 時間がかかりそうな.

今は, まだ eclipse のほうがいいと思っている. いや, 負けるな Emacs!

.emacs の設定

<div class="outline-text-3" id="text-5-1">
  <p>
    最後に設定を張り付けておく.
  </p>

  <p>
    [sourcecode language=&#8221;emacs-lisp&#8221; title=&#8221;&#8221;]<br /> (require &#8216;eclim)
  </p>

  <p>
    ;; java-mode で有効<br /> (add-hook &#8216;java-mode-hook &#8216;eclim-mode)
  </p>

  <p>
    ;; eclim daemon<br /> (require &#8216;eclimd)
  </p>

  <p>
    ;; regular auto-complete initialization<br /> (require &#8216;auto-complete-config)<br /> (ac-config-default)<br /> ;; add the emacs-eclim source<br /> (require &#8216;ac-emacs-eclim-source)<br /> (ac-emacs-eclim-config)
  </p>

  <p>
    ;; for company-mode<br /> ;; (require &#8216;company-emacs-eclim)<br /> ;; (company-emacs-eclim-setup)
  </p>

  <p>
    ;; Displaying compilation error messages in the echo area<br /> (setq help-at-pt-display-when-idle t)<br /> (setq help-at-pt-timer-delay 0.1)<br /> (help-at-pt-set-timer)
  </p>

  <p>
    ;; add keybinds<br /> (define-key eclim-mode-map (kbd "C-c C-e p q") &#8216;eclim-problems)<br /> (define-key eclim-mode-map (kbd "C-c C-e p o") &#8216;eclim-problems-open)<br /> (define-key eclim-mode-map (kbd "C-c C-e p n") &#8216;eclim-problems-next)<br /> (define-key eclim-mode-map (kbd "C-c C-e p p") &#8216;eclim-problems-previous)<br /> ;; Re-map `eclim-project-create&#8217; to C so that I can use c for<br /> ;; `eclim-problems-correct&#8217;<br /> (define-key eclim-mode-map (kbd "C-c C-e p C") &#8216;eclim-project-create)<br /> (define-key eclim-mode-map (kbd "C-c C-e p c") &#8216;eclim-problems-correct)<br /> (define-key eclim-mode-map (kbd "M-.") &#8216;eclim-java-find-declaration)<br /> ;; find-references = list-callers.<br /> (define-key eclim-mode-map (kbd "C-c C-e l") &#8216;eclim-java-find-references)
  </p>

  <p>
    ;; skip warning error<br /> (setq compilation-skip-threshold 2)
  </p>

  <p>
    (setq eclim-eclipse-dirs "/opt/eclipse/kepler")<br /> (setq eclim-executable "/opt/eclipse/kepler/eclim")<br /> (setq eclimd-executable "/opt/eclipse/kepler/eclimd")<br /> (setq eclimd-default-workspace "/mnt/win/src/coursera")<br /> [/sourcecode]
  </p>
</div>

14 Jan 2014, 15:47

月夜に輝く滴の如き美しさ!黒背景とカラフルなEclipseプラグイン Moonrise UI Themeに一目惚れ

Eclipse Moonrise UI ThemeいうEclipseを黒背景にするプラグインに惚れ惚れしたので紹介します。

Environment

  • Eclipse 4.3 Kepler

インストール

Eclipseマーケットプレースからインストールする。

ヘルプ > Eclipseマーケットプレースを選択する。検索窓から以下を検索してインストール。

  • Eclipse Moonrise UI Theme
  • Eclipse 4 Chrome Theme

Moonrise UI Themeが今回紹介するメインプラグイン、Chrome Themeは Moon Themeを綺麗に表示するためのプラグイン(Option)

設定

テーマの設定

ツールバーの ウィンドウ > 設定 > 一般 > 外観を選択。

  • Moonrise(Standalone)
  • Moonrise

の2種類がある。Chrome Themeを入れている場合は、Moonriseを選択。

色テーマの設定(Rainbow Drops)

エディタ部分のデザインもムーンライトにふさわしい高貴なものに変更にします。

オススメされているのが、Rainbow Dropsというテーマ。以下から Eclipse Color Theme (XML)を選択してダウンロード。

ツールバーの ウィンドウ > 設定 > 一般 > 外観 > 色テーマを開き、インボートを選択。さっきダウンロードしたテーマを選択する。すると、選択欄に Rainbow Dropsが現れるので、選択し、適用。

調整

コンテンツアシストの色を変更します。

ツールバーの ウィンドウ > 設定 > 一般 > 外観 > 色とフォントを選択。基本の配下にある以下の2つの色を変更。

  • コンテンツアシスト前景色: #DDDDDD
  • コンテンツアシスト背景色: #333333

コンソールの色を変更します。ツールバーの ウィンドウ > 設定 > 実行とデバッグ > コンソールを選択。以下の2つの色を変更。

  • 標準出力のテキストの色: #DDDDDD
  • 背景色 : #333333

導入結果

Elegant!!

感想

以前、黒背景にするための プラグイン Eclipse Juno Darkを紹介しました。

Juno Darkはやや淡さと暗さがあり、Moonriseは色のコントラストが強く明るいです。

個人的には、Moonriseの方が好きだ!

ああ、Moonrise…あなたは月夜に輝く滴の如く、美しい。

02 Jan 2014, 07:29

Linux Mintインストール後の設定メモ

前回、Linux Mintをインストールしたので、今回はその後の設定についてまとめます。

日本語入力環境の構築

デフォルトでは日本語がまず入力できません。なので日本語を入力できるようにします。

ソフトウェアを取得するリポジトリの変更と更新

日本国民ならば、パッケージを取得するための公式リポジトリは日本のミラーサイトに設定するべき。設定のソフトウェアソースを開き、公式リポジトリのミラーサイトを日本の国旗がかかれているものに変更。

http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages/ 
http://ftp.riken.jp/pub/Linux/ubuntu/

ソフトウェアを更新する。

$ sudo apt-get update

ディレクトリ名の英語表記

ホーム配下にあるディレクトリ(ピクチャやドキュメントなど)は日本語表記だが、コマンドラインとの相性を考えると英語の方がよいので変更する。

$ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

WorkSpace数の変更

WorkSpace数はデフォルトで2つだけれども、4つに変更する。

$ gsettings set org.cinnamon number-workspaces 4

テーマと背景を変更する

テーマや背景は趣味で変更。

メニューの色も変更してみる。gtk-theme-configというツールをつかう。

$ sudo apt-get install gtk-theme-config

インストールしたらメニューから Theme Configurationを選択。

Emacsを利用すると、256色つかえなかった。環境変数に以下を設定する必要がある。

$ export TERM=xterm-256color

 

フォントの変更

デフォルトフォントは、Sansというフォント。これをプログラミングフォント、Rictyに変更する。

Windows(NTFS)ファイルシステムをマウントする

Linux側からWindowsのドライブをマウントすれば、Linux側からもWindowsのファイルが利用できて便利です。以下にまとめました。

ディスプレイ明るさの調整

ノートPCなので、バッテリーを利用しているときは、ディスプレイの明るさを落として電力を節約したい。xbacklightdをインストールする。

sudo apt-get install xbacklight

調整は以下のコマンドで実施。setの後ろの数字で調整。

xbacklight -set 80

Applications

各種アプリケーションを入れます。

zsh

端末のシェルをzshにします。

$ sudo apt-get install zsh
$ chsh

git

Gitをインストール

$ sudo apt-get install git

続けて、githubと連携。以下のエントリも参照。

githubで管理しているdotfilesを落としてきます。

Ruby

rbenvを利用してインストール

git clone git://github.com/sstephenson/rbenv.git ~.rbenv
mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git
rbenv install 2.1.0
rbenv global 2.1.0 
rbenv rehash

エラーした。

configure: error: in `/tmp/ruby-build.20140102130128.5783/ruby-2.1.0':
configure: error: C compiler cannot create executables

この方法を試すとうまくいった Home · sstephenson/ruby-build Wiki

apt-get install build-essential autoconf libssl-dev libyaml-dev libreadline6 libreadline6-dev zlib1g zlib1g-dev
CC=/usr/bin/gcc rbenv install 2.1.0

Eclipse

この記事がとても参孝になりました。ありがとうございます

Linux版のEclipseを公式サイトからインストールします。/opt/eclipse配下に展開。以下で起動確認。

% /opt/eclipse/eclipse

起動できたら、日本語化します。Pleadesプロジェクトから日本語に必要なファイルをダウンロードして、feature,pluginsに上書き。

eclipse.intの最後に以下を追加

-javaagent:/opt/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

Eclipse環境の引越し方法はEclipse年次バージョンアップ時の移行方法について調べたを参考。

Wine

Windowsから引っ越してきたならば、必須のツール。なんとWindowsアプリがLinuxで利用できるのだ!Cygwinみたいなもの。

$HOME/.wine配下にCドライブのようなものができて、そこにアプリがインストールされる。

Evernote

Wineを利用して、Evernote for windowsをインストール!Winowsのホームディレクトリ/AppDate/Local/Evernote/EvernoteにEvernoteのデータがあるため、ここにシンボリックリンクをはることで、LinuxとWindowsでデータを共用。

その他、趣味に合わせてツールをドンドン導入。

  • Google Chrome
  • freemind
  • Emacs

07 Dec 2013, 13:23

Eclipse ADTでつくるAndroidエミュレータ開発環境構築メモ(Windows)

Courseraを通じて、Android開発を勉強しようと思います。

講義では、Android SDKをEclipse込でまるごとダウンロードしてくる方法が紹介されている。

Disk容量が残り8GBしかない自分には、チョット無理ゲーなので、既存のEclipse環境にAndroid SDKをインストールする方法を調べてみた。

Android SDK開発環境の構築作業で自分がやった手順を作業メモメモφ(..)

[toc]

環境

  • Windows 7 64bit
  • Eclipse 4.3 kepler
  • JDK 7

Android SDKとは

Android SDKとは、Android Software Development Kitの略。

Android開発をするためのAPIライブラリやら、その他開発に必要なものがセットになったもの

Eclipseのインストール

なにはともあり、Eclipse All in One Projectから 日本語EclipseJDK環境をまるごと落としてくれる。自分はすでにインストール済みなので、詳細は省略。

JDK 7のインストール

Java開発環境(JDK)をインストールする。現時点(2013)では、Android SDKは、JDK 6を推奨しているよう。ネットの情報では、JDK7 も動作するよう。

以前、JDK7のインストール方法を記事にしているので、基本的にはここを参照。

Android SDKのインストール

まずは、Android SDKのダウンロードページに行く。

青い大きなボタンを押してしまうと、Eclipse込のダウンロードとなるため、下

のほうにある、DOWNLOAD FOR OTHER PLATFORMSを選択。そして、SDK Tools Onlyのしたにあるzipファイル、

  • android-sdk_r22.3-windows.zip

をダウンロード。インストーラ版installer_r22.3-windows.exeもあるけれども、Eclipseからだと、zip版でよい。

ダウンロードが完了したら、適当な場所へ解凍。ここでは以下へ。

C:\android-sdk\android-sdk-windows

Eclipse ADTのインストール

EclipseでAndroid開発を実施するためには、Eclipse Android開発ツール(ADT)のプラグインをインストールする必要がある。

Eclipseのツールバーから

  • ヘルプ > Eclipse マーケットプレイス

を選択。検索欄から、ADT、と入力。Android開発ツールが現れるので、インストール。

SDKマネージャーの操作

Eclipseを再起動すると、先ほどインストールしたSDKのパスを聞いてくるので、入力する。

続いて、SDKマネージャーの起動を要求してくれる。

SDKマネージャーで、追加のSDKをダウンロードする。デフォルトで、アップデートやインストールが必要なものにはチェックがはいる。ここでは、講義に従って、以下をインストール(すでにインストール済みのものも列挙)

  • Tools

    • Android SDK Tools
    • Android SDK Platform-tools
    • Android SDK Build-tools
  • Android 4.3

    • SDK Platform
    • ARM EABI v7a System Image
    • Intel x86 Atom System Image
  • Android 2.3.3

    • SDK Platform
    • Intel x86 Atom System Image
  • Extra

    • Android Support Library
    • Intel x86 Emulator Accelarator

エミュレータの設定

エミュレータ設定する。ツールバー > ウィンドウ > 仮想デバイスマネージャーを選択。新規を選択。

つづけて、エミュレータのスペックを入力していく。ここでは、以下の画像のように入力。

設定が完了したら、開始をクリック。

待つこと数十秒で、エミュレータ起動((o(´∀`)o))

エミュレータの高速化

Intel CPUを利用しているならば、エミュレータを高速化できる。Intel x86 Emulator Accelaratorを利用する。

事前準備として、Intel 仮想化支援機能 Intel VTが有効になっている必要がある。設定方法は、過去記事参照。

以下の場所にあるIntelHaxm.exeを起動して、インストール。

\android-sdks\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe

05 Nov 2013, 15:39

「モダンC言語プログラミング」を読んだ!C言語の組込みエンジニアのためのモダンテクニックが満載

とてもエキサイティングな本に出会い、一気に読んでしまいました。感想を書こうと思います。



ターゲット読者層は組込み分野!

この本のターゲット読者はズバリ、組込みエンジニア。ソースコードのサンプルも、ズバリ組込みな内容を扱っています。C言語を使う人=組込みの人と決めつけているよう。書籍のあちこちで、このアプローチを組込み開発で適応するためにはどうすればいいかという考察が入るのがよい。

TIOBEというプログラミング言語の統計を見ると、C言語を利用している人がプログラマの2割程度いることがわかる。自分はこのデータを初めて知ったけれども、まずこの事実をしれたことは嬉しい事だ。C言語はいかに重要なのかという論題が冒頭で熱く語られる。

 内容について

各章のテーマは、広く浅く書かれているので、もう少し各章の突っ込んだ内容がほしいところだけれども、それはこの本の趣旨には合わないのだろう。

内容は、自分の日々考えていることに非常にマッチしていて、とてもエキサイティングな読後感でした。以下、自分の過去記事も整理しつつ、各章の覚書。

開発環境について

開発環境である、Ubuntuの導入方法と、Eclipseの使い方が紹介されていた。ここは、得るものはなしかな。

オブジェクト指向

C言語でオブジェクト指向のようにコーディングするためのテクニックが紹介されている。半分知っているようで、知らなかった。C言語でも、オブジェクト指向なプログラミングは可能だと気づかせてくれる。

あとは、Cでオブジェクト指向を勉強するならば、ズバリこの本でしょう。これもオススメ。



デザインパターン

自分の来年の重点学習目標の一つが、デザインパターンをマスターすること。この章は、C言語を利用したデザインパターンの実装方法が紹介されている。この章は知らないことが多く、とても興味深かった。

以下のパターンが紹介されている。

  • ステート
  • テンプレートメソッド
  • オブザーバ
  • チェインレスポンシビリティ
  • ビジター

C言語に特化したデザインパターンの本をまだ知らない。これが自分が出会った中で、もっともよくかかれた本かも。この本でも勉強するつもり。まだ読んでない。

いづれにしろ、この章は再読しよう。

TDD リファクタリング

テストフレームワークとして、GoogleTestが紹介される。レガシーコードに対するリファクタリングの実践がサンプルとして載っているのがうれしい。しかも、内容が組込みなので、実践的。パフォーマンスに関する考察もある。

namespaceを利用して、static関数を強引にテストケースに組み込む方法が紹介されていた。C++系のxUnitで利用できるテクニック。

namespace unit_test {
    #include "hogehoge.c"

    TEST(hoge,hogehoge) {
        EXPECT_EQ(3, hoge(1, 2));
    }
}

モックやスタブの定義についての言及は、自分の認識とは違うのだけれども、まあよい。モッキングフレームワークはC言語でいいものがないと書かれていた。そんなことはない、CMockやfffがあるではないか!

CでTDDをするならば、この本が必読本。



継続的インテグレーション

Jenkinsの紹介。これもあまり新しきことはなし。

C言語/C++でJenkins実践入門してみるよ | Futurismo

ビルドスクリプトとして、sConsが紹介されている。なかでも、感心したのが、スモークテストでのPytyonを利用した受け入れテストのアプローチ。pyhthonコードからシリアル接続を経由してテストする方法。この作者はPythonが好きなのかな?自分は、Rubyで同じことをやろうとした。

また、Valgrindを使ったメモリ破壊との戦いも、組込みならでは。こういうことにページを割くところも高評価。ValgrindはLinux用ツールなので、まだ使ったことがないけれども、今度調べてみようかな。

まとめ

組込みの現場ではなぜ、これらのテクニックが浸透しないのだろうか?

Eclipseが浸透しないのは、べつによい。エディタはEclipseだけではないし、EmacsやVimはEclipseに負けないくらいだ。

オブジェクト指向やデザインパターンが浸透しないのは、実行速度やメモリが関係しているのだろう。また、TDDもオブジェクト指向のほうが実施しやすい。(とくにMock)CIは、文化的なものだと思う。

  • 古い考えの人がCProgrammerには多いのだろうか?
  • レガシーコードをメンテナンスしていると、新しいテクニックは不要なのだろうか?
  • 過去の手続き型でかかれたレガシーコードを流用しているから、新しいテクニックを試す場がないのだろうか?

どれも、決定的な理由にはならない。一つ思うのは

「無知」

だからということ。自分もCに関わるいろんな情報を集めているものの、ほかの言語とくらべて、Cは圧倒的に情報量が少ない。Eclipsしかり、TDDしかり、Jenkinsしかり。

C Programmerに足りないものは、道標となるような情報や、書籍だ。C言語は使用率第一位の言語なのだ。これからも、こういう書籍がドンドン出てきてほしい。

27 Oct 2013, 13:48

Eclipse CDTで変数や関数が赤バツになってしまう場合の対処方法(C++11対応も)

Eclipse CDTで変数や関数が赤バツになってしまう場合の対処方法

Eclipseに外部のソースをインポートすると、赤バツがたくさんでることがある。また、C++11対応のソースが赤バツになることがある。

これは、CDTのインデックス機能がインデックスをするときに、ファイルパスの場所やプリプロセッサの定義値を知らないから。

パスおよびシンボルを設定

こんなときは、プロジェクトを右クリックしてプロパティを選択。

  • C/C++一般 -> パスおよびシンボル

ここでMakefileに書くような情報(インクルードパスやdefine値)を設定することで、赤バツが消える。たとえば、

  • インクルードパスを追加する場合にはインクルードを選択。
  • define値を追加するときにはシンポルを選択。

Eclipse CDTで C++11のソースを赤バツにしない方法

すでにEclipseの設定でdefine値が設定してあると、自分の値が反映されないことがある。C++11などはまさにそうだった。この場合は、

  • C/C++一般 -> Prosessor Include, Macro..->エントリ -> CDT User Setting Entrys

であたいを追加する。

__cplusplus = 201103L

27 Oct 2013, 02:40

自由自在にコード内を飛び回る!Eclipseのコードリーディング機能が便利

Eclipseには、コードを読みやすくするための様々な機能が備わっています。

GUIだからマウスをたくさんつかうんだろうという迷信がありますが、実際はキーポードから手を離さなぽことがおおいです。

キーバインドを巧みに利用して、コード内を自由自在に飛び回るためのテクニックを紹介します。

[toc]

[//www.youtube.com/embed/db4vCH7oqG8?rel=0]

宣言を開く(F2,F3)

関数や宣言の場所へジャンプすることができます。いわゆる、タグジャンプ、EmacsのGNU Grobalのようなもの。もっともよく利用する機能です。

F3で飛んで、Alt + 左で元に戻る。これでソースコード内をマウスを利用せずにピョンピョンと移動することができます。

F2を押すと、飛ばずにポップアップで宣言の場所を表示することができます。

呼び出し階層を開く(Ctrl+Alt+h)

関数がメソッドがどこの関数から呼ばれているかを順々に表示してくれる機能。

リファクタリングの時の修正による影響範囲を調査する時、重宝する機能。

型階層を開く(F4)

クラスの型を階層的に表示てくれる機能。継承関係が分かる。

C++だと機能するけれども、Cだとよくわからない機能。あまり利用しない。

エディタバッファを開く(Ctrl + x + b)

ファイル間の移動は、ショートカットで新規にファイルを開くこともあるけれども、もともと開いているファイルに飛ぶこともデキる。

このキーバインドは、Emacsキーバインドを設定しているので、Emacsに慣れている人はそのキーバインドをそのままEclipseでも利用できる。すなわち、Ctrl + x + b。

Alt + 左で前へ戻り、Alt + 右で次へ進むことができる。もはやブラウザでWebページを見るような感じ。

検索で飛ぶ

デフォルトのEclipse CDT検索機能は利用しません。代わりに、プラグインを利用します。

検索結果をクリックするだけで検索箇所へジャンプできるので、コンソールからgrepして検索するよりも効率がよいです。

26 Oct 2013, 15:29

コーディングをもっともっと加速する!Eclipseのコード補間機能まとめ

Eclipse CDTの強力な(Javaに比べると見劣りする)単語補間、コンテンツ・アシスト機能を紹介します。

これで、超高速なコーディングが可能??

単語補間

途中まで単語を入力したあとに、単語補間を実行すると、エディタ内の似ている単語で補間してくれる。

ちなにみ、単語補間は Alt+/に割り当てて、コンテンツ・アシストは Ctrl+Spaceに割り当てている。キーバインドが競合していると、補間が発動しないので、注意すること。競合していたときは、検索窓から Alt+/で競合コマンドを検索して、アンバインドする。

コンテンツ・アシスト

設定のカスタマイズは、以下を選択。

  • 設定 -> C/C++ -> エディタ -> コンテンツ・アシスト

自動有効化でトリガを設定できるので、とりあえずすべてチェックを入れる。トリガが発動するまでの時間も100ms以下にすると、高速でアシストが発動する。

構造のメンバだったり、関数名だったりを、これでガンガン置換できます。

ちなみに、コンテンツ・アシストで出てくるコードテンプレートは自分でも作成できます。以下の記事参照。メタプログラミングが可能です。

Javaならば、Code Recomennderという強力なプラグインがあるものの、CDTにはない。

クイック・フィックス

赤バツが表示されている時に、どう修正すればいいかを教えてくれる。

Ctrl+,でエラー箇所に飛んで、Ctrl+1を次々に実施してエラー箇所を修正。

Javaに比べると、CDTのクイックフィックスは貧弱。定義がないメソッドがあった場合、Javaならコード生成までしてくれるが、CDTはそこまではしてくれない。

パラメータのヒント

これはおまけのような機能。

引数の型をわすれたときにはこれ。ポップアップで教えてくれる。

26 Oct 2013, 01:22

Eclipseが立ち上がらないときは.logを見て調査する

Eclipseが立ち上がらなくなったので、調査方法と解決方法をメモ

とりあえず eclipse.exe -cleanで

運が良ければ、cleanオプションをつけてEclipse再起動すればなおる。

> eclipse.exe -clean

eclipse.exeが置いてあるフォルダのeclipse.exe -clean.cmdを実行すれば良い。

Eclipse Errorログを見る

Eclipseのエラーログは以下にある。

(YourWorkspace)/.metadata/.log

問題が起こったら、とりあえずログを見て調査する。該当時間のメッセージをググる。

Eclipse コンソールモードで立ちあげ。

eclipse.exeが置いてあるフォルダのeclipsec.exeを実行すると、コンソールアプリケーションとして起動することができる。

そこに現れる標準出力をググる。

ビューの設定をリセット

今回の原因。

!MESSAGE Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown:

以下のファイルを削除すればよいようだ。

(YourWorkspace)\.metadata\.plugins\org.eclipse.e4.workbench\workbench.xmi

これは、Eclipseの起動状態を管理しているファイルのよう。ビューが開けなくなったときも、このこの workbench.xmiを削除(orリネーム)して、-clean コマンドをつけて再起動すれば良い。