• date: 2017-12-07

感谢伟大的技术

Super:

  • eclipse 和 java, 愉快的使用 java 编程,求得一口饭吃。
  • ubuntu(GNU/Linux)强大而方便的开发者环境(系统和工具)。
  • maven, 优雅强大的(java)依赖管理,命令行构建。
  • git,(分布式的)版本化的世界。
  • markdown,方便简洁的编写文档,及美丽的渲染。

Great:

  • spring (及 apache commons),完善的 java 开发基础框架和功能库。
  • firefox,web 有你,一路畅行。

链接

文档:

  • MDN, Mozilla 开发者社区

软件:

写作

markdown ppt (presentation) 演示文档工具:

  • reveal.js推荐), The HTML Presentation Framework, 浏览器端 js 实时渲染。 支持 GFM,内嵌或外置。 内嵌时(使用内置 HTTP 服务器?)可实时更新,外置修改后手动刷新页面即更新。

    典型用法,加载外部 markdown 源码,水平分割 ^\r?\n---\r?\n$(默认),垂直分割(二级 ppt)^\r?\n===\r?\n$(默认禁用)。

    <section data-markdown="example.md"
             data-separator="^\r?\n---\r?\n$"
             data-separator-vertical="^\r?\n===\r?\n$"
             >
    </section>
  • GitPitch,与 github, gitlab 等集成。 git 仓库下创建名为 PITCHME.md(大小写敏感)的文件,在线自动(使用 reveal.js)渲染。 可下载渲染后的 html 等相关文件 zip 包。

  • marp,桌面应用,未测试。
  • keydown, markdown 渲染成 html, 使用 CodeMirror 支持代码高亮。
  • 其他 List of markdown presentation tools

  • 2017-12 绘图,PlantUML,我的 快速开始 文档。 官方 Quick Start, 简易文档:plantuml

Web

  • CodeMirror, 浏览器端编辑器, 支持代码编辑和插件扩展。

加密解密

时序数据库(TSDB)

更新:2018-03-21

  • influxdb,商业软件开源版本。golang 开发。
  • prometheus。使用较广泛(?)。golang 开发。
  • OpenTSDB,建立在 HBase 上,Java 开发。
  • kairosdb,建立在 Cassandra 上,Java 开发。
  • Graphite-Web,图形渲染,使用 Whisper 存储时序数据。python 开发。

搜索

更新:2018-03-21

桌面(GUI)应用开发

  • Electron, 使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用。

VNC

  • realvnc, 商业软件,支持 linux, windows, mac 等系统,vncviewer 免费。 vnc connect 6.x(服务器)可以个人免费使用, 但需要注册账号,只支持 cloud connection(如何使用?),不推荐。
  • Remmina, 远程桌面客户端,可从 ubuntu 仓库安装,支持 RDP/VNC/SSH。
  • VDM (Virtual Display Manager), 支持只共享一个应用窗口。
  • TeamViewer,商业软件,支持部分共享和灵活控制。

XML 处理

  • 2017-12 Java 标准库 JAXP
  • 2017-12 jdom

日期时间处理

HTTP

  • 2017-12 HTTP 请求使用 gzip 压缩。

    apache 可使用 SetInputFilter 配置 mod_deflate。 nginx 参考 Nginx与Gzip请求, 可使用 lua-nginx-modulelua-zlib

    local zlib = require "zlib"
    local encoding = ngx.req.get_headers()["Content-Encoding"]
    if encoding == "gzip" then
        local body = ngx.req.get_body_data()
        if body then
            local stream = zlib.inflate()
            ngx.req.set_body_data(stream(body))
        end
    end