Write the Code. Change the World.

8月 29

默认主机名乱七八糟,不好看也找不到意义。修改主机名就很有必要。怎么做呢。

操作一波

# 将 preserve_hostname 值改为 true ,保存并退出
vim /etc/cloud/cloud.cfg

# 设置主机名,这里我设置为 xiangrong (云想衣裳花想容,春风拂槛露华浓)
hostnamectl set-hostname xiangrong

退出连接,重新登录就发现修改好了。

8月 28

如上图,在调试的时候,你会看到 user agent stylesheet 定义的样式,而且是不能改的。

user agent stylesheet是浏览器自动加上的格式,user agent stylesheet将被你在自己的css中设置的任何内容覆盖。它们只是最底层:在没有页面或用户提供的任何css的情况下,浏览器仍然必须以某种方式呈现内容,而css只是描述了这一点。

因此,如果你认为css存在问题,那么你的HTML或css或两者(您没有写任何内容)确实存在问题。

解决方法

  • 方法一

由于 user agent stylesheet 的优先级很低,自己写样式覆盖即可。在你的css中添加被user agent stylesheet所覆盖了的样式,例如,我这可以重新定义div的样式:

div{
    display: inline-block;
}

继续阅读

8月 26

oss 上传 api 中,一个是上传 file ,有个是上传 content 。如何处理各种文件以及数据格式呢。常见的一种操作是上传图片。这里就弄弄看。

操作一波

如果上传的图片是 base64 ,先要转换。我们这里定义一个函数。

function base64ToImage($file)
{
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)) {
        $image = base64_decode(str_replace($result[1], '', $file));
        return $image;
    }
    return null;
}

我们还知道怎么拼接完成的 url。

# 这样就可以获取公网 url,当然你也可以获取内网 url
$url = App\Services\Oss::getPublicObjectURL($ossKey);

在这里,我们是先将文件传到服务器,再从服务器将文件传到 oss 上。这时,就用内网上传即可。流量要钱的,这样蛮好的。为什么不直接传 oss 上呢。直接传服务端逻辑不方便操作,直接传权限控制不好处理。反正就这种操作吧。

上边的还没说完,转换后,需要内网上传。

$file = base64ToImage($request->file);
$ossKey = ''upload/images/meets/1.jpg;
if($file) {
    $uploaded  = Oss::privateUploadContent($ossKey, $file);
}

想要删也可以的

Oss::privateDeleteObject($ossKey);

图片处理

https://help.aliyun.com/document_detail/47735.html

https://help.aliyun.com/product/31815.html

8月 26

package and github

https://packagist.org/packages/johnlui/aliyun-oss

https://github.com/johnlui/AliyunOSS

适应 laravel7 版本的请看
https://github.com/johnlui/AliyunOSS-Laravel7

操作一波

composer require johnlui/aliyun-oss

新建配置文件 config/alioss.php,填充下边的 code 。

<?php
return [
    'AccessKeyId' => env('ALIOSS_KEYID', null),                     // key
    'AccessKeySecret' => env('ALIOSS_KEYSECRET', null),             // secret
    'BucketName' => env('ALIOSS_BUCKETNAME', null)                  // bucket
];

并且在 .env.example 中加入下边的配置(养成好的习惯)。

# OSS 配置
ALIOSS_KEYID=
ALIOSS_KEYSECRET=
ALIOSS_BUCKETNAME=

继续阅读

8月 26

阿里的 rds 外网怎么连呢。需要一台能连接外网的 ecs 就可以。

操作一波

打开 navicat,新建一个连接。切换到 ssh 页签,输入 ssh 服务器的地址,账号和密码。如下图所示:

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

好吧,就这样了。

8月 25

基于定位获取周边的数据的场景还是蛮多的。这不就用到了,就记录下怎么整吧。

准备

因为用到的是 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 内的数据了。

参考来源

https://www.it1352.com/1542694.html

https://www.box3.cn/tools/lbs.html

8月 21

操作一波

先安装

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);
}
8月 18

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"
}
8月 13

直接开始

在这里找到最新的版本 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

参考

https://www.cnblogs.com/yangjisen/p/13171063.html

8月 09

一个项目,一般不仅有 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();

参考

https://www.bubaijun.com/page.php?id=230