無標題文檔

时间管理小贴士 Part.1

最近变得很忙,所以不得不注重下时间管理方面的技巧。为了不成为开发组拖后腿的,在这里逐步总结本人的时间管理技巧(不过有些可能是工作技巧)。

  1. 睡觉前花十分钟在 Google 日历 前发呆,记录明天要做的事情。
  2. 花半小时把 Google Reader 的内容全部看完,记录下对自己有用的信息,之后就不再打开它。
  3. 边看 Google Reader 的时候可以给自己泡杯咖啡,算是给自己接下来的活打气。
  4. 类似 Google Reader ,统一时间处理邮件,给邮件分类。
  5. 不要用 Outlook,Gmail 是很正确的选择。
  6. 相对容易的、或者紧急的活先做,先给点自己成就感。
  7. 使用 Twitter ,记录自己的状态。
  8. 在键盘上贴便签 ,记录今天下班必须完成的任务。
  9. 不同的需求用不同的技术实现,过于完美往往意味着要花额外的时间。
  10. 干活时不要轻易被打断,给自己「缓冲」的时间(当然也不能让人家等着)。
  11. IM 里面尽量少发「Hi」、「你好」此类,直接说明情况(虚伪的礼貌还是不要了)。
  12. 午饭后几乎不能干任何事情,和同事聊天是个不错的主意。
  13. 新座位没电话线,这是个好事情。

-- EOF --

如何调试 XMLHttpRequest

在编写 XMLHttpRequest 请求时,需要掌握服务器端返回的内容。

针对 Firefox 浏览器,我们常用的 Firebug 就能非常好的完成这一任务。打开 Firebug 针对目标站点的网络监视选项,则在每次使用 XMLHttpRequest 时,控制台会增加条相应的信息(同时会标明是 GET 方法还是 POST 方法)。

https://friable.rocks/_/2008_08_11/1218449715.gif

点击该信息条目后,就会出现 Params、Headers 以及 Response 三个标签,分别对应的是 HTTP 参数、HTTP 头、以及 回应信息。其中,Response 信息就是服务器返回的信息(图示中为服务器返回的 JSON 格式的数据)。

https://friable.rocks/_/2008_08_13/1218628504.png

另外,Headers 标签中显示的是 HTTP 头信息(分别为请求头以及回应头),在这里可以找到额外有用的信息,比如服务器信息、缓存信息、浏览器发送的 Cookie 头,以及 Content-type 属性(内容属性,可能会包含 charset 参数,指明字符编码)。

https://friable.rocks/_/2008_08_13/1218624529.png

同时,在控制台信息比较多时,会显得比较杂乱。Firebug 还专门提供的网络监控面板,根据上图所示有个 XHR 标签,它主要的功能就是提供异步调用监测。

针对 Explorer 等浏览器,监视 XMLHttpRequest 需要第三方工具的支持。在这里推荐的是 Fiddler ,这一强大的网络监视工具。

在安装好 Fidder 以后,先打开 Exploer 浏览器,到需要监视 Exploer 浏览器的网络使用况时,打开 Fidder(通常在 Exploer 工具栏上有相应的启动按钮),就可以看到如下的界面

https://friable.rocks/_/2008_08_13/1218628924.png

选择某个具体的项目,查看其相应的内容。比如选取 Raw 按钮,则可以看到原始的 HTTP 相应记录

https://friable.rocks/_/2008_08_13/1218628608.png

这样,使用 Fidder 就可以获取某个针对特定程序的 HTTP 记录。

OpenSearch 初探

很多现代的浏览器在地址栏的右边有个搜索框,默认的安装有 Google 搜索等。如下图所示

https://friable.rocks/_/2008_06_17/1213670001.png

其实这是 OpenSearch 的一个应用,只要编写相应的微格式的 xml 文件,就可以制定相应的搜索框。

参考 OpenSearch 的定义文档 ,可以基本获得基本的 xml 格式。比如某个典型的的搜索 xml 文件可以这样指定。

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    <InputEncoding>utf-8</InputEncoding>
    <ShortName>ShortName</ShortName>
    <Description>Description</Description>
    <Image type="image/vnd.microsoft.icon">favicon</Image>
    <Url type="text/html" template="http://who.am.i/search?word={searchTerms}"/>  
</OpenSearchDescription>

上面的 xml 文件很容易理解,除了固定的 xml 根以外,其他的定义从字面上就可以理解:

编写 OpenSearch 的 xml 格式就完成了,详细信息可以参阅其 OpenSearch 定义文档

下面要在页面中加入这个搜索,基本上可以分为两种方式。分别是页面的在 head 中加入 link 标记(类似 RSS),以及使用 Javascript 方式添加(比如定义某个按钮触发)。

加入 link 标记非常简单,格式如下

<link rel="search" type="application/opensearchdescription+xml" 
            href="http://who.am.i/search.xml" title="ShortName" />

与 RSS 相似,rel 和 type 是固定的,我们主要指定 href (上述 xml 的 url 路径,保险起见使用绝对路径,即 http:// 开头)以及 title (也就是搜索的短标题)即可。

就这样,在 Explorer 以及 Firefox 中打开这个页面就可以看见相应的菜单了,如图所示

https://friable.rocks/_/2008_06_17/1213670018.png

使用 Javascript 添加比较麻烦(或许现在的情况会很好多)。我们主要会使用浏览器的扩展功能,在 Explorer 有个 window.external.AddSearchProvider 参数( 详细文档 )。

典型的调用方法如下

window.external.AddSearchProvider('http://who.am.i/search.xml');

参数中的链接就是上述 link 中的内容。在 Firefox 下可以使用

window.sidebar.addSearchEngine(
    "http://who.am.i/search.xml",  /* engine URL */
    "favicon.ico",  /* icon URL */
    "ShortName", /* engine name */
    "Description" );            /* category name */

参数和例子如示例代码中所述( 官方文档 )。值得注意的是在 Firefox2 版本以后已经「兼容」 Explorer 的 window.external.AddSearchProvider 调用方法( 详细信息 )。

那么我们对应的 Javascript 代码就可以这样编写(为了兼容 Firefox2 之前的版本,加入 else if 判断)

function addEngine()
{
    if (window.external || window.external.AddSearchProvider) {
        window.external.AddSearchProvider('http://who.am.i/search.xml');
    } else if (window.sidebar && window.sidebar.addSearchEngine) {
                window.sidebar.addSearchEngine(
                    "http://who.am.i/search.xml",
                    "favicon.ico",  /* icon URL */
                    "ShortName", /* engine name */
                    "Description" ); /* category name */
    }
}

这样,就可以将这个函数注册到某个链接或者按钮的点击事件中,就会跳出个确认框,如图

https://friable.rocks/_/2008_06_17/1213670034.png

用户点击确认以后,就加入到浏览器搜索框中了。

--EOF--

Firefox3 即将发布支付宝 的兄弟们正在完善对于 Firefox 的支持,在这里表示关注和支持。

使用 Google 工具栏追踪 Blog 留言

每个开 Blog 的兄弟都会时刻关注 Blog 上的留言,上次已经说道如何 使用 Gtalk 追踪网站的留言

在使用 Google 工具条时发现其实 Google 工具条本身也开放了 API 供用户调用。第一步要做的就是将用户留言做成 RSS 格式的输出(其实也就是 XML 格式,Wordpress 已经有这样的功能了)。

然后我们再写个针对 Google 工具条的 XML 文件即可。格式如下

<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
    <button>
       <site>在这里设置点击按钮以后进入的网址</site>
       <title>我是按钮的标题</title>
       <description>我是按钮的描述</description>
       <feed refresh-interval="1800">RSS 地址</feed>
       <icon mode="base64" type="image/x-icon">
           base64 以后的 ico 文件内容
       </icon>
    </button>
</custombuttons>

具体的例子可以 参看这里 ,其中 title 与 description 不言而喻,是标题以及描述,最为重要的是 feed 标签。feed 的值就是任何的 RSS 链接,针对本文就是其留言的 RSS 地址。refresh-interval 属性是刷新的间隔时间,单位是秒。

然后我们可以根据 Google 工具栏提供的链接将我们已经做好的 XML 格式的按钮添加到 Google 工具条中。格式为

http://toolbar.google.com/buttons/add?url=<XML 文件 URL 地址>

https://friable.rocks/_/2009_11_05/362615738b19.jpg

访问这个生成的链接就可以加入到 Google 工具条了,效果如图上所示。比如

点击这里将 Gracecode.com 的文章加入 Google 工具条

最后,有关多的信息,可以参看 Google 工具条的 中文 API 文档

跨域 Ajax 调用总结

上次提到过跨域 Ajax 的调用问题 ,这次做个总结。众所周知,Javascript 有「同源策略」的限制。但有时候偏偏又要碰到 Ajax 跨域调用的问题,这个时候就需要些「特殊」的方法使脚本正常使用。

总结下目前所能想到的一些策略,具体的可以查看 Yahoo 开发中心的 相关文档

使用 iframe

具体详情,可以 参看这里

实现的原理就是 iframe 与 父页面 进行 Javascript 通信。完全跨域操作没有测试过,但跨子域名是完全可行的。

优势(部分)

缺点(部分)

服务器端脚本

https://friable.rocks/_/2008_04_07/1207562864.gif

架构可以先「盗用」 Yahoo 文中 的那张插图。大家也许想到变通的办法了,就是在服务器端编写类似网关的脚本。

比如获取另外个域下的 Json 输出,用 PHP 编写的部分代码如下

header('Content-type: text/javascript');
$url = 'http://x.other.net/json';
if ($content  = file_get_contents($url)) {
    echo $url;
}

很简单的代码,但对于服务器端而言,没有任何的限制。进一步的扩展,可以使用 CURL 库

优势(部分)

缺点(部分)

由于相对比较熟悉 PHP 语言,加上后者对于客户端友好,所以在条件允许的情况下,个人还是比较偏向后者。

我的照片

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

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 其实无所谓叫什么名字,作为码农知道取名是件很难的事情。最后想到的这个名字,其实都没啥特别的含义,系统默认的文件名而已。

作为八零后,自认为还仅存点傲娇式的幽默感,以及对平淡生活的追求和向往。 为了免得对号入座和不必要的麻烦,声明本站点所持观点仅代表个人意见,不代表自己所服务公司的立场。

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

文章

项目