WordPress 导出功能需要升级到 1.2 版本。 May 04 at 10:04 AM
Todo:需要整理增删改文章时操作 memcache 的逻辑。 March 26 at 02:29 PM
最近的 deletefacebook 轰轰烈烈,不知道什么时候就会有 deletetwitter deletegoogle 发生。使用互联网服务应该要有这样的觉悟:用了人家的服务,就会被当猪仔卖的。 March 26 at 02:15 PM
给用 JS 截断的文章加入了 CSS 渐变遮罩层,编辑时人工设置摘要的文章则无影响。 March 25 at 03:28 PM
博客文章(多行文本)的部分显示,除了编辑文章的时候自己截断,基本没看到有靠谱的解决方案。用 JS 截断,会遇到各种 HTML 标签,或者是空行。视觉上,还是加渐变遮罩更容易让人接受。 March 14 at 05:14 PM

GAE 使用的 jinja2 2.6x 版本的 filesizeformat 过滤器有 bug,2.7版本中已经修复,所以暂时只能自定义过滤器。

def do_filesizeformat(value, binary=False):
    """Format the value like a 'human-readable' file size (i.e. 13 kB,
    4.1 MB, 102 Bytes, etc).  Per default decimal prefixes are used (Mega,
    Giga, etc.), if the second parameter is set to `True` the binary
    prefixes are used (Mebi, Gibi).
    """
    bytes = float(len(value))
    base = binary and 1024 or 1000
    prefixes = [
        (binary and 'KiB' or 'kB'),
        (binary and 'MiB' or 'MB'),
        (binary and 'GiB' or 'GB'),
        (binary and 'TiB' or 'TB'),
        (binary and 'PiB' or 'PB'),
        (binary and 'EiB' or 'EB'),
        (binary and 'ZiB' or 'ZB'),
        (binary and 'YiB' or 'YB')
    ]
    if bytes == 1:
        return '1 Byte'
    elif bytes < base:
        return '%d Bytes' % bytes
    else:
        for i, prefix in enumerate(prefixes):
            unit = base ** (i + 2)
            if bytes < unit:
                return '%.1f %s' % ((base * bytes / unit), prefix)
        return '%.1f %s' % ((base * bytes / unit), prefix)

Google Appengine 通过 SDK 上传要用到代理,直接写成批处理命令,不用每次输入代理地址了。

@echo off 
rem "关闭自动输出"

rem "接收输入"

set input=
set /p input=The proxy port:

rem "输出得到的输入信息"

echo Set the proxy port:%input%
echo Set the the http proxy...
set http_proxy=http://127.0.0.1:%input%
echo http_proxy=http://127.0.0.1:%input%

echo Set the the https proxy...
set https_proxy=http://127.0.0.1:%input%
echo https_proxy=http://127.0.0.1:%input%

:begin

echo.
set /p input1=Which folder do you want to upload:
appcfg.py update ..\codes\%input1% --noauth_local_webserver

rem pause>null

echo.

rem "从begin标签处,再次运行"

goto begin

Hi-PDA论坛stylish绿色护眼样式

很久之前自己编辑的一份地板的绿色样式,在这里做个存档

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.hi-pda.com")
{
  #footer,.channelinfo,#modedby,#ad_text,tbody[id^="stickthread_"],h2 img,#visitedforums,.pageback,.pages a.prev
  {
    display: none !important;
  }

  body,#nav,.content,#header,#wrap,.pages a, .pageback a,.colplural, .colplural th, .colplural td, th.highlight, td.highlight,
#menu li,.mainbox td.postauthor,.editor_tb,#f_post .txtarea,#fastpostsubmit,#e_textarea,.txtarea,.newediter,input,select,button,.list td, .list th,.searchform,.editorrow,.forumcontrol table,.forumcontrol .modaction
  {
    background: #c5e0c8 !important;
  }

  .threadtype,.postinfo,posterinfo,authorinfo,.postactions,#threadtitle,.list td, .list th,.threadtype a,.editor a,.searchform,.datalist .datatable, .datalist .datatable th, .datalist .datatable td,.list, .threadtype strong,.postinfo strong a,.postinfo strong a
  {
    border-color: #c5e0c8 !important;
  }

  .adcontent,.threadad td.postauthor
  {
    background: #E3EDCD !important;
  }

  #nav, #nav a,#footer, #footer a,#fjump_menu li a
  {
    color: #000 !important;
  }

  #menu li.current a,.pages strong,.itemfilter .current a,#menu a:hover,.itemfilter .current span
  {
    background: #00B271 !important;
  }

  .popupmenu_popup
  {
    background: #E8FFE8 !important;
  }

  .userinfopanel
  {
    margin-left: 0 !important;
  }

  .quote
  {
    background-color: #FAF9DE !important;
  }

  .pstatus, .modact
  {
    background-color: #f0dad2 !important;
  }

  .dropmenu
  {
    padding-right: 14px !important;
  }

  #header .wrap h2 a
  {
    display: block !important;
    ;height: 126px !important;
    width: 126px;
    background: url(https://img02.hi-pda.com/forum/attachments/day_150125/1501251334640622f9e5200fbc.png)  no-repeat scroll 0 0 rgba(0, 0, 0, 0) !important;
  }

  #header .wrap
  {
    padding: 24px 0 22px 40px !important;
  }

  #menu
  {
    right: 45px !important;
  }

  #umenu
  {
    right: 45px !important;
    ;top: 10px !important;
  }

  .locked
  {
    background-color: #E8D098 !important;
  }

  .popavatar
  {
    width: 140px !important;
    padding-left: 9px;
  }

  .postauthor .avatar,.popavatar img,.profile_side .avatar
  {
    margin: 10px 20px;
    position: relative;
    width: 120px;
    height: 120px;
    overflow: hidden;
    border-radius: 50%;
  }

  .popavatar .profile_side
  {
    padding-left: 10px;
  }

  #postlist
  {
    border-top: 2px solid #e3edcd !important;
  }

  .popavatar img,.avatar img,.profile_side img
  {
    width: 120px;
    height: 120px;
    margin: 0;
  }

  .forumcontrol #newspecial img,.forumcontrol #post_reply img,.pages_btns #newspecial img
  {
    visibility: hidden !important;
  }

  .forumcontrol #newspecial a,.pages_btns #newspecial a
  {
    background: url(https://img02.hi-pda.com/forum/attachments/day_180225/18022513549bf1857c202be2c6.png) no-repeat 0 0;
    height: 31px;
    width: 90px;
    display: inline-block;
  }

  .forumcontrol #post_reply a
  {
    background: url(https://img02.hi-pda.com/forum/attachments/day_180225/1802251354450b4da541ec135a.png) no-repeat 0 0;
    height: 31px;
    width: 90px;
    display: inline-block;
  }

  .signatures a
  {
    color: #777 !important;
  }

  .signatures
  {
    color: #777 !important;
  }
}

除了更改了部分样式之外,还隐藏了部分页面元素。

Tagged css
似乎博客的最终结局都是长草,人也一样。 December 22 at 05:31 PM

弯腰去捡

在论述“时间就是金钱”的时候,某人引用过这样一个故事:

有人问比尔盖茨,如果在上班途中看到地上有100美元,他会不会弯腰去捡。比尔的回答是“不会”。

比尔盖茨不会弯腰捡钱的原因据说是他非常有钱,已经不值得花上几秒从地上捡那100美元了。我的智商虽然没有低到相信这个故事的真实性,却对比尔盖茨的理由由衷地赞同:无论是谁,如果有装满一列火车的钞票,对于掉在地上的一张肯定不屑一顾。也就是说,我的智商一直保持在金钱这个相当纯洁的位置。直到有一天看到这个:

伊朗有个省以同性恋多出名。当地有这么个笑话:有个外地大学生毕业旅行经过该省,不慎把毕业证书给掉到地上了。该生站在毕业证书边想了很久,一咬牙转身回到学校重读了一遍。

这是一个蹩脚却生动的故事,它让人瞬间就明白了比尔盖茨为什么不弯腰去捡那100美元。毕竟,和毕业证书或者清白相比,100美元实在是算不了什么。和每一个被广泛传播的事物一样,这个故事也有一个国内山寨版:

问:最近征兵体检过了,不日就要去军营了,有神马需要注意的?答:洗澡的时候,肥皂掉了,千万不要弯腰去捡。

其实我想说的是,信息的快速传播,非常容易击穿你小心翼翼保持的纯洁心灵,并且改变你从地上捡东西的姿势。

在博客文章编辑功能上,借鉴 wiki 的做法,引入了 diff 机制,不过文章还是只保留有一个版本。这样从理论上来说,发表过的文章里面每一个字都会一直保留下去,除非删除文章。好处是让你写文章的时候谨慎一点,能够完全为你写的文字负责;坏处就是可能因为某个字词不恰当要删除整篇文章或者重新写。为了防止这样极端的情况出现,还是把普通编辑功能留了下来。 September 16, 2012

激活 Windows 8 RTM 版本

Windows 8 RTM版本发布之后,把硬盘划了40G出来,用来安装  Windows 8。因为没有激活的缘故,许多个性化设置都无法使用。虽然我安装 Windows 8 也不过是为了试用而已,所谓浅尝辄止,不过总感觉有个心结在作怪。今天还是想办法把它激活了才罢手。得益于众多高手的辛苦劳动,激活其实还是很容易的。

  1. 下载 Windows 8 Activator For Build 9200
  2. 解压后,右键“以管理员身份运行”;
  3. 程序会弹出命令行窗口,输入 y 同意执行;
  4. 执行完毕重启计算机即可。

这个程序激活 Windows 8 之后,提示的是永久激活,不知道采用的是什么方法能保证永久的有效期。

如果支付方便的话,还是建议购买正版,毕竟微软在发售 Windows 8 的时候对中国市场采取了特别的政策,价格并不是以往的操作系统那般高不可攀。即使我觉得 Windows 8 不是一个适合中国用户的操作系统——别说什么用户的习惯是培养出来的。

重新绑定dropbox

Dropbox忽然多管闲事,通知我说好久没有改密码,是不是要改个密码玩一下,我欣然同意。随后,桌面的客户端就开始罢工抗议。我一时手贱,在客户端上unlink了账号,心想接着在客户端上relink就可以,哪里料想到根本没有重新绑定的功能。无奈之下,重启程序,我认为这已经是仁至义尽了。然而,天有不测风云,重启之后仍然无效,一个小小粗壮的红叉躲在屏幕右下角得意洋洋,竟然开始说风凉话,什么“你的电脑时间不对,请修改”之类的。对于这样的程序,只好使出杀手锏,那就是卸载重装。可惜,我低估了Dropbox的工程师们的顽固程度,即使重装,软件仍然不给你重新绑定的机会。万般无奈之下,只好放狗。

真的是,放狗一咬,你就知道。马上就找到了解决办法

  1. http://www.dropbox.com/install 下载最新版的客户端。我觉得这可能不是必要步骤。
  2. 退出当前的Dropbox程序。
  3. 打开Windows Explorer,在地址栏输入 %APPDATA% 回车,找到Dropbox文件夹,删除之。如果显示有文件在使用中,那么先卸载当前的Dropbox程序,然后再删除。我随后重启了电脑,因为我要走开一会去喝水。

重新安装最新版的Dropbox桌面程序,运行后就应该可以重新绑定你的账号了。

Tagged dropbox