-
Notifications
You must be signed in to change notification settings - Fork 7.7k
XX Net 1.0.0 开发笔记
-
全部采用脚本实现
Python.exe是从最新的python win32 2.7.9版本提取的,是官方发行的版本。 所有代码都是python, js, html, css。
-
基于Html5实现的UI
要实现跨平台UI,考虑过QT,GTK,Tcl/Tk,最后还是觉得HTML5开发成本最低,最小巧, 而且懂的人也多。 选了最流行的bootstrap + Jquery做为UI基础,所有代码都手工写。 HTML5经验比较少,希望有经验丰富的给予帮助改进。
-
GoAgent 3.1.x
GoAgent 3.2的代码实在看不懂,3.1.x的还简单,就拿前面的版本改。 版本号这件事情也很头疼,后来想想就还是3.1.30 开始,表示兼容3.1,然后估算到 3.1.254还有200多个版本可以用,就先这么干了。
-
sys tray(系统托盘)
有很多种实现方法,但考虑的WinGTK实在太大了,不想因为一个小小的托盘去搞个大包进来。 找到一个纯Win32的实现,通过ctypes去调用,非常简洁。 Linux下就不行了,GTK在Debian下可以,在Ubuntu下又不行,暂时还没有解决,希望哪位 熟悉的给顺手干一个。
-
图标,美工
这东西咱不在行,就沿用GoAgent的做法,直接拿Python的放上去,真希望哪位美工的兄弟 给贡献一个。
-
加载器Launcher
-
要考虑到加载器自身的升级。
-
各模块升级了,个人的配置文件都还在,因此单独有一个data目录放数据。
-
GoAgent 的配置文件,把个人的配置文件单独放data/goagent目录。
-
-
python
windows需要自带python解析器,顺手升级到最新版的python 2.7.9 Linux 的OpenSSL库默认是没有的,也把Linux的库放进去。暂时只放了64位的,这年头 很少有用32位的了吧。 删除了原来egg库,发行包不到6M,一下小了一半。 Lib原来是zip的,担心启动时解压会慢,而且更新模块不方便,就解压出来了。 目前用着没问题。
-
GoAgent简化
-
专注,只解决GAE平台的问题 PHP,PaaS的都删了.
-
还有很多性能调优的配置都删了 懂技术的,直接看源码修改好了。
-
文件拆分 原来只有一个文件的版本,拆成十几个 每个文件就负责一个方面的事情,容易理解。 代码还仅仅处于能工作的状态,还有很多地方可以清理优化。
-
库一级的,尽量把该有的库带上,就不用到处判断有没有这个库,没有的话怎么办
-
默认只能本机访问 考虑到需要安装证书,并且GoAgent是跨平台运行的,GoAgent并不适合用在远程访问, 因此不提供修改绑定ip的UI 设置,同样考虑到端口很少有人会冲突,就也不提供这个UI设置。 当然,有特殊需要的人,可以去改proxy.ini 这样就简化大部分人需要看到的配置。
-
DNS 服务,和GAE代理是相互独立的 有了DNS,还有连通性问题没有解决,干脆去掉。 需要的话另外开一个项目
-
证书安装 Windows7 多了UAC权限控制,即使Administrator用户,默认执行也不能修改系统配置。 在网上找了一代码,调用Win7的系统函数,会弹出权限对话框。 这样启动GoAgent时就不用Administrator权限了,直接点击启动即可。
-
-
GoAgent UI
状态栏 a. 增加了系统平台参数 方便反馈问题时,能够知道到底是什么系统 b. 显示当前可用google ip数 c. 动态更新google ip数
配置 简单到只有appid的设置 系统默认会提供一批公共的appid,不过还是建议用自己的appid。
部署 a. 主要解决需要提示输入的问题 把Google的代码翻出来看,原来几个地方是不一样的,而且提供了替换的接口。 把提示输入函数换成自己的函数,就可以了。 剩下就是各种细节的处理。 b. 部署会默认用GoAgent作为代理 GoAgent 针对部署做了优化,不需要appid也可以部署。因为是直连Google appengine 服务器。 c. 日志 原来的日志是弹出来DOS界面,觉得Web做一个也不会太难。 就整了一个,不过在自动滚动到最底没有做好,希望有谁做过的,给优化一下。 launcher的log,也要做一个Web版
-
自动升级
-
升级配置 升级配置就一个json,放在appengine 上。 每次有新版本时,更新这个json. 为了实现灰度发布,加了一个随机id,作为灰度的参考参数。
-
更新包 更新包由github在tag时生成zip,访问没有限制,也没有流量限额。
-
更新流程 像GoAgent的模块,可以控制其退出,执行安装后脚本后,启动新版本。 而Launcher自身的升级,需要先停掉自身的http服务,然后调用setup脚本,而自己退出, 由setup去启动新版本。
-
控制策略 所有升级都需要经过用户自己同意,可以下载但不安装,也可以跳过某一个版本。 目前每个版本的详细信息还没有做好,系统的提示框空间有限。应该做一个Web版的版本管理, 可以手动切换到不同版本。
-