Nginx

NGINX 微服务 Unit + PHP 初探

简介 NGINX Unit 是一个动态的网络应用服务器,它的设计初衷是为了运行多种编程语言。如有需要,通过 API 可以动态配置已有应用的参数。 核心功能 可使用 RESTful JSON API 动态配置服务器 可同时运行多语言及多版本的应用 动态语言的进程管理功能(开发中) TLS 支持(开发中) TCP, HTTP, HTTPS, HTTP/2 路由和代理(开发中) 支持的语言 Python PHP Go JavaScript

Docker

Docker 镜像源的修改方式

中国大陆的用户由于某种不可描述的原因,导致从 Docker Hub pull 镜像时,速度慢得难以忍受,我曾经试过 pull 一个 Blender 镜像,一上午都没成功,所以比较靠谱的方法还是修改镜像源的地址,有以下几种方式 (以 USTC 为例): 直接设置 --registry-mirror 参数,仅对当前的命令有效docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn 修改 /etc/

Gitlab

Gitlab Webhook 的一次问题排查

公司的项目中使用了 Gitlab 来管理代码,在使用 Webhook 自动部署时,我发现前端项目经常会在一个莫名其妙的时间触发 build,通过 commit 记录却发现在这个时间并没有任何人提交代码,而由同一个 Webhook 管理的其他后端项目却没有这个问题。 首先对照了 Gitlab 的官方文档 ,其中描述了 event 的几种类型及数据格式,在我们的测试环境下,需要保证 Feature 提交和 Bug 修复的及时性,因此我只使用了 Push events 来触发 build,但需要注意的是新建分支和 Merge

关于 Laravel 验证规则中的 exists 和 unique

Laravel 提供了强大的表单验证规则,我在项目中 exists 和 unique 用得比较频繁,参照官方文档写下此文,以便记录下这两个规则的详细用法,以下基于 Laravel 5.4 提供了使用字符串和 Illuminate\Validation\Rule 两种方式生成规则的方法。 exists:table,column 验证字段的值是否存在于数据库指定表的指定列中,如果不存在将会抛出异常,这里是关于 exists 规则的 详细说明。 基本用法 验证 users 表中是否存在 email 等于指定的

MSYS 2 折腾手记

由于工作中在 Windows 下使用 Git,我接触到了 MinGW,但 MinGW 有一些不便之处,在尝试解决这些问题时,我找到了另一个更方便的环境 MSYS2,关于两者之间的对比,可以看一下 这篇文章。 安装过程在 官网 有详细说明,这里记录的是我自己的 MSYS2 配置。 窗口最大化及进入指定目录 MSYS2 默认的终端为 Mintty,启动的命令位于安装目录下的 start_shell.cmd 中(如果找不到这个文件,需要参考官网安装说明更新一下): :startmintty

NGINX 配置陷阱和常见错误

关于本指南 这是一篇来自 NGINX 官方 WIKI 的指南,由 Github 的 renyidong 翻译。 无论新老用户,都有可能掉进陷阱。 下面我们列出了常见的问题,并解释如何解决他们。 在 Freenode IRC 的 #nginx 频道,我们经常看到这些问题。 最常见的问题是有人从其他指南拷贝配置片段。 不能说所有的指南都是错的,但绝大部分是有问题的。 即使是 Linode library,也有部分极其劣质的信息,NGINX 社区成员正在努力去尝试更正。 本站文档由了解各种 NGINX

重装 Shadowsocks 记录

我之前使用的是 Linode 的主机,但最近由于某些原因访问缓慢加丢包,因此换了新的主机,仍然使用的是 CentOS 7 x64,Shadowsocks 是必装的,我这里选择的是 Shadowsocks-libev(版本号 2.3.3),和 Python 版本略有不同,在安装和配置过程中参考了其他作者的文章,在此表示感谢。 记录如下: 1.下载源码并编译安装 $ wget https://github.com/shadowsocks/shadowsocks-libev/archive/v2.

Flex

State 切换时组件的创建销毁策略

好久没有写Flex了,今天突然用到了State,隐约记得有两个属性可以控制State切换时组件的创建销毁策略,现记录如下,以防再次失忆。 itemCreationPolicy 属性指定组件的创建策略,该属性值有2个字符串值: deferred(默认值)首次切换到某状态时,属于该状态的组件会被创建实例。 immediate 组件在应用启动时创建,但如果组件不属于当前状态,其 creationComplete 事件不会发生,只有首次切换到该组件所属的状态,调用到渲染绘制时,才会发生该事件。 itemDestructionPolicy 组件的销毁策略,该属性值有2个字符串值: never(默认值)组件一旦创建就不会被自动销毁 auto 当离开该组件所属的状态时,组件将被自动销毁。

Flash Builder

使用条件编译控制 swf 的嵌入资源

这是我在一个 Flex 交流群中碰到的问题,某个项目需要针对不同的发行版本使用不同的资源文件,如果把两个版本的资源文件都嵌入,会增大swf的体积,但又不能分为两个项目,应该没人想维护两份相同的代码吧,比较靠谱的方法是使用条件编译参数,具体做法如下: 在编译参数中添加如下配置: -define=CONFIG::dev,false 在项目中这样使用: CONFIG::dev { [Embed(source="1.png")] private var background:Class; } CONFIG::dev { [Embed(source="

Flash Builder

彻底删除 Flash Builder 的默认工作空间

使用 Flash Builder 时,第一次启动都在用户目录下生成默认工作空间,例如: C:\Users\Airycanon\Adobe Flash Builder 4.5,4.5 之前的版本,只需切换到自定义的工作空间,删除默认即可,而 4.5 及之后的版本会自动重建该目录,并且工作空间的历史记录及配置文件也存放到该目录中,对于我这种有洁癖的人来说,必须要找到解决办法。 此处以 4.5 为例,4.5 之后的其他版本改为相应的版本号即可,

Flex

TextFlow 文本中插入图片或其他组件

TextFlow 是 Flex 富文本框架 TextLayout Framework的核心类,使用它可以实现富文本及图文混排,甚至可以插入自定义的Flex组件,具体用法如下: 插入图片 textFlow.interactionManager = new EditManager(); //bitmap为具体的图片,插入后生成一个InlineGraphicElement。 EditManager(textFlow.interactionManager).insertInlineGraphic(bitmap,bitmap.width,bitmap.height); textFlow.flowComposer.updateAllContainers(); 插入自定义组件 var container:SpriteVisualElement = new

Android 平台中 Air 应用的调用

我们的 Air Mobile 项目要作为一个单独的模块被其他应用调用,查阅了一下 Adobe 官方帮助文档,其中提到可以使用自定义 URI 方案从网页或本机 Android 应用程序启动 AIR 应用程序。自定义 URI 支持依赖于 Android 清单中指定的方法滤镜,因此在其他平台上不能使用此技术。若要使用自定义 URI,请将方法滤镜添加到应用程序描述符的区块内。必须指定以下示例中的两个 intent-filter 元素,其中 customURI 可以指定为自定义字符串。 <android> <

Flex

基于 Text Layout Framework 的文本组件的滚动条问题

RichEditable、TextArea 等基于 Text Layout Framework 的文本组件在使用 TextFlow 导入富文本时有如下问题:当有时由于有图片或大字体导入,导致文本流合成需要一定时间,此时如果设置滚动条位置到最下方,当文本流合成完毕,由于又增加了内容,导致滚动条的位置又上移了。 之前的做法是加一个延时,但此方法有矛盾之处:既不能把延时设得太大,因为这样导入文本时的体验不好,又不能设得太小,因为无法保证在延时的时间段内图片或字体加载完成。 偶然发现了一个纯 AS 写的滚动条,其中用了用缓动类 TweenLite 来实现滚动条的滑动效果,顿时想到可以尝试一下用来解决上文提到的滚动条问题,经过试验,效果显著,于是上面问题归结为一句代码,以 TextArea

自定义 Button 图标及文字格式

项目中要用到一个可以自定义文字格式和图标的 Button,首先,Spark 的 Button 是可以设置 icon 属性的,同时它的默认皮肤中的外观部件(SkinPart)labelDisplay 是一个 Label也可以设置文字样式,但 Label 所支持的文字样式并不能满足我的需求,再继续看 labelDisplay 这个属性,它可以指定为任何一个实现了 IDisplayText 接口的对象,而 IDisplayText 的实现是在 TextBase 中,继续看 TextBase 的子类,一个是 Label,