読者です 読者をやめる 読者になる 読者になる

みちのいに!!

自分のメモと、他にもハマる人がいそうなことを書く

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.

ディスク容量は足りている。

github.com

VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談 - みちのいに!! で、ゲストのLinuxからホストのWindowsの領域にアクセスできるようにして容量不足問題を解消したが、シンボリックリンクが貼れなくてよくないらしい。

解決策

シンボリックリンクを作らなければ良い

npm install --no-bin-links --save express

でも

シンボリックリンク張れないといっぱいエラーが出るから茨の道だ やめようかな

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
で自宅と設定すればよいです。

モバイル端末にて

  1. 自宅の位置にピンをドロップする。
  2. 場所の名前をスワイプする
  3. 右上メニューからラベルの追加
  4. 自宅 とする
  5. 自宅の住所を設定するが出てくるので押す
  6. アップデートをおす

2017.04.01 追記
なんかアクセスが増えていたので確認してみたら,なんかアプリの動きが変わっているような……
また確認してみます.

Cordovaとandroidでデバッグするときの備忘録

端末一覧

adb devices

端末を指定する

端末一覧の左側に出たIDをつかう

adb -s <id>

ログを見る

adb logcat
時刻
adb logcat -v time
cordovaのchromiumからのログをV、他をSで拾う
adb logcat chromium:V *:S

*CordovaLogではなぜか出力がなかった

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の修正も忘れずに。

node.jsからmongooseでmongoDBさわる時のメモ

メモです とても適当に書きます

mongo shell

//db一覧
show dbs;
//collection一覧
show collections;
//collection作る
db.createCollection("users");
//いれる
db.users.insert({name:"jack",age:19});
//みる
db.users.find();
//けす
db.users.remove({name:"jack"});
//けす
db.users.drop();

node.js

var mongoose = require("mongoose");
mongoose.connect("mongodb://user:pass@localhost/db_name");
//スキーマを作る http://mongoosejs.com/docs/guide.html
var Schema = mongoose.Schema;

var blogSchema = new Schema({
  title:  String,
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
});

nginxでリバースプロキシがサブドメインな失敗談

くれはちゃん(お名前.comのVPSで、ArchLinuxで動いている。
くれはちゃん育成日記 カテゴリーの記事一覧 - みちのいに!!参照)のお話です。

リバースプロキシってなに

なにかアプリケーション作るのはいいものの、http://example.com:8080とかはダサいし、環境によっては80と443とか以外通れなかったりする。そこで、http://app.example.com(:80)/以下のアクセスをhttp://example.com:8080/に飛ばすようにしよう!ってやつ(雑な理解)

サブドメインってなに

example.com ←これが普通のドメイン
sub.example.com ←こういうことができる これがサブドメイン

どうやるの

nginxの基本的な設定はしてあるものとします。私がした設定はこちらを見てください
くれはちゃん育成日記3日目(お名前VPSに入れたArchLinuxを設定する話) - みちのいに!!
で、
/etc/nginx/conf.d/app.conf に

server {
        listen  80;
        server_name app.example.com;
        access_log /var/log/nginx/access_app.log main;
        location / {
                proxy_pass      http://127.0.0.1:8080;
                proxy_set_header HOST $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

って書いて
systemctl restart nginx
で動くはずだったんですよ。動かなかったんです。

おかしいなーってnginxの設定をいじっても一向に良くならない。直接サーバー内からhttp://127.0.0.1:8080をたたくとアクセスは出来る。ただ、app.example.comを叩いてもアクセスログにすら記録されない。
試しにapp.example.comでnslookupしてみたんです。
ありませんでした。

DNSの設定してませんでした

続きを読む