ThinkJS 开启 HTTPS 服务

大家在使用 ThinkJS 的时候一般都会搭配 Nginx 使用,在 Nginx 中配置 HTTPS 是非常简单的,具体可以参考屈屈老师的《Let's Encrypt,免费好用的 HTTPS 证书》。这样做的原理是 Nginx 接收到 HTTPS 的请求后反向代理到 ThinkJS 服务的端口上,从而达到了 ThinkJS 项目开启 HTTPS 服务的目的。不过有些比较轴的同学可能觉得这种方法还是太麻烦了,经常问 ThinkJS 有没有自带启动 HTTPS 服务的方法。今天我就来给大家说说。

阅读全文

ThinkJS 开发之前端热更新

用过 ThinkJS 的人都知道,开发模式下 ThinkJS 是支持实时更新的,也就是说不需要我们重启服务就能让修改生效,不得不说这种开发方式真的非常方便。然而对于前端代码我们还是得老老实实的刷新页面才能看到效果,我们能不能让前端代码也支持热更新呢?答案是肯定的。首先我们看一张动图了解我们最终想要功能是什么样的(点击图片查看大图)。

阅读全文

基于 ThinkJS 程序的自动更新

众所周知,PHP 是文件型程序,每次请求访问的时候会去读取 PHP 文件然后执行程序。这种机制的程序做更新是非常简单的,把文件更新了下一次请求读取的就会是最新的程序。和 PHP 文件型程序不同,Node 是常驻“内存型”程序,代码在最开始执行脚本的时候就已经读取,模块和依赖都会缓存在内存中。这样的好处就是减少了请求每次读取的时间,能够更快的响应。但是也注定了不能像 PHP 一样只是简单的更新下文件就能达到更新的目的了。本文就 Firekylin 的在线更新功能来说说 ThinkJS 程序更新的那些事。

阅读全文

史上最简单的 ThinkJS 七牛教程

七牛是提供了 NodeJS 的 SDK 的,这就为我们的使用带来了极大的方便。我们需要知道以下四个信息:

有了以上基本信息之后我们就可以在 ThinkJS 的基础上添加七牛图床了!首先我们需要新建一个 ThinkJS 项目,在命令行中执行:

//如果没有 thinkjs 命令则首先需要 npm install -g thinkjs
$ thinkjs new thinkjs-niu --es6

我们可以进入项目根目录安装依赖然后 start 一下,然后访问 http://localhost:8360 就会发现我们的 ThinkJS 项目已经可以正常访问啦!

$ cd thinkjs-niu
$ npm install
$ npm start

之前我们说到七牛有自己的 NodeJS SDK,所以下一步我们要先把 SDK 安装上,进入项目根目录后执行:

$ npm install qiniu --save

将我们在最开始获取到的四个信息配置到 config 里面,打开 src/home/config/config.js 并按照如下所示补充内容:

'use strict';
/**
 * config
 */
export default {
  //key: value
  qiniu: {
    access_key: '你的 access_key',
    secret_key: '你的 secret_key',
    bucket: '你的空间名称',
    domain: '你的空间域名'    
  }
};

阅读全文

ThinkJS Dash 离线文档

最近一直在倒腾 ThinkJS 有关的东西,就思瞅参照着官方给的示例做了它的 Dash 离线文档。看了下官方给的示例,无非就是用脚本将所有文档页面抓取下来然后生成检索数据库,还算是颇为简单。

抓取文档的脚本我已经开源放在了 Github 上:https://github.com/lizheming/dash-thinkjs ,欢迎大家 star 及 fork。脚本不长,主要是使用了 wget 下载文档,sqlite-sync 模块来操作索引数据库,并使用 cheerio 来修改页面结构。

为了让用户安装更方便,我将其推送到了官方源中。按照 https://github.com/Kapeli/Dash-User-Contributions#contribute-a-new-docset 所描述的规定生成好文件后很快就被作者给合并了,不得不赞一下作者的高效!

阅读全文

Typecho在线升级插件 - Update 0.0.2

是不是已经厌烦了Typecho每次升级还得开FTP覆盖文件了呢?好消息来了!为了解决这无比蛋疼的问题,Update插件正式上线了!没有复杂的配置没有复杂的选项,只要开启插件就行了!只要开启插件就行了!(等下,一股浓浓的电视购物风是什么情况Σ(っ °Д °;)っ)
当程序检测到新版的时候会在控制台首页增加一个链接,点击更新就可以了!一击解决Typecho多年蛋疼问题!

阅读全文

Tumblr整站图片下载

前言

前几天闲着无聊没事(其实是一大堆事摆在面前作死不愿意做)把Python的入门教程又看了一遍,感觉这样做好没有效率啊,遂想拿个东西练练手。Python做好的练手项目就是爬虫了(我也不知道从哪里看到的,反正就有这么一说),正好前两天看了Tumblr的一个图片博客,然后网速渣到爆表,遂想干脆给整站图片都抓下来好了。

说干就干篇

基本的思路非常简单啦,无非就是把页面抓下来然后解析里面的IMG标签得到图片地址最后下载下来就好叻。感谢Tumblr没有对IP访问频率进行限制让我少做了不少工作,ありがとう~

首先要说明Python版本啦,我的版本是Python3.4.1,对2.x不兼容。不过索性代码也非常的简单,无非就是urllib库的问题,稍加修改也是可以转换过去的,这个我就不多表述啦。另外就是我的代码是以http://triketora.tumblr.com/这个博客为基准的,因为每个博客的DOM标签可能都不太一样,所以没法做到代码通用,需要根据博客的主题做相应的修改。

页面的抓取我是直接用的urllib.request库,简单粗暴而且非常有效。页面DOM的解析我使用的当然是大名鼎鼎的BeautifulSoup了。至于BeautifulSoup的安装同样不多做表述,其中文文档可参见Beautiful Soup 4.2.0 文档。至于最后一步的图片下载我使用的是urllib.request.urlretrieve函数,这函数简直就是爬虫利器啊有么有,简单快捷高效的就把图片给抓取下来了,简直好顶赞!

阅读全文

Untrusted 通关攻略!

今天早上刷微博的时候看到 @fakefish 分享了一个游戏微博,游戏的名字叫做《Untrusted》,通过修改JS代码来通关的游戏,作者把游戏代码托管在了Github上,游戏地址在 http://alexnisnevich.github.io/untrusted/

Level 1

这关简单,移动玩家对象@先拾取⌘然后移动到出口就好了。

Level 2

这关看着挺吓人的,路都被#号给各种拦着了,但是其实读一下代码发现也就那么回事。13行的new ROT.Map.DividedMaze(map.getWidth(), map.getHeight())负责根据地图大小生成迷宫,30行到33行在出口的四个方向生成了#号阻拦我们。看着其实挺恐怖的,但是其实我们只要开辟一个新思路不移动@对象到出口而是把出口移动到对象边上就好了。

当然没办法移动现有的这个出口了,我就尝试着再新建了一个出口在@的旁边。map.placeObject(7,6,'exit');,一次性成功!

Level 3

这一关#栅栏把@和出口给隔开来了,首先想到的是把生成#栅栏的代码删除掉。但是很不幸的是过关验证函数validateLeve()上清楚的写着一定要有一定数量的栅栏才行。所以我们转变思路,用栅栏把@和出口都包括进去就好了。为了方便我就直接生成在了边缘了。

for (y = 0; y <= map.getHeight(); y++) {
    map.placeObject(0, y, 'block');
    map.placeObject(map.getWidth(), y, 'block');
}

for (x = 0; x <= map.getWidth(); x++) {
    map.placeObject(x, 0, 'block');
    map.placeObject(x, map.getHeight()-1, 'block');
}

Level 4

这一关和上一关的感觉是一样的,应该可以抄袭上一关的代码。不过你仔细读代码的话会发现比上一关少了过关验证函数。所以我这里就取巧用了第二关的方法,用map.placeObject(map.getWidth() - 5, map.getHeight() - 5, 'exit');在@对象旁边新建了一个出口。

阅读全文

移植主题TwentyFourteen

唔,前两天有人求WordPress主题,交流一番之后知道了WordPress居然又发新的默认主题了!之前那款TwentyTwelve也很是不错的说,看了下新发的TwentyFourteen,我也很是喜欢,果断就开始了扒皮行动。话说我也是现在才知道WordPress的默认主题对应着年份的,这么后知后觉真心好忧桑。至于TwentyThirteen那款默认主题由于个人不喜欢甚至觉得有些难看而自动过滤掉了。

在跟各种神奇的WordPress语法大干一场后,抄袭移植就基本完成了。秉承着尽量忠于原主题的原则(说的好像自己扒皮多有原则似的,→_→),主题的资源文件当然是毫不犹豫的是从原主题拷贝过来的啦。发现WordPress现在真是各种高度集成,乱七八糟什么样的函数都有,通过函数能做大部分的事情。同时今天看到一句话“Typecho就是早期整合度不高的WordPress”,对此也深表同意。原来做WordPress主题跟Typecho一样,也就是header index footer sidebar post page comments functions几个文件而已。现在的WordPress主题动不动就是十几个模板文件,各种嵌套引用,头都大了。以及觉得Typecho果然还是有不足的地方啊,好几个需求都没办法直接实现,有些甚至没法实现,只能各种“黑魔法”。

虽然花了我一些时间去移植,但是不保证完全没有问题啦,有问题的同学请留言提出来,我会尽我所能解决的。最后放上页面预览和下载地址:

TwentyFourteen Theme

更新:

本主题更新至1.1版修复了WP官方的定宽(最大只能显示1260px)的问题,以及搜索页面的一些排版问题。

下载地址:BOX | 百度云

马年大吉

啊咧咧,一不小心Python年就过去了,跨入了马年了。因为母上大人今年是本命年,所以也意外的关心起来了。借着这篇最近难得的吐槽文祝各位认识的不认识的博友(网友)在新的一年里是学生的学习顺利(也不一定要进步就是了),工作了的工作顺利(千万不要像@Roamer.Gu 一样碰上一些奇葩BOSS啊),没有对象的能尽快new object,当然有对象的就要过的幸福美满了,要是能extend children就更赞了!

年夜饭

不得不说母上大人做的饭菜实在是太合我的胃口了,虽然只有6个人但是意外的这么丰盛让我等表示高兴万分!拿出来的的汾酒度数不是很高,入口也非常的舒服,简直不能太赞!各种好吃啊有么有~

今天熊孩子出没,早早的就躲到楼上去了。殊不知正当我在用iPad看着《结界师》的时候,我的电脑已经被各种熊孩子入侵了。不过好在人家装了三系统,自从装了Xbuntu之后就使用Grub做引导管理了。而且由于Windows项总是在最后的原因,意外的让熊孩子每次都进入Linux来了呢,哈哈哈!等熊孩子们走了之后我才发现我的电脑正处在xfce界面中,略微一瞎想就呵呵笑而不语了。看来防范低能熊孩子有必杀技了,yeah!