2015年9月24日星期四

从香港购买iMac并托运回来的经历

      8月底去香港参加一个会议。考虑到物价便宜,计划买一台苹果电脑回来。

      一开始一直在纠结到底买mac mini还是iMac,一个是价格因素,另一个是怎么带回来的问题。

      mac mini便宜、性能上足够家用,看网页视频、处理文档等,但是需要自己配显示器键盘鼠标,其实再配一个大一点、质量好一点的显示器,算下来价格和iMac差不多了。

      iMac很漂亮,让人流口水,但是价格不低,而且最重要的,坐航班怎么弄回来。google很久,大家有说直接带上飞机的,也有托运的,例子不多,有的人托运最后把屏幕弄碎了,有的说直接带上飞机可能不让带。mac mini没有这个问题,体积小,直接装背包里就行了。

      在入住酒店后,发现酒店大厅就有两台iMac,第二天起了个大早跑去大厅体验,才发现27寸iMac的屏幕真的是很大,眼睛根本看不过来全屏幕,但是体验确实很好。所以最终决定买iMac,但是买21寸的,并仔细包装、以托运的方式带回国。

      在苹果官网上做了功课,21.5寸iMac中配,国行9688人民币,港行9888港币,折算回来合人民币8142块,便宜了1500+。正好还有一个高中同学在港读书,用学生优惠还可以再便宜约300+,而且正处暑假,苹果作活动,还送一个价值1000+港币的Beats solo2耳机。

      又一城苹果店买到手后,在店里打开看了一下没有问题,拖回了酒店。把里面的包装仔细看了一下,发现成型泡沫只在屏幕的四周进行保护,屏幕中间大片区域是没有泡沫保护的,如果有硬物戳到了包装壳上这个区域,很有可能会把屏幕碰碎。这个区域离表面的包装盒厚度不大,酒店里正好提供一次性拖鞋,软度厚度都合适,就拿了3双填在了这个区域里面,然后又塞进去n多衣服做缓冲才放心。

      在机场有打包的服务,走之前在网上查了价格,泡泡纸+包纸+捆绑也不过150港币,结果到了机场才发现要花310港币,主要是泡泡纸用了大概有10米多,然后用包装箱包起来,最后五花大绑捆绑起来。拖到行李托运没有超重。最后还是不太放心,于是让工作人员在箱子上下左右前后都贴满了易碎签。
     
      坐的航班是直飞成都的,晚上到了机场,办完入境,取了行李,最后过成都海关时,发现必须要过安检。心想完了,要被查税了。没办法,只能把大包小包行李箱和imac的大箱子一股脑过了安检,过去之后一个工作人员拉住问这个大箱子里面是什么,我顿时紧张起来,但故作镇定的说是显示器,那时候过关的人很多,只有两台安检机,那人估计也顾不过来了,嘟囔了句“这么大显示器。。。”也就没理我了,算是顺利过关吧。
   
      从机场出来打车到酒店后第一件事就是拆开检查,还好一点问题都没有。算是大功告成。

      回来看到新闻说中国海关从9月1日起进一步收紧了政策:100%疑问箱开箱查验,100%领队查验,100%团体游客查验!自用超过5000元开始征税!心想真是幸运,如果9.1日后被问到的话,肯定要开包检查,就免不了交上千块的税了。

      买的时候还有个小插曲,先去了ifc的苹果旗舰店问店员可不可以拿别人的学生证买,那人说没问题。结果第二天拿了同学的学生证,跑去又一城的苹果店买的时候,连续问了两个店员都说不可以,必须学生证本人到场。只好又把我同学叫来才行。跟我同行的LJ买了iPad air,学生价也有100+地优惠。

       最后要感谢一下YQ童鞋,先借给我们手机充电线用,还借学生证给我们买苹果电脑。

2015年3月9日星期一

利用AWS科学上网

Amazon AWS给予新申请帐号一年的免费试用期,
免费月流量额度足够科学上网。

一、申请amazon AWS账号
二、创建云主机(推荐ubuntu 14)
三、通过命令行安装并配置shadowsocks


一、申请AWS账号
参考下面网页教程,虽然比较老,但是大致流程是一样的。
http://blog.csdn.net/awschina/article/details/17149515


二、创建云主机
参考网页教程
http://sunny-play.com/2012/03/get-started-with-ec2/
http://blog.csdn.net/williamvalentine/article/details/17306895

注意以下几点:
1、Region推荐Tokyo,国内连接速度较快(update2016-09:US West (N. California)还是快一些
2、虚拟机要选带星号的,属于免费套餐。推荐ubuntu14
3、保存好下载的.pem文件,以后连接虚拟机就靠这个文件了。
4、创建后,注意检查Network & Security下面的Security Groups,将Inbound和Outbound配置都改为:All traffic, All, All, 0.0.0.0/0
5、可以为虚拟机分配一个静态IP,在Network & Security下面的Elastic IPs,创建后Associate到新建的虚拟机上。

三、安装并配置shadowsocks
需要用到的工具:linux或mac的命令行工具
windows需要使用putty


shandowsocks有许多版本,最早为python,后来发展出了各种编程语言版本。
目前推荐的是libev版本,纯C语言编写,内存控制优秀,运行稳定,低端服务器也有很好的表现.

开发页面
https://github.com/shadowsocks/shadowsocks-libev

安装方法:
Debian & Ubuntu
编辑 /etc/apt/sources.list文件,
添加如下两行,shadowsocks的源
# Debian Wheezy, Ubuntu 12.04 or any distribution with libssl > 1.0.1
deb http://shadowsocks.org/debian wheezy main


然后安装shadowsocks
sudo apt-get update
sudo apt-get install shadowsocks-libev


创建配置文件:
sudo mkdir /etc/shadowsocks
cd /etc/shadowsocks
sudo vim shadowsocksMyConfig.json

内容如下(主要配置三项:服务器端口、密码及加密方式,推荐aes-256-cfb)
{
    "server":"0.0.0.0",
    "server_port":1080,
    "password":"mypassword",
    "timeout":100,
    "method":"aes-256-cfb",
}


启动shadowsocks
sudo ss-server -c /etc/shadowsocks/shadowsocksMyConfig.json
至此,shadowsocks已配置完毕,可以使用了。




可以使用supervisor工具让shadowsocks在后台运行,
不必手动启动shadowsocks服务,而且进程出错以后会自动重启shadowsocks服务。

首先安装supervisor
sudo apt-get install supervisor

然后创建supervisor对shadowsocks的配置文件
cd /etc/supervisor/conf.d/
sudo vi shadowsocks.conf

配置文件内容
[program:shadowsocks]
command=ss-server -c /etc/shadowsocks/shadowsocksMyConfig.json
autorestart=true
user=nobody

若需要shadowsocks以小于1024的端口启动,上述最后一行必须使用user=root

下面运行supervisor,
sudo service supervisor start
sudo supervisorctl reload
如果第一条命令不能执行可尝试将服务名由supervisor改为supervisord。

如果需要查看运行状态和log文件可以使用如下的命令
sudo supervisorctl status
sudo supervisorctl tail -f shadowsocks stderr



其它就是一些虚拟主机的优化了
AWS虚拟机时间长了内存占用就高了,
可以配置crontab定时重启,具体方法网上很多。
(update201609:推荐的一个优化是升级到3.5以上内核,可将速度从500K/s提高到1500K/s)





2014年12月27日星期六

Openwrt配置:自动多拨脚本及杂项

本文的目的是说明使用脚本实现
  1. 自动多拨
  2. 多拨完成后关闭未连接的pppoe端口(防止自动重复拨号,耗费CPU资源)
  3. 重设mwan3的https连接

系统: CHAOS CALMER (Bleeding Edge, r42871)
前提条件:
  1. 设置好了多个wan(wan1, wan2, wan3, wan4, ...,我这里是7个),并可以多拨;
  2. 安装了mwan3,并已配置好防火墙等(可参考下面的mwan3配置文件);

使用crontab定时运行多拨脚本;

这里采用的多拨方法是network restart,然后检查拨号成功的数目,当到达所需的多拨个数时停止;
我这里一般7个wan可以播出2-3个,运气好能有5个;

一共用了3个脚本
  1. MultiDialPPPOE.sh:用于多拨,接受1个参数,就是想要达到的多拨数目;
  2. CloseDeadLink.sh:用于多拨完成后关闭未拨号成功的wan,这样防止这些wan自动重拨,占用CPU资源
  3. SetHTTPS4mwan3.sh:用于重设mwan3的443端口的策略,保证https连接可用(对于网银等很重要);

为了重设mwan3的https配置,使用了两个临时文件来重新组合成mwan3的配置文件:mwan3.part1和mwan3.part2

定时运行多拨(每天早上3:20拨号,其中MultiDialPPPOE.sh 3即表示需要达到的多拨数目,达到3个或以上拨号后就停止)
root@OpenWrtZZH:/etc/crontabs# cat /etc/crontabs/root
20 03 * * * sh /home/MultiDialShell/MultiDialPPPOE.sh 3 >> /home/MultiDialShell/PPPOE_MultiDial.log

下面是 MultiDialPPPOE.sh内容:

root@OpenWrtZZH:/home/MultiDialShell# cat MultiDialPPPOE.sh
#!/bin/sh
echo "**************************************************************"
echo "`date +%Y%m%d-%H%M%S`"
# NUMBER OF PPPOE LINKS
if [ "$1" = "" ]
then
    NumOfLinkRequired=1
else
    NumOfLinkRequired=$1
fi

# GET ACTUAL PPPOE LINK NUMBER.
ActualLinkNum=`ifconfig | grep 'pppoe-wan' | wc -l`

while [ $ActualLinkNum -lt $NumOfLinkRequired ]
do
    echo "        $ActualLinkNum(Actual) of $NumOfLinkRequired(required) links"
    echo "        trying to restart network..."
    echo "        COMMAND: /etc/init.d/network restart"
    /etc/init.d/network restart
    sleep 5
   
    ActualLinkNum=`ifconfig | grep 'pppoe-wan' | wc -l`
done

echo "    $ActualLinkNum(Actual) / $NumOfLinkRequired(Required) links!"

sleep 1
echo "    Closing Dead Links..."
sh ./CloseDeadLink.sh
sleep 1
echo "    Resetting HTTPS links for mwan3..."
sh ./SetHTTPS4mwan3.sh
echo "Dial Proc Done! "

echo "**************************************************************"
下面是 CloseDeadLink.sh内容:
root@OpenWrtZZH:/home/MultiDialShell# cat CloseDeadLink.sh
#!/bin/sh
# close the dead link of wan*

TempValue=1

for k in $( seq 1 7 )
do
    string=pppoe-wan$k
    wanstatus=`ifconfig | grep $string | wc -l`
    if [ $wanstatus -ne $TempValue ]
        then
        ifdown wan$k
        echo "        wan$k stopped"
    else
        echo "        wan$k active"
    fi
下面是 SetHTTPS4mwan3.sh内容:
root@OpenWrtZZH:/home/MultiDialShell# cat SetHTTPS4mwan3.sh
#!/bin/sh
# close the dead link of wan*

TempValue=1
# wan1 PPPOE status check

for k in $( seq 1 7 )
do
    string=pppoe-wan$k
    echo "        checking wan$k"
    wanstatus=`ifconfig | grep $string | wc -l`
    if [ $wanstatus -eq $TempValue ]
        then
        echo "" > mwan3.test
        str1=w${k}_only
        str2="'"
        str3="option use_policy "
        str4=${str3}${str2}${str1}${str2}
       
        cat mwan3.part1 > mwan3.test
        echo $str4 >> mwan3.test
        cat mwan3.part2 >> mwan3.test
        echo "        wan${k} is active"
        echo "        Setting wan${k} as https port..."
        break
    fi
done
cp mwan3.test /etc/config/mwan3
sleep 1
mwan3 restart
下面是完整的mwan3内容(/etc/config下面)
root@OpenWrtZZH:/home/MultiDialShell# cat mwan3.bk20141228

config interface 'wan1'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan2'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan3'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan4'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan5'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan6'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'

config interface 'wan7'
    option enabled '1'
    option reliability '2'
    option count '1'
    option timeout '3'
    option interval '8'
    option down '8'
    option up '8'
    option reroute '1'


config member 'w1_m1_w1'
    option interface 'wan1'
    option metric '1'
    option weight '1'

config member 'w2_m1_w1'
    option interface 'wan2'
    option metric '1'
    option weight '1'

config member 'w3_m1_w1'
    option interface 'wan3'
    option metric '1'
    option weight '1'

config member 'w4_m1_w1'
    option interface 'wan4'
    option metric '1'
    option weight '1'

config member 'w5_m1_w1'
    option interface 'wan5'
    option metric '1'
    option weight '1'

config member 'w6_m1_w1'
    option interface 'wan6'
    option metric '1'
    option weight '1'

config member 'w7_m1_w1'
    option interface 'wan7'
    option metric '1'
    option weight '1'


config policy 'w1_only'
    list use_member 'w1_m1_w1'

config policy 'w2_only'
    list use_member 'w2_m1_w1'

config policy 'w3_only'
    list use_member 'w3_m1_w1'

config policy 'w4_only'
    list use_member 'w4_m1_w1'

config policy 'w5_only'
    list use_member 'w5_m1_w1'

config policy 'w6_only'
    list use_member 'w6_m1_w1'

config policy 'w7_only'
    list use_member 'w7_m1_w1'


config policy 'wan_s_balanced'
    list use_member 'w1_m1_w1'
    list use_member 'w2_m1_w1'
    list use_member 'w3_m1_w1'
    list use_member 'w4_m1_w1'
    list use_member 'w5_m1_w1'
    list use_member 'w6_m1_w1'
    list use_member 'w7_m1_w1'


config rule 'rule_https'
    option dest_port '443'
    option proto 'tcp'
    option use_policy 'w2_only'

config rule 'rule_all'
    option use_policy 'wan_s_balanced'
    option proto 'all'


2013年3月7日星期四

LaTeX tips: \mathcal get unwanted fonts when using some package

The \mathcal may be get redefined in some packages,
 such as mathptmx / amsfonts , etc, and when use it, the font isn't the default anymore, like this

 
You may want to use those packages because they are very usefull,
but you still want use standard \mathcal such as \mathcal{PT} symmetry.
Well then you can use one of the following commands to reset the \mathcal function.

\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{b}{n}

 Here {b} means bold type, and {m} (maybe) means not bold.
And the default \mathcal is back.




2012年11月6日星期二

黑苹果到底~ OS X: advantages and disadvantages


Advantages:
  1. 鼠标支持非激活窗口内容滚动,即将鼠标置于未激活窗口上,能直接滚动内容。
  2. 文字输入环境,用上下键可以直接移动到文字的顶部和底部(比如浏览器地址栏、搜索框、修改文件名等等)
  3. 黑白显示效果
  4. MissionControl,可以快速切换应用程序
  5. 系统截图,不用QQ!
  6. WiFi共享网络!
  7. 朗读、中文听写!这个很牛叉
  8. 屏保很漂亮
  9. SpotLight快速搜索,还能直接做数学计算
  10. 对打印机神马的支持很好
  11. 集成Gmail, Yahoo!, Aol., 163, 126, QQMail, Weibo, youku, 土豆,Twitter和facebook
  12. Time machine!又一个大神器!
  13. 缩放显示(对应于windows的放大镜)
  14. QQ,简约而不简单
  15. Mail、iTunes、iPhoto,每个都是精品
  16. 任何软件,只要有打印功能,就可以生成pdf!
  17. 安装程序 = 拉进 /Applications,   卸载程序 = 拉进Trash
  18. FaceTime是个好东东,可惜国人用的很少
  19. AppleScript很强大,简直就是人了!
  20. Keynote,效果震惊! 


Disadvantages:
  1. 网银!
  2. TeX(系统编码的问题)
  3. 迅雷太挫了
  4. 么有Origin Pro
  5. OfficeForMac2011,虽说功能挺齐全,但是我写完了拿到windows下面看,格式神马的还是各种凌乱啊啊~~

2012年4月7日星期六

Unlimited Registion of HyperDock 1.2.1

Download HyperDock and install it.

Double click a working license and then HyperDock is registered until reboot.


Here's the magic:
  1. Use terminal to change the filename HyperDock.prefpane into HyperDock (the file is in ~/Library/PreferencePanes/ or /Library/PreferencePanes/.
  2. Open preference->Security->Firewall and enable it, in Advanced settings,  add an item, and navigate to ~/Library/PreferencePanes/HyperDock/Contents/Resources and select Hyper Dock Helper, and disable it from connecting to the internet.
  3. Use terminal to change the filename back from HyperDock into HyperDock.prefpane.
All done, enjoy!!!
Another method might be editing hosts. Somebody may want to try it.

2012年3月3日星期六