動かざることバグの如し

近づきたいよ 君の理想に

PHPからSMTPでメール送信するためにライブラリインストール

環境

  • CentsOS
  • php 5.6
    • Webtatic.comのレポジトリを使用しているとする

ここではまずpearを入れて、pear経由でSMTPメール送信に必要なライブラリをインストールしていく

pearのインストール

yum install php56w-pear

pearのライブラリ情報をアップデート

ネットワークが不安定なのか、エラーになったときは何回か試したら成功した

pear channel-update pear.php.net

インストール

pear install Mail
pear install Mail_Mime
pear install net_smtp

が、今はPHPMailerで送信するのが主流っぽい なるほどね

Javascriptで2地点間の距離と方角を計算するライブラリ

緯度経度からなる地点Aから地点Bへの距離と方角がほしい人生だった

環境

  • nodejs 10

求める計算式面倒問題

正直地理の計算詳しくないのでさっぱりだが、地球が楕円であるので、式が面倒らしい

例えば以下はPythonで計算するコードを載せてくれている例 長い

こんなの自分で書きたくない。。。とか思ってたらさすがJS界隈、ライブラリがあった。その名も「geodesy

インストール

npm install -S geodesy

ただ、import形式でないとロードできないらしいので、nodejs経由で使う場合はwebpack等でコンパイルするか、esmを使う(npm install -S esmが必要)

コード

例えば、2地点間の距離を求めるならdistanceTo()、方位はfinalBearingTo()で求めることができる。

ややこしいが、LatLon()に与える引数は緯度、経度の順番なので注意

import LatLon from 'geodesy/latlon-ellipsoidal-vincenty.js'
// 渋谷駅
const p1 = new LatLon(35.658034, 139.701636)
// 新宿駅
const p2 = new LatLon(35.689738, 139.700391)

console.log(p1.distanceTo(p2)) // 3519.458
console.log(p1.finalBearingTo(p2))  // 358.1643691

ロードしているファイル名のvincentyはVincenty法のことであり、精度が高いらしい。他にもいくつかある

詳しい使い方は公式ドキュメント参照

JSDoc:クラス:LatLonEllipsoidal_Vincenty

a

バイス単体でデバッグする場合

iOS版のChrimeを開いて「chrome://inspect」にアクセス すると以下のようなページが表示されるので「ログ記録を開始」ボタンをクリック

f:id:thr3a:20190430234500p:plain

するとログの記録が開始されて「ログ記録を停止」に変わる

f:id:thr3a:20190430234503p:plain

で、別のタブを開いてデバッグしたいサイトを開くとそのサイト上のコンソールログがデバッグタブに表示されるようになる。

f:id:thr3a:20190430234505p:plain

aa

インストール

brew update
brew install ios-webkit-debug-proxy
ios_webkit_debug_proxy

起動

$ios_webkit_debug_proxy

http://localhost:9222

http://localhost:9222

Listing devices on :9221

brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies ideviceinstaller
brew uninstall --ignore-dependencies usbmuxd
sudo rm /var/db/lockdown/*
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install --HEAD ideviceinstaller

さくらインターネットVPSのIPアドレス一覧

追記

2022年6月17日更新

目的

さくらインターネットからのクローラーを弾きたい。

がしかし、

が悲しいことに公式ではIPアドレスの範囲を公開してないらしい。

先人様がいて、独自にまとめた一覧を公開してくれている。

が、最新更新が2015年の結構前である。

そこで調べてみた。

ポイントはさくらインターネットはかなり老舗なのでグローバルIPをたくさん持っている点。公式サイトいわく、AS番号を3つ持ってるとのこと

  • AS9370(東京)
  • AS9371(大阪)
  • AS7684(北海道・石狩)

これからに紐づくIPを見ていく

AS9370(東京)

全部で33

103.198.4.0/22
103.57.4.0/22
103.81.176.0/22
110.232.160.0/21
110.232.168.0/21
110.44.128.0/20
112.109.0.0/20
113.20.160.0/19
122.202.96.0/19
133.167.0.0/24
153.121.0.0/19
153.121.32.0/19
153.121.64.0/19
153.125.224.0/20
160.16.0.0/17
160.16.128.0/17
163.43.0.0/16
183.181.102.0/24
202.181.96.0/20
202.222.16.0/20
210.188.224.0/19
210.229.64.0/21
27.133.128.0/19
27.133.247.0/24
27.133.252.0/22
27.134.240.0/20
36.53.0.0/17
36.53.128.0/18
59.106.0.0/17
59.106.128.0/18
59.106.192.0/19
59.106.224.0/20
59.106.240.0/22
61.211.224.0/20
61.211.236.0/24

AS9371(大阪)

全部で29のネットワーククラス

103.15.0.0/22
110.74.32.0/20
110.74.64.0/20
112.78.112.0/20
112.78.192.0/19
133.167.0.0/16
133.167.21.0/24
160.27.0.0/16
182.163.0.0/19
182.48.0.0/18
183.181.100.0/23
183.181.74.0/23
183.181.76.0/23
202.255.237.0/24
210.135.112.0/20
210.188.192.0/19
210.224.160.0/19
219.109.160.0/19
219.94.128.0/17
49.212.0.0/16

AS7684(北海道・石狩)

全部で23

112.78.202.0/24
112.78.203.0/24
112.78.211.0/24
112.78.212.0/24
133.125.0.0/16
133.242.0.0/16
153.120.0.0/17
153.120.128.0/18
153.121.128.0/18
153.125.128.0/18
153.126.0.0/17
153.126.128.0/17
153.127.0.0/17
153.127.128.0/18
153.127.192.0/19
157.17.112.0/20
157.17.32.0/20
157.17.48.0/20
157.17.64.0/20
157.17.82.0/23
157.17.84.0/22
157.17.88.0/21
182.48.10.0/24
182.48.1.0/24
182.48.11.0/24
182.48.12.0/24
182.48.13.0/24
182.48.14.0/24
182.48.15.0/24
182.48.2.0/24
182.48.39.0/24
182.48.9.0/24
219.94.227.0/24
49.212.116.0/24
49.212.120.0/24
49.212.121.0/24
49.212.168.0/24
49.212.215.0/24
49.212.228.0/24
49.212.229.0/24
49.212.233.0/24
49.212.239.0/24
49.212.246.0/24
49.212.65.0/24
49.212.66.0/24
49.212.70.0/24
49.212.72.0/24
49.212.73.0/24
49.212.75.0/24
49.212.78.0/24

参考サイト

ちなみに参考元のipinfo.ioもMaxMindというサービスのデータを使ってるらしい。ただのラッパーじゃん

Originally our API used MaxMind data, but we've been very busy working on creating our own geolocation data. We've made a lot of progress, and we now use our own data to service around half of all requests. We do still fallback to MaxMind data though, which requires us to state:

https://ipinfo.io/products/asn-api からサンプルAPI叩けるので便利

systemdで起動すると/etc/security/limits.confの設定は効かない

検証環境

背景

Ubuntuサーバー上にElasticsearchを構築しようと思った。

が、起動時に以下のようなエラー

[2019-04-10T15:59:19,986][ERROR][o.e.b.Bootstrap          ] [es01] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

完全に理解した、の顔とともにエラーメッセージでググる。するとちゃんと解決策が載ってた。

要はカーネルパラメータを設定すればいいとのこと 早速/etc/security/limits.confに以下を追記して

elasticsearch hard memlock unlimited
elasticsearch soft memlock unlimited

で、Elasticsearchを再度起動。。。しても同じエラーになる。

原因

以下のサイトの解説が詳しい

PAM認証を介さないようなdaemon系プログラムの制限には/etc/security/limits.confは使えない

どういうことかというと、 /etc/pam.d/sudo とか /etc/pam.d/sshd

session required pam_limits.so

があることで、普段はlimits.confが適用される、と。

しかし、systemdでは当然/etc/pam.d/sudo なんぞ効かないし、共通の/etc/pam.d/common はデフォルトではpam_limits.soの設定ないためにsystemdで起動したプロセスには無効 ということ

解決策

設定は/etc/security/limits.confに書かずにsystemd側に書くのがベストプラクティスぽい

例えばelasticsearchのsystemdの設定ファイルは /usr/lib/systemd/system/elasticsearch.service である。

が、これを直接いじるのはリスキー、、、で実はsystemdにはデフォルトの設定を追記する機能がある。

systemctl edit elasticsearch

すると編集画面になるので、以下を追記

[Service]
LimitMEMLOCK=infinity

(余談だが、実際には/etc/systemd/system/elasticsearch.service.d/override.confというファイルを編集している。)

でリロードで反映

systemctl daemon-reload

実はこれElasticsearchの公式ドキュメントにちゃんと書いてあった。ちゃんと読もうな、、、