- 网络工具Fing Network Tools v12.10.2专业版,WiFi设备扫描神器
米豆学社
网络工具
[软件名称]:网络工具FingNetworkTools[软件大小]:49.2MB[下载通道]:夸克盘|迅雷盘软件介绍《FingNetworkTools》v12.10.2专业版|WiFi安全卫士,一键检测所有联网设备✨核心功能设备扫描–实时发现WiFi网络中的所有连接设备,识别陌生入侵者⚡网络诊断–速度测试+延迟分析,找出Netflix卡顿真凶️安全防护–入侵检测+防火墙功能,守护家庭网络安全高级工
- 最实用的selenium使用指南
selenium使用一环境搭建下载seleniumpipinstallselenium下载浏览器驱动(以Edge为例)在设置中找到当前Edge版本号,在[MicrosoftEdgeWebDriver-MicrosoftEdgeDeveloper](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)中下载对应版
- 抓包工具fiddler详细使用教程
金丝猴也是猿
httpudphttpswebsocket网络安全网络协议tcp/ip
抓包工具的使用技巧与配置指南各位做测试的同学想必对抓包工具并不陌生,Fiddler是大家常用的工具之一,但除了Fiddler,还有一款功能强大的抓包工具——SniffMaster(抓包大师),它在某些场景下表现尤为出色。今天我们将结合Fiddler和SniffMaster的使用技巧,为大家提供一份全面的抓包配置指南。Web端抓包配置Fiddler的HTTPS配置打开Fiddler,进入Tools-
- jenkins 自动化部署之后,不允许在工具上查看源代码
小疯仔
jenkins自动化运维
先来展示一下最终的效果在没有如何操作之前的时候,这个Jenkins部署完成之后会在工具上留有源代码,能点击进去,部署到甲方的服务器上的时候会被看到,这样就会造成源码泄露解决方案可以在Jenkinsfile文件中加入以下代码pipeline{agentanytools{nodejs'nodejs16.20.2'}//步骤stages{}//新增post阶段:在流水线结束后清理工作区post{alwa
- 深入企业内部的MCP知识(二):FastMCP客户端三大核心能力深度解析:资源、工具与提示的全场景实践
炼丹上岸
大模型#MCPmicrosoft人工智能python交互mcp
引言:MCP协议交互的“三驾马车”在ModelContextProtocol(MCP)的技术生态中,资源(Resources)、工具(Tools)与提示(Prompts)构成了客户端与服务器交互的核心支柱。FastMCP通过统一的API设计,将这三者转化为可直接调用的编程接口,既隐藏了底层协议的复杂性,又保留了高度的灵活性。本文将从技术原理、实战案例到性能优化,系统拆解这三大能力的使用方法与协同逻
- 爬虫-正则表达式
打酱油的;
python自动化+爬虫爬虫python
在线正则表达式测试OSCHINA.NET在线工具,ostools为开发设计人员提供在线工具,提供jsbin在线CSS、JS调试,在线JavaAPI文档,在线PHPAPI文档,在线Node.jsAPI文档,LessCSS编译器,MarkDown编译器等其他在线工具https://tool.oschina.net/regex/
- Cython提高破解和反编译的门槛
Cython提高破解和反编译的门槛文章目录Cython提高破解和反编译的门槛一、环境配置1.1安装必须的依赖1.2安装MicrosoftC++BuildTools二、修改代码后缀2.1将你的.py文件修改为.pyx文件2.2新建入口文件2.3编写setup.py2.4编译二进制模块2.5用PyInstaller分别打包入口文件三、清理无用文件,保留发布文件四、遇到的问题与解决方法4.1缺少库4.2
- 我的更新数据操作(兼容两种模式,一种是updatesoftware,一种是UpdateSoftAPI)
kingwebo'sZone
c#
1,在静态类下面写入更新文件的地址://////当前更新执行文件夹(执行更新)///publicstaticstringUpdateEXEPath=Application.StartupPath+"\\Tools\\UpdateSoftAPI\\UpdateSoftAPI.exe";//////上一次更新执行文件所在文件夹(删除)///publicstaticstringUpdateEXELast
- ubuntu20.04自建代码托管平台-Gitlab
HuangFJ-
VMware虚拟机ubuntulinux服务器git
介绍由于gitlab需要在linux操作系统部署,因此这篇文章涉及以下关键点1.虚拟机VMware安装ubuntu2.ubuntu修改下载源问题3.openssh、vim、net-tools等插件下载4.ubuntu下载gitlab免费版:5.gitlab相关命令6.使用浏览器访问gitlab7.初始密码/修改密码8.如何新增用户并发送邮件环境ubuntu-20.04.1-desktop-amd6
- 《解决 Idea Gradle Build 中 Build Tools 相关问题》
只因在人海中多看了你一眼
摸索学习心得ideandroidstudio
在使用IntelliJIDEA进行Android项目开发时,最近在执行Gradlebuild过程中遇到了一个棘手的问题:问题现象在运行Gradlebuild时,出现了这样的错误提示:Couldnotdeterminethedependenciesoftask‘:app:compileReleaseJavaWithJavac’.InstalledBuildToolsrevision35.0.0isc
- (部署服务器系列四)部署Vue步骤(使用nodejs)
玄尺_007
#个人博客项目#前端服务器vue.js运维
1.构建项目(打包Vue):构建前设置main.js//关闭开发模式提示Vue.config.devtools=falseVue.config.productionTip=false设置指向的服务端后端ip和端口,我的常量属性统一放在了constants.jsexportconstAIOS_BASE_URL="http://192.168.0.111/api"exportconstIMG_BASE
- Vscode GStreamer插件开发环境配置
karmueo46
深度学习服务vscodeidegstreamerc++
概述本教程使用vscode和Docker搭建Gstreamer2.24的开发环境,可以用于开发调试Gstreamer程序或者自定义插件开发。1.vscode依赖插件C/C++ExtensionPack(ms-vscode.cpptools-extension-pack):该插件包包含一组用于VisualStudioCode中C++开发的流行扩展,主要包括对C/C++的语言支持,C/C++扩展UI主
- PaddleOCR 3.0全面解析:五大核心能力与实战应用指南
经优英
PaddleOCR3.0全面解析:五大核心能力与实战应用指南PaddleOCRAwesomemultilingualOCRtoolkitsbasedonPaddlePaddle(practicalultralightweightOCRsystem,support80+languagesrecognition,providedataannotationandsynthesistools,suppor
- 【SpringBoot】Spring Boot热部署方案的 终极深度解析,覆盖IDEA配置、JRebel原理级实操、DevTools内核机制及生产级调优策略,共分6大模块
夜雨hiyeyu.com
springbootintellij-idea后端mavenjavaideaspring
SpringBoot热部署方案的终极深度解析,覆盖IDEA配置、JRebel原理级实操、DevTools内核机制及生产级调优策略一、热部署核心原理与架构1.JVM类加载机制限制2.字节码热替换技术对比二、JRebel企业级部署全流程1.深层配置指南2.多模块项目热加载3.热替换失败解决方案三、DevTools内核级调优1.类加载隔离机制2.资源热更新策略3.生产级问题诊断四、高效协同工作流1.ID
- ipmitool java版本_IPMITool使用
梁豆子
ipmitooljava版本
内核模块加载ipmi_devintf和ipmi_si后,会生成/dev/ipmi0。ps:获取传感器信息请安装lm-sensors,然后运行sensors-detect。常见ipmitool$ipmitoolbmcresetcold#ResetBMC/DRACtodefault$ipmitool–Iopenbmcinfo#checkBMCinfo$ipmitoolsel#checkSELlog$i
- ipmitool 使用简介(ipmitool sel list & ipmitool sensor list)
itmanll
运维服务器
常用IPMI命令扩展使用ipmitool查看传感器信息ipmitool是一个用于管理IPMI(IntelligentPlatformManagementInterface)设备的命令行工具,可用于监控服务器硬件状态,包括传感器数据。运行以下命令可以列出所有传感器信息:ipmitoolsensorlist常用传感器监控命令查看特定传感器的详细信息:ipmitoolsensorget"SensorNa
- 解决更新python版本后,虚拟环境不可用的问题
Superstarimage
diffusers编程pythonpython人工智能开发语言
因为安装xformers,需要额外加装triton,而triton需要的python版本(3.10)高于我当前虚拟环境的版本(3.8),因此博主手动提升了当前虚拟环境的版本:condainstallpython=3.10结果应用该虚拟环境时,始终报如下错误:(TrainControlNet)F:\XYX\Documents\SpongeCakeInverse\AITools\the3rdparty
- 国内Ubuntu访问不了github等外网
weixin_66009678
ubuntulinux运维
各位小伙伴们,大家好呀。大家是不是经常遇到访问不了外网的情况呀。在Ubuntu中可以这样做。访问这个网站网站测速-Ping检测-Trace查询-Dig查询-路由跟踪查询-tools.ipip.net,对于github.com,在这个网站输入github.com,会返回20.205.243.166然后在ubuntu上输入sudovi/etc/hosts然后增加如下:20.205.243.166git
- 构建未来交互体验:AG-UI 如何赋能智能体与前端通信?
ChaITSimpleLove
AG-UIAIAgent智能体与用户交互协议智能体与用户交互标准化CopilotKit开放的轻量的基于事件的协议
目录什么是AG-UI?⚙️AG-UI主要解决什么问题?AG-UI介绍️核心组件1.协议层(ProtocolLayer)2.标准HTTP客户端(StandardHTTPClient)3.消息类型(MessageType)4.运行Agent(RunningAgent)5.状态管理(StateManagement)️6.工具和交接(ToolsandHandoff)事件(Events)MCPvsA2Avs
- LangChain核心组件全解析
北辰alk
AIlangchain
文章目录一、核心架构组件1.模型I/O(ModelI/O)2.检索(Retrieval)3.记忆(Memory)4.链(Chains)5.代理(Agents)二、关键支持组件1.回调系统(Callbacks)2.文档加载器(DocumentLoaders)3.文本分割器(TextSplitters)4.向量存储(VectorStores)三、高级架构组件1.工具集成(Tools)2.工作流(Wor
- python规划
t_hj
python
-----------动态内容与反爬策略----------动态页面处理Selenium:自动化浏览器(点击、滚动、表单提交)Playwright(更现代的替代方案)API逆向工程分析Ajax请求(ChromeDevTools)直接调用API接口(如知乎热榜API)反爬应对User-Agent轮换、IP代理(免费/付费代理池)验证码处理(简单验证码用OCR,复杂验证码需打码平台)请求频率控制(ti
- Gemini CLI 工具注册系统深度解析:从动态发现到智能执行的完整架构
前言在探索了GeminiCLI的配置系统、扩展机制和构建流程后,今天我们将深入项目的核心——工具注册系统。这个系统位于tools目录,是整个AI工具生态的神经中枢。通过对tool-registry.ts和tools.ts的深入分析,我们可以看到一个插件化工具架构¹的完整实现。注解1-插件化工具架构:不同于传统的硬编码工具集合,GeminiCLI采用了完全插件化的工具架构。系统能够动态发现、注册和执
- Assistant API的原理及应用
赛丽曼
人工智能chatgpt
什么是AssistantsAPI?**发布日期:**2023年11月6日,OpenAI在开发者大会上发布了AssistantsAPI——一款面向开发者的工具,用于在应用中构建AI助手。✅它可以做什么?AssistantsAPI允许开发者构建智能助手,这些助手可通过:instructions(指令):设定助手行为;models(模型):指定使用的GPT模型;tools(工具):调用代码解释器、知识库
- hugo 部署github_从私有Hugo存储库部署公共GitHub Pages站点的两种方法
cumian9828
javagitpythongithubmakefile
hugo部署github通过使用持续部署工具从单独的私有存储库发布公共GitHubPages网站,可以使草稿不受公众的关注。(KeepyourdraftsoutofthepubliceyebymakinguseofcontinuousdeploymenttoolstopublishyourpublicGitHubPagessite—fromaseparateprivaterepository.)T
- 七、性能优化
瓜子三百克
Flutter性能优化flutter
目录1.如何检测Flutter应用的性能问题?2.什么是重绘边界(RepaintBoundary)?3.如何避免不必要的重建?4.`const`构造函数在优化中起什么作用?5.如何优化长列表的性能?6.如何减少应用启动时间?1.如何检测Flutter应用的性能问题?核心工具:工具用途使用方式DevTools性能面板分析UI渲染时间、GPU耗时、CPU耗时flutterrun--profile→da
- 八、测试与调试
目录1.Flutter测试的类型有哪些?2.如何编写单元测试?3.如何测试Widget?4.什么是Golden测试?5.如何使用FlutterDevTools?1.Flutter测试的类型有哪些?Flutter测试主要分为三类,覆盖不同粒度的质量保障:测试类型测试对象执行速度依赖环境主要工具单元测试独立函数/类极快(1s)模拟器/真机integration_test包特殊测试类型:Golden测试
- Androidstudio调试时 手机自动断开
HelloMagina
Android学习
有时候使用androidstudio调试真机时,每当到了断点处,过个几秒钟,就自动失去连接了。这种情况是可能突然出现的,然后就会一直存在这个问题。原因就是sdk目录下的adb工具出现问题了,最简单的解决方案就是更新adb,直接在androidstudio里面的sdktool那里更新下platform-tools就好了。
- 实战演练 | Navicat 中英文模式切换
Navicat中国
Navicat技术智库数据库管理员数据库mysqldbasql
本章节教大家在你的Navicat数据库管理工具中切换语言模式,soeasy!以下是中文模式中的切换路径,大家应该很容易掌握!-点击菜单栏-工具-选项-常规中设置语言即可自由切换!以下是英文模式中的切换路径,给你更直观的操作指南。-点击Tools-Options-General-Language即可自由切换!如果你想试用Navicat16,可以在这里下载Navicat的14天全功能免费试用版。往期回
- Briefcase 项目常见问题解决方案
刘梓苹
Briefcase项目常见问题解决方案briefcaseToolstosupportconvertingaPythonprojectintoastandalonenativeapplication.项目地址:https://gitcode.com/gh_mirrors/br/briefcase1.项目基础介绍和主要编程语言Briefcase是一个由BeeWare项目开发的工具,旨在帮助开发者将Py
- uniapp开发小程序时,css设置的背景图无法显示?
小跳不会Coding
uniapp前端
uniapp开发小程序时,css设置的背景图无法显示问题:(如何解决)第一种方式:将图片转为base64格式。使用站长工具,base64图片在线转换工具(https://tool.chinaz.com/tools/imgtobase)第二种方式:</view
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http