精华内容
下载资源
问答
  • 当客户设置用WEB 页面配置wifi 工作的模式的时候,会发发现模式一直设置的不正确。做为高通AE 工程师,我们通常会建议客户使用uci 进行wifi 配置。但是web 设置的问题一直没有修正。 刚好有点时间抽空了解openwrt /...

    WIFI 技术从WIFI5 发展的 WIFI 6, 高通的QSDK 从SPF1 已经release SPF11.1 版本。当客户设置用WEB 页面配置wifi 工作的模式的时候,会发发现模式一直设置的不正确。做为高通AE 工程师,我们通常会建议客户使用uci 进行wifi 配置。但是web 设置的问题一直没有修正。

    刚好有点时间抽空了解openwrt /qsdk的web 设置框架,修正了了这个设置显示问题。

    目录

           1.LUCI 概述

           2 WIFI 设置的相关model和view

           3  AC和AX配置模式支持

      3.1增加对AC和AX信道的支持:

      3.2 增加 hw模式的支持: 

       ​3.3 增加带宽模式的支持 

      3.4 增加band 模式配置的支持

    4. 测试和功能验证:


    1.LUCI 概述

    目前OPENWRT的显示采用 luci 架构,Luci 框架内基于 lua + uci 库编写了 CBI 框架 – CBI 框架是 Luci 的子框架。

    CBI 框架加载入 uci 配置文件相应的 lua 模块,对于 HTTP GET 能够以 CBI 框架的运行逻辑将 UCI 配置文件转化渲染成用于 Web 前端显示的 HTML 做 HTTP Response;同样对 HTTP POST 也以 CBI 框架运行的逻辑将 form 表单修改写入到 UCI 配置文件中(和生效)。

    LuCI是OpenWrt上的Web管理界面,LuCI采用了MVC三层架构,使用Lua脚本开发,所以开发LuCI的配置界面不需要编辑任何的Html代码,除非想自己单独去创建网页(View层),否则我们基本上只需要修改Model层就可以了。

    lucidir:/usr/lib/lua/luci

    LuCI安装可通过您的网络服务器通过/cgi-bin/luci访问

    可以参考 github:https://github.com/openwrt/luci/wiki/ModulesHowTo

    或官方http://luci.subsignal.org/trac/wiki/Documentation/ModulesHowTo

     

    2 WIFI 设置的相关model和view

    WIFI 设置的相关逻辑 都是 wifi.lua 中实现的。

    /usr/lib/lua/luci/model/cbi/admin_network/wifi.lua

    /usr/lib/lua/luci/view/cbi/wireless_modefreq.htm  

    在wifi.lua 里 可以通过调用luci.log  ,实现log的信息输出:

    local log = require "luci.log"
    log.print("hugo debug")

    下面的两个函数 主要完成 get/set uci配置文件的内容

    function ch.cfgvalue(self, section) 

    function ch.write(self, section ,value)

    • ch = s:taboption("general", Value, "_mode_freq", '<br />'..translate("Operating frequency"))
              ch.hwmodes = iw_modes                                                                          
              ch.freqlist = iw.freqlist                                                                             
              ch.template = "cbi/wireless_modefreq"                                                                      
                                                                                                            
              function ch.cfgvalue(self, section)                                                                                                
                                                                                log.print("cfgvalue")                                                          
              log.print(section)                                                            
              hw =m:get(section,"hwmode")                                                       
              ch = m:get(section,"channel")                                                  
              ht = m:get(section,"htmode")                                                     
              log.print(hw)
              log.print(ht)
              log.print(ch)                                                                     
      
                                                                                                     
                      return {                                                                       
                              m:get(section, "hwmode") or "",                                       
                              m:get(section, "channel") or "auto",                                        
                              m:get(section, "htmode") or ""                                              
                      }                                                                              
              end                                               
      
      function ch.formvalue(self, section)                                                        
                      log.print("ch.formvalue")                                                              
                                                                                                                    
                      log.print("hw_modes:")                                                                             
                      value1 = m:formvalue(self:cbid(section) .. ".channle")                                             
                      log.print(value1)                                                                                  
                      value2 = m:formvalue(self:cbid(section) .. ".htmode")                                              
                      log.print(value2)                                                                         
                                                          
                                                                                                     
                      log.print_r(hw_modes,5)                                                       
                                                                                              
                      return {                                                                            
                              (hw_modes.ad and "11ad") or (m:formvalue(self:cbid(section) .. ".band") or (hw_modes.g and "11g" or "11a")),
                              m:formvalue(self:cbid(section) .. ".channel") or "auto",                                                    
                              m:formvalue(self:cbid(section) .. ".htmode") or ""                                                          
                      }                                                                                                                   
              end                                                                                                                         
                                                                                                                                          
              function ch.write(self, section, value)                                                                                     
                                                                                                                                          
                      log.print("ch.write--->")                                                                                           
                      log.print(value[1],value[2],value[3])                                               
                                                                                                     
                      m:set(section, "hwmode", value[1])                                             
                      m:set(section, "channel", value[2])                                              
                      m:set(section, "htmode", value[3])                                             
              end                                      


    taboption() 指定了该 Option 类在指定的 section->tab 下,并返回 option 实例。
    option:write 方法重写定义了该方法的内容。write 方法在 post form 时被调用 。
    m.uci:set, m.uci:delete 这些即使用 lua 的 uci 模块操作 。
     

     

    在 wireless_modefreq.htm ,主要是通过 html 和 javascript 语言实现的。

     调试方式 可以使用 firefox 浏览器 进入debug 模式(F12),可以进行常规的代码调试。

     在代码添加 console.log 可以输出log

    		console.log( "cbi init wifi ")
    		console.log(id)
    		console.log( mode)
    		console.log(band)
    		console.log(chan)
    		console.log(bwdt)

     

    简单的分析:

    从wifi.lua 那里获得wifi band 的支持的 hwmode和 信道list。

    <script type="text/javascript">//<![CDATA[
        var freqlist = <%= luci.http.write_json(self.freqlist) %>;
        var hwmodes  = <%= luci.http.write_json(self.hwmodes) %>; 

     页面加载后会执行 cbi_init_wifi(id)

    <script type="text/javascript">cbi_init_wifi('<%= cbid %>');</script>

    点击mode 按钮,会执行 cbi_toggle_wifi_mode(),更新模式 的设置值

    <%:Mode%><br />
        <select style="width:auto" id="<%= cbid %>.mode" name="<%= cbid %>.mode" onchange="cbi_toggle_wifi_mode('<%= cbid %>')"></select>

    点击 band list,会执行 cbi_toggle_wifi_band()更新band 的设置值

        <%:Band%><br />
        <select style="width:auto" id="<%= cbid %>.band" name="<%= cbid %>.band" onchange="cbi_toggle_wifi_band('<%= cbid %>')"></select>


    点击 band list,会执行 cbi_toggle_wifi_band()更新band 的设置值
     

       <%:Channel%><br />
        <select style="width:auto" id="<%= cbid %>.channel" name="<%= cbid %>.channel"></select>
    </label>

    点击 htmode list,会执行 cbi_toggle_wifi_band()更新band 的设置值
     

     <%:Width%><br />
        <select style="width:auto" id="<%= cbid %>.htmode" name="<%= cbid %>.htmode"></select>
    </label>

     

    3  AC和AX配置模式支持

      

      3.1增加对AC和AX信道的支持:

    var channels = {
    		'11g': [
    			'auto', 'auto', true
    		],
    		'11a': [
    			'auto', 'auto', true
    		],
    		'11ac': [
    			'auto', 'auto', true
    		],
    		
    		'11axa':[
    			 'auto','auto',true
    		],
    		'11axg':[
    			  'auto','auto',true
    		]
    	
    	}

      3.2 增加 hw模式的支持: 

    	var modes = [
    		'', 'Legacy', true,
    		'n', 'N', hwmodes.n,
    		'ac', 'AC', hwmodes.ac,
    		'ax', 'AX', true
    	];

      

     3.3 增加带宽模式的支持 

    var htmodes = {
    		'':   [
    			'', '-', true
    		],
    		
    		'n':  [
    			'HT20', '20 MHz', true,
    			'HT40', '40 MHz', true
    		],
    		'ac': [
    			'HT20', '20 MHz', true,
    			'HT40', '40 MHz', true,
    			'HT80', '80 MHz', true,
    			'HT160', '160 MHz', true
    		]
    		,
    		'ax': [
    	        	'HT80', '80 MHz', true,
    			'HT160', '160 MHz', true
    		]
    	};

      3.4 增加band 模式配置的支持

    var bands = {
    		'':   [
    			'11g', '2.4 GHz', (channels['11g'].length > 3),
    			'11a', '5 GHz', (channels['11a'].length > 3)
    		],
    		'n':  [
    			'11g', '2.4 GHz', (channels['11g'].length > 3),
    			'11a', '5 GHz', (channels['11a'].length > 3)
    		],
    		'ac': [
    			'11a', '5 Ghz ', (channels['11a'].length > 3),
    			'11ac','5 AC  ', (channels['11ac'].length >3)
    		]
    		 ,
    		
    		'ax': [
    			'11axg', '2.4 Ghz' , (channels['11axg'].length > 3),
    			'11axa', '5 Ghz' , (channels['11axa'].length > 3)   
    		]
    	};

    3.5 hw mode 的判断和初始化

     

    var config_mode =  <%= luci.http.write_json(self.map:get(section, "hwmode")) %>
    		
    		if( /11axa|11axg/.test(config_mode))
    			mode.value = 'ax';
    		else if(/11ac/.test(config_mode))
    			mode.value = 'ac';
    		else if(/11a/.test(config_mode))
    			mode.value = 'a';
    		else if (/HT20|HT40|HT80|HT160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
    			mode.value = 'ac';
    		else if (/HT20|HT40/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
    			mode.value = 'n';
    		else
    			mode.value = '';

    测试和功能验证:

     

    修改后,要删除 平台上的  rm -fr /tmp/luci-*   生成的index文件。

    浏览器的进行刷新就可以了 修改后的效果。

    uci的配置如下:

    uci show wireless
    wireless.wifi0=wifi-device
    wireless.wifi0.type='qcawificfg80211'
    wireless.wifi0.macaddr='00:03:7f:12:1b:07'
    wireless.wifi0.channel='auto'
    wireless.wifi0.hwmode='11axa'
    wireless.wifi0.htmode='HT80'
    wireless.@wifi-iface[0]=wifi-iface
    wireless.@wifi-iface[0].device='wifi0'
    wireless.@wifi-iface[0].network='lan'
    wireless.@wifi-iface[0].mode='ap'
    wireless.@wifi-iface[0].ssid='OpenWrt'
    wireless.@wifi-iface[0].encryption='none'
    wireless.wifi1=wifi-device
    wireless.wifi1.type='qcawificfg80211'
    wireless.wifi1.channel='auto'
    wireless.wifi1.macaddr='00:03:7f:12:23:8f'
    wireless.wifi1.hwmode='11axg'
    wireless.wifi1.htmode='HT160'
    wireless.@wifi-iface[1]=wifi-iface
    wireless.@wifi-iface[1].device='wifi1'
    wireless.@wifi-iface[1].network='lan'
    wireless.@wifi-iface[1].mode='ap'
    wireless.@wifi-iface[1].ssid='OpenWrt'
    wireless.@wifi-iface[1].encryption='none'

     欢迎下载配套代码。

    展开全文
  • docker web-GUI DockerUI和Shipyard对比

    千次阅读 2017-07-10 16:43:34
    web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理 差异 dockerui能修改容器配置 dockerui能管理和新增网络 dockerui能新增volume Shipyard能创建容器 Shipyard能拉取镜像 Ship

    DockerUI和Shipyard对比

    相似

    基于Docker API,提供等同Docker命令行的大部分功能,支持container管理,image管理。

    web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理

    差异

    dockerui能修改容器配置
    dockerui修改容器

    dockerui能管理和新增网络
    dockerui能管理和新增网络

    dockerui能新增volume
    dockerui能新增volume

    Shipyard能创建容器
    Shipyard创建容器

    Shipyard能拉取镜像
    Shipyard能拉取镜像

    Shipyard能多主机管理,支持节点动态集群,可扩展节点的规模(swarm、etcd方案)
    Shipyard能多主机管理

    Shipyard能管理仓库
    Shipyard能管理仓库

    Shipyard能实现容器的伸缩、终端、stats等功能
    Shipyard能实现容器的伸缩、终端、stats等功能

    DockerUI

    优点

    支持容器批量操作,可以修改容器配置(需要重启容器),查看日志、top等命令
    支持image管理
    支持网络管理,可以创建、修改等
    支持镜像管理
    支持查看拓扑
    

    缺点

    不支持多主机
    不支持容器创建
    不支持容器终端
    

    部署

    docker run -itd --memory 1g --cpuset-cpus=0 --name dockerui --hostname dockerui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
    

    http://宿主机IP:9000

    Shipyard

    Shipyard是在Docker Swarm实现对容器、镜像、docker集群、仓库、节点进行管理的web系统。

    特性

    Shipyard是完全基于Docker API,支持container管理、engine管理(一个engine就是监听tcp端口的docker daemon)。

    优点

    支持多主机;
    容器管理:除了管理生命周期外,还支持批量、终端、log、新增、伸缩、stats等等。
    镜像管理:支持修改tag、pull等
    新增仓库
    

    缺点

    不支持修改容器配置。
    

    部署

    Shipyard是一款开源的图形化的Docker管理工具,现在官方有了自动安装脚本,使用非常方便。

    服务器端

    curl -s https://shipyard-project.com/deploy | bash -s
    

    Shipyard 启用了7个容器,默认访问端口是8080,默认用户名和密码是admin 和 shipyard

    节点

    加入服务器

    curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://服务器端地址:4001 bash -s
    

    退出服务器

    curl -sSL https://shipyard-project.com/deploy | ACTION=remove bash -s
    

    了解Shipyard

    几个概念

    engine

    一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp端口的docker daemon。

    shipyard管理docker daemon、images、containers完全基于Docker API,不需要做其他的修改。

    另外,shipyard可以对每个engine做资源限制,包括CPU和内存;

    因为TCP监听相比Unix socket方式会有一定的安全隐患,所以shipyard还支持通过SSL证书与docker后台进程安全通信。

    rethinkdb

    RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、
    扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。

    Shipyard组件

    shipyard是由shipyard控制器以及周围生态系统构成,以下按照deploy启动顺序进行介绍(下面几个就是shipyard使用脚本安装后,启动的几个容器名)

    RethinkDB

    deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息

    Discovery

    为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd。

    shipyard_certs

    证书管理容器,实现证书验证功能

    Proxy

    默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCP到Docker监听的UNIX Socket。

    Swarm Manager

    Swarm管理器

    Swarm Agent

    Swarm代理,运行在每个节点上。

    Controller

    shipyard控制器,Remote API的实现和web的实现。

    展开全文
  • DockerUI和Shipyard对比 相似 ...web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理 差异 dockerui能修改容器配置 dockerui能管理和新增网络 dockerui能新增volume Shi...

    DockerUI和Shipyard对比

    相似

    基于Docker API,提供等同Docker命令行的大部分功能,支持container管理,image管理。

    web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理

    差异

    dockerui能修改容器配置
    dockerui修改容器

    dockerui能管理和新增网络
    dockerui能管理和新增网络

    dockerui能新增volume
    dockerui能新增volume

    Shipyard能创建容器
    Shipyard创建容器

    Shipyard能拉取镜像
    Shipyard能拉取镜像

    Shipyard能多主机管理,支持节点动态集群,可扩展节点的规模(swarm、etcd方案)
    Shipyard能多主机管理

    Shipyard能管理仓库
    Shipyard能管理仓库

    Shipyard能实现容器的伸缩、终端、stats等功能
    Shipyard能实现容器的伸缩、终端、stats等功能

    DockerUI

    优点

    支持容器批量操作,可以修改容器配置(需要重启容器),查看日志、top等命令
    支持image管理
    支持网络管理,可以创建、修改等
    支持镜像管理
    支持查看拓扑
    

    缺点

    不支持多主机
    不支持容器创建
    不支持容器终端
    

    部署

    docker run -itd --memory 1g --cpuset-cpus=0 --name dockerui --hostname dockerui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
    

    http://宿主机IP:9000

    Shipyard

    Shipyard是在Docker Swarm实现对容器、镜像、docker集群、仓库、节点进行管理的web系统。

    特性

    Shipyard是完全基于Docker API,支持container管理、engine管理(一个engine就是监听tcp端口的docker daemon)。

    优点

    支持多主机;
    容器管理:除了管理生命周期外,还支持批量、终端、log、新增、伸缩、stats等等。
    镜像管理:支持修改tag、pull等
    新增仓库
    

    缺点

    不支持修改容器配置。
    

    部署

    Shipyard是一款开源的图形化的Docker管理工具,现在官方有了自动安装脚本,使用非常方便。

    服务器端

    curl -s https://shipyard-project.com/deploy | bash -s
    

    Shipyard 启用了7个容器,默认访问端口是8080,默认用户名和密码是admin 和 shipyard

    节点

    加入服务器

    curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://服务器端地址:4001 bash -s
    

    退出服务器

    curl -sSL https://shipyard-project.com/deploy | ACTION=remove bash -s
    

    了解Shipyard

    几个概念

    engine

    一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp端口的docker daemon。

    shipyard管理docker daemon、images、containers完全基于Docker API,不需要做其他的修改。

    另外,shipyard可以对每个engine做资源限制,包括CPU和内存;

    因为TCP监听相比Unix socket方式会有一定的安全隐患,所以shipyard还支持通过SSL证书与docker后台进程安全通信。

    rethinkdb

    RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、
    扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。

    Shipyard组件

    shipyard是由shipyard控制器以及周围生态系统构成,以下按照deploy启动顺序进行介绍(下面几个就是shipyard使用脚本安装后,启动的几个容器名)

    RethinkDB

    deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息

    Discovery

    为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd。

    shipyard_certs

    证书管理容器,实现证书验证功能

    Proxy

    默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCP到Docker监听的UNIX Socket。

    Swarm Manager

    Swarm管理器

    Swarm Agent

    Swarm代理,运行在每个节点上。

    Controller

    shipyard控制器,Remote API的实现和web的实现。

    转载于:https://www.cnblogs.com/lykops/p/7348023.html

    展开全文
  • 专注于Web应用程序,让DECK为您处理服务器配置。 在此处下载应用程序: : (按照“发行”页面上的说明进行操作) 安装 创建和启动堆栈 打开代码并连接到堆栈 创建自己的自定义图像,并通过编辑释放Laradock和DECK...
  • 1、修改config\web.xml中一个listings中 <param-value>...manager输入正确密码后还是无法访问正确页面,需要在conf/tomcat-users.xml文件中添加manager和manager-gui的用户名和密码配置 ...

    1、修改config\web.xml中一个listings中

     <param-value>true</param-value>
    

    在这里插入图片描述

    2、html文件不能直接放到webapps下,需要在webapps下新建一个文件夹(英文的),然后把html文件放到这个文件夹下,再在浏览器地址栏输入路径就可以。
    在这里插入图片描述


    manager输入正确密码后还是无法访问正确页面,需要在conf/tomcat-users.xml文件中添加manager和manager-gui的用户名和密码配置
    在这里插入图片描述

    展开全文
  • 小结WEB接口测试

    千次阅读 2018-03-16 22:20:07
    这是一个针对某款智能设备的WEB API的测试,设备内运行OpenWRT系统,内部使用一套节点来记录很多设备信息和配置信息,设备也提供一个WEB GUI页面,可以通过打开其主页来做配置,也提供了一套WEB 接口API,来实现远程...
  • tomcat相关配置

    2019-06-28 16:12:55
    tomcat 相关配置 1.web端账号管理 ...标签下加入如下配置可使用web页面进行管理 <user username="admin" password="123456" roles="manager-status,manager-gui,admin-gui"/> 角色与功能...
  • Tomcat 用户密码配置

    2019-09-27 16:41:32
    一般情况下,tomcat默认不开放用户对tomcat 主页的服务器状态,应用状态等页面的访问,意思就是没有权限通过web管理端控制服务器设置 如果需要打开配置需要进行用户权限配置配置文件在/conf/tomcat-user.xml...
  • tomcat使用和配置

    2015-07-18 14:23:00
    安装tomcat以后可以直接使用web来进行管理  1.Web管理: ... 在tomcat安装目录\conf\tomcat-users.xml 进行用户配置,并将用户分配给页面页面提示的组“ <role rolename="admin-gui"/&...
  • tomcat的首次登录配置

    2019-09-24 02:10:57
    登录tomcat时需要输入账号密码,而账号密码需要在配置文件中配置好才能使用。 ... 这个界面的大致意思是: ...您无权查看此页面。 如果您尚未更改任何配置文件,请检查安装中的文件conf / ...例如,要将manager-gui...
  • 配置简单:有GUI页面 分布式:可以轻松的在多台机器上分配工作 简易安装:是一个基于java的应用程序,多个平台可以运行 Junit报告:各种图形化页面显示数据 插件化:支持上千种插件 继承EMail/RSS/IM:可以将集成...
  • Hive HWI 安装及配置

    千次阅读 2016-10-11 11:16:22
    Hive Web Interface(HWI)简介:Hive自带了一个Web-GUI,功能不多,可用于效果展示。 由于hive-bin包中没有包含HWI的页面,只有Java代码编译好的jar包:hive-hwi-1.2.0.jar 因此需要下载源码从中提取jsp文件并...
  • 【CRM】02- WEB UI 界面布局简介

    千次阅读 2017-05-08 16:07:29
    在SAP CRM产品线中,从...传统的SAP GUI在SAP CRM系统中仅仅用来进行系统配置和程序开发。 大体就是下图这个样子,虽然SAP CRM里面有很多业务角色和业务场景,但是所有的页面基本上都是遵循下面这个样式。这个看起来
  • 3.要进入上个界面就得在tomcat配置这个文件tomcat-user.xml &lt;role rolename="manager-gui"/&gt; &lt;user username="admin" password="admin" roles="manager-...
  • k8s dubbo微服务之maven配置基于RBAC认证的一个GUI资源管理插件两个常用版本:v1.8.3和v1.10.1K8S如何基于RBAC进行鉴权用户账户服务账户角色权限基于角色进行权限管理查看Jenkins通过web页面的命令行工具进行操作,...
  • Hive Web Interface(HWI)简介:Hive自带了一个Web-GUI,功能不多,可用于效果展示,如果没有安装Hue的话,是个不错的选择。 由于hive-bin包中没有包含HWI的页面,只有Java代码编译好的jar包:hive-hwi-1.0.1....
  • 重构后的 Vue Cli 3.0 正式发布,带来了丰富的内置功能(预配置 Wepack、支持 PostCSS、多页面模式等),做到了真正的「开箱即用」。此外还包括:可扩展的插件系统、图形用户界面 (GUI)、即时原型(Instant ...
  • 由于学习需要,下载了xampp进行部署tomcat等web服务器,然后遇上了坑, 希望能分享一下,给遇见一样的人带来一丁点帮助。 1、在安装完xampp之后,对端口占用问题进行解决:(每一次配置好后最好重启) 2、按照...
  • MegaRAID是LSI的一款命令行RAID管理工具,我们以往配置RAID时,都是通过WEB页面配置,步骤繁琐,而且配置完毕还需要重启操作系统。MegaRAID工具可以让我们在命令行去配置管理RAID,效率高,使用起来非常awesome。...
  • 它具有一个简单的Web UI-要启动它,请运行“ hindsight_gui.py”(或在Windows上,打包为“ hindsight_gui.exe”),然后在浏览器中访问 : 您需要填写的唯一字段是“配置文件路径”。 这是您要分析的Chrome配置...
  • mybatis-plus代码生成器

    2019-06-28 11:47:46
    项目clone下来之后,参照readme改一下配置就好了。 ...什么GUI的,web页面的,还有各种收费好几百的高大上的,看的我是一脸懵逼。然后试用了一下,发现都不是很满意。。。GUI的各种报错,各种...
  • 若想要在渲染进程中使用dialog等GUI模块需要通过remote模块进行链接(remote 模块为渲染进程(web页面)和主进程通信(IPC)提供了一种简单方法) 官方文档写着几种情况下remote模块会被禁用: 而BrowserWindow配置...
  • 这并不是因为SAPgui安装不完整,而是因为SAP的帮助系统本身就不包含在GUI中,而是需要单独配置的功能。 使用事务码SR13,打开“更改视图"管理:显示SAP库"”功能。进入第二个维护试图——PlainHtmlHttp,这是通过Web...
  • magento性能优化14个快速加载web页面的技巧:减少HTTP请求数使用CDN增加过期头信息gzip压缩传输内容将css样式表放在页首将js文件放在页尾不使用css表达式尽量少用内联式的css和js,将其放置在外部资源文件中减少DNS...
  • Electron 可以使用纯 JS 来创建桌面应用,使用 Web 页面作为 GUI,相当于一个被 JS 控制的,精简版的 Chromium 浏览器。 Electron 基于 Chromium 和 Node.js ,所以使用之前需要搭建 Node.js 开发环境。 安装 Node....

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

webgui配置页面