u-ryo's blog

various information for coding...

Normalizer in Java

| Comments

同僚に、「JavaのNormalizer.NFCとかって何?」と聞かれたので、 調べてみました。 ITproの櫻庭さんの解説が わかりやすいかも、と思ったんですが、

互換合成 Normalize Function Compativle Composite (NFKC)

とかって、スペルミスもあるし、そもそも原典と違うじゃん、 ということに気付いて。

  • Normalization Form D (NFD) Canonical Decomposition
  • Normalization Form C (NFC) Canonical Decomposition,followed by Canonical Composition
  • Normalization Form KD (NFKD) Compatibility Decomposition
  • Normalization Form KC (NFKC) Compatibility Decomposition,followed by Canonical Composition

Canonical Equivalent(正準等価性)が「か+゛」=「が」 Compatibility Equivalent(互換等価性)が「カ」=「カ」 なので、

  • 「Canonical Decomposition」(正準分解)を「「が」→「か+゛」にすること」
  • 「Canonical Composition」(正準合成)を「「か+゛」→「が」にすること」
  • 「Compatibility Composition」(互換合成)を「「カ」を「カ」とすること」

と読めばいいのでは?

だから例えば、「NFKC」は、 「「カ」を「カ」としてから「か+゛」→「が」にすること」

気を付けたいのは、「Compatibility Composition」というのはない! ということですね。 だからよく読むと、各所にある日本語の解説は怪しいかも、です。

文字コード地獄秘話 第3話:後戻りの効かないUnicode正規化の解説が良さげです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
groovy:000> import java.text.*
===> java.text.*
groovy:000> str = "神と神㌀㈲¼が"
===> 神と神㌀㈲¼が
groovy:000> println(Normalizer.normalize(str, Normalizer.Form.NFD))
神と神㌀㈲¼か
===> null
groovy:000> println(Normalizer.normalize(str, Normalizer.Form.NFC))
神と神㌀㈲¼が
===> null
groovy:000> println(Normalizer.normalize(str, Normalizer.Form.NFKD))
神と神アハート(有)1⁄4か
===> null
groovy:000> println(Normalizer.normalize(str, Normalizer.Form.NFKC))
神と神アパート(有)1⁄4が
===> null

Codenvy for GAE

| Comments

CodenvyはGAEに直接deploy出来るからいい、 って読んだんですけど(もうEclipseはいらない? codenvy IDEによるクラウド開発 (1/6))、 じゃぁっていうんで使ってみたら、 うーん、command lineが使えないので、 JARなprojectとかうまく動かせない(buildしても成果物をどうやって取り出すのか、 どうやってoptionつけて実行して試せるのか)感じでした。 あと、月20時間?しかtest起動、buildが出来ないみたいですね。

Cloud9ではGAE連携できないのかな、 と調べてみると、GAEってgitでもdeploy出来るって?! へーと思ってGAEを見てみると、今は出来ないみたいですね... Google Cloud Consoleからソースの閲覧っていメニュー、 無くなってます。 まぁ、普通にcommand叩けば良いのかな? という感じです。

Kodingも、 無料だと1プロジェクトしか作れませんが、 どうせGitHubに置いておくので、 とっかえひっかえすればいいのかなぁ。 でも流石に面倒そうですよねぇ。

Disqus on This Blog

| Comments

当初、このblogにはコメント欄がありませんでした。 Disqusを使える、 ということが他の人のblogを見てわかって、 うちでもSiteConfig.groovyをよく見たら、 disqusって項目、 あるんですね。short_nameを入れるんですが、 Disqusに登録したのはちょっと前の事だったので、 short_nameって何の事なのか最初よくわかりませんでした。 改めてDisqusに入って、Settings見て、漸く思い出しました。 自分で入れたんですね最初に。

しかし、short_nameを設定しても、 "We were unable to load Disqus."と言われて出てきませんでした。 DisqusのSettingsでちゃんとURLやtrusted domain指定してるのに... 随分悩みました。 結局、SiteConfig.groovyで、 environments → prod → url を指定してなかったのが、原因でした。 Disqusは、「どのURLからのaccessか」をparameterから見てますから、 ここがSetup → Basic → Site Identity → Website URL と一致してないと ならないんですね。

Developing and Building Cordova App

| Comments

all cloud環境で、hybrid applicationsを開発する方法がわかりました。

  1. Cloud9で作る
  2. GitHubに置く
  3. PhoneGap Builderでbuild

Cloud9

templateは何を選んでもnode.jsが付いてくるみたいです。 Developing Ionic (Cordova) apps in the cloud with Cloud9 に従って、以下project nameを「firstproject」とします。

1
2
3
$ npm -g install cordova ionic
$ ionic start firstproject
$ cd firstproject

これで準備が出来ます。 official documentにもありますが、 $ ionic start firstproject sidemenuとすれば、 tabではなくsidemenu型のprototypeが用意されるようです。

GitHub

buildには、上述のように、PhoneGap Builderを使います。 そのためには、一度GitHubにpushせねばなりません。

まずGitHubに行って、repositoryを作ります。 その上で、

1
2
3
4
5
$ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/u-ryo/firstproject.git
$ git push -u origin master

PhoneGap Builder

そうしておいてから、 PhoneGap Builder(passwordは英小文字大文字8文字以上)に行って、 buildして、端末にはQR codeで読み込ませれば、 install、実行が出来ます。

はぁ〜、イマドキのアプリって、こういう風に作れちゃうんですねー。

Controlling Unity on Ubuntu Through CLI

| Comments

Clock on the menu bar

1
2
3
4
$ dconf write /com/canonical/indicator/datetime/show-date "true"
$ dconf write /com/canonical/indicator/datetime/show-day "true"
$ dconf write /com/canonical/indicator/datetime/show-seconds "true"
$ dconf write /com/canonical/indicator/datetime/show-year "true"

battery on the menu bar

1
2
$ dconf write /com/canonical/indicator/power/show-time "true"
$ dconf write /com/canonical/indicator/power/show-percentage "true"

"En" on the menu bar(default language selection)

1
$ dconf write /org/gnome/desktop/input-sources/current "uint32 1"

Wallpaper

1
$ dconf write /org/gnome/desktop/background/picture-uri "'file:///usr/share/backgrounds/wallpaper_univcoop.jpg'"

The way to suppress other icons on the launcher

1
2
$ dconf write /com/canonical/unity/launcher/favorites "['application://firefox.desktop']"
$ dconf read /com/canonical/unity/launcher/favorites

forbidden hud

1
$ dconf write /org/compiz/integrated/show-hud "['disabled']"

To suppress remote content search

1
$ dconf write /com/canonical/unity/lenses/remote-content-search "'none'"

Supress auto-mount

1
2
$ dconf write /org/gnome/desktop/media-handling/automount "'false'"
$ dconf write /org/gnome/desktop/media-handling/automount-open "'false'"