2016年5月7日土曜日

Chrome で位置情報が取得できなくなりました

Chromeで位置情報(GPS)がとれなくなりました


GW中に 一部のWEBサービスで位置情報がとれずいろいろ残念なことになりました
原因は Chrome V50 のアップデート
https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

どうやら 非SSLページにおいては
HTML5 の navigator.geolocation が使えなくなったようです

あくまで 非SSLページでの話なので サイト全体ではなく使用ページのみ SSL化すればいいみたいです

SSL化といえども証明書代馬鹿になりませんよね
一応無料のSSL証明書も以下から取得できます

https://letsencrypt.org/

SSL証明書とかつらいひとは 以下のようにすればとりあえず開発はできます
(localhostは証明書なしでいいそうです)
chrome.exeのパス --user-data-dir=ユーザーデータディレクトリ --unsafely-treat-insecure-origin-as-secure="http://ドメイン"

例)
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=C:\Temp\Chrome --unsafely-treat-insecure-origin-as-secure="http://example.com"
batファイルにしておくと良いでしょう



user-data-dir

指定しないとダメなようです
一人用PCなら例のとおりでいいですが共有の場合は C:\ユーザー下のどこかが良いでしょう

2016年3月13日日曜日

CentOSでPT3,PT2併用

PT3が残念ながら生産終了となってしまいましたね

各種ドライバの組み込みはその辺にわんさかあるので主にハードウェア周りについて
テーマは24H稼動する録画サーバー兼ファイルサーバーです

24Hなので電気代を一番気にしました

ということでいきなり

構成

マザーボード

ASROCK N3700M
TDP6WなQuadCoreな Pentium N3700 を搭載!


メモリ

もちろん MAX 16GB
N3700M はデスクトップ用の通常電圧のやつが使えるのとN3700がサポートする8GBを超えての16GBが使えるのがうれしいですね

ストレージ

あまりものです
  • SATA
    • INTEL SSDSA2M120G2GC (OS領域)
  • RAID
    • RocketRaid 640L (初期型: 88SE9230搭載・DATA領域)
      • Seagate ST3000DM001 x2 (RAID 0)

チューナー

  • PT3
  • PT2
PT3 を買った直後に 終了のお知らせが出てどうにも手に入る気がしなかったので2枚目はPT2にしちゃいました

ライザーカード

DIR-EB262-C13
PCI-Express => PCIx2 に変換してくれるライザーカードです


OS

CentOS7 いつものやつですはい

構成について

マザーボード

N3700ITXとも検討したのですが Raidカードを使いたかったので PCI-Expressが1本しかないのでやめました

PCI-Express スロット

  • PCI-Express X1: PT3
  • PCI-Express X16: RocketRaid 640L
  • PCI-Express X1: DIR-EB262-C13
一番下の PCI-Express からDIR-EB262でPCIボードに接続しPT2を挿しています
ケースはミドルタワーです N3700Mが MicroATXのためスロット4つ分ほどスペースがあるのでマザーボードと干渉せず楽チンに取り付けられます
さらに マザーが MicroATXなのでタワーケースだと 下2スロット分マザーが干渉せず余裕でPT2が取り付けられます
PT3が新品でも中古でも2万オーバーとだいぶ高値ですがアンテナの数とケースのPCIスロットの数を気にしなければ
ライザーカード+PT2中古x2でもお釣り来ますね

* ドスパラさんで 中古PT2 5,990でした


運用

稼動中の負荷はこんな感じ
top - 17:03:43 up 23:36,  1 user,  load average: 0.26, 0.15, 0.15
Tasks: 164 total,   1 running, 155 sleeping,   0 stopped,   8 zombie
%Cpu(s):  2.6 us,  0.8 sy,  0.0 ni, 96.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 15740312 total,  2478336 free,  1214592 used, 12047384 buff/cache
KiB Swap:  7995388 total,  7995388 free,        0 used. 14219004 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18933 recorder  20   0  112848   2772   1216 S  11.8  0.0   0:24.34 recpt1

iostat

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
2.36    0.00    0.53    0.00    0.00   97.11

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               9.60         0.00      4800.00          0      48000
sdb               0.00         0.00         0.00          0          0
dm-0              9.60         0.00      4800.00          0      48000
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

4アンテナ稼働

top - 20:16:05 up 4 min,  1 user,  load average: 1.59, 0.68, 0.28
Tasks: 177 total,   2 running, 175 sleeping,   0 stopped,   0 zombie
%Cpu(s): 32.6 us,  8.6 sy,  0.0 ni, 58.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 15740312 total, 13939900 free,  1128928 used,   671484 buff/cache
KiB Swap:  7995388 total,  7995388 free,        0 used. 14380656 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2902 recorder  20   0  963776  76476  11012 R 100.3  0.5   0:03.69 ruby
 2852 recorder  20   0  112336   2648   1220 S  19.5  0.0   0:09.91 recpt1
 2863 recorder  20   0  112848   2772   1220 D  15.5  0.0   0:08.67 recpt1
 2834 recorder  20   0  112992   3028   1220 S  11.6  0.0   0:09.55 recpt1
 2872 recorder  20   0  112272   2388   1216 D   8.6  0.0   0:08.06 recpt1

ruby 100%なのはちょうどこのタイミングで予約検出バッチが稼動したせいです

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          14.36    0.00    7.05    0.00    0.00   78.59

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               4.00         0.00        20.00          0         20
sdb               0.00         0.00         0.00          0          0
dm-0              5.00         0.00        20.00          0         20
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

構成としては書き込み待ちを発生させないために
recpt1 で ファイルをSSD上に書き出し終了後にRAIDディスクにファイルを移動させています

電気代



緑の 12時までが PT3 単体 15時以降が PT3+PT2 です
概ね 45W前後で稼動、録画CMカット処理が入ると 48Wに瞬間的に増える感じ

1日 27円前後です

HDDレコーダー 20W + NAS 15W前後って考えるとちょっと足が出ちゃうかな
HDDもだいぶ古いので 省エネなものがあれば交換してみたいと思います

2015年8月22日土曜日

CentOS7 に tmux をインストール

CentOS7 に tmux をインストールした際のメモです

資材

  • tmux
    • http://tmux.github.io/
    • https://github.com/tmux/tmux/releases/download/2.0/tmux-2.0.tar.gz
  • libevent
    • http://libevent.org/
    • https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
環境
gcc バージョン 4.8.2 20140120 (Red Hat 4.8.2-16)

ダウンロード

オリジナルソースはいつも /usr/local/src に置いています

# cd /usr/local/src/
# wget https://github.com/tmux/tmux/releases/download/2.0/tmux-2.0.tar.gz
# wget https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz

libeventのインストール

注意:我が家のCentOSは netinstall の minimal版です。環境によりlibeventが先行でインストールされている可能性があるので適宜処理してください

# cd /usr/local/src/
# tar -zxvf libevent-2.0.22-stable.tar.gz
# cd libevent-2.0.22-stable
# ./configure
# make
# make install
ldconfig の パスを追加し ldconfig をリロード
# echo /usr/local/lib >> /etc/ld.so.conf.d/libevent.conf
# ldconfig
pkgconfig の検索パスにlibeventも追加
# ln -s /usr/local/lib/pkgconfig/libevent.pc /usr/lib/pkgconfig/libevent.pc
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
以上で libevent の導入終わり

tmuxのインストール

# tar -zxvf tmux-2.0.tar.gz
# cd tmux-2.0
# ./configure --prefix=/opt/tmux-2.0.22

checking for LIBEVENT... yes

が通っていることを確認する
失敗してたら pkgconfig の設定を見直すこと
# make 
# make install
最後に /usr/local/bin にシンボリックリンクを通して終了
ln -s /opt/tmux-2.0.22/bin/tmux /usr/local/bin/tmux

個人的には アップグレードの際に 旧バージョンを残してきり戻せるようにするのが好きなので
/opt下にバージョンごとのディレクトリを用意して PATHのbinにシンボリックリンクを張るようにしています

2015年2月1日日曜日

CentOS7でDLNAサーバー(minidlna)を構築 -サービス設定編-

CentOS7 を DLNAサーバーに でインストールした minidlna をサービス登録&
firewallへの追加を行います

minidlna を systemctl へ登録


CentOS7 より systemv が 廃止?され サービスは systemctl 経由で行われるようになりました
minidlna はまだ 対応していないため自前で作る必要があります

作り方はいたって簡単

/usr/lib/systemd/system/ に 以下の service ファイルを設置するだけ

# cat /usr/lib/systemd/system/minidlna.service
[Unit]
Description=minidlna server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
PIDFile=/var/run/minidlna/minidlna.pid
EnvironmentFile=/etc/sysconfig/minidlna
ExecStart=/usr/local/sbin/minidlnad -R -f $CONFIG_FILE
ExecStop=/bin/kill -SIGTERM $MAINPID
ここに書かれるのは 起動/停止コマンドと環境ファイルのみとなるため
起動に必要な引数は EnvironmentFile に記載します
起動引数に -R をつけて ライブラリをスキャンしなおすようにしています
EnvironmentFile の中身は
# cat /etc/sysconfig/minidlna
CONFIG_FILE=/etc/minidlna.conf
だけです
minidlna.conf の中身は前回作ったものです
これで
systemctl start minidlna
systemctl stop minidlna
が成功すればOK

# systemctl status minidlna
minidlna.service - minidlna server
   Loaded: loaded (/usr/lib/systemd/system/minidlna.service; static)
   Active: active (running) since 日 2015-02-01 14:45:40 JST; 5h 56min ago
 Main PID: 12790 (minidlnad)
   CGroup: /system.slice/minidlna.service
           └─12790 /usr/local/sbin/minidlnad -R -f /etc/minidlna.conf

 2月 01 14:45:40 localhost.localdomain systemd[1]: Started minidlna server.

firewalld への追加


DLNAサービスで必要なポートは
  • udp 1900
  • tcp 5000
です
そのほか minidlna.conf で 指定したWEBポートを必要あればあけます
一つ一つ
# firewall-cmd --add-port=XXXX --permanent
とかしてもいいんですが
今回は service として登録してしまいました
/usr/lib/firewalld/services/
には service 毎の設定が入っているため同じようにファイルを作ります
内容は以下のとおり
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>minidlna</short>
  <description></description>
  <port protocol="udp" port="1900"/>
  <port protocol="tcp" port="5000"/>
</service>
これで
# firewall-cmd --add-service=minidlna --permanent
# firewall-cmd --reload
とすれば ポートが開放されるので 他のDLNA機器から検索できるか確認してみましょう

CentOS7でDLNAサーバー(minidlna)を構築 -インストール編-

CentOS7にDLNAサーバーをインストールしたのでメモ
当初 mediatomb を インストールしようとしたが コンパイル時にエラーとなるためあえなく撤退し minidlna をインストールしました

大まかな流れ

1. minidlna のコンパイル&インストール
2. systemctl への追加
3. firewalld への登録

minidlna のコンパイル&インストール

資材

  • minidlna-1.1.4.tar.gz
  • ffmpeg
必要なRPMをインストール

sudo yum install libjpeg-turbo-devel libid3tag-devel libogg-devel libvorbis-devel flac-libs flac-devel

ffmpeg から 各種ランタイムの調達

ffmpeg を git から調達
基本的に minidlna で使用するライブラリ群しかほしくなかったのでライブラリのみをコンパイルインストールしました
$ git clone git://source.ffmpeg.org/ffmpeg.git
$ cd ffmpeg
$ ./configure --enable-shared --disable-programs
$ make
$ sudo make install
で /usr/local/lib に soファイルが配備されます

minidlna の コンパイルインストール

$ tar -zxvf minidlna-1.1.4.tar.gz
$ cd minidlna-1.1.4
$ ./configure
$ make
$ sudo make install

ld パスの追加

ffmpeg のライブラリインストールで各種モジュールが /usr/local/lib に配置されたので配置先もldパスに追加し
/etc/ld.so.conf.d/ 配下に /usr/local/lib を記述したファイルを配置し読み込みなおす
$ sudo echo '/usr/local/lib' > /etc/ld.so.conf.d/minidlna.conf
$ sudo ldconfig

設定ファイルの配置


minidlna.conf が ソースディレクトリにいるので /etc/ に配置
$ sudo cp minidlna.conf /etc/

/etc/minidlna.conf を 自分の環境に合わせて変更してください
以上で sudo /usr/local/sbin/minidlnad -f /etc/minidlna,conf を叩けば minidlna が起動できます。