提问的艺术

Mruos阅读(185)

在开发过程当中,难免会遇到一些问题,而提问是最不费脑并且可能是最快的一种方式,但是,你的问题不一定会被人家所理解,但是你应该学会怎么提问

提问之前

在提问之前,首先要确保以下几个点:

  • 有做好可能解决不了的心理准备
  • 或许应该准备好付费的情况
  • 确定这个问题是因为实现什么而出现的,是否可以换种实现方式
  • 有认真思考过该问题的解决方案
  • 有尝试去搜索过该问题的解决方案
  • 确定 开发手册/文档中 没有该问题的解决方案
  • 确定你有该问题的基础知识,而不是别人解答这个问题还要给你普及很多相关的知识
  • 有做一系列的排查,并将问题确定在一个范围内

解决不了

当你的问题难度太大时,可能没有人能回答你的问题,你得做好解决不了的准备,解决不了请不要恼羞成怒,做出一些不理智的事情,或许可以尝试下付费解决,也或许可以换一种解决的方式(放弃问题的源头,用另一种方式实现你的逻辑)

认真思考问题的解决方案

当问题特别明显,只要有动脑就能解决这个问题时,没有人会喜欢回答这种基础问题,例如:

当你知道echo “hello world”语句,却不知道怎么输出”burnlord”时
当你知道如何移动文件到/tmp目录,却不知道移动到指定日期的目录时
当你知道mysql有解释器可以查看是否有使用到索引,却不知道如何看组合索引是否有效时 当报错信息出现的情况,却不知道去搜索时

搜索问题的解决方案

同样,当一个问题直接搜索就能出现答案,却一直拿出来问时,没有人会给伸嘴党喂饭,这是对回答者的一种侮辱
请在提问的时候,先尝试在搜索引擎中搜索,或许答案就在第一页

开发手册

当你在搜索引擎没有找到一些 生僻/不知名/不公开 的一些问题时,或许你得考虑下是否有一份文档还没有看完
既然搜索引擎都找不到的问题,那你问对该项目毫不知情的人有什么用呢?
既然有开发文档,那你为什么不尝试下在开发文档中发现这个问题的解决方案呢?

问题的基础

千万不要问你对该问题一无所知的问题,当你没学过php时,请不要问为什么if(){}括号里不加条件就会报错的问题
当你提出一个问题的,该问题相应的基础你应该要会,否则你会被人耻笑。

例如:
当你没看完新手教程,问swoole为什么运行之后改代码要重启
当你没看完面对对象,问为什么不use命名空间就会报错 当你连接websocket时,问为什么会发起一个http请求

排查问题

在提问之前,首先你得学会排查这个问题,确定问题的一个大致范围,否则会让人无从回答。

例如:当你上传文件这个逻辑出现问题时,你问:”为什么我没法上传文件”,是没有人能回答的了你的,你得自行排查,直到一个小范围。

如:

  • 上传文件,选择文件之后,发生错误;
  • 选择文件成功,发起http请求时出错;
  • 发起http请求成功,到后端接收不到文件信息;
  • 接收文件信息成功,无法保存上传文件;

 

  • 将一个大问题分解成一个个步骤,自行测试每个步骤,直到某个步骤出错(如果每个步骤都有错,那就一个个步骤慢慢解决)

提问

在提问时,我们应该避免以下几种问法:

  • 在吗?
  • 大神救我
  • 你好
  • 大佬求带
  • 有没有人用过xxx(说一个框架,或者一个不知名的项目)
  • 大神这个是怎么做的(直接要代码)
  • 可以问个问题吗?(不说问题,等别人回答可不可以。别人不一定在,别人在的时候你又不一定在。你可以先留言的!降低沟通成本,互相节约时间)
  • 这个代码有什么错?(发出一串代码,不说问题)
  • 这个代码怎么改?(发出一串代码,不说怎么改,不说问题。还有不发代码文本,只发代码截图的,你等别人去敲你的代码来改?)
  • 为什么我这个有问题?(截图一段”xxxxx”自行判断输出的错误信息不截图代码)
  • 能不能咨询一下(某种语言,某种框架,某种项目 一个大范围的概念)

当然,没有人会跟钱过不去,只要钱到位,可无视一切,直接贴问题,贴钱。

 

正确的提问应该注意以下几点:

  • 切记,是你在问问题,罗列好问题详情,不要怕打字,要每个点说到位,该分段的分段,该上图的上图,可以先在txt里整理自己的问题,你嫌罗列详情麻烦,别人嫌你更麻烦
  • 问题,要归纳好一起发送,不要一句话一句话的给他人发消息。不要不加、乱加标点符号,注意问题的关键的地方不要使用有歧义的的词
  • 不要发抖动消息,不要动不动发视频,更不要发语音!59秒的语音需要59秒才能听完整,59秒的字别人可能10秒就看完了,不要浪费别人时间
  • 描述准确,准确描述你要实现的功能,问题出现之前以及出现之后的现象
  • 截图准确,不要截一些和问题无关,或者对解决问题没有任何帮助的图
  • 态度端正,虚心请教,没有人有义务帮你

问题可分为以下几种:

  • 概念问题,某种抽象概念的不理解
  • 代码问题,代码出现非预期的情况,报错等
  • 框架问题,出现框架报错,运行出错,运行逻辑不理解等问题
  • 逻辑问题,对某种功能实现的逻辑不理解
  • 性能优化问题

每种问题的提问方式如下:

概念问题

概念问题,我们必须要描述准确,并且有自行了解过概念的基础,例如:

  • 我不太清楚为什么要用面对对象,直接函数封装不行吗?
  • 为什么协程要是用mysql连接池 等

代码问题

代码问题,我们需要截图代码(如果他人可能需要调试,也要发代码文本),以及报错信息,并且说明自己要实现什么功能,例如:

  • 我想要实现文件上传,我已经尝试了修改权限,但是不知道为什么代码会报错(附上错误信息,以及代码) 等

框架问题

框架问题,我们需要详细的说明框架的哪个部分,以及发生了什么问题,例如:

  • 使用EasySwoole时,发现在生产模式下,调用配置文件错误
  • 使用tp3.2时,上传文件总是报文件夹不存在,但是文件夹存在
  • 使用tp3.2时,session生存时间无法配置

逻辑问题

逻辑问题,我们需要详细描述某个功能的哪部分逻辑,例如:

  • 请问session过期是怎么实现的?
  • 请问mysql连接池是怎么实现的?

性能优化问题

性能优化问题,需要先确认慢的地方,然后截图,例如:

  • 我发现这段代码执行特别慢,有什么错误吗?(附上代码截图)
  • 这段sql我想实现xxxxx查询,但是非常慢,能优化吗?(附上sql语句,表结构,解释器截图)

 

参考修改自:https://github.com/tioncico/How-To-Ask-Questions-The-Smart-Way

参考修改自:https://www.easyswoole.com/NoobCourse/artOfAskingQuestions.html

bl-mid-proxy,中间件

Mruos阅读(954)

bl-mid-proxy,中间件代理端

目前本中间件,主要实现mysql连接池redis连接池crontab任务定时器logging多色日志输出 四大功能。

本中间件实质为一个服务端,通过http请求进行通信,任何编程语言都可以对接

提供简单的SDK(e、python、php、java),其他语言可自行组装http请求进行通讯。

本中间件主要解决以下问题:

  1. mysql数据库的增删改查,基本是后端编程的核心代码,占据很大的代码工作量,无论什么使用什么编程语言,都大概需要了解这些:
      • 所用语言需要使用什么的mysql支持库、包、模块,要安装引用它;
      • 掌握所用mysql模块的类、函数等方法,需要自己去掌握什么是连接句柄、游标、记录集等;
      • 如果所用语言框架还有sql的集成函数语法,如php的tp框架等,依然需要学习(当然熟练后使用这些更方便);
      • 如果sql调用多,开发者还需要使用连接池或者自行把mysql模块的类、方法等封装成可靠的mysql连接池来提高sql的执行速度;
    1. redis缓存数据库同样的道理,依然需要掌握和mysql类似的那些知识点;
    2. 定时器,程序总免不了存在定时执行、周期执行的任务,这需要我们:
      • 掌握所学语言的多线程技术,因为周期、定时任务我们一般都在独立线程中等待触发或循环执行;
      • 对于一些语言(尤其解释型语言)来说,不当的方式可能代码逻辑上难处理,系统资源占用还高;
    3. 日志,各语言都有很多成熟的日志模块,且自行设计日志系统也并不复杂,但设计具有可交互界面的尤其带色彩的日志界面就不容易了,对于主流语言,如java、python、php等,他们都是作为后端使用,并不擅长做UI组件界面设计,界面是比较影响程序效率、稳定性的,尤其在多线程的后端程序中;

本中间件就是针对上述四大问题,进行的功能封装,独立exe运行,具体来说就是:

  • 中间件内部集成mysql数据库连接池,mysql数据库一切连接、增删改查等都由本中间件处理,开发者程序只需要把要执行的sql语句作为参数,发送一个post请求到本中间件即可执行并获得json数据结果,方便各语言直接转成适用本语言的对象使用。开发者程序中无需去管其他任何与数据库相关的代码,只需要知道日常使用的增删改查的sql语句即可;

    以python为例:

    执行sql(原生请求):

    import requests
    import json
    
    # 测试访问中间件执行sql
    def test_midmysql():
        data = {
            "sql": "select * from test_userinfo limit 0,2"
        }
    
        try:
            log = requests.post('http://192.168.1.2:9606/api/mysql', json=data).text
            
            # 结果为json的文本字符串
            print(log)
            #输出:{"errcode":200,"errmsg":"success","data":[{"id":1,"name":"小明","age":10},{"id":2,"name":"小李","age":14}]}
            
            # 转成python对象类型(字典、列表),以备使用
            tmp = json.loads(log)    
            print(tmp)
       
            #输出:{'errcode': 200, 'errmsg': 'success', 'data': [{'id': 1, 'name': '小明', 'age': 10}, {'id': 2, 'name': '小李', 'age': 14}]}
            
        except:
            print('error')
            

    执行sql(使用sdk):

    import MidProxySDK
    
    mysql=MidProxySDK.MidMysql('http://192.168.1.2:9606/api/mysql')
    
    # 测试调用中间件的SDK执行sql
    def test_midmysql():
    
        res=mysql.sql('select * from test_userinfo limit 0,2')
    
        print(res)
        
        # 输出:{"errcode":200,"errmsg":"success","data":[{"id":1,"name":"小明","age":10},{"id":2,"name":"小李","age":14}]}
    

    success:

    {
    	"errcode":200,
    	"errmsg":"success",
    	"data":[                 //  查询语句,将包含data数据结果,支持大部分数据类型,且自动转成json的数值、浮点数、逻辑型、文本型
            {
                "id":1,
                "name":"小明",
                "age":10
            },
            {
                "id":2,
                "name":"小李",
                "age":14
            }
        ]
    }

    fail:

    {
    	"errcode":401,             // sql语句执行错误,返回401
    	"errmsg":"1146:Table 'test_db.userinf' doesn't exist"    // 具体的错误原因
    }
    {
    	"errcode":501,             // 中间件因为繁忙未能受理
    	"errmsg":"server busy."
    }
  • redis连接池原理同mysql;
  • 本中间件提供类似Linux的crontab功能,通过创建crontab定时表达式任务,来回调任务功能。支持任务类型:发送http、运行指定程序、执行sql语句。

    如在python的flask框架中,当需要定时执行某个功能时:

    import MidProxySDK
    
    @app.route('/api/task/clear')      # 把需要执行的任务功能放到一个接口函数中,无需添加触发时间相关代码线程
    def clear_outtime_log():
        mysql=MidProxySDK.MidMysql('http://192.168.1.2:9606/api/mysql')
        mysql.sql("delete from testaa where time_creat>1421023000")
        

    在中间件创建一个任务:

    \mod\crontab\tasks\clear_outtime_log.ini

    [sys]
    ; 每日0时0分1秒执行
    time=1 0 0 * * * *
    
    [info]
    on=1
    type=http
    url=http://192.168.1.2:9606/api/task/clear
    method=get

    如此,当每日0时0分1秒时,中间件会触发任务,发送一个http请求到flask后端,flask后端执行定时任务,开发者不需要管如何利用线程去定时执行任务,只需要写任务的详细逻辑功能即可。

  • logging,提供多色日志输出,自动创建日志文件以及类似cmd的多色日志输出显示;

    本中间件提供8种默认配色日志输出,分别为:infoimportantwarningerrorinputoutputdebugsystem,配色配置可直接在配置文件修改,另提供custom自定义配色日志输出,您可以把想要的配色日志通过在SDK新建个方法,方法调用custom即可进行增删配色;

    python-sdk-demo:

    import MidProxySDK
    
    logging=MidProxySDK.MidLogging('http://192.168.1.2:9606/api/logging'debug=True)
    
    def test_midlogging():
        logging.info('info','this is info msg.')
        logging.important('important', 'this is important msg.')
        logging.warning('warning', 'this is warning msg.')
        logging.error('error', 'this is error msg.')
        logging.input('input', 'this is input msg.')
        logging.output('output', 'this is output msg.')
        logging.system('system', 'this is system msg.')
        logging.debug_('debug_', 'this is debug_ msg.')      # 仅当,MidLogging(debug=True),时才会实际发送
        logging.custom('custom', 'this is custom msg.',fontSize=16,fontColor=16745623)
        

    输入命令提交:

    中间件输入的命令将会通过post提交到设置的url地址。

    **注意:**命令不要以sys 、mysql 、redis logging crontab 起始。

    # python为例
    from flask import Flask, request
    import MidProxySDK
    import json
    
    app = Flask(__name__)
    
    @app.route('/api/logging/input', methods=['POST'])   # 创建一个路由接口,接受中间件的命令
    def test_logging_input():
    
        input = str(request.get_data(), 'utf-8')
        input=json.loads(input)['input']                 # 获取输入的命令
    
        logging = MidProxySDK.MidLogging('http://192.168.1.2:9606/api/logging')   # 输出到中间件的日志
        logging.info('flask', 'had do:' + input)
    
        return ''
    

优势:

  1. 应用服务端代码不需要再引入和编写比如数据库连接管理类代码,降低工作量。易于初学者上手,比如对于通常使用的数据库增删改查,你只需要知道sql语句怎么写即可;
  2. 分离连接池、日志、任务线程等到独立的exe,利于主程序的稳定性;
  3. 便于对接,任何编程语言皆可,只要实现了http请求到本中间件,即可得到结果;
  4. 小巧,相较其他解释型编程语言实现本系列功能,本独立中间件效率更高、系统资源占用小,受环境依赖基本无(windows系统运行即可,无需任何依赖);

权限验证:

中间件程序有一个IP白名单。

终端用户直接与本中间件进行http通讯,将会使比如mysql等面临风险(若要解除此限制,请自行修改主程序源代码)。

强烈建议,白名单仅限本机内网或指定IP进行连接。

使用帮助:

  • 日志区右键,可打开辅助功能菜单;

  • 双击命令输入区,即可打开快捷输入辅助;

  • crontab任务管理与热加载;

  • 系统帮助

 

推荐:

不知如何安装mysql、redis等,可通过phpstudy,一键安装启动。

phpstudy:https://www.xp.cn/

SDK:

提供e、python、php、java的SDK,内容较为简单,仅是封装了请求。其他语言自行参考help的请求方式发送post对接。

  1. e语言

  1. python

  1. php

  1. java

感谢:

  • 服务端组件:HPsocket 官网
  • redis:使用的是E2EE的redis同步客户端。 官网

关于:

本程序遵从BSD开源协议,谢谢使用与参与改进,丰富功能。有问题欢迎留言,期望大佬们有使用到的不断完善与分享~

Github:https://github.com/Mruos/bl-mid-proxy

Gitee:https://gitee.com/burnlord/bl-mid-proxy

by:Mruos

QQ/wechat:812465371

web:burnlord.com

软件、插件、APP、小程序、网站……,可联系~

服务端守护程序

Mruos阅读(1085)

如下图,

主要为通过周期访问服务端的心跳地址来确认服务端程序是否在稳定运行,

如果连续3个周期未收到心跳数据返回则会重启服务端。

重启时会先尝试结束原程序(如果程序只是报严重错误还未退出的话),再启动程序。

程序请自行在启动后进行正常运行。

下载地址:

链接: https://pan.baidu.com/s/14Vv6gWbDFsWjtqtPmyd-Dw

提取码: yvbz 

UrlGo,静态页面更新助手

Mruos阅读(1150)

一、UrlGo 是做什么的

UrlGo,是为了方便快速的对数据网页进行更新而开发的在线页面更新工具。

简单理解:

如果你用过PicGo,就知道它多方便了。PicGo,是图片云床工具,可以便捷的把你的图片上传到自己的云储存中(如:七牛云、又拍云……),获得外链供其他网站、程序使用。

使用云图片,可以减少网站空间占用,其次云储存中图片都进行了CDN加速,可以有效提高你的网站效率,减少网站服务器压力。

本程序类似图片云床,只是它是把数据页面上传/更新到自己的云储存中。

如:

  1. 更新文件清单(update.json
  2. 应用公告(app.json
  3. 更新日志(updatelog.html
  4. css/js文件(wechatset.css

以及其他用于存放数据的静态简单页面。

二、程序运行

本小网站程序主要操作的仅有2个页面,为静态的可放在云储存中以便CDN加速打开。

示例站点:

创建:http://sup.burnlord.com/app/urlgo/creat.html

设置:http://sup.burnlord.com/app/urlgo/set.html

1、创建页

如下图,管理员可以通过管理员密码(授权码)来创建一个页面,并且可以为这个页面设置一个独立的密码(便于交给他人独立更新页面)。

本页面仅限管理员操作,用于便捷生成一个页面地址。

2、设置页

如下图所示,填写创建的url地址,创建时的密码(管理员密码也可)即可更新页面内容。

三、优势

1、创建页面、设置页面、数据内容页面都在upyun云储存,访问时皆被CDN进行了加速,速度快

2、页面都在云储存,不占自己网站的虚拟主机/服务器上空间

3、处理程序服务端是exe,布局简单,拖到云服务器使用即可。且可以任意设置端口,可不占用网站的80端口,不影响云服务器上其他程序

4、更新数据页面便捷了,这是重点!!!

四、附图

1、更新程序上的更新记录

2、服务端效果

五、价格

成品+免费搭建: 49¥     

建设需求:

  1. 一个域名且已备案;
  2. 又拍云开储存空间;
  3. 云服务器运行处理程序(exe);

成品服务端绑定云服务器,一次绑定即可。搭建请准备好所需条件(已备案域名、云服务器);

至于担心又拍云云储存费用,又拍云有免费额度,而且如果不放图片、视频等资源,免费的额度足够足够你平常使用。

下载程序     开通授权     搭建教程     upyun

所有源码: 99¥

如果需要自己扩展、学习,可买源码。程序不大,就算没有web基础,研究一下也可以上手改进。

联系作者QQ:812465371

bl-api-cloud,高性能可扩展API服务器

Mruos阅读(1974)

bl-api-cloud,轻云服务端

为轻量级可扩展的API服务端框架,主要用于响应http请求,开发者可通过开发自己的功能插件(.dll)进行加载以达到扩展。

丨用途

为其他程序、应用,提供便捷的http接口搭建功能,开发者从而不再需要使用大型、复杂框架。
(毕竟很多时候为了一个小接口不值得用主流语言的比如java的Spring或python的Flask去搭建服务端)
举个最简单的例子,有时在授权、防破解等应用中,我们需要获取准确的北京时间。一般我们为了方便会通过第三方来获取:
1、找个提供北京时间的第三方web页面;
2、写个模块或DLL,提取页面里的北京时间;
弊端:如果第三方页面出现问题,或web页面源码有变动,那么获取就会失败,进而影响了所有使用了此模块/DLL的程序。
其实,很简单,我们让自己的服务器自动同步了时间(一般都默认开启着),然后提供一个http接口即可,用自己的最稳定。
网页_访问 (“http://192.168.1.1:6680/api/sup/bjtime/10”)
我自己使用本框架已应用的领域:
如取北京时间等实用接口;
搭建自己的网络验证系统(用户注册、登录、程序使用授权);
搭建微信公众号后台程序(没错,完全没问题);
web页面搭建,只要有能力,你可以搭建出任意页面;(当然搭建企业级或大型复杂些的建议使用主流语言的主流框架,毕竟使用这个费劲死了,需要自己建设的方面太多)

丨特色

1、通讯组件使用的为HPsocket,强大、稳定

HP-Socket,是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统。
其Server 组件:基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。
应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。

2、双服务端支持(http、https)

 服务端启动端口自定义,默认http服务端80端口,https服务端443。当然本框架出发定性小众领域使用,可以设置其他端口,以免占用重要的web框架接口。

3、扩展便捷

扩展(插件)为DLL文件,只需放入根目录下的/plugins即可。DLL支持热加载与释放,无需终止服务端主程序即可进行DLL更新。
开发模板简单,一目了然,因为全部开源,开发者依然可以自主向插件传递更多可操作的主程序指针(通常模板自带功能足够使用了)。
每个插件都有自己的http访问请求处理域且可以是多个,插件之间不会互相冲突;
在两个示例demo中,对于/api/sup/bjtime根址的http请求,服务端只push到了bjtime.dll插件,对于/web的http请求,服务端只push到了web-demo.dll插件。
提供有2个扩展开发模板demo:
(1)bjtime
示例如何返回Get请求,功能性代码不足20行即可实现;
(2)web-demo
示例web页面返回,提供Get静态web目录文件回执和向服务端Post数据处理示例;
1、访问页面(http与https)

 

2、post数据

 

4、集成实用便捷功能

 自带集成多色日志输出、debug消息模式、访问频率保护等功能;
(1)多色日志输出
主程序的日志消息窗口,可以对应不同的日志显示不同的颜色,方便开发者一目了然的找到查看消息。如:
灰色(gray)的为debug消息;
红色(red)的为异常或错误信息;
绿色(green)的为收到的事件;
黄色(yellow)为重要系统消息;
当然可以自己设置其他颜色,以及如何输出。
注意: 多色输出使用的是超级编辑框组件,在高并发下是否对程序效率影响有待考证(组件可能拖累程序),请自行进行取舍、替换。
(2)日志记录
主程序集成一个简单日志记录模块,主程序运行每一次运行后都会在/log目录创建一个日志文件(名称以运行开始时间-运行结束时间.txt为名,方便开发者查找时段消息)。
开发者也可以在自己开发的插件中加入独立的日志记录。
(3)debug消息模式
主程序启动后通过输入sys debug onsys debug off可开关debug模式,在debug模式下,会输出显示更多的日志消息(修改主程序文件可以自己定义显示什么内容为debug类型的消息),以便于程序调试。
(4)访问频率保护
主程序自带了一个频率保护功能,可以自行设置频率。如对于同一IP的访问限制在最近n秒内不可以超过i次。此功能用的自己简单设计的一个Belt模型,小众使用足够,高度使用下,开发者可根据实际需求决定是否自己去设计类似功能。

5、心跳包异常监测

 为了应对服务端布局在云服务器上异常退出的情形,用户可以通过发送Get心跳包的请求来确认服务端运行状态,发生异常可重启它。本框架目录下有个示例demo。
用户可以自己设置心跳包地址,默认/api/this/heart

6、web服务端

 可以用于构建简单web页面,与web页面交互,理论上只要你精通web前端及后端处理逻辑,可以搭建(不过有这能力肯定不是用易语言搭建了)。
示例开发demo(plug-demo-web.e)提供了一个示例参考,可以搭建web页面,当然专业web设计等请移步使用主流语言的成熟框架。
参考上面图片。

7、命令行式操作

 最大化简化了服务端的UI界面(毕竟后端的东西),提供命令行式命令输入操作,除了系统前缀的命令,其他可推送到每个插件;
开发者可以在自己的插件里获取主程序输入的命令,然后进行相关处理。

8、开发难度低

 完整开源,包含主程序在内上手难度极低,代码注释齐全,结构明晰;也可以作为网络应用、DLL插件类型热加载释放等学习参考项目。

 

丨使用协议

本框架遵从BSD开源协议

可以任意使用本框架及代码进行二次开发,开发后产品可以闭源,开发源码主文件需要注释版权引用说明;

不可以使用本框架作者信息进行推广、营销;

 

丨下载

 

丨案例贴图

1、微信公众号后台程序

 

2、网络验证系统,用户登录

 

丨其他

by: Mruos

QQ/微信: 812465371

QQ群: 465021903

web: www.burnlord.com

 

使用问题、建议、Bug反馈,跟踪更新等欢迎加群交流~

本程序依然存在不足之处,欢迎各大佬批评、指出,一起完善。

 

丨支持一下,给个打赏~

 

bl文本处理器

Mruos阅读(1082)

个人平常常用的   文本处理工具,主要有一些基本的定位、查询、替换、简单的批量文本(一般批量代码)生成,还有其他的。

示例如下:

下载地址:

tools文件夹下面:  https://pan.baidu.com/s/1i5RyUaT

源码私聊联系我

QQ/微信:812465371

【开源】BLupdate2.0,通用更新程序

Mruos阅读(1718)

丨简介

BLupdate2.0,通用更新程序。

【版本】

相比1.0版,本版主要是利用的绝对web路径进行更新,所以,如果有使用FTP进行更新的,还是请参考1.0版1.0版介绍地址:http://blupdate.mydoc.io/。当然本版相比1.0版,做了很多的突破与改进。

【方式】

利用web页面储存版本json信息,使用MD5比对文件,通过http下载更新。

【特点】

1、更新器具有自更新能力;

2、更新器同时也是一个下载器,可以用于程序修复;

3、更新器具有更新前结束进程,更新后运行程序或者CMD命令;

4、更新器可以被其他程序进行调用,实现自动更新,更新完成后回调主程序;

5、支持绝对路径、相对路径、向上路径的文件更新;

【适用】

1、一切有更新需求的程序;

2、对如酷Q等机器人插件更新,做了特别演示。

丨界面

UI仅供参考,非主体内容,自己定义。

丨使用教程

(请全屏<双击进入全屏>,调到最高清晰度观看,建议wifi下看)

【告知】请先自行查看教程视频,教程中已经说明的问题再私人联系我,不给与解答。

在这里给简单列出一下更新配置文件(sup.json)的说明。

【sup.json】

更新程序会从web读取,更新的配置信息,配置信息为一个json文件json示例地址:http://www.burnlord.com/s/blupdate/sup.json。开发者需要自己去配置更新信息。json在线解析:http://qqe2.com/

json字段说明如下,其他问题,请参考教程视频。

本json字段中的文件清单,有专门的文件清单生成器,使用方法见视频。

其他相关问题,请参考教程视频以及源码中的注解。

丨下载地址

https://pan.baidu.com/s/1i5RyUaT

版权所有,违版必究。

—————————————————-

by:Mruos

QQ:812465371

赞助支付宝:13834695729

插件 工具 机器人

联系我们