jwj 发布的文章

layui 的表格头部工具栏左侧图标只有筛选列、导出和打印,功能有点少。经过查阅源代码和手册,找到了全局添加自定义工具的方法,在此记录一下。

头部工具栏左侧图标配置

查阅手册,配置头部工具栏左侧图标配置,的方式如下:

layui.table.render({ //其它参数在此省略      
  defaultToolbar: ['filter', 'print', 'exports', {
    title: '提示' //标题
    ,layEvent: 'LAYTABLE_TIPS' //事件名,用于 toolbar 事件中使用
    ,icon: 'layui-icon-tips' //图标类名
  }]
});

字符串的工具是默认自带的,如果是自定义,需要用对象。参照示例,我在这里加一个刷新工具。

layui.table.render({ //其它参数在此省略      
  defaultToolbar: ['filter', 'print', 'exports', {
    title: '刷新'
    ,layEvent: 'LAYTABLE_REFRESH'
    ,icon: 'layui-icon-refresh'
  }]
});

layui.table.render()里定义只适用于单个表格,而我想的是全局默认都有。再经过一番研究,找到设置全局项方法layui.table.set(),可以在全局公共文件里去设置默认的defaultToolbar

layui.use('table', () => {
  layui.table.set({     
    defaultToolbar: [
      'filter', 'print', 'exports'
      , {title: '刷新', layEvent: 'LAYTABLE_REFRESH', icon: 'layui-icon-refresh'}
    ]
  })
})

监听工具栏事件

工具图标加上去了,接下来就是监听刷新按钮的事件了。Layui的底层API提供了layui.onevent()方法,用于监听事件。

layui.onevent('table', 'toolbar()', obj => {
  // 判断是否是刷新事件(LAYTABLE_REFRESH)
  if ("LAYTABLE_REFRESH" === obj.event) {
    // 刷新当前表格
    layui.table.reload(obj.config.id);
  }
})

完整代码

到此,自定义工具已搞定,以下是完整代码:

layui.use('table', () => {
  // 设置默认表格头部工具栏左侧图标
  layui.table.set({
    defaultToolbar: [
      'filter', 'print', 'exports'
      , {title: '刷新', layEvent: 'LAYTABLE_REFRESH', icon: 'layui-icon-refresh'}
    ]
  })

  // 监听表格头部工具栏事件
  layui.onevent('table', 'toolbar()', obj => {
    // 判断是否是刷新事件(LAYTABLE_REFRESH)
    if ("LAYTABLE_REFRESH" === obj.event) {
      // 刷新当前表格
      layui.table.reload(obj.config.id);
    }
  })
})

定义数组

array(1, 2, 3)可以简写为[1, 2, 3]

三元运算

if (time() % 2) {
    $b = '111';
} else {
    $b = '222';
}

可以简写为

$b = time() % 2 ? '111' : '222';

nullsafe 运算符

$a = new stdClass();
if (null !== $a) {
   $b = $a->name;
} else {
   $b = null;
}

可以简写为

$a = new stdClass();
$b = $a?->name;

空合并赋值运算符

if (isset($a)) {
  $a = 'default';
}

echo $a;

可以简写为

echo $a ?? 'default';

数组分配给变量

list($a, $b) = [111, 222] 可以简写为[$a, $b] = $array

$a = 111 , $b = 222
['a' => $a, 0 => $b] = ['a' => 123, 456]
// $a = 123 , $b = 456

Google AdSense 终于达到起付金额,可以进行提现了,这里记录下使用中国工商接收电汇的经历。

地址验证

地址验证需要接收一份信件,信件里面有验证码。收到信件后,将信件内的数字验证码在 Google AdSense 中填入验证即可。

填写地址时,需要注意填写的信息要完整准确和详细。申请了几次都没收到,就是因为地址不详细。
虽然申请邮寄验证信件时填写联系方式,但邮递员并没有与我联系。还是自己偶然看小区楼下自己家的信箱才看到信件。

付款方式

以下以广东省为例子,具体信息,可以询问银行客服。
普通储蓄卡都可以接收外汇,不用去开通什么。

项目备注
收款人ID不用填写
银行账户上的姓名填写工行帐号所有人的的英文,如张三则填写为Shan Zhang
银行名称THE INDUSTRIAL AND COMMERCIAL BANK OF CHINA GUANGDONG PROVINCIAL BARNCH
SWIFT BICICBKCNBJGDG
帐号银行卡号
中转银行无需填写
最终汇入方或最终收款人无需填写

身份信息

Google AdSense 打款 11 天后,收到来自 googlepay-support@google.com 的邮件。邮件原文如下:

--- 邮件原文 ---
You're receiving this email because we've been unable to verify some information on your Google account in order to complete the disbursement process.

The information you provide may be shared with a third party in order to complete your disbursement. By providing this information, you acknowledge and agree that this information may be shared with a third party.

In order to continue the disbursement process, please provide a copy of current government issued ID for San Zhan and reply with the following information for San Zhan:

Full Name
Date of Birth (provide the month in wording)
Place of Birth (with country)
Nationality
National ID Number (with country) / Passport Number (with country)
Full physical address and country of location
Occupation
Please respond with the information requested within 5 business days. Until your information has been verified, you will not be able to transact with any products you may be using (e.g. Play, Google Ads, AdSense, G Suite, etc.) with this account.

We make great efforts to reply to you within 24 hours.

Thank you for your cooperation.
--- 邮件原文结束 ---

按邮件内的要求,附上相关资料,直接回复邮件。

注意删除注释
--- 参考回复内容 ---
// 姓名
Full Name: San Zhan
// 出生日期
Date of Birth: 1997-7-1(YYYY-MM-DD)
// 出生地
Place of Birth: China
// 国籍
Nationality: China
// 身份证号码
National ID Number: 440101199707011234
// 住址(可以用翻译软件直接翻译)
Full physical address and country of location: No. 123, Tianhe Community, Tianhe District, Guangzhou City, Guangdong Province
// 职业
Occupation: IT technician
--- 参考回复内容结束 ---

结汇

过了 3 天,工商银行(本地固话)打电话过来,确认外汇问题。主要确认外汇金额及为什么会有这笔外汇(如实回答是网站上展示广告所得的广告费即可)。

确认后,账号上就会有一笔美元,可以在工商银行APP上搜索 结售汇 ,兑换成人民币。

2023-09-25

现在收款需要提供相关的合同或者协议,核实一下交易背景。根据付款常见问题解答,可以找到AdSense 条款及条件

如果您需要出示与 AdSense 签订的合同,可以打印 AdSense 条款及条件。您在注册 AdSense 时已接受这些条款及条件,它们是您(贵公司)与 AdSense 互动的法律依据。

默认情况下,宝塔的 WEB 软件记录日志时,不会按日期将日志储存到不同的文件里,长时间的日志都记录到一个文件里,很不方便查阅和管理。

一、安装 logrotate

大多 Linux 系统一般都自带 logrotate,如果刚好你的系统没有自带,可以在github下载源代码进行编译安装。

或者直接尝试用命令进行安装,例如:

  • 红帽系统(Red Hat):yum install logrotatednf install logrotate
  • 乌班图(Ubuntu):sudo apt-get install logrotateapt install logrotate

二、原理

其实“切割”二字并不对,具体我们来简单说说个人理解的工作原理。
1.logrotate 执行时,会对符合配置里设定的条件的文件进行处理。
2.然后重命名日志文件,并创建新的日志文件。
3.执行其它操作,如:压缩文件。

三、配置

新建并编辑配置文件

sudo vim /etc/logrotate.d/btweblogs

配置内容

/www/wwwlogs/*.log  {
    # 间隔时间:daily=每天/weekly=每周/monthly=每月/yearly=每年
    daily
    # 保留份数,超过该数量的旧日志自动删除
    rotate 14
    # 忽略错误,如:文件不存在
    missingok
    # 使用日期格式重命名文件
    dateext
    # 对分离出来的文件进行压缩
    compress
    # 不压缩本次分离出来的文件
    delaycompress
    # 忽略空文件(即不分离空的文件)
    notifempty
    # 多个文件分离后只执行一次脚本
    sharedscripts
    # 文件分离后执行的脚本
    postrotate
        # 通知Nginx和Apache程序重载
        # Nginx
    [ -e /www/server/nginx/logs/nginx.pid ] && kill -USR1 `cat /www/server/nginx/logs/nginx.pid`
        # Apache
    [ -e /www/server/apache/logs/httpd.pid ] && kill -USR1 `cat /www/server/apache/logs/httpd.pid`
    endscript
}

四、结束

logrotate 除了可以分离压缩文件,还可以将分离出来的文件通过邮件发送到指定邮箱,具体方法可以查阅 logrotate 的手册

宝塔本身也有日志切割功能,如果没有压缩之类的需求,可以使用宝塔的功能。