无语


  • 首页

  • 归档

项目代码管理系统设计

发表于 2018-02-22 | 分类于 项目管理

系统设计

类文件说明描述
方法说明描述
更新记录时间,更新人,更新版本
是否弃用
是否通过单元测试
单元测试代码负责人
单元测试更新记录
API接口测试

相关链接
项目代码管理流程设想

项目代码管理流程设想

发表于 2018-02-22 | 分类于 项目管理

项目日常痛点

  1. 新人接手项目不知从何下手
  2. 项目长期迭代,代码缺少维护导致健壮性下降
  3. 项目中老人离职,导致无人熟悉模块逻辑不敢轻易修改代码往往只能重写
  4. 代码注释混乱
  5. 代码编写缺少设计
  6. 文档分散缺乏整理

解决方案

  1. 采用高覆盖率的单元测试来保证项目代码的健壮性
  2. 采用独立系统追踪管理项目代码的注解版本更新(持续集成保持最新文档)

Java 单元测试要求

  1. 不对数据库访问逻辑进行测试(采用MOCK)
  2. 不对外部接口进行测试(采用MOCK)

模板测试用例

  1. 远程接口调用测试
    1. 接口返回false
    2. 接口返回空数据
    3. 接口返回小于一页数据
    4. 接口返回大于一页数据
  2. mybatis数据访问层测试
    1. 返回空数据
    2. 返回集合
    3. in查询输入空集合

Flask Sandbox

发表于 2018-02-09 | 分类于 python

沙箱型应用模型

数据存储采用 MongoDB

内建控件模型:

  1. 自由文本(单行)
  2. 自由文本(多行)
  3. 数字文本
  4. 富文本
  5. 日期
  6. 日期(精确到时间)
  7. 单选
  8. 多选
  9. 下拉选择

DOING

  1. 数据后端验证(类型,正则)

TODO

  1. 控件
  2. 数据前端验证

jQuery-DataTable 无数据不显示分页控件

发表于 2018-02-07 | 分类于 javascript

修改配置选项

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
/**
* This function is called on every 'draw' event, and allows you to
* dynamically modify any aspect you want about the created DOM.
* @type function
* @param {object} settings DataTables settings object
*
* @dtopt Callbacks
* @name DataTable.defaults.drawCallback
*
* @example
* $(document).ready( function() {
* $('#example').dataTable( {
* "drawCallback": function( settings ) {
* alert( 'DataTables has redrawn the table' );
* }
* } );
* } );
*/
"fnDrawCallback": function () {
if (this.api().page.info().recordsTotal == 0) {
$('.dataTables_paginate').hide();
}
else {
$('.dataTables_paginate').show();
}
}

解决使用MyBatis Generator 生成SQL时字段与关键字冲突

发表于 2018-02-07 | 分类于 java

最近在使用MySQL数据库和MyBatis Generator生成XML时发现生成的SQL语句中列名与MySQL保留关键词冲突
具体代码如下:

1
2
3
4
5
6
7
8
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sat Sep 17 21:15:33 CST 2016.
-->
id, key, value, order, type
</sql>

其中 key,value,order,type 都是MySQL保留关键字

解决方案

修改generatorConfig.xml文件
添加配置属性autoDelimitKeywords、beginningDelimiter、endingDelimiter代码如下

1
2
3
4
5
6
<!--分割SQL关键字 默认为false-->
<property name="autoDelimitKeywords" value="true" />
<!--分割关键字的前符号-->
<property name="beginningDelimiter" value="`" />
<!--分割关键字的后符号-->
<property name="endingDelimiter" value="`" />

新的完整generatorConfig.xml文件

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
<generatorConfiguration>
<!--获取application中配置-->
<properties resource = "application.properties" />
<context id="LocationMySQL" targetRuntime="MyBatis3">
<property name="autoDelimitKeywords" value="true" />
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<jdbcConnection driverClass="${spring.datasource.driver-class-name}"
connectionURL="${spring.datasource.url}"
userId="${spring.datasource.username}"
password="${spring.datasource.password}">
</jdbcConnection>
<javaModelGenerator targetPackage="com.zackwoo.domain" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
</sqlMapGenerator>
<javaClientGenerator targetPackage="com.zackwoo.mapper"
targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="database_config"></table>
<table tableName="sys_dictionary"></table>
</context>
</generatorConfiguration>

jinja2 过滤集合与Size

发表于 2018-02-06 | 分类于 flask
1
{{ list | selectattr("attr.boolean") | list | count }}

selectattr 筛选属性值
list 转换为list对象
count 集合size

zackwoo

6 日志
5 分类
6 标签
© 2018 zackwoo
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4