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
服务器端代理请求
……