半吊子全栈开发者的日常

为 Web 开发定制 Sublime Text 3

Sublime Text 是非常强大的编辑器,插件功能更是让其拥有无限可能。我用 Sublime 也已经快八个月了,我的 Sublime 也从原来连 Package Control 也没有的纯原版到现在的 Web 开发神器,特此安利一下。

Sublime Predawn Screenshot

主题推荐

Predawn,就是我上面的截图所使用的主题,也提供 Atom 版。

Flatland,也是扁平风,挺不错的。还有 Monokai 配色版。

插件推荐

Alignment,代码对齐,通常用于一大块变量赋值的时候的等号对齐,强迫症福音;

All Autocompelete,让 Sublime 足以媲美 IDE 的重要插件 —— 项目内代码提示,可以自动补全其他打开的标签页中出现过的函数/变量名

> READ MORE...

Android 6.0 刷入 Gapps 后出现 “设置向导” 已停止运行 的解决方法

这次给我的 MI3 刷 CM13 的时候,一切都很顺利,应用数据也都是保存了下来。但是由于清空了 /system 所以之前安装的 Google Play 服务也需要重新安装了。

在刷入 OpenGapps 的时候,却出现了如标题所示的情况:

setup wizard stopped

无限弹窗,即时点了确定也会马上再弹一个,完全无法使用。

那么要怎么解决呢?我去网上搜了一下,我也不是第一个 Android 6.0 刷 GAPPS 碰到这种情况的人了。但是由于关键词的关系害我找了很久,在此记录一下,希望可以帮到其他人。

解决方法来自:机锋论坛,有删改。

> READ MORE...

PHP 命名空间自动加载与实现

Blessing Skin Server 也经过蛮长时间的开发了,但是类文件都只是简单的堆放在同一个文件夹中。虽然我知道有命名空间这玩意,但是总共就几个类,也不是很有必要。

然而在上周加入了数据对接之后,includes 文件夹就开始爆满了:

includes dir

这尼玛还怎么忍?必须命名空间走起啊。

然而我只是知道有这玩意,在框架里也用过,但是并不知道如何实现对其的自动加载。

于是我去网上看了一些自动加载的实例,然后自己写了一个自动加载。说实话刚看到的时候还是有点迷的,所以在这里记录一下。由于我的项目是用类名与文件名相同的方式来组织存储的,所以就懒得管 PSR-4 啦(笑)。

> READ MORE...

Eloquent ORM Connection 无法自定义 MySQL 连接端口的解决办法

这是今天我朋友遇到的问题,网上没有啥解决方法,特此记录。

朋友的 MySQL 运行在 3307 端口,然而他的框架配置文件中没有 Port 的选项(好吧我说的就是 ss-panel),如果在 db_host 中填写 localhost:Port 这样的格式的话就会报 SQLSTATE Unknown MySQL server host 'localhost:3307' 这样的错误。

那么要怎么解决呢?

首先要找到 .env 被解析的地方,以 ss-panel 为例是在 /app/Services/Config.php 中:

> READ MORE...

开发 Blessing Skin Server 所学到的

开发这个皮肤站程序也有一段时间了,写篇文章稍微总结一下。挺久以前的草稿了,可能有些过时内容。


起初接触到 PHP 是在搭建博客的时候,经常因为某种需求而需要对 WordPress 做一些定制。也就是那个时候我写出了人生中 第一行 PHP 代码

当时对 PHP 也没太大感觉,因为当时也没接触过 Web 开发。真正开始使用 PHP,是萌发想做一个皮肤站的念头后。

在开发语言中,我选择了 PHP 而不是喜欢的 Python。一是因为作为模板语言的PHP天生适合写 web 项目,二也是为了能涨点姿势。

因为基础还算过得去,我也没必要去看什么 PHP 新手入门教程,上手就直接开始写了。依样画葫芦撸了个基本架构就开始写前端逻辑。

> READ MORE...

新年快乐!

祝诸君阖家欢乐,万事如意。

为 Ghost 博客添加页面访问计数器

博客搬迁到 Ghost 后,原来的 Post Views 无法显示一直是窝的一大心病。

众所周知 Ghost 是使用模板语言 handlebars 来开发主题的,这也就造成了主题开发者们很难输出一些动态内容,而只能使用其内置的助手函数输出有限的可变内容。

总不能就这样下去吧,于是窝经过了一番搜索,找到了这个东西 —— 不算子

看来困扰于静态页面访问计数的不止窝一个啊。然而看了一下,不算子并不提供可调用的 API,也就是说窝没办法在文章分页上显示每篇文章的点击数了。

这怎么行?于是窝动了自己写计数服务的念头。

> READ MORE...

VPS 被 DDoS 后与 ConoHa 客服的邮件记录

挺醉的。翻译如下:


(お客様センター) - 2016/01/23 22:21

ご担当者 様

いつもご利用いただき、まことにありがとうございます。

ConoHa お客様センターです。

突然のご連絡失礼いたします。

このたびお客様にご利用いただいておりますVPSに対して、
外部からの不正なトラフィック(DDOS攻撃)を検知いたしました。

IPv4アドレス :157.7.108.189

大変恐縮ではございますが、他のご利用者様への影響が懸念される
状況となっておりましたので、該当VPSに対する外部からの通信を
すべてDropするようにさせていただきました。

サービスの安定運用上、何卒ご了承くださいますよう、お願い
申しあげます。

今後ともConoHaをよろしくお願いいたします。

(客服中心) - 2016/01/23 22:21

尊敬的用户

非常感谢您一直以来的使用,这里是 ConoHa 客服中心。

突然的通知失礼了。

这次对于我们为您提供的 VPS,发现了外来的异常流量(DDOS攻击)。

IPv4 地址 :157.7.108.189

虽然很过意不去,但是由于不知道是否会对其他使用者造成影响,所以我们将被攻击的 VPS 的外部通信全部 Drop 了。

为了对服务的稳定而进行的操作,敬请谅解。

今后也请多多关照 ConoHa。

> READ MORE...

Hello Ghost, goodbye Wordpress

虽然以前就一直想要弃用 WordPress 了,但是由于没有时间(懒) ,而且也是对这个完善的 CMS 有了感情。

然而在 ConoHa 的 VPS 被 DDoS 而搬迁至 DigitalOcean 后,我奇怪的发现 WordPress 的响应速度慢了很多。TTFB 甚至达到了史无前例的 16s。

对于这种情况,我第一个想到的就是数据库的锅。然而看了慢查询日志,导出 wp query 却发现问题不在数据库查询上。

后来又使用了排除大法,最终将问题定位于我所使用的 Seventeen 主题上。

看来是主题中做了什么耗费大量 CPU 时间的事件,导致前后台响应慢成狗(默认主题没事)。

要知道同样内存,ConoHa 和 DigitalOcean 的 CPU 配置可不只差了一点半点。这也是我最初选择 ConoHa 的原因之一。

然而发生了这档子事,反正我是再也不会去用 ConoHa 了。

那么怎么办呢?活人总不能让尿憋死吧。

> READ MORE...

通过 Socks5 代理进行 SSH 连接

为什么要写这个呢?

这次 ConoHa 把我被 DDoS 的 VPS 所有对外连接 DROP 了。最开始是所有的连接都 DROP,只有控制台的 VNC 才连的上。连上以后只能 Ping 到内网。

所幸后来放宽了 DROP,日本的 IP 可以访问了。于是借用了同学的搭建于 ConoHa 的 Shadowsocks,准备把数据备份下来(ConoHa 删除被 D 主机不是一次两次了)。

那么要怎么样才能通过代理进行 SSH 连接呢?窝起先以为是像 curl 那样提供了参数,不曾想 man ssh 未果,只好 Google 解决方法。不过大部分都是搜到了 SSH 代理的教程,找了挺久的,为了让后来人少走弯路,遂记录一下。

下面介绍的是 connect 的使用方法,Corkscrew 可以看这篇

0x01 下载并安装 connect

这是 connect 的 Bitbucket 项目地址

如果你是 Linux/Mac 用户,克隆项目到本地(然而窝不用 Mercurial),编译安装:

$ hg clone https://bitbucket.org/gotoh/connect 
$ cd connect 
$ make && make install

也可以:

$ gcc connect.c -o connect 
$ cp connect /usr/local/bin

如果你是 Windows 下的 Cygwin 用户,直接下载发行的二进制文件C:/Windows 中即可

0x02 配置 SSH

如果你使用的是 socks5 代理(Shadowsocks),添加这两行到 ~/.ssh/config

Host * 
    ProxyCommand connect -H 127.0.0.1:1080 %h %p

如果你是使用 HTTP 代理,将 -H 改为 -S。

0x03 连接

success

成功


装逼地使用了十六进制的标题序号