lmhosts (NetBIOS) のキャッシュクリアの方法
nbtstat -R
foobar2000 @ Mac で DLNA over SSH する
X. 結論
DLNA サーバが HTTP で建つので単純にポートフォワードしてクライアントにサーバの情報を追加するだけ。
(UPnP は LAN 内でのサーバの相互確認に使われるだけなので端折れる)
0. 概要
foo_upnp には DLNA をインターネットに公開する為の設定があるが、わざわざその為にポートを開けるのは面倒だし、セキュリティ的にもユーザ・パスワード認証があるとは言えなんか心許ない。また、なによりもユーザ・パスワードの管理の手間を無闇に増やしたくない。
なので、できるなら SSH のトンネリングでセキュリティ・認証共に賄って楽をしたい。
けど UPnP とか絡んできてるし複雑そう…もぅマヂ無理。。…と思いきや UPnP と DLNA は切り離せると分かったので DLNA over SSH しょ。。。
1. 必要なもの
- Server, Client 共に
- Client のみ
2. セットアップ
※ Wine, foobar2000, foo_upnp のインストール・設定などは割愛
※ Server には直接 SSH できるか、他のマシン経由で SSH するなどして、該当ネットワークにトンネリングできる必要がある
- Server
- foo_upnp の設定で Media Server のポートを任意のもの(ここでは 33333)にする
- ※デフォルト (56923) 以外が望ましい
→デフォルトだと Client 側の設定を変えない限りポートがバッティングする為
- ※デフォルト (56923) 以外が望ましい
- foo_upnp の設定で Media Server のポートを任意のもの(ここでは 33333)にする
- Client
- ssh でローカルフォワードを行う
$ ssh -fN -Llocalhost:33333:localhost:33333 HOST_TO_SERVER
- foobar2000 にて UPnP Browser を立ち上げる
メニュー
→View
→UPnP Browser
- 右クリックメニューの
Add remote Internet UPnP Server
を選択 - 出現したダイアログの Host に以下を入力して OK を押下
http://127.0.0.1:33333
- enjoy!
- ssh でローカルフォワードを行う
3. その他
root 権限がなく、ビルドツールもインストールされていない環境でビルド環境を整える
CentOS 6 で git, zsh, tmux 等をビルドしたいけど、root 権限もなければインストールされているコンパイラは cc だけ…、というようなケースでビルド環境をそろえる方法。
0. 想定しているケース
1. yumdownloader (yum-utils) のインストール
yumdownloader (yum-utils) が入っていなければインストールする。
$ type yumdownloader >/dev/null 2>&1 || (mkdir ~/local; cd ~/local && releasever=$(head -n1 /etc/issue | perl -ne '/\b(\d+(?:\.\d+))\b/; print $1;') && wget -qO - "http://ftp.sakura.ad.jp/pub/linux/centos/${releasever}/os/$(uname -i)/Packages/yum-utils-1.1.30-14.el6.noarch.rpm" | rpm2cpio | cpio -id && ./usr/bin/yumdownloader --version)
2. ビルドツールのインストール
上記 1 で yumdownloader をインストールした場合は事前にパスを通しておくか、以下の各コマンドを置き換える。
$ mkdir ~/local; cd ~/local $ yumdownloader $(repoquery --resolve --requires gcc gcc-c++ kernel-headers autoconf automake binutils libtool make bison gettext pkgconfig | sort -u) $ find -maxdepth 1 -name '*.rpm' -print0 | xargs -0 -n1 -I '{}' sh -c 'rpm2cpio {} | cpio -id'
3. 環境変数を設定する
ビルド時に設定されていれば良いので、シェルの設定ファイルに記述する必要は特にない。
$ export LOCAL_ROOT="${HOME}/local" $ export PATH="${LOCAL_ROOT}/usr/bin:$PATH" $ export LD_RUN_PATH="${LOCAL_ROOT}/lib64:${LOCAL_ROOT}/usr/lib64" $ export LDFLAGS="-L${LOCAL_ROOT}/lib64 -L${LOCAL_ROOT}/usr/lib64 -R${LD_RUN_PATH}" $ export CPPFLAGS="-I${LOCAL_ROOT}/usr/include"
4. ビルド
後は普通にビルドを行うだけ。
Grunt.js でファイルを個別に minify する
grunt-contrib-uglify などで minify を行う際、そのままだと src に指定したファイルが一つにまとまった上で minify されるが、これをそれぞれのファイルで個別に minify したい場合はタスクのオプションで expand を true にし、動的なビルドを行う。
例えば、
assets |-- javascripts/ | |-- moment.js | `-- underscore.js `-- styles/ |-- cssreset-context.css `-- cssreset.css
の各 *.js, *.css をそれぞれ assets/javascripts/min/*.js, assets/styles/min/*.css として minify したい場合、Gruntfile は次のようになる。
サンプルプロジェクト
https://github.com/waltarix/grunt-minify-separately-sample
$ git clone https://github.com/waltarix/grunt-minify-separately-sample $ cd grunt-minify-separately-sample $ npm install $ grunt $ tree -sF assets assets |-- [ 170] javascripts/ | |-- [ 136] min/ | | |-- [ 14436] moment.js | | `-- [ 13422] underscore.js | |-- [ 43905] moment.js | `-- [ 41426] underscore.js `-- [ 170] styles/ |-- [ 2478] cssreset-context.css |-- [ 1554] cssreset.css `-- [ 136] min/ |-- [ 1642] cssreset-context.css `-- [ 719] cssreset.css 4 directories, 8 files
dnsmasq で特定のアドレスにバインドさせたい場合は bind-interfaces を有効にする
dnsmasq でループバックアドレスなどにバインドさせたい場合、
listen-address=127.0.0.1
の様に設定するが、これだけではワイルドカードアドレス (0.0.0.0) にバインドされてしまう。
これを打開するには上記設定と併せて、
bind-interfaces
を設定する必要がある。
Growl のアイコンには data URI scheme が利用できる
通知元のマシンのファイルシステム上にある画像が使えるので便利。
Media Player Classic HC でファイルメニューの表示が遅い問題
オプション→プレイヤー→「ディスクを開く」のメニューを隠すにチェックを付ける。