金马的Blog

我喜欢折腾

PHP 数组的尴尬

问题:

PHP 中,不管是 list 或者 dictionary 都使用一样的 [](或者 array()) 来定义。

在使用 JSON 作为 API 数据 Content-Type 的时候,会有这样一个问题:如何返回一个空对象和一个空数组?

使用 json_encode([]) 得到的结果是 [](json)

那如何返回一个 {} (json)

方法:

需要使用:json_encode(new stdClass)

关于圣诞节和福音

这是一篇日记。

今天是充实的一天。

上午是教会的聚会,钱大哥分享的题目是“仰望被钉十字架的主耶稣,弃绝和抵制怨言”, 他讲了圣经中记载以色列人在旷野中发了十次怨言,其实我们现在的基督徒和当时的以色列人相比,我们没有任何资格评价和评论他们,因为我们做得更差,发了更多的怨言。

通过钱大哥的分享,我有两个收获:

  1. 真实的认识到了发怨言的危害,有时候真的很自然的就抱怨,但是求神能帮助我,如果我真的发怨言了,让我有一颗回转的心。
  2. 我们现在走的天路和当时以色列人进迦南的路是一样的,愿神帮助我不断的操练自己,成为主的精兵,在遇见困难的时候,更多的仰望主耶稣基督,弃绝并抵制怨言。

下午是我们小组的圣诞聚会,弟兄姊妹热心的服侍、分享、爱都大大的鼓励和温暖了我们彼此的心,靠着那位充满怜悯的神,我们可以在他的面前释放自己,坦诚的沟通,信任的交流,无论是已经信主的还是慕道友。

交换礼物环节还争取到了非常喜爱的呼啦圈,哈哈哈哈哈,只能说我太机智勇敢了,具体细节就不爆料了。

无论如何,奇妙的神,谢谢你今天让我的内心有平安喜乐

如何生成微信红包金额

微信红包

一些前提解释

我要讨论的红包是:微信拼手气红包。

拼手机红包的一些的限制条件如下: – 每个红包最小为0.01元,所以每个红包至少要分到0.01元。

输入数据:

  1. 红包总金额 amount
  2. 红包个数 count 如果 amount / count < 0.01 元,报错:单个红包金额不可低于0.01元,请重新填写金额。

输出数据:

一个数组:数组中包括 count 个红包金额(每个金额都大于等于0.01元,所有红包的金额加起来等于总金额 amount)

一个重要的问题

首先我们先确定一个重要的问题:每个红包的金额是先生成好还是在边抽边生成?

为了解决高并发过程中锁的问题,明显先生成每个红包的金额更简单更效率。

关于写作

开始写作。

最近加入了李笑来老师的组织的“共同成长”社区,每天看大家的分享并且思考,收获挺大的。

昨晚听了 Scalers 的分享,Scalers 分享了自己如何坚持写作写了700天和学习英语口译的经历,很打动人心,他说现在的社会信息严重过载,我们要成为生产信息的人而不是消费信息的人。他自己就是这个方法论的践行者,这个过程中,他有很多的收获,有很多的 Serendipities。

反观我自己,我清楚的分析过自己,也认为写作对我来说是一件非常重要的事情,却写的很少,所以从今天开始,我要开始认真写作,是否能坚持,写几天再说。

为什么写作?

  1. 写作可以理清我的思路,把一些比较碎片的信息整理汇总,最终形成我自己思考后的观点。
  2. 写作可以让我更好的读书,更好的吸收别人的知识。
  3. 写作是一种积累的方式。

如何持续?

多读,多思考,没有足够多输入的时候,只会输出一些空洞的内容,所以多读书是肯定的,但多思考也不能少,缺一不可。

参考

Scalers:700天持续行动和写作带给我的启示[李笑来老师共同成长社群分享文字稿]

写一个接口应该考虑哪些内容

我觉得写一个接口应该考虑如下的内容:

  1. 确定 url:是否符合 Restful,是否要符合公司确定的规范?
  2. 确认操作人的权限
  3. 确定要操作的资源的权限
  4. 验证传入的参数:不要相信外面传进来的任何数据
  5. 操作失败的提示
  6. 操作成功的提示
  7. 写文档:如何按规矩写好文档是一件值得花时间和精力梳理的事情
  8. 如何测试接口,用什么数据测试

如果你使用 Redis,我推荐你两本书

redis books

两本书的名称分别是:《Redis 设计与实现》和 《Redis 实战》。

黄健宏(huangz)和《Redis 设计与实现》的作者和《Redis 实战》的译者,非常感谢他对 Redis 的布道。

如果你时间不多,我建议认真读《Redis 设计与实现》的第一部分:数据结构与对象和《Redis 实战》的应用部分:第5章到11章,当然,其他部分也是非常的赞。

关于数据库建表脚本管理

这是一个好问题,经过一段时间的使用,我推荐使用 MySQLWorkbench 来进行管理数据库脚本。

我简单分析一下我用过的几种管理方式的优缺点:

SQL 脚本

优点:可版本管理。 缺点:数据库表修改后,同步数据库比较麻烦。

Migration(比如 Laravel 的 Migration)

优点:可版本管理,直接使用代码代替 SQL 脚本; 缺点:只能特定的框架才能用,不够通用。

MySQLWorkbench

优点:修改方便,管理方便,同步数据库非常方便。 缺点:无法版本管理,因为是一个二进制文件。

MySQLWorkbench的亮点功能是:同步建表 Model 和数据库,当Model 修改后,直接和数据库进行同步,生成差异的 SQL 脚本执行,非常方便。

综上,没有使用过 MySQLWorkbench 的同学,真的可以试一试。

讲讲我最近做的一个 App 后端项目

以前主要做网站类的后端,没有深入做过一个 App 的后端。最近因为前公司项目解散加入了一个新的公司,现在做的项目是一个教育导航 App 的后端 Api 部分。

因为只有我一个后端程序员,所以一切要使用的框架等都需要我来调查并选择。我用的是 PHP,以前的项目使用过 Codeigniter,也使用过非常轻量级的 Slim 框架,Laravel 也有一直关注,看了 Jeffery Way 的 Laracasts 很多视频,确实感觉到了 Laravel 在快速建立方面非常优秀,而且因为使用的人越来越多,现在也有非常丰富的第三方库,而且 Laravel 框架一直都在使用 PHP 最新的一些技术,这也是我喜欢这个框架的一个原因。

2014年总结与2015年展望

家庭(妻子)

2014年中更多的认识了神,更多的看到了神的荣美,所以与妻子的关系也是越来越好,感谢主的恩典。只可惜我依然经常以自我为中心,没有做好妻子的头,还求神不断的带领。

教会生活

基本有稳定的教会生活,但是灵修方面还需要不断的操练,求神带领。

工作

去年加入了八百里人,大部分时间做了一个轻型的在线CRM,主要使用了 Node.js Express 框架做的,对 Node.jsMongoDB 有了一定的认识。

今年八月份来加入了壹理财团队,这4个月中感觉是我这两年成长最快的四个月,感谢同事的分享和带领(尤其 McFog),让我不管从前端、后端都有了全面清晰的认识,对 PHP 这个语言重新认识了一遍,终于明白为什么大家都说 PHP 是世界最好的语言了 :)

新的一年中,期望工作中有更多的承担,团队中有更多的分享(自己先要做好),彼此激励共同进步,把技术搞搞好,爱技术,爱工作,我编程,我快乐。