大象笔记

知者行之始,行者知之成

tampermonkey 当前页面跳转后没有触发新页面对应逻辑

现象 页面 A: https://www.sunzhongwei.com/#/coding 页面 B: https://www.sunzhongwei.com/#/sleeping 页面 B 的内嵌 iframe 页面 C: https://www.sunzhongwei.com/dreaming 对页面 C 做了 tamermonkey 规则,即跳转到页面 A: window.top.location.href = 'https://www.sunzhongwei.com/#/coding'; 但是跳转之后,页面 A 对应 tampermonkey 逻辑并没有执行 if (window ...

阅读全文...

修改 WSL Ubuntu 18.04 默认源为阿里云镜像

Win10 Windows Store 中下载的 WSL Ubuntu 18.04 默认的源 apt install 下载速度异常缓慢,想替换成国内阿里云的镜像源。 确认默认源 首先查看默认的源的地址 sudo vim /etc/apt/sources.list # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://archive.ubuntu.com/ubuntu/ bionic main restr ...

阅读全文...

tampermonkey 作用于页面内 iframe 时,将页面地址修改的方法

正确的做法 window.top.location.href = 'https://www.sunzhongwei.com'; 错误的做法 window.location.href = 'https://www.sunzhongwei.com'; 这样只会修改 iframe 的页面内容,而其宿主页面并不会改变。 查看页面 frame 层级 Chrome - Application - Frames ...

阅读全文...

JQuery 自动勾选 checkbox, 并触发提交

正在用 tampermonkey 写一个网站自动答题的程序。 网站题目的大致结构是 <input type="radio" name="qa" value="A"> <input type="radio" name="qa" value="B"> <a href="javascript:" class="submit-answer">提交答案</a> $('.submit-answer' ...

阅读全文...

Laravel attribute casting 导致的 Indirect modification of overloaded property

在 Laravel model 中,设置了某个属性做 array casting. protected $casts = [ 'rounds' => 'array', ]; 但是在 controller 中执行 array_push($record->rounds, date("Y-m-d H:i:s")); 时,报错 production.ERROR: Indirect modification of overloaded property 可见,casting 并不支持一些针对特定类型的操作,例如无法作为指定类型的函数的参数。 按照官 ...

阅读全文...

laravel migrate 指定执行部分 migration

由于我不习惯于使用 laravel migration 来管理数据表变更,所以很多项目都是无法直接执行 php artisan migrate 否则会报错 SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists 即,这些本该由 migrate 生成的表,已经提前由 SQL 创建了。 所以,我非常需要能够指定运行部分 migration 的方法。例如创建 job queue 相关的两个表。 将需要执行的 migration 文件复制到 new 目录下,然后执行 php ar ...

阅读全文...

悲剧,Windows 10 蓝屏,无法进入系统

国庆节后第二天,开机之后无法进入系统,一直蓝屏状态,各种报错。 安全模式也无法进入。 很奇葩,毫无征兆。昨天还用的好好的。也没有安装 1809 更新,就这样无缘无故的挂了。。。 彻底死心,只能重装系统。幸好旁边有台没有格掉的 Ubuntu 18.04 系统,要不今天的开发进度就瞎了。 教训 重要文件一定不要存 Windows 的系统盘,有随时被毁掉的风险。 ...

阅读全文...

laravel job 与 event 的区别

job 是异步执行。适合耗时长的任务。例如,批量发送邮件,短信。 event 是在 request 的生命周期内执行。适合耗时短的操作。例如,更改数据字段状态。 但是, event 的好处是,可以复用各种监听。例如,事件 A1 可以触发 B1, B2; 事件 A2 可以触发 B1, B2, B3。 混合使用 例如,在 event 中添加 job 任务。 参考 https://sergeyzhuk.me/2016/02/23/laravel-jobs-vs-events/ ...

阅读全文...

WSL 设置 Microsoft YaHei Mono CP950 字体

Windows 10 WSL 默认的字体异常丑陋,似乎是新宋体。最不能忍受的是单引号,在英文模式下,单引号看上去跟中文的单引号非常像。经常性地误认为我没有切换输入法。 于是在 Github 上找了一个 MicrosoftYaHeiMono-CP950.ttf 的字体文件。 虽然别扭,但是还是比新宋体好看多了。 Mono Font 等宽字体(英语:Monospaced Font) ...

阅读全文...

GuzzleHttp 请求设置超时时间

之前调用一个三方的 WEB API,大量的请求超时,导致 PHP 进程被占用完。整个网站一直报 504。 其中一个优化措施就是对三方 API 调用设置超时时间。 use GuzzleHttp\Client; $client = new Client(); $url = 'https://www.sunzhongwei.com'; try { $res = $client->request('GET', $url, ['timeout' => 1.5]); $res = $res->getBody(); } catch(\Throwable $ ...

阅读全文...

Laravel 的文件存储 - Storage

记录一下 Laravel Storage 的常见用法 内容写入磁盘文件 > php artisan tinker >>> use Illuminate\Support\Facades\Storage; >>> Storage::put('test.txt', 'hello'); => true ls storage/app/ public/ test.txt 文件默认创建在 /storage/app 目录下 获取文件存储的本地磁盘全路径 继续在 tinker 中测试一下 >>> storage_path() => & ...

阅读全文...

PHP 调用系统命令行,system() / exec()

system 与 exec 的区别 exec,可以指定 output 变量,且返回的结果是 array 结构。 >>> exec('ls', $output, $ret) => "some_file.txt" >>> $ret => 0 >>> $output => [ "app", "artisan", "bootstrap", "composer.json", "composer.lock", ] ...

阅读全文...

近期节日

2018年10月22日 世界传统医药日
2018年10月23日 霜降
2018年10月24日 联合国日
2018年10月31日 世界勤俭日
2018年11月01日 万圣节
2018年11月07日 立冬
2018年11月08日 中国记者日
2018年11月10日 世界青年节
2018年11月11日 光棍节
2018年11月14日 世界糖尿病日
2018年11月17日 国际大学生节
2018年11月20日 国际儿童日
查看更多节日