2015年6月3日水曜日

Androidでorg.json.JSONObjectを使う際の注意点

Android標準(5.1現在)のorg.json.JSONObjectには、MapとListをputできません。

正確には、入れても想定通りのエンコードができません。(valueにtoStringしたような値が入ります)

MapやListはJSONObjectやJSONArrayへの詰め替えが必要となります。


補足:JSONObjectのput関数には、valueの型にMapおよびListのものがなく、put (String name, Object value)のvalueにはMapおよびListが含まれない。

2015年5月10日日曜日

2015年1月13日火曜日

gitでブランチを作成する際の注意点

gitで新しくブランチを作成する際、

 git checkout -b newBranch origin/baseBranch

としていませんか?

これは危険です。


上記の場合、作成されるnewBranchの追跡ブランチはorigin/baseBranchとなります。

※追跡ブランチとは、リモートブランチとつながりを持つローカルブランチのことです。
※追跡ブランチの確認は「git branch -vv」で行えます。


例えば、「git push」(オプションなし)を行った場合は、newBranchの修正が、リモートのbaseBranchにpushされます。

また、「git push origin newBranch:newBranch」(リモートにnewBranchを作成)とした場合でも、その後「git pull」(オプションなし)を行うと、リモートのbaseBranchの修正がnewBranchにマージされます。


新しくブランチを作成する際は、

 git checkout -b baseBranch origin/baseBranch

の後(ローカルのbaseBranchで)に

 git branch newBranch

を行うことをお勧めします。

2014年11月16日日曜日

UbuntuでJSONの整形 (2)

UbuntuでJSONの整形で紹介した方法では、
日本語がユニコードにエスケープされてしまうので回避方法を紹介します。(キーのソートも追加しました)

JsonPrettyPrint.pyを作成
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json

jsonStr = raw_input()
prettyPrint = json.loads(jsonStr)
print json.dumps(prettyPrint, indent=4, ensure_ascii=False, sort_keys=True)

整形する場合は

$ python JsonPrettyPrint.py
{"キー":"値"}

{
    "キー": "値"
}

でできます。

sample : JsonPrettyPrint.py

2014年11月8日土曜日

Maven projectで、Maven project以外のjarを参照する方法

Local Repository(localRepo)を作成し、jarを配置。
jarと同じ位置に、pomファイル(SampleSub-1.0.0.pom)を作成する。

- ファイル構成

  SampleMain
    |- pom.xml
    |- src
    |- localRepo
        |- sample
            |- sub
                |- SampleSub
                    |- 1.0.0
                        |- SampleSub-1.0.0.pom
                        |- SampleSub-1.0.0.jar

- SampleSub-1.0.0.pom

  <project>
    <groupId>sample.sub</groupId>
    <artifactId>SampleSub</artifactId>
    <version>1.0.0</version>
  </project>

メインのpomにrepositoryとdependencyを追加する。

- pom.xml

  <project>
    ...

    <repositories>
      <repository>
        <id>local Repo</id>
        <url>file:${basedir}/localRepo</url>
      </repository>
    </repositories>

    <dependencies>
      <dependency>
        <groupId>sample.sub</groupId>
        <artifactId>SampleSub</artifactId>
        <version>1.0.0</version>
      </dependency>
    </dependencies>

  </project>

2014年10月26日日曜日

Linux(Ubuntu)でファイル構成を確認する方法

Linux(Ubuntu)でファイル構成を確認する方法

tree

インストールされていない場合は

sudo apt-get install tree

でインストールされる。

2014年10月22日水曜日

JUnitとTestNGのassert関数の違い

JUnitとTestNGのassert関数には、パラメーターに違いがある。

- JUnit
    assertEquals(Object expected, Object actual)

- TestNG(org.testng.Assert)
    assertEquals(Object actual, Object expected)

求められる結果は一緒だが、expectedとactualを逆に書いてしまうとエラー時のログがややこしくなる。

ただし、TestNGにはorg.testng.AssertJUnitというクラスがある。

- TestNG(org.testng.AssertJUnit)
    assertEquals(Object expected, Object actual)

JUnitとTestNGの両方を使う機会がある場合は、org.testng.AssertJUnitを使っておけば、間違いが減るかも。