kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

GPS 两点距离

https://www.cnblogs.com/thinkquan/p/3925199.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function rad($d)
{
	return $d * 3.1415926535898 / 180.0;
}

function GetDistance($lat1, $lng1, $lat2, $lng2)
{
	$EARTH_RADIUS = 6378.137;

	$radLat1 = $this->rad($lat1);
	$radLat2 = $this->rad($lat2);
	$a = $radLat1 - $radLat2;

	$b = $this->rad($lng1) - $this->rad($lng2);

	$s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
	$s = $s *$EARTH_RADIUS;
	$s = round($s * 1000);
	return $s;
}

GetDistance(26.000000, 118.000000, 25.000000, 117.000000);

JS获取当前地理位置

https://www.jb51.net/article/58654.htm

https://www.jb51.net/javascript/304171feq.htm

https://blog.csdn.net/weixin_53791978/article/details/132012586

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var getLocation = function (successFunc, errorFunc) { //successFunc获取定位成功回调函数,errorFunc获取定位失败回调
	//默认城市
	if (navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(function (position) {
			var lat = position.coords.latitude;
			var lon = position.coords.longitude;
		},
		function (error) {
			switch (error.code) {
				case 1:
					alert("位置服务被拒绝。");
					break;
				case 2:
					alert("暂时获取不到位置信息。");
					break;
				case 3:
					alert("获取位置信息超时。");
					break;
				default:
					alert("未知错误。");
					break;
			}
		});
	} else {
		alert("你的浏览器不支持获取地理位置信息。");
		if (errorFunc != undefined)
			errorFunc("你的浏览器不支持获取地理位置信息。");
	}
};

前端缓存之:Service Worker

FireFox 查看 Service Worker

1
2
3
about:debugging#/runtime/this-firefox

about:debugging

chrome 查看 Service Worker

1
2
3
chrome://inspect/#service-workers

chrome://serviceworker-internals/

https://juejin.cn/post/6950988377684443167

什么是Service Worker

Service worker是一个注册在指定源和路径下的事件驱动worker。它采用JavaScript控制关联的页面或者网站,拦截并修改访问和资源请求,细粒度地缓存资源。Service Worker 可以使你的应用先访问本地缓存资源,包括js、css、png、json等多种静态资源。

Service Worker的特点

独立于主JavaScript线程(这就意味着它的运行丝毫不会影响我们主进程的加载性能)

设计完全异步,大量使用Promise(因为通常Service Worker通常会等待响应后继续,Promise再合适不过了)

不能访问DOM,不能使用XHR和localStorage

Service Worker只能由HTTPS承载(出于安全考虑)

样例

1
2
/work/work.php
/work/work.js
work.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
if ('serviceWorker' in navigator) {

	navigator.serviceWorker.getRegistrations().then(function(registrations) {
		registrations.forEach(function(registration) {
			registration.unregister();
		})
	})

	navigator.serviceWorker.register('/work/work.js', {scope: '/work/'}).then(function(reg) {
		alert('ok');
	}).catch(function(error) {
		alert(error);
	});
}
</script>
work.js
1
2
3
4
5
6
7
8
function ttt()
{
	console.log('gggg');
	// fetch("https://www.baidu.com");
	sec = 30;
	setTimeout(ttt, sec * 1000);
}
ttt();