yan's Handicraft

作成したフリーソフトを公開
Home » Archive by category 'PC/システム開発' (Page 2)

WinMerge を Windows のGitシェルのdiffツールに使う

6月 6th, 2013 Posted in git, PC/システム開発

Windows環境で、git diff したときに WinMerge で比較できるようにした時のメモ。 (GitForWindowsのシェルを使用することを前提)

手順

  • extDiff.sh に以下の内容を書いて、パスを通したディレクトリに配置する
#!/bin/sh

# If there are seven arguments, new file and old file will be passed to an argument. 
[ $# -eq 7 ] && /c/<WinMergeのインストールディレクトリ>/WinMergeU "$2" "$5"
  • コマンド git config --global diff.external extDiff.sh を実行

参考

軽量Linux linuxbean をインストール

5月 30th, 2013 Posted in Linux, linuxbean, PC/システム開発 Tags:

最初から日本語化されている軽量Linuxということで興味があった linuxBean をセットアップしてみる。
( Windows ではまりがちな、GIT や、sbt を簡単に扱いたくてVMのLinuxを使おうかとおもって。。 )

入手先など

今回インストールした環境

  • VirtualBox上のVMにインストール

linuxbeanインストール

  1. linuxbean のCDから起動して、live モードでブートします
  2. デスクトップに「linuxBean 12.4のインストール」というアイコンがあるのでダブルクリックします
  3. ウィザードに従って、ちょっと色々入力します
  4. 再起動を促すダイアログが表示されるので、再起動。
    Ubuntuなんかと比べるとあっという間に、インストール終了
    • “Please remove installation media and close the trey (if any) then press ENTER:” が CUI画面に表示されるので、 ENTER を押下。
  5. インストール完了です

その他、やってみたこと

パッケージを最新にする

  • 「アップデートマネージャー」で更新チェックした後「アップデートをインストール」ボタンをクリック
    • 「アップデートマネージャー」を開くには、以下のいずれかが良いかと思います
      • 左側のバーの該当アイコンをクリックする
      • 豆マーク > 設定 > Synaptecパッケージマネージャー

ssh をインストール

  • 「Synaptecパッケージマネージャー」で、パッケージ名「ssh」を選択してインストールします
    • 「チェックボックス」をマークして、上のほうにある「適用」ボタンを押下
    • ターミナルで apt-get install ssh でもいけると思いますが、GUIツールでやれるのはうれしい
    • 「Synaptecパッケージマネージャー」を開くには、以下のいずれかが良いかと思います
      • 左側のバーの該当アイコンをクリックする
      • 豆マーク > 設定 > Synaptecパッケージマネージャー

Oracle JDK を配置

使わない人には関係ないけど。。。 私は使うので

単純にJDKを配置して、使うユーザの設定でパスを通すことを前提としてます

bashの設定ファイルをrootからコピー

  • ユーザのホームディレクトリに .bashrc .profile がなかったので、rootのファイルをコピー
cd ~
cp /root/.bashrc .
cp /root/.profile .

ログインユーザのパス設定など

  • cd ~; mkdir bin
  • .bashrc の末尾に以下を追加
export JAVA_HOME=/usr/local/java/jdk7
export PATH=$HOME/bin:$JAVA_HOME/bin:$PATH
  • .bash_profile の末尾に以下を追加
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

シャットダウン時、自動的に電源OFF状態にする

  • 「Grub Customizer」を開く ( 豆マーク > 設定 > Grub Customizer )
  • 「General settings」タブをクリックし、「kernel parameters」の acpi=noneacpi=force に変更して、アイコンの一番左上の四角いやつをクリックしてセーブ

はまったこと

Guest Additions のインストール

  • VirtualBox の Guest Additions をインストールすると起動しなくなってしまった。
    これは痛い。Guest Additions 使わないと、VMの文字列をカットアンドペーストできないし、 WindowsのディレクトリをLinuxのVMにマウントしたりできない。
    • VirtualBox4.2.12 の「Guest Additions」のバグらしい。 参考ページ:VirtualBoxのフォーラム 4.2.12 がリリースされてから結構時間がたってますが、アナウンスも控えめ。Oracle さん優しくありませんね。
    • Download VirtualBox (Old Builds) から 「VirtualBox 4.2.10」を入手して、linuxbeanもインストールしなおしました。 ( 使い古した環境に 最新のGuest Additionsを当てなおすのが怖くなりました。。。 )
    • Guest Additions のインストールは以下のような感じ
      • VM上のWindowメニュー「デバイス」>「Guest Additions のインストール」
      • ターミナルでコマンド実行
cd /media/VBOXADDITIONS_?????    <--- 番号部分が変わる
 sudo sh VBoxLinuxAdditions.run

感想

  • 軽快にうごきました。SSHでホストOS(win)から接続してアイドル状態なら、CPUは1%以下。使ってみようと思います。

Gitblit で Git サーバを構築する

5月 28th, 2013 Posted in git, PC/システム開発 Tags: ,

ブログ 「イマドキのIDE事情 第154回 簡単デプロイ!「Gitblit」で共有Gitサーバを手軽に構築 」 で、Gitblit というものが紹介されていましたのでやってみました。

バイナリの入手

  1. Gitblitの本家サイトhttp://gitblit.com/ の「Download Gitblit GO」 をクリックして ダウンロードサイトへ遷移し、zip圧縮されたバイナリを入手します。 (2013-5-28 時点のバージョンは gitblit-1.2.1.zip )
    「Gitblit GO」は Jetty を内蔵していて、単独で動作するようです
  2. gitblit-?.?.?.zip を適当なディレクトリに解凍して、配置します
  3. <Gitblit の配置ディレクトリ>/data/gitblit.propertiesserver.httpPort = の設定を修正します。
    今回は、 server.httpPort = 8080 を設定してみました。 ( 参考:Gitblitの本家のsetup )
  4. 今回は、Windows環境で試したので <Gitblit の配置ディレクトリ>\gitblit.cmd をコマンドプロンプトで実行します。
    ( シェル実行用の gitblit も存在してます。Linux ならそちら )
  5. http://localhost:8080/ にアクセスします。(ポート番号は上で設定したものになります)
    すると、Gitリポジトリ一覧のWeb画面が表示されます。
  6. 「リポジトリ作成」をクリックし、「名前」にリポジトリを入力して、「保存」ボタンを押下すると、 gitリポジトリの出来上がりです。
    • リポジトリをローカルにクローンするには git clone http://localhost:8080/git/<リポジトリ名>.git でできます

感想

  • 参照元の記事では、「Gitblit War」をTomcat に乗せる方法を説明されていましたが、
    「Gitblit GO」はTomcatをセットアップする必要もなく、すごく簡単です。

CloudBees にデプロイしたい

5月 23rd, 2013 Posted in cloud, CloudBees, PC/システム開発

最近 scalatra で作ってみていたWebアプリを、 クラウドなるものにデプロイしてみたかったのでやってみました。

“Servlet 3.0” 現時点で使える CloudBees でやってみます。

CloudBees にユーザ登録する

  • CloudBees でユーザ登録します。
    2013-5-25時点では「Try it for Free!」のボタンを押下してアカウントを登録できました。

CloudBees SDK のインストール

インストールするための材料

  • 「CloudBees SDK 自体のダウンロード」
    • CloudBeesにログインしたトップページからダウンロードリンクがありました。 ただし、2013-5-25時点でバージョンが少し古かったです。
      左上のほうにある「Download Tools and SDK」タブクリックして、さらに、 「Bee SDK」ボタンを押下するとダウンロードできました。
    • http://cloudbees-downloads.s3.amazonaws.com/sdk/cloudbees-sdk-1.5.0-bin.zip というようなURLを直接たたいてもダウンロードできました。 ( バージョンについてはCloudBees SDK の説明ページ に記述されている箇所がありました )

インストール

CloudBees SDK の説明ページ の説明に従ってセットアップしていきます

  • ダウンロードした cloudbees-sdk-?.?.?-bin.zip を適当な場所に解凍
  • 環境変数 BEES_HOME を設定。bees.batbees ファイルが存在するディレクトリを BEES_HOME として指定
  • 環境変数 PATH に、環境変数 BEES_HOME を追加

動作確認

  • コマンド bees help を実行して Updating Bees SDK. This may take a while が表示されればインストール成功です。
    • プロキシ設定する必要がある環境では、 CloudBees SDK の説明ページ の 「Running behind a proxy」を参考に設定が必要な模様 ( おそらく、bees init ・・・ のような感じで設定ればよさそう。( やってません) )
    • しばらく待った後、いくつか入力を求められます。
      • Enter your default CloudBees API end point [us | eu]:
        • us を入力しておく ( おそらく、どっちでもいい)
          ( EU地域でサーバ運用する場合、個人情報などのデータ格納に法律上のサーバの場所の制限があるらしい。 日本人にはあんまり関係ないし、us のほうが多分回線が太いと思う )
      • Enter your CloudBees account email address:
        • 登録した際のメールアドレスを入力
      • Enter your CloudBees account password:
        • 登録した際のパスワードを入力
    • その後、help 結果が、ドバっと表示される
    • ユーザの情報は C:\Users\<ユーザ名>\.bees に格納される模様。 bee config:delete というコマンドでクリアできるらしい ( やってません)

“RUN@cloud Application Service”を利用開始しアプリケーションを追加

  • ログイン後のホームの上のほうにあるボタン「RUN@cloud Application Service」を押下して、 さらに、「Subscribe」ボタンを押下して利用開始します。 ( もちろのFreeを選択しました )
  • 利用開始後、ホーム画面に行き、『大きな+マークに「Add Applications」の注釈がついたボタン』 を押下すると、アプリケーション登録用ダイアログが表示されるので、 「アプリケーション名」を入力して登録します。
    • 「Application is ready」という結果ダイアログが表示され、 アプリケーションのURLが表示されます。
      ( URL は http://<アプリケーション名>.<アカウント名>.cloudbees.net/ )

アプリケーションのデプロイ

Getting Started with RUN@cloudScalatra本家の Deploying to CloudBees を参考にデプロイしていきます。

  • 予め warファイルを作成しておき、以下のコマンドを実行します。
    bees app:deploy <warファイルのパス> -a <アプリケーションID> -t <ClickStack>
    • -t <ClickStack> は省略可能です。(省略した場合は、アプリケーションコンテナが Tomcat6 になりました)
      私は Servlet 3.0 のコンテナにしたかったので、 -t tomcat7 を指定しました。
    • 動作確認
      • http://<アプリケーション名>.<アカウント名>.cloudbees.net/ をブラウザで表示して 表示できれば成功です。

Scalatra でアクセスログとエラーログを出力したい

5月 22nd, 2013 Posted in PC/システム開発, scala, Scalatra

開発していると、必ずと言っていいぐらい、「アクセスログ」や「異常発生時のログ」の出力
を求められるので、Scalatra ではどうやったらいいのかやってみました。

  • org.scalatra.ScalatraServlet#serviceHttpServlet#service をオーバーライドして
    handle メソッドを呼び出す実装になっていたので、handle メソッドオーバーライドしてあげれば
    ログが統一的に出力でるのではないかと思いやってみました。

    • 結果
      • アクセスログは出力できるのですが、例外がキャッチできず、異常発生時のログが出力できませんでした。
        ソースを追いかけてみると、handle メソッド処理中に例外が発生すると、
        所々で例外をキャッチしていました。
  • 更にソースを読むと変数org.scalatra.ScalatraBase#errorHandler が、例外が発生時の
    処理に使われているのが分かりました。
    変数errorHandlerを書き換えてやると、異常時にログが出力できました。

    • 特記事項
      • errorHandler の型は type ErrorHandler = PartialFunction[Throwable, Any]
        という風に定義されています
      • Googleグループ scalatra-user でこの辺のことを議論されているスレッドがありました。==>
        “Logging exceptions”

実装例

テンプレートとして作成される ????Stack クラスに、以下のような感じで実装してみました

  errorHandler = {
    case rt: RuntimeException => {
      log.error("システムエラー発生 (RuntimeException) Path=:" + Option(request).fold("")(_.getRequestURI) +
        "\n  ErrorMessage=" + rt.getMessage, rt)
      status = HttpServletResponse.SC_BAD_REQUEST
      "Exception occured!"
    }

    case rt: Throwable => {
      log.error("システムエラー発生 (RuntimeException以外) :\n  ErrorMessage=" + rt.getMessage, rt)
      throw rt
    }
  }

  override def handle(req: HttpServletRequest, res: HttpServletResponse): Unit = {
    val path = req.getRequestURI
    val startMillis = System.currentTimeMillis()
    log.info( """[AccessLog] Path={}""", path)
    try {
      super.handle(req, res)
    } finally {
      val elapsedMillis = System.currentTimeMillis() - startMillis
      log.debug( """[EndLog]elapsedMillis={} ,Path={}""", elapsedMillis, path)
    }
  }

Scalatra のテスト

5月 21st, 2013 Posted in PC/システム開発, scala, Scalatra

Scalatraのテストを試してみました。
Scalatraの本家サイト”Scalatra guides” の Testing あたりに、 説明があるので、それをもとに試してみました。

2013-5-21時点では、Scalatest を使う方法と Specs2 を使う方法とが説明されています。

感想とメモ

  • APサーバを起動せずに、単体テストとして、サーブレットの動作確認が簡単にでき、お手軽。(Scalatest 、Specs2 両方とも)
    • org.scalatra.test.EmbeddedJettyContainer をいう trait をテストクラスが実装していて、 Jettyのコンテナ(のモックかな?)がサーブレットコンテナを提供してくれている模様。
    • 本家サイトのサンプルとほとんど変わりませんが、 書いてみたテストソースはyangiYAのGitHubのこのあたりにあります
  • 私の好みとしては、Scalatest でテストするタイプ。Specs2 のほうは、なんだか記述がまどろっこしいように感じてしまいます。 ( Specs2 のほうは、BDD(Behavior Driven Development , (振る舞い駆動)) で最近の流行だとは思います。 )
  • Scalatest のほうは、依存を追加しないとコンパイルできませんでした。
    project/build.scala に以下を追加してから、sbt で gen-ideaeclipse を実行しました。
"org.scalatra" %% "scalatra-scalatest" % ScalatraVersion % "test",
  • テストクラスが実装している org.scalatra.test.Client のおかげで、 テストクラスから、HTTPアクセス結果の「HTTPステータス」「HTTPレスポンス」などにアクセスできるようになっています。 単体テストとして、HTTPの結果を確認するテストコードを書けるようになっている思想のようだ

以上、簡単な感想でした。
画面でいちいち動作確認せずに、簡単な疎通レベルのテストが 単体テストとしてかけそうでいいなと思います。(Rubyist にとっては、当然なのかな)

Windowsでシンボリックリンクを作成する

5月 9th, 2013 Posted in PC/システム開発, windows

Windows7 や Windows8 でシンボリックリンクを作成する方法をよく忘れるので備忘録
(XP ではこの方法はできません)
管理者として「コマンドプロンプト」を開き以下のコマンド実行するでできます。

mklink /D  LINK_NAME TARGET

Unix系コマンド ln -s TARGET LINK_NAME と引数の順番が逆ですね

mklink /D c:\linkName\hoge c:\realDir\foo のような感じで使います

JavaFX勉強会第8回にいってきました

12月 10th, 2012 Posted in javaFX, PC/システム開発

先日 JavaFX勉強会にいってきました。 その時のメモです。


Catch UP JavaFX 2.2

  • 桜庭祐一さん

JavaFX概要

  • java SE 8 で標準になる。(java7ではクラスパス通さないと使えない)
  • Nodeを継承したオブジェクトのツリー構造(Scene Graph)でGUIを作る
    • Node
      • Control
      • Shape
      • Browser
      • Chart

Scene Builder1.0

  • Scene Graph を記述するGUIエディタ
    • java8では、2.0 が登場する予定
      • どんな機能が拡張されるか不明
    • 1.0
      • CSS Analyzer (日本語名「CSSパネル」)
        • CSSの確認、および、編集ができる (機能が)

宣伝

  • JavaFX Advent Calendar 2012 http://atnd.org/events/33874 をよろしく
  • IT pro の記事「JavaFX 2で始めるGUI開発 第5回 リスト、コンボボックス、テーブル 」 http://itpro.nikkeibp.co.jp/article/COLUMN/20121122/439321/?k2

ScalaFXのはなし

  • 深井康行さん

ScalaFX

  • ScalaでjavaFXを書くためのライブラリ
  • Mercurial で公開されている
    • 自分でビルドして使う必要あり
  • JavaFXの各クラスに対応するScalaFXのクラスがある。
  • コンパクトに記述でき、ソースの見通しが良くなる
開発状況に対する感想
  • 必要なクラスが出そろった
  • バインドするコードが書きやすい
  • 情報が少ない

宣伝

  • Scala Conference in Japan 2013http://www.scalaconf.jp/
    • 日本で初めての大規模なScalaのカンファレンスが開催されます。

JavaFXでマルチタッチプログラミング

  • 青江崇さん

JavaFXでマルチタッチ

  • JavaFX 2.2 でサポート開始
  • イベント
    • タッチ操作の基本的なイベント
      • TouchEvent
    • 操作を抽象的にとらえてくれる応用的なゼスチャーイベント
      • RotateEvent
        • 回転操作のイベント。回転各、回転の開始終了を取得できる
      • ScrollEvent
        • 移動量、移動の開始終了を取得できる
      • SwipeEvent
        • 払ったことを察知するイベント。方向だけ取得できる
      • ZoomEvent
        • 拡大率、縮小率、拡大および縮小の開始終了を取得できる

実装した感想

  • 結構簡単に実装できるとのこと
  • Windows8で、実際に動作できました。

ダブルクリックで起動するJavaFXアプリケーションjar

  • 高橋徹さん

今回話題とするJavaFX実行環境について

  • スタンドアロン
  • そのほかに以下のようなものもある(今回の話題ではない)
    • webスタート
    • Web埋め込み
    • セルフ・コンテインメント・アプリケーション

不思議な現象

  • NetBeans (7.3bata2) でビルドした結果(distディレクトリ以下にある)のjarはダブルクリックするとアプリケーションとして動作する。
  • 自力でMavenでパッケージングしたjar(MANIFEST.MFにMain-Class指定したもの)はダブルクリックしても動かない

なぜそうなるか解析結果

  • NetBeansでビルドしたjarには
    • 自分で作らないクラスが含まれている
    • MANIFEST.MFにMain-Class に自分で作らないクラスが指定されている
  • oracle公式サイトに説明を見つけたjavaFXドキュメントのデプロイに関するページ http://docs.oracle.com/javafx/2/deployment/deployquickstart.htm
    • javafxpackager にオプションを指定してパッケージングするとできるとのこと

LT

  • 見よう見まねでJavaFX 石丸愛子さん
  • FXMLでの開発の実際 宮部泰治さん

Markdownでプレゼン資料を作成するkeydown

11月 17th, 2012 Posted in Markdown, PC/システム開発 Tags: ,

Power Point でスライド作るのが面倒で嫌いなので、
Markdownで書いたものがスライドにならないかなと思っていたら。
ありましたので、keydown っていうのがあったのでやってみました。

Rubyとgemのインストール

  • http://rubyforge.org/projects/rubyinstaller/
  • RubyInstaller を download
    2012-11-16時点のファイルの例 rubyinstaller-1.9.3-p327.exe
  • C:\Ruby193\bin
    gem -vコマンドを実行

    • 1.8.24 とバージョンが表示されれば成功

DEVELOPMENT KITのインストール

ダウンロードがら配置まで

  • http://rubyinstaller.org/downloads/DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe をダウンロード
    1. 適当なディレクトリに配置して解凍
    2. 解凍したディレクトリを C:\DevKit に変更する

DevKitディレクトリでコマンド実行してインストール

(rubyコマンドにパスを通しておくこと!)

  1. ruby dk.rb initを実行
    • C:\DevKit に config.yml ができる
  2. ruby dk.rb reviewを実行
    • config.yml の確認用コマンド。省略可能
  3. ruby dk.rb installを実行以下のような実行結果が出たら成功
[INFO] Updating convenience notice gem override for 'C:/Ruby193'
[INFO] Installing 'C:/Ruby193/lib/ruby/site_ruby/devkit.rb'

keydown のインストール

(rubyコマンドにパスを通しておくこと!)

  • https://github.com/infews/keydown の Usage を参考に
  • gem install keydownをコマンド実行
    • C:\Ruby193\bin\keydown.bat が作成され、keydownコマンドが実行できようになります
    • コマンド結果は以下のような感じ実行結果が出たら成功
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Fetching: keydown-0.9.2.gem (100%)
Successfully installed rdiscount-1.6.8
Successfully installed keydown-0.9.2
2 gems installed
Installing ri documentation for rdiscount-1.6.8...
Installing ri documentation for keydown-0.9.2...
Installing RDoc documentation for rdiscount-1.6.8...
Installing RDoc documentation for keydown-0.9.2...

keydownでMarkdownファイルをプレゼンテーション資料に変換

(rubyコマンドにパスを通しておくこと!)

  1. keydown generate my_presentation
    • カレントディレクトリに my_presentation ディレクトリが作成されれば成功
  2. my_presentation/slides.md にMarkdown形式で書きたい内容を編集
  3. my_presentationに移動して、 keydown slides slides.md コマンドを実行(Windows31Jで保存のこと)
  4. my_presentationslides.htmlができていれば成功

使用感

  • Markdown形式で書くとスライドができるのは、すごく楽。使ってみようと思う。
  • FireFoxだと期待した動きたをしない。まあ、自分で発表するときに使わなければ
    何とかなるので、許容できるけど、普通に表示できてほしいな。
  • windows環境だと、Markdownファイルの文字コードを、Windows3iJで保存しておかないと落ちてしまう。解決方法わからず。
  • 作成されたhtmlも Windows31Jでできる。utf-8 がよければ、
    作成後のHTMLをutf-8に変換すれば、一応可能。(少し、残念な感じ)
  • 「ダウンロード」ていう文字Markdownファイルに書くと、keydown generate で落ちました。
    download に変えると通りましたが理由が分かりません。