Tag: usability

  • DD-WRT vs OpenWRT vs FreshTomato

    最近把两个闲置的 Netgear R6300 v2 刷了几次 WRT 和 Tomato firmware,意在用它们代替 Draytek 2860n/2910 组建 site-to-site VPN,同时用上 VLAN。

    题外话:Draytek 2910 只支持百兆网口,Draytek 2860n 虽说都是千兆网口,但 WAN throughput 仅在 300 mbps 左右,归根到底是一款 DSL 年代的产品,已经跟不上时代的。认识 Draytek 十多年,本是 Draytek 忠实的客户,买过它几十个产品,都有不错的表现,除了最后一批 Draytek AP910C 令我失望。最近升级路由器,本也考虑过 Draytek 3910,但最终选了 Mikrotik CCR1036。认识了 Mikrotik 一个多月,有比较就有伤害,突然就觉得 Draytek 格局太小,以后不会再买。Mikrotik 有点贵,暂时不想用第二台 Mikrotik 组建 site-to-site VPN。

    我最先把 Netgear R6300 刷了 DD-WRT,读了几篇 wiki,说 VLAN 不能在 GUI 下完成,需要 GUI+CLI 才行。我倒不是排斥用命令行,事实上我还是挺喜欢敲打命令的(显得专业),但我排斥 DD-WRT 这个设计逻辑,我觉得搞个 VLAN 还得用到命令行,让人不爽。

    于是我立马投入了 OpenWRT 的环抱。OpenWRT 确实在 VLAN 界面上做得比 DD-WRT 好多了,也不需要用到命令行,就该这样。OpenWRT 安装插件也很方便,我就是在 OpenWRT 站点上注意到 Wireguard VPN(但不预装),据称要好过 OpenVPN。但还没来得及研究 VPN,就发现 OpenWRT 不支持 Netgear R6300 v2 的 5Ghz Wi-Fi。我觉得这不能接受,毕竟 Netgear R6300 v2 硬件支持 802.11ac,Draytek 2860n 只支持 802.11n,这也是我把它换掉的一个原因,如果整个 5Ghz Wi-Fi 都没有,那不是退步了?

    于是我又找了 FreshTomato,看 wiki 说它支持 Netgear R6300 v2 的5Ghz Wi-Fi 才刷。FreshTomato 的 GUI 做得没有 OpenWRT 好,但搞个 VLAN 没有问题。FreshTomato 预装 OpenVPN,几乎是一键设置,把复杂的 OpenVPN 简化得倒是很好,我很顺利地在两台 FreshTomato 间建立了 OpenVPN 隧道,可是无法访问对方局域网。我正花时间在研究怎么打通 site-to-site,却发现 FreshTomato Wi-Fi 并不稳定,隔几个小时就无法访问 internet(有线连接的 LAN 口能稳定访问 internet),无法确定是它 Wi-Fi 本身的问题,还是 OpenVPN 带来的问题。不管如何,我再次决定抛弃 FreshTomato。

    好马也吃回头草,我觉得还是投回 DD-WRT 的环抱。走了一圈,觉得就算一定要用命令行实现 VLAN 也可以接受了,usability 的缺陷总比某些功能性的缺陷要好吧。

    然后就又刷了一遍 DD-WRT,没有其他选择了,只好静下心研究我所需要的 VPN 和 VLAN。静下心就有惊喜,我发现 DD-WRT 预装了 Wireguard,自从认识了 Wireguard 后,她就是我的优选方案。至于 VLAN,我觉得或许它并不需要借助命令行去设置,之前看的 wifi 可能过时了,但我还没时间去研究,先搁着吧。

  • When to use Magento layered navigation?

    Rcah module for Magento
    Rcah module for Magento

    Although I released a Magento module “Root Category as Homepage“, which enables replacing the default CMS page with the root category as homepage, thus the users can start layered navigation from the very top level of category, the usage of this module should be limited, for the sake of usability.

    In short, use Magento layered navigation only to narrow down the choice of products. Do not use it for the purpose of grouping products by some filter attributes. There are many other ways to group products together.

    I will explain in details when I have some more time.

  • OCR in Google Drive

    今天再次惊讶于 Google 的强大。

    在 Google Drive 里打开一个 PDF 文件,是一个类似于 lightbox 效果的在线预览。我今天打开的是一份英文文档扫描后保存为 PDF 的文件,lightbox 里出现的是图像。神奇的是,用鼠标去选中其中某些文字,也能像操作文本文件一样高亮显示选中的部分;更神奇的是,按下 Ctrl+C,再到别处 Ctrl+V,粘贴出来的 OCR 以后的文字。

    PDF 在线预览、图形类似文本的高亮显示、OCR,这三件事情能如此完美的结合在一起,不简单。

  • Awful Baidu login

    我见百度文库上一篇文章不错,想要下载。这时百度提示我要登录:

    Baidu login prompt
    Baidu login prompt

    我是最烦注册登录的,但看到百度说可以使用QQ账号登录,我开心地登录了QQ。

    Baidu still require me to create an account after I have logged in QQ
    Baidu still require me to create an account after I have logged in QQ

    等一下,这是什么?!登录了QQ以后,百度仍然顽强地要我关联一个百度账号。那叫我使用QQ账号登录的意义何在?!是 Open Login 还是 Awful Login? 为了拉拢用户,却不注重用户体验,愚蠢的百度逻辑!

  • Add Value to Hotel TV project

    我受托为小型连锁酒店做一个解决方案,配合现有的大屏幕全高清 LED TV 提供增值信息服务。要求大致是:

    • 定制桌面背景,主要是为了致欢迎辞,如 Welcome, Mr and Mrs Bruces,客人姓名从指定数据库或 API 读取。
    • 打开 TV 见桌面,为了避免客人开 TV 就是为了看电视节目,而错过酒店想要传递给客人的重要信息。
    • 在桌面美观优雅地摆置一些图标,客人点击启动预装的应用。
    • 应用如 Web browser, Youtube, Facebook 等,都不是资源消耗型。
    • 客人不能改变桌面,不能碰及设置。客人浏览痕迹能在客人离店后快速清除。或客人可以改动任何设置,但设备能在客人离店后快速重置。
    • 整个应用环境使用起来如流行操作系统(我指 Android, Windows XP, Fedora 等)一样直观,而不是如现有的大部分酒店用的 Hotel TV 系统那样,摸索半天,记不住向上/向下键是干吗的,向左/向右键又是干吗的。
    • 只能有一个遥控器,含 TV 遥控器在内。就是说,一个遥控器,要控制电视频道、音量,还要控制桌面上的应用。
  • Javascript bookmark this page in Chrome

    I have a stupid client asked me to add “Bookmark this page” to his web pages. I explained to him how bad usability it is but he did not listen to me. He insisted the majority of web users were as stupid as him, so him wanted to help them bookmark the page.

    Nevertheless, it is not my site and he is my customer. Customer is the God. So I spent some time digging around and found this script.

    <script type="text/javascript">
    //<![CDATA[
    function bookmark_us(){
    var url = window.location;
    var title = document.title;
    
    if (window.sidebar) // firefox
        window.sidebar.addPanel(title, url, "");
    else if(window.opera && window.print){ // opera
        var elem = document.createElement('a');
        elem.setAttribute('href',url);
        elem.setAttribute('title',title);
        elem.setAttribute('rel','sidebar');
        elem.click();
    } 
    else if(document.all)// ie
        window.external.AddFavorite(url, title);
    }
    //]]>
    </script>
    

    However, Chrome browser does not allow us to bookmark any page using javascript. There is no workaround, and I think Google is absolutely right on this.

    My concern is: the above script does not do anything in Chrome. Sooner or later my client will come back to me asking why my script does not work in Chrome. To avoid being questioned, I finally use another solution. It is a jQuery plugin called jBrowserBookmark. It will prompt the correct way to bookmark in unsupported browsers.

  • Magento extension: rcah 0.1.1 is released

    Magento store owners are having a challenge when using rcah 0.1.0, especially for homepage. The nature of homepage is CMS, most content of it static.

    Store owners want their visitors (especially first time visitors) to read static content on the homepage, but static content become obstacles filling in the central area of the page when visitors start to click on filters for refined results.

    Root category as homepage 0.1.1 is released to address the problem. It conditionally hides the CMS Block on category pages. It only hides CMS Block in Display Settings of a category (category landing_page attribute). Static CMS Blocks used for others purposes (in sidebar, footer, etc) are not affected.

    I must say the conditions when hiding the CMS Block are subtle. Please refer to readme file with the release for details.

    Download RootCategoryAsHomepage.tar.gz

  • Why not use over-sized images in Magento?

    为什么不要在 Magento 下使用过高像素的图片?其实这个命题跟 Magento 没有多大关系——任何网站都不要使用超过实际需要尺寸的图片。

    只是 Magento 强大的图片处理机制容易让人产生惰性:如今买个相机动辄 10m pixels,拍完照一上传,只要 php.ini 允许足够大的值,Magento 也认可,但是,如果你真的这么做了,至少有这几点不良后果:

    • Can not send large images to Google Base (now called Google Merchant Centre). 虽然 Magento 能在自己的网站上缩放图片,但显然没有为 Google Base 考虑到。若为了让 Magento 缩放图片兼容去修改 GoogleBase module,在我看来有点头痛医脚的感觉。
    • Cost longer time to generate images in cache. 如果整个网站最大图片也只要 600x600px,那么何必为每次清空 image cache 后等上几秒钟来一张 10 兆像素的照片缩小成 600x600px?
    • Waste bandwidth to synchronise / backup media folder. 或许 unlimited bandwidth 不值得担心,但为数据同步/备份节省点时间不好吗?
    • My daily backup excludes some over-sized folders. 我有每日备份的机制,但这个机制无力顾及一些体积过大的文件或文件夹(通常也是不常更新的文件)。所以我会排除某些文件让备份文件保持小巧。

    作为最佳实践,图片处理不应该依赖于 online resizing。我想 Magento 在管理图片上,也可以更周到一些,适当时提示说,“照片太大,需要缩小保存吗(不保存原图)?”。

  • UK airports postcode

    Gatwick

    • South Terminal: RH6 0NP
    • North Terminal: RH6 0PJ

    Heathrow

    • Terminal 1: TW6 1AP
    • Terminal 2: Closed until 2014.
    • Terminal 3: TW6 1QG
    • Terminal 4: TW6 3XA
    • Terminal 5: TW6 2GA

    BAA Heathrow 网站上把整个 Terminal 2 版块都下线了,暂查不到 postcode。我认为在 Terminal 2 关闭期间,应该保留 Terminal 2 版块,只是在显著位置提示该 Terminal 处于关闭状态。我原本不知道 Terminal 2 处于关闭状态,因为在 BAA Heathrow 网站上根本找不到 Terminal 2 版块,我去了其他的新闻站点(其实是去年的旧闻了)才知道这条消息。

    虽然各个机场的 postcode 很容易查到,但每去一次机场都 google 一次然后在 airport website 上翻好几页找 postcode 也挺烦,干脆我就在自己的空间记个笔记。

  • Email notification best practice

    我见很多购物网站花很多力气组织语言,把邮件正文用日常交流的通顺的口气写出来,以为顾客会喜欢读这样的邮件,但我认为事与愿违。在快节奏的社会里,大家阅读任何邮件时已经习惯最多扫一眼,通知邮件类似于营销邮件,能得到顾客一眼的停留亦属非常奢侈。

    比如,货物发运通知:

    xxx先生,

    我很高兴地通知您,你的订单xxx号的货物已交由xxx物流公司隔天送达。订单项下xxx商品预定数量xxx件,因库存不足,此批发送xxx件,余下的xxx件将于xxx天后发出。

    谢谢惠顾!

    通知中有很多重要信息,如果写进大段的文章,客人skim阅读时认为这是“你好我好大家好”式的寒暄,往往被忽略。因此,通知还不如写成bullet mark style:

    • 订单号:xxx
    • 物流公司:xxx
    • 预计抵达:隔天
    • 预定数量:xxx件
    • 已发:xxx件
    • back order: xxx件
    • back order ETA: xxx天

    当然,以上纯bullet mark格式是另一个极端。在实战中,应以bullet mark展示重要信息为基本原则,适当组织可读的礼貌用语,通知邮件才会有理想的效果。