Skip to content

Instantly share code, notes, and snippets.

View yanhua365's full-sized avatar

yanhua365 yanhua365

View GitHub Profile
@yanhua365
yanhua365 / freemarker_null_error.log
Created December 20, 2013 08:02
FreeMarker提示使用了空(null)变量,并提示了正确的使用方法。
Tip: If the failing expression is known to be legally null/missing,
either specify a default value with myOptionalVar!myDefault,
or use <#if myOptionalVar??>when-present<#else>when-missing</#if>.
(These only cover the last step of the expression;
to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??
@yanhua365
yanhua365 / chess-move.html
Created December 19, 2013 12:49
用canvas绘制象棋,且支持棋子拖拽移动。
<!doctype html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>canvas 象棋 </title>
<script>
var layout = {padding: 30, cell: 50, chessRadius: 20, fontSize: 36, width: 400, height: 450, offsetWidth: 460, offsetHeight: 510};
var style = {
@yanhua365
yanhua365 / Md5Hex.java
Created December 19, 2013 05:02
Java计算文件的MD5值
String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
@yanhua365
yanhua365 / ParseRequestBodyToBytes.java
Last active May 24, 2022 03:28
从HTTP Request里取得body内容得到byte数组的方法。
public byte[] parse(HttpServletRequest request) {
byte[] input = null;
try {
InputStream is = request.getInputStream();
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
while (true) {
int c = is.read();
if (c == -1) break;
byteStream.write((byte) c);
@yanhua365
yanhua365 / JUnitTempFolderSample.java
Created December 16, 2013 05:01
使用JUnit做单元测试时需要用到临时文件的,可以使用TemporaryFolder。 http://junit.org/javadoc/4.9/org/junit/rules/TemporaryFolder.html
public static class HasTempFolder {
@Rule
public TemporaryFolder folder= new TemporaryFolder();
@Test
public void testUsingTempFolder() throws IOException {
File createdFile= folder.newFile("myfile.txt");
File createdFolder= folder.newFolder("subfolder");
// ...
}
@yanhua365
yanhua365 / EssRepositoryHelperImpl.java
Created December 16, 2013 01:48
对Hibernate的对象明确指定加载哪些关联属性, 避免在session关闭后访问出现LazyInitialize错误。
public void initialize(Object entity, String... properties){
for(String name : properties){
try {
String property = BeanUtils.getProperty(entity, name);
Hibernate.initialize(property);
} catch (Throwable e) {
logger.error("initialize lazy property occurs error.", e);
throw Throwables.propagate(e);
}
}
@yanhua365
yanhua365 / simple_http_server.js
Created December 12, 2013 13:03
简单的nodejs的HTTP Server
var http = require("http"), sys = require('sys');
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Welcome to Node.js!");
response.end();
}).listen(6600);
sys.puts('Server running at http://127.0.0.1:8006/');
@yanhua365
yanhua365 / PySimpleHTTPServer.py
Created December 12, 2013 03:07
用Python一行命令快速在当前目录启动一个HTTP服务器
python -m SimpleHTTPServer 9393
@yanhua365
yanhua365 / chess-bg.html
Created December 11, 2013 14:04
用Canvas画的象棋棋盘
<!doctype html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>canvas 象棋 </title>
</head>
<body>
<canvas id="chess-canvas" width="410" height="460"></canvas>
<script>
@yanhua365
yanhua365 / StringTemplateRenderer.java
Last active December 31, 2015 00:39
用Freemarker渲染一个字符串模板
protected String renderResponse(Map ctx, String stringTemplate) {
Configuration cfg = new Configuration();
StringTemplateLoader stringLoader = new StringTemplateLoader();
stringLoader.putTemplate("updateResponseTemplate", stringTemplate);
cfg.setTemplateLoader(stringLoader);
Writer out = new StringWriter(2048);
try {
Template tpl = cfg.getTemplate("updateResponseTemplate","utf-8");
tpl.process(ctx, out);