Marvin's Blog【程式人生】
Ability will never catch up with the demand for it
Home
Tags
Categories
Topics
Tools
13
Jan 2021
初探PowerPont的VBA
VBA是MS Office的标准脚本语言。普通的pptx结尾的PowerPoint文件无法保存VBA脚本,只有以pptm结尾的文件可以。 MS Office自带VBA的开发工具,在Ribbon中开启Develop Tab才能看到VBA开发工具的启动按钮。对于属于Visual …
05
Jan 2021
MS Office RibbonX的CustomUI
微软Office采用的是Ribbon风格的界面。Ribbon具有Extensibility,也就是RibbonX,可以允许用户对界面进行自定义。这个功能叫做CustomUI。具体实现是通过XML对Ribbon进行定制。由于Office套件已经改用OpenXML作为存储格式。用 …
19
Dec 2020
把FileMaker当作ODBC和JDBC数据源
Filemaker是一款数据库设计工具,也是一款数据库UI设计工具。有点类似于MS的Access,但是其UI设计功能更强大,并且跟iOS和macOS结合更紧密。Filemaker支持作为ODBC或者JDBC数据源使用。下文在不用区分ODBC以及JDBC的时候,使用xDBC替代。 …
17
Dec 2020
Jupyter Notebook介绍
Jupyter Notebook原先叫做IPython Notebook,前者从后者派生出来的。IPython是一个命令行的Python的REPL(Read Evaluate Print Loop,而Jupyter Notebook是一个拥有Web界面的REPL。 …
14
Nov 2020
MSVC中的C++ Module
C++ Module区别于头文件的地方在于它可以对导入和到处的符号集合进行更好的控制。Visual Studio 16.8是刚发布的版本,在这个版本中,MSVC对C++ Module支持说是Feature Complete了。但是还是有一些小bug(例如what is is …
05
Oct 2020
Windows下为git的ssh连接添加代理
众所周知,用ssh的方式访问github有时候会抽疯,需要一个解决办法,比如在中间加一层socks proxy。然后我的一个额外的要求是ssh能够使用Putty的Pageant来提供密钥验证服务,避免多次输入密码。 之所以不适用Putty自身的plink,是因为没搞懂在命令行 …
02
Oct 2020
对MS Office的功能进行扩展
扩展MS Office的主要方式 可以通过扩展MS Office来获得一些自定义的功能。扩展MS Office的方法有很多种: 通过内置VBA脚本来实现自定义功能 这种方法可以延伸开来。对于支持模板功能的Office应用可以把VBA脚本放置在模板中,然后这个模板作为VBA脚本 …
13
Sep 2020
使用TiddlyWiki做笔记
很早之前接触过TiddlyWiki,这个比较特殊的Wiki工具。它的特殊之处在于自包含,并且自繁殖。就像母鸡下蛋一样,你在TiddlyWiki上作了修改之后,可以将新的Wiki作为一个HTML文件下载下来,这个HTML保存着所有的内容,包括刚做的更新。 但是下载HTML这个操作显 …
13
Aug 2020
Fiddler文档笔记:Configure Fiddler
Fiddler是Windows上的MITM工具,基于WinINET,也可以用于WinHTTP。这篇是Fiddler Docs的阅读笔记。Fiddler还支持各种Add On 常见任务 Getting Started with Fiddler Fiddler既可以作为客户端,在本地 …
05
Aug 2020
使用proto-doc-gen生成ProtoBuffers文档
protoc-gen-doc是一个protobuf的编译器protoc的一个插件,可以用来从protobuffers的定义文件中提取注释,生成相应的文档。目前protoc-gen-doc支持proto2和proto3语法。 安装和使用 protoc-gen-doc是用go语言编写 …
29
Jul 2020
pytest文档阅读笔记【五】
Marking test functions with attributes¶ pytest.mark可以用来在测试函数上设置metadata。pytest自带了一些markers,比如: skip,跳过某个测试 skipif, 按条件跳过某个测试 xfail,表明用例失败是预 …
26
Jul 2020
Pybind11文档笔记【一】:类型转化
Type conversions Overview C++中的类可以用py::class_来包装成Python的类。Python中的类可以通过py::object暴露给C++。 在需要相互转化的时候,pybind会通过值来创建彼此的类型示例,比如: void …
25
Jul 2020
使用Catch2测试C++代码
Catch2是一个C++单元测试框架。话说C++已经有那么测试框架了,为什么还要再创一个新的框架呢? 在Why do we need yet another C++ test framework?作者有所解释。不过我个人的感觉是其他C++单元测试框架大都偏xUnit风格,就 …
23
Jul 2020
pytest文档阅读笔记【四】:Fixtures
pytest fixtures: explicit, modular, scalable¶ 测试装置帮助搭建测试平台,满足不同测试用例的测试要求。在pytest中,测试装置是通过函数参数的形式传给测试用例函数。 pytest的测试装置机制比xUnit的更加灵活,但是于此同 …
21
Jul 2020
pytest文档阅读笔记【三】:Plugins
Installing and Using plugins¶ 可以通过pip来安装和卸载插件: pip install pytest-Name pip uninstall pytest-Name 一些插件例子: pytest-django pytest-twisted …
17
Jul 2020
pytest文档阅读笔记【二】
Using pytest with an existing test suite¶ pytest可以运行既有unittest或者nose写成的测试用例。建议把受测代码以及测试用例安装到在虚拟环境中,这样一来可以避免修改sys.path,二来可以避免多次安装: cd
pip …
16
Jul 2020
pytest文档阅读笔记【一】
Python有许多测试框架,自带的有unittest。nose和nose2是unittest的衍生。这篇文章要介绍的pytest,则是一款非常流行的第三方框架。其特点是采用python原生的assert语句来做断言;可以与unittest和nose很好协调工作;支持非常多的扩展等 …
15
Jul 2020
Python的一些测试框架。
Behave Behavior-driven development (or BDD) is an agile software development technique that encourages collaboration between developers, QA …
29
Jun 2020
为Visual Studio添加TextMate语法高亮
Visual Studio的代码编辑器挺强大的,自带了许多语法高亮支持。但是万一碰到不支持的怎么办? 可以先看看这个加件[SyntaxHighlightingPack],里面提供许多额外的语法高亮支持。 如果还是没有你想要的语法高亮,也不要着急,Visual Studio支持使 …
04
May 2020
SQLite3加密扩展
SQLite官方提供了一个加密扩展,叫做SQLite Encryption Extension,简称SEE。 How To Compile And Use SEE 使用SEE加密过的数据库文件,看起来像一团无序的乱码。 但是在The Importance of a Nouce章 …
03
May 2020
编译PHP的Windows版本
记录在Windows上编译PHP的过程。 编译PHP,你需要几样工具: 编译PHP master需要使用Visual Studio 2019(PHP 7.4.5依然使用的是Visual Studio 2017) 微软提供的php-sdk-binary-tools PHP代 …
01
May 2020
基于PHP的数据库管理套件Adminer
Adminer有点类似PhpMyAdmin,不过更短小精悍,支持的数据库类型也比较多。 下载安装 说其短小精悍,是因为最后打包生成的只有单个php文件,可以直接使用。 下面以Adminer的英文版合成php为例: php -S 127.0.0.1:8111 …
27
Apr 2020
安装和使用mitmproxy
mitmproxy是Man In The Middel Proxy的简称,可以用来在开发过程中的时候做客户端和服务器之间的HTTP消息处理工具。 mitmproxy是用Python写成的,如果下载安装包安装的话,因为带有一个Python解释器,会比较大。如果不喜欢下载一个打包,可 …
24
Apr 2020
在Windows上安装PHP的oauth2-server
oauth2-server是使用PHP实现的OAuth2 Server,对OAuth2的实现比较完备。本文介绍如何在Win10上安装调试它。 首先需要使用scoop安装以下几个软件: scoop install composer scoop install php scoop …
23
Apr 2020
使用Postman测试MS Graph
Graph > Use the API Use Postman with the Microsoft Graph API MS提供了microsoftgraph-postman-collections,可以在Postman中使用。 可以在Postman中导入Microsoft …
17
Mar 2020
ProtoBuffers的文档生成
protoc-gen-doc是一个protobuf的编译器protoc的一个插件,可以用来从protobuffers的定义文件中提取注释,生成相应的文档。目前protoc-gen-doc支持proto2和proto3语法。 安装和使用 protoc-gen-doc是用go语言编写 …
10
Mar 2020
本地运行PlantumlServer
本文介绍如何在本地运行plantuml-server。 在本地运行plantuml-server有诸多好处,首先它提供一个web界面,可以在上面编辑并生成图示;其他其他应用(比如VSCode)可以使用这个server提供的服务,快速生成图示。 安装plantuml-server …
24
Nov 2019
粗略了解下Git的Pathspec
git的多个命令都需要指定pathspec。本文探讨一下git的pathspec。 git的pathspec概念在gitglossay: pathspec中有说明。主要有两种格式,一种长格式和一种短格式。长格式比如::(glob,exclude)foo/bar.txt。长格式的某 …
22
Oct 2019
在Word中画PlantUML图
PlantUML带有一个Word Add-in,可以到PlantUML Word Template下载。 下载到的文件是PlantUML_Template_v34.dotm。 官方的安装说明: install the right template version in Word …
20
Oct 2019
如何用Yarn升级Package.json中的包
Nodejs的项目会带一个package.json文件,里面列举了此项目依赖的各种包(通常安置在node_modules目录下可以找到),并且每个包要指明其版本号。包的版本号使用Semantic Versioning的方式命名,参考 About semantic …
04
Oct 2019
Environment Modules在Windows上安装失败记
Environment Modules(简称Modules)是Unix上的一种软件版本管理机制,可以很方便使用它来改写SHELL的环境。本文尝试在Windows上安装Modules,但是最终没有成功。虽然失败了,但是也值得记述。 Modules的项目页面上提供了如何 …
25
Sep 2019
在Windows(Cygwin)上安装PYANG
pyang是一个Python编写的,用来处理IETF YANG模型的工具,可以用来模型验证,以及格式转化等等。 由于pyang有一些依赖,并且安装的时候需要编译扩展模块,在Windows上使用Cygwin来操作会比较方便一点。 安装过程 首先安装GCC: apt-cyg …
01
Sep 2019
Windows下使用pageant为cygwin提供ssh密钥服务
如果ssh-gen生成私钥的时候设置了口令,那么每次验证的时候都需要输入口令,有点麻烦。一个办法是使用ssh-agent启动一个密钥服务,然后通过ssh-add将某个密钥加入到服务中去,这样就不需要每次输密码。但是ssh-agent的使用还是不太方便,每次都需要手动启动,然后 …
29
Jun 2019
bash的键绑定
本文学习和讨论bash的键绑定。 默认键绑定 从bash manual学习了一下bash默认的emacs格式的键绑定: 字符操作 前进一个字符:c-f 后退一个字符:c-b 删除一个字符:DEL or BACKSPACE 撤销一个操作:C-_ or C-X C-u …
28
Jun 2019
在macOS Mojave上安装Windows 10 1903
之前有写了一篇如何在macOS上通过Bootcamp安装Windows的。但是BootCamp实在是太不靠谱了,经常出错,也不知道该怎么修复。还不如手动操作。 安装Windows 其实安装Windows 10的原理并不复杂,简单地说分为几步: 从微软官方网站下载ISO,然后烧制 …
23
Jun 2019
Xcode和Interface Builder
作为APP农场主,苹果公司对提供工具和原材料给果农(APP开发者)这方面做得简直太尽心尽力。生怕果农没有合适的工具,易于阅读的文档。作为开发工具Xcode既成熟又强大;在文档方面,苹果公司也做得相当出色,只要好好看官方文档,学习mac和ios开发没有任何问题(对英文文档过敏的除 …
16
Jun 2019
macports安装手记
port是Unix的遗产,用来管理软件包。在Unix时代,软件包大都是以源代码方式分发,所以port所支持的好多软件包都是以源代码方式存在。macOS也是Unix血统,所以macports是一个为macOS提供开源软件包的port系统。 本文记述在Mojave上安 …
01
Jun 2019
使用RollupJS打包SVG
本文介绍如何在RollupJS项目中打包SVG文件。 SVG简介 SVG是一种基于XML标记的矢量图形。和HTML一样,现代的浏览器都支持SVG,可以直接显示其内容。可以用Javascript来处理SVG,就像处理HTML一样,直接在DOM节点插入SVG的内容,这样就可以在页面上 …
02
May 2019
Kitty:OpenGL加速的Terminal
Windows上有一个SSH终端叫Kitty(Putty的改版), 但本文所要说此Kitty非彼Kitty。我们所讨论的是一个Terminal,类似于Terminal.app、MinTTY、iTerm等等。kitty - the fast, featureful, GPU …
10
Apr 2019
在Windows上用Docker安装Vimflowy
首先什么是Vimflowy?你可能听过大名鼎鼎的Workflowy,它是一款在线的大纲视图的笔记软件(也叫子弹笔记?)。打开Workflowy的主页面就可以看见Demo。而Vimflowy则是Jeff Wu开发的一款类似Workflowy的笔记工具,特色是支持类似Vim的键操作。 …
04
Apr 2019
用clink给Windows的cmd.exe插上readline的翅膀
Linux上的Bash命令行编辑功能强大,这得归功于readline这个库所提供的编辑功能。Windows上的命令行cmd.exe一向以功能简单,编辑能力原始为人所诟病。但是clink给cmd.exe在编辑方面带来了一剂良药。 安装 clink为cmd.exe带来 …
30
Mar 2019
Google Flatbuffers
很多人可能听过或者用过Google的ProtoBuffers,但是它还有一个兄弟叫做FlatBuffers。这兄弟俩十分类似,但是FlatBuffers使用起来更节省内存,性能要好一点。和ProtoBuffers相比,FlatBuffers的灵活性要差一点。FlatBuffers …
01
Mar 2019
在Windows上安装SourceGraph记录
Sourcegraph是一款代码浏览器工具,同时支持Language Server Protocol,可以用来为IDE做补全。本文记录在Windows上安装Sourcegraph 3.1.1。 首先需要在Windows上安装Docker。到Docker的网站下载Docker …
23
Feb 2019
记uutils/coreutils在Windows上的编译失败
本文记录uutils/coreutils在Windows上编译失败的经历。 前言 习惯了Linux上的那些命令行工具,会变得非常不适应Windows上cmd.exe或者powershell中所带的命令行工具。不仅仅名字不同影响记忆,输出内容的格式不同也让人觉得不爽。例如,列举当前 …
12
Feb 2019
glibc编译小记
闲来无事,尝试编译一下glibc。 编译注意事项 glibc可以说是Linux系统最根本的库了,基本上除了Linux自身的API以外,所有的库都依赖于glibc。如果更新当前系统中的glibc的版本的行为是相当具有挑战性的。 首先有很多人可能会疑惑,其实glibc并不包含在gcc …
06
Feb 2019
使用NX远程登录Hyper-V虚拟机中的Ubuntu
虽然微软改进了对xRDP的支持,使得Hyper-V虚拟机中运行的Ubuntu和宿主可以有比较好的交互性,可以使用Enhanced Session Mode功能。但是还是存在若干性能不够强,不能独立显示某个应用程序窗口等缺点。 当今而论,性能最好的远程桌面协议莫过于NX,也就 …
02
Feb 2019
在Windows 10上用Hyper-V安装Ubuntu
Windows 10 Pro以上的版本携有Hyper-V虚拟机功能,可以用来安装Linux。本文记录使用Hyper-V安装Ubuntu 18.04LTS的过程。 开启Windows 10的Hyper-V功能 Windows 10的高阶版本,比如Pro或者Enterprise都内 …
28
Jan 2019
在Windows 10上编译ccls
ccls是从cquery派生出来的一个款C++的LSP Server。本文讲述如何在Windows下编译它。注意,所用Window版本为Win10。 ccls和cquery不同的地方在于,ccls是基于libLLVM的,而cquery是基于libclang的,所以ccls可以 …
15
Jan 2019
在Windows上编译cquery
cquery是一款基于libclang的C/C++ Language Server,可以支持代码补全、引用查找等编辑和浏览代码的时候常见操作。cquery是服务端,跟它相配套的客户端有VS Code、EMACS以及Vim等。本文介绍如何在Windows下编译cquery。官方文 …
17
Dec 2018
记Clang的AddressSanitizer
和其他可以自动管理内存的语言相比,C/C++最令人头疼的问题无过于内存管理。Clang编辑器中携带了很多工具,可以帮助你检查内存访问,其中一款就是AddressSanitizer。 例子 我们先来看一个小例子main.cc: #include
using namespace …
26
Nov 2018
记C++代码格式化工具clang-format
Clang编译器包中带了一个代码格式化工具,叫做clang-format,功能强大。 可以使用HomeBrew在macOS系统下安装clang-format: brew install clang-format clang-format自带了几种代码格式化风格,分别是:LLVM, …
02
Oct 2018
基于JavaScript的富文本编辑器
本文收集基于JavaScript的富文本编辑器。 基于JavaScript的富文本(rich-text)编辑器不说有几十种,也有上百种。写一个简单的js富文本编辑器不难,W3C给网页定义了了一个ContentEditable功能,可以直接把网页元素变成可编辑的形态,而不是依据传统 …
02
Sep 2018
Vim:高亮C++Rawstring中的SQL语句
本文介绍如果让Vim在C++的语法高亮中嵌入SQL的语法高亮。 C++11开始支持rawstring,比如: const char* zSql = R"sql( select * from phantom; )sql"; 上面的例子中,字符串的值是一个SQL语句select * …
30
Jul 2018
Zim:超流畅的Zsh配置框架
Zim是一款以速度见长的Zsh配置框架。 Zim介绍 Zsh(Z Shell)的配置性比Bash要好一点,所以Zsh有很多配置框架,在Terminals Are Sexy Awesome和Github: awesome-zsh-plugins列出了许多。 之前尝试 …
26
Jul 2018
分布式版本管理工具的内涵【三】Fossil篇
分布式版本管理工具的内涵【三】Fossil篇 前面介绍了Git和Mercurial这两款分布式版本管理工具(DVCS),这篇开始介绍Fossil是怎么实现分布式版本管理的。 再介绍一下Fossil,他是SQLite的作者Richard Hipp开发的,集版本管理以及Wiki和问题 …
18
Jul 2018
分布式版本管理工具的内涵【二】Mercurial篇
上一篇介绍了Git相关的内容,这一篇介绍Mercurial(又称hg)。 同样作为DVCS,Mercurial的核心概念和Git是一致的,都是基于改动集的,所有的改动,作为一个集合来提交,要么全部提交成功,要么全部提交失败。本文要介绍Mercurial是如何形成改动集的,改动集所 …
12
Jul 2018
使用Markdown编写Internet RFC文稿
Internet RFC简介 Internet也就是我们常说的互联网,它的标准都是以RFC文稿的方式写成的。比如说大名鼎鼎的TCP传输协议,主要是在RFC793这篇文稿里面定义的。 RFC的全称是Request For Comments。总的来说,RFC是一种流程,用于改进既有的 …
10
Jul 2018
Hugo: Use VSCode as Local CMS
Add Edit with VSCode to your local Hugo site. Hugo is a great static site generator. This site you are visiting right now is powered by …
30
Jun 2018
Hugo+KaTex:在Markdown中嵌入数学公式
目前你访问的网站是用Hugo生成的。Hugo可以让你使用markdown来书写内容。有时我们需要书写数学公式,那如何在markdown中做到呢?本文做了一点小尝试,使用KaTex来在markdown中插入数学公式。 MathJax还是KaTeX 在网页上渲染数学公式的引擎,首当其 …
29
Jun 2018
Grep:文本搜索那些事
Grep是Unix的一个实用工具,可以通过正则表达式来搜索文件中的文本。Grep这个名字并不是一个英文单词,它来源于一条命令g/re/p。这条命令其实是global/regular expression/print的缩写,意思是以正则表达式在全局搜索,并打印出结果。Grep可以说 …
24
Jun 2018
分布式版本管理工具的内涵【一】Git篇
软件开发人员一直在寻找合适的版本管理工具来管理代码。从最早的CVS到现在的Git,经过时一二十年的时间。从早起的以CVS/SVN为代表的集中式版本管理系统(CVCS or Centralized Version Control System),发展到现在 …
21
Jun 2018
Fossil:基于SQLite又用于SQLite的DVCS
今天要给大家介绍Fossil,它是一款分布式版本管理工具(DVCS)。Fossil的作者是D. Richard Hipp,你可能对他不太熟悉,但是你一定听过他的另外一个作品:SQLite。准确得说Fossil是D. Richard Hipp开发的用来管理SQLite源代码的一款版 …
17
Jun 2018
使用Netlify CMS给静态网站增加一个后端
Netlify提供静态网站的托管能力,Netlify CMS为这些静态网站提供管理内容的能力,可以让用户在线编辑源文件。 先扯个闲篇 经过几十年的发展,Web前端的能力越来越强,今天已经可以在浏览器里支持如图片和视频编辑等任务了。前端变强后,对后端的需求就渐渐减少了。现在很 …
10
Jun 2018
PowerShell中的字符串
介绍Powershell中字符串的一些基本操作。 简介 和传统的Shell(比如Bash)一致,PowerShell中的字符串由单引号'和双引号"定义。这两者的区别是: 单引号'定义的字符串就是字符串本身(Literal String) 双引号"定义的字符串会进行一些展开操 …
19
May 2018
PowerShell通过TLS1.2访问Github
从今年2月份开始,Github移除了一些弱的加密算法(参考GitHub Engineering - Weak cryptographic standards removal notice),导致的一个结果是,现在通过HTTPS访问Github,必须要有TLS1.2的支持。 …
18
May 2018
PowerShell简介
PowerShell是微软基于DotNet平台推出的一套命令行脚本语言和工具。和传统的Shell比如Bash或者Zsh不同,PowerShell是一款面向对象的Shell。简单的说,PowerShell的各个命令(Cmdlet)之间交换的是Object,而不是像传统的Shell那 …
03
May 2018
Vim gives you a colorful terminal on Windows
Windows is notorious for its unfriendly and limited terminal environment. All you get is the CMD.exe, which has been the default terminal …
07
Mar 2018
用Go语言写一个简单的Gitweb Server
Git的发行版中带了一个叫gitweb的工具,可以以web的方式来查看git仓库。但是gitweb本身是一个CGI脚本,需要一个支持CGI的Web服务器来运行它。这篇文章介绍如何用Go语言写一个简单的服务器,用来运行gitweb。 gitweb的CGI脚本一般 …
21
Feb 2018
在Cygwin下使用Zsh
Cygwin的默认Shell是bash,如果要把它换成更有交互性的zsh应该怎么配置呢? 首先是安装zsh。如果你有apt-cyg的话,很简单,只需要在cygwin里执行下面的命令 apt-cyg install zsh 其次是把Cygwin的默认shell从bash改 …
11
Feb 2018
让Git只Checkout部分文件
如果一个Git仓库很大,有成千上万的代码,要把这些代码全部checkout出来,耗时长且占空间。如果你的目的只是为了快速修改某个子目录下的一个文件,完整checkout出全部代码就显得很悲催了。所幸的是,Git支持Sparse Checkout,可以只checkout部分目录。 …
06
Feb 2018
DocFX:值得一看的文档工具
DocFX是微软出品的一款文档生成工具,虽然在StaticGen上的排名不高,但却是一款不可小觑的文档生成工具。 DocFX基于.Net Core,所以是跨平台的,在Windows, Mac, Linux都可以使用。DocFX设计的初衷是代替Sancastle,用来给C#,以 …
03
Dec 2017
从bash切换到zsh
作为一个大懒人,一直以来都是用macOS自带的bash作为主shell。之前偶然看到了ruanyifeng的Fish shell 入门教程,动了折腾shell的念头。但是尝试了一下fish,感觉太花哨了。后来在Github上发现了这个6万多颗星的oh-my-zsh项目,于是乎就切 …
20
Apr 2014
git同步被amend过的远端分支
git允许我们修改一个commit的历史,并可以将修改后的历史push到远程仓库: 这种情况下,当另一个人从远程仓库pull的时候,就会出现冲突。如果你不想解决冲突,可以用万能的reset命令: 上面的命令用远程的改动来覆盖本地的改动,如果你想保存本地的改动,可以先把本地的改 …