阿里的 rds 外网怎么连呢。需要一台能连接外网的 ecs 就可以。
操作一波
打开 navicat,新建一个连接。切换到 ssh 页签,输入 ssh 服务器的地址,账号和密码。如下图所示:

然后切换到 General(常规) 页签,填入 rds 的地址、用户名、密码,点击 test connection 即可。如下图所示:

好吧,就这样了。
阿里的 rds 外网怎么连呢。需要一台能连接外网的 ecs 就可以。
打开 navicat,新建一个连接。切换到 ssh 页签,输入 ssh 服务器的地址,账号和密码。如下图所示:

然后切换到 General(常规) 页签,填入 rds 的地址、用户名、密码,点击 test connection 即可。如下图所示:

好吧,就这样了。
基于定位获取周边的数据的场景还是蛮多的。这不就用到了,就记录下怎么整吧。
因为用到的是 laravel 框架, ORM 这些会使用到。会用到 scope。假如这里有一个模型 Meet,对用的表名是 meets, 表里有这些字段:title、content、region_code、latitude、longitude、address、created_at、updated_at
模型如下:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Idc extends Model
{
use HasFactory;
protected $fillable = ['title', 'content', 'region_code', 'latitude', 'longitude', 'address'];
}
我们准备一个 distanc 的 scope
use Illuminate\Support\Facades\DB;
……
public function scopeDistance($query, $lat, $long, $distance)
{
return $query->having('distance', '<', $distance)
->select(
DB::raw("*,
(3959 * ACOS(COS(RADIANS($lat))
* COS(RADIANS(latitude))
* COS(RADIANS($long) - RADIANS(longitude))
+ SIN(RADIANS($lat))
* SIN(RADIANS(latitude)))) AS distance")
)->orderBy('distance', 'asc');
}
3959 计算出来的是英里,换成 6378.138 计算出来的是公里。也就是地球的半径。
然后使用
$latitude = 31.0811;
$longitude = 121.26035;
$meets = Meet::distance($latitude,$longitude, 5)->get(['id','title', 'content', 'latitude', 'longitude', 'address']);
这样就计算出距离该坐标 5 km 内的数据了。
先安装
yarn add element-china-area-data
然后在 code 中
<el-cascader size="large" :options="options" v-model="selectedOptions" @change="handleChange">
import { regionData , CodeToText } from "element-china-area-data";
handleChange() {
var loc = "";
for (let i = 0; i < this.selectedOptions.length; i++) {
loc += CodeToText[this.selectedOptions[i]];
}
alert(loc);
}
params 的字符串和 array 的转换
$array = ['gender' => 1, 'target' => 2, 'region' => 310100];
$paramsStr = $str = http_build_query($array);
var_dump($paramsStr);
parse_str($paramsStr, $paramsArr);
var_dump($paramsArr);
在线测试:https://www.json.cn/runcode/run_php/
输出结果
string(31) "gender=1&target=2®ion=310100"
array(3) {
["gender"]=>
string(1) "1"
["target"]=>
string(1) "2"
["region"]=>
string(6) "310100"
}
在这里找到最新的版本 https://www.python.org/ftp/python/,当前 3.9.6 版本。
cd /usr/local/src
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
tar -xzvf Python-3.9.6.tgz
cd Python-3.9.6
mkdir /usr/local/python39
./configure --enable-optimizations --prefix=/usr/local/python39
make && make install
建立软链
ln -s /usr/local/python39/bin/python3.9 /usr/bin/python
ln -s /usr/local/python39/bin/pip3.9 /usr/bin/pip
一个项目,一般不仅有 mysql 数据库,还会有 redis、mongodb 等数据库。那 下边记录下 laravel 中配置和使用 mongodb。
安装 mongdb 和 mongdb 扩展
# 最快最简单的安装方式
pecl install mongodb
# 在 php.ini 中配置 mongodb
# 先找到 php.ini 的位置
php -i | grep php.ini
# 开始配置
vim php.ini
# 加入 extension=mongodb.so
# 重启
/etc/init.d/php-fpm restart
# 看看扩展
php -m |grep mongodb
https://github.com/jenssegers/laravel-mongodb
composer require jenssegers/mongodb
在 config/database.php 的 connections 中配置
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', '127.0.0.1'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE', 'homestead'),
'username' => env('MONGO_DB_USERNAME', 'homestead'),
'password' => env('MONGO_DB_PASSWORD', 'secret'),
'options' => [
'database' => env('MONGO_DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
]
# 或
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGO_DB_DSN'),
'database' => env('MONGO_DB_DATABASE', 'homestead'),
],
在 .env 中进行 MONGO_DB_DSN 和 MONGO_DB_DATABASE 配置。
这里,我既使用 mysql, 也使用 mongodb。并且都使用 ORM。 mysql 是默认驱动方式。
php artisan make:model Moment
### 编辑 App\Models\Moment ,如下
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Jenssegers\Mongodb\Eloquent\Model;
class Moment extends Model
{
use HasFactory;
// 驱动
protected $connection = 'mongodb';
// 表
protected $collection = 'detail.idc';
}
用 tinker 试试:
php artisan tinker;
use App\Models\Moment;
Moment::first();
mac 默认安装的是 python 2.7。即使你安装了 3.x 版本,终端中默认也不会使 调用这个。可以配置下就可以。
处理之前
python --version
# 输出 Python 2.7
python3 --verison
# 输出 Python 3.9.6
pip list
# 找不到
我自己的终端改成 item 了。对应的是 ~/.zshrc。默认是 ~/.bash_profile。
好了,我们改一波。
vim ~/.zshrc
# GG 移动到末尾 添加下边配置
alias python="/usr/local/bin/python3"
alias pip="/usr/local/bin/pip3"
# 然后 source 一下,要不不立马生效
source ~/.zshrc
好了,就这样了。然后再测试下版本以及pip。
在某些场景下,需要对区域进行首字母排序。不仅要提取出地区的首字母,并且还要对相同首字母的地区也进行排序。
首先,我们有这样的一些数据:
var cityData = [
[
{
"label":"北京市",
"value":1101
}
],
[
{
"label":"天津市",
"value":1201
}
],
[
{
"label":"石家庄",
"value":1301
},
{
"label":"唐山",
"value":1302
},
{
"label":"秦皇岛",
"value":1303
}
]
]
这是一个二维数组,可以先把它弄成一维数组。然后通过 pinyin.js 取出每个 label 的首字母,并且有相同首字母的数据放在同一个数组里。然后进行二次排序。这里在 pinyin.js 中新增加了一个 getFirstChar 方法。
/**
* 获取整个词汇的首字母
* @param {String} str 输入的中文字符串
*/
getFirstChar(str) {
if (typeof(str) != "string")
throw new Error(-1, "函数getCamelChars需要字符串类型参数!");
if (!str) {
throw new Error(-1, "不能是空字符串");
}
str = str.substr(0, 1);
return this._getChar(str);
}
计算如下。
import Pinyin from '../../../static/js/pinyin.js';
let pinyin = new Pinyin();
let temp = {};
let keys = [];
for(let item1 of city) {
for(let item2 of item1) {
if (item2.label == '直辖市') {
continue;
}
let fc = pinyin.getFirstChar(item2.label);
if (temp[fc]) {
temp[fc].push(item2);
} else {
keys.push(fc);
temp[fc] = [item2];
}
}
}
keys = keys.sort();
let list = [{
title: '热门',
letter: 'hot',
value: []
}]
function sortItem(item1, item2) {
return item1['label'].localeCompare(item2['label']);
}
for(let key of keys) {
list.push({
title: key,
letter: key,
value: temp[key].sort(sortItem)
});
}
在 uniapp 中,如果 view 定义了 display:flex ,那么 v-show 就无效了。也就是总是 true,总是会显示出来。
想要在小程序中使用区域聚合很不好搞啊。单纯的聚合,腾讯地图小程序就已经支持。可是区域聚合貌似只有高德有。
高德区划聚合
https://developer.amap.com/demo/amap-ui/demos/amap-ui-districtcluster/top-adcodes
https://developer.amap.com/api/amap-ui/reference-amap-ui/geo/district-cluster
微信聚合
https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.initMarkerCluster.html
https://developers.weixin.qq.com/miniprogram/dev/component/map.html
高德难言
https://developer.amap.com/faq/other-interface/amap-applets/create-project/66485
既然不支持,又想搞怎么办呢。自己写算法,实现 market 的调整。这个时候,大家就要齐心。放大到一定比例展示省级别,再放大到一定比例显示市级别,再放到一定比列显示县级别,再放到一定比例显示镇级别。就以镇为最小单位,把每个镇里相关的数据放在一个数组里,镇的放在县里依次到省,全国。这样似乎就失去了腾讯地图聚合的初衷了。 地图有 initMarkerCluster 方法和 markerClusterCreate 时间,不用可惜啊。