- 高光谱数据下载
左手拈花,右手舞剑
3S技术
1:WashingtonDCMal,IndianPine等https://engineering.purdue.edu/~biehl/MultiSpec/hyperspectral.html2:IndianPines,Salinas,PaviaCentreandUniversity,Cuprite等http://www.ehu.eus/ccwintco/index.php?title=Hypers
- PHP-CGI Windows平台远程代码执行漏洞(CVE-2024-4577)
李火火安全阁
漏洞复现phpXAMPP开发语言
文章目录前言声明一、简介二、漏洞描述三、影响版本四、漏洞复现五、漏洞修复前言PHP在设计时忽略Windows中对字符转换的Best-Fit特性,当PHP-CGI运行在Window平台且使用了如下语系(简体中文936/繁体中文950/日文932等)时,攻击者可构造恶意请求绕过CVE-2012-1823补丁,从而可在无需登陆的情况下执行任意PHP代码声明请勿利用文章内的相关技术从事非法测试,由于传播、
- 代码审计学习路线
白帽子技术分享
python网络安全代码审计
学习代码审计分以下四部分一.编程语言1.前端语言html/javascript/dom元素使用,主要是为了挖掘xss漏洞,jquery主要写一些涉及到CSRF脚本使用的或者DOM型XSS,JSON劫持等2.后端语言基础语法要知道,例如变量类型,常量,数组(python是列表,元组,字典),对象,类的调用,引用等,MVC设计模式要清楚,因为大部分目标程序都是基于MVC写的,包括不限于php,pyth
- window xp系统安装php环境_Windows XP平台上搭建PHP环境
weixin_39618730
windowxp系统安装php环境
WindowsXP平台下搭建PHP环境刚接触PHP那会儿,觉得搭建PHP的运行环境实在是太难,后来发现有现成的套装软件可用,高兴的不得了。最开始因为想建站,所以接触到了DedeCMS,织梦公司还蛮体贴,提供了一个和DedeCMS配套使用的PHP环境搭建套装软件。后来,又接触过像XAMPP,AppServ等软件,AppServ现在还在用。虽然这类套装软件十分好用,但是也存在明显的不足。套装软件里面包
- php代码审计学习路线
子非鱼999
杂记php学习开发语言
学习PHP代码审计可以帮助你识别和修复PHP应用中的安全漏洞,保护应用免受恶意攻击。以下是系统的PHP代码审计学习路线,从基础到高级逐步提升:一、基础阶段:打好编程和安全基础PHP基础学习PHP语言的基础知识,如变量、数据类型、数组、字符串处理、函数、类和对象等。学习PHP的常见操作:文件处理、会话管理、数据库操作(如MySQL)。推荐资源:PHP官方文档PHP相关学习网站(如菜鸟教程)Web安全
- [BUUCTF][极客大挑战 2019]PHP
朋克归零膏
CTFphplinuxfirefox
备份根据提示应该就是网站备份文件能被爆破出来随手写了个爆破脚本,基于御剑字典,只供学习使用importrandomimportrequestsimporttimefrommultiprocessingimportPooldefmultiScan(target,file_name,pool_num,delay):local_pool=Pool(pool_num)dirs=get_path_dict(
- BUUCTF [极客大挑战 2019]Secret File 1
THEMIScale
还差一步这道题就出来了在想了在想了别骂了别骂了打开题目后一片黑这个时候根据经验有事没事先ctrl+a安排一下果然有问题在最下方有一个连接打开链接出现一个按钮按他就完事了并没有出来什么用burp拦截后发现提示:secr3t.php打开后提示flag在flag.php中并且给了一串php其中stristr函数不用绕过直接干就完了然后就是啊哈!你找到我了!可是你看不到我QAQ~~~我就在这里这边最后请教
- 安全见闻(3)
Bulestar_xx
泷羽sec学习笔记安全网络windows
摘要脚本程序主要讨论的是安全性问题。脚本语言因其源代码可见、可复制性高而具有脚本性质。常见的脚本语言包括:-Lua-PHP-Go-Python-JavaScript脚本语言可以编写病毒和木马,例如Python可以编写木马,PHP可以编写一句话木马。编写脚本病毒需要了解脚本语言基础和病毒构成。宏病毒(macro)可以通过工具如metasploit生成,并植入Office文件中,如Word和PPT。宏
- PHP代码审计学习02
玄客)
学习
目录代码审计一般思路Beescms代码审计(upload)Finecms基于前台MVC任意文件上传挖掘思路CLTPHP基于thinkphp5框架的文件上传挖掘思路今天来看PHP有框架MVC类,文件上传,断点调试挖掘。同样还是有关键字搜索和功能点抓包两种方法来找到文件和代码段,最后进行分析。经过这两天的代码审计学习,有了一些认识,那就是渗透测试相当于是黑盒测试,而代码审计相当于是白盒测试,代码审计会
- BUUCTF--[羊城杯 2020]Easyphp2
Uzero.
进入后的页面根据题目提示我们可以知道这是一道PHP代码审计的题所以使用伪协议查看源代码,这里使用的是两次url编码绕过/?file=php://filter/read=convert.quoted-printable-encode/resource=GWHT.php/?file=php://filter/read=convert.%2562%2561%2573%2565%2536%2534-enc
- BUUCTF:[ISITDTU 2019]EasyPHP --- rce 超级异或,,,吐了,,,字符之间异或, 成型的异或payload!!!
Zero_Adam
BUUCTF刷题记录RCEpython
目录:一、自己做:二、学的的三、学习WP1.这里先来个不限制字符个数的关于这个%ff以及异或的事情,咱们好好唠唠1.生成异或中间值的python脚本2.看有字符限制的时候,:参考:末初一、自己做:0xd)die('youaresoclose,omg');eval($_);?>过滤了,不少,我一般碰到rce的题,就看自己的笔记,然后把payload一股脑的网上怼,,,二、学的的正则看不明白的时候,可
- Pycharm、IDEA等汉化教程
neo_will_mvp
Python和GO实操生产代码Pycharm汉化Pycharm汉化
本汉化教程对jetbrains全系列可用:IDEA、Pycharm、WebStorm、phpstorm、AndroidStudio、GoLand、RubyMine、CLion此汉化无副作用,绝对安全2019.02.03今天对汉化教程进行改版,解决原教程的汉化会导致setting无法使用和Structure无法显示问题此教程中使用的汉化包并非本人所产,我只是个搬运工。作者为:平方X,感兴趣的同学可以
- 2025.2.1——七、Web_php_unserialize 代码审计
然然阿然然
“破晓”计划第一阶段训练php网络安全学习安全网络
题目来源:攻防世界Web_php_unserialize目录一、打开靶机,整理信息二、解题思路step1:代码审计step2:绕过漏洞1.绕过__wakeup()2.绕过正则step3:脚本运行三、小结一、打开靶机,整理信息熟悉的代码审计,根据题目名称,还涉及到反序列化知识点二、解题思路step1:代码审计file=$file;//将传入的file参数赋值给当前对象的$file属性}functio
- 【SRC排名】安全应急响应中心SRC上榜记录
差不多的张三三
src安全
2023年新氧第三https://security.soyoung.com/top合合第四https://security.intsig.com/index.php?m=&c=hall&a=index2024年好未来第一https://src.100tal.com/index.php?m=&c=hall&a=index(官网是总榜,年榜只有海报)爱奇艺第八https://security.iqiy
- php的使用及 phpstorm环境部署
aaaweiaaaaaa
phpstormandroid网络安全web安全
php语法环境搭建:在小皮中新建网站,注意先填写域名再点击选择根目录。成功创建网站后,打开发现forbidden,因为新建的网站里是空的,需要新建index.php文件---->在Phpstorm中左上角打开文件,打开那个文件所在的文件夹---->新建一个php文件叫index.php.这时候已经可以在小皮中打开面板了,但是在storm中无法打开------>在storm中文件->设置->部署中新
- docker直接运行arm下的docker
张文君
dockerarm开发容器
运行环境是树莓派A+处理器是arm32v6安装了docker,运行lamp编译安装php的时候发现要按天来算,于是用电脑vm下的Ubuntu系统运行arm的docker然后打包到a+直接导入运行就可以了第一种方法sudoaptinstallqemu-user-static导入直接运行就可以了第二种方法运行arm的dockerwget-chttps://github.com/multiarch/qe
- qnx efs文件系统binary修复
MengXP
qnxefs
从spiflash从dump了qnx的固件。进一步提取出efs文件系统但是使用qnxdumpefs命令导出文件系统时发现结构体异常。谷歌到了类似问题患者http://www.openqnx.com/phpbbforum/viewtopic.php?t=3620H[01]L[FFFF]P[00].status=EE8E(WRITE|NO_NEXT|NO_SUPER|NO_SPLIT|BAD|LAST
- docker-compose kafka安装及外部访问不到kafka问题
1010739073
Dockerkafkadocker
文章目录一、docker-compose.yml二、kafkamanager/kafka-manager连接zookeeper三、PHP生产者、消费者连接总结一、docker-compose.ymlversion:'3'services:zookeeper:image:bitnami/zookeepercontainer_name:zoorestart:alwaysports:-8181:2181
- 【基础教程】Python list列表详解
SAPmatinal
Python
在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。说到这里,一些读者可能听说过数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。需要明确的是,Python中没有数组,但是加入了更加强大的列表。如果把数组看做是一个集装箱,那么Python的列表就是一个工厂的仓库。大部分编程语言都支持数组,比如C语言、C++、Java、PHP、Java
- 攻防世界(simple_php、baby_web详解)
l2ohvef
web
一、simple_php1.审计代码如果a==0,输出flag1;如果b是数字,退出;如果b>1234,输出flag2;flag=flag1+flag2;只要输入符合条件的值即可获得flag二、baby_web1.题目:想想初始页面是哪个2.打开burp,拦截抓包,查看返回信息,找到flag
- web安全漏洞之命令注入
rzydal
笔记网络安全web安全安全学习
命令注入1.什么是命令注入通常情况下,开发者使用一些可以执行命令的函数且未对用户输入进行安全检查时,可以造成命令注入。从CTF的角度来讲,命令注入可以实现:1、直接读取flag2、反弹shell3、利用题目环境漏洞,控制整个题目环境,干扰其他队伍解题在各类编程语言中,都存在直接调用系统命令的函数,比如PHP的system函数,Python的os.system,Java的Runtime.exec都可
- 老版本chrome浏览器版本下载地址
美兮,乐兮
chromejsjavascript
https://www.slimjet.com/chrome/google-chrome-old-version.php
- workerman文件服务器,workerman开发文档
weixin_39562197
workerman文件服务器
注意,这个是workerman老版本文档,已经不适用目前版本一、workerman是什么workerman是一个高性能的PHPSocket服务器框架,它类似PHP-FPM,提供进程控制及socket通讯功能,区别是PHP-FPM是以FAST-CGI的协议对外提供服务的,而workerman却可以支持各种协议(包括自定义协议),并且支持长链接,支持进程内全局对象资源等永久保持等特性。二、worker
- Workerman-Thrift 使用教程
沈韬淼Beryl
Workerman-Thrift使用教程workerman-thriftThriftRPCforphpbasedonworkerman.项目地址:https://gitcode.com/gh_mirrors/wo/workerman-thrift1、项目介绍Workerman-Thrift是一个基于Workerman的高性能PHPThriftRPC框架。Workerman是一个高性能的PHPsoc
- LNMP架构——nginx+jsp+tomcat完成客户端的动态请求
温柔梦9527
linux运维——企业实战
首先,我先给大家画一张图,来理一下lnmp架构工作的整个过程上一个实验其实我们通过php请求的是nginx服务器上的资源,还是静态资源现在我们想实现动态获取,利用jsp动态获取tomcat服务器上面的资源1.什么是tomcat?Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目由Apache、Sun和其他一些公司及个人共同开
- 使用brew报错:Bad credentials/GitHub API Error: API rate limit exceeded for
weixin_33868027
gitphppython
2019独角兽企业重金招聘Python工程师标准>>>背景描述XHProf是一个轻量级的PHP性能分析工具.使用XHProf的时候,在点击[ViewFullCallgraph]查看结果分析图时,会报错,原因是缺少graphviz绘图软件。在使用brew安装graphviz软件出现了一些错误,特此记录一下.具体内容首先使用brew搜索是否存在graphviz软件,报错:$brewsearchgrap
- LNMP(linux+nginx+mysql+php)服务器环境配置[转]
dianyun0789
运维php操作系统
一、简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器.Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过三年了。IgorSysoev在建立的项目时,使用基于BSD许可。在高并发连接的情况下,N
- php软件开发--laravel框架
周先森开发
laravellaravel
lv6开发测试站点:http://lv6.gqqf.xyz/admin/index/indexcomposer简介及安装:composer是PHP中用来管理依赖关系的工具一句话,composer是一个工具,是为php项目准备的软件管家。laravel简介,安装,目录结构,运行:PHPWeb开发框架compsoser下载laravel:composercreate-project--prefer-d
- PHP之laravel框架
phpweiyi
phplaravel数学建模vue.js
写在开头的一些话下面的图片是我用laravel框架做出的一个作品,接下来我会用我学到的知识来讲解laravel框架。目录序言laravel简介一、foreach循环语句二、if循环语句三、extends四、csrf五、自动加载类(ClassAuto-loading)六、单元测试(Unit-Testing)1.创建测试类:2.编写测试方法:3.运行单元测试:4.查看测试结果:七、数据缓存1.缓存一个
- 【PHP】Laravel 介绍 史上最优雅的 PHP 框架
Ustinian_310
laravelphp
1.Laravel介绍Laravel是一个开源的PHPWeb应用框架,由TaylorOtwell创建并于2011年6月首次发布。它遵循模型-视图-控制器(MVC)架构模式,旨在简化Web开发的任务,提供了一套丰富的功能,帮助开发者快速构建安全、可扩展的Web应用程序。附注:文末附有Laravel的社区入口,感兴趣的小伙伴可以去社区寻找更多学习资料以下是Laravel的一些主要特点和组件:核心特点M
- 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