2015年12月12日土曜日

ベトナムに行ってきました。

仕事でベトナムのハノイに行ってきました。
なんか、すごく活気があって、これからどんどん経済成長するんだろうな。と感じました。
12月なのに、少し暑い。上着要りません。(もしかしたら、滞在時がたまたま寒くなかったのかもしれませんが)

自分が一緒に仕事しているベトナム人のアプリ開発者はとても優秀ですね。
プログラム作成が早いし、英語力も高いです。
自分も頑張らねばと思います。


ノイバイ空港での入国手続き待ちです。



夜のホアム・キエム湖。
ハノイの有名なデートスポットです。
この湖には、大きな亀が住んでいるらしいです。
また、昔、この地の王様が、漁師が海から拾った剣を携え
中国との戦争に勝利した後に、この湖に来ると
亀が姿を現したので、漁師が海から拾った剣を差し出すと
亀が口にくわえて、湖に潜っていったらしいです。
その剣は、天からの授かり物だったとか。
ベトナム人のガイトがそう話てました。






ホアン・キエム湖内にあるお寺。
入るのに、入場料が必要です。
ちょっとした展示物とお土産屋があります。



展示物には、亀の剥製が。。。
数年前まで、ホアン・キエム湖に住んでいた亀らしいです。



ハノイの商店街。
たくさんのお店が並んでいます。
信号はほとんどないです。道を横断するのが大変です。
ゆっくり渡らないといけません。急いではダメです。
何回かバイクにひかれそうになりました。




ベトナムコーヒーです。
とても美味しいです。



ホアン・キエム湖の近くに水上人形劇の劇場があります。
劇はベトナム語で、進行してますので、話の内容は全然わかりませんでした。
1回の劇は1時間ぐらいです。1日に何回か行われています。




ホーチミン博物館にも行ってきました。



ホアン・キエム湖の周辺です。
ここがハノイで最も栄えているらしいです。
とベトナム人のガイトが言ってました。



昼間のホアン・キエム湖です。
いい眺めです。




ロッテセンターの屋上から。
いい眺めです。空気が少し濁っているせいか、遠くが霞んで見えます。
65階まである建物だったかな?
とにかく、高い建物でした。







夜のハノイ市街。
贅沢にテラス席で、お酒飲んでました。
バイク多いです。(この写真ではわかりませんが。)
結構、夜遅くまで、お店開いているんですね。
この写真を撮った時は、現地時間21:00ぐらいでした。



2015年10月4日日曜日

EI Capitanで日本語入力で勝手に変換された漢字をひらがなに戻すには。

MacOsをEI Capitanで、日本語入力をすると勝手に漢字に変換されます。
ちなみに、日本語入力中に、勝手に漢字に変換された文字をひらがなにするには
escキーを押下すれば良いです。
忘れないうちにメモしておきます。

Herokuでexpressのwebアプリケーションを動かす。

expressアプリ作成及び動作確認の記事に続いて、今度はexpressのwebアプリケーションをHeroku上で動作させた時のメモです。
Herokuへwebアプリケーションを設置する方法は、HerokuのNode環境作成のメモの記事とほとんど同じ内容です。
が、全く同じ方法だと、expressのwebアプリケーションは正常に動作しませんでした。
その時の、解決方法もメモしておきます。

まず、Webアプリケーションのディレクトリに移動して、次のコマンドを入力します。
expressアプリ作成及び動作確認の記事で作成した[xxxxx]ディレクトリに移動します。

    heroku create --stack cedar

そしたら、webアプリケーションサイトのURLとGitのURLが表示されるので、メモしておく。(メモしておいたほうがいいでしょう。)

次のコマンドを順番に入力して、Gitへの登録とwebアプリケーションのデプロイをします。
※[yyyyy]は任意のコメント。[zzzzz]は、前の操作で、表示されるWebアプリケーションサイトのURLの"https://" と ".herokuapp.com/" の間の文字列)

git init
git add .
git commit -m "[yyyyy]"
heroku git:remote -a [zzzzz]
git push heroku master

そして、webアプリケーションサイトのURLにアクセスすると、作成したWebアプリケーションが表示される。はずですが、次のエラー画面が表示されてしまいました。

どのエラーになっているのかを確認するために、ターミナルで次のコマンドを
入力して、ログを確認します。


heroku logs -t

すると、次のようなエラーログが出力されていました。

2015-09-27T00:40:38.142003+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=[zzzzz].herokuapp.com request_id=a4dc2cec-8bdd-4be5-b1fe-0caaf311de15 fwd="223.133.135.59" dyno= connect= service= status=503 bytes=
2015-09-27T00:40:39.245105+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=[zzzzz].herokuapp.com request_id=4ec20557-a3a4-4e84-8fd6-db35ad8ee197 fwd="223.133.135.59" dyno= connect= service= status=503 bytes=

そして、at=error code=H10 desc="App crashed" をググっても
何が原因で、エラーになっているかがわかりませんでした。

ローカルのMac上で正常に動作するのに、Heroku上ではエラーになるんだろうと考えます。
そして、Heroku上でエラーになるのは、やはり環境の設定に誤りがあるはずだ。と思いました。

しばらく、今までの環境作成の手順や作成したexpressのwebアプリケーションのプログラムソースなどを、見てみます。
すると、package.jsonに次のような記述があるのです。

  "scripts": {
    "start": "node ./bin/www"
  },

ということは、ローカルのMac上では、./bin/wwwのプログラムがまず
動作しているのでは?と。であるならば、Procfileの内容が間違っているはずだ。と
思い、Procfileの内容を確認します。
Procfileの内容は、次のようになっています。

web: node app.js

これは、app.jsでなく、./bin/wwwにすれば、Heroku上で、expressのwebアプリケーションが動くかもしれない。と思い、Procfileを次のように、書き換えます。

web: node ./bin/www

そして、ターミナルで、次のコマンドを順番に実行して、expressのwebアプリケーションをデプロイします。

git add .
git commit -m "[yyyyy]"
git push heroku master

そして、WebアプリケーションサイトのURLにアクセスすると、Mac上でexpressのwebアプリケーションを動作させた時と同じ画面が表示されました。








2015年10月3日土曜日

expressアプリ作成及び動作確認

expressのインストールメモの記事の続きですが、Macにexpressをインストール後に
expressのサンプルアプリを作成時のメモです。

アプリを設置するディレクトリに移動して、次のコマンドを実行します。
※[xxxxx]はアプリ名及びアプリ格納ディレクトリです。そして、[xxxxx]ディレクトリは存在してない状態です。事前に[xxxxx]ディレクトリは作成しないでください。

express [xxxxx]

すると、ターミナルにコマンド実行時のメッセージが出力されるのですが
最後の方に次のメッセージが表示されます。

   install dependencies:
     $ cd [xxxxx] && npm install

   run the app:
     $ DEBUG=[xxxxx]:* npm start

なので、指示通りに、次のコマンドを実行します。

cd [xxxxx] && npm install

すると、ターミナルでコマンド実行時のメッセージが出力されます。
その後に、上記の指示どおりに、次のコマンドでアプリを実行します。

DEBUG=[xxxxx]:* npm start

※ ググると node [xxxxx] のコマンドを実行する記事が見つかると思いますが、express 4.13.1 では正しく動作しません。node [xxxxx] のコマンドを実行すると、ターミナルに次のようなメッセージが表示されて、アプリは起動しません。

module.js:333
    throw err;
          ^

すると、ターミナルに次のメッセージが表示されて
ターミナルでの入力できない状態になります。
※controlキー + c で次の状態を終了できます。そして、expressも終了します。

  [xxxxx]:server Listening on port 3000 +0ms

そして、ブラウザ起動して、アドレスバーに次のURLを入力します。

http://localhost:3000/

すると、ブラウザの表示が次のようになっており、expressが動作しています。







2015年9月26日土曜日

Xcode7に更新後に、iOS9のHTTP通信箇所でエラー。

Xcode7に更新して、iOS9の端末でHTTP通信箇所でエラーが発生するようになりました。
原因と解決方法について、調べた内容をメモとして残しておきます。

エラーはUIWebViewのloadRequestを実行箇所で発生してました。
特に変わった処理ではなく、httpから始まるサイトをUIWebViewに表示させてようとしただけでした。
そして、UIWebViewの表示は真っ白なままで、次のエラーログが出力されていました。

CFNetwork SSLHandshake failed (-9824)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)

なお、iOS7とiOS8の端末では、正常にHTTP通信できて
UIWebViewのloadRequest実行時に指定したサイトの内容を表示できているのです。
多分、同じ問題に遭遇している人もいると思い、ググってみると
次のURLに解決方法が記載してました。

https://forums.developer.apple.com/thread/3484
http://nlogic.jp/?p=412

どうやら、iOS9では、HTTP通信をしようとするとHTTPS通信に
置き換えようとするらしいのです。
そして、それを解決する方法ですが、HTTP通信をHTTPS通信に
置き換えさせないようにするために、info.plistに次の設定を追加します。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

あと、UIWebViewのloadHTMLStringを実行して、
自前でHTMLを描画しており、そのHTML内のiframeで
httpから始まるurlを指定して、画面表示を行う機能を実装している箇所で
そのiframe部分は真っ白に表示され、urlに該当する内容は表示される
上記と同様な現象も発生しておりました。
これは、冒頭のように、CFNetwork SSLHandshake failed (-9824)のエラーログは
出力されていませんでしたが、
上記のinfo.plistの設定を行った後は、iframe部分は正しく表示されるようになりました。

2015年9月23日水曜日

mongodbのインストールメモ

homebrewをインストールしたので、それを使用して
mongodbをインストールした。

1. ターミナルで次のコマンドを入力する。

brew install mongodb

2. 以下のメッセージが表示されて、mongodbがインストールされる。

==> Downloading https://homebrew.bintray.com/bottles/mongodb-3.0.6.yosemite.bott
######################################################################## 100.0%
==> Pouring mongodb-3.0.6.yosemite.bottle.tar.gz
==> Caveats
To have launchd start mongodb at login:
  ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/3.0.6: 17 files, 159M


3. 2.で表示されているメッセージに自動ログインの設定に必要なコマンドが表示されているので、そのとおりに、次の2つのコマンドを入力する。

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist


4. mongodbのインストール確認のコマンドを入力して、mongodbがインストールされていることを確認する。

mongo

すると、次のメッセージが表示された。

MongoDB shell version: 3.0.6



2015年9月22日火曜日

Homebrewのインスールメモ

1. 次のURLのサイトを表示。

http://brew.sh/index_ja.html


2. サイトに記述しているように、ターミナルで次のコマンドを実行。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

3. そしたら、次のメッセージが表示された。

You have not agreed to the Xcode license.
Before running the installer again please agree to the license by opening
Xcode.app or running:
    sudo xcodebuild -license

4. なので、Xcodeを起動して、agreeボタンを押下する。
 そして、この後に管理者ユーザのパスワード入力を促すダイアログ画面が表示されるので、パスワードを入力する。


5. 再度、2.のコマンドをターミナルで入力する。
 そして、次のメッセージが表示されたので、returnキーを押下する。

Press RETURN to continue or any other key to abort

6. その後に、次のメッセージが表示されたので、管理者ユーザのパスワードを入力する。

Password:

7. そして、次のメッセージが表示される。これで、Homebrewのインストール完了。

==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/include /usr/local/share/man /usr/local/share/man/man1
==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> Downloading and installing Homebrew...
remote: Counting objects: 3747, done.
remote: Compressing objects: 100% (3582/3582), done.
remote: Total 3747 (delta 40), reused 555 (delta 28), pack-reused 0
Receiving objects: 100% (3747/3747), 3.16 MiB | 963.00 KiB/s, done.
Resolving deltas: 100% (40/40), done.
From https://github.com/Homebrew/homebrew
 * [new branch]      master     -> origin/master
HEAD is now at 7506f77 x265: update 1.7 bottle.
==> Installation successful!
==> Next steps
Run `brew help` to get started






2015年9月15日火曜日

expressのインストールメモ

Nodeのフレームワークのexpressのインストールを行ったのですが
すんなりインストールできませんでした。
メモとして残しておきます。

ターミナルで、次のコマンドを入力します。

npm install -g express

すると、次のメッセージが表示されました。

npm ERR! Please try running this command again as root/Administrator.

ルート権限でコマンド実行が必要みたいです。
ですので、次のコマンドを入力します。

sudo npm install -g express

すると、次のメッセージが表示されますので、ルートユーザのパスワードを入力します。

To proceed, enter your password, or type Ctrl-C to abort.

そしたら、インストールが行われます。
イントールが正常に行われているかの確認のために、次のコマンドを入力します。

express --version

expressのバージョンが表示されてました。(4.13.1 と表示されました。)
無事にexpressのインストール完了です。

expressのアプリ作成については、expressアプリ作成及び動作確認の記事になります。



2015年9月14日月曜日

HerokuのNode環境作成のメモ

Webアプケーション作成のために、2年ぶりぐらいにHerokuを触ったのだが
以前にどうやってHerokuを扱ったかを完璧に忘れていました。

2年ぐらい前はWindowsでHerokuのNode開発環境を作成してたのだが、
今回はMacなので、異なる箇所もあると思うのですが、いずれにしろ
Windowsでどのようにしていたかを完璧に忘れています。

かつ、メモやエビデンスを残してなく、学習し直してます。
今度は、こんなことにならないように、メモを残しておきます。

1. まずNodeをMacにインストール。次のサイトよりインストーラをダウンロードして、インストール。
    http://nodejs.jp/nodejs.org_ja/

2. Heroku toolbeltをMacにインストール。次のサイトよりインストーラをダウンロードして、インストール。
    https://toolbelt.heroku.com/

3. Herokuにログインするため、ターミナルから次のコマンド入力。そして、E-mailとパスワードを聞かれるので入力。
   heroku login

4. SSHの秘密鍵・公開鍵を生成するため、ターミナルから次のコマンドを順番に入力。
   heroku keys:clear
   heroku keys:add

    そしたら、以下のメッセージが表示されるので、"y"を入力する

    Could not find an existing public key at ~/.ssh/id_rsa.pub
    Would you like to generate one? [Yn]

5. Webアプリケーションのフォルダを作成して、開始プログラム(js)ファイルを定義するをファイル(Procfile)設置
    (開始プログラム(js)ファイルは、あらかじめ作成しておく。)

6. Webアプリケーションのフォルダに移動して、次のコマンドを入力。
    heroku create --stack cedar

    そしたら、WebアプリケーションサイトのURLとGitのURLが表示されるので、メモしておく。(メモしておいたほうがいいでしょう。)

7. 次のコマンドを順番に入力して、Gitへの登録とWebアプリケーションのデプロイ。(xxxxxは任意のコメント。yyyyyは、6.で表示されるWebアプリケーションサイトのURLの"https://" と ".herokuapp.com/" の間の文字列)
git init
git add .
git commit -m "xxxxx"
heroku git:remote -a yyyyy
git push heroku master

8. WebアプリケーションサイトのURLにアクセスすると、作成したWebアプリケーションが表示される。

2015年6月22日月曜日

javascriptの連想配列の配列

javascriptの連想配列は、ググると色んな記事が見当たるのですが、
連想配列の配列で、使用するのは、少ないように思います。

javascriptの場合は、連想配列の配列を使用するのだったら
2次元配列を使用するほうがよいのでしょうか?
(連想配列の配列の代替として、2次元配列が思い浮かんだのですが、
 他に良い方法とかあるのでしょうか?)

個人的には、連想配列は、キーと値が対になっているので、
キーの名前で、どの値が設定されているのかを推定できるので、
コードの可読性の観点で考えると、2次元配列よりは、連想配列の配列のほうが
よいと思うのですが。

ちなみに、私は、次のように、連想配列の配列を編集して使用しています。
var array = new Array();
array[array.length] = { "id": 1, "description": "description1" };
array[array.length] = { "id": 2, "description": "description2" };
array[array.length] = { "id": 3, "description": "description3" };

2015年6月17日水曜日

Windowsでgitblitをサービス登録するときの注意点。

Windows7にgitblitをインストールしたのですが、
PC起動後に、毎度、gitblitを動作させるために
コマンドプロンプトで、gitblitフォルダ以下のgitblit.cmdを
実行するのは、非効率なので、gitblitをWindowsのサービスへ登録して
gitblit自動起動させようとしたのですが、順調にサービスに登録できない問題がありました。

その時の問題の解決方法をメモとして残しておきます。

gitblitをWindowsのサービスに登録する方法を、ググると
gitblitフォルダ以下のinstallService.cmdをテキストエディタで、必要な箇所(installService.cmd内のSET ARCHの箇所と、--storePassword;の箇所)を編集して、
installService.cmdをコマンドプロンプトで実行して、Windowsのサービスに登録する手順が
見つかりました。

で、自分もこの手順と同じく、installService.cmdをコマンドプロンプトで実行したのですが、
Windowsのサービスにgitblitが、登録されてなかったのです。

installService.cmdを実行すると、エラーメッセージどころか、なにも反応がなく
終了してしまうので、正常終了したかのように見えるのですが、サービスには登録されてません。

エラーが発生しているかと思い、installService.cmdを実行後のコマンドプロンプトで
 echo %ERRORLEVEL% を実行する。
すると、 8 が帰ってきました。
ということは、正常終了ではないと思い、ERRORLEVELの8は、なんだろうと
ググったのですが、それらしい情報は見当たりませんでした。

ただ、考えこんでいると、パッと思い出したことがありました。

そういえば、Windowsのサービスの登録をコマンドプロンプトから実行する時って、
管理者として実行しなければ、と。

そして、画面左下のWindowsアイコンから、すべてのプログラム -アクセサリ-コマンドプロンプトを
見える状態で、右クリックして、「管理者として実行」を選択して、
gitblitフォルダ以下のinstallService.cmdを実行すると、gitblitをWindowsのサービスに登録できました。

2015年3月15日日曜日

BlackBerry Classicで、通話とインターネットをできるように設定

BlackBerry Classicをdocomoの回線を使用して、通話とインターネットを使用できるようにしました。

手順は以下になります。

1. SIMカードを変更。
   (1) "FOMAカード DN03" から "ドコモnanoUIMカード" に変更。
       (消費税込みで、\2,160)

2. 料金プラン変更及びdocomoのプロバイダ契約追加(mopera U)。
   (1) "タイプ SS バリュー(FOMA)" から "カケホーダイプラン(SIMフリー) (Xi)" に変更。
   (2) "パケ・ホーダイ ダブル/シンプル" から "データMパック(標準)" に変更。
  (3) mopera U "Uスタンダートプラン"の契約追加。
       (消費税込みで、\3,240)

3. BlackBerry Classic端末にSIMカードを挿入して、再起動。
   (再起動する前は、docomoが認識されませんでした。再起動後にdocomoが認識された。)

また、2.の契約変更前に、SIMカードをnanoSIMに変更して、BlackBerry Classic端末に挿入したときは、docomoは、認識されませんでした。

契約をFOMAからXiに変更して、mopera Uを契約する必要があります。

2015年1月27日火曜日

BlackBerry Classicを買いました。

BlackBerry Classicをamazonで、買いました。
型名がQ20の16GBで、SIMフリー版です。
当然ですが、国内で本端末を扱っているキャリアはないので、輸入品です。





充電器の電源コードが三つ口なので、二口用に変換する電源プラグは
この端末を発送した業者さんがおまけで付けてくれてました。





まず、上箱をとります。




BlackBerry Classicとご対面。




BlackBerry Classicの端末の下には、SIMカードの出し入れに使用するピンがありました。




箱の中から、端末以外を取り出しました。
説明書、電源コード、イヤホンなどがあります。




BlackBerry Classicの裏側。




BlackBerry Classicを起動します。




起動中です。




はじめは、言語が中国の文字らしきもので表示されてます。
(ちなみに、日本語を使用するにあたって、"設定" の "言語及び入力方式" の "言語" を "日本語" に選択すればOKでした。)




説明書には、SIMカードの入れ方が書いてますね。
nano SIMに対応してますね。




せっかくだから、SIMをいれて使えるようにしてみようと思います。

ちなみに、BlackBerry Classicのスペックは次のとおり。

* システム: BlackBerry 10
* プロセッサー: 1.5 GHz / Dual Core / Qualcomm 8960
* ディスプレイ: 3.5インチ / LCD /解像度: 720 x 720 ピクセル
* カメラ: 8 メガピクセル / Flash: Yes / 前面: 2 メガピクセル/ Video: 1080p HD
* ネットワーク: 4G: 800/850/900/1800/1900/2100/2600 MHz / 3G: 850/900/1900/2100 MHz / * * GSM: 850/900/1800/1900 MHz


自分は、Androidを使用していて、Docomoと契約していますが、
ネットワークのバンドは、Docomoで大丈夫みたいです。
(Band1の2100MHz、Band19の800MHzが当てはまるはずです。)