Node – ntzyz's blog https://archive.ntzyz.io Mon, 18 Sep 2017 12:09:47 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.8 使用 UglifyJS 压缩 JavaScript 文件 https://archive.ntzyz.io/2017/01/24/uglifyjs-is-awesome/ https://archive.ntzyz.io/2017/01/24/uglifyjs-is-awesome/#respond Tue, 24 Jan 2017 04:50:13 +0000 https://ntzyz.io/?p=776 继续阅读使用 UglifyJS 压缩 JavaScript 文件]]> p.indent { text-indent: 2em }

UglifyJS 是一个著名的 JavaScript 源码处理工具,可以用于压缩或是格式化 JavaScript 代码。同时他也是 JavaScript 编写,所以只要有 Node.js 就能很方便的使用。其项目主页:https://github.com/mishoo/UglifyJS

安装方法很简单, 假定你已经安装了 node 和 npm,你只需要执行以下命令即可完成:

npm install -g uglify-js

使用也是很简单的,我就举个压缩代码的例子吧,假设我们一个 script.js,需要进行压缩,可以执行以下命令:

uglifyjs script.js -o script.min.js

以上会对代码进行压缩,并保存为 script.min.js。值得注意的是这个压缩方法不会修改变量名,如果需要更彻底的压缩,则可以:

uglifyjs script.js -m -o script.min.js

实际效果的话,cnVintage 所使用的 flarum 中有一个 1.4MB 大小的 forum-7a006006.js,如果对其进行压缩能将大小缩减至 824K;如果对其使用更彻底的压缩,则能缩减至 611K,效果十分可观。

]]>
https://archive.ntzyz.io/2017/01/24/uglifyjs-is-awesome/feed/ 0
没事儿干写了个新的 Blog 框架 https://archive.ntzyz.io/2016/07/30/the-new-blog-project/ https://archive.ntzyz.io/2016/07/30/the-new-blog-project/#comments Fri, 29 Jul 2016 16:02:00 +0000 https://blog.ntzyz.io/?p=691 继续阅读没事儿干写了个新的 Blog 框架]]> p.indent { text-indent: 2em; }

JavaScript 自己也看了一段时间了,Node.js 相关的内容也随手糊过一点了,但是总是没有一个像样的作品,这样是不行的。

所以就必须想点办法,搞个大新闻,把脑子里的知识运用一番,顺带学学新的姿势,提高自己的水平。不编了好吧我承认是自己在家无聊了QAQ

在基佬集线器上逛逛的话,会发现很多人都自己撸过一个简单的 Blog 框架,毕竟这种简单的网页应用逻辑简单,同时实现的参考啊也很多,比如 PHP 就有 WordPress, Node.js 就有 Hexo,等等。所以我也就学着做个玩玩咯~

花了大概一天吧,撸出了现在的这个最简单的 Blog Framework,虽然还没想到取什么名字。前段框架使用了 Vue.js,并且才用了 Materialize 提供的部分样式和组件。后端使用了 Express.js,数据存储则按照国际惯例选择了 MySQL(MariaDB)。全站数据使用 Ajax 获得,并完全在浏览器端渲染,同时除了博客名称以外没有任何触发刷新的组件。整体风格自认为是极简风格,实际上是自己没本事搞出什么好看的设计。

现在这个框架准确的说还在开发阶段,需要解决的问题是评论以及管理页面。当然部分代码需要优化优化,写得实在是太随性了。

样例页面可以在这里查看,里面的内容大多是从这里搬运过去的。源代码则可以前往GitHub来查看(顺便请允许我无耻的求个 Star QwQ)。

卧槽我这个 Framework 国内访问速度真他喵快啊

]]>
https://archive.ntzyz.io/2016/07/30/the-new-blog-project/feed/ 3
[Node.js] 学校网关登陆脚本 https://archive.ntzyz.io/2016/06/05/use-nodejs-to-finish-gateway-authorization/ https://archive.ntzyz.io/2016/06/05/use-nodejs-to-finish-gateway-authorization/#respond Sun, 05 Jun 2016 12:21:10 +0000 https://blog.dimension.moe/?p=507 继续阅读[Node.js] 学校网关登陆脚本]]> .indent {text-indent: 2em;margin-top: 0.75em; margin-bottom: 0.75em;}

虽然现在我在的学校很辣鸡,但是偶然间发现所有的教学区设备,在通过网关认证后,就可以获得一个江苏省常州市教育网的公网 IP 地址,同时拥有 10Mbps 的上下对等带宽,还是蛮良心的(

然后我们就在某办公室内放置了一个配置极其破烂的台式机,用来转发内网端口,VPN 远程接入和其他奇奇怪怪的服务。然而所有这些的前提就是通过了网关认证。比较尴尬的是那台电脑并没有显示器,所以我们只能想其他办法实现这一步骤。

最初我们使用了 VPN ——搭建一个 PPTP VPN 服务器并配置好 NAT 和 IP Forward,然后在内网使用 PPTP 连接至服务器,打开浏览器访问任意非 SSL 网站,就会被 Redirect 到网关认证,然后浏览器里操作就可以完成了。

后来发现 PPTP 的配置实在是比较繁琐(虽然比较其他形式的 VPN,PPTP 是搭建最快速的一个),同时存在各种各样的问题导致 PPP 认证不通过,进而无法建立 PPTP 连接,我们开始改用 Shadowsocks,在需要认证的机器上搭建一个 ss-server,在内网的其他机器上配置好 Shadowsocks 客户端,就可以和 PPTP 一样进行操作了。

再后来发现 Shadowsocks 的编译还是要准备一堆依赖,配置也不足够简单。反思 PPTP,我们使用 PPTP 的目的就是将两个机器组成一个虚拟专用网络,然后所有流量从待认证机器出去以实现认证。仔细想想不难发现其实我们用来认证的机器和待认证机器本来就在一个网段了,为什么还要专门组一个呢?(智商-10)所以我们只需要在待认证服务器上执行这句 iptables 语句:

iptables -t nat -A POSTROUTING -s 219.230.153.0/24 -j MASQUERADE

然后再另一个设备上,将默认网关调整至待认证设备IP,就可以和之前一样操作并通过认证了。

今天在数据结构上机的时候,突然想到,我们进行网关的认证,其实就是在网页上填写一个表单,并提交这个表单到认证服务器,随后就解锁了国际互联网访问。那为什么要搞的这么复杂绕了一大圈就为了进行一个 POST 呢?(智商+10)

想到这些就随后几分钟写了段 JavaScript,来实现这些个操作,实测可行。代码如下:

var request = require('request');
request = request.defaults({jar: true});

// Your login info here.
var uname = '';
var passwd = '';

request.get('http://www.bilibili.com/', (err, res, body) => {
    var loginURL = body.substr(28, body.length - 38);
    request.get(loginURL, (err, res, body) => {
        request.post({
            url: 'http://219.230.159.25/eportal/webgateuser.do?method=login_ajax_pure_internet¶m=true&' + loginURL.substr(40) + '&username=' + uname + '&pwd=' + passwd,
            form: {
                is_auto_land: false,
                usernameHidden: uname,
                username_tip: 'Username',
                username: uname,
                strTypeAu:null,
                uuidQrCode:null,
                authorMode:null,
                pwd_tip: 'Password',
                pwd: passwd
            },
            referer: loginURL,
            headers: {
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
                'Connection': 'keep-alive',
                'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh,zh-CN;q=0.8,en-US;q=0.6,en;q=0.4'
            }
        }, (err, res, body) => {
            if (res.caseless.dict['auth-result'] == 'success') {
                console.log('Login Success.');
            }
            else {
                console.log('Something happened.');
            }
        });
    })
})

这段代码需要一个叫 `request` 的依赖,直接输入 `npm insall request` 即可完成安装。将个人的登录信息修改好后,执行脚本:`node login.js`,如果看到输出`Login Success.`,就表明认证通过,可以开始上网啦((

现在看来当时的解决方案真是智障(不)

]]>
https://archive.ntzyz.io/2016/06/05/use-nodejs-to-finish-gateway-authorization/feed/ 0