2020年12月8日星期二

回国科学上网姿势 软路由 通过apple私有Mac地址动态切换

回国科学上网姿势 软路由 通过apple私有Mac地址动态切换


断断续续的尝试了很多科学上网方式,自己搭VPS,家里路由器也升级了好几次,都是为了能装可以跑科学上网的固件,但是最大的问题是性能都一般,速度也不是很稳定。


最近软路由被提到较多,最吸引人的是可以达的速度非常高,可以看4k油管。

软路由设备一般不便宜,有个友善的R2S金属壳适合入门,我买来装上带openclash的固件做旁路由,但是有个问题如何灵活的控制是否需要科学上网,有人分享的方案里用VLAN控制不同机器用DHCP,但是这样是固定,没法动态切换。iOS 14 新出了个功能是 private address,这样就可以通过MAC地址来分配不同地址。

主路由:192.168.0.1 [关DHCP]
旁路由:192.168.0.28 [开DHCP,运行openclash]

比如下面 dnsmasq 配置,默认用DNS和网关192.168.0.1 

dhcp-option=option:router,192.168.0.1
dhcp-option=option:dns-server,192.168.0.1

dhcp-host=60:F4:FF:FF:FF:FF,set:altdnsgw,192.168.0.201,iPhone,infinite
dhcp-option=tag:altdnsgw,option:dns-server,192.168.0.28
dhcp-option=tag:altdnsgw,option:router,192.168.0.28



2017年12月27日星期三

英国 CINEWORLD UNLIMITED CARD 无限卡,年卡优惠近7折

英国 CINEWORLD UNLIMITED CARD 无限卡,年卡优惠近7折

我平时比较喜欢看电影,来英国后开始没看多少电影,记得第一次去看还是大半年后自己tesco会员卡积分可以换一张免费电影票看了 《脱壳机动队》,电影没字幕纯练听力了。

有次去London碰到前同事,他提到以前他在伯明翰的时候办了个电影院的无限卡,空了就去看消磨了时间也享受了电影。

英国一般2D电影票价10来磅,小贵。如果你是个电影迷,每周来一场,价格也不菲,既然那么热衷电影和喜欢电影院的氛围,不妨申请无限卡,我办的是Cineworld电影院的“Unlimited card”。

会员活动:这张卡只要17.9英镑一个月(起价),能享受到无限量的电影,非常划算,相当于你单独看两三场电影的价格;不过这种优惠卡一次性要签12个月的合同,每个月会自动从你的银行卡直接扣钱,持卡第一年看3D电影会另外交钱,一年后会升级为黑卡VIP看任何电影,同时在电影院买零食和饮料还可以享受25%的优惠。[当然某些不可抗拒原因比如签证到期是可以联系电影院取消direct debit的],同时电影院还会办只为会员开设的secret screening,可以提前看后面几天才上映的电影,还有各种惊喜,有一次去还送巧克力。

我在看怎么办会员卡便宜时看到我们公司员工折扣网站exec有个年卡优惠只要144元,算下来一个月只要12元,相当于7折不到,因为这个优惠年卡不能退,考虑到自己在英国应该还会有段时间,就果断买了个。下单后就收到一个voucher。

然后在cineworld 官网选择办理ulimited会员卡,选择一年卡,然后输入收到的voucher 卡就办下来,在收到实体卡前,你会收到一个temp card pdf文件,然后可以在手机app或者网站订票,到电影院看电影出示下电子票就可以了,有时会要看下你的会员卡。所以不要冒名去看。
我的会员卡:

后来看的多了,某天在看人猿星球的时候发现英国的电影其实也有字幕的版本。在官网翻了下,如果有电影是带ST Subtitled 就是有字幕的。看的就稍微轻松点了,笑点也多懂些。


Cineworld有个会员推荐奖励机制,就是你去办会员卡时,如果有你是被推荐的,你和推荐人都会获得一个月免费看电影时间。如果需要,我的推荐码是:RAF-74SX-28MQ-28TH-57TM

下面是我推荐了一个朋友后收到的免费一个月时间。


这个方式办年卡不可中间中断合同退款,不过都办年卡可见对电影的喜爱,如果有朋友对上面员工年卡优惠有兴趣,可以加我微信,如果我还可以使用公司优惠我乐意帮忙,因为年费一直在涨,我可以给到普通年卡一年八折给不了七折价格,就当是我时间成本咯。
注:上面年卡voucher不包括伦敦西区的Cineworld剧院,这些剧院包括Fulham Road和Leicester Square这两家


2023-12-22:拿掉了微信联系方式,因为已经回国啦。

红领巾上文章 Cineworld | 每月便宜无限看电影的方法:

https://www.honglingjin.co.uk/11672.html



2012年6月7日星期四

[DDU] 每天进步一点点 20120608

Click to open:

[DDU] 每天进步一点点 20120608
unix下的很多程序都是复杂而强大,众多的参数来满足不同的需求。
openssh和rsync就是如此。

rsync的断点续传参数

   -P         The -P option is equivalent to --partial --progress.   Its  pur-
              pose  is to make it much easier to specify these two options for
              a long transfer that may be interrupted.
   --partial
              By  default, rsync will delete any partially transferred file if
              the transfer is interrupted. In some circumstances  it  is  more
              desirable  to keep partially transferred files. Using the --par-
              tial option tells rsync to keep the partial  file  which  should
              make  a subsequent transfer of the rest of the file much faster.
sample:
rsync -avzP /tmp/bigfile cnangel@10.1.6.160:/tmp/bigfile

rsync 符号链接(软连接)

rsync 对于符号链接(软连接)的默认表现是为了保持两边一致,会把目标服务器上的目录删除再重建soft link,这个表现是不需要的,有时还导致问题。
        -R, --relative                  use relative path names
            --no-implied-dirs           don’t send implied dirs with --relative           
导致问题一例:
...
building file list ... done
rsync: delete_file: rmdir "/data/apps" failed: Device busy (16)
/apps/./
/apps/lm_data.dat
/apps/testnoel

rsync速度非常快,源于算法的高效

[zt] rsync 的核心算法
rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync利用由Andrew Tridgell发明的算法。这里不介绍其使用方法,只介绍其核心算法。我们可以看到,Unix下的东西,一个命令,一个工具都有很多很精妙的东西,怎么学也学不完,这就是Unix的文化啊。
本来不想写这篇文章的,因为原先发现有很多中文blog都说了这个算法,但是看了一下,发现这些中文blog要么翻译国外文章翻译地非常烂,要么就是介绍这个算法介绍得很乱让人看不懂,还有错误,误人不浅,所以让我觉得有必要写篇rsync算法介绍的文章。(当然,我成文比较仓促,可能会有一些错误,请指正)

问题

首先, 我们先来想一下rsync要解决的问题,如果我们要同步的文件只想传不同的部分,我们就需要对两边的文件做diff,但是这两个问题在两台不同的机器上,无法做diff。如果我们做diff,就要把一个文件传到另一台机器上做diff,但这样一来,我们就传了整个文件,这与我们只想传输不同部的初衷相背。
于是我们就要想一个办法,让这两边的文件见不到面,但还能知道它们间有什么不同。这就出现了rsync的算法。

算法

rsync的算法如下:(假设我们同步源文件名为fileSrc,同步目的文件叫fileDst
1)分块Checksum算法。首先,我们会把fileDst的文件平均切分成若干个小块,比如每块512个字节(最后一块会小于这个数),然后对每块计算两个checksum,
  1. 一个叫rolling checksum,是弱checksum,32位的checksum,其使用的是Mark Adler发明的adler-32算法,
  2. 另一个是强checksum,128位的,以前用md4,现在用md5 hash算法。
为什么要这样?因为若干年前的硬件上跑md4的算法太慢了,所以,我们需要一个快算法来鉴别文件块的不同,但是弱的adler32算法碰撞概率太高了,所以我们还要引入强的checksum算法以保证两文件块是相同的。也就是说,弱的checksum是用来区别不同,而强的是用来确认相同。(checksum的具体公式可以参看这篇文章
2)传输算法。同步目标端会把fileDst的一个checksum列表传给同步源,这个列表里包括了三个东西,rolling checksum(32bits)md5 checksume(128bits)文件块编号
我估计你猜到了同步源机器拿到了这个列表后,会对fileSrc做同样的checksum,然后和fileDst的checksum做对比,这样就知道哪些文件块改变了。
但是,聪明的你一定会有以下两个疑问:
  1. 如果我fileSrc这边在文件中间加了一个字符,这样后面的文件块都会位移一个字符,这样就完全和fileDst这边的不一样了,但理论上来说,我应该只需要传一个字符就好了。这个怎么解决?
  1. 如果这个checksum列表特别长,而我的两边的相同的文件块可能并不是一样的顺序,那就需要查找,线性的查找起来应该特别慢吧。这个怎么解决?
很好,让我们来看一下同步源端的算法。
3)checksum查找算法。同步源端拿到fileDst的checksum数组后,会把这个数据存到一个hash table中,用rolling checksum做hash,以便获得O(1)时间复杂度的查找性能。这个hash table是16bits的,所以,hash table的尺寸是2的16次方,对rolling checksum的hash会被散列到0 到 2^16 – 1中的某个整数值。(对于hash table,如果你不清楚,建议回去看大学时的数据结构教科书)
顺便说一下,我在网上看到很多文章说,“要对rolling checksum做排序”(比如这篇这篇),这两篇文章都引用并翻译了原作者的这篇文章,但是他们都理解错了,不是排序,就只是把fileDst的checksum数据,按rolling checksum做存到2^16的hash table中,当然会发生碰撞,把碰撞的做成一个链表就好了。这就是原文中所说的第二步——搜索有碰撞的情况。
4)比对算法。这是最关键的算法,细节如下:
4.1)取fileSrc的第一个文件块(我们假设的是512个长度),也就是从fileSrc的第1个字节到第512个字节,取出来后做rolling checksum计算。计算好的值到hash表中查。
4.2)如果查到了,说明发现在fileDst中有潜在相同的文件块,于是就再比较md5的checksum,因为rolling checksume太弱了,可能发生碰撞。于是还要算md5的128bits的checksum,这样一来,我们就有 2^-(32+128) = 2^-160的概率发生碰撞,这太小了可以忽略。如果rolling checksum和md5 checksum都相同,这说明在fileDst中有相同的块,我们需要记下这一块在fileDst下的文件编号
4.3)如果fileSrc的rolling checksum 没有在hash table中找到,那就不用算md5 checksum了。表示这一块中有不同的信息。总之,只要rolling checksum 或 md5 checksum 其中有一个在fileDst的checksum hash表中找不到匹配项,那么就会触发算法对fileSrc的rolling动作。于是,算法会住后step 1个字节,取fileSrc中字节2-513的文件块要做checksum,go to (4.1) - 现在你明白什么叫rolling checksum了吧。
4.4)这样,我们就可以找出fileSrc相邻两次匹配中的那些文本字符,这些就是我们要往同步目标端传的文件内容了。

图示

怎么,你没看懂? 好吧,我送佛送上西,画个示意图给你看看(对图中的东西我就不再解释了)。
这样,最终,在同步源这端,我们的rsync算法可能会得到下面这个样子的一个数据数组,图中,红色块表示在目标端已匹配上,不用传输(注:我专门在其中显示了两块chunk #5,相信你会懂的),而白色的地方就是需要传输的内容(注意:这些白色的块是不定长的),这样,同步源这端把这个数组(白色的就是实际内容,红色的就放一个标号)压缩传到目的端,在目的端的rsync会根据这个表重新生成文件,这样,同步完成。
最后想说一下,对于某些压缩文件使用rsync传输可能会传得更多,因为被压缩后的文件可能会非常的不同。对此,对于gzip和bzip2这样的命令,记得开启 “rsyncalbe” 模式。
(全文完,转载时请注明作者和出处

Google Docs makes it easy to create, store and share online documents, spreadsheets and presentations.
Logo for Google Docs

2010年11月9日星期二

2010 10 31 今天我结婚了

2010 10 31 今天我结婚了,前前后后忙碌了挺久,在大家都帮助下,顺利完成婚礼。
PS:20100909登记的,日子不错:)

2010年7月28日星期三

一个echo的填空题,大家做做,看你是否是老鸟,引出重定向问题

一个echo的填空题,大家做做,看你是否是老鸟,引出重定向问题。

来自:
http://linux.chinaunix.net/bbs/viewthread.php?tid=1159718&extra=&page=1

请各位先动脑想答案,别一下子就上机做答案,那样就没意思了。题目很简单,就是echo和cat。请大家读操作填空吧:

[lk@localhost ~]$ touch file1 file2
[lk@localhost ~]$ echo 1 > file1
[lk@localhost ~]$ echo 2 > file2
[lk@localhost ~]$ echo file1 file2
____第一题_____
[lk@localhost ~]$ echo 3 > file1 file2
[lk@localhost ~]$ cat file1
____第二题_____
[lk@localhost ~]$ cat file2
____第三题_____




答案刮奖区,选中刮开。:)
第一题:file1 file2
第二题:3 file2  //echo 3 > file1 file2 等效于 echo 3 file2 > file1 吧,所以应该没输出。
第三题:2


这里我碰到个问题,开始脑子浆糊没想到。
echo 2 > file2 和 echo 2> file2 是不一样的.

其实说破很简单。
echo 2 > file2 是把2定向到file2.
echo 2> file2 是把错误重订定向到file2,所以file2是空的。

2010年7月23日星期五

惊:色情女明星原来是超级程序员 / 煎蛋

惊:色情女明星原来是超级程序员 / 煎蛋: "

惊:色情女明星原来是超级程序员 / Jandan.net

(对于美国的同学来说,)不知道 Jelena Jensen 可能会错过很多青春期的美好回忆。除了脸蛋漂亮身材火辣,这位有着原生态34F大凶器的姐姐可不是一般人。粉丝们从她的 Twitter (@jelenajensen) 中发现,Jelena 居然是一位程序员,精通 PHP、Html、CSS、JS、MySQL 的全能型程序员。。。她的个人网站从小电影拍摄到网站制作都是她独立完成的,另外她还帮她的一些朋友们制作网站(人才呀)。


# Gizmodo 报道后这个姐姐已经在推特上火了,希望煎蛋能给她带去一拨中文粉丝

© Jandan.net
不得不佩服技术牛人~~~

irssi配合bitlbee,终端上msn,gtalk

irssi配合bitlbee,终端上msn,gtalk

今天想从rpmforge源安装有冲突,急用就先用源代码来安装。

从源代码安装:
./configure --prefix=/ --bindir=/bin --ssl=openssl
make install-etc


配置bitlee可以和xinetd配合,在/etc/xinetd.d下加个bitlbee的配置文件,为启用状态。
service bitlbee
{
       type = UNLISTED
       socket_type = stream
       protocol = tcp
       wait = no
       user = frank
       group = bitlbee
       server = /bin/bitlbee
       port = 6667
       disable = no
}

chkconfig xinetd  on
service xinetd restart

irssi中
server localhost
连接

进入后使用 Alt+2到bitlbee频道

加账号
<msn>
account add msn username@hotmail.com userpassword
<gtalk>
account add jabber username@gmail.com userpassword talk.google.com:5223:ssl

account list 查看
account on 0 登陆第一个帐号

IRC的模式聊天。

回国科学上网姿势 软路由 通过apple私有Mac地址动态切换

回国科学上网姿势 软路由 通过apple私有Mac地址动态切换 断断续续的尝试了很多科学上网方式,自己搭VPS,家里路由器也升级了好几次,都是为了能装可以跑科学上网的固件,但是最大的问题是性能都一般,速度也不是很稳定。 最近软路由被提到较多,最吸引人的是可以达的速度非常高,可以看...