博客 | Blog

虚拟机中的 Gollum 运行缓慢

在家,告别了学校的百兆网络。目前3G 过活。无奈发现虚 拟机中的gollum 运行极度缓慢,Chrome 的开发者工具显示 waiting time 达到了10+ seconds。遂至Github 的官方repo 中搜索"slow",发现 issus177 遂解决。

same problem, I’m here by searching slow in the repo. Thanks @arr2036 for “One thing that can cause Gollum to appear like it was responding slowly is that webrick does reverse DNS lookups by default (don’t ask me why). "

This is really stupid when you setup gollum in vm(vmware) and browser in the host machine, the IP is something like 192.168.8.* . and the reverse DNS lookups webrick does cause me 10s or more under my poor 3G network.

...

Digital Ocean VPS评测

Vps

官网: Digital Ocean

界面清新,图标按钮很大,蓝绿色彩搭配,很舒服的官网设计。

5$一月起步,SSD硬盘,但是实测速度一般。LA的网络到中国还不错。

采用按时计费的方式,注意,并不是关闭VPS就不收费了,而是释放母机资源后不收费。以下是客服说明:

Hello,

You will still be charged for the virtual server even if its in an off state, because the hypervisor continues to reserve your share of CPU, RAM and disk, as well as the IP for your virtual server.

If you would like to discontinue using a virtual server but save it for later use, we recommend taking a snapshot of the server and then destroying it.

...

使用 kindle dxg 作为第二显示器

背景 #

Amazon都放弃dxg了,新产品没有跟上来,软件版本也是很久没有动静。毕竟是商业公司,dxg注定是小众的产品,太笨重,反应太慢是避不开的问题。但是用来看A4的PDF还是不错的。将其作为第二显示器也算是一物多用,略减遗憾。

以下测试环境为 windows 7 64bit,需要的软件主要是:TightVNCPutty

步骤 #

  1. 越狱,usbnetwork等是准备工作,可以参考我的前一篇文章:kindle dxg添加中文支持及更改字体

  2. PC端:安装TightVNC
    配置方面主要注意的是:Windows的防火墙设置,关闭或者设置例外。取消TightVNC的认证密码;在extra标签下设置为dxg准备的分辨率:1200x824,此处设置的端口号为最终连接的端口号。

  3. Kindle端:安装kindlevncviewer 将下载的附件压缩包内的kindlevncviewer子文件夹解压到kindle的根目录,也就是/mnt/us目录。这里需要注意的是要将此目录下的两个共享库文件复制到系统库文件下/lib,分别是libjpeg.so.8libvncclient.so.0。按道理来说应该会先搜索当前目录,但是我在运行的时候会提示找不到共享库文件,所以复制到系统库文件下。这样操作之后是OK的。

  4. 在kindle上执行如下命令:./kindlevncviewer -config ./config.lua 192.168.2.1:5901 不出意外的话就OK了。但是出意外的情况会有很多,你可以根据mobileread论坛上的讨论获得线索,或者直接看github上的代码。相关资料后附。

5.NOTE: 如果出现这样的错误:

com.lab126.powerd failed to set value for property prevent ScreenSaver

一般来说是你的VNC Server出问题了,请检查防火墙,端口,认证等设置,主要是TightVNC Server的配置。

另外,参考[4]是另外一种方式,通过浏览器渲染,有兴趣的也可以看一看,个人觉得有点蛋疼。

其他问题欢迎留言讨论。:)

附张折腾成功的照片

![dxg as screen]({{ site.cdn_url }}/dxg_as_screen.jpg)

参考 #

[1] mobileread thread
[2] Github Source Code
[3] http://blog.csdn.net/sjtuyunlei/article/details/7671608
[4] http://www.mobileread.com/forums/showthread.php?t=148581

SmartVPS香港节点入门套餐VPS测试

Vps

可选OS : CentOS, debian, ubuntu
内存 : 512M(保证) ~ 1G(最大)
硬盘 : 20G
流量限制 : 无
IP地址 : IPv4 x 1 + IPv6 x 1
升级:此套餐暂无选项
root权限 : 有
SSH console : 有
管理界面 : 有


速度 #

本地环境:北京教育网

  1. IPV4 ping 78ms
    ping result

     C:\Users>ping 36.54.x.x
     Pinging 36.54.x.x with 32 bytes of data:
     Reply from 36.54.x.x: bytes=32 time=76ms TTL=47
     Reply from 36.54.x.x: bytes=32 time=111ms TTL=47
     Reply from 36.54.x.x: bytes=32 time=56ms TTL=47
     Reply from 36.54.x.x: bytes=32 time=69ms TTL=47
    
     Ping statistics for 36.54.x.x:
     	Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
     Approximate round trip times in milli-seconds:
     	Minimum = 56ms, Maximum = 111ms, Average = 78ms
    
  2. IPV6 ping 158ms
    ping result

    ...

如何在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);
    }
}

命令在终端就可以运行:

...

使用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

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

美国官网购买ThinkPad X230及注册IWS

购买优惠 #

这一部分其实我没有什么好说的,基本都是在论坛上看前人的总结帖子,分为几个通道。主要是在51nb上看到了很多经验之谈,在此感谢。我就不搬运过来了,有需要的话自己去这几个论坛有针对性地搜索即可。

我在看完之后基本就在每天观察,订阅一些特价信息。在等到7折且硬盘免费升级到500G时终于决定入手。这个折扣除了bug之外算是最好的了,值得出手。

这里需要说一下中行信用卡的问题,由于刚刚申请且额度不够,导致我还得去银行购汇存入信用卡,白白浪费了许多时间。可怜终于是有了信用卡的人,我也就不抱怨什么了。

转运记录 #

多方比较之后,最终选择了风雷E渠道。其实转运服务现在有很多家,由于服务受到不可控因素影响太多,所以根本无法找到一直靠谱的转运公司,很多时候真的是在拼人品。风雷E渠道的价格略贵,但是胜在速度较快且是邮政清关,这样自己不用焦虑太长时间,相对来说发生意外的可能较小。如果需要注册的话可以使用我的推广链接

下面简单记录自己的转运过程:

  1. 20121020 官网下单
  2. 20121025 UPS信息生成
  3. 20121028 离开上海
  4. 20121028 到达美国
  5. 20121031 09:04(local time)送达转运仓库OR
  6. 20121106 13:28 邮件通知入库
  7. 20121107 13:50 邮件通知付款
  8. 20121108 9:00 发货
  9. 20121113 建国门海关交税取件

EMS追踪状态如图:

历时23天总体来说速度尚可,中间因为发货重量估计不足使得充值金额偏少导致原箱闪运失败,耽误了几天(这里必须吐槽风雷的称)。风雷的速度基本让我满意,在海关搬起箱子的时候,居然有种不真实的感觉,“怎么这么轻?”,海关查验的时候略微紧张了一下,还好不出意外地税了200RMB。回来在自行车上抱着的时候才察觉到也不是那么轻。

注册IWS #

IWS(International Warranty Service)为全球联保服务,官网给出的说明为:Lenovo Think产品的全球联保服务(IWS)是为那些在非原购买国重新安置Lenovo Think产品的用户所提供的保修服务。客户在Lenovo或Lenovo经销商销售和维护该特定机器类型的国家可以享受该类保修服务。

但是在中国大陆的IWS服务需要另外注册,官网也给出了相应的说明:为了向在境外购买并且在中国大陆出差旅行使用Lenovo Think产品的用户提供更好的服务,我们特别为这些用户提供了在中国大陆的全球联保注册服务。在中国大陆的全球联保注册申请被通过后,用户的产品无需再提供其他证明就可以享受在中国大陆的全球联保服务。 当用户申请进行全球联保注册时,需要提供旅行证件、购机凭证或其它联想需要的证明。

以下不再赘述,主要参考资料来自Lenovo中国官网

注册也是在上述网页,按照说明提交相关资料后IWS会在工作日邮件联系,进行进一步沟通,主要是处理证明材料不全等问题。一般会在很快注册完成。

需要的材料包括但不限于:

  1. 海关税单(需要手写注明电脑编号,电池仓位置,图1)
  2. 微软彩色标签(机器背面或电池槽里微软彩色标签上00开头14位数字组成的号码,图2)
  3. 官网订单确认邮件截图(图3)
  4. UCS运单(中国至美国,也有可能为UPS,位于电脑外包装,图4)
  5. 美国至中国邮寄单(其他美国至中国旅行证明)
  6. 注册人信息、联系方式

我的材料5丢失,在海关取货的时候为了携带方便将转运公司的外包装拆毁丢弃在那里,当时没有意识到注册IWS需要这个。后来邮件中付了转运公司的订单,以及USPS的单号,EMS的追踪状态。最后依旧注册成功。感谢为我服务的工作人员。

注册成功后,IWS会发送邮件确认,3-5个工作日后在联想中国官网便可以查到保修信息,查询网址

20121130update:注册成功之后我回复邮件询问了一下在国内续保IWS的事情,没想到几天后联想总部客服经理居然电话联系我,得知国内续保在官方办理的话是一年¥499,相比于美国官网的$60实在是令人发指。闻到美国续保能否在国内维修的事情对方也表示不太清楚。所以需要续保的同学直接去淘宝续保,价格在240左右。或者直接在购买时就买上续保,之后再注册IWS。

在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。