前言:
上一篇类似的文章,是2011年的3月份,看了下当时写的内容,除了代码外,还有其它思考,但后面越来越少了,年纪大了,想的东西少,也没什么好写了,现在重拾起来,觉得十分有必要,可以将每个月的实践、思考记录下来,否则一年过去了,似乎什么也没有学到。
编码总结
Golang
研究了如何将一些资源文件整合到二进制可执行文件中,后续将系统发文。
Nodejs
excel解析:
1 2 3 4 5
| var xlsx = require('node-xlsx');
var obj = xlsx.parse("foo.xlsx"); // 支持xls var excelObj=obj[0].data; // 0表示第1张表,1为第2张表 console.log(excelObj) // 根据规则遍历解析,如只有3列,某列为空,某列名称,等
|
其它代码片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| // 去掉空格、tab、回车换行等 function trim(s){ //return s.replace(/(^\s*)|(\s*$)/g, ""); return s.replace(/(^\s*)|(\s*$)|([\t\r\n])/g, ""); // |(\ +) }
// 截取前2字符 gxcode = code.substring(0, 2) // 截取前4位、第4位后的字符串 code_1 = code.substring(0, 4) code_2 = code.substring(4) code_2.trim() // string自带的的去掉前后空格
多维数组 var outdata = []; // 形式1 var tmpdata = new Array(); // 形式2 tmpdata.code = code tmpdata.name = district_name
outdata.push(tmpdata)
|
用高德地图API获取地点信息(行政区、经纬度、编码等)
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 28 29 30 31 32 33 34 35 36 37
| const superagent = require("superagent");
// nameArray地名数组 function getLocationFromWeb(nameArray) { newname = changeName(nameArray) // 如有多个地名,则添加| var needbatch="" if (newname.indexOf("|") != -1) { needbatch = "batch=true&" // 高德API一次最多10个地名,batch为true } var getstr = "https://restapi.amap.com/v3/geocode/geo?address=" getstr += newname + "&" getstr += needbatch getstr += "key=mykey" // mykey为申请的key // console.log("getting : ", newname)
// 包含有中文,转义 var target = encodeURI(getstr) // console.log(target) let userAgent = userAgents[parseInt(Math.random() * userAgents.length)]; superagent .get(target) .set({'User-Agent': userAgent}) .end(function(error, response) { if (error == null) // 成功才处理,有时网络不好会请求失败 { var myHtml = response.text; var ret = parseHtml(myHtml); } else { console.log("get url failed: %s", error.errno) } }); }
|
编码其它
Makefile 知识总结:
一个工程目录中,既有需要编译成 so 所需的文件,又有测试所用的文件,为了方便测试、版本管理,即:so 文件不掺杂测试文件,测试程序使用所有文件编译(不额外调用 .so 函数),在编译时,使用 2 个 Makefile,其中,只编译 so 文件时,将不必要的文件过滤即可,示例如下:
1 2 3 4
| SRCS1 := $(shell find $(SRC_DIRS) -maxdepth 2 -name '*.cpp' -or -name '*.c')
NONEEDFILES := ./test.cpp ./time_utils.c SRCS = $(filter-out $(NONEEDFILES), $(SRCS1))
|
上述示例中,test.cpp 和 time_utils.c 是测试所用文件,使用 Makefile 提供的 filter-out 函数将其过滤掉。
说明:将所有文件编译到 so 中也可以,但会多了不必要的函数和变量,也多了 main 函数,如果用 dlopen 方式打开,用 dlsym 查看函数的话,是没有影响的,但如将 so 也编译到测试程序中,则 main 会重复定义。
一般知识
github 可以创建 README.md 文件,用于展示个人信息或风采,可参考:
1
| https://github.com/nate-lin/github-readme-stats
|
github 的 person access tokens 似乎变化了,要重新生成。之前做好的自动化工作,不懂还要不能修改。
研发思考
本月无。
后续计划
过年时一直在想知识共享平台的构建,稍研究了hexo + wiki主题
,但始终觉得不太好用。主要用于公司内部的共享。需支持的功能:文档加密、pdf预览。
其它点滴
趁清明和“三月三”放假期间,抽了部分时间看了下前端的视频,查了些前端的框架。准备在工作上应用上。
大二立志不学 Java,要打破了,作为打工人,干就完了。
部门迁移,地方更远了,早上无法送大锤上幼儿园了。