firefoxのアドオンつくりたい 1
つくりたいなーって思った
https://developer.mozilla.org/en-US/Add-ons/SDK
Windowsです ほんとはmingw+msys2でやりたかったけど、なんかnode.jsのバージョン古いしnvmも上手く動かないので、WindowsにNodistな感じで。
Install
Node.js
頑張っていれてください 割愛。
私はWindowsなのでNodistを使ってます。
jpm
昔はcfxだったみたいですね。ゆとりなのでよくわかりませんが、今はjpmを使うみたいです。
npm i jpm -g
Hello,World
とりあえずなんかしよう
Getting Started (jpm) - Mozilla | MDN
npm init
なんかいろいろきかれる
title: (My Jetpack Addon) helloWorld helloWorld name: (hello) version: (0.0.1) description: (A basic add-on) entry point: (index.js) author: m77 engines (comma separated): (firefox,fennec) firefox license: (MIT)
enginesってのだけよくわからなかったけど、 package.json - Mozilla | MDN らしい。
チュートリアルにはこんなコードがある。ボタンをツールバーに追加して、押すと新しいタブを開いてジャンプする。
var buttons = require('sdk/ui/button/action'); var tabs = require("sdk/tabs"); var button = buttons.ActionButton({ id: "mozilla-link", label: "Visit Mozilla", icon: { "16": "./icon-16.png", "32": "./icon-32.png", "64": "./icon-64.png" }, onClick: handleClick }); function handleClick(state) { tabs.open("http://www.mozilla.org/"); }
これをindex.jsにコピペして、dataフォルダにicon-??.pngを保存していれて
jpm run
すると、なんかMozillaジャンプボタンができてる。
こうしてこの世界でのHello world的ななにかは成功した。
Create XPI
リリースする時は、
jpm xpi
すればXPIファイルができる。
Node.js+Express でなんかしたくなった時に見るメモ
アプリの新規作成とかあんまりしないから忘れるよね
node.jsとかは入ってるものとします
mkdir myapp cd myapp npm init --yes npm install --save express npm install --save express-generator express
実行するとき
run.shを叩く
run.sh #!/bin/bash export PORT=19999 npm start
これだけすれば触ったことあれば思い出すんじゃないの(適当)
npm install しようとしたら insufficient space(容量不足)といわれた
実行しようとしたコマンド
npm install --save express
出てきたエラー
ENOTSUP: operation not supported on socket, symlink '../mine/cli.js' -> '/home/m77/shares/myapp/node_modules/.bin/mime' This is most likely not a problem with npm itself and related to insufficient space on your system.
ディスク容量は足りている。
VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談 - みちのいに!! で、ゲストのLinuxからホストのWindowsの領域にアクセスできるようにして容量不足問題を解消したが、シンボリックリンクが貼れなくてよくないらしい。
でも
シンボリックリンク張れないといっぱいエラーが出るから茨の道だ やめようかな
ArchLinuxでsimutransサーバを建てる 2016/02 120.1.3
simutransサーバーをマルチプレイ用に建てたかった
またかよ
まあ 去年の記事、Archでsimutransサーバー - みちのいに!! の焼き直しだけど、新しい記事のほうが安心感あると思う。
ArchにかぎらずLinuxならだいたい同じ方法でできると思う。
まず無用なトラブルとかを避けるために、simutrans専用ユーザを作ってそれにログインする。
コンパイル
mkdir simutranstmp cd simutranstmp wget -O simutrans-src-120-1-3.zip https://sourceforge.net/projects/simutrans/files/simutrans/120-1-3/simutrans-src-120-1-3.zip/download unzip simutrans-src-120-1-3.zip chmod +x configure.sh ./configure.sh make
configure.shするとconfig類は勝手に設定してくれる。GUIがあるサーバだったら明示的にconfig.defaultを書かないといけないのかもしれない。
設置
今回はバージョン別に管理したかった。
mkdir -p ~/simutrans_bin/120.1.3 cp sim ~/simutrans_bin/120.1.3 cp -r simutrans/* ~/simutrans_bin/120.1.3 cp get_pak.sh ~/simutrans_bin/120.1.3 cd ~/simutrans_bin/120.1.3
pak取得
このまま本体を実行するとエラーが出てくる。
120.1.3に同梱されているget_pak.shはpak64のバージョンがちょっと古いので、Windows版のpackset downloadでダウンロードしたものとバージョンが一致しない。
https://sourceforge.net/projects/simutrans/files/pak64/120-1/simupak64-120-1-2.zip
に55行目のリンクを書き換える。
pakを取得すると、 ~/simutrans_bin/simutrans/pak ができる。ここではうごかないのでsimと同階層に移す。
chmod +x get_pak.sh ./get_pak.sh mv ~/simutrans_bin/simutrans/pak ~/simutrans_bin/120.1.3/pak
get_pak.sh、自分のディレクトリ名がsimutransであることを前提としているのかな。
言語ファイル取得
そして、こんなエラーも
FATAL ERROR: simmain::main() - Unable to load any language files *** PLEASE INSTALL PROPER BASE FILES *** either run ./get_lang_files.sh or download a complete simutrans archive and put the text/ folder here. Aborting program execution ...
言語ファイルがちゃんと入ってないらしい。さらにそれを入れるシェルスクリプトも改行コードがCRLFになっててめんどくさい。
cp ~/simutranstmp/get_lang_files.sh ~/simutrans_bin/120.1.3/text/ cd ~/simutrans_bin/120.1.3/text/ chmod +x get_lang_files.sh sed 's/\r//' -i get_lang_files.sh ./get_lang_files.sh
iptablesとかいじってSimutransで使用するポート(13353)を開いておく
~/simutrans/save/ に GUI環境なんかで同じpakで作ったセーブデータを設置(test.sveとする)
サーバーは自力でセーブファイルを作ることはしないらしい
./sim -server -objects pak -load test.sve
これでアクセスできるか確認 とくにエラーらしいエラーを吐かなければOK
デーモン化
systemdだからこんなことしてるけど、それぞれの方法で
/home/simutrans/simutrans.sh
~/simutrans_bin/120.1.3/sim -server 13353 -server_name m77Server -objects pak -lang ja -nomidi -nosound -load test.sve
/usr/lib/systemd/system/simutransd.service
[Unit] Description=Simutrans [Service] User=simutrans ExecStart=/bin/sh /home/simutrans/simutrans.sh
GoogleMapのアプリで自宅の位置を微調整する方法
検索してもなかなか正解にたどり着いている人がいなかったので。
support.google.com
で自宅と設定すればよいです。
モバイル端末にて
- 自宅の位置にピンをドロップする。
- 場所の名前をスワイプする
- 右上メニューからラベルの追加
- 自宅 とする
- 自宅の住所を設定するが出てくるので押す
- アップデートをおす
2017.04.01 追記
なんかアクセスが増えていたので確認してみたら,なんかアプリの動きが変わっているような……
また確認してみます.
Cordovaとandroidでデバッグするときの備忘録
端末一覧
adb devices
端末を指定する
端末一覧の左側に出たIDをつかう
adb -s <id>
ログを見る
adb logcat
時刻
adb logcat -v time
shell
adb shell
パッケージ一覧
$ pm list package
アプリごとの作業ディレクトリに潜る
シェル内で
$ run-as com.example.package
VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談
結論
日本語のArchWikiには書いてないけど、vmhgfs-fuseってのがあるらしいよ
できなかった方法
mount -t vmhgfs .host:/<shared_folder> /home/user1/shares
cannot mount filesystem Invalid Argument
といわれてうごきません。せっかくopen-vm-tools-dkms のインストールもしたのに。
なんでかはしらない。
英語Wikiにはlegacyな方法として紹介されていて、 VMware Workstation and Fusionでしか動かないって書いてある。
できる方法
vmhgfs-fuse -o allow_other -o auto_unmount .host:/<shared_folder> <shared folders root directory>
/etc/fuse.conf の allow_other をアンコメントすること
詳細は
VMware/Installing Arch as a guest - ArchWiki
みてがんばろう。といっても上のコマンドが実行できたら、あとはboot時に動くように、oneshotのservice作るだけです。
できない方法で頑張ってた人は、その過程で作った、mnt-hgfs.mountやmnt-hgfs.automountなどの削除及び/etc/fstabの修正も忘れずに。