Category: 小小草

IT 技术领域学海无涯。其实任何领域都学海无涯,无非 IT 发展太快了,让我有更多嘘唏。希望我掌握的技术有如小小草,虽然渺小,却有旺盛的生命力。

  • Gmail的思维

    早在Gmail还需要邀请才能加入那年代,我认为Gmail在hype,没去用。后来,Google App方式的Gmail才让人觉得实在,用到现在满意度99.99%,尽管Gmail的行为比较怪,邮件往往出现在未曾预期的地方。比如,发出去的邮件不在Sent Mail里,反而在Inbox。但Gmail对邮件位置的调整99%以上都是更合理的调整,所以我一直也没关心Gmail到底是怎么组织我的邮件的。

    最近读到Hacking Gmail,所以,我回头仔细阅读了Gmail的帮助文档。有一大发现是Gmail里没有文件夹,而是使用labels系统来tag邮件。Google认为labels有三个优势:

    • A conversation can have more than one label.
    • A conversation can be in several locations (Inbox, All Mail, Sent Mail, etc.) at once, making it easier to find later.
    • You can search conversations by label.

    这一说就让我跟上Gmail的思维了。Labels系统也是管理conversations必然的要求。在Sent Mail里找不到已发送邮件也变得可以理解。

    Gmail的Imap也是很独特,Google自称Gimap;Gmail的删除分两种 – delete 和 archive。当Gimap和删除结合在一起时,初看会很怪,慢慢地我才看懂Gmail的思维。

    在Gmail 的web interface里,我们会看到两种删除模式,delete把邮件移到Trash (或者说打上Trash标签) ,邮件可以在Trash里暂留30天;archive把邮件打上“空白”标签,邮件只能在All Mail里找到,在邮箱系统的某个地方还可以暂留6年。

    通 过Gimap访问Gmail,imap delete并不是google delete,而是google特有的archive。所以,要在imap里删除邮件,邮件立马从当前文件夹消失了,而不是打上删除线。同理,要在 imap里彻底删除邮件(purge)也是不可能的。要用imap实现google delete,只能用拖动邮件到Trash的办法。

    Archived 邮件现在只能通过All Mail访问,我还未找到专门显示archived邮件的办法,这使得一次性彻底删除所有archived邮件变得非常麻烦。考虑到archived邮件 没有标签,我尝试过用“-label:label1 -label:label2 -label:label3 … -in:inbox -in:trash -in:spam” search mail,但不成功。

  • 用Gmail做企业级的Contact Share Management

    我用Gmail里的Google Contact作个人级的Contact Management,迄今感觉很好。

    如果是企业级的Contact Management,其中一个关键性的要求是Contact Share。我们公司用Act!,Act!在我眼里一无是处,又贵又慢又不好用。升级版的Act!可能会好一些,但实在没必要做这个投资。老板的想法基本跟我保持一致,不过他主要是从省钱的角度考虑。

    想在企业级的Contact Management软件投资方面省钱到底?关于轻量级的企业Contact Share Management,我有个不是很成熟的想法:利用架构在Google App上的Gmail来做。

    我们来看看Gmail是否能达到Contact Share的要求:

    首先是联系人信息共享,这个Google App已经考虑到了,只要在Manage this domain的User accounts里Enable contact sharing即可。

    其次是联系人活动共享,也就是查询联系人的来信和去信,不管哪个同事是联系人的客户经理。Gmail有个独到之处——按Conversation归类email(还有chat,如果有的话)。这使得按联系人进行活动查询变得可能。至于同事之间的来信和去信共享的问题,可以通过设立一个公共邮箱,配合pop from other account (maximum 5) 和send mail as功能,各位同事仍可个性化的收发邮件,但只要大家遵守一定的规则,共享邮件也不是问题。当然,活动不仅是邮件往来。Hacking Gmail一书里讲到可以用Gmail来make note, record to-do, etc. I think those workarounds can basically cover activities.

    但,Gmail无法设置在个别同事之间Share Contact,留给我的升级余地很小。同事间的共享活动应该遵守一套什么规则才能保证信息共享?我还没静下心来想。如何跟ERP集成?我也没底。所以以上命题只是我不成熟的想法。

  • 轻松解决无法删除邮件的问题

    今天同事又报告说,Outlook Express无法把几封发件箱里的邮件删除。

    有了上次解决发信后邮件滞留发件箱的经验以后,这个问题对我来说就很简单,我不再徒劳地在发件箱里找原因。我首先看了一下已删除邮件文件夹,好几千封信,这些同事都把垃圾邮件仍当宝贝一样收藏着。已删除邮件.dbx已有2Gb,看来到了不稳定的临界点。

    我说,既然是已删除邮件,就定期清空嘛。

    同事说,好。

    我说,那现在我帮你清啦?

    同事又说,好。

    于是,彻底清空已删除邮件。无法删除邮件的问题立马解决。

  • Unlock Orange SPV M600

    前不久想Unlock Orange Livebox,方法已经找到,但过程太麻烦,暂时没有去试。

    前天又Hack了My Book World,一时兴起,想想我的Orange SPV M600手机还未Unlock,就顺手找了资料把它解锁了。网络锁实在是烦人,多年前我签第一个Orange手机后,立马想尽办法解锁;多年后我的脾气也磨没了,Orange SPV M600用了一年多也没想着去解锁,合同是18个月,早解了也仍是用Orange的SIM。

    最近Hack上瘾,花了十多分钟就把Orange SPV M600解锁了。感慨于关于 “Unlock Orange SPV M600”搜索排在google第一位的竟然不是免费方案,我特意写一篇(其实基本是翻译) Orange SPV M600免费解锁方案。

    1. 去网上找一个叫lokiwiz03的压缩包,解压。
    2. 把手机和电脑ActiveSync。
    3. 把lokiwiz03压缩包中的EnableRapi.cab拷贝到手机任何地方,运行之(需要忽略一些安全提示)。
    4. 在电脑上运行lokiwiz03压缩包中的Lokiwiz03.bat,在一个DOS窗口你会看到一串SIM解码。
    5. 这时手机可以和电脑断开了,放入一张其他网络的SIM,会提示输入SIM unlock code,把刚才的SIM解码输入既可。(某些情况下还会再次提示输入Service Provider unlock code,把SIM解码再输一遍即可。)
  • 琢磨不透的.iso

    我下载了一个.iso光盘镜像文件。光盘虚拟技术这么发达,我很少刻盘,使用时只要用虚拟光驱加载这个.iso就可以用了。

    今天有个同事拿来一张空白CDR,让我把这个文件拷贝给他。本来我以为不是什么难事。

    首先我看了一下.iso的大小为917M,就算把CDR超量刻录也不可能超刻到970M。所以,我用ultraISO删掉了.iso里用不到组件,然后保存,结果删除部分内容的.iso体积不但没有缩小,反而激增到2.4G。即使用.isz镜像压缩格式保存,仍有1.2G。

    而且,用虚拟光驱加载原.iso文件,在虚拟光驱上右击,查看属性,该虚拟光盘的大小只有917M;如果选中虚拟光盘根目录下所有文件夹和文件,再右击查看属性, 发现选中的所有文件夹(含子文件夹)和文件的总大小为2.4G。

    我百思不得其解,也未能帮同事刻成一张CD。

  • Where to Set $xoops_charset

    I prefer UTF-8, always.

    I am sorry to see Xoops new release is by default still ISO-8859-1 encoded. Unfortunately, Xoops have not provided a complete reference book for all smarty tags. I struggled to change the charset.

    First, I looked at theme.html, and found it is

    <meta http-equiv="content-type" content="text/html; charset=<{$xoops_charset}>" />

    instread of

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

    Although I could erase “<{$xoops_charset}>” and put in “UTF-8”, I knew it was not the best way to change the default encoding.

    So I began to search for where the smarty tag $xoops_charset is saved. I thought Xoops the adminstration interface had a place to change the charset. I went through each field in Site Preferences and found nowhere to set the charset.

    It becomes a guess work for me where which value was stored. I searched the database but I could not find any value is “ISO-8859-1”.

    Last method I used was a global search for the string “ISO-8859-1” in all Xoops source files. 16 hits. “/language/english/global.php” was likely to affect $xoops_charset. I opened it and changed a line from

    define('_CHARSET', 'UTF-8');

    to

    define('_CHARSET', 'UTF-8');

    Then, UTF-8 encoding is successfully changed.

  • 制作.ico文件

    最简单的办法就是把16 x 16或32 x 32的.bmp或.gif文件改名为.ico。

    有人说这么做并没有得到真正图标格式的.ico,无法导入到.exe文件作为.exe的图标。可是,如果只是想做一个favicon.ico,作为网站的icon,那么改名的办法足以解决问题。 只要浏览器能正确显示出favicon.ico,还有必要去关心这个图标是否符合.ico标准吗?

    通过改名得来的.ico通常比真正的.ico文件要小一倍,更加体现改名.ico的优势。

  • Orange Livebox USB Host Port

    据说,可以利用Orange Livebox USB Host Port建立一个NAS。我很感兴趣,因为我正打算买一个NAS。NAS DIY如果能就地取材,利用现成的Orange Livebox加现成的移动硬盘,对广大的Orange Livebox用户是个福音,可能还可以推广到其他Livebox用户。

    移动硬盘已经普及了,NAS还是新鲜玩意。

    我浅尝着做了两个实验。先是把移动硬盘连接到Orange Livebox USB Host Port,Orange Livebox准确地识别出这个设备,但我暂时没找到访问这个设备的办法。然后我想看看Orange Livebox还能识别其他设备吗,就把Orange SPV M600手机用USB连接到Orange Livebox,Orange Livebox呆了一下(肯定没想到我会插一个mobile phone),就自动重启了。重启后无法上网,手机倒开始充电,我只好把手机拔掉。

  • WordPress编辑应该避免使用浏览器的后退

    我刚才吃了点苦头:我写了两篇贴士,一篇贴士写好发布后,我使用了浏览器的后退按钮,回退到post-new.php页面,这时页面表面上看跟Write Post的页面一模一样,但post_id已经产生,而且跟第一个贴士的id一样,结果第二个贴士保存时,就把第一个贴士给覆盖了。郁闷,只好重新输入。

    所以我想提醒大家,尤其是WordPress的编辑,应该避免使用浏览器的后退功能。不过,WordPress也应该更贴心一点,post-new.php应该关闭cache,这样每次进入post-new.php,不论是用浏览器的后退或是点击Write -> Write Post,每次都更新post_id,这样就不会覆盖以前的贴士了。这时的post_id应该是临时的,所以不用担心多次进入post-new.php页面导致数据库保存了空内容的贴士。

    我特别喜欢程序在处理完post data以后作一个redirect,这样也可以避免上述数据覆盖的问题,而且解决后退时浏览器提示页面过期、要重新发送数据种种的不友好问题。Header redirect已成我的习惯,这么做好处很大,迄今也没遇到一起redirect after post带负面影响的情景。不过,我发现有同样习惯的人不多。难道有很多不好的scenarios我没想到?

  • 邮件发送后滞留在发件箱的解决办法

    办法很简单:清空已发送邮件。

    我曾为邮件发送后滞留在发件箱的问题辗转反复,说来话长。

    我办公室有一台专门的电脑处理印刷稿件,每天收发好多超大邮件,邮件程序是Outlook Express,邮件带的附件大多是高分辨率的PDF或JPEG等文件。每隔若干天,同事就会找我帮忙:Outlook Express发信出现问题,邮件明明已经发出去了,对方也收到了,但邮件就是卡在发件箱里,Outlook Express错误提示是一项或多项操作未完成,但没有更多的原因说明。其实在同事发现Outlook Express工作不正常之前,发件箱里已经堆积了很多邮件,这些邮件都已经发送了N份copies给收件人。

    发件箱出现这种症状是随机的,也搞不清楚是什么诱发了发件滞留,有时一个不带附件的小邮件也会诱发发件滞留发件箱,但一般来说带附件的大邮件更容易导致发件出错。我以前判断是发件箱有毛病,因此用不同的方法去重建发件箱。我至少尝试了以下方法来解决问题,因为任何一个方法并不总是灵光,其效力也是随机的。

    压缩所有文件夹(尽管矛头指向发件箱,但压缩一下所有的文件夹也无妨)

    • 导出邮件后再导入回来
    • 删除发件箱.dbx(Outlook Express启动时会新建一个发件箱.dbx,如果检测到发件箱.dbx不存在的话)
    • 干脆在Windows下创建一个新用户,再导入邮件
    • 重装Outlook Express后导入邮件

    以上方法都只能工作一段时间。我按“Outlook Express发信出错”、“Outlook Express发件箱不能清空”等关键词搜索前人一劳永逸的办法,搜到很多的IT网站和论坛相关讨论,但那些IT高手们也说他们也有同样的问题,也用同样的方法,也只能一时有效。我也只好将就,对同事的求助习以为常,用临时方法解决发件箱问题。

    昨天同事又来找我。我按老规矩把老方法一一试来,在等导入邮件的操作完成时,我突然来了灵感:我为什么总认为是发件箱出问题了呢?为什么不能是已发送邮件出问题呢? 我的演绎是:

    当已发送邮件越积越大时,Outlook Express的某个臭虫导致Outlook Express无法稳定地把一封已发出的邮件添加到已发送邮件文件夹。不稳定性导致症状出现的随机性。邮件实际已投递,但由于不能成功添加到已发送邮件,就只好滞留发件箱了,错误提示说一项或多项操作未完成,其实是指最后一步没完成——一切都自圆其说了。

    那台电脑的已发送邮件.dbx有3G大,我将它重命名为旧已发送邮件.dbx,然后删除了已发送邮件.bak,发件箱症状立马就消失了。称之为发件箱症状其实也不准确,应该叫已发送邮件症状。我相信我的办法可以永久地解决问题。

    回想起来,我也曾造访过微软的网站寻求帮助,微软知识库里至少有三篇文章是讲发件箱问题的,但现在看来,这些都是“头痛医脚”。我不指望我的办法能被微软收录,但我确实希望这篇文章能在google关于“邮件滞留发件箱”类别的搜索结果中能排个好名,为众多的Outlook Express迷途者指点迷津。

    顺便说一下,看别人的类似求助,似乎Outlook也有“邮件滞留发件箱”问题,我相信清空已发送邮件的办法同样适用于Outlook。