無標題文檔

那些注定的软件

最近款某来头的软件 ,似乎又撩动了互联网的神经。不想直接说我的看法,只想举两个本人亲身经历的事情。

高中时由于老师的提举,管理学校的计算机机房。某日,收到通知要全面安装「网络爸爸」这款软件(听着名字就知道干嘛用的)。当时连夜将几十台机子装上了这款软件,印象中这款软件安装非常方便 -- 甚至没有让你选择安装路径。

随后就是噩梦的开始,类似网页打不开等诸多的问题累坏了我们这帮「免费的网管」。最难以接受的就是每次启动系统时,其都会向服务器请求更新,而期间会造成机子假死。很多不明真相、而且耐不住性子的同学,顺手就直接按电源键了。

最后,我们采取的办法就是直接卸载「网络爸爸」。为了躲避老师的检查,自己用 VB 写了个「假的」系统图标。

大学时打暑期工,去帮电信局接宽带。当时,上级明令要求安装「星空极速」软件拨号上网。

开始时,我非常的「敬业」给每台机子都安装上。随着安装量的上升,问题也不断的凸显出来。陆续有用户反映弹出广告、系统拖慢等问题。老到的师哥告诉我解决办法 -- 和他们说是电脑系统的问题,让他们找装机商去。

直到某天,我自己终于厌倦每天安装「新空极速」、应付用户的投诉,这些重复劳动。突然我意识到,这软件对于我而言没有任何的好处:老大看不到,他们只拿装机的指标、那软件太大安装非常的慢,等待很痛苦很无意义。

于是,直接使用 XP 自带的 ADSL 拨号软件,几步搞定。至此以后,没有收到任何的投诉(当时最后我才知道,投诉率还和工钱挂钩),同时由于安装量上升,我比上面提到的那师哥还多拿了餐饭钱。

-- Split --

是母鸡都指望自己下个蛋,只要有这些母鸡在,就别指望上述软件的消失。而愚蠢、懒惰的生物迟早会被淘汰,这是我们所共知的自然规律,同时这一规律同样适用于其他领域。

所以,对于那些所谓软件(工具)的最后的下场,想必各位也心中自知了吧。

innerHTML 的些摘记

异步 innerHTML

innerHTML 插入节点的性能的问题,通常是我们最关注的。 在回答这问题时James Padolsey 给出了他的解决方案 ,看到上述代码不仅赞叹了下:

function asyncInnerHTML(HTML, callback) {
    var temp = document.createElement('div'),
        frag = document.createDocumentFragment();
    temp.innerHTML = HTML;
    (function(){
        if(temp.firstChild) {
            frag.appendChild(temp.firstChild);
            setTimeout(arguments.callee, 0);
        } else {
            callback(frag);
        }
    })();
}
  1. 充分利用闭包解决 IE6 的内存溢出问题
  2. 使用 延时 0 将操作从队列中拉出 ,防止浏览器假死
  3. Document Fragment 给予我们个相当好的沙盘,只是我们经常忘记了它
  4. 回调的节点可以使用 DOM 标准的手法(appendChild)插入

了解了参数就很容易调用,例如

var htmlStr = '<div><p>...</p><p>...</p><div><div>...</div>';
asyncInnerHTML(htmlStr, function(fragment){
    document.body.appendChild(fragment);
});

再次不禁赞叹下!

组织 innerHTML 字符串

说到 innerHTML ,通常在这操作之前会有大部分的字符串操作用于连接节点。考虑下面的三种做法,有何不同

方式一

var arr = ['item 1', 'item 2', 'item 3', ...];
for (var i = 0, l = arr.length, list = ''; i < l; i++) {
    list += '<li>' + arr[i] + '</li>';
}
list = '<ul>' + list + '</ul>';

方式二

var arr = ['item 1', 'item 2', 'item 3', ...];
for (var i = 0, l = arr.length, list = []; i < l; i++) {
    list[list.length] = '<li>' + arr[i] + '</li>';
}
list = '<ul>' + list.join('') + '</ul>';

方式三

var arr = ['item 1', 'item 2', 'item 3', ...];
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

详细的对比 测试在这里 (没错,还是 James Padolsey 那小子的 Blog)。同时, PPK 也整理了份有关 innerHTML 的速度测试报告

IE 的陷阱

对于 IE,innerHTML 有个不大不小的陷阱( via ),就是在 tbody 中插入 innerHTML 时,会报莫名的「未知的运行错误」。

测试地址在这里 (经过测试,在 IE8 中仍然如此)。有兴趣的同学可以 参看更详细的信息

Farseer - Nginx for Windows 快速配置包

http://nginx.net/nginx.gif

Nginx 的确是 *ix 系统下非常优秀的 HTTP 服务器,但以前对于开发人员而言搭建 Windows 平台的 Nginx + PHP 环境的确非常的繁琐而且容易出错。

如果您有上述的问题,那么这个名为 Farseer 的包能够帮得上您的忙。使用这软件包,能够让您在一到两分钟内完成 Nginx + PHP for Windows 平台的安装。

废话不多说, 安装方式和介绍在这里文件包在这里下载

-- Split --

如果你很「传统」, 这里也有个 Apache + PHP 的精简配置环境 ,希望会对兄弟们有帮助。

PS, 再次感谢 Fenng 兄的关注 ,但愿 Nginx 在 Windows 平台下能够与其在其他平台下的表现一样的出众。

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

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

分类

搜索

文章