V2EX for Windows 10

基于 .Net core开发的V2EX社区 UWP第三方客户端。

主要练习FDS设计语言。

//2019.08.08

  1. 正常的文章阅读体验。
  2. 节点搜索。
  3. 利用搜索引擎完成全站内容搜索。
  4. 本地markdown编辑器,md的本地预览、在线预览。
  5. 签到。
  6. 发布、回复及引用并回复。
  7. 保持登录。
  8. 动态磁贴,持续刷新最热话题。
  9. 登录用户的消息提醒,即Toast通知。

//2019.08.17

  1. 优化屏蔽、隐藏等操作时CSRFtoken模拟机制。
  2. 优化post请求报文构造。
  3. 优化后台任务对电源模式的判断。
  4. 修复了一个后台磁贴更新时磁贴消失的问题。
  5. 修复了一个载入动画偶尔会使UI线程锁死的问题。

//2019.08.19

  1. 修复一个无法正确获取指针位置的问题。
  2. 优化文章内超链接跳转逻辑。

//2019.08.22

  1. 将构造的WebView封装成WebViewEX,添加多个附加属性及NotifyScript以解决自带WebView在页面自适应上的不足。
  2. 添加超链接悬浮窗,对站内站外链接跳转进行判定,解决坐标定位问题。

//2019.08.23

  1. 修复了一个首次运行时本地文件初始化的问题。
  2. 修复了一个在不同屏幕缩放比例情况下获取坐标异常的问题。
  3. 优化文章导航层级。
  4. 开始下发至不同Windows(18362.195)环境下进行(黑盒)测试。

//2019.08.28

  1. 修复一个由屏幕缩放比率不同导致的偏移计算异常的问题。
  2. 这几天在玩魔兽怀旧服,什么都不想干 ( ̄︶ ̄)↗

已完成部分界面预览

【UWP】跨页面访问控件

为需要跨页面访问的控件于XAML添加下列代码:

x:FieldModifier=" Public"
<Frame x:FieldModifier=" Public" x:name="primaryFrame"/>
public sealed partial class MainPage : 
Page 
{ 
  public static MainPage firstPage; 
  public MainPage() 
    { 
      this.InitializeComponent(); 
      firstPage= this; 
    }
}    

其他页面引用代码:

MainPage.firstPage.primaryFrame

《乌合之众》

乌合之众:大众心理研究
古斯塔夫·勒庞 (Gustave Le Bon)
 
 
 第一卷 群体心理 > 位置 156
所有有意识的行为,都只不过是遗传基因控制下的无意识深渊中的隐秘心理活动的产物,或许,永远也不会有人能够在他的有生之年一窥潜意识的暗黑世界的真相——积淤在这个深层次结构之中的,是生物无数个世代传承相递的不计其数的共同特征,正是这些永远也不为我们所知的共同特征构成了一个种族的先天秉性。
 第一卷 群体心理 > 位置 194
数量在人类社会中会经常性地产生一种充足的理由。处于群体中的个人会感受到一种强烈的“正义”力量,对他们来说群体就是正义,数量就是道理;即便不然,群体中的人也会有一种“法不责众”的想法,因而他们在行动时就表现得理直气壮。
第一卷 群体心理 > 位置 196
但是当群体中的每一个人都处于孤零零
第一卷 群体心理 > 位置 196
孤零零的单独个体的时候,后天的教育与内心
第一卷 群体心理 > 位置 197
的良知都对他起着约束作用,他知道自己必须要对自己的这种本能行为加以控制。但是群体的力量却让人们解脱了这些约束与羁绊——无论是后天教育养成的,还是先天的良知所意识到的——他没有什么理由再约束自己,更无法控制内心的放纵与不羁。
第一卷 群体心理 > 位置 389
孤立的个人具有主宰自己反应行为的能力,群体则缺乏这种能力。
第一卷 群体心理 > 位置 500
但如果把一个民族的命运全部维系在过分本能的情绪表达上的话,那无异于在悬崖漫步,说不定哪天就会跌入深渊。
第一卷 群体心理 > 位置 609
第一个阶段是自我意识模糊;第二个阶段是独立思考能力下降;第三个阶段是判断力与逻辑在暗示与传染的作用下趋同一致;第四个阶段是残存的智力品质被彻底吞噬。
第一卷 群体心理 > 位置 830
群体埋葬了所有的怀疑精神与独立意识,他们只臣服于激烈的言辞、虚假的形象!
第一卷 群体心理 > 位置 980
正如我们前面所说的,群体是用形象来思维的,并且容易夸张,容易陷入极端。正因为如此,想要某一种观念对群体产生有效的影响,它就必须披上形象化的外衣。
第一卷 群体心理 > 位置 1007
旧观念很难被消除,对待同一个明显的道理,有理性的人或许会接受,但是换成缺乏理性的人,则很快会被他无意识的自我带回原来的观点。
第一卷 群体心理 > 位置 1032
群体推理的特点,是把彼此不同、只是表面相似的事物搅在一起,并且立刻把具体的事物普遍化。因此不妨这样说,他们并不推理或只会错误地推理,并且绝不会受到推理过程的影响。
第一卷 群体心理 > 位置 1109
第一,采取的形式必须是令人吃惊的鲜明形象。第二,一定不要做任何多余的解释,只要再列出几个不同寻常或神奇的事实就足够了。
 第一卷 群体心理 > 位置 1122
从这件事上可以看出,影响民众想象力的并不是事实本身,而是它们发生和引起注意的方式。只有对它们进行浓缩加工,它们才会形成令人瞠目结舌的惊人形象。


第二卷 群体的意见与信念 > 位置 1312
既然制度和政府都是民族的产物,这就决定了它绝对不可能创造某个时代,只能被这个时代所创造。
 第二卷 群体的意见与信念 > 位置 1354
这种基础认为,智力是通过一心学好教科书来提高的,只要一个人的成绩足够好,那么他的智力就会获得稳步提高。
由于接受了这种观点,人们便尽可能强化许多手册中的知识。从小学到离开大学,一个年轻人只能死记硬背书本,他的独立思考能力和个人意识从来派不上用场。受教育对于他来说就是背书和服从。
如果这种应试教育仅仅是无用,人们还可以对孩子们示以同情,因为虽然没在小学里从事必要的学习,但好歹还被教会了一些科劳泰尔后裔的族谱、纽斯特里亚和奥斯特拉西亚之间的冲突或动物分类之类的知识。然而,制度造成的危险要远比这个严重得多,一个最直接的后果就是,它使服从它的人强烈地厌恶自己的生活状态,极想逃之夭夭。应试教育的结果是:工人不想再做工人,农民不想再当农民,而大多数中产阶级,除了吃国家职员这碗饭外,不想让他们的儿子从事任何别的职业。学习的唯一目的不是让人为生活做好准备,而是只打算让他们从事政府职业,在这样的行当里想要取得成功,根本无需任何必要的自我定向,或表现出哪怕一丁点个人的主动性。
说到底,应试教育制度在社会等级的最底层创造了一支无产阶级大军,这个群体对自己的命运愤愤不平,随时都想起来造反。而在最高层,它又培养出一群轻浮的权贵阶级。他们既多疑又轻信,对国家抱着迷信般的信任,把它视同天道,却又时时不忘对它表示敌意,总是把自己的过错推给政府,然而离开了当局的干涉,他们便一事无成。
第二卷 群体的意见与信念 > 位置 1652
不客气地说,大多数人,尤其是群众中的大多数人,除了自己的行业之外,对任何问题都没有清楚而合理的想法。
第二卷 群体的意见与信念 > 位置 1738
拿破仑曾经说过,极为重要的修辞法只有一个,那就是重复。而另外一句谚语也说,谎言重复千遍就成了真理。
第二卷 群体的意见与信念 > 位置 2064
对于政府来说,政客们别说是引导各种意见,就是追赶意见还怕来不及。政客们琢磨不透某种意见究竟会引发什么后果,这使得政府开始害怕来自民间的意见,有时甚至变成了极度的恐惧,这使得政府的政策不能稳固,飘忽不定。

NetBIOS协议概览

0x00.什么是NetBIOS协议

NetBIOS(Network Basic Input Output System):网络基本输入输出系统。

  1. 能够把程序和任何类型的硬件属性分开,方便开发人员使用程序接口。
  2. 让程序和局域网操作之间的接口标准化。
  3. 可以通过数据报广播的方式简历PC之间的链接以进行访问。

0x01.NetBIOS名称

一个NetBIOS包含16个字节,每个名称的前15个字节是用户指定的标识。

  1. 标识是网络上单个用户或计算机相关联的某个资源的唯一名称。
  2. 标识是网络上的一组用户或计算机相关联的某个资源的组名。

0x02.名称注册过程


0x03.NetBIOS数据报

数据报是无连接的,非可靠的,SendDatagram命令需要调用者设定目的名,如果目的名是组名,组中每个成员都会收到数据。ReceiveDatagram命令的调用者必须确定它接收数据的本地名,除了实际数据外,ReceiveDatagram也返回发送者的名称。如果NetBIOS收到命令,但却没有ReceiveDatagram命令在等待,数据将被丢弃。


0x04.NetBIOS范围

NetBIOS范围ID为建立在TCP/IP(叫做NBT)模块上的NetBIOS提供额外的命名服务。NetBIOS范围ID的主要目的是隔离单个网络上的NetBIOS通信和那些有相同NetBIOS范围ID的节点。

NetBIOS范围ID是附加在NetBIOS名称上的字符串,两个主机上的NetBIOS范围ID必须匹配,否则两主机无法通信。

NetBIOS范围ID允许计算机使用相同的计算机名、不同的范围ID。范围ID是NetBIOS名称的一部分,是名称唯一。

RSA加密算法

0x00.所需概念&公式

  • Phi函数(欧拉函数):欧拉函数是小于或等于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’s totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。e.g:φ(8)=4,因为1,3,5,7均和8互质,φ(7)=6,因为1,2,3,4,5,6,均和7互质。
  • 素数(质数):素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。
  • 模指数运算有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。e.g:10 mod 3=1;26 mod 6=2;28 mod 2 =0。
  • 素数的Phi函数:所有素数的Phi函数均可用:φ(n)=n-1 计算。e.g:φ(7)=7-1=6,φ(11)=11-1=10,当一个数可以用两个互质的数表示时,其Phi值可用:φ(A*B)=φ(A)*φ(B)计算。e.g:φ(21)=φ(3)*φ(7)=2*6=12,21的质数有1,2,4,5,8,10,11,13,16,17,19,20共12个。
  • ≡:是数论中表示同余的符号。公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。

0x01.演示

步骤 示例
step 1  选择一对素数p,q p=3,q=11
step 2 计算n=p*q n=3*11=33
step 3 计算φ(n) φ(n)=φ(p)*φ(q)
∴(3-1)*(11-1)=20
step 4 找一个与φ(n)互质的正整数e,且1<e<φ(n) 令e=3
step 5 计算d,使d*e≡1 mod φ(n)⇒d*e mod φ(n)=1 mod φ(n)=1 d*3 mod 20=1 mod 20=1
∴d=7
step 6 公钥(e,n),私钥(d,n) 带入可得:公钥(3,33),私钥(7,33)
step 7 明文为M,密文为C
加密公式:C≡M^e mod n
e.g:明文M=25,加密后密文C(即对明文数字25进行加密)
C≡M^e mod n
⇒C mod n=M^e mod n
⇒C mod 33=25^3 mod 33=16
⇒C=16
step 8 解密公式:M≡C^d mod n e.g:密文C=16,解密后明文M(即对密文数字16进行解密)
M≡C^d mod n
⇒M mod n=C^d mod n
⇒M mod 33=16^7 mod 33=25
⇒M=25

Diffie-Hellman密钥交换

0x00.前提

  1. 公开一个生成器(generator),如:3 mod 7
  2. 双方各选择一个私有随机数

0x01.示例

理论 示例
step 1  生成一个A,B双方认可的生成器G() 生成器G模型,n为私有随机数
G(n)=3^n mod 17
step 2 双方各选择一个随机数 a,b a=15,b=13
step 3 双方分别将各自的随机数放入生成器计算密钥c,d
G(a)=c
G(b)=d
G(a)=3^15 mod 17 = 6=c
G(b)=3^13 mod 17 = 12=d
step 4 互相交换各自生成的数值 交换后,A拥有15和12,B拥有13和6
step 5 将生成器中的底数和质数用私有数和对方生成数替换 将模型中的底数3替换为对方的密钥,质数为各自私有数
A:12^15 mod 17 =10
B:6^13 mod 17=10

联立step 3和step 5可得:

A:(313 mod 17)15 mod 17 = 313^15 mod 17

B:(315 mod 17)13 mod 17 = 315^13 mod 17

指数交换值不变。

静态路由算法

0x00.固定路由

特性:

  1. 用一个中心路由目录维护路由。
  2. 节点只需相邻节点的信息。
  3. 对于数据包或虚电路作同样路由。

优点:

  1. 简单。
  2. 对具有稳定负载的可靠网络效率很高。

用矩阵表现固定路由

每列来看,1→2 经过2,可得节点1与节点2相邻,用1-2表示;1→3经过4,可得节点1和节点3不相邻,需要经过节点4…..依此类推可得每两两相邻的节点。


0x01.最短路径算法

测量路径长度的方法:

  1. 最小跳计数
  2. 最短距离
  3. 信道带宽
  4. 传输延迟
  5. 平均通讯量

最短路径选择方法

1.子网图

  1. 节点代表路由器。
  2. 弧线代表两个路由器之间的一条链路。

2.Dijkstra算法

找出一个节点到所有其他节点的最短路径。

e.g:使用Dijkstra算法计算A→D的最短路径

初始化:已知相邻节点与相邻节点间的长度。

step1.选择当前工作节点A

step2.标值其他节点到源的距离

此时B(2,A),2表示该点到源点A的距离,A表示与B相连的上一个节点。B(2,A),G(6,A),B点离圆点近,所以将B选择为工作节点。

step3.选择当前工作节点B

step4.标值其他节点到源的距离

此时,E(4,B),以此类推…….

3.扩散法(flooding)

将入境报文输出到所有输出线路(除去入境线路)。

e.g:使用扩散法将数据包从1传输到6

该模型初始化时没有任何路由信息,这是一种广播的方式。

数据包从1发出,2、4接收,2、4接收后进行拷贝,将数据包依次向下发送。

 

 

 

 

特性:

  1. 尝试所有可能的路由。
  2. 至少有一个包通过最小跳路到达目的端。
  3. 所有与源节点链接的节点都被访问。

优点:

  1. 具有一定健壮性。
  2. 简历虚电路。
  3. 将重要信息进行广播。

缺点:

包的拷贝数量呈指数增长。

解决方案:

  1. 在每个节点记下已发出包的表示。
  2. 在每个包中设置一跳计数。

路由选择算法概述

0x00.路由选择算法的分类

路由选择算法大致可分为两种:非自适应算法(静态路由)和自适应算法(自适应算法),常用的为自适应算法。

非自适应算法:部根据实测或估计的网络的当前通信量和拓补结构来作路由选择。

自适应算法:根据拓补结构、通信量的变化来改变其路由的选择。

前提:路由节点间交换网络状态信息,信息越多,做出的路由决策越好,但信息过多辉加重网络负担导致性能下降。

缺点:

  1. 路由决策复杂,从而加重网络节点的处理负担。
  2. 依赖于信息状态,这些状态信息在一个地方收集,却用在其他地方,从而加重了网络的交通负担。
  3. 不能太快和太慢,自适应决策太快辉引起拥塞抖动,太慢又不符合自适应的初衷。

优点:

  1. 可提高网络性能
  2. 有助于拥塞控制

0x01.路由选择算法的特征

  1. 正确性(correctness):能为数据链路找到正确的路径。
  2. 简单性(simplicity):计算路由的系统开销要小,提升整体效率。
  3. 健壮性(robustness):及鲁棒性,出现问题是可保证整体数据,不丢失不中断。
  4. 稳定性(stability):运行一段时间的稳定运行。
  5. 最优性(optimality):对不同优先级的数据包提供不同的优先级策略。
  6. 公平性(fairness):中信,中性。
  7. 有效性(efficiency):使用路由表进行数据传递时的开销要小于不适用路由表的开销。

0x02.路由技术元素

1.性能标准(常用的)

  • 跳计数:从远端到目的端经历了多少路由的转发,每经历一个,跳计数+1.
  • 成本:通常和每一条链路有关,如链路长度等(待补充)。
  • 延迟:从源端到目的端的延迟,延迟越小越好。
  • 吞吐量:从源端到目的端的吞吐量,吞吐量越大越好。

2.网络信息源

  • 无:有的算法不需要网络信息就可以进行路由选择。
  • 局部:本地的路由节点可以知道它所链接的线路的概况。
  • 邻接节点:从与该节点相邻的节点获取网络信息,所需网络信息为算法所需网络信息。
  • 全部节点:如果该算法运行前提为全部网络信息,网络信息源变为全部信息。

3.信息更新时间(是信息源和路由决策的函数)

  • 连续:连续不断的更新。
  • 定期:每隔一段时间采集网络信息。
  • 负载变化:当网络负载发生变化后将网络信息通知所有节点。
  • 拓补变化:当网络拓补结构发生变化后将网络信息通知所有节点。

4.决策时间(什么时间生成路由表)

  • 包(数据包):为每个包单独作路由决策。
  • 会晤(虚电路):在2个用户建立虚电路时就要进行决策。

5.决策地点(什么地点生成路由表)

  • 每个节点(分布):在每个节点上进行,完全分布式。分布成本高,但鲁棒性更好。
  • 中心节点(集中):在某些中心节点进行,如网络(控制)中心集中进行决策。当中心节点崩溃整个路由崩溃。
  • 原始节点(源端):在数据包的源端进行路由选择,而非网络进行选择。

6.性能标准

  • 最小跳计数。
  • 最小成本,成本与数据率有关(数据率越高,成本越低),成本与当前排队延迟有关。最短路径:1-3-6 ,成本:10

         最小成本路径:1-4-5-6 ,成本:4

7.影响路由决策的主要因素

  • 故障:当一个节点故障或一段干线故障后,就不再用作路由的一部分。
  • 拥塞:当网络的一部分严重拥塞时,要求路由绕开拥塞部位而不是继续通过拥塞区域。

腾讯云Ubuntu+Apache下开启Https

0x00.申请SSL证书

免费SSL证书:全球推出的免费SSL证书都是DV SSL证书,仅适用于个人博客、个人站点以及应用测试等简单的https加密需求,为用户节省一笔费用支出。

收费SSL证书:付费的 DV SSL 证书、企业型 OV SSL 证书和增强型 EV SSL 证书三大类。不同的证书类型适用于不同的对象。DV与免费的SSL证书一样,适合个人站点,中小企业。但对于中大型企业网站、金融平台和政府机关等付费的 OV、EV 证书则更加适用。

腾讯云申请页面:https://console.cloud.tencent.com/ssl

按部就班填完,,大约10分钟就能申请下来,申请完成后获得一个压缩包。

在服务器中的/etc/Apache2新建一个文件夹cert,解压后提取Apache文件夹中文件并上传至cert。

如需拷贝文件夹下所有内容至另一个文件夹可使用:

cp -rf /A/B/* /C/D

0x02.启用SSL

启用SSL模块:

a2enmod ssl

如没有a2指令,可在apache2.conf中设置SSL加载:

LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

完成后重启apache:

service apache2 restart

启用SSL站点并重载apache服务:

a2ensite default-ssl

service apache2 reload

0x03.配置端口

配置文件/etc/apache2/ports.conf,加入HTPS传输使用的443端口

sudo vim /etc/apache2/ports.conf
Listen 443

0x04.配置主机

在配置文件/etc/apache2/sites-enabled/default-ssl找到如下内容并修改红色部分:

<VirtualHost 0.0.0.0:443>
    DocumentRoot "/var/www/html"
    ServerName www.domain.com

    SSLEngine on
    SSLCertificateFile /etc/Apache2/cert/2_www.domain.com_cert.crt

    SSLCertificateKeyFile /etc/Apache2/cert/3_www.domain.com.key

    SSLCertificateChainFile /etc/Apache2/cert/1_root_bundle.crt

</VirtualHost>

红色部分分别修改为你的域名和上传证书文件的路径。

全部完成后重启apache。


0x05.REF

证书安装指引

【http转https】其之一:腾讯云 DV SSL证书申请实验

WordPress WP-Super Cache缓存无法开启

0x00.启用缓存功能无效

即:设置→WP-Super Cache→启用缓存功能无效无法更新。

进入控制台,wp-config.php 添加:

define('WP_CACHE',true);

0x01.无法写入缓存文件…

即提示:Could not rename temporary file to configuration file….

进入控制台:

su root
chmod 755 /www/wwwroot/async.website/wp-content