首页  >  All categories  >  Posts

Change the Dropbox directory on a headless GNU/Linux server

Dropbox has ended all other filesystems except ext4 on linux. Unfortunately my VPS on Qcloud is not ext4, so I can not use dropbox the last few months. Today I decided to add a data drive which can be formatted as ext4 to get my dropbox syncing back. Below is the steps, thanks to this questions1.

First, remove all dropbox related directories.

rf -rf ~/.dropbox-dist
rf -rf ~/.dropbox

Second, install dropbox daemon according to 2. Note that you need to download the tarball and extract it to the desired directory, say /data/db/, manually.

wget -O /data/db/dropbox.tar.gz "https://www.dropbox.com/download?plat=lnx.x86"
cd /data/db/
tar xzf dropbox.tar.gz

Third, start dropbox.

HOME=/data/db /data/db/.dropbox-dist/dropboxd

Last, link dropbox related directories to home directory in order to using dropbox.py.

ln -s /data/db/.dropbox-dist ~/.dropbox-dist
ln -s /data/db/.dropbox ~/.dropbox

After all these steps, you can use dropbox again, try dropbox.py status. :)

二十世纪十大唱片里程碑:作为乐器的录音室

看理想音频节目,20世纪十大唱片里程碑——作为乐器的录音室,虽然对音乐一窍不通,但不妨碍附庸风雅。

睡前听完的,大概内容消化了十之一二,一杯咖啡的费用,算是值得。接下来就是慢慢听这是一张唱片了。

李如一对这一节目有一篇详细的介绍文章1,包含唱片等具体信息。我也建立了一个豆列2

1 https://blog.yitianshijie.net/2018/10/29/vistopia-lecture-studio-as-musical-instrument-by-lawrence-li/

2 https://www.douban.com/doulist/111170643/

法老·诸神·木乃伊 古埃及文物特展

haraohs, Gods and Mummies: Ancient Egyptian Finds Exhibition

湖南省博物馆携手河南博物院、山西博物院、辽宁省博物馆、 广东省博物馆与埃及文物收藏量位居世界第二的意大利都灵埃及博物馆共同合作, 举办古埃及的文物珍品展览

展览主旨🔗

展览精选意大利都灵埃及博物馆馆藏144组、238件古埃及文物,自古埃及前王朝时期至罗马帝国时期4000余年,包括陶器、化妆用具、青铜及石雕像、动物和人形木乃伊、木棺、石棺、石碑、护身符、亡灵书、大型石刻神像、壁画、模型等典型文物,力求解读古埃及独特的社会生活、宗教信仰、丧葬文化和辉煌的艺术成就。

展览组成🔗

文物144件/组(238单件)。其中,神庙模型3件组、特大型神像3件、超重量石碑和石雕9件、大型木棺2件、人型木乃伊1件、人型木乃伊棺4件/组、亡者之书1件(带框长3.2米)、乌沙布提1组(89件)。

展览亮点🔗

1、本展属于本馆对外文化交流系列特展,也是首次引进的境外的文物大展。 2、埃及和中国作为世界四大文明古国,都有着悠久的历史、灿烂的文化。 3、古埃及和中国古代生死观的趋同。 4、展品来自都灵埃及博物馆。 5、木乃伊是不朽的传奇。

展览提纲🔗

  1. 第一单元 尼罗之歌 The Song of The Nile
  2. 第二单元 多元信仰 The Gods of Ancient Egypt
  3. 第三单元 不朽传奇 The Legend of Eternity

Note🔗

不容易约到了张鹏同学一同参观。他因为游戏对于埃及的了解比我丰富多了,多知道了一些小知识。 不过此特展的信息密度对于我这种对埃及没什么了解的人,还是过于大了。

拍的一些照片: https://photos.app.goo.gl/8U4wGM1xpsofVTPE8

和本文主题相关的一些链接。

其他在线艺术资源。

Local Response Normalization (LRN) in different frameworks.

Local Response Normalization (LRN) has different implementations in different Frameworks.

Caffe🔗

Document

  • Parameters (LRNParameter lrn_param) Optional

    • local_size [default 5]: the number of channels to sum over (for cross channel LRN) or the side length of the square region to sum over (for within channel LRN)
    • alpha [default 1]: the scaling parameter (see below)
    • beta [default 5]: the exponent (see below)
    • norm_region [default ACROSS_CHANNELS]: whether to sum over adjacent channels (ACROSS_CHANNELS) or nearby spatial locations (WITHIN_CHANNEL)
  • 计算公式

$$ b_{x,y}^i = a_{x,y}^i \left(1 + \frac{\alpha}{n} \sum_{j=\max(0, i-n/2)}^{\min(N-1,i+n/2)}a_{x,y}^2\right)^{-\beta} $$

TensorFlow🔗

different from Caffe version. refer to this [post](<https://blog.csdn.net/newworld123made/article/details/78880724).

  • 计算公式

$$ b_{x,y}^i = a_{x,y}^i \left(b + \alpha \sum_{j=\max(0, i-r)}^{\min(N-1,i+r)}a_{x,y}^2\right)^{-\beta} $$

PyTorch🔗

Document

same as Caffe version, the parameters can be used directly.

  • 计算公式

$$ b_{c} = a_{c}\left(k + \frac{\alpha}{n} \sum_{c’=\max(0, c-n/2)}^{\min(N-1,c+n/2)}a_{c’}^2\right)^{-\beta} $$

在最遥远的地方寻找故乡:13-16 世纪中国与意大利的跨文化交流

也谈艺术素养。

湖南省博物馆参观提示

拍的一些照片: https://photos.app.goo.gl/6xAHSrYpwoLz4mPv2

和本文主题相关的一些链接。

其他在线艺术资源。

博客这件事情

今天上午不知为啥突然觉得应该重新开始写博客,结果折腾了一上午的博客。这个域名申请的很早,写的东西 不多,网站的代码倒是折腾变动了很多次。2012 年 9 月最初使用的是 Github Page,今天依旧放在 Github 上,前几天自定义域名也支持了 https,短期应该不会再折腾了。不扯这些技术细节,下面反思一下为什么 重新开始写博客。

人天然的有表达欲,不是在这里,便是在那里。我相信,一切写下的文字都希望被看到。所以社交网络当然是 一个短期不会消失的需求。关于社交网络之前写过一篇[文章]({{ site.baseurl }}{% post_url 2015-06-16-social-network %}), 今日再看虽然觉得有点幼稚,观点大抵没有变化。

从博客到微博,碎片化的表达取得了绝对的胜利。这也是为何会有重新写博客一说。现有的表达平台都有或 多或少令我不满的地方。朋友圈人太多太齐全,表达的压力对我这种懒得分组的人来说,实在是有点大了; Twitter 本来是一个非常合适的地方,但是随着使用时间增加,也有了表达成本。本就和其他人士差距太大, 即使并非熟人社交也不想暴露自己的「智障」;微博,恕我直言,这个网站真的是令人难受,即使找到了合适 的客户端,找到了可以清理时间线的插件,即使这里有很多有意思的人。不过最近这段时间微博的使用频率 大大增加,主要的原因还是老师让我重新发现了微博的有趣,或者说重新发现了表达的乐趣。可是,碎片化表达 终究意义有限。

表达,或者说书写的价值,在于给未来的自己一个锚点,即使不考虑其可能的对他人的启发。

最近重新整理了一下 RSS 订阅,还在写博客的人依旧不少,虽然不写的人根本不会被看到。 看着他人的记录也给了我很大的鼓励。比如谢益辉

那么,当初为什么不写呢?表达的乐趣并非刚刚发现。最初拒绝表达的原因,大抵还是拒绝暴露自己的无知。 对于很多事情,不敢轻易发表看法,深知信息的不充分以及自己见识的浅陋。今天这个情况还是没有改变。 但是表达真的需要全知么?片面的表达,也有其价值。有时候反思一下自己习以为常的观点,就能发现 有问题的地方。

不写的原因,还在于过于重视表达本身。举一个做笔记的例子,如果笔记工工整整,格式精美,那么 在书写笔记的时候便会有较大的心理压力,不希望破坏美好的事物或者造成不和谐、不一致。自从我把随身带 的笔记本当成草稿纸使用后,已经记了十几本了。

不写还有一个原因是出于隐私的考虑,这里暂时不细说。

最后,这里不是一个严肃的技术或者生活博客,没有明确的定位,没有更新频率的要求, 只是一个记录自己真实想法的,属于自己的地方。我当然希望更多的人看到。 不过在写下这些文字的时候,获得的奖赏已经足够我继续下去了。

坂本龙一:音乐即自由

因为某个检查跑到图书馆避风头,对着电脑工作了一小时不到饿晕出来准备吃饭,发现图书馆一楼居然放了 豆瓣 2017 年度主题书籍的展示书架,刚好最近一段时间看了艺术方面的一些材料, 很久没有借书的我借了两本相关主题的。

![豆瓣 2017 年度主题书籍书架]({{ site.cdn_url }}/img/sakamoto0.jpg) ![两本书籍]({{ site.cdn_url }}/sakamoto1.jpg)

一直自诩为电子阅读爱好者,「如无必要,勿买实体书」。其实清楚地知晓实体书有更好的体验, 但是为生活所迫只能选择电子书,搬过家的人应该都能理解,囤书带来的困难。 为什么之前没有意识到坐拥图书馆这个宝库呢,毕业前好好利用学校的图书馆吧。

我对音乐几乎是一窍不通,包括流行音乐,遑论现代音乐了。为什么会拿起这本书?坂本龙一的名字应该是 从李如一的播客上听来的,对他唯二的了解大概就是觉得名字比较酷,还有他是搞音乐的。 周五中午借的书,当天傍晚和今天晚饭后大致翻完了。感觉很有意思,简单记录一下。

这本书是 2007-2009 年间,ENGINE 杂志总编辑与坂本龙一访谈整理而成,算是坂本的自传,大致按照时间 顺序回顾了到目前为止的一生。

因为我对音乐流派及发展的历史一窍不通,所以书中提到的大部分人名都是十分陌生的。坂本 1952 年出生, 幼儿园接触钢琴与作曲,宽松的家庭环境让他并没有刻意去练习成为一名音乐家。在天赋以及 老师的引导下,坂本学习钢琴、学习作曲,直到后来大学进入作曲系。年轻的坂本关心政治,热衷于参加社会活动。 即使到毕业后依旧对于将音乐作为自己的事业没有清楚的自我认知。在音乐圈子的工作让他结识了很多业内 人士。YMO 乐队的建立和走红,让他在日本和欧美都有了很高的人气。后来参与《战俘》和 《末代皇帝》的配乐工作,奠定了其国际地位。基本拿遍了电影配乐相关的奖项。2004 年参与了巴塞罗那 奥运会配乐工作。

看书的过程中,找来了 YMO 和坂本的专辑作为背景乐,除了觉得还算有意思,并没有特别的感受。

下面是简单的一些摘录和感想,实体书也有一个坏处,就是不能方便的划线。只能大致随着记忆找到原文手工 输入了。

「我也有可能被分到驹场高中,不过总算还是上了新宿高中。驹场高中原本是一所女子高中,大约四分之三 都是女孩子,说不定去读这所高中会是比较好的选择。当然,这样的想法是到很久以后才出现。」 可以说非常坦诚了。我在微博上转发了陈奕迅的一个采访视频,男性果然比较幼稚哈哈。

「似乎在关键的时刻,我大概都是选择困难的道路。」 反思自己的人生,除了考博以外,我在关键的时刻,都选择了简单的道路。结果来看,这并不是最优的。

坂本参与了很多「定件」的工作,即在一定要求下创作,对此他的看法: 「无论是限制或者他者的存在,我认为都非常重要。」

身边朋友的死亡,让坂本意识到人和人之间无法完全了解,即使是很熟悉的朋友,死后你依旧会发现对他的陌生。 「人与人之间无法跨越的这道鸿沟,让我感到彻底的挫败」

911 事件之后,坂本认识了苏珊桑塔格,这个名字也是第一次从李如一那里听到,之后反复听到,有机会应该 读一下她的作品,她是 2004 年去世的。

前几天刚好流行通信的一期节目标题就是日式的坦诚, 看书的时候确实不断感受到日本人的谦逊和坦诚, 「让各位读者读了这样一个人的自传,我除了深感抱歉外,还想说声谢谢。」

读完书才发现访谈的时间是到 2009 年,我刚上大学。简单搜索了下发现坂本 2014 年确诊为中咽头癌。 休息了两年,现在已经付出了。万幸,希望他能身体健康,继续创作。看着满头银发的坂本,还是 很帅气的。

附上一些链接。

知乎 Live:女性健康

知乎Live

白带🔗

  • 组成:上皮细胞、引到和宫颈分泌的液体、细菌
  • 特性:有轻微气味,白色/物色,透明稀薄,个体差异大
  • 量:每天 2-5 ml (食指上两个指节)

需要引起重视的症状不适🔗

  • 外阴阴道瘙痒
  • 白带呈泡沫样或黄绿色
  • 白带有腥臭味
  • 血性阴道分泌物
  • 性交疼痛

常见阴道炎用药🔗

  • 细菌性阴道炎:甲硝唑阴道栓 200mg 每日1次,共7天
  • 霉菌性阴道炎:克霉唑栓 500mg 阴道用药1次,或咪康唑 400mg 阴道用药1/日,共3天
  • 滴虫性阴道炎:甲硝唑2g口服,共1次

远离 Google?

不使用 Google 的服务并不是突然出来的想法,从 Google 的服务开始被墙开始,很多人便被动地不再使用 Google, 于我而言,那可能正是我开始重度使用 Google 服务的开始。这样想来,我现在对网络知识的一丁点理解,还是对 Google 的需求导致的。2012 年 Google 放弃 Google Reader,可能是这样的想法第一次出现。最近几年 Google 在隐私方面受到的指控越来越多。当然,放弃一个服务其实并不需要这些理由。能不能放弃是互联网公民 自由尚存的标志。我们是否真的被 Google 绑架了?在中国大陆,我相信大部分的人已经被微信所绑架,也包括我自己。

可以想象,在某些读者心中我会慢慢变成那个「一会弃用微信,一会弃用谷歌,看他什么时候弃用互联网我们 就清净了」的人。可是为什么不?离不开某个互联网产品为什么是更好的人生状态?如果花时间为身体排毒是 值得的,那么为上网习惯排毒同样也是值得的。至于毒的定义,每个人都应该仅为自己操心。

相关链接 1 是李如一写的关于如何弃用 Google 说明,相关链接 2 列出了所有 Google 服务的替代品。

相关链接🔗

  1. 如何弃用谷歌
  2. No more Google

关于口腔健康

本文总结收集的一些关于口腔健康的资料。

小时候爱吃糖,自然有龋齿之痛。对于牙痛有着切身体验。儿时还长过一颗虎牙,由于是横着长的,和可爱无缘,最终被牙医拔下,更换乳牙时,经常会用舌头去磨蹭,突然就掉牙的感觉现在想来还是神奇。对了,作者还有磨牙的不良习惯,曾被调笑为啮齿类动物,前段时间去洗牙,医生也从牙齿的磨损情况猜出了这一习惯,无奈吃了很多猪尾巴也不见好转,现在情况好些了。

作者对于口腔保健的知识前期主要来自于知乎上的热心牙医。后期通过太医来了1这档医学类播客节目了解了很多,感谢两位太医以及许桐楷医生2

关于口腔健康维护,目前作者总结大致有以下措施及注意,虽然自身还未做到,但是目标是明确的。

  1. 刷牙。

    • 刷牙方法,巴士刷牙法。45°角,两分钟

      《口腔预防医学》(人民卫生出版社2003年版)122页
      选择软毛牙刷,将牙刷与牙长轴呈45°角指向根尖方向(上颌牙向上,下颌牙向下),按牙龈-牙交界区,使刷毛一部分进入龈沟,一部分铺于龈缘上,并尽可能伸入邻间隙内,用轻柔的压力,使刷毛在原位作前后方向短距离的水平颤动10次。颤动时牙刷移动仅约1mm,每次刷2~3个牙。在将牙刷移到下一组牙时,注意重叠放置。前牙舌腭侧如牙弓狭窄可将牙刷垂直,压刷毛进入龈沟及邻间隙约45°角,对着牙长轴作短颤动。颌面的刷牙动作是将刷毛紧压颌面,使毛端深入点隙,作前后牙方向的颤动。

    • 电动牙刷3
    • 牙刷比牙膏重要
    • 早晚刷牙
  2. 漱口水

  3. 牙线

    作者,20141026 牙线,用过次数不多,每次都出血,和牙签很像,但基本不会破坏牙龈,前提是姿势正确。我一直奇怪牙线如何清理大牙,就是口腔后部的牙。整个手都快塞进去,嘴都张的抽筋。用的是没有柄的。 前段时间倒是习惯了牙线,现在基本不会有这个问题了。让我坚持使用牙线的原因只有一句话:当你使用完牙线后血肉模糊时,说明你真的需要牙线了。

  4. 洗牙

    • 半年一次
    • 为什么洗牙

      《科舟求健》
      牙石一旦形成,就没法通过刷牙、用牙线去除了,而必须用专业的设备洗牙去除。

    • 洗牙经历

      作者,20160710
      第一次洗牙,感觉还不错,牙结石没有想象的多,建议牙齿有问题没问题都应该尝试下,照顾好小伙伴们。PS: 才知道自己也有智齿

太医来了上关于口腔健康的节目汇总(截至更新日期):

知乎上关于口腔健康的讨论也很多,但是良莠不齐、争论也较多,相信谁以及是否相信作者在这里的一些观点,选择权在读者您的手中。只是无论如何,希望所有人都能够重视自己的口腔健康,不为别的,拥有一口健康的牙本就是一笔巨大的财富,能够开心、长久地享受美食,能够不被痛起来生无可恋的牙痛所困扰,种种优势,想必不用多说。

其实,作者是个特别懒的人,每次牙痛/炎症后才想起来牙线漱口水什么的,现在要好好养成这个简单的习惯,睡前刷牙,饭后漱口,一日至少刷牙两次。希望与诸位一起维护好口腔健康。

Surge 相关

Surge 最初是 iOS 上的网络调试工具,后来有了同名的 Mac OS APP。

Surge 是在 iOS 9 支持 Network Extension 之后,第一个支持 Shadowsocks 的 APP。初上市定价 9.9$,后来经历喝茶风波,短期下架,再上架时涨价为 99$,后期经历过冰点折扣,目前定价 49$。

关于其定价风波在 Twitter 上讨论颇为热烈。与之相关的还有一系列 iOS 上的 SS 客户端事件,均在 Twitter 中文圈引起较多议论。

相关链接🔗

日常财务计算

本文介绍日常财务计算知识。

Excel 财务函数🔗

  1. 基本概念
    • Rate 利率
    • Nper 年金的付款总期数
    • PV 现值
    • FV 终值
    • PMT 年金(Payment),每期支付金额(含本金与利息)
  2. 函数
    • PV 等额年金求现值,返回投资的现值。 现值是一系列未来支出现在所值的总额。
    • FV 等额年金求终值。基于固定利率和等额分期付款方式,返回某项投资的未来值。
    • NPV 不规则年金求现值。使用贴现率和一系列未来支出(负值)和收益(正值)来计算一项投资的净现值。
    • PMT 求年金。根据固定付款额和固定利率计算贷款的付款额。
    • Rate 返回年金每期的利率。
    • IRR 返回由值中的数字表示的一系列现金流的内部收益率。 这些现金流不必等同,因为它们可能作为年金。 但是,现金流必须定期(如每月或每年)出现。 内部收益率是针对包含付款(负值)和收入(正值)的定期投资收到的利率。

日常使用场景🔗

  1. 信用卡分期付款对应年利率? 以浦发银行账单分期为例,3期手续费2.64%,假设分期金额3000,则每期应付金额 为(1000+26.4)。计算其名义年利率: 12*Rate(3,-1026.4,3000)=15.77%. 简便算法: 22*2.64%/3 = 19.36%.

  2. 12期免息分期付款到底有多优惠? 主要考虑自己的折现率,这里 Rate 取 10%。假设商品的总价C。 计算现值 PV(10%/12, 12, C/12) 对应到折扣为 PV(10%/12, 12, C/12) / C 通过计算可知,折现率取 10% 时,对应的折扣大约是 0.95, 即相当于 95 折。

  3. 贷款 50 万元,年利率 6.75%,期限 5 年,每月等额本息还款,每月要还多少? pmt(6.75%/12, 60, 500000)=-9841.73 CNY

  4. 贷款50万元,期限5年,每月等额本息还还款10000元,年利率是多少? rate(60,-10000,500000)*12=7.42%

  5. 投资10万元,年利率15%,每月计算复利,2年后是多少? fv(15%/12,24,0,-100000)=134735.11 CNY

  6. 投资一笔钱,年利率15%,每月计算复利,2年后是14万元,问当初投了多少? pv(15%/12,24,0,140000)=-103907.59 CNY

  7. 投资10万元,年利率15%,每月计算复利,每个月追加投入2000元,2年后是多少? fv(15%/12,24,-2000,-100000)=190311.27 CNY

  8. 投资一笔钱,年利率15%,每月计算复利,每个月追加投入2000元,2年后是14万元,问当初投了多少? pv(15%/12,24,-2000,140000)=-62659.12

注意🔗

  1. 还有一个nper的函数,不过实用意义不大,故未举例。
  2. 注意pv/fv/pmt这3个数值的正负数问题。可以这样记忆,以自己为中心,钱流入(进自己钱包)为正,钱流出(从自己钱包出来)为负。比如向银行贷款了100万进自己钱包,为+100万;投资了10万元出去,为-10万;每月还款8000元,为-8000;等等。
  3. 注意月利率与年利率之间有个12倍关系,同一个公式里面,要统一用月利率或者统一用年利率,一定要统一。
  4. 另外还有irr和xirr这两个函数尤其是xirr也较常用,具体用法请自己度娘,这里不再赘述。
  5. 关于利率的问题,无论多么复杂,实际都是一个一元多次方程的求解问题,可以利用excel表的VBA功能迅速求解,或者利用其他数据软件工具也可以方便求解。

参考🔗

  1. 一些基础财务函数 #2370
  2. 微信群转载,多谢不知名兄

wr720n OpenWRT 折腾记录

USB 存储挂载🔗

安装必要的包:

opkg install kmod-usb-storage #USB存储支持
opkg install kmod-fs-ext4     #ext文件系统支持,向下兼容
opkg install kmod-nls-utf8    #UTF-8字符支持
opkg install block-mount      #USB挂载支持,USB启动支持

编辑 fstb 配置文件,使得开机自动挂载。

# /etc/fstab
config 'mount'
option target '/mnt'
option device 'dev/sda1'
option enabled '1'

fstab 开机启动

/etc/init.d/fstab enable

SSH🔗

安装 openssh

opkg remove dropbear
opkg install openssh-server
opkg install openssh-client

迅雷远程下载🔗

3.0 版本和 1.0 版本

树莓派 教程

http://192.168.2.1:9000/getusedpartitioninfo 硬盘挂载信息

Xware1.0.31_mipseb_32_uclibc.zip

mount –bind /media/xunlei/ /media/TDDOWNLOAD/

samba

https://wiki.openwrt.org/doc/uci/samba

关于记账工具

本文记录个人关于记账以及记账工具选择的一些想法和经验。

你需要记账吗?🔗

记账利弊皆有,因人而异。最重要一点,记账可以帮助你清晰量化地认识个人收支情况。我是一个喜欢量化存档生活的人,以前会备份各种聊天记录、短信、通话记录等信息,日常也有写日记的习惯,账本相当于另一个维度的日记。

记账让我对自己的生活有更强大的掌控感(也许是错觉)。据说记账有以下缺点,可能会让人变小气,太麻烦等,读者根据自己的实际情况考虑。记不记账纯属个人选择,若您有兴趣开始记账的习惯,希望本文可以提供一点参考。

记账基本原则🔗

  1. 收付实现制与权责发生制 我采用收付实现制记账原则,与之对应的另一个词是权责发生制,举个简单的例子说明二者的含义。拿交房租来说,年初你交了未来半年的房租 12000 CNY,收付实现制会这么记账,年初支出 12000 CNY,只有这 1 笔。权责发生制会这么记,未来的 6 个月,每月支出 2000 CNY,共 6 笔。 个人采用的是前者,即收付实现制,主要优点是方便对账,毕竟银行的流水只有 1 笔 12000 CNY 的。他的缺点也很明显,会导致月度财务报表并不准确,不能清晰反应月度收支情况。所以采用收付实现制,在查看报表的时候,不应简单的去看数字的绝对值。

  2. 负支出 电商购物退款退货的场景很常见,月初买了一个东西,记了一笔支出,到货后发现不合适申请退货,中旬退款回到原支付渠道。我该怎么记这笔退款呢?省事的办法是把月初记的支出那笔删除,还有一个办法是退款导致时记一笔收入。但是聪明的你一定会发现这两种方法都不太理想,前者不能反应真实流水,后者会导致月度报表支出与收入都虚高。 比较合理的做法是退款时记录一笔负支出。当你意识到支出可以是负的时候,很多帐目记起来就简单多了。

记账工具🔗

1.移动设备

主要是 Android 和 iOS 两个平台。主流的记账工具基本都是全平台的了。其中功能丰富占据大部分用户的记账应用有二:

  • 随手记,我使用随手记时在论坛提出的关于多币种的问题1
  • 挖财
  • MoneyWiz, iOS

对于入门者,推荐使用这二者之一开始。基本满足大部分功能需求。

对于不需要如此复杂功能,例如多账户的用户来说,也可以选择很多主打简洁的应用,例如 iOS 下的 Expense。由于我不是 Android 用户,所以此平台下的轻量级应用请自行寻找。

2.桌面

桌面的记账方法相对来说比较严肃,简单的可以采用 Excel 记账,复杂的可以采用专业的财务软件。总结来说:

  • MoneyWiz, macOS
  • Excel, 网上寻找他人分享的记账模板,略加修改便可以使用
  • Gnucash, 开源软件,多平台支持。复式记账,多币种记账。Windows 下的桌面客户端虽然丑陋但是可用,功能强大
  • Ledger, 简单的命令行记账工具,复式记账
  • Beancount, Python编写,命令行工具,多币种记账功能强大,复式记账。可以认为是 Ledger 的升级版。可以参考推特上的讨论2

以上软件按照新手友好程度排列。

个人记账工具迁移路线🔗

最初,我使用 Excel 模板记账,2013 年 12 月以后尝试随手记,2015 年 12 月开始使用 Gnucash。对于轻松的记账,不太需要会计知识,在使用中多思考多搜索即可。进阶的话需要了解复式记账的概念,2016 年初开始使用命令行工具 Beancount。

Beancount🔗

  1. website
  2. Documents
  3. Google Group
  4. repository
  5. another web interface
  6. vim plugin
  7. Hacker News 讨论

一些参考链接🔗

mutt with Google Contact

install🔗

  1. install goobook

    pip install --user goobook
    # in arch you should
    pip2 install --user goobook
    
  2. config goobook

    # fisrt get the config template
    $ goobook config-template > .goobookrc
    # "#" or ";" at the start of a line makes it a comment.
    [DEFAULT]
    # The following are optional, defaults are shown
    ...
    [DEFAULT]
    # The following are optional, defaults are shown
    email: [email protected]
    password: yourgooglepassword
    
  3. goobook authenticate

    goobook authenticate — non-local-browser

  4. config mutt

.muttrc🔗

#...
set query_command=”goobook query %s”
macro index,pager a “<pipe-message>goobook add<return>” “add sender to google contacts”
bind editor <Tab> complete-query
#...

REF🔗

Vim environment for SICP on Windows

SICP means Structure and Interpretation of Computer Programmings. This quick note is for a Common Lisp environment configuration for learning SICP on Windows.

  1. Common Lisp is my choice, while MIT-Scheme is the recommendation of SICP. Download it from https://common-lisp.net/downloads/. I am using CCL for it is the default in tutorial for Slimv.
  2. Download Slim: https://github.com/slime/slime/releases.
  3. Download Vim Plugin slimv.vim http://www.vim.org/scripts/script.php?script_id=2531

Configurations in .vimrc

let g:slimv_swank_cmd = '!start "<ccl dir>/wx86cl.exe"
\ -l "<slime dir>\start-swank.lisp"'

reference🔗

  • Slimv Tutorial: http://kovisoft.bitbucket.org/tutorial.html

靡不有初

今天听到这么一句话,“善始者实繁,克终者盖寡”。含义与“靡不有初,鲜克有终”基本一致。

前者是出自魏征《谏太宗十思疏》,全文附之。

  臣闻求木之长者,必固其根本;欲流之远者,必浚其泉源;思国之安者,必积其德义。源不深而岂望流之远?根不固而何求木之长?德不厚而思国之安,虽在下愚,知其不可,而况于明哲乎?人君当神器之重,居域中之大,将崇极天之峻,永保无疆之休。不念于居安思危,戒贪以俭,德不处其厚,情不胜其欲,斯亦伐根以求木茂,塞源而欲流长者也。

  凡百元首,承天景命,莫不殷忧而道著,功成而德衰。有善始者实繁,能克终者盖寡,岂其取之易而守之难乎?昔取之而有馀,今守之而不足,何也?夫在殷忧,必竭诚以待下;既得志,则纵情以傲物。竭诚则胡越为一体,傲物则骨肉为行路。虽董之以严刑,震之以威怒,终茍免而不怀仁,貌恭而不心服。怨不在大,可畏惟人。载舟覆舟,所宜深慎,奔车巧索,其可忽乎!

  君人者,诚能见可欲,则思知足以自戒;将有所作,则思知止以安人;念高危,则思谦冲而自牧;惧满溢,则思江海下百川;乐磐游,则思三驱以为度;恐懈怠,则思慎始而敬终;虑壅蔽,则思虚心以纳下;想谗邪,则思正身以黜恶;恩所加,则思无因喜以谬赏,罚所及,则思无因怒而滥刑。总此十思,弘兹九德,简能而任之,择善而从之;则智者尽其谋,勇者竭其力,仁者播其惠,信者效其忠。文武争驰,君臣无事,可以尽豫游之乐,可以养松乔之寿,鸣琴垂拱,不言而化。何必劳神苦思,代下司职,役聪明之耳目,亏无为之大道哉?

解释可参考http://www.gushiwen.org/GuShiWen_1fe6c15526.aspx

后者出自《诗经·大雅·荡》:“荡荡上帝,下民之辟。疾威上帝,其命多辟。天生烝民,其命匪谌。靡不有初,鲜克有终。”

都是用来劝诫为人为事当善始善终,不可虎头蛇尾。

about podcast

Why🔗

最近在 V2EX 碰到一个询问有什么 podcast 推荐的帖子,https://www.v2ex.com/t/215749。再次听到了《内核恐慌》这档节目,之所以说再次因为脑子里有关于这个播客的一丝印象,虽然并不记得哪里听说的。

于是特地去看了关于这档播客的信息,一看之下发现有惊喜,https://ipn.li。《内核恐慌》是 IPN 播客网络旗下的节目,顺带着发现了一大波 IPN 的其他节目,那种感觉和发现新大陆有点类似。有意思的是 IPN 的 producer 是李如一,字节社的创始人。一直比较关注电子书阅读,对国内的这家电子书内容提供者有过一些了解,走的是高端路线,售价比较贵,当然品质也很好,一个附带的效果就是数量比较少,最终导致无法在天朝生存下去。挺可惜,但也是必然,并不意外。 ​

  • PS: About the author of IPN
  1. Lawrence Li (不鳥萬如一) https://twitter.com/liruyi
  2. Rio https://twitter.com/RioJot

Podcast Client🔗

  1. Podcasts by Apple
  2. Stitcher
  3. Overcast From the author of Instapaper. Refer the author’s post for more details. 4.99$ to unlock all features.
  4. Castro 3.99$ https://ipn.li/faq 推荐
  5. Instacast already closed

目前自己使用的是 Overcast,又剁手了4.99$,体验不错,但是无法从 电脑导入已经下载的 podcasts 这点有点麻烦,还是需要自带的,比较适合网络方便或者数据流量充足的用户。

另外,APP Store 这种没办法试用 APP 的机制真的好蛋疼,难道我要购买一堆同类APP再一一申请退款?希望 Apple 不要黑名单我。

back to podcast🔗

所以订阅了《内核恐慌》和《IT公论》等 IPN 旗下的几档节目,还把往期的节目都下载到了本地,忙里偷闲听听。暂时先遏制继续寻觅好的播客的冲动,复习准备考试是正经。

欢迎推荐 podcasts 或者 podcast client.

using travis to automatic build pages and sync to Amazon S3

  1. Register Travis https://travis-ci.org/

  2. add .tavis.yml first, there is no need to get the file completed at this time

     language: python
     python:
         - "2.7"
     before_install:
     install:
         - sudo pip install pelican
         - sudo pip install markdown
         - sudo pip install s3cmd
     script:
         - mkdir output
         - pelican content
    
  3. git push to test if the travis build is successful

  4. sync to Amazon S3 first, you should encrypt privacy information by using travis cli gem install travis, or you can use travis api, which I chosed for the ruby environment really sucks.

     curl -H "Accept: application/vnd.travis-ci.2+json" https://api.travis-ci.org/repos/<github-id/repo>/key | python2 -m json.tool | grep key | sed 's/.*"key": "\(.*\)"/\1/' | xargs -0 echo -en | sed 's/ RSA//' > travis.pem
     # note: <github-id/repo> no '<>'
     # note: this cli command fails in my test, but you can do it by hand, plz see ref[1] for more detail . anyway, you should get the right public key, travis.pem.
    

then, you can encrypt your privacy info.

    echo -n 'ACCESS_KEY=blah SECRET_KEY=blah' | openssl rsautl -encrypt -pubin -inkey travis.pem | base64 -w0
    # you will get a long base64 string
    # note: no % at the end

last, add the base64 string .travis.yml, and access it by $ACCESS_KEY. see the following finished .tavis.yml file.

    language: python
    python:
        - "2.7"
    env:
        - secure:'blahblah'
    before_install:
        - sudo apt-get update
    install:
        - sudo pip install pelican
        - sudo pip install markdown
        - sudo pip install s3cmd
    script:
        - pelican content
    after_success:
        - s3cmd sync output/ s3://www.wogong.net --acl-public --delete-removed --guess-mime-type --access_key=$ACCESS_KEY --secret_key=$SECRET_KEY
  1. git push, see if the build is successful

ref:

迁移至 Amazon S3

最开始在网上的页面是 vimwiki,之后转移到 Jekyll,基本一直托管在 Github,可恨 Jekyll 对于中文的支持直到 3.0 版本都没有任何改观,所以前段时间简单折腾转移到 Pelican,目前的静态博客生成工具非常多,相比 Jekyll,Pelican 于我而言最大的优势是对中文的支持较为友好,另外 Python 环境相比 Ruby 而言,折腾起来较为简单。当然,游走于各种环境只是为了折腾,和书写其实没有太大关系,也和文题无关。

静态博客最大的优势怕是在于托管的方便了,国内的 空间/CDN/VPS 由于备案制度的存在,不予考虑。Github Pages 的托管其实是最优的选择,廉价的 VPS 无论是稳定性还是速度都不尽如人意,且需要牵扯较大的精力维护,与博客的初衷相去甚远,Linode 之类的优质 VPS 虽然基本不存在稳定和速度的问题,但是于我仅仅用来挂个静态的博客,又显得奢侈。Github Pages 一方面是墙的问题,虽然这一点个人不是太在意,但是在 Code Repo 里放一堆丑陋的 Pelican 生成的 HTML 文件实在是不能忍受。可以说是蓄谋已久,也可以说是心血来潮,总之,用了办个上午的时间搬家到了 Amazon S3 Service.

Amazon S3 Service 是 AWS 服务的一项,AWS 需要信用卡开通,新用户有一年的免费试用时间。S3 的价格非常便宜,作为静态博客托管基本可以不考虑费用:)

官方提供了详细的静态网站托管流程:使用自定义域设置静态网站 但是个人采用的方案和上述流程有一些区别,例如域名解析上述流程采用 Route 53,一些关于权限和域名绑定的小问题记录如下。

权限设置(利用 ref4 AWS Policy Generator 生成):🔗

{
    "Version": "2012-10-17",
	"Id": "Policy1436229520943",
    "Statement": [
		{
		    "Sid": "AllowPublicRead",
	    	"Effect": "Allow",
    		"Principal": "*",
			"Action": "s3:*",
		    "Resource": "arn:aws:s3:::wogong.net/*"
	    }
    ]
}

域名绑定:Dnsimple🔗

访问域名: www.wogong.net

ALIAS   wogong.net      www.wogong.net.s3-website-ap-northeast-1.amazonaws.com
CNAME   www.wogong.net  www.wogong.net.s3-website-ap-northeast-1.amazonaws.com

若访问域名为:wogong.net, 则需要考虑裸域的 CNAME 记录可能会与 MX 记录产生冲突。 故建议使用 www.

重定向规则🔗

为 HTTP 错误进行重定向

  <RoutingRules>
    <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
    </Condition>
    <Redirect>
      <HostName>wogong.net</HostName>
      <ReplaceKeyWith>404.html</ReplaceKeyWith>
    </Redirect>
    </RoutingRule>
  </RoutingRules>

下一步要折腾的就是 CDN 了,Amazon CloudFront 服务正在申请中

reference:🔗

  1. 怎样用linux命令行访问AmazonS3云存储
  2. 使用 HTTPS 连接访问您的对象
  3. https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
  4. AWS Policy Generator

社交网络

值班一天,窗外雨丝纷纷,整理草稿箱的文档。完善一下这篇关于社交网络的想法。很多词句已经是很多年前写下的,前后出现风格及观点不一致的情况请谅解。

SNS,全称 Social Network Service,即社交网络服务。最早接触网络是初中,钱明柱老师的电脑。最早接触 QQ 是高中,信息课程,最早接触社交网络便是那时,Qzone 或 QQ 空间。

以下内容可能已过时。

SNS总是希望扩张扩大其用户量的,校内改为人人就是。但是圈子这个问题肯定是存在的,QQ空间就很明显。我是讨厌这些SNS社区的,倒不是信息过载,而是信息碎片化,有用的没有多少,还浪费时间,当然,把SNS当做与朋友交流的地方就OK,没必要想着在这里学到什么。 最早接触QQ是高一,算是晚的了。我对QQ空间的热情持续了多久呢?从懒得写日志,懒得看别人的空间开始。两三年而已。 以前会很爱看别人写的东西,发的状态,想象他人在干嘛,他们的生活中愉快的和不愉快的,只要简单瞅瞅。那段时间,博客这么一个东西刚出来,空间与博客齐舞,再后来,人人热起来了,直到现在的微博。中国的互联网还是很精彩的,亦步亦趋的跟着国际潮流,十几亿的人口足以让这些产品不去担忧没有用户群。现在的我,用得最多的有QQ,IM基本就是他,虽然各种和谐不稳定,各种捆绑强迫,但也认了,这一点需要感谢马化腾。这是典型的点对点交流工具,QQ群很少使用,暂且不计在内吧。类似的工具也有很多,中国市场就是一堆。不废话了,简单说自己的想法吧。[2010] 人人注销啦,虽然不知道几个人可以看到,还是说下想念这片留下我四年故事的地方,酸甜苦辣,有轻狂无知,有失去有收获。最后一次,我明白一切欠下的、压抑的,必将归还、爆发。一切错误的,必将有苦果。[2013]

如今的 IM 只有微信了,社交网络真正在用的也只有朋友圈,即使对此也是若即若离的态度。以前有这么一种奇怪的想法:即大人不用 QQ,那么我们长大了也不能用 QQ,殊不知大人不是伴着 QQ 长大的。这种想法是幼稚的。那么承认吧,我们脱离不了这些网络工具,因为其是伴随我们共同成长,是我们生活的一部分。人为地去强迫自己割裂无必要甚至有害。也许只有故作成熟的人才会这么做。

关于社交网络这个话题我这么想说的原因其实很复杂,也许关系着自大多疑甚至病态的心理?作为一名重度的互联网用户,也许把网络生活的权重夸大了,协同个人的不成熟,结果便是酝酿了诸多的苦果。社交能力的羸弱不光体现在线下的生活,虚拟空间里依旧是病夫。这也许也是若即若离态度的一个原因。

关于 Facebook 的电影 《社交网络》中的最后一幕,给我留下了深刻的印象:深夜扎克伯格寂寞的一遍一遍刷新前女友的 Facebook 主页,他是成功的,也是失败的。社交网络究竟是让人与人之间的联系更加紧密,还是疏远呢?我们这一代是第一次经受社交网络冲击的一代人,大学期间的夜晚,不断的人人提示音飘荡在各个宿舍楼之中,就像几年前师兄们疯狂迷恋 BBS 一样,这些都是“全新”的事物,在对其不可自拔之后总会回归理性,线下的生活终究是基础,如何能迷失在线上呢?也许下一代能够更加平和地看待社交网络,或者不远的将来我也可以平和地看待。

感谢一切技术进步,让我们的距离可能达到如此的近。

疏远或者紧密,都是相处的一种状态,我不能陪伴你,希望可以偶尔的想起你。

Windows 8 系统使用文件历史功能

一直是 Windows 的用户,Linux 的桌面尝试的时间不太长,毕竟作为一名工科搬砖苦力不可能在 PC 上使用 Linux 桌面再装个虚拟机开 Windows 做计算,其实还是 Linux 桌面实在太无法忍受。基本没有用过 Mac OS,想着有机会可以买一台当作娱乐折腾本,可惜从去年开始吐槽 Mac OS 的言论日益增多,此种想法略受影响。如此种种暂且不说。好久没有更新,且在这里总结一下 Windows 系统的个人使用姿势,关于文件历史功能。

熟悉 Mac OS X 的用户应该了解 Time Machine (TM),不知我身边的 Mac 用户有多少人使用了这个功能。在没有听到各种吐槽之前不得不说 TM 给人的感觉真是逆天,后来在考虑 Linux 系统备份问题的时候,想到 TM 实现的可能性便在于其是 Unix 系统。Windows 系统遇到问题如何解决呢?重启,不行再重装,如此应该可以应付绝大多数的问题。重启浪费的只是几分钟时间,然而,重装系统浪费的就是数小时的时间,还有甚至数月时间的不方便。即使自认为是 Windows 老鸟,我也尽量不去重装系统,实在是不想浪费时间。好在Windows 也没有那么脆弱,略微注意使用习惯,设置好系统还原类似等等,遏止住想要折腾骚动不安的内心用个几年不重装是没问题的。今天的主题是备份,Windows 有个全盘备份的功能,个人没有使用的原因在于系统盘太大,没有空间和时间来进行一次全盘备份。但是如何保证数据的安全呢?在网络不便的情况下完全依靠云是极度不可靠的。引出今天的主角,Windows 8 的文件历史功能。

File History 即文件历史功能,需要配合库来使用,所以需要将希望进行文件历史记录的默认对全部库文件夹开启文件历史功能,但是对于音乐、图片与视频库显然没有必要,可以在设置里面去除这些库。使用库来进行管理显得略奇怪,但是由于个人不是库的重度用户,所以无甚不便。

文件历史记录位置可以为网络位置、外置硬盘和无系统文件的内置硬盘。前两者比较容易理解,对于第三者的系统文件包括例如分页文件、休眠文件、其他系统文件,以及 Windows 的库位置。因为设计要求,包含这些文件的硬盘分区无法用作历史记录的备份位置。

在没有网络存储设备,例如 NAS 的情况下,长时接着移动硬盘显然不太现实。那么如何利用内置硬盘进行文件历史记录呢?可以借助于虚拟硬盘 VHD 技术或者共享文件夹方法。 因为SSD据说寿命和稳定性不如机械硬盘,所以拿Windows自带的File History做了一个备份。File History就像是Mac的Time Machine,是Win 8新引入的特性,支持多版本全自动备份。然而File History默认只能在外部磁盘和网络磁盘上开启,即使是像我这样的双硬盘也没法选择从一块硬盘备份到另外一块上。网上搜索了一下,大概有两种解决办法:

  1. VHD挂载。VHD有点像虚拟机的磁盘文件,可以挂载到真实的系统中。更猛的是这玩意系统底层支持相当不错,上面甚至可以安装系统(当然是通过Windows的引导程序才行),可以说和真正的磁盘相差无几。

按下 Win + R 快捷键组合,在弹出的运行对话框中输入 diskmgmt.msc,按下回车启动“磁盘管理”。

选择“操作”菜单中的“创建 VHD”选项,VHD 文件是一种虚拟磁盘文件格式,Windows 8 将被安装到该文件中,因此无需特别的分区。在对话框中设置 VHD 文件路径和大小,推荐大小至少为 20 GB。为提高性能,建议选择“固定大小”。

设置完毕,点击“确定”即可。Windows 将开始创建 VHD 文件。

VHD 创建完毕之后,在下方的磁盘列表就可以看到该虚拟磁盘了,右键点击该虚拟磁盘,选择“初始化磁盘”。

  1. 共享文件夹。随便建立一个文件夹,并把它共享给自己,这样这个文件夹就变成了一个网络文件夹,在File History里添加网络磁盘即可。这样系统访问的时候相当于从localhost上绕了一圈。我用的是这个方法,原因是第一种方法的磁盘要写个脚本丢到startup里去才能开机自动挂载。

Windows使用了这么多年,依旧能发现新鲜的东西。利用虚拟硬盘当作文件历史记录盘,避免了使用外置盘的不便。当然以后重装系统还是需要拆下机械硬盘,系统装好后插上机械硬盘当作数据盘。这样就不用迂回路线了。PC 使用 SSD 系统盘加大容量 HDD 数据盘应该是兼顾速度与容量的最佳方案了。(上午使用 VIM 写了很多,以为保存了,结果下午才发现移动文件之后的修改全部丢失,补了一些,但还是丢失了不少内容,难得写一篇还遇到这种事情影响心情,所以我心安理得的去折腾 VIM 的自动保存了。)

如何在Symfony2中创建终端命令

详情请参见官方文档

自动注册的终端命令🔗

为了在sf2的终端中使用自定义的命令,我们需要在bundle路径下新建一个Command路径,在此路径下,为你需要的命令新建后缀为Command.php的文件,例如: 如果你希望在AcmeDemoBundle添加一个在终端访问你的功能。新建一个GreetCommand.php的文件,内容如下:

//src/Acme/DemoBundle/Command/GreetCommand.php
namespace Acme\DemoBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

class GreetCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName('demo:greet')
            ->setDescription('Greet someone')
            ->addArgument('name', InputArgument::OPTIONAL, 'Who do you want to greet?')
            ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
        ;
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $name = $input->getArgument('name');
        if ($name) {
            $text = 'Hello '.$name;
        } else {
            $text = 'Hello';
        }

        if ($input->getOption('yell')) {
            $text = strtoupper($text);
        }

        $output->writeln($text);
    }
}

命令在终端就可以运行:

>$ app/console demo:greet yourname

从serveice container中调用service🔗

示例代码如下:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $name = $input->getArgument('name');
    $translator = $this->getContainer()->get('translator');
    if ($name) {
        $output->writeln($translator->trans('Hello %name%!', array('%name%' => $name)));
    } else {
        $output->writeln($translator->trans('Hello!'));
    }
}

在命令行发送邮件🔗

如果你使用了memory spooling,那么子啊终端命令中调用时可能会没有办法发送邮件。因为在这种情况下,symfony不会自动发送邮件,你需要自己手动flushing,添加以下代码即可解决:

$container = $this->getContainer();
$mailer = $container->get('mailer');
$spool = $mailer->getTransport()->getSpool();
$transport = $container->get('swiftmailer.transport.real');
$spool->flushQueue($transport);

参考官方文档:http://symfony.com/doc/2.0/cookbook/console/sending_emails.html

使用Google Drive和Google Apps Script保持你的Twitter存档更新

翻译自: Keep your Twitter Archive fresh on Google Drive using a bit of Google Apps Script

同越来越多的其他人一样,我也向Twitter请求了自己推文的完整存档。Twitter在你请求数据后做了很棒的工作:打包所有推文,甚至用HTMLJavaScript创建了一个搜索界面,但是这些推文存档是保持不变的。另一个问题是你需要有虚拟主机去分享你的推文存档给其他人访问。

幸运的是,Google最近发布了在Google Drive上发布站点的功能,将你的存档上传到一个文件夹中,然后共享文件夹,使其“发布在网络上”,你可以让其他人来浏览您的存档(这里是我的)。注意:Mark Sample (@samplereality) 发现,如果你在上传时打开文件转换选项,将会破坏你的存档。【如果你不想使用一个谷歌帐户,你也可以使用Dropbox里的Public Folder

文档没有清晰表明如何做到这一点。基本上,只要根文件夹有index.html文件且到子文件夹是相对链接,你只需在Google Drive中打开文件夹,将URL的第一部分替换为 https://googledrive.com/host/

例如:

https://drive.google.com/#folders/0B6GkLMU9sHmLRFk3VGh5Tjc5RzQ 替换为 https://googledrive.com/host/0B6GkLMU9sHmLRFk3VGh5Tjc5RzQ/

接下来我们需要保持数据的更新。我们来仔细看看Twitter如何打包存档,可以看到每个月份的推文文件都存储在/data/js/tweets, 一些关于存档的元数据文件存储在/data/js/, 最重要的文件是tweet_index.js.

幸运的是,Google Apps Script提供了一种简单的方法处理Google Drive和其他Google Apps或第三方服务的接口,而且基于JavaScript的语法使得处理现有的数据文件很容易。因此,我们可以读取现有的数据,获取新的状态更新并写入新的数据文件,保证推文存档的更新。

要做到这一切,我折腾出了这个谷歌电子表格模板:

*** 使用Goolge Drive更新Twitter存档 *** [一旦打开文件 > 制作自己的副本文件]

希望下面的视频介绍了如何设置和使用:

这个解决方案一个很好的特点是,即使你不公开分享你的存档,只要您使用Google Drive的程序同步电脑文件,你本地机器上的存档数据保持更新。

该解决方案使用的模型也挺有意思的。使用Google Apps Script创建接口和应用的方法很多。在这个案例中,你不需要依靠笨重的写入处理和动态内容(当然会有一些代码清洗),采用更新Google Drive上的数据和静态文件界面是非常理想的方式。

你也可以选择使用一些额外的代码将更新的文件推送到到另一台Web服务器,或者将本地的Google Drive和虚拟主机之间同步,但现在我很高兴Google存储我的数据。

  • update0225:前几天一直没有空折腾,今天搞好自己的了,我的tweets: https://googledrive.com/host/0BwpUrJ713Y8MNi1fUGQtSU4wdWc/ 你也可以打开这个链接: http:twitter.wogong.net

  • update20140329:几个月前 Google Script 出现错误,作者的修复更新见这里:https://gist.github.com/mhawksey/7770536

GitHub Page Build Failure

通用的解决方法🔗

今日折腾了许久,更换了评论系统,由Disqus转到了多说,主要是考虑前者在国内被墙的厉害。但是在挂上VPN推送到GitHub的几秒后弹出邮件提示“Page Build Failure”。

由于本地已经测试,可以成功build,所以倍感奇怪,网上搜索之后发现可能是Jekyll的版本与GitHub的版本不一样,可以通过jekyll -v查看本地安装的Jekyll版本,如果并非最新版本需要升级,当前的最新版本是0.12.0

gem install jekyll --version 0.12.0

本地运行:

jekyll --server --no-auto

根据报错检查,等到成功build之后便应该没有什么问题了。

我遇到的问题🔗

Jekyll我使用的是这个主题theme-mark-reid。之前一直没有问题,没想到在jekyll 0.12.0下遇到了bug,build时会出现如下的错误信息:

STRFTIME() is not defined 

已经在GitHub上提交了issue,目前的解决办法是删除掉有问题的语句,损失了文章结束时间戳的功能。

Microsoft Office中输入数学公式

公式输入需求🔗

作为工科男,写作业写论文写报告等等肯定是需要输入数学公式的,基本上各种复杂公式的输入占用了不少时间,实在是一个麻烦的过程。

很早之前接触Linux时便知道了Tex,但是很久之后才知道这个词的正确读音。由于个人原因以及无法完全抛弃Windows,我和Tex&LaTex的接触仅限于几篇text.tex,每次想到些报告还是Word方便。即便在我使用Linux的那段时间,使用的基本都是LibreOffice,相对来说,其输入公式还是比较方便的,内嵌类Tex语法输入。

关于美观。说实话,我个人对于排版的美观真心没怎么注意。确实,office的排版对于中文标点的处理十分不友好,标点间距简直不堪入目。但是呢,勉强可以用。Tex的美观我也没有特别的发现,自习看起来确实好一点。不过,这对我来说真的重要么?对于一个无法明显感受二者差异的我,确实是不需要强迫自己接受有点复杂的Tex。

但是公式总还是要输入的,下面主要谈谈Office下的公式输入。

MathType🔗

MathType目测应该是较为普及的使用方式,至少从我身边来看是这样。其优点在于简单容易上手,即便你什么快捷键不会也可以用鼠标一个一个符号的点击,熟悉了快捷键之后还可以大幅度提高输入速度。非常赞的是其还支持类Tex命令的输入(6.0版本之后),但是我也是最近发现这个的,使用并不多。设置方法:“Preferences”––>“Workspace Preferences” 菜单中,勾选“Allow Tex language entry from the keyboard” 选项。

缺点也是显然的,MathType需要另外安装软件,且其对Office的支持不是特别的完美,尤其是这次安装Office2013之后我被其折腾的无语。

相对来说,使用MathType想要提高效率就是熟练使用快捷键。

Aurora🔗

这个我完全没有使用过,据说是Tex生成png格式图片插入,现在网页上一般是采用这种形式显示数学公式,但是个人写文档若采用这种格式未免太蛋疼了些,所以压根就没打算试用,实话说,用这个为啥不用Tex?

Office🔗

其实一直对于Office有点成见,尤其是手写公式输入实在是太不科学了,简直无法想象会用鼠标手写输入公式。直到我看到了如下的这篇文章,顿时觉得相见恨晚。原来Office也支持这样的类Tex语法输入,对于使用Office的人来说实在是非常方便,基本键盘操作就可以搞定一篇文章,再也不用拿鼠标一个一个点符号。虽然不能更改字体这个略蛋疼,但不是不可以接受。原谅我的无知吧。

update at 2014-07-15: 此种方法只支持新版的 word 文档,即.docx

请保持好奇心,接受新事物。

在VMware中安装archlinux

最近安装windows8,手欠格了Arch的分区,导致我远离了Arch的世界,虽然Win8用着感觉还挺不错的,但是终究没有Linux的shell好用,决定装个虚拟机Arch随便用用。加上64bit的windows使我的小Y史无前例的达到了4G的内存,装个Arch应该没有多大问题。

前几天在实习还没结束时也尝试安装了,但是因为Arch的安装方式最近改变,不再提供install scripts了。导致我在不熟悉的情况下弄砸了,旧版的arch安装包也因为glibc update遇到冲突,直接导致无法安装任何软件包,只能放弃。

这次使用VMware,一步一步按照wiki的步骤,基本没有什么问题,只是在安装vm-tools时遇到了小问题,按照wiki安装open-vm-tools,但是启动服务时出现问题: rc.d start open-vm-tools 提示如下错误: :: Starting Open Virtual Machine Tools [BUSY] FATAL: Module vmblock not found. [FAIL] 安装一个包即可解决问题: sudo pacman -S open-vm-tools-modules

挂载Windows共享文件: sudo mount -t vmhgfs .host:/sharename /mnt/hgfs 如果希望开机自动挂载,在/etc/fstab文件加上: .host:/sharename /mnt/hgfs vmhgfs fmask=0133,dmask=0022 0 0

接下来就是恢复自己的工作环境了。感谢Github,感谢Dropbox。

Something about Fortran90

这学期开始学习程序结构力学(Programming Structural Mechanics),课程使用的主要语言为Fortran90,关于Fortran的传奇之处早有耳闻。一下是两段非常著名的短文,当然是英文的,我会尝试翻译这两篇短文。

下面记录一下在Windows环境下配置Fortran编译环境的步骤。

可选的有CVF6.6(COMPAQ Visual Fortran),最新也是最后的一个版本。IVF(Intel Visual Fortran),推荐安装CVF。这种集成的IDE上手比较简单,基本没有什么问题。

另外,课程要求编写的程序必须通过ELF90(Essential Lahey Fortran 90)编译通过,这是更严格的一个Fortran90的子集。可以下载编译器安装,比较简单,之后记得添加环境变量,应该也不会有问题。

通过isatap接入ipv6

为什么通过isatap方式接入?

在没有ipv6的环境中,可以通过isatap服务器接入ipv6;在例如清华这种连个ipv6需要认证(经常bug)的地方,isatap接入可以避开认证。

Linux🔗

$ sudo ip tunnel add sit1 mode sit remote 59.66.4.50 local yourip
$ sudo ifconfig sit1 up
$ sudo ifconfig sit1 add 2001:da8:200:900e:0:5efe:yourip/64
$ sudo ip route add ::/0 via 2001:da8:200:900e::1 metric 1

note:replace “yourip” with your IP like 166.111.111.111

  • 北京邮电大学 isatap.bupt.edu.cn
  • 清华大学 isatap.tsinghua.edu.cn和59.66.4.50
  • 华中科技大学 isatap.hust.edu.cn
  • 台湾 tb.ipv6.apol.com.tw
  • 上海交通大学 isatap.sjtu.edu.cn

脚本文件sit:(加上执行权限chmod +x sit) #!/bin/bash local_ip=101.36.22.24 sudo ip tunnel add sit1 mode sit remote 59.66.4.50 local $local_ip sudo ifconfig sit1 up sudo ifconfig sit1 add 2001:da8:200:900e:0:5efe:$local_ip/64 sudo ip route add ::/0 via 2001:da8:200:900e::1 metric 1 对于经常更换网络环境,或者采用DHCP动态分配IP的情况,可以采用以下自动获取本机IP的脚本:下载地址 #!/bin/bash arg=ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " " local_ip=$arg sudo ip tunnel add sit2 mode sit remote 59.66.4.50 local $local_ip sudo ifconfig sit2 up sudo ifconfig sit2 add 2001:da8:200:900e:0:5efe:$local_ip/64 sudo ip route add ::/0 via 2001:da8:200:900e::1 metric 1 note:

  1. 上述自动获取IP脚本,参考链接
  2. 上述脚本在系统更新后可能会失效,请自行检测。

更新:

  • 由于Fedora15之后,网卡的命名规则发生了改变,对于含有多块网卡的电脑来说,上述代码中的sit0可能会出问题,比如我的无线网卡为sit0,另外一块网卡,命名为p5p1(不懂怎么得出的),所以如果要使用上述代码,得将sit0改为p5p1,否则错误如下

      Command line is not complete. Try option "help"
      sit1: unknown interface: 没有那个设备
      getaddrinfo: 2001:da8:200:900e:0:5efe:: -2
      2001:da8:200:900e:0:5efe:: 未知的主机
      RTNETLINK answers: No route to host
    
  • 改变网络环境时,需要更改设置。可以这样做:

      ifconfig down sit2
    

    再重新运行脚本建立隧道。

  • 2011-12-17更新:今天不知为甚,即使执行了down的命令,还是会提示错误:

      add tunnel sit0 failed: No buffer space available
    

    表示十分费解。难道要重启么?当然重启是可以的,不过这不是太弱了么!!what a stupid method!!

  • 2011-12-19更新:显然对于我这种有线无线网络环境经常改变的人来说基本会天天碰到这个问题,重启了几次之后实在不能忍受了。ipconfig -a可以看见我设置的隧道都在,sit1,sit2,sit0(这个不是我设置的,默认就有),我猜想删除这些记录就可以了,but我不知道命令。今天无意google发现这个命令:ip tunnel

      sit0: ipv6/ip  remote any  local any  ttl 64  nopmtudisc 6rd-prefix 2002::/16
      sit2: ipv6/ip  remote 59.66.4.50  local 101.5.124.000  ttl inherit  6rd-prefix 2002::/16
      sit1: ipv6/ip  remote 59.66.4.50  local 59.66.162.100  ttl inherit  6rd-prefix 2002::/16 
    

    note:上述IP地址已经调整过

    显然我的IP地址改变之后这些不能使用了,利用ip tunnel del sit*删除无用命令。重新建立隧道,问题解决!小小满足感,thanks the forum where I learned the ip tunneladdress。 再多说几句,其实现在Tsinghua的无线网是可以直接登录Ipv6的,只是这速度有点汗颜,600+的ping google,隧道才40+。所以还是继续isatap吧。

  • sit* 星号数字自定,当然不能等于0了。

Windows(win7)🔗

命令文件,来自北邮人论坛,只是改为清华的IP。 以下命令全部以管理员身份运行。 或者直接一句命令: netsh interface ipv6 isatap set router 59.66.4.50 如果是xp系统的话,需要安装ipv6: netsh interface ipv6 install windows下的比较麻烦,不知为甚偶尔会出问题。需要勾掉本地连接中网络配置中的ipv6协议。

  • 2012-01-01更新:win7下经常出现的麻烦是注销或者休眠之后一般isatap都会失效,重启可以解决问题。应该和linux下的问题差不多,但是windows 的命令实在了解不多,无从下手。今天遇见同样的问题,大概看了下关于netsh命令。居然尝试成功了,但是依旧不知原因。记录如下,留待以后验证: 使用如下命令禁用并重启isatap:

      netsh interface isatap set state disabled
      netsh interface isatap set state default
    

    重新设置isatap。

  • 关于netsh:

关于阅读工具

阅读是人类获取经验知识的重要途径。本文主要针对包括Web、移动设备等平台的阅读服务或工具,简单总结并评价。

稍后阅读 Read Later🔗

Instapaper Pocket Readability

“Read later”,“稍后阅读”或者“待阅”,这类服务从何时兴起不曾考证过,但是其流行的背景大致可以总结为以下几点:

  1. 网络阅读的缺陷:浅阅读。无法做专注的思考。
  2. 移动手持设备的兴起(此处主要指手机和平板电脑)。人们更加愿意手持设备进行阅读,而不是面对一个十几英寸甚至几十英寸的电脑屏幕,原因之一在于移动设备的方便,随时随地阅读。
  3. Kindle等电子书的普及,对于较长的文章,kindle阅读有天然的优势,对眼睛的伤害较小以及续航时间长也是其普及的重要原因。

目前流行的这类服务有: 1. Instapaper 2. Pocket 3. Readability 4. Klip.me

Better Reader🔗

相对于Read later,还有一类阅读服务应该称之为Better Reader,即更好的阅读效果。很多网站,正文的四周充斥着广告,或者因为字体版式等原因可阅读性并不好,Better reader正是满足这一需要,自动提取出正文,进行排版字体等的优化,使得阅读更加友好。几乎所有的Read Later服务均提供这一功能,值得一提的是,Evernote也推出了一款浏览器插件Clearly满足这一需求。

Kindle到手时最先尝试的是Instapaper,真的不得不说界面非常简陋,无愧于一人公司之称。之后没再使用,因为当时没有这个需求,看书仅限于本地,推送用的也非常少。 后来渐渐体会到Read later的必要性,于是有目的的寻找起这样的服务。先后尝试的有Readitlater(现名Pocket),Readablity,Klip it,现在最终选择的是Instapaper。现在来简单比较一下各服务。

  1. 速度。就我个人的体验来看,目前在网页操作上,依旧是Instapaper的速度略占优势。
  2. 网页版面。Instapaper是极简的风格,界面十分朴素。Pocket以及Readanility的界面比较华丽。操作感觉更加舒适。
  3. 文章正确处理能力。Readability最差,部分网页完全不能识别,Klip.me次之。Instapaper与Pocket处理能力类似,均可以接受,部分网页Pocket更优。针对网页主体文字的识别(网易新闻),发现Readability完全错误,Instapaper基本可以使用,但是有瑕疵,多余评论也包含在内。pocket与Clearly完美识别。
  4. 平台支持。支持kindle的有Instapaper,Readability,Klip.me,其中最佳应为Instapaper,Klip.me推送也不错,但是排版没有优势。Android平台,Pocket最优,Instapaper的官方android版本刚刚推出,且非作者本人开发维护,存在部分文章无法下载的情况,其他不详。IOS设备,尚未体验。

综合以上几点,考虑到与Kindle的配合使用,使用的流畅性,主要使用Instapaper以及Clearly。

对于Instapaper的使用,目前是以下方案:

  1. 配合chrome扩展添加文章到Instapaper,Google Reader发送到Instapaper
  2. 账户连接Twitter,Facebook,Evernote 社会化分享,将liked文章自动发送到Evernote

对于Instapaper的使用,现在对Instapaper的文章管理十分的十分的不满,为什不支持标签?这个实在是令人蛋疼无比,尤其主要在Web使用的,希望开发者不断改进吧,Marco Arment。考虑到其个人的观点,感觉这点是不会再改进了,极简主义。

以上只是个人使用中的看法,由于部分平台体验时间不久,定会存在与实际情况不符的地方,欢迎讨论。

RSS🔗

Google Reader 于2013年7月1日关闭,RSS市场终于打破多年以来的安静局面。Google Reader的替代品真如雨后春笋一般,但是目前在Web端尚未出现能够和Google比肩的服务。以下主要分桌面和移动端讨论RSS Reader。

  1. 桌面 Desktop

    • Feedly
    • Digg Reader
    • theoldreader
    • feedbin
  2. 移动设备 Android & iOS 上述桌面服务提供商一般都会提供移动应用,但是Feedly的Android应用太差,UI不错,流畅性不能忍受。Digg Reader的Android应用尚未出现,iOS的无法体验。值得使用的多位第三方专注于阅读体验、依托上述桌面服务提供者的应用。 Android平台大多之前依附于Google Reader的服务,目前多数应用没有继续更新,随着GR一同进入坟墓,便不在考虑范围内了。 Press $2.99 关于Press的讨论 http://v2ex.com/t/55925

iOS 平台 RSS 阅读器主要推荐 Reeder 2。

电子书(含PDF)🔗

主要推荐移动平台应用。 * goodreader, iOS * PDF Expert, iOS * marvin, iOS * Kindle, iOS & Android

书签服务的发展

书签,即Bookmark,紧跟着Internet的出现,万维网的出现使得互联网网页的数量飞速发展,为了在这样一片广阔的世界中生存,你需要利用书签来帮你记住有兴趣的网页,以备后来需要。下面简单回顾一下个人对于书签的认识。

首先定义一下书签的概念进而对其进行分类。个人认为存在这样两类书签,一是站点的地址,即各个网站的首页或者入口。此种书签的意义在于使得我们能够方便地进入某一网站,接下来讨论的都是此种意义的书签,即传统意义上的书签。其二,特定页面的书签,例如某个网站里面的某一特殊页面,某个博客里面的某篇文章,这样的书签一般是记录以供稍后打开阅读,正式由于此种书签的存在,有了现在很火的待阅类服务,例如Instapaper,Pocket等等,关于此种书签的讨论放在另一篇文章中。

最早的概念是收藏夹,IE的收藏夹,当时的方法是重装系统前手动备份,之后再导入数据。安装其他浏览器时,一般会自动导入IE的links。

上大学的时候,接触到搜狗浏览器,因为教育网上外网(国外网络)需要支付价格高昂的流量费,搜狗的智能代理可以解决一部分浏览国外网站的需求,因此果断投奔搜狗浏览器,上网加速与双核的噱头的确吸引了很多人。搜狗让我知道的是原来书签是可以同步的,当时还特地整理过书签,十几个分类,几百个网址,无论是重装还是用图书馆的电脑,账户同步数据的确很方便,极大了提高了生产力:)。

渐渐的,当我还在从小白的队伍挣扎时,发现了chrome的速度真的是非常快,还有清新的界面(当时还没有小清新这个现在泛滥的词语),最重要的是,同步一切的能力:书签、扩展、密码、历史、cookie等等。但是,作为一个还没脱离小白队伍的小白,我的chrome之路在没有掌握一些科学上网的姿势之前,注定布满荆棘。

曙光出现在网络改革,出现在ipv6在教育网的普及,那一段时间,发现了google application engine这个伟大的产品,发现了ipv6 hosts。正式进入chrome的世界,直到现在。习惯了地址栏直接输入,渐渐冷落了书签栏,为了节省空间直接隐藏了书签栏。对于常用的网站这样没有任何问题,但是书签的另外一个作用收藏,却得不到解决,即使添加进了书签,但是因为数量众多使得即便分类明确也没办法起到“收藏”的作用。

在有意的寻求下,Google Bookmark与Delicious进入了视线,考虑到对于Google的信任以及Yahoo的日薄西山,我的选择不言自明。Google Bookmark当时还有list的功能,直接将其当作书签的文件夹分类用了,可惜后来背大扫除清理掉了,只能将每个条目加了标签勉强使用。目前个人的收藏方式是,通过chrome的Google Bookmark扩展来收藏网页,加上标签。存在的问题是仅仅限于收藏这一步,至于后来再去看这些收藏的好的机制并未形成。这个问题我在最后会进一步说到。

我和书签的关系本该到此告一段落了,这里还想在就书签收藏社会化这个问题谈一下自己的看法,社会化这个词在web2.0时代说的很多,简单来说就是分享书签,将自己的收藏分享给好友。其实我对于这个本来是很看好的,所以在得知deliciousyahoo出售后,还颇感遗憾,高兴的是有人接手了,而且大幅度改版,且在不久后推出了中国版的delicious,即美味书签【mei.fm】,我发现其居然不支持书签导入,整体感觉就是一个图片分享网站,且与国际版账号数据不想通,遂放弃。有一段时间我尝试了一下国际版的的delicious,虽然也有chrome的扩展,但是速度实在太慢偶尔还没隔在长城的另一边,和谐中国基本不能使用,故而放弃。

因为对于firefox不是特别感冒,当然这完全是个人原因,在我心里,Firefox与Chrome基本处于同一高度。由于对于Google的感情以及前一段时间Firefox的疯狂更新导致插件兼容性问题,我至今一直是一名坚定的chromer。提到firefox是因为想介绍一下跨浏览器书签同步工具xmarks,xmarks的用户还是很多的。其主要作用是用第三方的服务来管理书签,之后再同步到浏览器,集中管理可以摆脱对于浏览器的依赖以及跨平台的问题,值得推荐。但是对于单独使用chrome或者firefox的话,个人觉得没什么大的必要去使用xmarks,因为浏览器自身的同步服务已经做得非常完美。

目前来看,我的解决方案是Chrome,Google Bookmark,最让我深恶痛绝的是Google为什么不将Chrome的书签与Google Bookmark合并?希望以后Google能够合并这两个产品,这是无数用户的呼声。收藏的问题我现在是这样解决的,对于看到的个人博客,先添加进Google Bookmark的blog标签,再看其内容利用Google Reader订阅RSS,对于文章一般是利用Instapaper或者Evernote收藏,普通网页则直接按照对应标签塞进Google Bookmark。