Blog

  • Windows 8 Consumer Preview 发布会下载

    微软昨天发布了 Windows 8 Consumer Preview。

    今天除了忙着下载 ISO 文件外,另外就是等待发布会的完整视频。

    看了许多 Apple 的发布会,看看微软也是别有一番风味。

    下载页面:http://www.microsoft.com/presspass/presskits/windows/videogallery2.aspx

    直接下载地址:http://cdn-smooth.ms-studiosmedia.com/news/HTML5/FINAL_PRESENTATION_022912.mp4

  • JSMinNpp 下载统计的一些有趣数字

    从 2010 年 9 月 10 日开始(原来研究生一入学就开始了,我都不记得了),至目前,前十名是:

    • 美国
    • 德国
    • 中国
    • 俄罗斯
    • UK
    • 法国
    • 印度
    • 巴西
    • 加拿大
    • 意大利

    只有一次下载的是:

    • 斯威士兰
    • 格陵兰
    • 法属圭亚那
    • 马拉维
    • 维京群岛(邓肯老家)
    • 马里
    • 安哥拉
    • 莫桑比克
    • 尼日尔
    • 法罗群岛
    • 法属波利尼西亚
    • 根西岛
    • 百慕大
    • 曼岛(Isle of Man,男人之岛:))
    • 开曼群岛
    • 安圭拉

    台湾地区 1,150 次,香港 754 次,澳门 12 次。

    阿富汗 27 次,伊拉克 21 次,伊朗 294 次,巴勒斯坦 41 次。

  • Firefox 10

    Firefox 的版本号终于到了两位数,我把最近几年主要浏览器的版本号变迁做成图:

    web-browser-version

    Chrome 一开始很快,后来保持了平稳;

    Firefox 一直很平稳,后来一度有所减慢,在 Chrome 压力下突然加速;

    IE 嘛…

  • 改用 Android 之后 II

    在换到 Moto Defy 进入 Android 阵营之后,曾经写过一篇博客,对比 iOS 系统和 Android 系统。这篇博客被一些网站转载(1, 2)后,被各种“大神”们猛喷

    现在 Defy 已经用了快半年,期间也接触过一些别的 Android 手机,最近实验室的项目更是进入了 Android 开发领域,是时候再写一篇,进一步写一写使用的感受。这次就不做对比了,因为手头没有运行 iOS 5 的苹果设备,而且也没有怎么用过新的 iOS。

    先看一看之前那篇中写到的观点。

    • 同步

    我始终还是认为,iOS 的同步是一个很好的方法,在音乐和视频传输、应用程序安装和数据备份方面都有明显的优势。

    (更多…)

  • ZOIZ

    2012 到了,那个啥,玛雅人预测要地球毁灭了?如果真的是这样的话,还有很多事情没有干呢。

    2011 就是不断的南京-景德镇-南京来回的跑,实验室的项目真是相当的麻烦。暑假中间去趋势科技呆了一周,认识了不少大神,不知道明年是不是就从了趋势,不过也许外面的天空会更蓝一些。JSMinNpp 如预测的超过了 100,000 次下载,不过持续更新的也就 24% 左右。11 年还首次做了小规模的公开 PPT 演讲,其实开口说话也没有那么难。

    技术的道路是走得比较顺利,不过感情方面持续不给力,好人卡有越拿越多的势头。眼看世界末日就要到了,为了人类的未来,还得继续加把劲。

  • fHash 1.5.8 Released

    fHash 1.5.8 发布

    界面做了一些调整,将原来难以理解的“查找”改为更明确的“验证”,修正了一些翻译上的错误。

    Changed “Find” to “Verify” and fixed some translations.

    http://sourceforge.net/projects/fhash/

  • Google 今天又碉堡了

    Firefox 或者 Chrome 之类的现代浏览器,在 Google 搜索 let it snow,就能看到下雪还有窗户上的雾,还能在上面写字。不过 IE 又被华丽的无视了(IE 9 也没有,我机器上的没有,也有人说 IE 9 有)

    encryptedgooglecom-2011-12-18-15-43-25

    encryptedgooglecom-2011-12-18-15-44-54

  • 100,000 达成

    JSMninNpp 今天终于达到的 100,000 次下载,总共用了1年+2个月的时间,谨以此文纪念一下。

    jsminnpp-100104

    不过可惜另一个目标:周下载 10,000 次没有达到,目前最好 <9,500 次。

    jsminnpp-9463

  • Google stackoverflow in Firefox

    自从发现了 stackoverflow.com 就无法自拔,csdn.net 之流完全无法何其匹敌。不过 stackoverflow 自己的搜索还是不太靠谱,于是每次都是用 Google 的 site 参数搜索 stackoverflow.com,用起来比较麻烦。于是做了个 Google Stackoverflow,可以在 Firefox 的搜索栏里面直接用 Google 搜索 stackoverflow。正在审核中,不过已经可以尝试安装了。

  • x=x++;

    之前囧哥曾经写过一个日志,讨论一个问题,就是在c/c++里面这个代码的结果

    x = 1;
    x = x++;
    

    执行后,x是2。这个结论还是比较显而易见的,不过编译器到底是怎么处理这段代码的呢?
    我用 Fedora 15 自带的 gcc -S -O0 将 .c 编译成 .s 文件,来看看究竟编译器干了什么。

    int x = 13; // 为了看汇编更方便,赋值13
    x = x++;
    

    被翻译成如下的汇编代码:

    movl	$13, -4(%rbp)  ;x=13
    addl	$1, -4(%rbp) ;x++
    movl	$0, %eax
    popq	%rbp
    

    从汇编码来看,gcc 是这样理解x = x++的:

    x = x; // 被优化掉了
    x++;
    

    也就是对于 int 这种 trivial 类型,= 的优先级高于后置++。 先赋值,再做后置++。
    我们再来试几个代码:
    第一组

    int x=13;
    int y;
    y = x++;
    

    翻译结果:

    movl	$13, -4(%rbp) ;x=13
    movl	-4(%rbp), %eax ;eax=x
    movl	%eax, -8(%rbp) ;y=eax
    addl	$1, -4(%rbp) ;x++
    movl	$0, %eax
    popq	%rbp
    

    ————————————————–
    第二组

    int x=13;
    int y;
    x = y = x++;
    

    翻译结果:

    movl	$13, -4(%rbp) ;x=13
    movl	-4(%rbp), %eax ;eax=x
    movl	%eax, -8(%rbp) ;y=eax
    movl	-8(%rbp), %eax ;eax=y
    movl	%eax, -4(%rbp) ;x=y
    addl	$1, -4(%rbp) ;x++
    movl	$0, %eax
    popq	%rbp
    

    ————————————————–
    第三组

    int x=13;
    int y;
    y = ++x;
    

    翻译结果:

    movl	$13, -4(%rbp) ;x=13
    addl	$1, -4(%rbp) ;++x
    movl	-4(%rbp), %eax ;eax=x
    movl	%eax, -8(%rbp) ;y=eax
    movl	$0, %eax
    popq	%rbp
    

    ————————————————–
    从各个例子中可以看出,gcc 对于 int 这种 trivial 类型,认为 = 优先级高于后置++,低于前置++。

    赋值先于后置++,后于前置++。

    即使复杂点的例子x=((x++)+(y++)),相当于:

    x=x+y;

    x++;

    y++;