無標題文檔

「禁闭」归来

Blog 很久没有更新,这不代表我已经不在这个世上。可怜这黑色的两个星期,从 正淳 的项目搬回来以后,屁股还没有坐热,又搬到了小黑屋里「禁闭」。

https://friable.rocks/_/2009_11_05/15448712ba74.jpg

十几平方米不到的屋子硬是塞了十几号的人,PD、PM 还不时的过来骚扰。后面就是群的后台开发,每天喊着「i do, i can insert」,做在我旁是名测试,也是房间里的唯一名女性,可惜她死活就是用 IE6 测试,这让我费了不少的口水。

https://friable.rocks/_/2009_11_05/89663712ba75.jpg

每天吃饭时间似乎开发、测试和我们前端形成了固定的时差,开发先走最早回来、我们前端(包括我在内两个人),则外面的兄弟不来催我们吃饭坚决不走,测试则更大碗些,他们直接叫人送饭上门。

https://friable.rocks/_/2009_11_05/29079712c4ac.jpg

自从搬到小黑屋后,杭州就一直不停的在下雨。有位仁兄说「等到你们搬出来的那天,杭州就不下雨了」。果然,这天气就犹如他拿着遥控器一般 -- 公司真的是块人才辈出的土地。

佛爷 去了 HK 本以为是带「小白」回来的,结果发现带来的却是大堆的化妆品。女人的话语果然不能使用 true 或者 false 来判断,或者压根就不能使用逻辑来判断。

咳咳,今天似乎是女同胞的节日,低调低调……

-- EOF --

一年陈

不知不觉,加入 团队 已有一年整。时间飞逝,回头细数这过往的两百多个工作日,其中的滋味已是感慨万千。本人也不算是个善于总结的人,然而回首观望自己走过的一年,也已免不了会打几个字。

「第六人」

从 PHP 程序员到前端、从「清道夫」到前端组的「第六人」(第六位前端)。回忆去年入职时的诚惶诚恐,至今还是记忆犹新。还好通过组员兄弟们的照顾,才使本人尽快的适应了新的环境。客套的话在此显得多余,不过在这里还是得表示再次感谢的。

技术上,这整年经历了大大小小不同的项目和需求,也碰到过形形色色不同的难题,相比那时现在也增加了所未有的信心 -- 这不仅仅是来自本人自身的技术有少许的提神,还有就是站在我身后的 那些帅气又靠谱的团队组员

计划

2009 年伊始,我曾经花了经两周的时间将整年要做的事情写了张 List,然后以优先级排列并将次要的删除,结果发现剩下的还是有很多事情要做。所以,2009 年我不会让自己太空闲(当然,我也希望那些 PD 能让我空闲些)。

但计划有时会跟不上变化,希望 2009 年能够在适应变化的同时,能够完成我的伟大目标,其中包括希望能重新搞台苹果。

总之,再次感谢所有帮助过我的兄弟姐妹们,能让我这位至今还不会背公司具体价值观的「猥琐坏小孩」,陈酿了一年整。

利用 DOM 特性的两个小技巧

此类技巧还有很多,欢迎继续分享

解析 URL

从 James Padolsey 的 Blog 中看到的个小技巧,就是利用 a 标签的 DOM 属性解析 URL 字符串。

// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).
 
function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^\/])/,'/$1'),
        relative: (a.href.match(/tp:\/\/[^\/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}

可对比下「传统的」正则解析方式( 取自 Tbra 库 ),至少上面代码看起来更容易理解得多

parseURL: (function() {
    var keys = ['source', 
                'prePath', 
                'scheme', 
                'username', 
                'password', 
                'host', 
                'port', 
                'path', 
                'dir', 
                'file',
                'query', 
                'fragment'];
    var re = /^((?:([^:\/?#.]+):)?(?:\/\/)?(?:([^:@]*):?([^:@]*)?@)?([^:\/?#]*)(?::(\d*))?) \
               ((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*)) \
               (?:\?([^#]*))?(?:#(.*))?/;    
    return function(sourceUri) {
        var uri = {};
        var uriParts = re.exec(sourceUri);
        for(var i = 0; i < uriParts.length; ++i) {
            uri[keys[i]] = (uriParts[i] ? uriParts[i] : '');
        }
        return uri;
    }
})();

(反)转义 HTML

取自 Prototype 中的相应代码

escapeHTML: function(str) {
    var div  = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
}

unescapeHTML: function(str) {
    var div       = document.createElement('div');
    div.innerHTML = str.replace(/<\/?[^>]+>/gi, '');
    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
}

-- EOF --

我的照片

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

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

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

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

分类

搜索

文章