無標題文檔

Ninja - 微型 PHP 远程文件管理工具

https://friable.rocks/_/2007_12_13/1197531016.png

这个是我业余时间做的一个 PHP 文件管理脚本,安装的方法很简单,解压缩以后直接运行即可。默认的登录用户名和密码是 'admin',如果你需要修改,则改代码的前两个语句就可以了(很容易就能看懂)。

目前所实现的功能:

  1. 用户认证登录
  2. 类似于 ls 命令的文件列表
  3. 可以下载所有服务器端可读的文件
  4. 如目标目录可写,则可以上传文件到目标目录
  5. 如目标文件可写,则可以重命名、删除文件

这个脚本还有很多的问题,不过基本功能已经可以使用。文件中的代码不是加密以后的代码,是本人为了能将脚本的体积减少而采用 base64_encode 以后再 gzcompress 一下而得(所以需要源代码的可以执行其逆操作)。

按照传统,这里是 ZIP 格式打包下载 。我会继续完善该脚本的功能,感谢 Kingla pei爵溪 、Genghonghao、 庞哥 等兄弟的意见和建议。

声明:本人提供该工具仅仅是出于学术研究,如使用该脚本发生的一切后果,本人不负任何的责任。如有任何的技术问题,欢迎留言交流。

适合 Vim 等编辑器的等宽编程字体

经常使用同一种字体会很容易感到疲劳,所以需要时常更换自己心爱的编辑器的颜色和字体。

一直以来我一直用的是一个名叫 Raize 的编程字体

由于我一直以来使用液晶显示器,抗锯齿的字体边缘平滑技术已经出来很多年,感觉是时候得更上时代了。

找来找去,突然发现 Windows 系统自带的 Consloas 字体在开启抗锯齿以后,效果非常的不错。由于是 Windows 自带的字体,版权方面就心照不宣了,大家「仅仅用于学术研究」使用。

截几张图看下效果:

https://friable.rocks/_/2007_12_12/1049106472.jpg

Vim 中使用 Raize 字体的效果

https://friable.rocks/_/2007_12_12/590000604.jpg

Vim 中使用 Consloas 字体的效果(开启抗锯齿)

最后还是老样子,上述两款字体 ZIP 格式打包下载 (这又使我想起了一句话:实在是居家旅行、×××× 的必备利器)。

更新:其他的等宽适合编程的字体可以到 这个链接 去看看。

更新 JavaScript 数组的 uniq 方法

上次写的一篇《 JavaScript 数组的 uniq 方法 》,发现代码的问题还是存在。比如如果数组内有 undefined 元素就无法过滤等。

昨天看见 Lazy 兄弟重新更新了函数,现在他是这样子写的:

Array.prototype.uniq = function() {
    var resultArr = [],
        returnArr = [],
        origLen = this.length,
        resultLen;

    function include(arr, value) {
        for (var i = 0, n = arr.length; i < n; ++i){
            if (arr[i] === value) {
                return true;
            }
        }

        return false;
    }

    resultArr.push(this[0]);
    for (var i = 1; i < origLen; ++i) {
        if (include(resultArr, this[i])) {
            returnArr.push(this[i]);
        } else {
            resultArr.push(this[i]);
        }
    }

    resultLen = resultArr.length;
    this.length = resultLen;
    for (var i = 0; i < resultLen; ++i){
        this[i] = resultArr[i];
    }

    return returnArr;
}

按照他的说法:「这种解法在整个过程对原有数组的改变只有两次,效率比其他两种高了2个数量级左右!」,我实测了下此函数的效率,的确如此( 测试连接点这里 )。

我也重新编写和更新了我的函数,现在看起来是这个样子的:

Array.prototype.uniq = function() {
    var tmp    = new Array;
    var length = this.length;

    for(var i = 0; i < length; i++) {
        var push = true;
        for(var j = i + 1; j < length; j++) {
            if(this[j] === this[i]) {
                push = false;
                break;
            }
        }

        if(push) {
            tmp.push(this[i])
        }
    }

    this.length = tmp.length;
    for (var i = 0; i < tmp.length; i++) {
        this[i] = tmp[i];
    }

    return tmp;
}

由同一个页面测试所得,效率还是 Lazy 兄弟的稍许快些。经过一点思考以后,我有了些一点点我的心得:

  1. 我的函数 for 嵌套可以用一个函数独立(就如 Lazy 兄弟的 include 函数一样)。在上述的情况下,调用函数会比循环判断效率要高一些。
  2. 数组的循环读写操作在数据量大的情况下应格外的注意效率问题

Lazy 兄弟的结论:

对数组的改变开销巨大,如果可能,尽量在不改变原有数组的情况下进行操作。
如最终需要改变数组自身,可将结果赋予原有数组来操作。另外,对于 length
的计算,似乎效率并未受其影响。

Lazy 兄弟的 resultArr 数组按照他这样的写法就可以保存同样的值,在这里赞一个(虽然我的函数经过一点小的修改也可以实现)。感兴趣的朋友可以去 Lazy 的页面 去看看。

最后,推荐阅读一下王元涛兄弟的 JavaScript 数组的 uniq 方法 ,万分感谢。

我的照片

您好!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,欢迎您通过 GitHubTwitterInstagram 了解我的更多动态。

本博客原名 Gracecode.com 、现更名 「無標題文檔」「精于心、简于形」以此践行极简、务实的理念。 在工作之外的个人生活方面,我崇尚简单、追求平淡,偶尔也带着一些可能不被所有人理解的幽默感。

同时为避免争议和麻烦,在此郑重声明:本站所有内容为非 AI 生成,所有观点及立场均仅代表我个人,不代表任何我所就职或关联的公司与组织。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章