2020年01月
2020-1-2 周四
一个前端手机调试工具:Eruda
感觉还挺好的,基本可以满足需求,在手机上调试可以不用抓包了
2020-1-3 周五
多线程运行 PHP 单元测试
https://github.com/paratestphp/paratest
2020-1-4 周六
在 Linux 子系统中访问 Windows 的文件:
cd /mnt
列出文件就可以发现 c d e f g h 盘都在这儿了
2020-1-6 周一
报错:Call to undefined function simplexml_load_string()
原因是 php-xml 没有安装,解决方法:
sudo apt install php-xml
2020-1-7 周二
找到一个非常轻量级的服务器运行状态监控:
https://status.tabll.cn/

它可能不像 Navicat Monitor 这样的功能非常强大,但是应该足够使用了
2020-1-8 周三
Laravel 模型数据处理问题
因为之前在模型的定义中修改了数据的返回 年月日,现在有地方要显示成 年月日-时分秒
在用户模型中加上静态变量:
public static $withoutAppends = false; // 标记是否使用不做处理的原始数据,默认使用处理后的
// ......
// 获取created_at
public function getCreatedAtAttribute($value)
{
if (self::$withoutAppends) {
return $value;
}
return date('Y-m-d', strtotime($value));
}
调用的控制器中:
public function __construct()
{
parent::__construct();
User::$withoutAppends = true; // 不使用自定义属性
}
// 其实不需要析构
public function __destruct()
{
User::$withoutAppends = false;
}
这里不加析构函数也是可以的,因为每次请求就是一个生命周期,下一次又是 false 了
不加构造函数也是可以的,需要用的时候写这行代码就行
2020-1-9 周四
通过 Excel 导入数据
通过遍历的方式添加数据:
/**
* 通过 Excel 添加
* @param $url string Excel地址
* @return mixed
*/
public function addByExcel($url)
{
$filename = uniqid() . '.xlsx'; // 文件名
$bool = Storage::disk('upload')->put($filename, file_get_contents($url));
if (!$bool) {
return response()->fail(self::UPLOAD_ERROR_CODE, self::UPLOAD_ERROR_MSG);
}
$filePath = storage_path('downloads/' . $filename);
$data = Excel::load($filePath)->all()->toArray();
$existed = 0; // 名单中已存在的个数
$noUser = 0; // 找不到用户的个数
$success = 0; // 成功新增的个数
foreach ($data as $item) {
$mobile = $item["手机号"];
$remark = $item["备注"];
$user = User::where('mobile', $mobile)->first();
if (is_null($user)) {
$noUser++;
continue;
}
if (NoDisturbUser::where('user_id', $user->id)->exists()) {
$existed++;
continue;
}
$noDisturbUser = new NoDisturbUser();
$noDisturbUser->user_id = $user->id;
$noDisturbUser->remark = $remark;
$noDisturbUser->save();
$success++;
}
return response()->success('新增了' . $success . '条数据');
}
上面没有判断备注的数据长度,备注过长的话写入的时候会有问题
2020-1-10 周五
Composer 清理缓存
composer clear-cache
升级 Laravel 框架版本
composer require laravel/framework
最新的版本已经到 6.10.1
2020-1-13 周一
MySQL 升级
1 备份
2 兼容问题解决
3 升级
一般情况下直接升级就可以了,具体可以看官方升级文档
Laravel 模拟测试任务
use Tests\TestCase;
use App\Jobs\ShipOrder;
use Illuminate\Support\Facades\Bus;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
class ExampleTest extends TestCase
{
public function testOrderShipping()
{
Bus::fake(); // 不会真的发送
// 执行订单发货
// ...
Bus::assertDispatched(ShipOrder::class, function ($job) use ($order) {
return $job->order->id === $order->id;
});
// 断言任务并未分发...
Bus::assertNotDispatched(AnotherJob::class);
}
}
网络版权相关法律
2020-1-14 周二
Python 时间转换
存成 String 类型的时间在取出来的时候需要再转换成 datetime 格式以用于时间的比较处理
lastTime = datetime.datetime.strptime(frontData['calculate_time'], "%Y-%m-%d %H:%M:%S.%f")
2020-1-15 周三
数组取最后一个并合并
例如合并前是:
[
[
1, 23
],
[
2
]
]
foreach ($ids as $key => $value) {
$ids[$key] = end($value); // 取最后一个
}
合并后是:
[
23,
2
]
2020-1-16 周四
Composer 取消镜像设置
# 取消当前项目配置 composer config --unset repos.packagist # 取消全局配置 composer config -g --unset repos.packagist
2020-1-17 周五
Confluence 时间设置
# 时间配置 小时:分钟 上午/下午 h:mm a # 时间配置 24小时格式 h:mm
2020-1-20 周一
防止 API 接口被恶意调用或攻击
增加图形验证码
限定请求次数
流程加入条件限定
检查归属地(可以检查用户的IP与手机号归属地是否匹配)
服务器接口验证
使用 HTTPS
服务器端代理请求
……