Skip to content

Instantly share code, notes, and snippets.

View LiuJi-Jim's full-sized avatar
🏠
Working from home

Liu Ji LiuJi-Jim

🏠
Working from home
View GitHub Profile
@LiuJi-Jim
LiuJi-Jim / flatten.js
Created August 14, 2014 13:31
LinkedList flatten
// 极其弱的版本,对于[1, [], 2]这样的奇怪情况(嵌套的是空链)会跪,回头修回头修
var ListNode = function(value, next){
// 虽然是简单结构,但是为了Hidden Type优化做成个class
this.value = value;
this.next = next;
};
var LinkedList = function(){
this.head = this.tail = new ListNode(null, null);
@LiuJi-Jim
LiuJi-Jim / app.js
Created August 14, 2014 13:18
express.js auto route,遍历controllers目录里的所有js文件,对里面每个module的每个属性都当做一个/:controller/:action,作自动路由(就跟ASP.NET MVC差不多啦!)
// app.js
for (var controller in routes){
var mod = routes[controller];
app.all('/' + controller + ':action', function(req, res){
var action = req.params.action;
if (action in mod){
mod[action](req, res);
}else{
res.statusCode = 404;
res.send('404 not found');
@LiuJi-Jim
LiuJi-Jim / string.format.js
Created November 6, 2014 12:19
Something like String.Format in C# but much more simple.
function format(fmt){
var args = Array.prototype.slice.call(arguments, 1);
for (var i=0; i<args.length; ++i){
var reg = new RegExp('([^\\\\]|^)(?:\\{' + i + '\\})', 'g');
fmt = fmt.replace(reg, '$1' + args[i]);
}
return fmt;
}
console.log(format('Hello, {0}!', 'world', 'jim'));
@LiuJi-Jim
LiuJi-Jim / MidIterator.js
Created May 5, 2015 16:35
中序遍历迭代器
var MidIterator = function(root) {
this.stack = [root];
this.__pushLeft(root);
};
MidIterator.prototype.__pushLeft = function(node) {
if (!node) return;
var left = node.left;
while (left) {
this.stack.push(left);
left = left.left;
@LiuJi-Jim
LiuJi-Jim / nga-stylish.css
Created August 14, 2015 08:26
NGA Stylish
[id^="postads"],
[id^="bbs_ds"],
.adsc,
.adsh,
#gwd_browser_download
{
display: none !important;
}
@LiuJi-Jim
LiuJi-Jim / Matrix67.2011-2012.Maze.js
Created November 8, 2012 10:11
Matrix67 2011->2012 Maze
// v2.0,避免一个for (in),速度大幅度提高,但graph的构造不如之前优雅,优化了hash,总代码量几乎没有增加,加了点注释。
var ops = ['+7', '/2', '*3', '-5'];
var graph = [
[{e:0,n:1}, {e:1,n:1}],
[{e:0,n:0}, {e:1,n:0}, {e:2,n:2}, {e:3,n:2}],
[{e:2,n:1}, {e:3,n:1}]
]; // 第一维是顶点,第二维是出边,e是边的id,n是指向的顶点。
graph.forEach(function(vex, i){
vex.forEach(function(edge, j){
edge.f = new Function('val', 'return val' + ops[edge.e]); // 把边构造成一个function
@LiuJi-Jim
LiuJi-Jim / extract archive file
Created November 27, 2012 05:46
extract archive file
ex () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
@LiuJi-Jim
LiuJi-Jim / hrtime.js
Last active October 27, 2015 09:39
HRT(High Resolution Timing) in JavaScript
var hrtime = (function(){
if (typeof window !== 'undefined'){
// browser
if (typeof window.performance !== 'undefined' && typeof performance.now !== 'undefined'){
// support hrt
return function(){
return performance.now();
};
}else{
// oh no..
@LiuJi-Jim
LiuJi-Jim / getCurrentScript.js
Created November 20, 2015 07:58
getCurrentScript
var getCurrentScript = (function () {
var supportsScriptReadyState = ('readyState' in document.createElement('script'))
var isNotOpera = !window.opera || window.opera.toString() !== "[object Opera]"
function getCurrentScript() {
if (document.currentScript) {
// Chrome, OSX Safari, Firefox, Edge
return document.currentScript.src
}
#pl_leftnav_app,
#trustPagelet_checkin_lotteryv5,
#trustPagelet_recom_interestv5,
.gn_title[node-type=app],
.gn_title[node-type=weiba],
.gn_title[node-type=game],
.gn_title[node-type=hot],
.gn_setting[node-type=member],
#pl_rightmod_ads35,
/*#trustPagelet_zt_hottopicv5,*/ /*右侧导航[热门话题]予以保留,不想看这个的可以把这行注释取消掉*/