forked from Baxianxiahai/huicloud
-
Notifications
You must be signed in to change notification settings - Fork 0
HappyDg/huicloud
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
====HUICLOUD===== //=ZJL, 2019 Feb.28, CURRENT_SW_DELIVERY R1.44 =>HST = 增加MPlayer中VRGLS的相关功能 //=ZJL, 2019 Feb.1, CURRENT_SW_DELIVERY R1.43 =>HST = 构建相关图像识别算法相关的处理过程服务框架 = 线虫识别的框架搭建 //=ZJL, 2019 Jan30, CURRENT_SW_DELIVERY R1.42 =>HST = 增加DjangDB的设置与配置,方便各种条件下的共融性 = 完善消息处理过程,理清各个处理模块之间的关系 //=ZJL, 2019 Jan29, CURRENT_SW_DELIVERY R1.41 =>HST = 修正主服务中的一个BUG: class ClassHttpRequestGenernalHandler(BaseHTTPRequestHandler)不能有__init__()函数,不然一堆问题 = 先主要采用hst_curlib3_client_connection()来喂UT消息 //=ZJL, 2018 Dec.5, CURRENT_SW_DELIVERY R1.40 =>HST = 增加MDC模块 = 建立项目与激活模块的关联关系 //=ZJL, 2018 Dec.4, CURRENT_SW_DELIVERY R1.39 =>HST = 准备完善多分支的合并:后台服务器使用的版本,HCU下的兼容,WINDOWS下的版本 = 第一个问题: 服务号需要从8000改为7999,不然在HCU中跟已有服务冲突,MFUN待确定 = 考虑放开CV2/TensorFlow关闭部分的功能 //=ZJL, 2018 Sep.3, CURRENT_SW_DELIVERY R1.38 =>HST = Surpress Vision + Sensor, as MATE system not solve CV2 and TensorFlow installation issue. //=LZH, 2018 June.22, CURRENT_SW_DELIVERY R1.37 =>DjoSiteDba = 增加后台F1sym - F11Faam Django Dba App //=ZJL, 2018 June.9, CURRENT_SW_DELIVERY R1.36 =>RelayTest = 增加Raspy Relay Test项目工程 //=ZJL, 2018 June.7, CURRENT_SW_DELIVERY R1.35 =>HST PRINTER = 提供MAC地址读取服务 = 将服务号重新进行了编码,改为10进制,简化UT TEST CASE中有关十进制和16进制之间的转换,防止错误 //=ZJL, 2018 MAY.18, CURRENT_SW_DELIVERY R1.34 =>CEBS = 继续 //=ZJL, 2018 MAY.17, CURRENT_SW_DELIVERY R1.33 =>CEBS =生成双页面 //=ZJL, 2018 MAY.16, CURRENT_SW_DELIVERY R1.32 =>CEBS =更新巡视功能 //=ZJL, 2018 MAY.16, CURRENT_SW_DELIVERY R1.31 =>CEBS =增加MOTO控制功能 //=ZJL, 2018 MAY.8, CURRENT_SW_DELIVERY R1.30 =>CEBS =完善 //=ZJL, 2018 MAY.5, CURRENT_SW_DELIVERY R1.29 =>FMPT2 = pyinstaller -F -w --icon=fmpt2.ico fmpt2Main.py //=ZJL, 2018 MAY.4, CURRENT_SW_DELIVERY R1.29 =>CEBS = 继续完善多任务及VISION PRCECESSING FRAMEWORK //=ZJL, 2018 MAY.2, CURRENT_SW_DELIVERY R1.28 =>CEBS = INIT CEBS = cd form_qt, pyuic5 -o cebsmainform.py cebsMainform.ui, pyuic5 -o cebscalibform.py cebsCalibform.ui pyinstaller -F -w --icon=.\icon_res\cebs.ico cebsMain.py //=ZJL, 2018 Mar.27, CURRENT_SW_DELIVERY R1.27 =>GTJY编解码接入 = RESTClient => Firefox的插件 = 测试案例: 复杂测试: curl -X POST -i 'http://127.0.0.1:8000/' --data '{"restTag": "special", "actionId": 20482, "parFlag": 1, "parContent": {"inputBinCode": "AA11C538326217CCA301092A0C0E1C1B7E2C01640000002C010000881300000000000024CC1000CC1000000000000100002100000000000000E803000001000D0B191B7E460111176309813D0D00F401C10341BB"}}' 简单测试: curl -X POST -i 'http://127.0.0.1:8000/' --data '{"restTag": "vision","actionId": 8194,"parFlag": 1,"parContent": {"fileName":"11.JPG", "cfBase":600, "cfSmall2MidIndex":1500, "cfMid2BigIndex":2500, "cfBig2TopIndex":5000}}' = Django运行 python3 manage.py runserver //=ZJL, 2018 Mar.19, CURRENT_SW_DELIVERY R1.26 =>GTJY编解码接入 = 字段保护:判定某个字段在json格式中是否存在 //=ZJL, 2018 Mar.19, CURRENT_SW_DELIVERY R1.25 =>GTJY编解码接入 【目标1】 Ubuntu MATE自动化装机,方便现场版本的生成 => 完成 /************************************************************************* ***** jar包使用说明 ****** /************************************************************************* jar包中共有2个接口,包名称为com.chnsce.zxmeter.impl.ZXNBITOMeterInterfaces。 数据解析接口:表内的数据进行解析,返回json字符串,可自动识别表具类型和上传类型, 数据编码接口:数据打包成16进制字符串,需要上位机提供表号、开关阀指令和系统时间。 /** * 数据解析函数 * @param sRetrunCode 表端返回的数据内容 * @return 解析后的json字符串 */ public String decoding(String sRetrunCode){ retrun jsonString; } 实例: 水表---->>{IC卡最后一次充值量=0.0, 最后一次充值量=0.0, 信号强度=41, 阀门状态=开阀, rtn=9000, 剩余量=0.0, GPRS累计充值量=0.0, 启动日期=00-00, 单价=0.0, 表号=81980052, 累积量=0.0, 累计金额=0.0, 表内运行状态= , 表内时间=2018-3-12 9:47:18, 负计数=0.0, 表类型=A8} 气表---->>{IC卡最后一次充值量=0.0, 最后一次充值量=1.67, 信号强度=37, 统计累积量=8706, 阀门状态=开阀, SIM卡号=2147483647, 报警气量=33795, 统计日期=01-09, 启动日期=00-00, GPRS累计充值量=0.0, 单价=4.2, 表号=75126617, 负计金额=0.0, 累积量=546.6, 时间=2018-3-19 8:5:35, 累计金额=1732.2, 表内运行状态= , 程序版本号=v03C1, 上传原因标志位= 磁干扰 按键, 欠压时间=2018-1-25 15:38, 剩余金额=48267.8, 累计预购量=1000.0, 统计周期=0, 表类型=CC} /** * 表内运行状态 * @param status * @return */ public String getMeterStatus(byte status){ StringBuffer result=new StringBuffer(); result.append(" "); if((status&0x01)==0x01){ result.append("余量不足"); } if((status&0x02)==0x02){ result.append(" 非法卡"); } if((status&0x04)==0x04){ result.append(" 欠费"); } if((status&0x08)==0x08){ result.append(" "); } if((status&0x10)==0x10){ result.append(" 欠压"); } if((status&0x20)==0x20){ result.append(" 燃气泄漏"); } if((status&0x40)==0x40){ result.append(" 写false错"); } if((status&0x80)==0x80){ result.append(" 磁干扰"); } return result.toString(); } /** * 气表上传原因标志位 * @return */ public String getUploadReason(byte[] status){ StringBuffer result = new StringBuffer(); result.append(" "); if((status[0]&0x01)==0x01){ result.append("负计数"); } if((status[0]&0x02)==0x02){ result.append(" 磁干扰"); } if((status[0]&0x04)==0x04){ result.append(" 价格表错误"); } if((status[0]&0x08)==0x08){ result.append(" 欠压关阀"); } if((status[0]&0x10)==0x10){ result.append(" 非法卡关阀"); } if((status[0]&0x20)==0x20){ result.append(" "); } if((status[0]&0x40)==0x40){ result.append(" "); } if((status[0]&0x80)==0x80){ result.append(" 价格点变化"); } if((status[0]&0x01)==0x01){ result.append(" 插用户卡"); } if((status[0]&0x02)==0x02){ result.append(" 按键"); } if((status[0]&0x04)==0x04){ result.append(" 异常流量"); } if((status[0]&0x08)==0x08){ result.append(" 泄漏报警"); } if((status[0]&0x10)==0x10){ result.append(" 预存量卡上传"); } if((status[0]&0x20)==0x20){ result.append(" 转入卡上传"); } if((status[0]&0x40)==0x40){ result.append(" 转出卡上传"); } if((status[0]&0x80)==0x80){ result.append(" 余量不足"); } return result.toString(); } /** * 数据编码 * @param barcode 表号/生产号 8位表号 * @param valvePar 阀门控制参数 0 :开阀 1 ;关阀 * @param datetime 系统时间 格式为yyyymmddhhmmss 如20180314133829 * @return 16进制字符串 */ public String encoding(String barcode,int valvePar,String datetime) { return cmdSend; } 实例: 水表----->>FF11338198005200001214031820000200000000000000000000000000000000000000000000000000000000000011BB 气表----->>和水表内容一致 //=ZJL, 2018 Mar.14, CURRENT_SW_DELIVERY R1.24 =>GTJY编解码接入 = JAR包使用说明 /************************************************************************* ***** jar包使用说明 ****** /************************************************************************* jar包中共有2个接口,包名称为com.chnsce.zxmeter.impl.ZXNBITOMeterInterfaces。 数据解析接口:表内的数据进行解析,返回json字符串,可自动识别表具类型和上传类型, 数据编码接口:数据打包成16进制字符串,需要上位机提供表号、开关阀指令和系统时间。 /** * 数据解析函数 * @param sRetrunCode 表端返回的数据内容 * @return 解析后的json字符串 */ public String decoding(String sRetrunCode){ retrun jsonString; } /** * 数据编码 * @param barcode 表号/生产号 - 必须8位长度 * @param valvePar 阀门控制参数 0 :开阀 1 ;关阀 * @param datetime 系统时间 格式为yyyymmddhhmmss 如20180314133829 * @return 16进制字符串 */ public String encoding(String barcode, int valvePar, String datetime) { return cmdSend; } //=ZJL, 2018 Mar.14, CURRENT_SW_DELIVERY R1.23 =>Django命令 = 增加CCL/FAAM数据库表单 //=ZJL, 2018 Mar.11, CURRENT_SW_DELIVERY R1.22 =>Django命令 $ python3 manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更 $ python3 manage.py migrate TestModel # 创建表结构 注意centos下的数据库操作中,数据库密码是bxxhbxxh,而不是本地的123456。未来可以将这个改为自动shell脚本,自动更新,或者在本地发布正式代码时改好,再上传到后台云。 = Django下的密码设置,可以做到自动化 //=ZJL, 2018 Mar.2, CURRENT_SW_DELIVERY R1.21 =>PkgHstSpecial = To GTJY request on water meter decoding = POST的工作方式:启动服务器 python3 hstMain.py = 另外一段客户端使用的方式:json中的数据,不能使用16机制,必须10进制 [v]curl -X POST -i 'http://127.0.0.1:8000/' --data '{"restTag": "special", "actionId": 20481, "parFlag": 1, "parContent": {"produceNo": "11", "commandNo": "12", "htcs": "AAAA: 33", "meterTypeCode": 168}}' [x]curl -X POST -i 'http://127.0.0.1:8000/' --data '{"restTag": "special", "actionId": 0x5001, "parFlag": 1, "parContent": {"produceNo": "11", "commandNo": "12", "htcs": "AAAA: 33", "meterTypeCode": 0xA8}}' = 样例 ========================== root@ubuntu:/home/hitpony# curl -X POST -i 'http://127.0.0.1:8000/' --data '{"restTag": "special", "actionId": 20481, "parFlag": 1, "parContent": {"produceNo": "11", "commandNo": "12", "htcs": "AAAA: 33", "meterTypeCode": 168}}' HTTP/1.0 200 OK Server: BaseHTTP/0.6 Python/3.6.4 Date: Sat, 10 Mar 2018 15:17:12 GMT Content-type: text/html {"restTag": "special", "actionId": 20481, "parFlag": 1, "parContent": "{\"\u9600\u95e8\u72b6\u6001\":\"\u5f00\u9600\",\"SIM\u5361\u4e32\u53f7\":\"460111176309813D0D00\",\"\u6e29\u538b\u72b6\u6001\u6807\u5fd7\u4f4d\":\"1\",\"\u5355\u4ef7\":\"3\",\"\u8868\u7c7b\u578b\u4ee3\u7801\":\"CC\",\"\u7535\u6c60\u6b20\u538b\u68c0\u6d4b1\u6b20\u538b\u65f6\u95f4\":\"2017-11-25 11:13:00\",\"\u6807\u51b5\u77ac\u65f6\u6d41\u91cf\":\"0\",\"\u5269\u4f59\u91d1\u989d\":\"50\",\"\u538b\u529b\u503c\":\"0\",\"\u6e29\u5ea6\u503c\":\"23\",\"\u8868\u5185\u8fd0\u884c\u72b6\u6001\":\"1\",\"HIC\u8fd0\u884c\u72b6\u6001\":\"0\",\"\u7d2f\u8ba1\u91cf\":\"1\",\"\u8868\u5185\u65f6\u95f4\":\"2017-11-25 11:13:00\",\"\u7edf\u8ba1\u5468\u671f\":\"0\",\"\u7d2f\u8ba1\u9884\u8d2d\u91cf\":\"0\",\"\u7edf\u8ba1\u7d2f\u8ba1\u91cf\":\"1\",\"\u6761\u7801\u53f7\":\"17623238\",\"\u4e0a\u4f20\u539f\u56e0\u6807\u5fd7\u4f4d\":\"\u4e3b\u52a8\u4e0a\u4f20\",\"\u89e3\u6790\u547d\u4ee4\":\"\u4e3b\u52a8\u4e0a\u4f20\",\"\u8d1f\u8ba1\u6570\":\"0\",\"IC\u5361\u6700\u8fd1\u4e00\u6b21\u5145\u503c\u91cf\":\"0\",\"\u4fe1\u53f7\u5f3a\u5ea6\":\"24\",\"\u4f53\u79ef\u8865\u507f\u7cfb\u6570\":\"1\",\"\u5de5\u51b5\u77ac\u65f6\u6d41\u91cf\":\"0\",\"\u7d2f\u8ba1\u91d1\u989d\":\"3\",\"\u7edf\u8ba1\u65e5\u671f\":\"09-01\",\"\u542f\u7528\u65e5\u671f\":\"00-00\",\"\u4e0a\u4f20\u65f6\u95f4\":\"2017-11-25 11:13:00\",\"\u5de5\u51b5\u7d2f\u8ba1\u91cf\":\"0\"}"}root@ubuntu:/home/hitpony# ============================= //=ZJL, 2018 Mar.2, CURRENT_SW_DELIVERY R1.20 =>Fmpt = Validate jpype working method, to call JAVA JAR package //=ZJL, 2018 Mar.2, CURRENT_SW_DELIVERY R1.19 =>Fmpt = 建立起NAS备份目录 = 清理掉了老旧Xhat目录,未来不再使用了 = 新的目录结构 DjoSiteDba => Django数据库框架 env => 安装环境说明 fmpt => c#的工厂生产工具 fmpt2 => python的工厂生产工具,互联网版本 hst => HUIRST微服务框架应用 NAS_tftpd => NAS装机服务 NAS_www => NAS装机服务 XfaamPrinter => FAAM打印机服务程序 Xhhomepage => 小慧homepage服务 //=ZJL, 2018 Feb.25, CURRENT_SW_DELIVERY R1.18 =>Fmpt = 搭建框架 //=ZJL, 2018 Feb.23, CURRENT_SW_DELIVERY R1.17 =>Django = HUIREST API性能评估 -> HUIREST的压测性能评估很有意思:使用HTTP/POST远程API CURL方式访问数据库,连续做100个循环,每个循环有4个Test Case,分别为数据表单的插入,删除,插入,修改。结果从UT环境中来看,100个HTTP REQUEST在2ms之内,全部发送到服务器侧,但回复却是在接下来的4s内一个一个的返回来的。 -> 这给了我们两个有意思的启示:1)Python3和HUIREST API是异步的,并不是同步的,意味着它不等返回结果,就去执行下面的语句,所以在我们的业务处理中要仔细处理这个内容。 2)400个表单操作API耗时4s,PPS=100,差不多每一次数据库操作在10ms水平,在对于业务应用模块来说,这是相当慢的,这也说明HUIREST API只能当做一种外部硬盘一样的慢速介质,而不能支持特别高速的业务实时应用 -> 满负荷跑的时候,CPU才10%左右,这台机器有8个核吧,所以只有一个核在跑,我估计 -> http://blog.csdn.net/AnyThingFromBigban/article/details/73611386 -> 如果想使用多核,需要使用MultiProcessing处理机制,或者Ctypes外部c/c++扩展模块,绕过Python的GIL全局锁,才能将多核用足。对于系统全局来说,应用业务跑在一个核上,不同的微服务(HUIREST API)跑在另外的核上,界面再跑在其他核上,他们都是独立的进程,操作系统自然将他们调度在不同的核上,这个就自然不是问题了 -> 从这儿可以看出,对于数据库IO密集型的访问来说,Python的确不是最优方案,业界广泛使用Java Hibernate / MyBatis框架是有道理的,但对我们来说,是不是足够了,需要再评估一下 -> 按照扬尘业务1分钟汇报一次的话务强度,每一次话务呼叫,我们假设有4次数据库操作,这样一个云后台的单核,可以支持的终端数量 = 1/ ((1/60) * 0.01*4) = 60*100/4 = 1500,即我们的一个业务后台,可以支持1500个下位机终端,无论上云控锁还是扬尘系统,这已经足够优秀了 -> 云控锁的话务密度为8个小时一次呼叫,所以这根本不会成为瓶颈。 -> 有了这个SYSTEM DIMENSIONING之后,我们在确定软硬件架构方面,就有底气了。同时,遇到后台的性能瓶颈,我们也能知道优化的方向和维度了。 //=ZJL, 2018 Feb.20, CURRENT_SW_DELIVERY R1.16 =>Django = CONN_MAX_AGE参数的设置不能放在OPTION里面,而必须放在跟NAME/HOST并行的外部 = 创建CEBS项目APP内容 = 创建COMM项目APP内容,并建立了基础的数据表单,实验数据表单的操作以及对应的UT工作环境 = 随时执行python3 manage.py dumpdata DappDbComm > DappDbComm.json,对数据进行备份 = 搭建起基本的CEBS线虫项目数据库访问机制,可以实现User,用户提交以及识别的访问.要搭建整个线虫项目,还需要考虑如何设计界面问题 = 完成Cebs项目中所有的UT TEST CASES //=ZJL, 2018 Feb.19, CURRENT_SW_DELIVERY R1.15 =>Django = 为了实现DjoSiteDba和hst的共享,并实现当前的hst访问DjoSiteDba的外部访问,同事让Django的运行不受影响,绕过的坑有: -> http://localhost:8001/user_info_show/ 使用8001端口,访问Django的路由 -> 将DjoSiteDba目录放在hst目录之内,跟hst目录保持平行,而不是放在里面 -> 在外部项目hst中,使用sys.path.append('../DjoSiteDba/'), django.setup(), 从而访问from DappDbTest import views as DappDbTest_views -> 8001可以不启动,不影响hst的运行 -> 参数request必须传进去给view.目前request格式就是json,已经在httpCmd中被解析了,所以内部使用还是很方便的 -> UT的执行,采用RUN AS方式 -> 在Eclipse工程里面,使用外部独立的项目DjoSiteDba,从而让其能够使用Eclipse集成的Django功能模块,不然就需要在外部Linux Terminal中敲入每一个独立的命令 -> UT的输入参数,采用标准的Json结构,将所有的参数全部放在Par中,方便解析与使用.这种方式将跟标准的使用保持同步. -> 严格维持了HUIREST的POST方式,并验证了POST方式工作的可行性与严谨性 = CONN_MAX_AGE:缓冲池设置为无限长 //=ZJL, 2018 Feb.19, CURRENT_SW_DELIVERY R1.14 =>Django = 搞定初步的Django项目安排:将项目内容建立在sdde/hst目录下,但项目建立在外部,独立成为一个项目:DjoSiteDba = 需要在sdde/hst/DjoSiteDba/目录下运行 python3 manage.py runserver 127.0.0.1:8001.未来是否使用8001或者8000端口,再定 = 同步需要启动python3 hstEntry.py,在8000端口,这是基础的hst服务.这样,两个服务同步启动. 此时,启动8001端口,只是为了方便验证并获取数据库操作的结果.其实,从PhpMyAdmin中,也能很方便的得知结果,所以启动8001/runserver不是必须的 这种模式就非常好:只需要启动8000这个服务端口,复用了Django的ORM数据库访问功能,而根本不需要Django的路由功能,这就是我们所追求的! //=ZJL, 2018 Feb.17, CURRENT_SW_DELIVERY R1.13 =>Django = 重复多遍之后,确定可以重复安装的方法,放在InsGuidance.txt文件中 = 安装成功Django=2.1.0最新版本 //=ZJL, 2018 Feb.10, CURRENT_SW_DELIVERY R1.12 =>年后目标 有关装机的过程,综合之前的过程,有如下几个地方需要优化一下: 1)装机到一半,没有执行到100% 2)中文输入法的自动安装 3)WIFI网络的自动配置 4)Tomcat7 + SpringMVC + Herbinet安装环境 5)一旦装机完成,需要将服务器映射到外网服务器,以便未来安装更多的服务组件,或者可以在xiaohui服务器之间灵活切换 6)安装脚本备份到SDDE VOB中 7)hcu.sh脚本和服务的自动启动 8)ubuntu MATE环境是完整的吧?年后可能需要批量安装10套以上。 9) Eclipse的Php/Java/Cpp/Js开发环境,全部安装到位 //=ZJL, 2018 Jan.15, CURRENT_SW_DELIVERY R1.11 =>JSON-C库 = Mosca的安装方法 = Json-C在AdvanceTech上的安装方法 //=ZJL, 2017 Dec.27, CURRENT_SW_DELIVERY R1.10 =>HUIREST = 搭建AITEST以及相应RESTFUL API的模块框架 //=ZJL, 2017 Dec.23, CURRENT_SW_DELIVERY R1.09 =>HUIREST = 将SDDE部署到NX = 增加网络部署逻辑图 = 将U17装机宝典放入SDDE环境 //=ZJL, 2017 Dec.17, CURRENT_SW_DELIVERY R1.08 =>HUIREST = 完善VISION中线虫识别功能,成功改造为HUIRST服务 //=ZJL, 2017 Dec.15, CURRENT_SW_DELIVERY R1.07 =>HUIREST = 创建图形处理的工具 = 完善BillTool用来处于apple的图象差异 = 搞定了线虫的处理,未来可以将其部署到服务器进行具体的应用 //=ZJL, 2017 Dec.11, CURRENT_SW_DELIVERY R1.06 =>HUIREST = 将所有的组件库分离,重新定义入口 = 增加UT功能,建立TestSuit集合框架 = python3.6 hstEntry, Eclipse中进行UT的测试,从而同时跑服务器和客户端 = 安装了大量的urllib3/pyurl等组件,终于将http的客户端跑起来了 //=ZJL, 2017 Dec.11, CURRENT_SW_DELIVERY R1.05 =>HUIREST = 创建HUIREST的Python程序框架 = 基本上完成了HUIREST的功能构建,它可以兼容PRINT/DBA/VISION => http://blog.csdn.net/linda1000/article/details/8087546 BaseHTTPRequestHandler其中的实例变量有: 1)client_address 包含关联的客户端地址(host, port) 2)command 包含请求类型(eg: get ) 3)path 包含的请求路径 4)request_version 包含请求版本的字符串(eg: 'HTTP/1.0') 5)headers 6)rfile 输入流 7)wfile 包含写到客户端响应的输出流 BaseHTTPRequestHandler的类变量有: 1)server_version 指定服务器软件版本 2)sys_version Python系统版本 3)error_message_format 4)protocol_version 响应中使用的HTTP协议版本 BaseHTTPRequestHandler部分操作 1)handle() 2)send_error(code[, message]) 发送并记录一个完整的错误回复到客户端 3)send_response(code[, message]) 发送一个响应头并记录已接收的请求 4)send_header(keyword, value) 编写一个指定的HTTP头到输出流 5)version_string() 饭后服务器软件的版本字符串 => HTTP测试界面 moz-extension://3ab3f452-9583-4d81-bfdb-230f641710ce/index.html# { "restTag": "vision", "actionId": 8193, "parFlag": 1, "parContent": { "sn": 55, "sucFlag": 1, "errCode": 0 } } //=MYC, 2017 Dec.8, CURRENT_SW_DELIVERY R1.04 =>创建整个环境 = FMPT工具,将相关源代码纳入管理 //=LZH, 2017 Dec.3, CURRENT_SW_DELIVERY R1.03 =>创建整个环境 = 增加XH网站代码 //=ZJL, 2017 Nov.22, CURRENT_SW_DELIVERY R1.02 =>创建整个环境 = 创建不同分支 = 创建Gpp(General Purpose)通用脚本目录 = 创建Raspy分支 //=QL, 2017 Nov.22, CURRENT_SW_DELIVERY R1.01 =>xxx = 创建整个SDDE VOB环境
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Python 75.3%
- HTML 15.7%
- C# 4.3%
- TeX 3.2%
- JavaScript 0.6%
- Shell 0.4%
- Other 0.5%