再见,flickr !January 30, 2012

又到了一年一度续费 flickr 的时候了,而我今年已经不打算再给 flickr 续费了。主要原因除了自己懒和忙没不愿意拍照外, flickr 的未来还是叫人比较堪忧的。

http://files.gracecode.com/2012_01_30/1327905208.png

flickr 的东家 Yahoo 现在的日子也并不好受,甚至我觉得 Yahoo 应该像 del.icio.us 一样,将其出售给更适合经营它的人,例如 Google 。

不难看出,近些年 flickr 做了哪些令用户激动的创新和改进,在我本人看来 flickr 目前的状态与老大哥 Yahoo 无异。

根据自己的使用习惯,其实有比 flickr 更适合我的图片托管服务商,例如我经常使用的 picplz 。相比 flickr ,picplz 、Instagram 等类似的服务有着几点天生的优势:

  1. 没有过于做作的照片(这点我对 flickr 颇有微辞,虽然有人喜欢这个风格)
  2. 更贴近大众
  3. 没有更方便的上传和分享方式了
  4. 免费,而且不限容量

所以,我开始并不买 flickr 的帐了,再见 flickr!

PS,如果您也需要备份 flickr 相片到本地,可以试试 fludump


Blog 的写作格式从 Creole 更换为 Markdown 了,具体的原因可以参看和对比这里 。如果您使用 Typecho 并且也对 Markdown 情有独钟的话,那么这个插件是你必不可少的。

-- EOF --

PHP 5.4 的 Trait 特性(翻译整理)November 18, 2011

原文: http://www.xpertdeveloper.com/2011/11/trait-in-php/ 。这里总结下注意的几 点:

  • Trait 会覆盖调用类继承的父类方法
  • Trait 无法如 Class 一样使用 new 实例化
  • 单个 Trait 可由多个 Trait 组成
  • 在单个 Class 中,可以使用多个 Trait
  • Trait 支持修饰词(modifiers),例如 final、static、abstract
  • 我们能使用 insteadof 以及 as 操作符解决 Trait 之间的冲突

-- Split --

一些看法

坦白讲,我第一眼看到 Trait 对它并没有任何好感。PHP5 以来带来的新特性已经足够得 多,而且让开发者们有点应接不暇。

同时,Trait 更像是程序员的 「语法糖」 ,然而它提供便利的同时可能会造成巨大的隐患。 例如 Trait 能够调用类中的成员:

trait Hello {
    public function sayHelloWorld() {
        echo 'Hello'.$this->getWorld();
    }
    abstract public function getWorld();
}

class MyHelloWorld {
    private $world;
    use Hello;
    public function getWorld() {
        return $this->world;
    }
    public function setWorld($val) {
        $this->world = $val;
    }
}

同时,针对类中已经实现的方法,Trait 没有效果

trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHello() {
        echo 'Hello Universe!';
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello(); // echos Hello Universe!

那么 Trait 的出现是为何呢? 有哥们的回答比较有意思 ,但不无道理:

因为php没有javascript作用域链的机制,所以无法把
function bind到class里面,曾经以为php 5.3的闭包
可以做这个事,最后才发觉作用域的设计不允许这么干

但话说回来,拿 interface 和 Trait 类比,显然 Trait 有更多方便的地方(虽然 两者不能完全相互替代)。

不过很显然 Trait 目前还处于测试阶段,它的未来相比其他 PHP5 新推来的特性还有 更多让人观望的地方,但或许这特性能改变 PHP5 未来继承的方式。

因为,我个人坚信 PHP 的作用链设计迟早会改得「更像 JavaScript」,即便这事情会在遥远的 PHP6 。

参考链接

-- EOF --

随记 Google Developer Day 2011November 6, 2011

有幸参加了 今年的 GDD ,这里主要记录下对于当天所见的所得。

从时间和会场的安排上来看,一天的时间、两个会场想要同时听遍所有的演讲是不可能的。从技术方向来看,今年的 GDD 明显分成了 HTML5 和 Android 俩大块。由于目前工作的关系,我更多的参加了有关 Android 的内容演讲。

http://s0.i1.picplzthumbs.com/upload/img/ad/fc/2d/adfc2d40247febc41ceac0af56c7a1704c768d22_wmeg_00001.jpg

Android 其实还是舶来品

Google 的工程师 Galpin 在讲述 Android4.0 新功能的时候,我特意留意了下现场参会者的手机。比较有趣的一点是现场参与者的手机程三大派系:iOS 设备(iPhone4 居多)、非智能手机(NOKIA 居多)、还有就是各种 Android 设备。

当然,这个现场其实很容易找到原因,有可能是 GDD 本身就是非盈利性的会议,来者的背景各种各样;同时,这会其实是 Google 自己的产品推介会(即便是面向开发者),所以推广产品的氛围会大于技术讨论。

根据我对些数据的掌握,从地理上说南北方的差异还是很大的。iOS 似乎在上海这座城市明显比 Android 设备要多些(在地铁上的观察),这是否预示着 iOS 设备比各种 Android 设备更受人欢迎些?

Google 是「版本控」

回到 Android4.0 本身,先对于新功能本身不做任何的评论。单单对比其版本号,就十分的有意思。iOS 从 1.0 发展到 5.0 用了将近四年的时间,而 Android 从 1.5 发展到 4.0 只用了不到二十个月(当然,这没法和 Chrome 比)。

会议间坐我旁边的哥们带点报怨的口气在揶揄:「不用等到 2012,我们就可以用的上 5.0 ,和 iOS 看齐了!」。版本号的迅速提升显然对于开发者而言是个坏消息,Google 这做法我想是出于商业和推广考虑。

Google Maps?

似乎每次 GDD 都会有个主题,这次的 GDD 有大量的 Google Maps 上的技术推广。从技术角度上讲,有关 Google Maps 的技术阐述并不十分的复杂。

今年主讲 Google Maps 我不得不讲前几天传出 Google Maps 将要收费的传闻 联系起来。

虽然官方并没有对此做任何正面的回应,但一旦如果其收费,那么对于开发者而言,Google Maps 将会是他们的成本还是新的赢利点?

毕竟,从目前的市场情况而言,Google Maps 是绝对占有领导性的地位的。

Web VS. Native

今年 GDD 分成 Android 与 HTML5 俩大块,实际上按照我的理解其实就是 Native App 与 Web App 的两大不同派系的技术发展方向。

很明显,从各会场的参与人数就可以看出,上海开发者对于 Android 的兴趣目前占有绝对的优势。不过也可以了解到,很多都是想往 Android 平台上转移的开发人员(他们或许是上述使用 NOKIA 的一员?)。

一直在追赶

据 Google 官方的阐述,Android 市场的下载量首次超过 iOS。个人对于这新闻并不十分的激动,在我看来 Google 过于强调数量而忽略了质量。

同比想到了 Google 近期的一系列调整 ,我不得不说「Google,你还是别追了,另外条路更适合你」。

— EOF —

Yahoo 统计