同步本地 / 服务器代码 - Git 篇

已经习惯用 Git 进行开发了,不得不说 Git 的确是个很好用的开发工具

有的时候经常会需要一边维护一个 Git 库,一边将代码部署到服务器上
例如团队共同进行开发,希望 commit 后自动部署到团队的测试服务器上,就可以采用下面的办法

首先先在服务器上创建一个 Git 库

1
git init --bare

然后打开 .git 文件夹,找到 hooks 文件夹,创建一个 post-receive 文件

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

#exec git update-server-info

cd /var/www/buildbot.ikk.me/snapshot/KanColleTranslation/

env -i git pull

然后给这个文件赋予执行权限即可

由于我提前在网站上 git clone 过,于是直接 Pull 就行了
由于这是开放的库,就没有限制 .git 文件夹,如果需要限制可以在上面加 rm 命令,或是 nginx 屏蔽
当然想简单的话个人推荐把 git pull 换成 cp 简单粗暴

给 Typecho 添加双因素认证支持

不得不说双因素认证的确是一种保护账号安全的有效方法,Google、GitHub和众多网站纷纷支持双因素认证保护账号,这次我把双因素认证移植到了 typecho 上

首先不得不说下,typecho 并没有给登录预留插件接口,只有登录成功和登录失败的处理接口,登陆界面也没有可以插入的地方,所以这回直接对 Typecho 源代码下手了

首先下载修改后的 Typecho 分支:
https://github.com/kookxiang/typecho

然后执行 SQL:

1
ALTER TABLE `typecho_users` ADD COLUMN `twoFactorAuthKey` varchar(18) NOT NULL;

(本来可以放到 Typecho 更新程序中自动执行的,考虑到日后升级问题,就没有放过去)

登录到后台,点击控制台 个人设置,最下方可以看到“双因素认证”,有随机生成的一组 Key,手动添加到 Google Authenticator 或者 Authy 中就可以使用了。当然也可以通过二维码方式添加,不过考虑到 Google API 在国内的可用率还是建议开着梯子访问。

添加到手机之后将当前验证码填写到确认框中点击启用即可启用。此后每次登录后台不论密码是否正确都将要求输入动态密码(增加暴力破解难度)

如需取消,可以登录后台输入动态密码取消。
如果无法登录后台,可以到数据库中清空对应用户的 twoFactorAuthKey 字段

就是这样~

干掉狗日的 XLServicePlatform

国产流氓软件真是让人受不了(毕竟狗改不了吃屎嘛)

迅雷这骚逼现在学会自动修复 XLServicePlatform 服务了,如果你关闭了这个服务,那么他就会悄悄设置成自动启动模式,没有任何提示

这回直接用 Windows 的权限控制来治一治这骚货

  1. 首先把你的迅雷退了
  2. 打开注册表编辑器,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\XLServicePlatform
  3. 右边修改 Start 为 4 (禁用)
  4. 修改 ImagePath,比如我用的是 Xunlei.com/AssHole,防止它自动启动
  5. 左边找到 Parameters 子项,删除 ServiceDll
  6. 心情好可以改改 Description,我就懒得写脏话了
  7. 右击 XLServicePlatform 选择 权限
  8. 依次点击 高级 添加 选择主体 高级... 立即查找 选择 Everyone,点击 确定*2
  9. 显示高级权限,勾选 删除 设置数值 创建子项,然后将上方类型修改为 拒绝,确定
  10. 点击 使用可从此对象继承的权限项目替换所有子对象的权限项目 确定*N

PS:Windows 会弹出关于权限的提示,无视就好
PSS:要是迅雷将来学会修改权限了,就干脆把整个项的所有权限都禁了,既然这么贱就大家都别都写了

让 Discuz 支持 MariaDB

昨晚把博客和论坛搬回国内了;博客在搬的过程中倒还挺轻松,只是 Discuz 搬迁后出现水土不服,提示

Illegal mix of collations (gbk chinese ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

搜索后大概意思是说数据库编码不对。
我就郁闷了,数据库是 GBK 的,字段是 GBK 的,程序也是 GBK 的,怎么会编码有问题呢?
绕过计划任务进入论坛,发现论坛中文全部乱码了。
难道是我导入数据的时候有问题?于是乎我又重新用 GB2312 导出一份,上传到服务器,依然不行。
反反复复折腾一个小时之后,一个偶然的机会下发现 Discuz 下数据库被设置为 lantin 编码,这和 phpmyadmin 看到的不一样啊!
然后又研究了许久 Discuz 的数据库类,明明有设置为 GBK 的,难道没设置成功?
在程序中加入 DB::query() 设置编码,发现居然可以了,这是什么道理??表示不服
难道用 mysql_query() 就不行么?可是 DB::query() 又是调用 mysql_query() 的啊
偶然调节代码顺序的时候,发现移动到 if($this->version() > ‘4.1’) 外侧竟然执行成功了
尼玛原来你才是罪魁祸首
可是这句话有问题么?输出下

10.0.9-MariaDB

尼玛我瞬间就明白了,这是一个字符串,“4.1”也是一个字符串,字符串比较是逐一比较各字符,先判断 1 < 4,然后得出 10.0.9-MariaDB < 4.1
我 QNMLGB,害我倒腾两个小时……

解决办法:
修改 version 方法,return ‘9.9.9’;

让 Discuz! 帖子列表支持倒序排序

Discuz! 虽然能够在后台修改帖子的排序方式,但却不能选择是倒序还是顺序排序。

为解决这个问题,可采用以下修改办法:
修改文件 source/module/forum/forum_forumdisplay.php,找到 457 行:

1
$_GET['ascdesc'] = isset($_G['cache']['forums'][$_G['fid']]['ascdesc']) ? $_G['cache']['forums'][$_G['fid']]['ascdesc'] : 'DESC';

在下方加入:

1
2
3
4
// Modified by kookxiang @ 2014-4-8 13:05:07
if($_GET['forceasc']) $_GET['ascdesc'] = 'ASC';
if($_GET['forcedesc']) $_GET['ascdesc'] = 'DESC';
// Ending of modification

这样便能通过 URL 参数 forceasc 和 forcedesc 控制排序了

离开 WiFi 范围自动禁用 WiFi

学生党表示宿舍长期开着WiFi,出去上课的时候总是不记得关。

本着能省一点是一点的精神,希望离开WiFi范围的时候能自动关掉,于是自己动手写了个。

程序本身不占用任何资源,没有后台进程。自动注册一个网络状态监听器,当WiFi断开一段时间之后关闭WiFi。

值得注意的是,由于 Android 4.0 以上版本的限制,要注册监听器必须至少启动过一次程序,所以装好后需要手动点一下图标
启动后程序自动隐藏程序图标(因为你点进去也没用 →_→)

之后可能会考虑加个连接充电器的时候自动扫描WiFi,放在无线充电板上爽歪歪(笑

下载在这里:KK Auto Wifi.apk

在 Ryzen 平台上安装 macOS High Sierra

写在前面:

千万别买 HP 的笔记本了……
真把自己当老大了?还锁 BIOS……
就那几个选项你也好意思叫做BIOS?

如何修改硬盘工作模式:

  1. 确保已经开启 UEFI 模式

  2. 准备一个 FAT32 格式的 U 盘

  3. 下载并解压 BOOTX64.zip,扔到 U 盘根目录和 /EFI/BOOT/

  4. 重启电脑,按 F9 选 U 盘启动

  5. 键入命令:

    1
    setup_var 0x39 0x01
  6. Ctrl Alt Del 键重启,工作模式切换完毕

附各模式和值的对照表:

command offset value
setup_var 0x39 0x00 IDE 兼容模式
setup_var 0x39 0x01 AHCI 模式
setup_var 0x39 0x02 RAID 模式

将 QoS“限制可保留带宽”设置为 0% 真的能为网络提速吗?

很多关于系统优化的文章都提到过 QoS “限制可保留带宽”这个设置项。
系统的默认值是 20%,很多人将它修改为 0%,认为这能起到提升带宽的作用,可是这种修改方法真的有效吗?

我们可以在微软的这篇文章中找到关于这项功能的说明:

像在 Windows 2000 中一样,程序可以通过 Windows XP 中的 QoS API 利用 QoS。所有程序可以共享百分之百的网络带宽,除非有某一程序特别要求带宽优先权。其他程序也可以使用此“保留”的带宽,但请求此带宽的程序正在发送数据时除外。默认情况下,程序在终端计算机的每一个接口上可以预留基本链接速度的 20% 的聚合带宽。如果保留带宽的程序发送的数据量没有完全用完带宽,则保留带宽的未用部分可用于同一主机上的其他数据流。

显然,修改此设定完全不可能实现网络加速,反倒会使某些程序无法获得较高的网络优先级。

所以在这里建议大家不要将这个数值修改为 0%,可以设置为 10% 或是 5%(具体根据你的网络带宽而定),或是直接使用默认的 20%。这个选项对提高网络带宽真的没啥用……

Typecho 修改固定链接后的SEO技巧

前两天将博客固定链接中最后的那个 id 换成了文章的缩略名,这下可惨了,搜索引擎们都得重新抓取一遍,我可懒得等他,当然,也怕给谷歌百度神马的降权了,于是有了这篇文章:

首先我的思路是通过 PHP 插入一段代码,识别到链接中最后一个参数为数字 id 则自动到数据库中查询并 301 到新地址。

于是问了问 Google 大哥,PHP 怎么获得伪静态的地址,这点问题对谷歌来说毫无压力——$_SERVER['ORIG_PATH_INFO']——就是他,然后便轮到正则了,由于是数字,这部分也很简单:.+\/([0-9]+)\.html

完成了,接下来的步骤便是用 PHP 将这堆东西整理起来:

Read more