iTerm2 调教记录 自动登录 公司内的开发环境是需要通过堡垒机来登录的,之前每次登录都要手动输入两次 ssh 命令,非常麻烦,经过研究可以用如下方式实现自动登录 创建一个 Profile,在图中的位置填入登录堡垒机的 ssh命令。 给这个 Profile 增加一个 Trigger,当前一条登录命令执行成功后,这里可以通过识别堡垒机输出的字符,自动执行下一步 ssh 命令。 经过上面两步 ssh 命令的自动输入,最终实现自动登录到开发环境。 快捷键选择不同的 Profile 经过上一步的操作之后,创建了多个 Profile,想要通过快捷键在不同的 Airycanon 19 Mar 2020 · 2 min read
Nginx NGINX 微服务 Unit + PHP 初探 简介 NGINX Unit 是一个动态的网络应用服务器,它的设计初衷是为了运行多种编程语言。如有需要,通过 API 可以动态配置已有应用的参数。 核心功能 可使用 RESTful JSON API 动态配置服务器 可同时运行多语言及多版本的应用 动态语言的进程管理功能(开发中) TLS 支持(开发中) TCP, HTTP, HTTPS, HTTP/2 路由和代理(开发中) 支持的语言 Python Airycanon 21 Sep 2017 · 5 min read
MySQL 关于 MySQL 的 ONLY_FULL_GROUP_BY 定位问题 最近在使用 Laravel Relationship 查询关联模型时遇到了如下错误: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'echo_dev. Airycanon 11 Apr 2017 · 2 min read
Docker Docker 镜像源的修改方式 中国大陆的用户由于某种不可描述的原因,导致从 Docker Hub pull 镜像时,速度慢得难以忍受,我曾经试过 pull 一个 Blender 镜像,一上午都没成功,所以比较靠谱的方法还是修改镜像源的地址,有以下几种方式 (以 USTC 为例): 直接设置 --registry-mirror 参数,仅对当前的命令有效docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu. Airycanon 17 Mar 2017 · 1 min read
Redis Redis 的 Getshell 问题分析 排查错误 最近测试环境一直没问题的 API 突然报错了,错误信息如下: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are Airycanon 28 Dec 2016 · 3 min read
Gitlab Gitlab Webhook 的一次问题排查 公司的项目中使用了 Gitlab 来管理代码,在使用 Webhook 自动部署时,我发现前端项目经常会在一个莫名其妙的时间触发 build,通过 commit 记录却发现在这个时间并没有任何人提交代码,而由同一个 Webhook 管理的其他后端项目却没有这个问题。 首先对照了 Gitlab 的官方文档 ,其中描述了 event 的几种类型及数据格式,在我们的测试环境下,需要保证 Feature 提交和 Bug 修复的及时性,因此我只使用了 Push events 来触发 Airycanon 7 Sep 2016 · 3 min read
关于 Laravel 验证规则中的 exists 和 unique Laravel 提供了强大的表单验证规则,我在项目中 exists 和 unique 用得比较频繁,参照官方文档写下此文,以便记录下这两个规则的详细用法,以下基于 Laravel 5.4 提供了使用字符串和 Illuminate\Validation\Rule 两种方式生成规则的方法。 exists:table,column 验证字段的值是否存在于数据库指定表的指定列中,如果不存在将会抛出异常,这里是关于 exists 规则的 详细说明。 基本用法 验证 users Airycanon 6 May 2016 · 2 min read
MSYS 2 折腾手记 由于工作中在 Windows 下使用 Git,我接触到了 MinGW,但 MinGW 有一些不便之处,在尝试解决这些问题时,我找到了另一个更方便的环境 MSYS2,关于两者之间的对比,可以看一下 这篇文章。 安装过程在 官网 有详细说明,这里记录的是我自己的 MSYS2 配置。 窗口最大化及进入指定目录 MSYS2 默认的终端为 Mintty,启动的命令位于安装目录下的 start_shell.cmd 中( Airycanon 25 Apr 2016 · 3 min read
关于 git submodule 最近在汉化 Ghost 项目,其中的主题 Casper 是一个单独的项目,这时就要用到 git submodule 了,这里以 Ghost 为例,记录我在使用 git submodule 时遇到的问题。 修改 submodule 指向 我在 fork 完 Ghost 之后,发现其中的 Casper 项目指向的是原始的 repo,而我需要的是指向我自己的 Airycanon 27 Feb 2016 · 2 min read
启用 Let's Encrypt 证书 Let's Encrypt 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供了免费、自动化、开放的证书签发服务,虽然证书只有 90 天有效期,但可以通过定时脚本更新,这里参照 imququ 的文章记录了在 CentOS 7 X64 上使用 acme-tiny 申请、配置以及定时更新证书的方法。 安装 openssl yum install Airycanon 26 Feb 2016 · 4 min read
NGINX 配置陷阱和常见错误 关于本指南 这是一篇来自 NGINX 官方 WIKI 的指南,由 Github 的 renyidong 翻译。 无论新老用户,都有可能掉进陷阱。 下面我们列出了常见的问题,并解释如何解决他们。 在 Freenode IRC 的 #nginx 频道,我们经常看到这些问题。 最常见的问题是有人从其他指南拷贝配置片段。 不能说所有的指南都是错的,但绝大部分是有问题的。 即使是 Linode library,也有部分极其劣质的信息,NGINX Airycanon 19 Jan 2016 · 11 min read
重装 Shadowsocks 记录 我之前使用的是 Linode 的主机,但最近由于某些原因访问缓慢加丢包,因此换了新的主机,仍然使用的是 CentOS 7 x64,Shadowsocks 是必装的,我这里选择的是 Shadowsocks-libev(版本号 2.3.3),和 Python 版本略有不同,在安装和配置过程中参考了其他作者的文章,在此表示感谢。 记录如下: 1.下载源码并编译安装 $ wget https://github.com/shadowsocks/ Airycanon 28 Sep 2015 · 2 min read
CentOS 7 安装 Ghost 记录 由于众所周知的原因,我在 Linode 买了主机,用 Shadowsocks 搭了梯子,而之前阿里云的服务器差不多到期,正好全面迁移到 Linode,把整个迁移过程记录如下,免得下次搬家迷路。 安装 MySQL 由于 CentOS 7 的 yum 源中没有 mysql-sever,需要手动添加 # cd /usr/local # wget http://dev.mysql.com/ Airycanon 31 Dec 2014 · 3 min read
Flex State 切换时组件的创建销毁策略 好久没有写Flex了,今天突然用到了State,隐约记得有两个属性可以控制State切换时组件的创建销毁策略,现记录如下,以防再次失忆。 itemCreationPolicy 属性指定组件的创建策略,该属性值有2个字符串值: deferred(默认值)首次切换到某状态时,属于该状态的组件会被创建实例。 immediate 组件在应用启动时创建,但如果组件不属于当前状态,其 creationComplete 事件不会发生,只有首次切换到该组件所属的状态,调用到渲染绘制时,才会发生该事件。 itemDestructionPolicy 组件的销毁策略,该属性值有2个字符串值: never(默认值)组件一旦创建就不会被自动销毁 auto 当离开该组件所属的状态时,组件将被自动销毁。 Airycanon 10 Dec 2014 · 1 min read
Flash Builder 使用条件编译控制 swf 的嵌入资源 这是我在一个 Flex 交流群中碰到的问题,某个项目需要针对不同的发行版本使用不同的资源文件,如果把两个版本的资源文件都嵌入,会增大swf的体积,但又不能分为两个项目,应该没人想维护两份相同的代码吧,比较靠谱的方法是使用条件编译参数,具体做法如下: 在编译参数中添加如下配置: -define=CONFIG::dev,false 在项目中这样使用: CONFIG::dev { [Embed(source="1.png")] private var background:Class; } CONFIG::dev Airycanon 10 Dec 2014 · 1 min read
Flex DataGrid 导出 CSV DataGrid 使用第三方库 CSVLib 导出CSV,遇到如下两个问题: ActionScript 默认的文本编码为 UTF-8,而 CSV 不支持这种编码,导致中文表头在 Excel 中显示为乱码,而用记事本打开正常。解决方法:CSV 导出时用 ByteArray 转码,代码如下: var byte:ByteArray = new ByteArray(); byte.writeMultiByte(result," Airycanon 10 Dec 2014 · 1 min read
Flash Builder 彻底删除 Flash Builder 的默认工作空间 使用 Flash Builder 时,第一次启动都在用户目录下生成默认工作空间,例如: C:\Users\Airycanon\Adobe Flash Builder 4.5,4.5 之前的版本,只需切换到自定义的工作空间,删除默认即可,而 4.5 及之后的版本会自动重建该目录,并且工作空间的历史记录及配置文件也存放到该目录中,对于我这种有洁癖的人来说,必须要找到解决办法。 此处以 4.5 为例, Airycanon 10 Dec 2014 · 1 min read
Air 应用重新启动的方法 代码如下: var mgr:ProductManager = new ProductManager("airappinstaller"); mgr.launch("-launch " + NativeApplication.nativeApplication.applicationID + " " + NativeApplication.nativeApplication.publisherID); NativeApplication.nativeApplication.exit(); 注意事项: ProductManager 代码提示是打不出来的,应该是在源码里用 [ExcludeClass] Airycanon 10 Dec 2014 · 1 min read