分类 开发 下的文章

技术可以解决大部分的问题,但是只是从技术层面上出发去考虑,往往具有较大的局限性,且容易出现吃力不讨好的局面。因为,技术最终是用来解决实际问题的,需求源自实际场景,目标也是实际场景,单纯去完成一个纯技术的动作,很容易指标不治本,缺少足够的健壮性和可扩展性。

- 阅读剩余部分 -

今年GORM发布了新的版本V2,但是从V1到V2发生了一些破坏性的更新。在官网看的话,大部分关于V2特性的介绍都是有中文版本的,唯独对于破坏性的更新没有予以翻译,本文是直接从官网翻译过来的,有不妥之处还请指正。

原文链接:https://gorm.io/zh_CN/docs/v2_release_note.html#%E7%A0%B4%E5%9D%8F%E6%80%A7%E5%8F%98%E6%9B%B4

- 阅读剩余部分 -

Audio Cache

原文地址:https://github.com/luanpotter/audioplayers/blob/master/doc/audio_cache.md

为了使用本地资源,你必须使用AudioCache类。

Flutter没有提供对资源播放音频的简单方法,而这个类则提供了相应的方法。实际上它会将资源复制到设备中的一个临时文件夹中,然后将其作为本地文件播放。

它跟踪复制出来的文件,以缓存的形式工作,你可以毫不延迟地重播它们。你也可以实现对文件的预加载。

每个实例都有自己独立的缓存,因此,如果想优化加载时间,可以创建一个单例。

- 阅读剩余部分 -

目前在flutter中,并没有官方提供的音频播放插件,因此,需要我们自己去寻找第三方的widget或者自己开发。在google的时候,如果搜索“flutter audio”,那么出来的第一条结果一般都是“audioplayers | Flutter Package - Dart Pub”。本文主要是翻译该项目的说明文件,用来简化大家对它的理解。

原文地址:https://github.com/luanpotter/audioplayers/blob/master/README.md

AudioPlayers

一个可用来同时播放多个音频文件的Flutter插件,兼容Android和iOS。

- 阅读剩余部分 -

题目:有金额M元,给N个人发红包,最低0.01元,完全随机,不设上限,全部金额都需发放出去。

思路:可以借鉴发牌的算法,将金额以最小发放单位0.01元换算,等价于M*100张牌。那么我们要做的是,从M*100张牌里边随机抽出N-1张牌,计算这N-1张牌中间隔出来的N个区间的差值即可。

- 阅读剩余部分 -

Lombok注解应用到一个项目中可以大大减少在IDE中生成或手工编写的样板代码行数。这样可以减少维护开销,减少bug,提高类的可读性。

在idea中要使用lombok是很简单的事情,只需要安装一个lombok plugin,然后在pom.xml加入对lombok的依赖即可。

与任何技术选择一样,使用Lombok既有积极的作用,也会有消极的影响。而最典型的不好的一面就是,将源代码生成javadoc的时候,因为源码里边使用了lombok,只声明了private的属性,而未编写setter/setter方法等,最后生成的文档当然就不会包含这些属性的getter和setter方法。先通过一个简单的例子复现一下这个场景。

- 阅读剩余部分 -

Composer作为一个常用的php包管理工具,已经成为PHP项目包管理事实上的标准了。大部分开源的php项目,都可以从里边找到composer.json的身影。基本的知识本文就不介绍了,而是挑选一些日常开发中遇到的比较棘手又常见的几个问题予以记录。如:使用镜像、使用私库、如何使用非http项目、如何修改版本号等等。

使用镜像

使用composer的第一要素就是配置中国镜像,否则,你将一直抱怨这个产品根本没法使用,你对composer的影响就会一直处于停摆状态。

一般我们使用https://packagist.phpcomposer.com作为最经典的配置了。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

- 阅读剩余部分 -

PHPUnit 是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。

单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。

总之一句话,使用 phpunit 进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配。

另外,单元测试用例是通过命令操控测试脚本的,而不是通过浏览器访问URL的。

这里以phpstorm为例,说明如何利用phpunit做单元测试。

- 阅读剩余部分 -

团队内部的版本工具,从svn换到git之后,先用了一小段时间基于ssh的git服务以后,果断换到了高大上的gitlab。后期,随着git项目的不断扩大,到gitlab的不堪重负,以及升级的各种阵痛。再到后来团队对于代码规划化和文档规范的需求,我们基于php实现了一套完全自主的Git HTTP Server。

- 阅读剩余部分 -