歌词听写 - 『さくら、もゆ。-as the Night's, Reincarnation-』オープニングムービー

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
28
「さくら、Reincarnation」

そう、確かなこと
思い出して
小さいな手のひらに
握った花びらが
ひとひら舞い落ちて
初めて出会いったの
同じ場所で
いつから忘れてった
高鳴る気持ちを
隠さないで
わたしにすべて見せて
You're smile is mine
さくら舞う夜に
もう一度夢を見よう
現実を脱ぎ捨て花になろう
遥かな
風のささやき
耳をすませば
ほら、終わらない
さくらもゆ軌跡
ふたりで歩んでこう
降り注ぎ煌めく夢になろう
彷徨う迷子のように
見失いでも
ほら、輝く
愛は消えない

F社真是棒到爆炸 然而各种跳票…🤣

又是一年没更新

没事想起来这个blog页面,发现上次更新还是去年2月…

发现我写blog真的是各种时间断层

嘛,毕竟懒没办法

更新了下主题样式

准备有空再加个评论系统

据说用github的issue来弄评论很不错?

laravel-mongo对不同类型同值的数据处理

最近敲代码的时候发现,laravel-mongo 在 ORM 的时候,如果用 save 更新一个值,类型不同但值相同,是不会写入 db 的…

举个栗子:

1
2
3
4
$data = new Data();
$data->_id = 1;
$data->a = 123;
$data->save();

那么mongo里面就是 a: int32 = 123

这时候如果再

1
2
3
$data = Data::find(1);
$data->a = '123';
$data->save();

问题就来了…

mongo 里面的值还特么的是 a: int32 = 123

并没有被更新成 a: string = '123'

但是如果是个不同类型不同值

1
2
3
$data = Data::find(1);
$data->a = '321';
$data->save();

就会被更新成 a: string = '321'

这个问题略蛋疼啊…

php-fpm配置的一个坑

调了一个下午,发现 php-fpm 有个怪坑

我在 docker 下,基于 php:7.0-fpm 镜像,构建了一个容器

并且 ADD ./app.pool.conf /usr/local/etc/php-fpm.d/ ,放了个 pool 进去

具体内容为

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses on a
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 0.0.0.0:9000

; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives. With this process management, there will be
; always at least 1 children.
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - no children are created at startup. Children will be forked when
; new requests will connect. The following parameter are used:
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic

; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 20

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3

;---------------------

; Make specific Docker environment variables available to PHP
env[DB_1_ENV_MYSQL_DATABASE] = $DB_1_ENV_MYSQL_DATABASE
env[DB_1_ENV_MYSQL_USER] = $DB_1_ENV_MYSQL_USER
env[DB_1_ENV_MYSQL_PASSWORD] = $DB_1_ENV_MYSQL_PASSWORD

catch_workers_output = yes

然而…

php-fpm 一启动就报错

1
2
3
4
5
[email protected]:/usr/local/etc/php-fpm.d# php-fpm
[05-Jul-2016 08:36:34] ERROR: [/usr/local/etc/php-fpm.d/applll.pool.conf:4] unknown entry 'user'
[05-Jul-2016 08:36:34] ERROR: Unable to include /usr/local/etc/php-fpm.d/applll.pool.conf from /usr/local/etc/php-fpm.conf at line 4
[05-Jul-2016 08:36:34] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[05-Jul-2016 08:36:34] ERROR: FPM initialization failed

研究了好几个钟头无果

瞎弄的时候把 app.pool.conf 重命名成了 aaa.pool.conf

神奇的发现, php-fpm 正常了

1
2
3
[email protected]:/usr/local/etc/php-fpm.d# php-fpm
[05-Jul-2016 08:34:07] NOTICE: fpm is running, pid 188
[05-Jul-2016 08:34:07] NOTICE: ready to handle connections

然后测试了几个文件名,发现只要是 app 打头,都会造成 php-fpm 抽筋…目测是撞上了什么奇怪的规则

然而我 Google 搜了好久都没发现有人报告这个问题…_(:3」∠)_

嘛,自己记录一下吧.

Laravel 在极高的瞬间并发时出现的问题

又踩了了一个坑

之前曾经出现过 laravel 在极高的瞬间并发的时候,会出现session状态丢失的问题。原因是laravel中,session默认储存在文件系统,在瞬间并发时,可能由于文件系统io的原因,导致session文件读写失败,进而造成session丢失。

这个问题我当时是直接把session存放在cookie或者数据库中解决了。

然而今天又出现了新状况,也是瞬间高并发的锅。

如图,这是在ngjs下的一个并发上传的控件,会同时并发上传选择的文件,且在上传前会并发请求以查询文件是否已上传,以完成续传功能。

1秒内大概有15个并发连接

在这几个并发连接中,有部分会发生错误,扔我一脸500

具体报错是^

然而,我明显没设错mysql账号密码啦

而且我.env文件中数据库相关的设置是:

1
2
3
4
DB_HOST=localhost
DB_DATABASE=amaoto-core
DB_USERNAME=root
DB_PASSWORD=

然而报错是说我用了forge作为用户名连接mysql

等等,forge好熟悉啊

这货不就是laravel配置文件中的连mysql的默认用户名咩

检查config/database.php

1
2
3
4
5
6
7
8
9
10
11
'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST''localhost'),
        'database'  => env('DB_DATABASE''forge'),
        'username'  => env('DB_USERNAME''forge'),
        'password'  => env('DB_PASSWORD'''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

果然

也就是说,env('DB_USERNAME', 'forge') 没能成功读取.env文件

参考之前session状态丢失的解决方法,那就不读取.env咯

然而不用.env的话,把数据库账密写在config/database.php也不科学

于是翻了翻文档

发现artisan指令:config:cache 可缓存配置文件

马上执行试试,重新测试一看,完美解决。

嘛,所以难得的更新了blog做个笔记ww

修复 Windows 10 中损坏的 Appx 应用

前段时间手贱把 Surface Pro 3 的 系统升级到了 Windows Indsider Fast Ring 通道的 10525 版本,然后发现 ChromeVirtual Box 都出现了兼容性问题,估计是新的内存管理机制的锅。

因为工作需要用到 Vagrant,Virtual Box 不能用简直不能忍,于是我滚回到了10240

然而没想到回滚完成后,好几个 Appx 应用都出问题了,应用名显示为 @{microsoft.windowscommunicationsapps_17.6120.42011.0_x64__8wekyb3d8bbwe} 类似这样的形式。

出问题的应用分别为 Edge、日历与邮件、应用商店、Cortana,其中 Edge 和 Cortana 只是名字没了Icon没了,商店则是变成了英文菜单,日历与邮件则是直接打开不能、更新不能、卸载不能、完全拿他没办法。

强行忍了一个多星期,实在受不了,于是昨天抽时间出来终于把这问题解决了,写下来记录下步骤 顺便给blog填点东西


首先,祭出最基本的 wsreset 大法,管理员运行,然而并没有什么卵用

试着跑了下系统自带的疑难解答,然而它提示说……

|д゚)

好咯,还是要自己动手

既然系统搞不定,那就自己来研究吧

管理员身份打开 Powershell,把所有包重新注册一遍

1
Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

坐等了大概一分钟,跑完了

跑完瞬间发现,Edge恢复正常了,那写坏掉的应用名也恢复正常了!

然而还是有两个坏掉的图标……

日历与邮件还是不行_(:3」∠)_

瞄了一眼 Powershell,发现有报错

咦,C:\ 在C盘根目录找是什么鬼

输出一下包信息看一下先:

1
Get-AppxPackage microsoft.windowscommunicationsapps*

妈了个鸡,为何 InstallLocation 不见了……

1
2
cd "C:\Program Files\WindowsApps\"
ls

妈了个蛋,还真没了这个文件夹……

存在的文件是 42011 然而包信息里面的是 42001

好吧,估计这个就是问题所在了……

试试移除掉这个包咯

1
Get-AppxPackage *microsoft.windowscommunicationsapps* | Remove-AppxPackage

然而并没有用,还是读的根目录

想了想,既然只会读根目录,那我就把 42011 的 AppXManifest.xml 扔在 C: 根目录总能读到了吧?

于是把整个 42011 的所有文件复制一份扔在根目录

然后试着:

1
Add-AppxPackage -register "C:\AppxManifest.xml" –DisableDevelopmentMode

有反应!但是依然是报错信息,说在 C:\ProgramData\Microsoft\Windows\AppRepository 里面找不到对应的xml

那我就复制一份进去咯

1
xcopy 'C:\AppxManifest.xml' microsoft.windowscommunicationsapps_17.6106.42001.0_x64__8wekyb3d8bbwe.xml

再试试看!

1
Add-AppxPackage -register "C:\AppxManifest.xml" –DisableDevelopmentMode

nice!成功运行!

打开开始菜单看看,邮件恢复了!

为了防止出现各种奇怪的问题,先把包砍了再从商店装一遍吧

然而并不能在GUI下直接卸载,那就老方法

1
Get-AppxPackage *microsoft.windowscommunicationsapps* | Remove-AppxPackage

ok,卸掉

然后商店重新安装

卧槽 教练这波不亏 (´・ω・`)

Homestead 2.0.9 的一个坑

整个下午都在调戏 Laravel 5Homestead,然后掉坑里了……记录一下

Homestead.yaml 配置文件中,folders列,如果要设置为当前路径,不能够这样:

1
2
3
folders:
- map: .
to: /home/vagrant/your-dir

而是要这样:

1
2
3
folders:
- map: ./
to: /home/vagrant/your-dir

就因为这尼玛的少了个斜杠 //vagrant 一直mount不了……

さくら、もゆ。-as the Night's, Reincarnation- 応援中!! さくら、もゆ。-as the Night's, Reincarnation- 応援中!! 「封緘のグラセスタ」応援中! 『縁りて此の葉は紅に』2018年1月26日発売予定! 『縁りて此の葉は紅に』2018年1月26日発売予定!