Itches@rnons

A problem well stated is a ploblem half solved

DIY Opera的几种途径

| Comments

定制界面

Opera可自定义菜单、面板、按钮等,最常用的或许是定制按钮。  
通过定制按钮,可以方便的实现切换代理、网页分享、收藏到delicious等功能,推荐阅读
优点:可以方便的调用Opera内部命令。

Widgets

Opera Widgets are self-contained Web applications built using open Web standards such as HTML, CSS and JavaScript.

Opera Widgets可以独立于Opera运行,所以如果简单的用<iframe>把douban.fm装进去,再打包成Widget,你就得到了一个桌面电台。
同理,你也可以做出桌面GMail,桌面GDocs,忘了以前在哪见过一键Widgetize的工具。
优点:可独立于Opera运行。

Opera Unite

如果你没用过Opera Unite,那你可能还没那么喜欢Opera。
简单的说,Opera Unite能够把你的电脑变身成一台服务器,对外提供Web服务。
通过安装不同的Opera Unite Applications,提供不同的服务。
Opera Unite是一项超前的技术,因为目前的网络条件和PC的运算能力使其用途受限。
优点:使用自己的电脑提供Web(SNS)服务。

Opera Extensions

我们习惯上把”扩展”(extension)也称作”插件”(plug-in),但实际上不是一个东西。
在Opera地址栏敲入opera:plugins可以看到已安装的插件,通常会包括flash和java。
从Opera菜单 -> Extensions -> Manage Extensions 则能看到已安装的扩展。
优点:综合了按钮和Widget的长处,能够与Opera无缝集成,同时功能强大。  


Opera提供了4套API,具有强大的扩展能力。但是,4套API有交集,却并不完全兼容。
比如,从Extensions如何调用Opera内部命令就是个问题。
再比如,Widgets和Unite都可以使用widget.showNotification()来弹出消息提示,Extensions却不行。
不过有理由相信,Opera会提供越来越好的API。

如果你喜欢Opera,又想要拥有Opera自身没有提供的功能,不妨自己动手写个Extension、Widget或者按钮,当你开始以后,就会发现没那么难~

以douRex为例谈Opera扩展开发

| Comments

douRex是一个Opera扩展,用于收听douban.fm。

Opera Extension的组成部分

核心的有三个:background process,popup,injected script,但不表示每个扩展都要有这三个部分。

  • background process,顾名思义,只要Opera正在运行,并且启用了这个扩展,background process就在运行。在douRex中,播放器就在background process中,这样才能做到后台播放。
  • popup,就是扩展的弹出窗口,在douRex中,就是播放器的操作界面(歌曲信息、加心、切歌等)
  • injected script,直接作用于网页上,等同于Firefox中的Greasemonkey脚本。
    在douRex中,inject script有两个用途:一是负责在专辑页面和收藏页面增加play-in-douRex的链接;二是在歌曲开播时“弹出”歌曲信息,其实不是真正的弹出,而是给document加了一个div。

 Opera Widget和Unite能够调用widget.showNotification()来真正弹出消息。

Opera Extension各部分的通信

The architecture of an Opera Extension involves the interaction of the following four basic parts:
Injected script <-> Background Process <-> Button/badge <-> Popup

The communication structure of an Opera extension:

popup可以使用opera.extension.bgProcess获得background process的对象,这样在douRex中popup上的操作(切歌等)才能作用到后台的播放器上。

popup和injected script还可以通过opera.postMessage向background process发送消息,background process则通过opera.extension.onmessage接收消息。

background processpopupinjected script发送消息,则要使用opera.extension.broadcastMessage函数。

<audio>

<audio>是HTML5新增的特性,目前各大浏览器都能支持。但是对于音频编码格式的支持就各有不同,比如说Opera只支持.ogg和.wav文件格式。

因此在现阶段还是无法摆脱flash的阴霾,可以选择直接调用flash,不过我的方法是借助jPlayer库,它是jQuery的一个插件。

但是使用flash就会有安全问题,对于Opera插件,需要在flash安全设置中将widget://加为可信路径。

cookies

每次使用douRex都必须从网页登录douban.fm获取cookie,才能将加心和禁播操作记录到豆瓣。

在Chrome里,可以通过使用chrome.cookies.getchrome.cookies.set,直接从douban.com获取cookie。在Opera里没有找到对应的解决方法。

寻求帮助

相比于Firefox和Chrome,Opera的扩展及扩展开发者都非常少,因此通过google和stackoverflow寻求帮助往往得不到想要的结果。

我的方法是,找找看有没有同类的Opera扩展。
例如,后台播放就参考了Radio.corbina.ru,不过Radio.corbina.ru的实现方法过于原始被我摒弃了。
歌曲开始播放时“弹出”信息提示参考了Song Notifier

从同类的Firefox和Chrome插件也可能得到帮助,因为或许能通过jQuery等外部库来解决,就不一定要依赖Opera自身提供的特性。

[笔记]People Behind the Code: Adam Wiggins

| Comments

开始玩heroku,在heroku.com上闲逛,看到了这篇新闻稿Software Developers: People Behind the Code Adam Wiggins,觉得有些收获,记录一下。

  • Software Designers~The People Behind the Code是日本GIHYO的一个访谈专栏,#32采访的是Adam Wiggins,Heroku三位创始人之一,目前任CTO。#31采访的是Chris Wanstrath,GitHub创始人之一,目前任CEO。每月一篇,值得关注。

  • Heroku于2007年启动,当时是Y Combinator的seed funding program for startups。Heroku这个名字来自于”hero”和”haiku”(俳句)这两个单词。

To an American ear, “Heroku” sounds Japanese, but it’s actually a combination of “hero” and “haiku”―the latter a nod to the Japanese origins of the language that inspired it: Ruby.

  • Yukihiro “Matz” Matsumoto,Ruby语言的创始者,目前受聘于Heroku。

A few months earlier, the company had hired the man who had inspired Heroku in the first place: Yukihiro “Matz” Matsumoto, the creator of Ruby.

People usually talk about business software in terms of productivity, cost of ownership, and other practical metrics. But Matz is all about making developers happy. We discovered that focusing on happiness leads to higher productivity. It leads to developers who love what they are doing, which means they do it faster, better, and with more passion and engagement.

  • Adam Wiggins最喜欢的书之一:Virginia Postrel的《The Substance of Style》。

One of her basic premises is that beauty and function are not, as people often assume, completely separate.

Humans feel good when we use things that are beautiful, and increasing happiness is one of the absolute best things you can do for productivity.

  • 敏捷开发的思想之一是:fail-early-and-often。

    The fail-early-and-often philosophy leads to a culture of experimentation, which I think does indeed lead to happiness.


有听同学提过Ruby语言很强调享受编程,关注开发过程的幸福感,有机会学习一下。