Category: 编程、软件、技术

  • 2012年Windows 8最佳应用

    CNet.com同时也评选了2012年Windows8的最佳应用。原始链接:http://download.cnet.com/2701-33163_4-2051.html?tag=rb_content;main

    • 音乐类:iHeartRadio
    • 相片类:Fhotoroom HDR
    • 实用类:Metro Commander, Start 8。前者是一个Metro界面下的左右分栏文件管理器;后者为你重新显示Start界面……
    • 教育类:Khan Academy
    • 新闻阅读类:News Bento。这个不错。不过内置的站点RSS比较少,不过你可以直接加RSS进去。
    • 食物类:Allrecipes。这个作为单独一类,我表示意外。这个应该是Reference类的吧?
    • 游戏类:Violet Storm for Windows 8。完整版价格在26元,可以试试。
  • 2012年iPad最佳应用

    如约而至,推出了2012年iPad最佳应用评选。原始链接:http://download.cnet.com/best-ipad-apps/

    • 娱乐类:Netflix, GarageBand, Spotify
    • 照片类:Snapseed, iPhoto
    • 社交类:Facebook, Google+
    • 游戏类:Angry Birds Star Wars, Minecraft Pocket Edition Lite
    • 新闻类:Flipboard
    • 效率类:Paper, Evernote
    • 旅游/导航类:Google Maps for iOS——选这个一定是故意的!
    • 邮件/消息类:Gmail, Trillian
  • HP Microserver

    家里的福珑2F服务器终于不行了……经过5年的辛勤服务(主要是hg repository,还有一段时间的面向外网的WEB服务器),它终于倒下了。留一张照片,作为永久的纪念吧:

    福珑2F

    另外一个不得不抛弃它的原因是2F的源一直没有找到好的,所以支持它mips的架构的软件一直无法更新……再次强烈BS春阳的不作为。

    (more…)

  • SF2中使用createNativeQuery和ResultSetMapping

    任氏有无轩”的后台中有一个统计是得出每天对书籍详情页面的访问数量,结果集很简单:一个日期,一个该天的访问次数。

    在原生SQL下,这个并不复杂,如下的语句就可以完成: select count(v.bid) vc, date(from_unixtime(v.visitwhen+15*60*60)) vd from book_visit v group by vd order by vd

    但是这个语句稍作变动(将book_visit改为FQN的引用)在SF2中用常规的createQuery将不能执行,提示date函数不被支持。

    解决这个问题有两种方法,一种是quick-and-dirty的纯原生SQL:

    $q = $em->getConnection()->prepare('select count(v.bid) vc, date(from_unixtime(v.visitwhen+8*60*60)) vd from book_visit v group by vd order by vd');
    $q->execute();
    return $q->fetchAll();

    这个方法简单明了,适合初学者使用。

    作为SF2和Doctrine的推荐方法,我们要使用所谓的ResultSetMapping和createNativeQuery。

    我们可以这样简单的理解,ResultSetpMapping提供了一种映射机制,将原生SQL返回的字段映射到结果集的域,从而使得Doctrine可以以此构造返回的结果集,然后执行SQL语句,并将结果返回。

    应该说,即使你不使用createNativeQuery,而只是用createQuery,Doctrine也还是会隐含的做一个ResultSetMapping的,只是不用显式调用罢了。

    代码如下:

    public function getVisitCountByDay()
    {
    $em = $this->getEntityManager();
    $rsm=new DoctrineORMQueryResultSetMapping;
    $rsm->addScalarResult('vc', 'vc');
    $rsm->addScalarResult('vd', 'vd');
    $q=$em->createNativeQuery('select count(v.bid) vc, date(from_unixtime(v.visitwhen+15*60*60)) vd from book_visit v group by vd order by vd', $rsm);
    $res=$q->getResult();
    return $res;
    }

    这个调用中,最关键的其实是两个addScalarResultvc是标量结果很自然,但是vd为什么是标量结果?Doctrine的文档对此语焉不详。

    我的理解是,一旦结果集中包含了一个标量结果(vc),那么所有其它结果也自然要变为标量结果。STOP。

    本文收录于[go4pro.org]

  • 在Symfony 2中使用原生SQL

    在任氏有无轩站点中,有一个页面是用来给我自己看书籍详情页面的访问记录的,这个页面中需要做一些统计,比如:最近访问的是哪些书籍?访问量最大的是哪些?每天的访问量有多少?

    前两个功能都很容易实现,我也以为第三个功能也很容易实现。

    (more…)

  • 任氏有无轩一些小的改动

    这几天一直在“小打小闹”的改进我的任氏有无轩。

    今天完成了一个小功能:

    在书籍详细页面显示该书被访问几次以及上次访问的时间。

    由于我对处理文本文件(必然会牵涉到的正则)不是很熟,所以还是用数据库来完成。

    遇到的一个意想不到的问题是如何写日期/时间类型。

    最早我将数据类型定义为datetime,但是在写入时如果用string变量,出现:

    Fatal error: Call to a member function format() on a non-object in G:wwwrsywx2SymfonyvendordoctrinedballibDoctrineDBALTypesDateTimeType.php on line 44

    的错误。

    如果用Datetime变量,出现:

    Can't convert object Datetime to string

    错误。 最后我是用一个bigint来直接存储时间戳的方式解决问题……这个世界清静了……

    效果如下:

  • 任氏有无轩改版彻底完成

    折腾了很久,终于将我的任氏有无轩改版到4.0。

    这次的改版经历了很长时间。

    首先是用Symfony 2.X,这对我是个挑战,因为我之前都是基于Symfony 1.4.X来编写站点的。Symfony的一个最大的特点就是每次大的版本升级都会引入全新的东西,需要开发者去适应,这是闹哪套!

    Symfony 2首先是基于namespace,因此必须有PHP 5.3+的版本支持。我的主机在BlueHost上,应该说BH是很保守的虚拟主机服务商,在外界已经普及使用PHP 5.3的时候,它还死撑着用PHP 5.2。我还为此专门去信询问,回复是他们还要测试。没有这个最基本的平台,我的开发也就没有了动力。

    幸好,BH主机从善如流,一口气开始支持PHP 5.3/5.4,所以我才又重拾开发。

    其次是版面的设计。这要感谢前令狐,在7月份的第一届G4PCC上,他介绍了Bootstrap这个框架。这个框架的存在让我精神一振,因为它可以让一个程序员(而不是美工师)设计出比较优雅、简介的页面。通过简单的摸索,我就已经上手了。

    (more…)

  • 用Win8这两天

    这两天手贱,装了Win8。说说感想。

    界面和操作

    界面和操作暂时还没有那么不堪忍受。

    我这几天基本是在玩Metro的应用,感觉界面更简洁、更清爽,对于Content Consumer来说,是好事。我截取一个微博的界面:

    对于内容消费者,和轻量内容创建者来说,这是方向。

    输入法

    微软这次提供的输入法终于有了很大的进步,使我暂时还没有用别的输入法的想法。

    邮件/日程/联系人

    终于,微软的内置邮件程序可以支持OWA了!我可以直接收我公司Exchange的邮件了!我可以只要使用Office的学生和家庭版了!当然,也可以同步公司的日程和联系人了!内牛满面啊!

    吐槽点**我真的对微软很Orz!**

    • 我的LiveID在游戏中无法登录XBOX Games!目前我还不知道是不是墙的问题。
    • 我从市场装了一个Microsoft Mahjong。最后游戏胜利的时候会hang住啊!有木有!
    • 我还装了一个Adera的游戏。必须要登录才能玩啊!
    • 中文、英文切换有时失灵啊!会禁止IME啊!
  • DokuWiki后台升级

    今天升级了我的维客后台。我用的是DokuWiki。

    感觉界面清爽了不少。

    另外,安装了一个插件:MarkDownExtra。有了这个插件,只要我创建的页面后缀设置为md,就可以直接用MarkDown的语法了。

    给大家看个效果:

    markdown_in_wiki

    这么一来,可以基本解决Wiki没有离线编辑器的困扰。