in 闲谈 2017-02-25
洋葱路由器(TOR)做什么用的?
洋葱路由器可以实现匿名对外连接、匿名隐藏服务。也就是说,你可以完全匿名地利用洋葱路由器(以下简称TOR)进行上网。甚至去访问一些正常网络无法访问的网站。它已经成为目前为止最安全可靠的上网工具。
TOR的实现原理是什么?
Tor用户在本机运行一个洋葱代理服务器,这个服务器周期性地与其他Tor用户交流,从而实现数据交流的目的。Tor之所以会被称作洋葱路由器,就是因为它由一层层“外皮“组成,“外皮”之间的数据传输都进行了对点秘钥加密。所以你只能看得到它的外表,如果你想要看到它的核心(客户端)就必须把它层层剥开。然而需要注意的是,在它的出口节点,数据以明文的方式传送给客户端,这就使得数据有可能被拦截。当然,尽管如此,它依然是目前最安全可靠的上网方式。其实通俗点来讲,Tor就是通过全球各地数百台服务器来中继你的流量,从而避免了用户的真实IP泄露。而且,它可以让你访问到你在正常网络中无法访问到的隐藏内容(暗网)。
我能使用吗?
很遗憾,中国现在已经屏蔽了洋葱网络。如果你想要连入,需要一些特别的方法。不过没关系,你如果上网去搜索一下,我们还有许多可以替代Tor的软件,比如说Epic浏览器和Yandex浏览器。不过需要注意的是,他们并不能完全替代Tor。
欢迎关注微信公众号:幻象客www.huanxiangke.com
这是pythonchallenge上的第二关,比较简单。
题目给了下面这个HINT:
以及一串看起来很乱的字母:
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyr
q ufyr amknsrcpq ypcdmp. bmgle gr gl zw fyl
b gq glcddgagclr ylb rfyr'q ufw rfgq rcvr g
q qm jmle. sqgle qrpgle.kyicrpylq() gq pcam
kkclbcb. lmu ynnjw ml rfc spj.
根据图片里的规律,我们得知其是字母向右移动两位。那么原文也就是ASCII码减二的加密方式。这就是凯撒密码。
你如果有耐心的话,可以一个一个的往右移两个字母,从而得出答案。但我们应该更追求更高效的方法。
Python中有这样的两个函数:
ord():返回一个字符的ASCII码
chr():获取一个ASCII码,将它转换为字符
我们或许可以利用这两个函数解密。
核心代码:
for each in text:
if ord(each) >= ord('a') and ord(each) <= ord('z'):
answer = answer + chr(ord(each) + 2)
代码意思是这样的:检测字符串内的每一个字符,若它是小
阅读更多...in 闲谈 2017-02-15
在微博上突然看到有人向管鑫Sam询问这个问题,下面是他的回答。
老师您好,以前看到这样一则新闻 《9 月 27 日,谷歌发布了谷歌神经机器翻译系统(GNMT:Google Neural Machine Translation)在官方博客中Google称该系统使用了当前最先进的训练技术,能够实现到当下机器翻译质量上最大的提升。》 突然觉得学英语都没有任何动力了,届时人工智能厉害到代替人类(完全有可能 阿尔法狗都无敌了) 那我们英语专业的不都得纷纷失业。学英语的意义何在?
管鑫Sam 回答:
阅读更多...首先要更清晰准确地界定这个话题,只有很好地界定了这个话题,才有办法来回答。如果你的问题是,机器或者人工智能,在现在或者短期的未来是否可以取代最基础的文本翻译工作,我认为是很可能的。尽管截止到目前为止,机器翻译仍然很难达到我们一般要求的水准,大部分情况下,机翻还只能作为一种辅助工具,后期还需要大量的人工校对修正,甚至重写。机翻的笑话之多,多到不需举例子。各公司所显示的demo,也要看你愿不愿意成全它的演出,如果你想耍个小聪明摆机器一道,也并不难。谷歌现在的技术,GMNT,目前是骄傲地宣称将错误率降低了55%-85%。这仍是一个可以让甲方掀桌子、拒绝付款的水准。
当然,我们在现在的时间讨论一个问题,就会出现思维的锚定效应。所谓锚定效应,就像在汪洋大海上我们的船抛下一个锚,我们所看见的所有事物都是
不要被这标题吓到了,其实核心内容非常简单。
如果我们想要确认验证码是什么,就要有一个识别图片字符的过程。我们这里使用向量空间搜索引擎进行识别。
参考文档中举了一个例子。三篇文章中cat,dog,mouse出现的频率分别是(3,1,4),(1,2,5),(2,3,0).那怎么计算哪两篇比较相似呢?
参考文档给了一个解决方案是将文章cat、dog、mouse出现的频率看做“向量”,然后计算两个向量之间的余弦值(cos),越接近1则越相似。
cos<文章1,文章2> = 0.895
cos<文章2,文章3> = 0.405
cos<文章1,文章3> = 0.490
因此可以看出文章1和文章2更相似。
把它转化成python代码:
class VectorCMP:
def ValueOfVector(self,Vector):
total = 0.0
for count in Vector.items():
total = total + count ** 2
return math.sqrt(total)
def relation(self,Vector1,Vector2):
DotP...
阅读更多...
argc即argument count. 顾名思义,是用户在命令行内输入的参数个数。argv即argument vector. 是用户输入的参数vector库(数组)
int main(int argc ,char *argv[])
char argv[] 即指针数组([]优先级别高于,于是就里面的每个元素都是char类型,要理解好 char (argv)[] 和 char *argv[]的区别),每一个元素内,存的都是参数,这些参数都是字符串。其实就是vector库。如果你这里暂时不理解,没关系,往下看。
它其实就是记录了程序被执行时所传入的参数。包括打开程序的那条语句。如我保存了一个程序为test.exe, 在命令行执行这个程序并顺便带几个参数:
test.exe x y z
这样的话argc就是四个参数,分别为text.exe、x、y、z. 输出的话将是这样的:代码:
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
cout << "参数个数是: " << argc << endl << "分别是:" << endl;
for (int i = 0; i < argc; ++i)
cout << argv[i] << endl;
...
阅读更多...
in C/C++ , 程序语言 , 闲谈 2017-01-09
参考文档:http://mathworld.wolfram.com/HeartCurve.htmlhttps://www.zhihu.com/question/20187195
使用的公式:
效果图:
公式仅仅是画出弧度,如果我们想要填充里面的东西,仅需要判断公式是否小于0,若小于零则打印星号:
cout<< (a \* a \* a - x \* x \* y \* y \* y <= 0.0f ? '*' : ' ');
(a即x^2+y^2-1,见下图完整代码)
完整代码:
其中,第一个循环输出的是行,按照这个算法,应该是40行,第二个循环输出的是列,应该有80列。
如果我们把行数改小,图形就会变矮。如:
for (float y = 2.0f; y > -2.0f; y = y - 0.2f)
若我们把列等比例缩小。
for (float x = -2.0f; x < 2.0f; x = x + 0.1f)
其效果就是整个图形缩小。如图:
这样似乎理解依旧不够透彻,让我们更深刻地理解这个代码。修改代码为:
我们看运行结果是:
可见x=0,y=0就是图像的中心。其实这个程序是按照坐标轴进行绘制的。那我们就能做一些更有趣的改动了。
cout << (a \* a \* a - x \* x \* y \* y \* y <= 0.0f && a \* a \*...
阅读更多...