作者: Yang Woodu

开始一项浩大的历史工程

PokeTB.com 这个站,虽然当年没出什么正儿八经的力,好歹也是自己某些青春的见证了。
从一开始的 Discuz 2.5F 到后面正式上线的 4.1F 又到后面的 6.0Lite ,都是多谢小火( @lyzzzz )的努力。
还有 @youd 为 PTB 开发的宠物系统 以及撑起了改版一片天的花花(liuyanghejerry)。
至于我,普通的扫地工而已。

现在来看,最后一次对 PTB 的 Discuz 进行加固和升级应该是 2010 年前后的事情了。用现在的目光来看 PTB 整个的架构,可能会被很多人笑话。

Discuz 6.0 Lite GBK编码 (基于Discuz 6.0.0 和 Discuz 6.0.1F未正式发布版 + Ucenter v1)
若干自制插件
Ucenter v1

有问题就慢慢解吧。今天为 PTB 全站搭好了 git 仓库,第一步是清理整站代码。最早在梦游的时候,因为大家上网都不方便,我们自己在网站中埋了很多 PHP 木马之类的代码便于我们通过手机远程管理。首先要做的就是把这些后门清理掉,然后对代码进行梳理,格式化。GBK 编码转 UTF-8 我已经不奢望了,能让代码可用就可以了。
第二步的计划是让整站继续可用。目前发现的线上版本还有一些不能用的地方,比如PokeTB图鉴。这些也要慢慢的整理,修复。
第三步是为全站开一下https。对于一个十年代码还在跑的老站(主要原因是用了discuz这种中国特色的代码的站)将会是一个很大的挑战。

好了。列好了,慢慢填。

将博客的静态资源迁移到了七牛

最近实在是比较忙。高估了自己的能力。
现在主要是编码速度实在不尽如人意。以后针对这一点好好做一下训练吧。

最近抽空把博客速度慢的问题好好解决了一下。主要使用七牛云来作为主要的托管媒介。
细分一下这个需求的话分为如下两点:
1、域名未备案导致的解析速度缓慢,由于页面内存在比较多的本地资源,导致加载速度感人,手机上的表现是白屏,电脑上也时不时抽风。
2、图片资源使用七牛默认域名(测试域名),导致新版Chrome认为资源不安全,拒绝加载。
3、JS类库来自本地或海外cdn,速度感人。

于是花了大概十分钟的时间解决了一下这个问题。不得不说,七牛的工具虽然做的比较烂,但是能用。

现将步骤记录在这里。

1、WP侧安装插件七牛云储存
插件链接:https://wordpress.org/plugins/wpjam-qiniu/
也可以直接在后台搜索安装。
正常配置,填写AK和SK, 同时为你的储存区域分配一个SSL域名(这是要收钱的,不过4毛钱1G也就那样了吧),填写为你的加速域名

2、在服务器上下载七牛迁移工具(应该是同步工具)
https://qiniu.kf5.com/hc/kb/article/68954/
按照页面说明初始化,并将wp-contents和wp-include目录中的静态资源(css、js)按照路径,以分别的目录前缀(wp-contents/和wp-include/)上传到七牛云的储存空间。

然后就可以正常的享受这个加速了。

帝都日常(二)

1、Macbook Late 2016款
上周末去三里屯找花花浪的时候顺便去苹果店里体验了一把。眼睛看到的变化是拼音候选字在 touch bar 上。新的所谓蝶式键盘的手感……怎么说呢,有点像街机上用的电容弹片键盘。当然,你 Macbook 从来不讨论手感,逼格在那里呢。
顺带一提,我还是接着用 Thinkpad 吧,反正家里有台式机。

2、PageOne
这其实算是个意识吧,人挪活真的不无道理。虽然连着跑了两家 Pageone 之后,我发现大陆版的这家书店真的没法找到我想找的书,不过能知道家门口有这种东西,也足够了。

3、Steam
买了显卡自然是要开 Steam 坑了。目前比较常玩的两个游戏是 Sonic All Stars Racing Transform (还没有买dlc,游戏好难) 和 ICEY 。
对了,走过路过加个好友吧。
http://steamcommunity.com/id/ptbwoodu/

4、抹茶 Kitkat
首先感谢潘先生( @norinmura )在百忙学业之中还抽空来帝都聚一下,并带来了代购了半年的抹茶 Kitkat 。

其次,今天碰到一个很好玩的淘宝卖家。似乎是卖超量了又不愿意下架。在拍下后以每秒两次的速度修改商品价格导致不能完成付款,然后瞬间关闭交易。

5、搬砖
周末放空了一下,最近状态实在有点不太对。晚上稍微加了一下班就这个点了。明天继续努力吧。

帝都安定日常记(一)·客厅瘦客户端选择

来帝都租的第一个单间里面就有电视,虽然很老的 sharp ,也是可以好好利用起来的。
刚刚好,之前在古都遗留下来的一个挂机PC,可以兼任这个多媒体终端的任务。

在古都的时候,受条件所限,这个 Thin PC 主要的任务是挂机和提供简易 NAS 。软件和硬件的选择是这样的:


硬件:
机箱:撒哈拉 M1
电源:淘宝工包FSP 无风扇 SFX电源 配合淘宝SFX-ATX电源挡板
主板/CPU:翔升ASL J1900-HK
内存:威刚 4G 1333
硬盘: Sandisk X110 128G SSD (Primary)
      2 x ST 2T仓库盘(均拆自3.5寸外置硬盘盘芯)
软件:
Windows 7 Ultimate
uTorrent v3
Teamviewer

这一套在挂机上是没有什么问题的,还可以跑个简易的 http 服务器之类的玩个花样。但是,这个板子一直有个问题,就是对非 UEFI 系统不太友好。毕竟是个新 Skylake 架构的平台。

于是这次有一个新的需求,有几个老问题需要解决。


需求
1)增加稳定的输出需求,主板上自带的 HDMI 1.4 接口可以解决,输入问题可以通过无线键鼠解决。
问题
1)Win7->Win10
2)SSD 太大,浪费。
3)机箱过大,太轻,共振严重

老规矩,先上配置单。


硬件:
机箱:乔斯伯 C3
电源:鑫谷GP 600P 白金版(京东换新新品),本来原来电源可以接着用的。
主板/CPU:翔升ASL J1900-HK
内存:威刚 4G 1333
硬盘: Intel 330 40G SSD (Jubeat街机拆机品)
      1 x ST 2T仓库盘(不再需要那么大的空间)
软件:
Windows 10 Pro
uTorrent v3
Teamviewer
播放器Klite Codec Pack Standard with MPC

总体来看还是很满意的,不过还是有几个问题
1)没有了主板挡板,看上去好丑=。=
2)还是比书架宽了一点点。
但是这个机箱完全解决了硬盘共振的问题,40G SSD也满足了让机械硬盘在不工作的时候认真休息的需求。效果不错。

【相关链接】
主板评测:http://diy.pconline.com.cn/570/5707109.html
相关照片:


Github是万能的

起因是这样的。
早上 TK 教主转发了一个性感玉米的微博
tk-weibo

然后后面又转发了同链大神的这样一条微博
weibo-2

截至发文,这个已经在 github 上搜不到了,但是下面贴个截图证明我曾经搜到过:)

https://github.com/search?l=Java&q=%22api.id98.cn%22&ref=searchresults&type=Code&utf8=%E2%9C%93

github-search

我是觉得,github这个东西固然好,但是拿着公司的代码分享就不太合适了。

更换了一个页面里面的cdn源

昨晚顺手把文章发到了朋友圈里,朋友过来跟我说,手机上根本打不开。
看了下有可能导致速度很慢的原因,就只剩 Google 了。
reCaptcha 是 lazyload ,应该不会导致这个问题,最多只是无法评论。
那就是字体了。
翻看这个主题的源码,找到了罪魁祸首。
国内 cdn 找了好几家,看了下还是贵科大的比较叼。
USTC Blog强制对 Google 字体加速/

按照这个文章里面说的把字体的cdn改换过去,虽然速度一般,至少不会白屏了。

---------
更新:
https://gist.github.com/gaoyifan/680da074330d2c499d6b
按照官方博客里面的配置,发现在新版的 nginx 里面,关键字已经被修改为 sub_filter ,不再是复数形式。
修改后恢复了正常。

---------
更新:中科大源还是挂了。
换了360的公共源,直接修改了主题的CSS。

朋友们二三事

脑子里有几件一直记到现在的事情,和几群不同的朋友发生的。记一下。

08年的时候我还在读初三。那时候学校还不让带手机。
但是我跟班主任关系也不错,家里父母又都回家比较晚,在家门口上学的我出于联络方便的目的还是有了手机。
第一个手机印象还是很深的,诺记1116。
日子肯定不会错,2008年5月12号,汶川地震。当时我有订阅移动的短信新闻。下午放学后很久了,短信推到手机上,四川发生大地震。当时还没走,应该是马上要会考了,留下来做了点微小的工作(哪里不对)。
紧张的告诉当时一起做事情的朋友,结果他们一脸不相信的样子。大概是因为大家都没有经历过大型地震,觉得离自己很远。
结果,汶川地震,全国震惊。

还是08年。我得承认08年真的给我带来的影响很大。
八月中旬入学高中,因为自己本来就比较水的成绩心情不是很好。刚开学各种活动,刚好碰上了奥运会开幕式。
其实第一个手机用了没多久,刚入学就换了一个彩屏的三星手机。那个时候流量真的贵,10块钱40M,大家的标配浏览器还是Opera Mini,也没有Wifi,WAPI更是云里雾里的东西。
好在那个年代墙还没有这么高,有些不该看到的新闻还是可以很轻松看到的。
记得那时候国家刚出规定,说演出业假唱属于违法行为。
而08年奥运会开幕式,唱歌的不是妙可,演员是妙可。
那个年代大家也都还算单纯,甚至有点盲目地爱国。某天早上睡起觉来看到这条新闻,宿舍里面就爆发出来很严重的争吵。毕竟奥运会这种东西是非常需要政治正确的。
大家当然都不信。
后来,大家也就慢慢接受了。

高考完之后,我用了一个夏天的时间尝试做了一个不太成熟的实验。当然,肯定是没有成功的。
那个年代国内的民间配音还是一滩散沙。白客还在cucn201给搞笑漫画日和配音,国内所谓的中文配音基本都是现在网络直播的这种质量。
我把家里车库大概收拾了一下,想要尝试能不能自己也搞一个工作室。拉了一帮朋友,陪我跳这个坑。
最后的成品大概只有这个?
http://player.youku.com/player.php/sid/XMjgyNzc0NTY4/v.swf

顺带出了一个去人声的第一话,还有一个MAD。
现在想起来这整件事的策划就是不对的,整个导演的流程也都是错的。
其实更重要的错误是硬件完全跟不上,导致素材管理很乱,也没有办法好好的筛选,软件也不会用。

何况到了大一,直接把最重要的一块数据硬盘摔坏了,整个高中包括之前的重要的记忆全都毁于一旦。那块硬盘对我的重要程度太高了,以至于后来虽然赶上泰国洪水退回了当时购买价格接近3倍的维修款,我也依旧高兴不起来。

很多之前做的东西,只有优酷上有成品了……。

这也导致了我现在疯狂的屯硬盘。

人啊,果然还是一个慢慢成长的生物,之前经历的每一件事情都会对自己产生深远的影响啊。

拆解阴阳师安卓apk

不得不说阴阳师真的是个肝到死的游戏。
最近在升6星。在有全程白蛋的情况下,依旧攒狗粮攒到死。

1个6星=……=360个2星,不算经验……。
哭了。

附上触乐视频,各位且看一乐。

(因为渣浪没有给video.weibo.com开https支持,因此没法直接嵌入到这个页面里面)
http://video.weibo.com/player/1034:7755106f8dfb556c1e7f2d40b0d52f31/v.swf

今天的正题是如何拆解《阴阳师》的安卓apk。

为了研究一下素材,在红米里面装了一下。不得不说这玩意的优化真是……(虽然红米也很烂就是了),完全卡的跑不动。

我已经事先刷过了Recovery,进到Recovery里面通过USB链接到电脑拷贝出阴阳师全部文件。

这部分参考的帖子主要是:http://nga.178.com/read.php?tid=10187005&rand=993

路径基本没差,小米版的路径后面有个.mi,我用的是网易官方版,所以没有太大区别。

使用安卓安装数据的原因,是因为安装包拆出来的数据包(*.npk)是分段的,这个不太好解决,还是需要程序自己去解压合并。

这时候,我们需要一个这样的程序:

QuickBMS
by Luigi Auriemma
e-mail: me@aluigi.org
web: aluigi.org
home: http://quickbms.aluigi.org
help: http://zenhax.com

官网下载在上面。

配合这样一个脚本,脚本来自于某个技术论坛里解压网易另外一个使用 Neox 引擎的游戏所给出的脚本。


# NXPK (script 0.1.1)
# script for QuickBMS http://quickbms.aluigi.org

idstring "NXPK"
get FILES long
get OFFSET asize
xmath OFFSET "OFFSET - (FILES * 0x1c)"
goto OFFSET
for i = 0 < FILES
    get NAME_CRC long
    get OFFSET long
    get ZSIZE long
    get SIZE long
    get ZCRC long
    get CRC long
    get FLAGS long
    if FLAGS == 2
        comtype lz4
    else    # 0
        comtype zlib
    endif
    if SIZE == ZSIZE
        log "" OFFSET SIZE
    else
        clog "" OFFSET ZSIZE SIZE
    endif
next i   

将res.npk使用这个脚本即可解压。

可以看出,这个包基本就是对已有压缩包进行了额外的封包。
还挺好玩的。

读源码

http://www.yiichina.com/doc/guide/2.0/structure-controllers

在“控制器ID”一节中这一特性被通过命名规范的方式规定。
错怪yii了。

还是要多看官网。

==16:51更新,以上为更新全文

最近由于工作(因为业余依旧沉迷阴阳师),开始正式研究php7和yii2。
今天试图通过pretty-url将所有/api/v1/action的请求转发到/apiv1下面来进行处理。
于是配置如下:

'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => false,
            'showScriptName' => false,
            'rules' => array('api/v1/' => 'apiv1/', '' => 'site/index','/'=>'/',)
        ],

然后,在apiv1的controller里面写了这样一个函数:

public function actionFinanceInfo()
    {
        $userObj = new \app\models\User();
        return $userObj::find()->where(['id' => 1])
            ->one();
    }

理论上是没问题的,但是死活就是404。无奈中翻看yii2的源码,发现路由这块的实现是:

public function createAction($id)
    {
        if ($id === '') {
            $id = $this->defaultAction;
        }
        $actionMap = $this->actions();
        if (isset($actionMap[$id])) {
            return Yii::createObject($actionMap[$id], [$id, $this]);
        } elseif (preg_match('/^[a-z0-9\\-_]+$/', $id) && strpos($id, '--') === false && trim($id, '-') === $id) {
            $methodName = 'action' . str_replace(' ', '', ucwords(implode(' ', explode('-', $id))));
            if (method_exists($this, $methodName)) {
                $method = new \ReflectionMethod($this, $methodName);
                if ($method->isPublic() && $method->getName() === $methodName) {
                    return new InlineAction($id, $this, $methodName);
                }
            }
        }

        return null;
    }

竟然是一个将驼峰处理成连字符的函数。文档里貌似就没提到这一条啊。坑。

多看官网多读书

是的,依旧沉迷阴阳师。因此没有好好写文章。周末找个时间干了吧。
最近还在做一个官网,反正事儿也不是没有。
webpack 的 html-loader 是可以直接代替 apache/nginx 进行 server-side-include 的,虽然从原理上看似乎不是一个事儿。

https://github.com/webpack/html-loader

配置webpack的配置文件中,关于html的加载项:

{test: /\.html$/, loader: 'html?interpolate'},

即可。

===更新===

早上话说了一半。
完成上面的工作之后,在页面里面即可使用

${require('./tmpl/footer.tmpl.html')}

这样的语法来引用html模板了。这个 require 可以使用已有的 loader 来载入各种神奇的东西,比如 css js等等,来做各种黑科技。