Mr.Blog


  • 首页

  • 归档

  • 标签

  • 分类

  • 搜索

Laravel 系列 (一)

发表于 2021-04-30 | 分类于 Laravel

助手函数

1
php artisan make:provider HelperServiceProvider
1
2
3
4
5
# config/app.php
...
App\Providers\HelperServiceProvider::class,
App\Providers\AppServiceProvider::class,
...
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
30
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class HelperServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}

/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
foreach (glob(app_path('Helpers') . '/*.php') as $helperFile) {
require_once $helperFile;
}
}
}

nwidart/laravel-modules - 模块化管理

1
2
3
4
5
6
7
8
9
10
composer require "nwidart/laravel-modules:^6.0"

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

# config/modules.php 配置
# 1.修改命名空间 (Modules => App\Modules)
'namespace' => 'App\Modules'
'modules' => base_path('app/Modules'),
# 2.重命名 resource (Transformers => Http/Resources)
'resource' => ['path' => 'Http/Resources', 'generate' => false]
阅读全文 »

Laravel 相关问题

发表于 2021-04-30 | 分类于 Laravel

第三方包 laravel-ide-helper 执行 ide-helper:modles 报错

1
2
3
4
5
6
Exception: Unknown database type geometry requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.
# 原因: 迁移文件包含 geometry 字段类型
# 解决:
vendor/barryvdh/laravel-ide-helper/src/Console/ModelsCommand.php - line 155
$schema = \Illuminate\Support\Facades\Schema::getConnection()->getDoctrineSchemaManager();
$schema->getDatabasePlatform()->registerDoctrineTypeMapping('geometry', 'string');

Hexo 自定义文章排序规则

发表于 2018-04-26 | 更新于: 2021-04-19 | 分类于 Hexo

按文章更新时间排序, 这里需要注意的是排序值的KEY不能为updated, 要不然就是使用文章更新时间来排序了

  1. 配置 next.yml

    1
    2
    3
    post_meta:
    updated_at: false
    updated_diff: false
  2. 编辑 themes/next/layout/_macro/post.swig, 在 <span class="post-time"></span> 后添加以下代码

    1
    2
    3
    4
    5
    6
    7
    8
    {% if post.updateTime %}
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
    <i class="fa fa-calendar-check-o"></i>
    </span>
    <span class="post-meta-item-text">{{ __('post.modified') }}&#58;</span>
    <time title="{{ __('post.modified') }}" itemprop="dateModified" datetime="{{ moment(post.updateTime).format() }}">{{ date(post.updateTime, config.date_format) }}</time>
    {% endif %}
  3. 修改 hexo 文件夹下的 node_modules/hexo-generator-index/lib/generator.js, 在生成文章之前进行文章 updateTime 值排序

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    'use strict';

    var pagination = require('hexo-pagination');

    module.exports = function(locals) {
    var config = this.config;
    /*******START*******/
    //var posts = locals.posts.sort(config.index_generator.order_by);
    var paginationDir = config.pagination_dir || 'page';
    var path = config.index_generator.path || '';
    var posts = locals.posts;
    posts.data = posts.data.sort(function(a, b) {
    let aUpdateTime = a.updateTime ? (new Date(a.updateTime)).getTime() : 0;
    let bUpdateTime = b.updateTime ? (new Date(b.updateTime)).getTime() : 0;
    if (aUpdateTime && bUpdateTime) {
    // updateTime 一样, 则按照文章日期降序, 否则按照 updateTime 降序
    return aUpdateTime === bUpdateTime ? b.date - a.date : bUpdateTime - aUpdateTime;
    }
    // 更新时间不能大于发布时间
    else if (aUpdateTime && !bUpdateTime) {
    return aUpdateTime > b.date ? -1 : 1;
    }
    else if (!aUpdateTime && bUpdateTime) {
    return bUpdateTime > a.date ? 1 : -1;
    }
    // 按照文章日期降序
    else {
    return b.date - a.date;
    }
    });
    /*******END*******/

    return pagination(path, posts, {
    perPage: config.index_generator.per_page,
    layout: ['index', 'archive'],
    format: paginationDir + '/%d/',
    data: {
    __index: true
    }
    });
    };

    # 调用方式
    ---
    title: Hexo 自定义文章排序规则
    date: 2018-04-24 14:18:20
    updateTime: 2018-04-27 09:46:00
    categories: Hexo
    ---
  4. 清除 hexo 缓存

    1
    hexo clean

Composer 相关

发表于 2021-04-19 | 分类于 Composer

版本号说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
# 主版本号:当你做了不兼容的 API 修改
# 次版本号:当你做了向下兼容的功能性新增
# 修订号:当你做了向下兼容的问题修正
# 先行版本号及版本编译元数据可以加到"主版本号.次版本号.修订号"的后面,作为延伸

~ 和 ^ 的意思很接近,在 x.y 的情况下是一样的都是代表 x.y <= 版本号 < (x+1).0,但是在版本号是 x.y.z 的情况下有区别

# ~ 表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
~1.2 代表 1.2 <= 版本号 < 2.0

# ^ 表示除了大版本号以外,小版本号和补丁版本号都可以变
^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0

# 特殊情况 0 开头的版本号:
^0.3.0 等于 0.3.0 <= 版本号 <0.4.0 注意:不是 < 1.0.0
# 因为:semantic versioning 的规定是,大版本号以 0 开头表示这是一个非稳定版本(unstable),如果处于非稳定状态,小版本号是允许不向下兼容的
# 所以如果你要指定 0 开头的库那一定要注意:
危险写法:~0.1 等于 0.1.0 <= 版本号 < 1.0.0
保险写法:^0.1 等于 0.1.0 <= 版本号 < 0.2.0

Composer 扩展包开发

发表于 2021-04-19 | 分类于 Composer

Composer 扩展包开发

1
2
3
4
5
6
7
8
9
10
11
# 安装 Package Builder 包结构创建工具
composer global require overtrue/package-builder

# 创建目录结构 - 包名 sevming/helper
package-builder build packages/helper

# 配置本地安装目录
composer config repositories.helper path packages/helper

# 安装扩展包
composer require sevming/helper:dev-master

MySQL 相关命令

发表于 2018-04-28 | 更新于: 2021-04-07 | 分类于 MySQL

查看数据库大小

1
2
3
4
5
6
7
8
#进去指定 schema 数据库(存放了其他的数据库的信息)
use information_schema;
#查询所有数据的大小
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES;
#查看指定数据库实例的大小, 比如说数据库 test
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES WHERE table_schema='test';
#查看指定数据库的表的大小, 比如说数据库 test 中的 user 表
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES WHERE table_schema='test' AND table_name='user';

查看表碎片

1
2
3
4
SHOW TABLE STATUS from yiyuansha like 'yys_shangpin'\G
Data_free 字段大于 0, 就表示有碎片
(1)InnoDB 整理碎片, 使用 ALTER TABLE table_name ENGINE=INNODB; 会删除旧表, 并 重新导入数据, 重新建立索引
(2)MyISAM 整理碎片, 使用 OPTIMIZE TABLE table_name;

binlog

1
2
3
4
5
6
7
8
9
10
11
12
mysqlbinlog -vv --base64-output=decode-rows --start-datetime="2020-03-24 18:40:00" --stop-datetime="2020-03-24  19:00:00" "D:\mysql-bin.000536" | grep -i "keyword" -A 10 -B 10 > "D:\test.sql"

grep命令常用参数说明
参数 说明
-A 除了显示符合条件的那一行之外,并显示该列之后的指定行的内容内容。
-B 除了显示符合条件的那一行之外,并显示该列之前的指定行的内容内容。
-c 计算符合结果的行数。
-i 忽略字符大小写
-v 反向查找
-e 按指定字符串查找
-E 按指定字符串指定的正则查找
-n 在显示符合条件的那一行前,标识出该行的行数标号。

MySQL 5.7 数据库用户授权

1
2
3
4
5
6
7
8
9
10
11
# 1.使用 root 管理员登陆 mysql
# 2.创建数据库
CREATE DATABASE test;
# 3.创建新用户 ( % 所有情况都能访问, localhost 本机才能访问, 111.222.33.44 指定IP 才能访问)
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
# 4.给该用户添加权限
GRANT ALL PRIVILEGES on 数据库名.* to '用户名'@'%';
# 5.删除用户
DELETE FROM mysql.user WHERE User='用户名';
# 6.刷新权限
FLUSH PRIVILEGES;

Docker 相关

发表于 2020-07-06 | 更新于: 2021-04-07 | 分类于 Docker

mattrayner/lamp 配置和安装 redis 扩展 (参考 Docker 安装 的目录挂载)

新建 Dockerfile
1
2
3
4
5
FROM mattrayner/lamp:latest-1804
RUN add-apt-repository -y ppa:ondrej/php && \
apt-get update && \
apt-get -y upgrade && \
apt-get -y install php-redis
生成镜像
1
docker build -t sevming/lamp:1.1 .
宿主机新建 mysql、app 文件夹
1
2
mkdir /d/docker/mysql
mkdir /d/docker/app
阅读全文 »
1234…15
Mr

Mr

懒........

102 日志
21 分类
56 标签
RSS
Links
  • Novnan
  • 挨踢Blog
  • Eagle
  • Timber
  • 谢炳南
© 2020 — 2021 Mr
0%