日志

【翻译】如何设置你的个人云VPN(使用PPTP协议)

原文名称:How To Setup Your Own VPN With PPTP

原文作者:Bulat Khamitov,原文地址:点击这里(可能需翻墙)

翻译:凡爷

(译者按:今天在开发过程中遇到一个问题,需要访问一台不在外网的服务器,然而用花生壳的方法需要配置那边的路由太麻烦,于是想到能不能用一台云服务器做一个VPN然后内网VPN和我的电脑同时登陆这个VPN进行沟通,于是在DO官方网站找到了一篇文章,其实是高铭同学给我的,然后照做了VPN服务器端的操作并且成功.于是打算翻译一下这个文章。另:我只挑重点翻译,其他的看心情)

步骤1:安装pptp

我们需要一台服务器用于各个用户的认证和处理各个IP沟通,这台服务器我们就称之为PPTP服务器。

在这台服务器上首先安装pptp:(OS:ubuntu,CentOS请参考原文)(*译注:以下命令都需要管理员权限)

之后编辑/etc/pptpd.conf文件,在最后加入以下几行:

localip是指这台服务器在VPN中的内网地址,remoteip是指登陆此VPN后分配给他们的内网IP地址。

下一步,我们应当在/etc/ppp/chap-secrets文件中设置VPN验证的账号密码:

效果图

其中,client是指用户名,server是VPN的类型这里用pptpd为例子,sercret是密码,后面的IP addresses是限制这个账号登陆的ip,如果没有特殊要求,用*号表示接受所有IP地址。

 

步骤2:向/etc/ppp/pptpd-options添加DNS服务器

在/etc/ppp/pptpd-options文件中找到类似的语句然后取消他们的注释,并修改为如下:

现在就可以重启pptp服务了:

如果不放心还可以验证以下pptp是否启动了:

效果图

 

步骤3:设置IP转发

设置IP转发是至关重要的一步,这样服务器就能够将公网IP和内网IP之间的数据包转换发送。编辑/etc/sysctl.conf ,如果文件中没有以下几句那么就添加以下句子(其实能找到该句,然后把它之前的注释“#”去掉):

然后启动该服务:

 

步骤4:设置NAT规则

如果你还想让各个登陆的客户机互相沟通,那么加入以下规则:

这样你的服务器也同时具备了一个路由器的功能。

(以下内容为如何设置Linux操作系统的客户机登陆这台服务器的方法了,这里就不翻译了,有兴趣可以参考原文。对于Windows、MacOS、以及大部分桌面版Linux,都可以通过系统自带的方式使用PPTP协议登陆,登陆的账号密码前文也给出了。)

日志

没事干就拆数组玩吧!

在开发PHP的时候遇到一个问题:

一个数组A,各元素(b1,b2,b3,…bn)是一个字典(b1{key1:”c1″,key2:”c2″,…keyn:”cn”}),现在需要根据每个元素的一个字段值不同将A拆分成若干个小数组Ax。(前提是这些元素已经按照这个键有序排列)

对于像我这样的脑残复健程序员,我查(百)阅(度)相关资料后发现很多所谓的技术博客说的都很模糊,甚至有错,所以只好自己做实验寻摸着搞,首先,我们知道PHP对于这个问题有两个拆分数组的方法需要用到:

这两个方法名称只有一字之差,很多技术博客显然没有区分,而他们俩的功能相差完全不一样。

array_slice是从数组array中的索引offset开始(如果offset为负值那么就从数组尾部倒着数),选取length个元素,如果没有length值那么一直按顺序选到数组的结束(length值也可以为负)。PHP5以后增加了preserve_keys的变量,如果这个变量是true,那么原来的键值也会保留(默认为True),False的话原来的键值会被抹掉成为0,1,2,…

必须注意的是!这个函数不具备截取的功能,即取出这些元素后原来的数组并没有发生改变。

因此要用到第二个方法:array_splice,及按照之前所说的索引方法将所圈出来的元素用另一个数组$replacement代替,当$replacement数组为空时,就是将数组所圈出来的元素删除。需要注意的是,这个方法不返回被删除的元素。

那么来做一个实验:

运行的结果是:

结果显而易见,之后着手解决问题,首先比较第一个元素中和下一个元素的那个key的值,直到找到不同为止,记录下位置,跳出循环之后用上面两个方法截取数组,之后不断重复直到原来的数组被截取到长度为0,完成。

代码如下:

虽然效率不高,但是最终也还算是完成了任务。

日志

phpMyAdmin:缺少 mcrypt 扩展。请检查 PHP 配置。

在实际配置过程中往往会遇到一些奇怪的问题,比如这个,貌似不会影响使用,很多人并不在意,但是看着总是很奇怪。

屏幕快照 2016-01-11 上午10.56.30

这个mcrypt扩展通过php官网手册查询告诉我们是php自带的加密模块,是一个扩展,能够用各种奇怪的算法进行加密解密,是php对于传输安全的一个考量。

因此有必要的话还是启用一下比较好,直接在bash中:

就可以启动该模块,然后我们来看看效果,这里有一段不知道从哪里来的测试代码(咦?):

结果如下:

这里说一下,百度中又很多说了可以下载mcrypt包自己编译什么的,据说也能解决,但是显然是不合理的。

日志

SSH攻击的一些问题

今天几个人玩起了互相加友链的逗比游戏,于是无意中在高铭同学的博客上看到他的最新文章《SSH攻击的检测与预防》,于是我也看了一眼这台老爷机,结果也吓了一跳:

首先,按照高铭同学的办法查找是不是有人在猜密码:

其中这是简单的文字匹配,所以把root换成其他的账户名称也是可以检查其他账户的,通过比较显然这是用机器扫描各个机子然后猜root密码(废话),加上DO服务器默认直接给root账户(也有的给ubuntu这样的默认账户)危险可能会变大。我的服务器很早就禁止root访问了,但是不妨碍别人来猜,所以试了试下面的:

结果很长,总而言之就是把上面统计的结果一条条拆出来看,并且告诉时间IP,然后发现到昨天为止(其实是由于美国时间也就是现在)每10分钟到半个小时就会有root的登陆尝试,这太恶心了。虽然很显然root已经不能登录了,这样也仍然感觉很恶心,所以决定也换一个端口号,然后查了查常用端口号地址,跳过0-1024这1025个端口,找一个没有用过的端口,通过

修改端口,这里面还有一些其他的设置,比如

等等,略复杂我也不是很明白,有空进一步研究。

修改完成之后重启ssh服务

重启之后当前的ssh会话仍然可用,但是等下一次登录时,必须要使用指定端口号的方式登陆:

否则就会遇到:

 

脑洞收录

蛤(ji)坷(ben)垃(fa)

基本法!基本法!我们的!我们的!基本法!我们的!
你们想干什么?
基本法!基本法!我们的!我们的!
我要基本法,姿势水平太低啦,必须要有基本法!
我要基本法,裤带提到胸口下,必须要有基本法!
基本法!你们啊!基本法是我的!
不钦定他!不钦定他!基本法好处都有啥? 谁说对了就给他。
香港有了基本法,不硬点!不内定!无风雨!
港记有了基本法,能跑过美国的华莱士啦!
国际新闻都搞大,自从有了基本法!姿势水平提高啦!
有了基本法,怒斥港记张宝华,问的问题再也不森破拿衣服啦! 蛤蛤
蛤蛤……
张宝华,真不傻!基本法告诉她,对美国媒体危害大,绝不能教她。
时间众筹不发达,我们都要资瓷他。基本法,你们港记别想了!
Naive!Naive!没有基本法,新闻怎搞大?基本法!基本法!

自从有了基本法!姿势水平提高啦!
自从有了基本法,怒斥港记张宝华!

膜教 时间众筹 Mogic Time-raising

 

创意来源:范进不举

 

如何与恐龙和谐相处?

恐龙

图像

一起来学习蛤三篇

全文摘自胡盛的新浪博客,和@黄薄码的微博,本人只是随机打下的如下字符如要跨省请抓作者。

著名的《蛤三篇》提出了长者对于人生的三大思考,分别是“西方哪个国家长者没有去过?”、“华莱士究竟有多高?”、“香港记者跑得到底有多快?”

第一个问题,众所周知的14年前那个著名演讲里,有一传诵至今的金句「我告诉你们,我是身经百战,见得多了,西方哪一个国家我没去过」。长者说的不错,他出访过70多个国家,执政13年里行程约60万公里,在空中和外国土地上的时间总共364天,今天我们试图来厘清到底哪个「西方国家」长者没有去过。
我们依据的是由外交部各大地区司和国际司编撰的《长者出访纪实》一书,因长者发表讲话在2000年,所以我们收集数据为敏感词年到00年长者出访的国家,执政前长者去过苏爹和法国,后来也都去过,重复不计算。这样按照先后顺序,排除亚非拉及俄爹之外,长者先后去过日本、美国、乌克兰、法国、芬兰、匈牙利、德国、西班牙、挪威、罗马尼亚、加拿大、意大利、瑞士、奥地利、澳大利亚、新西兰、英国、葡萄牙、摩洛哥、土耳其、希腊。
而麻烦的是如何定义「西方国家」,西方这个词在文化、地理及政治上外延均不同,按照惯用的「以美国为首的西方国家」语境,这里还是采取政治上的定义,而样本用北约国家阵营加日本、澳大利亚、新西兰。而为了切合长者演讲时间,北约阵营国家沿用99年扩张之前版本。这样「西方国家」就为:美国、加拿大、比利时、法国、卢森堡、荷兰、英国、丹麦、挪威、冰岛、葡萄牙、意大利、希腊、土耳其、德国、西班牙。
交叉对比上面两副名单可以看出,长者还有比利时、荷兰、卢森堡、丹麦和冰岛五个「西方国家」没有去过,而02年长者情暖冰岛,但由于时间不对无法算在范围内。由此可见,当年长者怒斥记者时是有底气的,即使算上日澳新,长者也确实把西方主要大国都去了一遍,有的国家还去了又去,但美中不足,目前仍有四个国家没有去。

第二个问题,美国的华莱士到底有多高?
跟那篇「到底哪个西方国家没去过」一样,本文继续来讨论下那段讲话中的另一句金句「美国的那个华莱士,比你们不知道高到哪里去了」。
华莱士到底有多高呢,我们试图以长者的身高来推出他的身高来。先来看一张长者和华莱士的合影。

7206091fgw1es5d0wez6kj20ep0b1q3n

由于是采访前的对话,双方着装很正式,所以不存在一方人字拖一方皮鞋造成的身高误差。从图里看出华莱士明显比长者高出半个头,但从腰带看长者的腿却比华莱士的长不少,可见按这腿的比例来算长者应该是十头身的魔鬼身材。

首先来确定下长者身高,在身高问题领域,领导人的大多是秘密,而由于职业原因运动员的身高数据是相对最透明的,于是我们来看下长者和姚明的合影,图中还有老布什。而且三人合影推身高必将比两人推更准确。

3cd090eddbb932cfc07f7619f0fe8518

稍有常识的人都知道姚明的身高是226CM,现在来确定老布什,根据姚明跟同样是体育明星的刘翔合影看出老布什与刘翔同样顶到姚明的肩膀,所以老布什也约莫是188CM。

7c1e7afe9fb89707d435ce9f4d093abd

再看那张三人合影,长者头顶与老布什鼻头相平,而鼻头到头顶一般13-14CM,所以长者在76岁时的身高是174CM左右,所以华莱士的身高比长者高半个头为185CM左右。

于是第一个问题华莱士的身高问题解决了,现在来继续研究下长者说的「比你们高到哪里去了」中「哪里去了」究竟是多大的一个度量衡。

我们先找到长者「你们」中的这位女记者,她叫张洺华,14年前是香港无线的记者,现在微博认证为「香港传媒人,寰亚传媒集团高级副总裁」,她这十四年来的心路历程以后单独开篇详述。确定她的身高也简单,其相册里有一张她与张家辉的合影(中间)。

cfffb97fd6fb55ac5988f042b068bfb0

从微博内容及图片里来看她是在跟张家辉一起参加阿迪的活动,一身运动装扮也避免了高跟鞋等装扮带来的计算误差。张家辉在百度百科里的身高是172,按照标准中国男人的身高虚报法,其真实身高应该是170CM,女记者的头顶约莫位于张的眼部,眼部到头顶距离一般10CM+,这样女记者的身高应该就是160CM上下。

所以答案很快就出来了,「美国的华莱士有多高?」「185CM」、「比你们高到哪里去了?」「25CM」

 

那么第三个问题,“香港记者跑得到底有多快?”

许多年后,张宝华依旧会想起14年前她向长者提问的那个下午,那时已经是长者第四次打断她了「窝很捉急啊,增的,不过你们有一个好,全世界跑到什么地方比其他西方记者还快」。当时长者钦点的「跑的比西方记者快」的香港女记者张宝华是香港中文大学95级新闻与传播专业毕业的,今年9月号《中大校友》封面专题是「跑出中大精神」,其中介绍她用的是《跑是小挑战》,她在文中说她从小体育就不行,在中大就读时就差点因为体育差不能毕业。应该直到那次采访长者对她进行激励后,她才开始爱上了跑步,她说“我现在每周可以跑上三小时,每次最少都能跑一小时”。
女记者没有撒谎,笔者翻阅了其2014年1月至今一年的微博发现,和所有的健身(哗~)一样,女记者每次跑步都会晒出自己的成绩。不完全统计在今年,她共计跑步30次,里程共计175.56km,差不多正好是上海到杭州的距离。共花费时间28.75h,速度约为6km/h。
虽然女记者跑的不快,但敏锐的西方公司发现了其价值,阿迪达斯公司在今年「i am a runner」这个主题宣传中,机智地将她列入其中。“穿上阿迪跑的比西方记者都快”的隐喻昭然若揭。

 

状态

羊城的五一旅游

每年的五一总是要出去玩玩,不然真的就浪费了大学狗的生活了,何况今年没那么多课。

媳妇也是想的周到,3月初就跟我说这个事,加上但是刚刚领了点零花钱,看了看阿里旅行的对折特价机票,怒决定去广州看看,刷新一下自己所能到达的最低纬度。

机票买起来还是很轻松,全 不用一句废话,过去的是中联航的小飞机,从南苑机场起飞。回来是国航的大飞机,到首都机场。媳妇的飞机简单,据她说学校有直接到梅县机场的大巴,于是约定好了30号白云机场见。

 

等到了29号才清醒的意识到,尼玛飞过去的中联航是廉价航班,晚上5点到8点没有餐食没有水。带了两块披萨也不给加热,机场是镶嵌在军事基地之间,非常之小,小到进门安检右转上楼候机,候机厅有叫卖各种玩具和所谓特产的小店,作为中联航的独占机场,貌似不提供登机通道,完全依靠步行登机。

image image image image image

图片上是南苑的情况,以及小店和要坐的飞机,真的是有种火车站的感觉。

之后飞机上的时间很单调,伴随着全程的小推车叫卖瓜子啤酒饮料,我看完了《没有凶手的杀人夜》的大部分,我对东野圭吾的脑洞也是佩服到不行不行的,简直就和他本人干过一样。

 

到了地方,和媳妇打个电话,然后决定了先去宾馆开房然后再杀回机场等人。回去一切顺利,莫泰168就在地铁站边上。回来的时候却意外的发现媳妇的飞机延误到没有起飞,幸好梅州和合肥离得近。得以等了1个小时等到了媳妇。夜晚的白云机场显得更加繁忙,根本打不到车,最后临近午夜才上了一辆不打表的出租才走了两站地回到宾馆。下图是白云机场停靠的上海航空的飞机和到达点,不得不说白云机场的图例和装修与之前去哥本哈根机场很像,赞一个。

IMG_0494IMG_0495IMG_0496

第二天睡醒已然10点,出门随便吃点却发现地铁已经封站了,而公交车更是挤不上,不得已找了家日式快餐吃了等过中午,一场暴雨冲走了大部分人流。坐上地铁在媳妇朋友的指点下来到了大学城,不为别的,单为了一个吃字。

IMG_0498 IMG_0501 IMG_0500

在中山大学东校区的边上遇到商务区,可能类比咱们学校后门的小吃街吧,但是人家的大学,对是人家的大学,牛排花甲生蚝鱿鱼冰淇淋烤鱼烧烤海鲜粥。。。。唉,可惜没那么大肚子,吃饱了逛街散步,媳妇给我展示了令人发指的抓娃娃技巧,2比到位抓到一只,却意外丢在了饮料店,万分可惜。回来的路上媳妇给我买了一个呱太零钱包已做安慰。内心表示很温暖。

IMG_0502

第三天早上出发,前往上下九步行街,吃,喝。。。。不得不说甘蔗红茶这种神奇的东西为何之前在帝都没有喝过。之后看了广州塔的小蛮腰,媳妇用1个币抓下来了两个娃娃,一人一个,赞。

IMG_0505 IMG_0506 IMG_0508 IMG_0515 IMG_0516 IMG_0518 IMG_0519 IMG_0522 IMG_0525

回来的路上遇上了多年未遇的楼哥,可惜却是在医院,见到楼哥吓了我一跳,已从一个纯爷们变成了萌妹子,不小心脱口而出“楼哥你咋长成这个样子了!”,尴尬的聊完以后暂时各回各家。晚上哈叔从北京匆匆赶来,来了就吃一顿猪肚鸡,不得不佩服广州的煲汤是进人佩服的。

3号早晨早早收拾好吃完早饭来到机场,媳妇送我到地方后自己也去上机,结果又是本来应该同时起飞的飞机结果成了同时落地。国航的飞机确实是赞,是目前吃过的最好的飞机餐了。。。好吧我就是个屌丝。

IMG_0526

回到帝都,一阵凉风把穿着短袖的我直接吹成🐶,最后只能大巴一路飞奔回学校。

总而言之,玩的开心。

 

ps.为啥广州叫羊城呢?据媳妇透露是因为广州白话经常有发音为“咩”的语气词,尤其见于吵架,可脑补两个广州人吵架时互相对咩的场景。

 

 

 

 

视频

看《零:濡鸦之巫女》的观后感

在B站观看了Q君的《【Q君实况】零 濡鸦之巫女 超正经PLAY》

零系列一直作为一个小范围小受众的游戏,不得不承认其恐怖元素、文字地狱、以及战斗系统不太符合快餐玩家的需求(知乎用户D Kurtis语)。因此,光荣脱裤魔貌似也没有把这款游戏放入重点的游戏对象。

但是不影响剧情。

本人实在优酷上看了大叔的《零:刺青之声》的故事后开始喜欢上这个游戏,由于自己一直是游戏苦手,所以也没有玩,一直看的实况(莫非这就是叶公好龙?)。但是从一开始的恐怖到之后被剧情的感动,不得不说日本游戏对东方人性格的抓捕是很深刻的。

 

《零》系列的核心在于,主角们承受了人不可承受之痛,这种痛来自于家人、恋人的羁绊(或者既是家人又是恋人【匿)。

 

从zero的雏咲深红与哥哥的经历,到红蝶天苍姐妹因为在皆神村的遭遇以及最后亲手杀死姐姐/为了救姐姐而双目失明(看玩家如何取舍,个人偏向好一点的结局,但是游戏貌似认可了杀死姐姐完成仪式)的姐妹之间的羁绊,再到刺青之声黑泽怜由于思念恋人优雨的刺青在梦中苦苦找寻最后优雨终究化为尘埃(隐藏结局中天苍茧救回了思念姐姐的天仓澪,雏咲深红救回了黑泽怜,姑且认为是标准结局),让人对思念、执念也化为感喟。之后再Wii上发布的《零:月蚀的假面》父女之间、朋友之间在胧月岛上的故事也说出了人类对于思念之人的复杂情感的具象化。

到了现在的《濡鸦之巫女》,剧情事实上还是类似的故事,然而却始终能博得玩家的感情。

感情的问题终究是复杂的,难以用语言形容,剧情也只能靠这些画面和声优们的语言来传达了。但不得不说的是,这种未知的日式恐惧和感情羁绊的日式剧情比寂静岭这种美式剧情要好得多。

附一些链接:

Kirin大叔解说的《零:红蝶》

Kirin大叔的《零:刺青之声》

围炉里的《零:月蚀的假面》

以及之前提到的Q君对于濡鸦之巫女的实况,都是良心座。

先想到这么多,之后想起来就更新一下。

 

日志

php统计字符串里面字的个数

摘自wordpress的官方源代码,这种方法可以直接直观地统计出一个字符串中有多少个字(如“你好,世界”的结果为5,而“Hello,世界!”为9,即不分何种语言):

function utf8_strlen($string = null) {
preg_match_all(“/./us”, $string, $match);
return count($match[0]);
}