wkhtmltopdf折腾记

What for?

PRD: 打印条款以供用户下载。

After googling around,there are two possiable options:

  • iText. 以前一般都用这个来做PDF的生成,但试用了一下感觉很是难用!

  • wkhtmltopdf. 一个单独的程序,命令行可直接使用用,相对(也有一些坑)来说简单易用。官方介绍:

    wkhtmltopdf and wkhtmltoimage are open source (LGPLv3) command line tools to render HTML into PDF and various image formats using the Qt WebKit rendering engine. These run entirely “headless” and do not require a display or display service.

Read More

日志清理脚本

日志过多,crontab to the rescue!

Read More

Dubbo学习-理解动态代理

Dubbo学习-理解动态代理

在之前的一篇post中了解了spring可扩展的XML配置是怎么一会事,接下来继续研究dubbo consumer端如何解析service并执行远程调用。

本次研究目标

  1. 代理如何创建的。仅仅只是配置了<dubbo:reference interface="x.y.z.ServiceInterface" id="serviceId"/>并将其交给了spring container,然后直接注入并使用该接口的方法就可以完成调用了,然而我并没有为该接口实现具体的类,how does it works?
  2. 远程调用如何执行的。假设已经有了具体的实现类,怎么实现远程调用的呢,Thingking? 由于第一个分析就很长,这个目标列入下一次分析。

Read More

Spring可扩展的XML配置

Spring 可扩展的XML配置

Spring 自从2.0开始就为基础的xml格式提供了一个基于xml schema的扩展机制,用于定义和配置beans。本文基于此简单讲解如果定义自己的BeanDefinitionParser和如何将定义好的parsers集成到Spring IoC container中。

创建一个xml配置扩展可以通过以下4步完成:

  1. 创建一个xml schema来描述你自定的xml元素。
  2. 编写一个NamespaceHandler的具体实现。
  3. 编写一个或者多个BeanDefinitionParser的实现。主要的工作都在此步骤完成。
  4. 关联xsd,NamespaceHandler

下面依照以上四个步骤并附一个示例详细讲解。完整代码放在码云上:https://git.oschina.net/android-speeder/springcustomxml.git

Read More

bootcamp

mysql index and best practice handout

讲讲MySQL的最佳实践和容易踩到的坑。

Read More

深入理解HashMap

对于一个Java开发者来说,最常用的Map结构莫过于HashMap。但我发现很多人对其内部是如何进行存储和查找的基本没什么概念或者有点概念但却是错误的或不全面的,对于靠这个吃饭的人来说,如果你不了解他,你怎么能放心的把你的数据交给他呢,这就好比把自己的饭碗交给了一个不认识的人,that’s terrible! 所以本文就带你深入理解一下HashMap, 内容大致涵盖如下几个方面:

  1. 比较HashMap在java7和java8中的不同点
  2. 性能
  3. 可能的问题

存储

HashMap实现了Map<K,V>,所以包含了以下几个主要的方法:

1
2
3
4
V put(K key, V value)
V get(Object key)
V remove(Object key)
Boolean containsKey(Object key)

Read More

effective-java-methods

Methods

“usability, robustness, and flexibility.”

摘录来自: Joshua Bloch. “Effective Java™ (Jason Arnold’s Library)”。 iBooks.

检查参数有效性(check validity of params)

早检查早发现早避免问题。Fail fast!

未检查参数有效性可能导致的问题:

  1. 在执行过程中失败并抛出掩盖问题的异常。
  2. 正常返回但是返回的是错误的结果。
  3. 同样是正常返回,但是埋下了祸根,可能产生了其他状态有问题的数据,导致在不定时的将来产生不可预知的问题。

Read More

how-to-create-products-customers-love

My Opinion

一个不错的开发者有很大的潜力能成为一个不错的PM。PM这里不仅仅指product manager but also means project manager. 出于对PM的兴趣,近期在尝试看一些PM相关的书,总结了一些Keynote供后续回顾。

产品管理&项目管理

  • 产品管理更多是探索定义产品功能,验证产品可行可用性,发现产品价值。 协调交互设计,视觉设计,原型设计进度与流程。产品在设计每个周期开发功能的时候尽量留出20%的时间供开发人员优化代码和修复可能的问题。(this is called headroom)
  • 项目管理控制项目进度,合理分配资源,解决项目过程中出现的各种问题,保证项目按时按质交付。

Read More

Build-rest-api

Why REST?

  1. Scalability
  2. Generality
  3. Independence
  4. Latency (Caching)
  5. Security
  6. Encapsulation

Why JSON?

  1. Ubiquity
  2. Simplicity
  3. Readability
  4. Scalability
  5. Flexibility

Read More

RESTAPI-Reference

最近在研究RESTAPI相关的一些最佳实践,搜集到一些不错的参考资料,备份一下。

Read More