markdown的一些写作工具
前言
之前所在项目在整理设计文档, 基于Alex提供的大纲, 学习了一些基于vsCode的markdown的使用技巧, 写项目设计文档比较有帮助, 现整理分享.
进入阅读→nmap 地表最强大的端口扫描器
Nmap是渗透测试人员使用的最著名的扫描工具, 本文介绍了一些端口相关的基础知识, 以及Nmap的一些核心功能以及一些有用的命令.
端口
网络上的计算机要提供某种服务, 需要通过某个端口来完成. 端口不对应任何的硬件, 是一个软件层的抽象.
进入阅读→Clojure的性能度量

因为日常我们的领域是写出正确的程序, 性能一般都是挂在嘴上, 而没有实际深入考虑的内容, 在这个领域, 永远是度量优先.
抛弃直觉, 用数据说话, 需要有方法和工具来侦测应用的行为, 度量CPU, 内存的消耗. 本文介绍了Clojure上的性能套件.
进入阅读→Clojure的一些小技巧
技巧, 算不上最佳实践, 用到时候会为自己的的聪明开心一下.
#_ 是一个reader special form, 用来跳过下一个表达式, 可以叠在一起用
(let [#_#_
a 1
b 2]
[b])
;;相当于
(let [#_a #_1
b 2]
[b])
进入阅读→
Clojure docstring
最近在写一个Clojure代码统计工具的时候, 需要把docstring计算为注释的一部分, 做了个更深入的了解.
第一个问题就是, 哪些结构可以有docstring?
ns, def, defn, defprotocol, defmacro, defmulti都可以使用docstring.
项目检查清单
版本管理
- 参与者在版本管理工具中有独立一致的名字
- 参与者每次提交有明确的提交信息, 提交格式应该是
[分类] 提交正文, 其中提交正文可以换行, 有详细描述, 可能的分类有:[doc]: document, 文档, 提交正文为文档内容.[cmt]: comment 代码注释, 提交正文为注释内容.[feat]: feature, 新功能, 提交正文为为功能描述[bug]: bug fix, 问题修复, 提交正文为bug的id,和修复内容, 对应的单元测试是否更新[ref]: refactor 代码重构, 提交正文为重构的内容.[ut]: unit test, 单元测试代码正文, 提交消息为单元测试描述.[imp]: improvement, 小改进, 提交正文为改进内容.[wip]: work in progress, 一个大的任务, 可以分成若干进行中的提交, 提交正文为wip的描述.
- 参与者会使用检索提交记录, 以及每次提交的代码变动.
- 参与者不提交无用文件, 项目中有配置合理的
.gitignore文件, 个人不提交log, 第三方库, 个人配置, 编译临时/最终产物等. - 项目参与者掌握评审工作流.
- 项目参与者掌握rebase工作流程.
- 项目参与者掌握cherry pick工作流程.
系统文档以及项目搭建
进入阅读→Java使用Clojure的库
更多情况下, 我们都是在Clojure中调用Java的库.
+--------------+ call +---------------+
|clojure func +----->| Java func |
+--------------+ +---------------+
但是如果我想反过来呢?
进入阅读→一个环境变量传递引起的bug
一个神秘的bug
一个Electron应用中,打包了一个Java服务, 这个服务是在Electron启动的时候spawn出来的, 注意我们设置了 option.deteched 为false, 保证用户关闭UI的时候, 子进程也会一起结束.
childProcess = exec.spawn(
'java -jar xxx.jar'
javaStartCmd,
{
cwd: javaBuildPath,
env: {
detached: false,
}
},
(err, stdout, stderr) => {
if (err) {
console.error('启动java失败', err)
}
console.log(stdout)
console.log(stderr)
}
)
进入阅读→
计算机教育中缺失的一课(2020版)
动机
进入阅读→Emacs开发c#
最近用Mac在Emacs上进行c#开发, 体验很良好, 很出乎意料能够用一台Arm处理器的苹果电脑开发c#程序.
Emacs 写 Csharp
Emacs对C#支持很完整, 和vscode一样, 都是omnisharp作为lsp后端, 功能差异不大.
进入阅读→