/usr/local/lib/node_modules/hexo-cli/bin/hexo 1 2 3 4 5 #!/usr/bin/env node 'use strict' ;require('../lib/hexo' )();
/usr/local/lib/node_modules/hexo-cli/lib/hexo.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 'use strict' ;var chalk = require ('chalk' );var tildify = require ('tildify' );var pathFn = require ('path' );var Promise = require ('bluebird' );var Context = require ('./context' );var findPkg = require ('./find_pkg' );var goodbye = require ('./goodbye' );var minimist = require ('minimist' );var camelCaseKeys = require ('hexo-util/lib/camel_case_keys' );function entry (cwd, args ) { cwd = cwd || process.cwd (); args = camelCaseKeys (args || minimist (process.argv .slice (2 ))); var hexo = new Context (cwd, args); var log = hexo.log ; process.title = 'hexo' ; function handleError (err ) { if (err) { log.fatal (err); } process.exit (2 ); } return findPkg (cwd, args).then (function (path ) { if (!path) return ; hexo.base_dir = path; return loadModule (path, args).catch (function ( ) { log.error ('Local hexo not found in %s' , chalk.magenta (tildify (path))); log.error ('Try running: \'npm install hexo --save\'' ); process.exit (2 ); }); }).then (function (mod ) { if (mod) hexo = mod; log = hexo.log ; require ('./console' )(hexo); return hexo.init (); }).then (function ( ) { var cmd = '' ; if (!args.h && !args.help ) { cmd = args._ .shift (); if (cmd) { var c = hexo.extend .console .get (cmd); if (!c) cmd = 'help' ; } else { cmd = 'help' ; } } else { cmd = 'help' ; } watchSignal (hexo); return hexo.call (cmd, args).then (function ( ) { return hexo.exit (); }).catch (function (err ) { return hexo.exit (err).then (function ( ) { handleError (null ); }); }); }).catch (handleError); } entry.console = { init : require ('./console/init' ), help : require ('./console/help' ), version : require ('./console/version' ) }; entry.version = require ('../package.json' ).version ; function loadModule (path, args ) { return Promise .try (function ( ) { var modulePath = pathFn.join (path, 'node_modules' , 'hexo' ); var Hexo = require (modulePath); return new Hexo (path, args); }); } function watchSignal (hexo ) { process.on ('SIGINT' , function ( ) { hexo.log .info (goodbye ()); hexo.unwatch (); hexo.exit ().then (function ( ) { process.exit (); }); }); } module .exports = entry;
Customizes the path of current working directory. 1 hexo server --debug --cwd /path/to/cwd
懒惰能使人沉睡; 懈怠的人必受饥饿。 (箴言 19:15 吕振中)
人心里多有设计, 惟独永恒主的计画才能立定。 (箴言 19:21 吕振中)
不要贪爱睡觉,免致你穷乏; 睁开眼睛吧,你就得以吃饱饭。 (箴言 20:13 吕振中)
懒惰人的心愿害死了他, 因为他的手不肯作工。 他终日贪得无餍; 但义人却施舍而不吝惜。 (箴言 21:25-26 吕振中)
你看办事敏捷的人吧; 他必侍立于君王面前; 他不侍立于微贱无名的人面前。 (箴言 22:29 吕振中)
我经过懒惰人的田地, 全无心思之人的葡萄园; 只见蒺藜长满了地皮! 刺草盖满了田面! 其石墙也翻毁了! 我看了就留心思想, 我看着就得了训诲: 『且睡片时,且打盹片时, 且抱着手躺着片时』, 你的贫穷就如拦路贼忽来, 你的穷乏就像武装匪来到了! (箴言 24:30-34 吕振中)
Change Post Sorting
Sort Posts Based on Markdown File Paths
node_modules/hexo/lib/plugins/generator/post.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 'use strict' ;function postGenerator (locals ) { const posts = locals.posts .sort ('-path' ).toArray (); const { length } = posts; return posts.map ((post, i ) => { const { path, layout } = post; if (!layout || layout === 'false' ) { return { path, data : post.content }; } if (i) post.prev = posts[i - 1 ]; if (i < length - 1 ) post.next = posts[i + 1 ]; const layouts = ['post' , 'page' , 'index' ]; if (layout !== 'post' ) layouts.unshift (layout); post.__post = true ; return { path, layout : layouts, data : post }; }); } module .exports = postGenerator;
node_modules/hexo-generator-index/index.js 1 2 3 4 5 6 7 8 9 10 'use strict' ;hexo.config .index_generator = Object .assign ({ per_page : typeof hexo.config .per_page === 'undefined' ? 10 : hexo.config .per_page , order_by : typeof hexo.config .per_page === 'undefined' ? '-date' : hexo.config .order_by }, hexo.config .index_generator ); hexo.extend .generator .register ('index' , require ('./lib/generator' ));
_config.yml 1 2 3 4 5 6 7 8 9 10 11 per_page: 10 pagination_dir: page order_by: -path archive_generator: order_by: -path tag_generator: order_by: -path
freemind/layout/_partial/archive.ejs 1 <% posts.sort ('path' , -1 ).each (function (item ){ %>
1 <% site.posts .sort ('path' , -1 ).forEach (function (it ){ %>
我为自己动大工程,建造房屋,为自己栽种葡萄园,为自己修造庭园和园圃,在其中栽种各样果木树;我为自己挖造水池,用来浇灌生长的树林。我买了仆婢,也有生于家中的仆婢;我又有许多牛群羊群,胜过我以前所有在耶路撒冷的人。我又为自己积蓄着金银、和君王的珍宝、各省的珍宝;我得了男女歌唱者和人类所喜爱之物、并许多的妃嫔。 (传道书 2:4-8 吕振中)
这样我就日见昌大,胜过我以前所有在耶路撒冷的人;并且我的智慧仍为我所有。凡我的眼所求的、我没有留下而不给它的;凡我的心所喜乐的、我没有阻止而不让享受的;因为我的心从我一切所劳碌的获得快乐:这就是我从一切劳碌中所得的分。后来我察看我的手所作的一切事、和我劳碌去作的工;嗐!都是虚空!都是捕风!在日光之下毫无益处。 (传道书 2:9-11 吕振中)
在公司的電腦上把 hexo 給建好了。用 IntelliJ 發文,這感覺真是酸爽。--在此注明一下,说「酸」主要是因为日本人很鸡毛蒜皮,上班写自己的博客是不被允许的。--实际上,没有发几篇。发呆都比发布博客文章要多吧。
往来传闲话的、能泄露人的秘密; 心里忠信的、总是遮隐人的事情。 (箴言 11:13 吕振中)
往来传闲话的、泄露人的密事; 大张其嘴的、你不可与他结交。 (箴言 20:19 吕振中)
鑒于公司的電腦,申請安裝輸入法很麻煩,而且中日英切換麻煩的要死。所以,以後就用英文好了。又鑒于英文保密性太差,以後就用拼音好了。
隐秘通道(covert channel)的意思是说使用难以预料或不会引起注意的方式来发送信息。假设有一天系统管理员 Sally 觉得自己的那些用户花太多时间来玩了,因此她决定关闭 email 和即时消息,这样他们就不能聊天了。要解决这个问题,你和你的朋友都同意使用主目录中的一个你们都可以读取的文件来交流信息,你每隔一会儿就得检查一下该文件来查看新消息。这种超出乎预料的通信方式就是一个隐秘通道。 隐秘通道很难取消。如果系统管理员 Sally 发现了你们这种基于文件的通信技术,她可以修改目录的权限,使得只有目录的属主才具有读取和搜索的权限,并限定目录属主也不能修改这种权限。在这样做的同时,她还可以确认你不能在其他地方(例如,/tmp)创建文件。(你的大部分程序都不能运行了,但是不要因此而责怪 Sally。)即使是这样,你和你的朋友仍然可以相互显示其他用户士目录中的内容,这可以显示目录的修改日期和文件个数,这样你就可以根据这些可见的参数设计一种密码,并通过修改这些参数而进行通信。这是一种更复杂的隐秘通道,如果 Sally 对你们进行了更严格的限制,你们可以想出更古怪的法子来。 SSH 不能防止隐秘通道。对隐秘通道的分析和控制通常都是安全性很高的计算机系统的一部分,例如设计用来在同一个系统中的不同安全层次上安全地处理信息的系统。顺便说一下,SSH 数据流本身就可以很好地用作一种隐秘通道:SSH 会话的内容可能是一个巧克力馅饼的配方,而隐含的内容则可能是用 Morse 码表示这两个公司即将合并,只需要使用报文长度是奇数还是偶数来分别表示 Morse 码的短横线和点号即可。