文章

  • AWS S3 不喜欢对象路径中有 //

    在 AWS S3 中,存储桶(bucket)后的路径就是所存储对象的 key,这个 key 就像文件系统中的路径一样,可以用 / 分隔。但是,与文件系统,或者 Web 中的 URL 不同的是,在 AWS S3 中 /// 是不等价的。

  • CentOS 7 下安装 Shadowsocks 客户端

    在 CentOS 7 下安装 Shadowsocks 的客户端非常容易。由于在 COPR (Cool Other Package Repo) 中已经有打包好的 shadowsocks-libev,因此我们只需几条命令便能完成安装。

  • Shadowsocks AEAD 加密算法 xchacha20-ietf-poly1305 兼容性

    xchacha20-ietf-poly1305 是目前最受 libsodium 项目的 AEAD (Authenticated Encryption with Additional Data, 用于关联数据的认证加密) 算法,可用于 Shadowsocks,在 Windows, Android, Linux, 路由器上都有支持。

  • Windows OpenVPN 报错 "algorithm too weak" 解决方案

    如果在安装新版本的 OpenVPN 客户端后,无法连接曾经可以正常连接的服务器的话,检查日志中是否有 CA signature digest algorithm too weak 的错误提示:

  • 在 Windows 10 及 Windows Server 2016 上配置 Windows Update 更新使用代理

    Windows 更新涉及到网络的过程分为两个部分:1. 检查更新;2. 下载更新。其中 1. 检查更新部分会使用 IE 中设置的代理以及 WinHTTP 中设置的代理;而 2. 下载更新部分过去也会同时使用 IE 以及 WinHTTP 中设置的代理,但是自 Windows 10 及 Windows Server 2016 起,下载更新将会只使用 WinHTTP 中设置的代理。因此在只能通过代理访问外部网络的环境中,我们要么配置好 WinHTTP 使用代理,要么在内部网络中配置 Windows Update 更新服务器,才能正常使用 Windows 更新。

  • 网页禁用拷贝禁用右键

    在网页上有时候我们会想要阻止用户选中一部分文字,比如 iconfont、网站文字 Logo 等,从而避免用户选择到无意义的文本,或者避免 Logo 展示在颜色背景上;又或者有时候我们想要阻止浏览器原生的右键功能,从而可以提供我们自己的右键菜单,为用户提供更丰富的交互体验。那么可以参考下文中的一些方法。

  • 通配选择器(*)并不匹配所有元素

    在 CSS 中,我们用星号(*)表示通配选择器,它可以匹配任意类型的元素,但是任意类型的元素并不等同于任意元素,如 ::before 以及 ::after 伪元素就不能被 * 匹配,而需要使用 *::before 以及 *::after

  • Arch Linux 安装 chrome-dev

    Arch Linux 下有 google-chrome-dev 以及 chromium-dev 两个 AUR 包可以安装 Dev (Unstable) 版的 Chrome/Chromium,其中 google-chrome-dev 直接使用 Google 预编译好的二进制文件,而 chromium-dev 则会从源码开始编译安装。若无特殊需求,推荐使用 google-chrome-dev,简便快捷,如自行编译源码安装需数小时才能完成编译。

  • JavaScript string 中取字符的一些方法比较

    方法 参数默认值 返回类型 越界返回值 支持 BMP 以外字符?
    'string'[index] String undefined
    string.prototype.charAt(pos) 0 String ""
    string.prototype.charCodeAt(pos) 0 Number NaN
    string.prototype.codePointAt(pos) 0 Number undefined
  • ESXi 升级指南

    ESXi 的升级有多种方法,本文介绍如何通过 esxcli 这一命令行工具来进行升级。

  • Linux 远程连接 Windows

  • Babel 配置 Source Maps

    Babel 是一个 JavaScript 编译器,通过语法转换器支持最新版本的 JavaScript,将其转译为能在旧版本浏览器或仅支持旧版本 JavaScript 的环境中能运行的脚本。

  • 真真假假 JavaScript

    几乎在所有语言中,都会有用于表示真假的布尔(Boolean)类型,并有真(true)假(false)两种值,JavaScript 也是如此。另外,当一些非布尔类型的值用在 if 判断,? : 条件(三元)运算符,逻辑运算(&&, ||, !)等语句中时,也会被转换为真(true)或是假(false)。如果该值被会转换为真,我们就认为该值是真值(truthy 值),反之,则认为该值为非真值或假值(falsy 值)。

  • 配置 BBR 拥塞控制算法,改善 Shadowsocks 性能

    BBR ("Bottleneck Bandwidth and Round-trip propagation time") 是由 Google 研发的新拥塞控制算法,以改善 TCP 连接的带宽和延迟为目标,同时也在 Google 自家产品 Google 搜索,YouTube,以及 Google Cloud Platform 上使用。

  • 微林 vxTrans SSL Transfer 部署教程

    微林 (VnetLink) 推出的 vxTrans 服务是一项链路级网络优化服务,可以点对点透明地加速与目标服务器指定 TCP/UDP 端口的连接。,微林又推出了 vxTrans 服务的 SSL 版(SSL Transfer),额外保护了最终客户端到微林接入点的连接。

  • ESXi 硬盘直通

    通常我们使用 ESXi 就是为了搞虚拟化,在一台物理机上运行多个操作系统。但有的时候,在虚拟化的同时,我们可能也想要让一部分硬件能直接被虚拟机访问,也就是直通硬件。比如为虚拟机直通硬盘,那么我们就能轻易地将原本运行在独立硬件上的系统迁移到 ESXi 的虚拟化环境中。相应地,如果一台虚拟机的硬盘直通了一物理硬盘,那么将来也能轻易地将其上的系统迁移到独立的硬件上的运行。

  • 部署 Jekyll 站点至 Amazon S3

    Jekyll 是一款静态博客/网站生成工具,很多使用 Jekyll 写作的博主会将网站发布到 GitHub Pages 或类似的服务上;此外,我们也可以选择将博客部署至 Amazon S3 等类似的对象存储服务上。

  • 格式化大于 32 GB 的磁盘为 FAT32

    FAT32 是由微软推出的自 Windows 98 起就得到了广泛应用的文件系统。除了微软的 Windows 操作系统以外,也被 macOS, Linux, Android 等几乎所有操作系统所支持。FAT 32 文件系统支持最大约 4 GB 大小的文件,以及最大 2 TB(使用 32 KB 簇时可达 8 TB)的分区。

  • CentOS 7 下安装 Shadowsocks 服务端

    在 CentOS 7 下安装 Shadowsocks 的服务端非常容易。由于在 COPR (Cool Other Package Repo) 中已经有打包好的 shadowsocks-libev,因此我们只需几条命令便能完成安装。

  • .NET 程序集依赖查看器推荐

    每一个应用程序的运行都少不了支持它的 DLL;同样,每一个 .NET 程序集的运行也都少不了其他依赖的 .NET 程序集。

  • GAC 与其物理路径

    GAC (Global Assembly Cache) 是 .NET 框架下程序集(Assembly)的一个全局缓存。不同 CLR (Common Language Runtime, 公共语言运行时) 版本,不同平台的程序集会被缓存在不同路径下。

  • Arch Linux 下安装 Node.js 最新版或长期支持版

    在 Arch Linux 下安装 Node.js 非常简单,只需一行命令 sudo pacman -S nodejs npm 即可完成安装。不过 Arch Linux 作为一个滚动更新的发行版,其 nodejs 包的版本往往都非常新。也就是说,每当 Node.js 发布了一个大的版本更新后,Arch Linux 的 nodejs 包也会随即更新。

  • 编写更安全的 TypeScript 代码

    TypeScript 的编译器 tsc 提供了许多选项可以让编译器在编译时进行更严格的检查,从而使得我们编写的代码更安全、更健壮。 不过出于对 JavaScript 和为旧版本 TypeScript 编写的代码的兼容性考虑,这些选项默认都是关闭的,需要手动在命令行上或 tsconfig.json 中指定。

  • 三星应用程序耗电监控 与 安卓辅助功能服务

    在三星盖乐世 S7 等搭载了 Android 7.0 系统的设备上,三星提供了一项名为 应用程序耗电监控 的功能。这项功能通过自动休眠后台应用,以达到省电的目的。

  • Arch Linux 下安装 Shadowsocks 服务端

    在 Arch Linux 下安装 Shadowsocks 的服务端非常容易,在 Arch Linux 的官方包索引中就有 Shadowsocks 的 Python 版(包名为 shadowsocks)和 libev 版(包名为 shadowsocks-libev)。本文以 libev 版本(C 实现)为例,介绍安装、配置 Shadowsocks 的方法。

  • 为 HTML 加上 lang 属性

    lang 属性 是一全局属性,用于定义元素的语言。

  • Linux 磁盘空间清理

    随着服务器的不断运行、更新,服务器上的磁盘空间也逐渐变少,因而有时需要对磁盘空间进行清理,以免磁盘空间不足,并保证系统的正常运行。

  • 为外部链接添加图标指示

    为博客写文章时,有时会需要引用自己站点中的其他页面;而又有些时候,则会有需要引用外部的网站、资源等。但是在阅读文章时点开引用的链接之前,常常没有一个直观的方法来判断引用的资源是外部的还是内部的。因而,如果能有视觉上的提示能够在点开链接之前就区分这两种类型的链接,我觉得是很有帮助的。

  • HTML 中大小写的那些事

    在 HTML 标记语言中,有标签、属性名、属性值等许多组成部分。他们有的有大小写之别,而有的则没有。由于 HTML 标准规定所有的字符串除特别说明外都是要区分大小写的,因此这里我们就来探究一下那些没有大小写之分的部分。

  • 百度移动搜索优化与百度网页转码

    使用百度移动搜索时,百度提供了一项名为 Siteapp 页面转码 的功能,声称可以为移动终端提供更好的浏览体验,具体可见其转码声明。然而,事实是该转码通常会将原先良好设计的页面转为难以阅读的页面,并会被贴上百度自家的广告,严重影响用户体验。

  • 网站可用性持续监控——记一次云服务故障经历

    现在越来越多的人开始写自己的博客,有自己的网站,或者在云服务器上部署了自己的应用。通常这些服务都能够稳定地运行,几个月一年都不会出错。然而有的时候,会由于网络波动,云服务器的底层硬件出现故障或者等等各种不可预见的问题而导致服务不可用。这个时候如果能够尽早地发现服务已下线,也就能够更快地从故障中恢复过来。

  • 配置 IIS 的远程管理

    在安装了 IIS 的服务器上,我们有 IIS Manager (inetmgr.exe) 来对 IIS 进行管理配置。当然,要对服务器上的 IIS 进行管理配置,我们并不一定需要登入到服务器上,也可以使用 IIS 远程管理工具来进行管理。

  • Windows/Linux 下命令可用性检测

    在 Windows 上编写批处理或者在 Linux 上编写 shell 脚本时,经常会有需要判断脚本中依赖的某个命令是否存在的需求,根据所依赖的命令是否存在,我们可能会需要执行不同的代码路径,或者报错退出。

  • Node.js 编写跨平台 spawn 语句

    Node.js 的子进程(child_process)模块下有一 spawn 函数,可以用于调用系统上的命令,如在 Linux, macOS 等系统上,我们可以执行

  • <input type="file"> 在不同浏览器下的不同行为

    <input type="file"> 是 HTML 中用于让用户选择文件的一个控件,当用户点击控件时,就会有对话框弹出让用户选择文件。这一行为在各浏览器中基本是一致的,但是却又略有不同。

  • 不要把 <label> 元素嵌套在 <button> 元素中

    在写 HTML 时,不要把 <label> 元素放在 <button> 元素中,否则的话在 IE 及 Firefox 浏览器中,<button> 元素中的 <label> 元素将无法接受到 click 等事件。

  • C# 交互式执行环境 (REPL)

    许多脚本语言如 JavaScript, Python, Ruby 等都提供有 REPL (Read-Eval-Print Loop,读取-求值-输出 循环) 环境。通过这么一个交互式开发环境,可以使我们更容易地对语言进行一些探索和尝试,通过 REPL 进行调试也比 编辑-编译-运行 的模式来得更为快捷。

  • 禁用 Windows 共享服务,释放 445 端口

    在 Windows 系统的默认配置下,会启动一个共享服务,以使局域网内的机器可以通过如 \\192.168.1.1 的形式来访问系统中共享的文件和打印机等。

  • Bower 最佳实践与使用技巧

    Bower 是一款使用 Node.js 语言编写的,用于对前端进行包管理的工具。其安装 (npm install -g bower) 和使用 (bower install <package>) 都十分简单。不过,在使用 Bower 的过程中,还是有一些注意点和小技巧的。

  • Git LFS 操作指南

    Git LFS(Large File Storage, 大文件存储)是可以把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替的小工具。通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。

  • SSH 安全加固的一些措施

    SSH 是几乎每台服务器都会开启的服务,加强 SSH 服务的安全对于整个系统的安全性提升有着极大的帮助。我们可以通过修改 sshd 的默认配置,使用自动屏蔽恶意 IP 的软件包 fail2ban,配置防火墙规则等手段来提升其安全性。

  • Linux 下 sleep 命令在 Windows 中的对应

    在 Linux 中,我们有 sleep 命令可以使当前运行的脚本等待指定的秒数,如 sleep 5 等待 5 秒。在 Windows 中,我们也有类似的命令可以达到一样的效果,不过需要考虑好这些命令的兼容性,因为并非所有版本的 Windows 都带有这些命令。

  • Arch Linux 安装 Vim YouCompleteMe

    由于在 Arch Linux 上有社区用户提供的 Vim YouCompleteMeAUR 包,所以在 Arch Linux 上安装 Vim YouCompleteMe 就显得相对比较简便了,基本上就是通过编译安装 AUR 脚本即可,不过仍有一些要点需要注意。

  • 使用 Papertrail 服务进行远程日志记录

    管理 Linux, Windows 等服务器甚至路由器等嵌入式设备时,常常需要查看系统日志、应用日志来确认系统安全情况、确认服务运行状况等。当只有单台服务器需要管理时,我们可以远程登入服务器查看日志,而当有多台服务器需要管理时,一一登入查看日志就显得不便了。因而我们可以考虑采用远程日志记录的方案,来集中化的管理多台服务器的日志。

  • Windows 批处理经验总结

    批处理 (.bat, .cmd) 是 Windows 系统上古老的脚本语言,其后又有 PowerShell 等脚本出现,虽然批处理的应用已经渐渐减少,但是仍有许多旧有的批处理脚本需要维护。这里记录了我在处理批处理时的一些经验总结,包含了资料手册最佳实践经验技巧陷阱与缺陷以及常用代码片段五个部分。

  • 使用 SNMP 监控服务器运行状态

    SNMP (简单网络管理协议,Simple Network Management Protocol) 是用于监控路由器、计算机、服务器甚至 UPS 电源等连接了网络的设备的运行状态的协议。通过 SNMP,我们可以了解到设备的 CPU 占用率、系统负载、内存占用、磁盘占用、网络流量等信息。

  • 过滤 Google Analytics 中的垃圾内容

    Google Analytics 是用于网站应用等进行流量统计分析的工具。对于统计分析来说,数据的准确性尤为重要。而有些网站则会针对 Google Analytics 的用户,通过在用户的统计信息里插入自己网站的地址来达到广告的效果。因此我们需要过滤掉这些垃圾内容,从而使得我们的统计数据能够更为准确。

  • 为 GitLab 启用 Let's Encrypt 颁发的 SSL 证书

    Let's Encrypt 是一家全新的 SSL 证书颁发机构,为用户提供免费、自由、自动化的证书颁发流程。我们可以通过 Let's Encrypt 申请 SSL 证书来为我们的 GitLab 提供 HTTPS 接入。

  • GitLab CE 备份与还原

    本文以通过 Omnibus 包安装的 GitLab CE 为例,记录了备份还原 GitLab 数据及配置过程中的一些事项。

  • 利用 canvas 或 css 旋转图像

    在 Web App 或网页设计中,有时会有需要旋转页面中的图片的需求。根据图片所应用地方的不同,我们可以有不同的方法来旋转图片。如在 canvas 中的图片,我们就需要借助 canvas 的渲染上下文中的方法来旋转图片;而如果图片只是页面中的一个 <img> 元素,我们则可以使用 CSS 样式来旋转图片。

  • HTML5 Canvas 学习笔记

    关于 HTML5 Canvas 的兼容性最佳实践常用代码片段性能优化Cheat Sheet 以及相关教程

  • 清空 HTML5 Canvas 画布的几种方法

    HTML5 的 Canvas 元素原生提供了绘制图片圆弧轨迹轨迹等图形的方法,也提供了对 Canvas 渲染上下文进行平移缩放旋转等操作的方法,但却没有提供一个简单的清空画布的方法。

  • 为 CSS 设置正确的 Content-Type

    Web 服务器在响应请求时,除了返回所请求的资源本身,一般还会在响应的头部带上 Content-Type 字段,其值应当与该资源的 MIME 类型相匹配。如果 Content-Type 没有与资源一同返回或配置不正确的话,就有可能在一些浏览器上造成兼容性问题。如网页中的样式文件 CSS 对应的 Content-Type 应该为 text/css,如果未返回正确的 Content-Type,则有可能造成浏览器拒绝渲染样式。

  • 使用 Visual Studio 调试 JScript

    在 Windows 的配置、运维中,有时会需要编写一些 JScript 代码,这些代码在 Windows Script Host 环境下执行,虽然与在浏览器中执行的 JScript 代码环境不同,但我们也可以像在浏览器中执行的代码一样设置断点,以及进行单步调试。

  • 使用 print 语句在 JScript 中打印信息

    在 Windows 下,有时候会需要编写一些 JScript 脚本来执行一些自动化任务。然而在 Windows Script Host 中执行的脚本与在浏览器中执行的 JScript 不同,无法使用 console.log() 等方法来输出信息。不过我们还是可以借助 jsc.exe 提供的 print() 函数来达到同样的目标。

  • Samsung Galaxy S7 Edge 相关资料

    关于 Odin,驱动,固件,以及相关刷机信息。

  • 为 tmux / screen 选择一个合适的引导键

    Tmux 与 screen 一样,是命令行下常用的终端复用工具,提供了诸如分屏、窗口管理等功能。当通过快捷键调用这些功能时,一般需要先按下一个前缀按键,或者说是引导键,以避免这些快捷键和当前终端本来所有的快捷键冲突。

  • z-index 的最大值与最小值

    z-index 是一项能够指定元素在一个层叠上下文中的层叠顺序的属性。有时候比如在做书签栏插件时,会需要保证将一个元素放置在页面最上层,那么 z-index 的最大值是多少呢?

  • /etc/apt/sources.list 详解

    /etc/apt/sources.list 是包管理工具 apt 所用的记录软件包仓库位置的配置文件,同样的还有位于 /etc/apt/sources.list.d/*.list 的各文件。

  • Disqus 中文化

    Disqus 是一款优秀的评论系统,目前也已被本地化为多种语言,可惜的是目前并未完成针对中文语言的翻译,也无法直接在 Disqus 的后台管理页面中设置中文。尽管如此,我们还是有一些方法用上中文化的 Disqus。

  • 免百度云管家下载百度云中的大文件

    在 Windows 上,从百度云中下载大文件时,百度云会提示『你下载的文件过大,需要使用百度云管家。』。下面就介绍在 Windows 上,绕过百度云管家直接下载大文件的原理与方法。

  • Samsung Galaxy Note 3 (Unified) (hlte) 相关资料

    关于 Odin,驱动,固件和 recovery。

  • 在路由器上部署 shadowsocks

    本文主要介绍在路由器上部署 shadowsocks 的方法与流程。通过在路由器上部署 shadowsocks 服务,可以为整个局域网内设备提供透明代理,而无需在每台设备上做相应设置,也可以让一些不方便设置代理的设备能够通过代理访问网站。

  • CanvasRenderingContext2D.drawImage() 的浏览器兼容性

    CanvasRenderingContext2D.drawImage() 是浏览器原生提供的在 canvas 上绘制图片的方法。

  • 配置 Fiddler 调试移动设备流量

    Fiddler 是一款流行的流量调试工具,可以在各种浏览器(Chrome, Firefox, IE 等),各种操作系统(Windows, Linux),各种平台(桌面,移动设备)环境下抓取 http 及 https 的流量,并进行相应分析,也可以设置规则对不同请求自动作出不同响应。

  • 在 Windows 中创建以点开头的文件

    在开发中,我们经常会遇到一些以点开头的文件如 .gitignore, .gitattributes, .editorconfig, .npmignore, .travis.yml 等等,有时候这些文件已经创建好,修改时只需打开编辑即可,而有时候却需要自己手动创建这些文件,然而在 Windows 中,创建以点开头的文件可能并没有想象的那么自然。

  • 关于 z-index 那些你不知道的事

    在一张网页上,如果我们想要在合适的位置放置我们的元素,可以通过设置 position, top, right, bottom, left, margin 等来实现,如果元素还会与其他元素发生重叠时,我们就需要考虑这些元素在 DOM 中的相对位置,有时还需要设置 z-index 以使元素间具备合适的层次关系。

  • systemd 环境下配置 sshd 监听端口

    配置 sshd 大家都很熟悉,主要就是围绕 /etc/ssh/sshd_config 进行配置。而配置 sshd 的端口则是配置 sshd_config 中的 Port。不过在 systemd 环境下,根据服务是由 .socket 文件配置启动还是 .service 文件配置启动的不同,配置端口分别需要配置 sshd.socket 文件或依然是 sshd_config

  • Hello World

    这是 zzz.buzz 博客的第一篇日志。在这里,将会记录下我所遇到、思考过的技术问题,也许也会有一些我的心得体会。愿这里的每一篇文章能成为我成长道路的记录,同时也能够带给偶然经过的读者一些帮助。

RSS订阅