headless chrome puppeteer

Headless 最早的时候在 PhantomJS 听说过这个概念,后来在 GitHub 各种项目中总有人不断提起这个概念,而最新看到的新闻便是 Chrome 开始支持 Headless,也正激起了我了解的欲望。 什么是 Headless Chrome Headless Chrome 是一个没有前台界面,只在后台运行的浏览器。浏览器正常的所有解析,渲染都可以由其完成。而开发者可以通过 client 和这个浏览器建立连接,通过 Google 提供的 Chrome DevTools Protocol 协议 来进行交互。总的来说 Headless 浏览器提 Read more ...

2017-10-31 chrome , headless-chrome , linux

vimrc 配置中 Vim 键映射

Vim 本身有很多快捷键,vimrc 也可以配置很多快捷键,当然 Vim 也支持将不同的键映射到不同的键或者命令上。 最常见的键映射就是 nmap vmap imap 分别对应着修改普通模式 (Normal) ,选择模式 (Visual),和插入模式 (Insert) 下的键映射。 对于这几种模式,可以参考 Vim 模式 Map 命令 其实对于 map 命令的种类远不止于此 noremap 非递归映射 non-recursive nmap vmap imap cmap 在命令模式下生效 递归映射的意 Read more ...

2017-10-30 vim , linux , editor

Vim 全局命令 g

全局命令 :g 在 Vim 中有着意想不到强大的功能。当想要在整个文件中对于匹配的行或者不匹配行进行一些操作时,应该第一时间想到这个 :g 命令。 :[range]global[!]/{pattern}/{command} 简写可以写成 :[range]g/pattern/command [range] 指定文本范围,默认为整个文档 pattern 在范围 range 内的行如果匹配 pattern,则执行 command ! 表示取反,也就是不匹配的行,也可以使用 vglobal command 默认是打印文本 整个命 Read more ...

2017-10-29 Vim , Regex , Linux

kibana query 语法

Kibana 的查询语法基于 Lucene 的查询语法,他允许 boolean 值,通配符,过滤器等等操作。 字符串查询 通常一个查询会包含一个或者多个单词或者组合。一个简单的查询语句就是用引号包含的一组词,比如 “search demo”. 如果不包含双引号,Kibana 会单独的去匹配每一个词。 正则表达式查询 大部分正则表达式是允许匹配部分字符的,然而在 Lucene 中,正则表达式用来匹配整个字符串,比如 abcde 这个字符串 使用 ab.* 能够匹配 但是使用 abcd 是不能匹配的 正则表达式中,有一些保留字符 . Read more ...

2017-10-29 kibana , lucene

每天学习一个命令:代码搜索工具 ack-grep

ack 是一个代码搜索工具,作者 厌烦了 grep 复杂的语法,所以创造了 ack 来解决痛点。ack 使用 Perl 语言开发,使用友好,速度快。ack 在大量代码文件中的搜索效率极高。 安装 sudo apt-get install ack-grep 使用 文本搜索 默认情况下 ack-grep 会搜索当前目录下所有文件内容,只要包含关键字就会输出。 ack-grep keyword ack-grep -l keyword # 只显示文件名 ack-grep -i keyword # 忽略大小写 ack-grep -w Read more ...

2017-10-26 ack , linux , command

Nginx 反向代理 Google 配置

使用编译安装 Nginx,将 ngx_http_substitutions_filter_module 和 ngx_http_google_filter_module 两个模块编译进 Nginx。具体内容可以参考安装篇。 对于 Nginx 基本设置可以参考 配置篇 . 这篇主要演示 Nginx 作为一个反向代理服务器的基本设置。 Nginx 反向代理最重要的一个配置就是 proxy_pass ,该配置接受一个参数, URL ,也就是 Nginx 转发的目的地。Nginx 会自动将请求的 URI 替换为 proxy_pass 配置的 URI。 lo Read more ...

2017-10-25 linux , nginx , web , proxy , google

Nginx 配置详解

Nginx 的相关介绍及安装可以参考之前的一篇文章 Nginx 相关的配置, Nginx 中的配置有两种分类,一种为单纯的指令 (directive),另一种为上下文配置块 (configuration context)。 指令 (directive),包含名称和参数名,以分号结束,比如 gzip on; 上下文通常声明一个作用域,比如 server 块 server { listen 80; } 在上下文中使用相同的指令时需要小心,一般子级上下文中的指令会覆盖父级中定义的值。 全局块 Nginx 的全局配置是影响整个 WEB Read more ...

2017-10-23 nginx , web , server , linux , proxy , web-server , apache

Git commit 中使用 gpg 签名提交

Ubuntu 下,GnuPG 2.0 的支持都在 gnupg2 这个 packages 下,通过下面命令安装: sudo apt-get install gnupg2 GitHub 要求使用 GnuPG 2.1 及以后的版本。 Mac 下安装使用 在 Mac 下需要安装: brew install gnupg brew link --overwrite gnupg brew install pinentry-mac # 密码输入管理器 然后在 shell 配置 (.bashrc 或 ~/.zshrc) 中添加 export GPG_TTY= Read more ...

2017-10-20 github , git , gpg , linux

升级 Spring MVC 3.2.x 到 4.x 注意事项

把 Spring 版本从 3.2.x 升级到了4.x ,这里记录一下。 新特性 Java 8 Support, 从 4.0 开始支持 Java 8,可以使用 lambda 表达式,等等 Java 8 的特性 Groovy DSL 新增 @RestController 注解,这样就不需要每个方法都使用 @ResponseBody 了。 更多内容可以查看: https://docs.spring.io/spring/docs/4.3.x/spring-framework-reference/htmlsingle/#spring-whats-new Read more ...

2017-10-19 Spring , Java , Web

Linux 安装 nodejs

nodejs 安装其实非常简单,大部分情况下 Debian/Ubuntu 下只要使用包管理直接安装 sudo apt-get install nodejs sudo apt-get install npm 即可。 脚本安装 可是今天网络环境太差,不是 npm package not found 就是 update 半天不动。 官网 提供的安装方式 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs 也是网 Read more ...

2017-10-18 linux , nodejs , npm , js , javascript

最近文章

  • 我购买了一个 DJI Mic Mini 最近为了提升移动拍摄时的收音质量,我入手了 DJI Mic Mini。虽然大疆提供了带充电盒的套装,但我只购买了单机版本(发射器+接收器,2 TX 1 RX 版本),因为对于我日常的拍摄需求来说,本体的续航已经完全足够了。
  • Auto Claude:Vibe Kanban 的终极形态?让 AI 并行开发的“指挥中心”来了 在上一篇文章 《Vibe Kanban:当 AI 开始并行协作,我们的开发方式变了》 中,我分享了一种利用 [[Vibe Kanban]] 和 AI Agent 实现并行开发的工作流理念。我们可以利用 Vibe Kanban 来统一管理多个并行任务。
  • Vibe Kanban:当 AI 开始并行协作,我们的开发方式变了 在我之前的视频当中,我介绍过在 Claude Code 中使用子代理(Subagents)机制和 Git Worktree 来实现并行工作流。我们可以创建子代理来并行执行任务,但是 Subagents 的配置和使用都还需要我们在 Claude Code 中等待。那如果我们有完全独立的两个任务要执行呢,我们可以开两个 Claude Code 分别在两个 Claude Code 中提交任务,然后让 Claude Code 完成。此时我们依然会遇到一些问题,比如说两个 Claude Code 的代码可能产生冲突。并且如果我们有超过两个独立任务时,我们在管理 Claude Code 的成本就会指数级上升。
  • 终于还是入手了:Insta360 Go Ultra 初体验 每次想要拍摄,我得从口袋掏出手机,解锁,打开相机应用,切换到视频模式,然后举着它——这个过程在很多稍纵即逝的生活瞬间面前,显得太繁琐了。而且,当你举着手机拍摄时,你其实是在”观察”生活,而不是在”经历”生活。手机太”重”了,不是物理重量,而是心理负担。所以我想使用一个工具,可以帮我记录生活,但又不需要我刻意去”操作”它。于是,在观望了许久之后,我终于入手了这台 Insta360 Go Ultra。在 11.11 在天猫 2350 下单了 Insta360 Go Ultra,后来价格保护还退还了 260 块。
  • 奥卡姆剃刀:为何简单的往往就是最好的 最近我在整理我的 Obsidian 笔记库时,发现了一个有趣的现象。