MasKのpermission denied.

新卒2年目WEBエンジニアの僕がぶつかった技術的な問題や発見のメモ

npmコマンド叩いたらCannot find module 'npmlog'

ElCapitan になってからnpm叩いたらなんかエラー出たので共有。
(ElCapitanのせいなのかは不明)

%  npm install -g gas-manager

module.js:340
    throw err;
          ^
Error: Cannot find module 'npmlog'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:18:11
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:75:3)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

もろもろ調べたら

curl -0 -L http://npmjs.org/install.sh | sudo sh

上の叩けばいけるっぽかったので叩いたらいけた(KONAMI

参考
github.com

AndroidのテキストビューにonClickListenerをつける

f:id:mask0702:20151209100945j:plain

Androidで、TextViewの領域にonClickListenerつかないなーと思ってたら、
android:clickable="true"
の記述が必要だったらしい。

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="hoge"
    android:clickable="true"/>

なるほど、それは気付かん。

【Pepper】naoqiOSを色々触ってみた。

f:id:mask0702:20160201204016p:plain

Pepperをもろもろ触ってみたので、そのメモ集

Pepperにcrontab, vim, yum, emerge, ない。

pepper [0] /usr/bin $ crontab -e
-bash: crontab: command not found

naoコマンドはあまり使わないほうがよさそう。

pepper [err 241] / $ nao
Usage: naoqi [options] stop | start | restart | describe | zap
Options: [dDsvl:ZChqVv]
-d, --debug set xtrace when running the script
-Z, --dry-run show what would be done
-s, --ifstarted only run commands when started
-D, --nodeps ignore dependencies
-l, --lockfd fd of the exclusive lock from rc
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly

nao stop

すると、一応止まるけどPepperの肩が赤くなるのでやばい感。

qicli コマンドが便利かも

pepper [0] ~ $ qicli call ALRobotModel.hasHands
true
pepper [0] ~ $ qicli call ALRobotModel.hasLegs
true
pepper [0] ~ $ qicli call ALRobotModel.getRobotType
“Juliette"

次回確認。
これが有力かも
qiita.com

有力そうなリンク集

NAOqi / コレグラフ APIモジュール一覧(ver. 2.3.1)
qiita.com

Pepperアプリ開発Tips
qiita.com

PEPPER qicliコマンド
qiita.com

QiChatを使ってPepperを自由に動かす。【イベント】
qiita.com


あと何気にPepper公式本は普通に便利

Pepperプログラミング 基本動作からアプリの企画・演出まで

Pepperプログラミング 基本動作からアプリの企画・演出まで

【Android】開発環境では動くのにapkファイルに固めた後だとGoogleMapが表示されない問題

f:id:mask0702:20160131145020p:plain

えぇ、3時間ほど無駄にしましたよ。お陰様で。えぇ。

タイトル通りなんですが、開発環境の実機デバッグではGoogleMapが普通に使えていたのに実際にapk形式に固めて動かしてみたらグレーの画面が表示されていました。

↓ 開発環境
f:id:mask0702:20160131145455p:plain

↓ apkに固めてみて動かしたら
f:id:mask0702:20160131145553p:plain


どうした俺のGoogleMap!!!!
動け動け動け動け!!!!今動かないとダメなんだよ!!!!(納期的に)
f:id:mask0702:20160131150504p:plain


ってわけで泣きながら原因を探す。
ちゃんとgoogle_maps_api.xmlにキー書いてあるしなー。

teratail.com

teratailに質問投げても帰ってこないしなー。

公式ドキュメント読んでもよくわから...ん?

The API key is based on a short form of your app's digital certificate, known as its SHA-1 fingerprint. To display the SHA-1 fingerprint for your certificate, first ensure that you are using the right certificate. You may have two certificates:

Get API Key  |  Google Maps Android API  |  Google Developers

You may have two certificates

!!!!

debug版とrelease版では別のAPIキーが必要!!!!

やったね、たえちゃん。なんでだよ、たえちゃん。

というわけで公式ドキュメント見ながら release certificate 作って別のAPIキー作って
app/src/release/res/values/google_maps_api.xml
に書いて一件落着。

ちなみにこの時、
app/src/debug/res/values/google_maps_api.xml
app/src/release/res/values/google_maps_api.xml が分かれてることを知った笑

なるほどね。さすがにそれはGoogleMap表示されないわ。

公式ドキュメント、読もう。ちゃんと。

f:id:mask0702:20151209100945j:plain

実機デバッグ中にAndroid: “Unable to open sync connection!”

f:id:mask0702:20151209100945j:plain

AndroidStudioで実機デバッグで開発していて、デバッグボタンを押したらなかなか実機でデバッグが始まらないな...ってなってコンソールをみたら、
“Unable to open sync connection!”
ってでてた。

もろもろ調べたら、前回実行させていたappが正常に終了していないのが原因っぽいことがわかった。

でもそれを止める方法がわからなかったのでAndroidStudioを再起動したら直った

AndroidStudioが実機を認識しない。

AndroidStudioで実機デバッグをしようとしたら、実機を認識しない...ちゃんと開発者モードでUSBデバッグonになってるのに...
と思ったら、どうやらUSBコネクタが悪かったらしい。

teratail.com

Androidコネクタには、充電専用のものと充電とデータ通信もできるものがあるらしく、僕が使っていたのは充電専用。

偶然もう一つ持ってる方がデータ通信できるやつだったので事なきを得た。

Androidで簡単に外部と通信してjsonを取得する方法。

Android開発で特定のurlと通信して、jsonを取得する

ってだけのことが紆余曲折を経たので共有

当初、

qiita.com

この記事読んでそれっぽく真似してたんだけど、org.apache.http.~~~がないとか言われて、入れる努力をしたがうまくいかずに挫折。

路頭に迷っていたら何やら便利そうなもの発見。

grandbig.github.io

モバイルアプリを開発するにあたってネットワーク通信の知識は欠かせないものとなっている一方、ネットワークプログラミングの世界にはキャッシュや高速化、データ取得やキャンセル処理などプログラミングテクニックが多数存在してます。これらの課題を効率的に解決する方法がVolleyライブラリです。

ふむ。ありがたい。
導入方法は上の記事が超絶丁寧なので割愛。

しかし手順通りやっていたところ、gradleを変更してsyncし直したところ
failed to find target with hash string 'android-22'

みたいなエラーが。なんかandroid api 22のなんかが足りないことなんだなと思ってapi22系のものを大体入れたら解決した。

stackoverflow.com