解决 MySQL 突然占用全部内存的问题

前段时间落格从虚拟主机迁移到了独立的vps上,这下所有的维护内容都得我自己动手了。为了性能,另外既然能自己配环境了,自然不会用旧的配置。

我用了 Ubuntu Server 16.04 + PHP 7.0 + Nginx + MySQL 5.7 总之,踩了不少的坑。

现在,来记录一下

关于 MySQL 为什么会突然占满内存

一开始我以为是vps遭到了攻击,可是只查看网卡流量就不是这[……]

点击跳转以继续阅读

Ubuntu 16.04 为 PHP7 添加 memcached 以及 redis 扩展

切换到 PHP 7 之后,网站的速度大幅提升,不过通常的扩展可能某一个就还没有支持 PHP7.

Memcached

比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 memcached 就还没有,不过好在,它已经支持了 PHP 7 ,只是没有源而已,我们手动编译它。

要安装 memcached,需要先安装依赖库 libmemcached

这里找到[……]

点击跳转以继续阅读

Swift 里的 单件模式

在写代码的过程当中,我们总会遇到需要保证全局只有一个实例的时候,这个时候就要使用单件模式。

单件模式——它确保了一个类只有一个实例,并提供一个全局访问点。

那么怎么实现单件模式呢?我们来看看最经典的 Java 代码,该怎么实现这个 单件模式。

我们在网上随便搜索“java 单件模式”就能找到不少现成的代码段,这里是其中随机摘抄的一份:
[crayon-6904eb7fe87545322[……]

点击跳转以继续阅读

把 Ubuntu Server 滚动更新 到 16.04

我们用vps,一般来讲还是 Ubuntu 的好用,一方面是对新手来说更加友好,另一方面是一些常用的服务配置都可以一键安装。再加上牛逼的 ufw,真是完美。

不过,现在并不是所有的vps服务商都能够提供最新的 Ubuntu Server 16.04,真是遗憾。它有太多好处了,比如原生库就是php7,不再需要额外编译……

那么既然是linux,就一定可以直接把它升级到新版本——我记得Ubu[……]

点击跳转以继续阅读

请谨慎使用 C# 里的 var

我们都知道,比如 Swift 、 Python 里,都不需要特别的去声明一个变量的类型——它们虽然是类型安全的语言,却可以动态地在上下文中帮你推断变量的类型。

Python 不用你做什么,写一个名字就是默认声明了一个变量;而 Swift,则更接近我们的题目,它也使用了 var 。

如果你有过 Swift 的使用经验,再来使用 C#[……]

点击跳转以继续阅读

使用 Let’s Encrypt 在 VPS 上为 Nginx 配置 SSL

之前我们有讲过如何给网站开启全站 SSL 现在我们就一起来看看如何在 vps 上给 Nginx 开启 Let’s Encrypt 证书并且自动更新。

这篇文章中的内容较旧,关于 letsencrypt 的配置文章,我写了一篇新的,或许你可以参考看看:letsencrypt 工具改名 certbot

设置环境

首先,我们要准备一下安装环境,这次我使用的是 CentOS 6.7[……]

点击跳转以继续阅读

用 python 写一个域名白名单爬虫

前段时间我写过一篇文章,说是时候使用白名单来翻墙了,不过那个白名单已经过期好久,用起来不是那么顺畅了,后来我就夸下海口说:我要自己实现一个爬虫,来爬取中国的网站域名,好更新白名单。

好吧,总之这个爬虫是写好了然后上线爬取了一万多的,不过最后我找到了前人做的更好的方案,于是这个爬虫项目还是废弃了。总之,白名单更强大了,只是没有使用这个爬虫而已。

爬虫是用 Python 写的,并没有使用经[……]

点击跳转以继续阅读

在 Ubuntu 中搭建 Minecraft 服务器并挂载 Mod

最近室友在 Ubuntu 上跑 MC,我帮着搭了一下,但由于包是他自己改过的,所以可能具体的运行过程并不通用,但总体环境配置还是比较通用的。

准备环境

首先 MC 是跑在 java 环境下的,为了让它跑的更加顺畅,我们还是要在 Ubuntu 上安装甲骨文的 java 环境:

验证

安装好以后,可以使用这个命令来验证你的 j[……]

点击跳转以继续阅读

Python 字符串 与 字节数组 转换

在使用 Python 做网络编程的时候难免会遇到字符串与字节流的转换,这里我们记录以下几种常用的方法:

首先是字节数组转字符串,也就是str:

然后是字符串转为字节数组:

以上两种方法不论哪种都是可以的。[……]

点击跳转以继续阅读

使用 fail2ban 防止 Bind9 被用于 DNS 放大攻击

前言

我在阿里云搭建的自用 dnsmasq 服务器,用来做免污染的 DNS,最近由于公开了IP,果然就遭到了攻击——其实是被用于 DNS 放大攻击。

由于 dnsmasq 本身就没有设计为对外提供 DNS 服务,所以它对于安全方面的配置文件不是很多(根本没有!),但它的解析策略又很方便配置(比如中国DNS解析白名单等),所以我在原本的基础上,再加了一个 Bind9 作为前端来做安全。[……]

点击跳转以继续阅读

Mac 版迅雷悄悄收集用户 BT 种子

就在今天,苦等小半年的 Mac 版迅雷终于又开始更新了,出了个新版本——虽然没有新功能,但终于还是修复了拖动的时候窗口乱跑的 bug。

不过,也遇到了离线不能下载的问题。在帮助测试排错的同时,我发现了一些其他的事情:我按照要求使用迅雷自带debug工具生成统计信息的压缩包一共 70M 之大!

无论如何,这么多的日志文件——好吧,有过苹果当年 Mail.app 日志bug经验的我对于 G[……]

点击跳转以继续阅读

让 TextWrangler 一键优化 XML 文件格式

TextWrangler 是 Mac 上不可或缺的多功能文本编辑工具,内置优秀的代码高亮,还能支持正则表达式的搜索……总之,对于开发者来说,实在是人手必备。

不过,TextWrangler 对于 XML 就没有那么智能了——打开之后往往是长长的一行!

总之,解决办法很简单,我们给 TextWrangler 写一个脚本即可。

首先

打开 TextWrangler 新建一个空白的文档([……]

点击跳转以继续阅读

WordPress 评论回复邮件通知 优化

大多数情况下,我们习惯使用 Wordpress 自带的评论系统,尽管它不是那么地尽人意——毕竟,第三方的评论系统实在是让人难以接受。

第三方比较优秀的多说实在是太恶心了;而国外的几个不错的评论系统又很不方便中国使用,总的来说,还是 Wordpress 自带的评论系统最好用了。

那么,说起 Wordpress 自带的这个评论系统,可能邮件通知是它最大的特色了。虽然对外来说 Wordpress 不[……]

点击跳转以继续阅读

编程语言的强类型、弱类型

大多数情况下,人们用编程语言是否会隐式地转换数据类型来判断一门语言是否为弱类型语言,比如 C。

而实际上,对于除了比较经典的语言外,大部分人对于其他常见语言的强、弱类型是分不清楚的——或者说,是不一致的。因此总会有人来争论它。如果我们以开篇的概念来作为基础,那么矛盾就会显现:

比如 Pascal 曾计划作为强类型语言,但整体上却给类型系统引入了一个漏洞,所以技术上来讲它是弱类型的。[……]

点击跳转以继续阅读

让 Homebrew 走代理更新

之前我们说过,由于国内网络进一步恶劣,使用 brew 也要更换国内大学的镜像源,但是这样的方法治标不治本,更新是快了,可是下载还是一样。

结果就是导致大部分的更新都需要去下载源码然后本地编译,运气差一点的干脆源码也下载不下来,每次都要取消然后重试,不停地手工重复。

——如果能让终端命令走代理就好了。

是的,你可能想到了什么比如 proxychains-ng 这类的软件,其实不用,因为 b[……]

点击跳转以继续阅读

完成一幅画——坚持写完整的程序

写程序从来都不是一件容易的事情,往往你自己觉得很满意的作品,用户却说你的程序根本就是个半成品。你抓耳挠腮,却始终不得其解。

早在我念大学之前,我是一名艺术生,在北京学画。那时候,每天都要画很多的画,有人像有水粉色彩有速写,每次我坚挺三个小时就画不下去了,就坐着休息玩手机。老师就会走过来说:才三个小时,你这还没有画完呢,继续画。

我那时是不懂的,就很纳闷,明明该有的都有了,为什么就偏偏说我没[……]

点击跳转以继续阅读

武装你的 QuickLook ——我常用的几款 QuickLook 插件

使用 OSX 的朋友对于这个系统当中的 QuickLook 一定不会陌生,无论在哪里,几乎操作系统的全部地方,对于图片的内容,你都可以选中它,然后按下空格来快速查看这张图片是什么而不需要打开看图软件或者图片编辑器;或者一些文本的文档以及其他视频和音频——这实在是太方便了。

不过,这个 QuickLook 也不是那么万能,比如说它只能支持苹果预置的几种常见格式(纯文本文档,MP4 格式的视频,[……]

点击跳转以继续阅读

未来与虚拟现实

当一个人从现实世界进入到虚拟世界,为什么会沉浸,是基于什么,是虚拟世界的魅力,而人天生无法抵挡,从虚拟游戏迸发出虚拟现实,有更加强大的吸引力。它让我们走进更加无法预知的空间,人仿佛置身其中的真实性让人大呼痛快,尤其是向游戏加入虚拟现实技术,简直让人欲血喷张。但是对于该技术的实际应用大部分人还知之甚少,也许你认为虚拟现实就是带上“虚拟眼镜”在虚拟环境中走两圈,但该功能远比你想象的要厉害。

类似[……]

点击跳转以继续阅读