厄运驱散

最近不顺利的程度超级高,驱散!驱散!驱散!

还有文件莫名丢失,注意力不能集中,超级烦啊!啊!啊!

还有倒霉会出现征兆…… 也是……

php 版本的坑

更新后 不能识别 tls

推断 更新后对tls 产生变化,暂时关闭tls使用 http

果然

后台没写好就写前端什么的,效率不高呢……

看来要规划一下了……

laravel 模型中使用

1
2
3
protected $casts = [
'scopes' => 'array',
];

当然也可以定义其他类型

可以使查询项返回数组,前提是存入的也是数组

文档在5.0版 这就比较坑了

25日的份

laravel 默认的id 改为 uuid 的方法,以及passport 使用uuid

user 部分

当不使用传统id时,

先在模型中写入 关闭默认排序

1
public $incrementing = false;

migrate中修改

1
$table->increments('id');

1
$table->uuid('id')->primary();

随后运行la5 migrate

新建App\Traits\Uuid

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

namespace App\Traits;

use Illuminate\Support\Str;

trait Uuid
{

/**
* Boot function from laravel.
*/
protected static function boot()
{
parent::boot();

static::creating(function ($model) {
$model->{$model->getKeyName()} = (string) Str::orderedUuid();
});
}
}

随后在模型中添加

1
2
3
use App\Traits\Uuid;

use Uuid;

之后使用laravel自带的auth可以正常注册了。密码找回功能也可以使用。

参考文档

passport 部分

passport安装完成后

执行php artisan vendor:publish --tag=passport-migrations

复制迁移到migrate目录

修改CreateOauthClientsTable

1
2
3
4
5
6
$table->increments('id');
$table->integer('user_id')->index()->nullable();
// 改为

$table->uuid('id')->primary();
$table->uuid('user_id')->index()->nullable();

其他迁移将client_iduser_id 改为使用uuid

App\Providers\AppServiceProvider中引入部分添加

1
2
use Laravel\Passport\Client;
use Illuminate\Support\Str;

boot()部分添加

1
2
3
4
5
6
7
Client::creating(function (Client $client) {
$client->incrementing = false;
$client->id = (string) Str::orderedUuid();
});
Client::retrieved(function (Client $client) {
$client->incrementing = false;
});

register() 部分添加

1
Passport::ignoreMigrations();

其他部分按照文档即可正常使用。

参考文档

user 路径修改

App\Http\Controllers\Auth\RegisterController中修改

config中的providers修改到对应路径 之后可以正常使用

laravel 包开发

包的开发非常有利于后期的维护,同时也可以有效的分配工作任务,对未来的团队工作有极大的优势。

主要是功能混在一起,找起来超级烦。

有必要将独立的功能分散出去。

参考地址 1
参考地址 2

需要说明的是 namespaceautoload超级重要

2019年10月11日 更新

Ramsey\Uuid\Exception\UnsatisfiedDependencyException 错误。

1
composer require "moontoast/math"

14日的份

双11的快递到了

小型超声波清洗机,和手动洗眼镜说再见了~~

code定义中

定义code将返回标准化,部件代码进行有效简化。

20日的份

admin 管理 部分 完成了

之后就是玩家部分了

周末通过 奥德赛 与 暗影

不不得不说 奥德赛 是历代最优

暗影的手柄操作有点奇怪

机器果然到时候了 九年了……

在坚持坚持吧

HDR 要有对应的显示器才可以

目前看 LG 34WK95U-W 不错

EIZO 就等到稳定下来再说了

wacom 在数绘方面是优秀的 可是不支持HDR

不过 贴图 还停留在一般RGB时代

如果上升一步,想想都可怕,一般用户与使用HDR的用户

体验的会是两个不同的世界,当然计算量也巨大的。

服务端渲染随着带宽的扩大,终究是要到来的。

头号玩家 描述世界 也只是时间问题

技术层面上 一定使用的是 服务端渲染

用户设备就不一定相同了

随手看了下5G标准,需要更多基站设备…… 稳定性恐怕不高

大法耳罩老化了 意外发现梁也断了……

希望合金梁可以顺利到手!!耳罩的更换倒是有眉目了~

7号的部分

logs部分快完成了

要不要使用Laravel Scout 是个问题,优势是用

之后就是玩家部分了,后端眼看着要搞定了

超开心(≧▽≦)/啦啦啦

目标是12月14日前完成全部后台部分

19年3月先做出Dome之后的修补是不可避免的

希望众筹能顺利啊~~ 再去香港估计也要提上日程了~~

想着要不要将游戏部分开源呢?一个人毕竟是有极限的……

有些东西也是可遇不可求的……

8号的部分

Laravel Homestead 配置了一天

最大的问题还是墙

解决方案

安装vagrant-proxyconf

Vagrantfile 中添加

1
2
3
4
5
6
7
Vagrant.configure("2") do |config|
if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = "http://192.168.1.4:8004"
config.proxy.https = "http://192.168.1.4:8004"
config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
end
end

要在注意的是127.0.0.1指的是虚拟机本身

之后在本机或者路由中开启对应端口就完成了

9号的份

windows 代理自动载入导致 大部分程序不能联网

最后重启SPE问题解决……

10号的份

密码重置完成了 预感有时就的很准

11月11的份

出门绊倒了 有个小伤口 问题不大

心得 合脚的鞋子超级重要!和现在的鞋子相性太差

舒适度不高 走远了超辛苦

语言切换完成了~~

好想什么呢

来猜猜吧

logs 部分

结合laravel logs重构

laravel logs基础上将logs存入数据库

先下config\logging中添加channels

如下

1
2
3
4
5
6
7
8
9
10
11
12
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['mysql'],
],
'mysql' => [
'driver' => 'custom',
'name' => 'mysql',
'via' => App\Logging\MySQLLogger::class,
'level' => 'debug',
],
]

新建MySQLLogger 这部分可以查看laravel 文档

Loggername 不能正常传入,问题暂时没找到根源

于是进行手动传入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
namespace App\Logging;

use Monolog\Logger;
use App\Logging\AdminLogsHandler;

class MySQLLogger
{
public function __invoke(array $config)
{
return new Logger(
env('APP_NAME'),
[
new LogsHandler(
$config['level'],
$config['name']
)
]
);
}
}

之后是AdminLogsHandler 用于将logs提交到数据库

这里也可以复写其他方法,可以自行查看Monolog\Logger

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
<?php

namespace App\Logging;

use Monolog\Logger;
use Monolog\Handler\AbstractProcessingHandler;
use App\Models\Logs;

class AdminLogsHandler extends AbstractProcessingHandler
{
private $name;
public function __construct($level, $name)
{
parent::__construct($level);
$this->name = $name;
}

protected function write(array $record)
{
Logs::create([
'channel' => $this->name,
'message' => $record['message'],
'level' => $record['level_name'],
'context' => $record['context']
]);
}
}

App\Models\Logs 注意要添加批量写入

1
2
3
4
5
6
7
8
9
protected $fillable = [
'channel',
'message',
'level',
'context'
];
protected $casts = [
'context' => 'array',
];

数据迁移如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$table->increments('id');
$table->string('channel')->index();
$table->enum('level', [
'DEBUG',
'INFO',
'NOTICE',
'WARNING',
'ERROR',
'CRITICAL',
'ALERT',
'EMERGENCY'
])->default('INFO');
$table->longText('message');
$table->text('context');
$table->timestamps();

之后可以使用

Log::info('message' , ['id' => $id])

以上

智力上线

27号的份

机械劳动久了,智商就下线了

可以快速解决问题,要重复好多次也是蛮蠢的

可是一直进行无创造劳动吧 智商也就慢慢休眠了_(:з」∠)_

之后美名其曰代码可读性提高了,

不过函数用多了一样不容易读,啊啊啊 好矛盾啊


29日的份

定时自动调整权限完成了~~

加上之前的权限方便能安心了了~~ 暂时~~

程序什么的 是要不断改进的


11月1号的份

一小步与一大步,真的只是差了一点点,现在看看方便了不少。

几天前 明白了一些事儿 很意外的 也是很有意思

providers 定义成了 Facades 用起来更方便了

新建class 下面这样写 之后要注意到config\app.php中绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class CustomService extends Facade
{
protected static function getFacadeAccessor()
{
return 'CustomService';
}
}

23号的份

vue 当前页刷新

1
location.reload()

其他

3合一验证 完成了

后端做成服务提供者了

用起来容易了不少

admin 部分要收尾了 😊


24号的份

为一些请求添加二步验证

之后是定时服务 与 logs

还有 admin 基本信息页面

游戏模式有一次眉目了


25号的份

laravel下错误返回分类

在一些情况下想要对不同的请求做不同错误的返回

可以使用$request->ajax()来识别ajax请求

对于自定义错误返回非常有用

更新node 后包报错,直接删除node_modules

之后npm install 可以解决大多数问题

使用 postman 进行 post

使用postman 直接 post 的方法

laravel 本身有CSRF 直接使用postput 等等会被阻断

找到一个可以解决办法

postman chrome 插件版本

新建一个environment 并切换到新建,右上⚙位置

找一个get请求 在Tests标签下输入

1
2
var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN");
postman.setEnvironmentVariable("XSRF-TOKEN", xsrfCookie.value);

{{XSRF-TOKEN}} 对应该的是第二行要注意下。

用于获取XSRF-TOKEN的值。

查看environmentXSRF-TOKEN 是否被正确传入。右上👁位置

确认后在postHeaders 中添加

X-XSRF-TOKEN : {{XSRF-TOKEN}}

之后就可以正常提交post

注意:laravel XSRF-TOKEN 有时效性 注意更新

XSRF-TOKEN 中有特殊字符,例如%时,laravel X-XSRF-TOKEN 验证会失败

主要是为postmanXSRF-TOKEN识别有问题,桌面版本没有这个问题

postman 桌面版

同上Tests标签可以写成

1
pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

使用laravel valet 时,postman不能正确访问域名……

原因valet产生的SSL证书,所以被阻挡,手动关闭后正常使用

要关闭的位置

settings -> SSL certificate verifcation -> off

之后就可以正常使用了

使用valetlinkpark 混用会报错!

15号的份

染黑了

自己都感觉到内心在向着无底的黑暗靠近

新键盘并没有人体工程学的好用

估计以后都只会选择人体工程学的了

开始处理权限了

admin的基本部分快做完了

之后是一般用户数据了

按照计划的一样进行扩展

说句自满的话

它不仅仅是一个游戏


16号的份

v-for 不能放在顶级标签上,会报错!

更新了一下docker镜像

role 部分也完成了……

现在又累又饿……


18号的份

role 部分修正完成~~

过程中确实补增了许多东西

到验证了~~

11号的份

队列

将特定 信息通知 推送到指定队列

修改horizon

可以使用

1
$user->notify((new SendEmail($Token))->onQueue('mail'));

1
2
use Notification;
Notification::send($user, (new SendEmail($Token))->onQueue('mail'));

roles

需要注意guard对应

viewmodels 要注意同步

blade 中使用时

1
2
3
@role('role' , 'guard')
something
@endrole

在路由中使用时

1
2
3
Route::group(['middleware' => ['auth:admin' , 'role:admin']], function () {

});

也可以在控制器中使用

1
2
3
4
public function __construct()
{
$this->middleware(['role:admin' , 'auth:admin']);
}

14号的份

find 与 where 的坑

find 不能准确 查找到对应条目

where 则可以,之后只有有意识的替换find

register的后端调整完成了~~~

大概这种感觉

屏幕快照 2018-10-14 20.58.44

0%