分类: 技术相关

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

来帝都租的第一个单间里面就有电视,虽然很老的 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。

拆解阴阳师安卓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等等,来做各种黑科技。

介绍下搭建这个博客遇到的坑

从决定开始重新搭个博客一直到这玩意上线,前前后后花了我大概两个多月的时间。虽然中间还有例如做 mai 硬盘和其他私活,但是我还是觉得时间有点太久了。整理的概要文档都快忘光了,趁彻底忘记自己写的是什么之前把一些坑记录下。

1、vps 的选择

首先就是服务器的选择了。因为个人使用,加上对网络要求比较高,因此我一开始就把目标放在了千元每年左右的vps上。首先一个大坑就是没有选择国内相对稳定的免备案vps,先后尝试了 linode、Diahosting、OneAsia等相对还稍微比较像样的vps,但是无一不在三天后获得gfw认证。尤其是linode,基本开半个小时ssh都被墙掉了。最后还是经过朋友推荐来 aws 开了一年免费套餐,反正一年后正常续费就是了。

这个 aws 偶尔也是会有墙掉的情况,具体症状是我昨天部署完 wordpress 之后,安装程序会导致与服务器的ssl连接莫名其妙断开,之后就连不上了。算了,目前还可以,凑合用。

对了,我选择的是韩国机房。

2、nginx的编译

vps开好了之后,就是环境的搭建了。刚开始踩的大坑是vps内存不够2G是编译不了 mysql 的。装了一堆东西编了一堆垃圾之后,我重新开了新的镜像从零开始。

首先是 nginx ,我参考的编译参数是来自于这个网页的说明:https://my.oschina.net/liucao/blog/470241 ,为了防止原网页挂掉,我把网页的原文粘在下面。

$ ./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_spdy_module \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

第一个坑就来自于编译参数,我现在使用的 nginx 已经是1.11.3,其中的-with-http_ssl_module已经变成了--with-http_v2_module 。 这也证明httpv2正式成为一个新的标准了。

3、php7

选择php7的原因是它真的有了非常大的提升。

之前编译 mysql 给我留下的阴影实在太大了,我转而选择为 yum 增加源,使用 yum 进行安装。

主要参考的文档是:http://blog.csdn.net/dxywx/article/details/50609137

这里有个文字的坑,就是这个博主的代码段里面有很多特殊字符被转成了全角,别的还好。

然后关于源本身和其他插件的安装,需要把 yum install php-**** ,全部都替换成 yum install php70w-**** 。 别的没有什么特别需要注意的了。

4、分区挂载

aws 的定制 centos 确实针对自身做了非常多的优化,但是有些优化也确实让人很摸不着头脑。比如外挂的储存卷,本意的设计是方便快速迁移,但是我一开始真的对着文档蒙逼了半天。特别大的坑也没有,就是默认分区格式是 ext4 ,fstab需要特别指定一下。

5、安全区

我也不知道是不是我遇到 bug 了,之前明明给这台 vpc 开放了80 和 443 端口,但是就是连不上。删掉安全区重新分配后就好了。

6、SSL证书

首先是 openssl 请务必升级一下。aws 带的这个还是1.0.1e,这是我前东家都放弃的版本,包含了完整的两个心跳漏洞。加个源1分钟就更新好了,别省这点事了。

然后说说证书,我选择的 SSL 证书来自ssls.com 。这家是以出售廉价 SSL 证书著名的。我看中的是它签发的根机构是 COMODO 。价格也还好,我分别为woodu.me git.woodu.me(准备装个gitlab)购买了证书,一共花了大概200多块的样子,各三年。因此我觉得价格还可以接受。

购买的过程中基本没有什么要注意的,只有一点,域名认证的时候,推荐选择的是基于域名管理邮箱的邮箱认证,这个速度很快,基本确认了邮件证书就可以下来。我之前主站选择了放置文件进行 check,结果因为编码问题文件不符,还专门去联系了客服帮我手动通过。

(更多…)