2015年5月31日

OpenLayers 3.5.0でVector APIが変更されてた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
久しぶりにOpenLayers 3を使おうと思ったら、昔のコードのままでol.jsを差し替えだけでは動きませんでした。
昨年10月に触ったときは3.0.0だったOpenLayers 3も、いつの間にか3.5.0になっていたので色々と機能追加や変更があったようです。
特に今回引っ掛かったのはGeoJSONの読み込みで、リリースノートを見ると、ol.source.*(ol.source.GeoJSONなど)が廃止されてol.source.Vectorに統一、formatでこれを指定することになったらしい。

以下、作ってる途中のコードの切れっ端ですが...

3.4.0まで
var smallScalePoints = new ol.layer.Vector({
    source: new ol.source.GeoJSON({
        url: 'smallScalePoints.json',
        projection: 'EPSG:3857'
    }),
    style: styleFunction,
    minResolution: 1000,
    maxResolution: 20000
});

3.5.0以降
var smallScalePoints = new ol.layer.Vector({
    source: new ol.source.Vector({
        url: 'smallScalePoints.json',
        format: new ol.format.GeoJSON(),
    }),
    style: styleFunction,
    minResolution: 1000,
    maxResolution: 20000
});

projectionの指定も必要なくなり、読み込み時にviewのprojectionとソースのprojectionが一致してない場合は変換されるようになったみたい。

参考 : Release v3.5.0 · openlayers/ol3

2015年4月14日

Raspberry Piのピン変換とラベルを作ってみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Raspberry Pi、ピンヘッダなのでArduinoみたいにジャンパワイヤーをぶすぶす刺せないのつらい...
と、初代を買った当初から思っていたのですが、ここ1年くらいGPIOをあんまり触ってなかったので、すっかり忘れていました。
最近になって、また色々と触り始めたので思い出したように作ってみた訳です。

40P(20×2)のピンソケットをうまく位置合わせしてガッチリ押し込んであげると、そのままイイ感じにくっついてくれるので特にハンダ付けはしていません。
ラベルはIllustratorで書いて、市販のステッカーシート(A4サイズ)にインクジェットプリンタで印刷。
一番小さい文字は2.8ptですが、"写真用紙光沢"+"きれい"の設定で潰れずに印刷できました。


あとはこれをカッターで切って貼るだけです。
実際に使ってみると以下のように基板面から刺す位置が上がってしまいますが、ピンヘッダ部が空いているケースに入れている場合は丁度よい位置になるはず。


2015年4月7日

RTX1100をVPNサーバとして使う

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

YAMAHAのVPNルータ「RTX1100」を秋葉原にて中古で入手したので、これをルータとしてではなくVPNサーバ機能のみで使用するconfigを考えて使ってみます。

#RTX1100は全ポート100BASEなので、フレッツ光ハイスピードやネクスト契約だとボトルネックになってしまうため。
#これが10年前なら勿体ない、贅沢すぎる使い方だ。

イメージとしては、NTTのHGWにルータとDHCPサーバを任せ、RTX1100はVPNで入りたいLANの中に入れてあげる感じ。
まず、HGWに来たアクセスをRTX1100に渡してあげる必要があるので、静的IPマスカレード設定で
  • ESP
  • UDP 500
  • UDP 4500
をRTX1100に渡します。

今回はRTX1100を 192.168.1.5 とします。

我が家の場合、PPPoEマルチセッションで2セッション目として固定IPを貰えるISPに接続しているため、この固定IPで外部からアクセスします。
固定IPが貰えないISPと契約している場合、DDNSサービスやYAMAHAのネットボランチDNSを使う必要があります。

次にRTX1100の設定。
ポートはLAN3を使用、2台同時に接続できるようにトンネルは2つ、方式はL2TP/IPsecに。
VPN接続してきたクライアントに割り当てるIPアドレスは192.168.1.140〜141を予約しておきます。
[username]や[password]、[shared_key]は適宜変更してください。
administrator password [password]
console character ascii
ip route default gateway 192.168.1.1
ip lan3 address 192.168.1.5/24
ip lan3 proxyarp on
pp disable all
pp select anonymous
 pp bind tunnel1-tunnel2
 pp auth request mschap-v2
 pp auth username [username] [password]
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type mppe-any
 ppp ipv6cp use off
 ip pp remote address pool 192.168.1.140-192.168.1.141
 ip pp mtu 1258
 ip pp tcp mss limit auto
 pp enable anonymous
no tunnel enable all
tunnel select 1
 tunnel encapsulation l2tp
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac
  ipsec ike keepalive use 1 off
  ipsec ike local address 1 192.168.1.5
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text [shared_key]
  ipsec ike remote address 1 any
 l2tp tunnel disconnect time off
 l2tp keepalive use on 10 3
 l2tp keepalive log on
 l2tp syslog on
 ip tunnel tcp mss limit auto
 tunnel enable 1
tunnel select 2
 tunnel encapsulation l2tp
 ipsec tunnel 102
  ipsec sa policy 102 2 esp aes-cbc sha-hmac
  ipsec ike keepalive use 2 off
  ipsec ike local address 2 192.168.1.5
  ipsec ike nat-traversal 2 on
  ipsec ike pre-shared-key 2 text [shared_key]
  ipsec ike remote address 2 any
 l2tp tunnel disconnect time off
 l2tp keepalive use on 10 3
 l2tp keepalive log on
 l2tp syslog on
 ip tunnel tcp mss limit auto
 tunnel enable 2
ipsec auto refresh on
ipsec transport 1 101 udp 1701
ipsec transport 2 102 udp 1701
dns server 192.168.1.1
dns notice order msext server
l2tp service on
save
当初、iPhoneからVPN接続した際にHGWからDNSが通知されず、URLでアクセス出来ない問題が生じていましたが、最後から3行目の"dns notice order msext server"で無事解決。
"dns server 192.168.1.1" とセットで入れてあげないと、VPN接続してきたクライアントにDNSサーバが通知されない模様。
普通はRTX1100をルータとして使用するので、RTX1100がDNSキャッシュサーバとして動作するように設定するので気付くのに時間が掛かりました...
コマンドリファレンスからは、dns serverで設定したものが既定で通知されるように読み取ったんだけど...

今まではCentOSにOpenswanでL2TP/IPsec VPNを実現していたけど、RTX1100の方が接続確立までの時間も早くて通信も安定している気がする。

2015年3月30日

Raspberry Pi 2にArchLinux, Xfce, Chromiumをインストール

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

卒論などでバタバタしてて放置してたRaspberry Pi 2、2ヶ月弱ぶりに触ってみました。
2/7の段階ではUSBキーボードを刺しただけでハングするくらい不安定だったArchLinuxでしたが、3/2に公開されたバージョンがあったので、インストールしてみます。
※細かい説明はコマンドの右側に「←」に続けて記述しています。(コピペ時に含めない様に注意)

パーティション作成

ここは別のマシン(ArchLinux on ThinkPad X220)で行いました。
トランセンド製のMicroSDHCカード 16GBを使用。

sudo fdisk /dev/mmcblk0
fdisk (util-linux 2.25.2) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。

コマンド (m でヘルプ): o
Created a new DOS disklabel with disk identifier 0xd88f609a.

コマンド (m でヘルプ): p
Disk /dev/mmcblk0: 14.7 GiB, 15719727104 bytes, 30702592 sectors
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xd88f609a

コマンド (m でヘルプ): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初のセクタ (2048-30702591, default 2048): 
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-30702591, default 30702591): +100M

新しいパーティション 1 をタイプ Linux、サイズ 100 MiB で作成しました。

コマンド (m でヘルプ): t
Selected partition 1
16 進数コード (L で利用可能なコードを一覧表示します): c
DOS 6.x 領域を作成、または変更してしまった場合は、cfdisk 付属文書にある追加情報ページを参照してください。
パーティションのタイプを 'Linux' から 'W95 FAT32 (LBA)' に変更しました。

コマンド (m でヘルプ): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
パーティション番号 (2-4, default 2): 2
最初のセクタ (206848-30702591, default 206848): 
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (206848-30702591, default 30702591): 

新しいパーティション 2 をタイプ Linux、サイズ 14.6 GiB で作成しました。

コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。

フォーマットと展開

sudo mkfs.vfat /dev/mmcblk0p1
sudo mount /dev/mmcblk0p1 boot
sudo mkfs.ext4 /dev/mmcblk0p2
sudo mount /dev/mmcblk0p2 root
su
wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-2-latest.tar.gz
bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root
sync
mv root/boot/* boot
umount boot root
SDカードを取り出す。

Rapsberry Pi 2での作業

SDカードをRaspberry Pi 2に刺して、LANケーブルを接続、電源を入れる。
ユーザ:root / パスワード:root でログイン
pacman -Syu  ←インストール済みパッケージのアップデート
pacman -S base-devel wget  ←gcc, makeなどのインストール
passwd  ←rootパスワードの変更
useradd -m -g wheel <ユーザ名>  ←ユーザの追加
passwd <ユーザ名>  ←追加したユーザのパスワード設定
visudo
以下のコメントアウトを外す
Defaults env_keep += "HOME"
%wheel ALL=(ALL) ALL
systemctl enable sshd.service  ←SSHサーバの起動
ip addr  ←Raspberry Pi2のIPアドレスを表示
exit
続きはSSHでRaspberry Pi 2に接続して行う

XとXfceのインストール

sudo pacman -S xorg-server xorg-server-utils xorg-xinit 
sudo pacman -S xf86-video-armsoc-git xf86-video-fbdev xf86-video-vesa
sudo pacman -S xfce4 xfce4-goodies

yaourtのインストール

sudo pacman -S yajl
cd
wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg
sudo pacman -U package-query-1.5-2-armv7h.pkg.tar.xz
cd
wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg
sudo pacman -U yaourt-1.5-1-any.pkg.tar.xz
yaourt -Syy  ←データベースのアップデート
yaourt -S ttf-ricty  ←日本語フォントのインストール
sudo pacman -S chromium  ←ブラウザ(chromium)のインストール

画面解像度の調整

1920x1080のFullHDで出力されるようにします。
sudo nano /boot/config.txt
hdmi_groupとhdmi_modeのコメントアウトを解除し、以下のように書き換え
hdmi_group=2
hdmi_mode=82
ここで、hdmi_groupの2はDMT、hdmi_modeの82は1080p 60 Hzを意味する
詳細はeLinux.orgのRPiconfigに記載されています。

Xfceの起動

以下、Raspberry Pi 2でログイン後
startxfce4
でデスクトップが表示されれば成功

YouTubeも再生できます。

2015年2月7日

Raspberry Pi 2 Model Bが到着

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

販売開始直後に発注したので、3日程度で到着。
外箱のサイズはB+と比較して若干厚みが増してましたが、ボード自体は発表通りサイズ・ポート位置の変更は無し。


手元にある2種類のB+用ケースに入れてみましたが、1個は完璧、もう1個は一部削ることで入りました。


今は販売されてない(2Bの発売開始とほぼ同時に消えた)このケースの場合、以下の写真のような感じ。


ものによっては基板裏の部品が干渉して入らないものあるようで、基板下にゆとりがあるケースならだいたい入るかなぁっと。

ちなみに↓これはキレイに入った。
http://jp.rs-online.com/web/p/development-board-enclosures/8293459/
ただし、このケース、通気口が無いので上の写真の真っ黒ケースに載せ替えたという訳です。

OSについては、BやB+でRaspbianを使っていた人なら、B(B+)で起動して
sudo apt-get update
sudo apt-get dist-upgrade
したSDを2Bに差し替えるだけで起動する。


dist-upgradeは結構時間が掛かるのでのんびり待ちます。
SDを2Bに差し替えて電源を入れると、クアッドコアの証、ラスベリーロゴが4個表示されて起動。


ブラウザでYouTubeを再生してみたりしましたが、まぁ見れる感じでした。
ただ、raspbian自体がちょっと微妙だなぁと思い始めてた(パッケージが古いものがあったりする)ので、次回はArch Linuxに載せ替える話の予定。

追記:dist-upgrade後のSDカード、boot領域の中身。