KKDEV - Shelikhoo 's Personal Blog


Be chosen to change the world.


Domain Socket的用途和其对于V2Ray的意义

TL;DR Domain socket是一种进程间通信机制,本身并不能跨主机通信,并不能直接用于翻墙,它是一种辅助配置的工具。 长回答 Unix domain socket 是一种跨进程通信通信协议,主要用于Unix系操作系统下,同一个主机上应用程序之间的通信。在V2Ray中实现了类似于TCP的流式Domain socket协议. 主要用法和优点 用于代理和其他程序之间的本地环回连接 Domain Socket协议的主要作用是和其他程序交互,这包括nginx等成熟的应用程序,也包括其他用户自己的应用程序。由于Unix domain socket支持基于文件控制访问权限,基于domain socket的协议可以比较有效的控制访问,减少权限控制的难度,减少了网络协议中需要的认证。 这在多用户环境下十分重要,通过Domain socket可以比较有效和方便的减少在同一个主机下,服务被其他用户访问的情况,及由于不正确配置导致本地服务被代理用户访问的情况。 当然,在部分环境下,Domain socket不占用本地端口,不需要生成数据包的特点也会是使用其的优点。 用于解决不同网络命名空间之间通信的问题 Linux操作系统下进程可以分组件可以处于操作系统中不同的命名空间,使用不同的操作系统环境。由于Unix domain socket是进程间通信方式,和网络并不处于同一个命名空间,因此,可以在使用相同的进程间通信命名空间的同时,使用不同的网络环境。这可以用于将部分程序在不同的网络环境中运行,实现在Linux环境下的分应用代理。 Domain Socket对于V2Ray的意义 在Unix环境下,一个比较重要的设计哲学就是每个工具做一个事,并将这个事情做好。V2Ray并不完全遵循这个哲学,而这个哲学也不是完全适合于V2Ray。但是,引入Domain sock是将V2Ray和其他程序进行有效结合的重要方法,使V2Ray更容易和其他程序和项目进行整合。

#Identify the barrier that reduce the the efficiency of modern computing

Modern computing devices are fast, but not as fast as it can be. One of the principle of software programming is abstraction, which make developing software faster and easier than its hardware counterpart, for the price of efficiency if the abstraction is not ideal. One of the most inefficient abstraction is sequential execution, which to be fair, cannot blame von-neumann. In the early days of hardware development, there is only so much circuit unit to support one core.

关于V2RayNG在Play商店上的开发者帐号变更为其UI部分开发者的声明

在未来的一段时间内,V2RayNG在Play上的开发者将变为其UI部分开发者所拥有的帐号CaptainIron (Telegram用户名为:d4boy)。 本次转移的原因在于这位开发者希望在其的App中加入应用内支付,而这需要开发者拥有自己的Play帐号并设置自己的支付方式。 在本次转移完成后,应用的开发者将显示为CaptainIron,而我将不再拥有对其商店描述和上架程序的管理权限。 由于我已经不再管理此程序的上架信息,请将您在使用这个程序的时候遇到的问题反馈给CaptainIron(Telegram: d4boy)。 同时,由于不再管理此程序上架的程序文件,这个程序的功能和安全性不会拥有来自我的背书和承诺,我也不会为此应用的行为和内容负责。 您在购买或订阅了此App内的服务时发生的交易不直接和我产生关联,您不应该期待来自我的功能和稳定性更新 ,也不应该以在此应用的付款的情况期待来自我的服务和支持。 此后,V2RayNG的更新将由其的开发者完全控制,而其的开发者应该自行处理来自其用户的相关反馈和支持请求。 这包括Telegram群组和来自其他渠道的和V2RayNG有关的求助和问题解答, 请不要对于和其有关的内容以包括但不限于私聊,@和或其他提及的方式请求和期待我的支持。 在AGPL协议的许可范围下,其开发者可以继续使用来自我的libv2ray并得到其的功能和稳定性更新。 这意味着V2RayNG将必须继续保持开源,公布源代码并允许来自其他人的修改和分发修改版的程序。 每个开发者开发程序都需要有自己的动机和动力,有些开发者可能愿意在不接受任何形式的报酬下开发并共享程序, 但是更多的开发者需要金钱的驱动才会持续不断为用户提供高质量的程序。 缺少利益支持的任何活动都不可能长久持续,尤其是极其枯燥且需要特殊的工具和技术才能完成的软件和或硬件开发工作。 希望大家不要对开发者决定加入收费功能的决定做出过多的负面评价,每一个都要为一个原因而努力 ,而金钱则是对于很多人来说最容易接受的原因,也是最容易让他们感到自己工作的意义的方法。 对于他们来说,这是对于他们使用自己的周末和夜晚甚至是午休和 课间在电脑和手机前对着一个枯燥的界面和晦涩难懂的术语挥洒自己的时间的最好的理由 (P.S.:不过V2RayNG开发者貌似是在工作地点摸鱼进行开发, 并没有使用自己的私人时间,可能并不适用上面的描述23333333)。 Update: 转移已经完成。 Update: 已经提交了转移申请,可能需要几天的时间才会生效。 Shelikhoo

V2Ray RFC: V2Ray Pipe Transport Proposal

V2Ray is designed to be a flexible network tool for developers. However, in term of developer friendliness it have suffered a bad reputation as being hard to master both for user and third-party developers. Here, I would like to propose a new stub transport that is intended to reduce the difficulty for developing a transport for V2Ray, and remove the necessity of commitment for development. Pipe transport use operating system’s fork and/or unix domain socket capability.

Designing A QR Code Scheme For V2Ray

Scanning QR code to import configure file from computer have been a wanted feature for a long time, but only until very recently, such a possibility were aroused to implement such a functionality. Before LibV2Ray write a universal, future proof, multipart enabled QR code. Multiply attempt by third-party developer was made to create a QR code representation for a configure file. All previous version of QR code solve all problems they face at that time very successfully, but still at the expense of some problem not significant in their eyes.

V2RayGO Privacy Policy

V2Ray Team, LibV2Ray Team and V2RayGO Team respect your privacy. V2RayGO do not include any tracking library or service from third party purposefully, but could use third party service to improve your experience. V2RayGO might or might not collect your device identification info, hardware and software info, cash info, and network info, but we will request your consent before upload them to our sever. User can refuse to upload any of these information to our server and continue to use the a limited set of function of our software, once you have consent our upload we will keep uploading indefinitely.

#Classify and discriminate network traffic to enable partial global proxy in Linux using cgroup,iptables,redsocks

Some of my friends ask me to play minecraft with them. “Great!”, I said as minecraft can be running natively in Linux, which is a prerequisite for me to join. No Longer before I downloaded it, I encounter a problem, it doesn’t honor system’s proxy setting and will not run unless it can contact its server and Internet on my computer is provided by a socks5 proxy. While a VPN can do the work without much exploration, I decided to seek a way to solve this problem in a more elegant way.

$I am a pro-encryption

Firstly, happy to see you again. For past few months, this blog have been frozen as I was as busy as have little time to doing stuff for myself. As you might have already noticed, from now, this blog will be written in English. This adjustment was due to the variety of font I can choose once I wrote in English. In this article, I will talk about the recent debate on encryption and how it related to you.

$内存其实并不用清理

现在,很多人的电脑上都有一个小泡泡,实时的告诉自己到底还有多少内存。但是你真的了解内存么? 电脑中有多级存储机制,一般的说,读取的速度越快,存储的容量越小。CPU寄存器和缓存,内存,硬盘,(其实还有),就是电脑的多级存储得成员。其中,内存和之前的存储介质中存储的内容在电脑关闭后会自动消失(可以这样认为),因此我们大部分的数据都保存在硬盘之上。 但是硬盘的速度并不快,为了保证程序的流畅运行,电脑会将程序在近期需要的数据加载到内存,程序在读取文件内容时可以直接到内存,而不是硬盘读取。因此提高了电脑的运行速度和减少可响应时间。 内存,只要电脑一启动完毕,就会被系统自动的加载数据,比如程序可能会用到的文件,而程序,也可以向系统申请内存。结果是,在正常运行的现代操作系统上,闲置的内存非常少。 内存中预加载的文件并不会和程序抢占内存,程序要求内存时,操作系统可以直接将已经预加载文件的内存交给程序,尽管预加载的文件没有用上但是实际上也没有损失。 因此,内存对于操作系统是一个不用白不用,用了也白用的地方。 但是,当运行的程序过多时,也会出现内存确实不够用的情况,这时就会将程序的不常用内存放到交换分区(页面文件,虚拟内存)中来防止系统因为内存不足而崩溃。但是因为交换分区在硬盘,访问速度比内存差很多,在可能的情况下,一般不将程序的数据放在硬盘中。 好,到最后,为什么内存不用清理呢? 清理内存是先让系统给自己分配很多内存(文件白预加载了),将其他的程序都挤到交换分区(这些程序的运行速度变慢了),之后释放掉自己多请求的内存,让内存闲置下来。 不久,随着其他程序又运行,毕竟是需要经常访问的内容,程序数据会返回内存,直到下一次内存清理。 内存这种东西,空着也是空着,不如多用用好。当遇到因为内存不足而导致的电脑速度慢时,应该减少运行的程序或增加内存的大小,而不是使用软件来降低内存利用率。

#为什么电脑运行的很慢

在这篇文章中我主要想大致的说一下电脑运行慢的原因及相应的对策。 首先要考虑的问题即是内存是否过小的问题。 对于内存的大小是否已经对电脑的运行产生影响的最好的判定方法是检查电脑页面错误(page fault)的数量,其中 Major page fault 对电脑性能的影响最为显著。 Major page fault 在程序访问一块目前不在物理内存上的逻辑内存地址时发生。为了保障系统的稳定运行,现代操作系统在硬盘上划出个区域作为页面文件(交换分区/文件),当内存不足时,将不活跃的程序的内存中的数据置出至硬盘中的相应区域,将物理內存留给活跃的程序。防止物理内存不足以至必须结束一些程存才能保持运行的情况。当一个程序的内存被置出到硬盘后,这个程存仍有可能运行,这时如果这个程序要访问一块己经置出到硬盘的内存时就会发生Major page fault ,这时这个程序将被内核接管,程序的执行中断,就算时间片还有也必须等待其所要访问的內存完成加载之后才能继续运行。对于这段时间一般不会很长,但是当多次此类行为发生时,就会表现为程序运行不流畅。 使用ps -aux -o main_flt,maj_flt 查看页面错误情况。 其次,影响电脑运行速率的因素还有当前CPU,硬盘的负载情况。绝大多数程序都能对于较慢的网络做出应对,但是当其他的处理设备运行较慢时并不能给出合理的提示。 使用iostat命令查看当前的硬盘使用状态,使用htop监视CPU的使用情况。 同时,还有一些容易被忽略的因素同样对系统的性能有影响,就是系统中存在的函数钩子。杀毒软件和其他希望控制系统的运行的程序会通过函数钩子完成对系统的控制用来实现一些其他方式无法达到的功能。 函数钩子即让程序在调用系统调用(也可以是其他程序的函数)之前或之后运行一段代码,并由这段代码决定是否继续这个调用。这个功能被杀毒软件用来阻止病毒,在病毒保证杀毒软件在病毒运行之前有机会阻止其的运行,但是在这个过程中也耗费了时间。通常,这段时间不是很长,但是如果这个功能被滥用,有过多的钩子时,系统的运行速率会显著下降。因此应该只安装一个杀毒软件,不要安装多个。安装多个杀毒软件并不能提高杀毒效果。 在进行非3D显示时,显示卡性能对电脑的影响并不显著。 Edit: 在电脑散热出现问题时,CPU和自动降频,这时电脑速度会有显著降低。Thanks for feedback from XiaoLan

Archive