大象笔记

知者行之始,行者知之成

MySQL 唯一约束 Unique 是否允许存在多个 NULL 值

实际测试结果,允许多个 NULL。 但是不允许多个空字符串 “” 我觉得这是合理的,例如,我可以不填写手机号,但是,如果我填写了,就必须是唯一的。 注意,并不是所有的数据库都是这个标准 SQL Server 就不允许存在多个 NULL 值 ...

阅读全文...

PHP Composer 将指定依赖包版本降级

例如,我之前安装的是 laravel-permission (2.6.0) 但是我想降级到 1.4.0 版本 直接修改 composer.json 文件,并没有效果。 执行命令即可 composer require "spatie/laravel-permission:1.4" - Removing spatie/laravel-permission (2.6.0) - Installing spatie/laravel-permission (1.4.0) Downloading: 100% ...

阅读全文...

MySQL 中 Decimal, Float, Double 的区别

最近在写小程序商城,不可避免的遇到价格的存储问题 如果要存交易额的话,通常使用什么类型? 凡是跟钱相关的都需要使用 Decimal。 Decimal 是精确存储 float, double 是近似存储,并不精确 做个简单的测试。 首先建表 CREATE TABLE `payment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `count` decimal(10,5) DEFAULT NULL, `count2` float ...

阅读全文...

我的世界 - 路痴与陌生的村庄

我在自己的世界中建了4套房子,不是因为我喜欢盖楼,而是因为我出门捡破烂后,通常会忘记怎么原路返回! 迷路之后,通常一顿乱跑,越跑越远,看看快落山的太阳,只能就地再建。结果就是名下 N 套房子,但是我从来都不知道第二套在哪里。。。 如何不迷路 痛定思痛,我想了几套方案。 第一套方案,把房子建的高高的。但是实践证明并不可行,因为视野是有限的,而且我的世界中偶尔还有雾霾,更不要说下雨、下雪了。 第二套方案,在沿路做记号。这套方案,暂时可行。可惜的是,比较费花。出门的距离取决于身上带了多少花。另外,花是否会被牛羊吃掉、自然枯萎还需要观察。 陌生的村庄 远行不是件坏事,总能发现新鲜的东西,这不发现远处 ...

阅读全文...

Laravel Admin 折腾之旅 - Voyager

早晨蹲坑的时候,在 reddit 上看到 voyager 发布了 1.0 版,这是个与 Laravel backpack 类似的 Admin 方案。 于是早上过来安装 voyager 尝试了一下 几点感触 非常类似 Wordpress 的后台 数据表的管理在 admin 后台进行,比 backpack 方便很多,但是细节上的调整还是要使用 mysql 客户端。例如,字段位置,索引等 关联表管理非常简单,点选即可。但是问题和 Backpack 一样,都不支持外键关联表的多字段显示。例如,一个订单表,关联了用户信息,要同时显示用户姓名和手机号,就无法实现。只能显示用户的一个字段。 内置功能非常完 ...

阅读全文...

我的世界 - 初体验 (自爆僵尸、射箭小贼、火把、饿肚子)

下载的是手机版,网易代理的。之前的 PC 版没有玩过,所以基本是完全小白状态。 周末趁小心然睡觉玩了一会,感觉节奏还可以,不会太累。 生存模式,确实比较有意思。目前是简单难度,我依然应付不了。。。 自爆僵尸 这货非常恐怖,来了二话不说就自爆。而且不怕太阳爷爷。。。 自爆僵尸应该是在接近你时才会自爆,所以比较安全的方法是,与其保持距离。 保持距离的方法: 在内墙外再加一道外墙。第一夜是来不及了 增加墙的厚度 增加建筑高度 活在地下。。。 射箭的小贼 不知道为啥这货也不怕太阳晒。。。只能过去砍死他 火把 防止僵尸随机到房子中 首先,需要建造炉子 木搞 - 八块石头 - 炉子 宗旨白天多搞木头。 ...

阅读全文...

Laravel Backpack 上传图片自动保存至七牛

默认 Backpack 上传的图片是保存到本地,但是现实场景中都是用 CDN 存储图片,以提升用户体验。所以就需要改造上传的流程,这里用到了 Laravel 七牛的接口实现。 根据 Backpack 文档的说明,需要在 mutator 中进行改造。 参考 Laravel 文档,https://laravel.com/docs/5.3/eloquent-mutators#defining-a-mutator Mutator 名词,增变基因 To define a mutator, define a setFooAttribute method on your model where Foo i ...

阅读全文...

Android 布局:Liner Layout 与 Constraint Layout 该如何取舍

写了一个简单的 Form 表单录入页面。 总体体会,最佳实践是 整个页面的大布局使用 Liner Layout Vertical, 因为基本是一行一个控件(button),或者是两个控件 (label , input) 每一行,再选择是使用 Liner Layout 水平,还是 Constraint Layout。简单的两个控件占整行的就可以使用 Liner Layout,复杂一点的就使用 Constraint Layout Constraint Layout 还是有学习成本,需要了解之后才能尝试。 切忌上来就全屏组件 Constraint Layout,这样不便于后期调整。 ...

阅读全文...

Laravel db:seed 报错 [ReflectionException] Class XXX does not exist

修改了 Laravel Backpack Settings 自带的 seeder 导入测试数据时,报错 php artisan db:seed --class=SettingsTableSeeder [ReflectionException] Class SettingsTableSeeder does not exist 解决方法 composer dump-autoload dump-autoload 是 composer 的一个命令,与 laravel 无关。 ...

阅读全文...

中午用半个小时实现了个以自言自语为目的的 Notes 功能

有时候没有那么多的内容要记录,只有一两句话,这种情况并不适合来发一篇博文。 所以,就实现了个类似微博的小功能 - Notes 当然,这玩意主要是给自己看看,没事看看自己脑子里曾经装了些什么奇怪的东西。。。 ...

阅读全文...

大淘气孙心然的周末(11个月零两周)

现在一到周末就害怕,带孙心然比加班还累。越来越懂事的同时,也越来越粘人,当然黏我就好了,孙心然只黏她妈。。。所以我看起来格外费劲 周末随媳妇去彩云城剪头发,这家伙一开始还挺乖,到处找小猫小狗玩 等轮到她妈妈剪头了,我的世界彻底崩溃了,一直哭闹,鼻涕一把泪一把,好不容易哭累了,睡了半个小时 睡醒了继续哭闹,鼻涕直往我身上抹。没办法只能她妈抱着她剪头 好不容易剪完头,长舒了一口气。 这个周我一直感冒,整个办公室的壮丁基本都感冒了。所以特别担心传染到她娘俩,但是周末一旦看起孩子,就很难规避了。果不其然,媳妇被我传染了。传染给心然只是时间问题了。。。 ps,写这篇日记是趁着姑娘睡黄昏觉的时 ...

阅读全文...

微信小程序:通过 wx.chooseAddress 获取微信的收货地址

正常的逻辑,没有什么好说的,参考微信小程序官方文档即可。 需要注意的是,没有权限获取其收货地址数据的场景。 测试方法: 点击微信小程序开发工具左下角的缓存按钮,点击 “清除授权数据”,刷新页面。 就可以模拟这种特殊情况了。 如果用户点击取消,拒绝访问其微信收货地址,则会触发 fail 的回调 errMsg: "chooseAddress:fail auth deny" 最终的逻辑是: select_address: function(e) { if (this.data.choosed_address) { // 如果已经选择了地址, ...

阅读全文...