- 常用的 UI 自动化测试框架的介绍、优缺点、使用场景和适用范围
Zero_pl
自动化
以下是常用的UI自动化测试框架的介绍、优缺点、使用场景和适用范围,涵盖**Selenium**、**Appium**、**Airtest**等框架。---###**1.Selenium****简介**:Selenium是一个广泛使用的开源WebUI自动化测试框架,支持多种语言和浏览器。**优点**:-支持多种浏览器(Chrome、Firefox、Safari等)。-跨平台支持(Windows、Ma
- 软件测试丨Airtest 游戏自动化测试框架
霍格沃兹测试开发学社测试人社区
游戏软件测试测试开发
游戏行业以其独特的魅力和丰厚的市场前景吸引了无数开发者和测试工程师。随着技术的不断进步,软件测试的方式也在日新月异,而游戏测试更是其中的佼佼者。今日,我们将带您领略Airtest游戏自动化测试框架的魅力,一同探索它如何通过高效、智能的测试手段,助力游戏行业发展。什么是Airtest?Airtest是由网易公司开发的跨平台游戏自动化测试框架,旨在为各类游戏产品提供全面的测试解决方案。这个框架不仅支持
- C++|开源日志库log4cpp和glog
奇树谦
C/C++/qtc++开源开发语言
文章目录`log4cpp`和`glog`对比1.**功能对比**2.**易用性和配置**3.**性能**4.**线程安全**5.**日志输出**6.**功能扩展**7.**适用场景**8.**总结**其它开源C++日志库1.**spdlog**2.**easylogging++**3.**Boost.Log**4.**loguru**5.**PocoLogging**6.**QtLogging(Q
- <Error> Application: DB::Exception: Listen [::1]:8123 failed: Poco::Exception. Code: 1000, e.code()
Aiky哇
clickhouse数据库数据仓库
问题一:在连接clickhouse数据库时,使用serviceclickhouse-server/etc/init.d/clickhouse-service时都会报Initscriptisalreadyrunning,但是实际上数据库并没有起来,可以使用sudosystemctlstartclickhouse-serversudosystemctlstopclickhouse-serversudo
- 整理一下一些Qt/C++第三方库
MayZork
qt开发语言c++
boost一个广泛的C++库集合,提供了大量的功能模块,包括但不限于数据结构、算法、并发编程、网络编程、文件系统、正则表达式、序列化等。poco也是一个广泛的C++库集合,提供了一套丰富的功能模块,包含网络通信、HTTP、文件系统、XML、JSON、数据库等。libevent轻量级的C语言库,主要用于异步网络编程。它提供了对I/O复用的支持,使得开发者可以在单线程中同时处理多个连接。QCustom
- 【私有云场景案例分享②】批量装包与冒烟测试的自动化实现
AirtestProject
自动化自动化测试网易Airtest私有云案例分享
一、前言在软件开发和测试过程中,批量装包和冒烟测试是两个关键环节。随着项目规模的扩大和测试需求的增加,传统的手动操作方式已经无法满足效率和质量的要求。通过AirtestIDE企业版与DeviceKeeper结合的批量装包和冒烟测试解决方案,可以提高测试效率,降低人力成本,并确保测试质量。二、痛点分析装包耗时长:测试人员需要手动在每台设备上安装应用,耗时长且可能会出现设备漏装包等情况。冒烟测试效率低
- Airtest-Selenium实操小课:爬取新榜数据
测试界的路飞
软件测试技术分享selenium测试工具
1.前言最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试,正好趁此机会,我们也出几个关于web自动化的实操小课,仅供大家参考~今天跟大家分享的是一个非常简单的爬取网页信息的小练习,在百度找到新榜网页,搜索关键词“自动化”,爬取前5名的公众号名称。2.需求分析和准备整体的需求大致可以分为以下步骤:打开chrome浏览器打开百度网页搜索“新榜官网”点击“找达人”按钮
- 聊聊 PC 端自动化最佳方案 - WinAppDriver
AirPython
1.前言大家好,我是安果!一提到自动化,可能大家想到的是App端的Appium、Airtest、AutoJS,亦或是Selenium、Puppeteer、Cypress等Web端的自动化框架本篇文章,我将和大家聊聊PC端的自动化工具-WinAppDriver2.准备WinAppDriver,全称为WindowsApplicationDriver,它是Windows上一个类似Selenium的UI自
- PHP反序列化刷题
奫M
php开发语言
1.攻防世界unserialize3classxctf{public$flag='111';publicfunction__wakeup(){exit('badrequests');}?code=pocO:4:"xctf":1:{s:4:"flag";s:3:"111";}让输出报错:O:4:"xctf":2:{s:4:"flag";s:3:"111";}2.攻防世界Web_php_unseria
- 如何使用Airtest进行UI自动化测试
咖啡 加剁椒
软件测试ui软件测试自动化测试功能测试程序人生职场和发展
一、环境搭建1、Airtest客户端下载访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装;2、python工具下载与环境搭建在本地python环境中安装airtest和pocoui,然后用命令行运行脚本;1、建议使用3.7以下版本,下载python3;2、下载python后,配置本地的运行环境,详见:http://airtest.netease.c
- C++ Pair 使用
Zebulon
C/C++pairc++stringc
•Pair的创建和初始化C++代码pairtest1;pairtest2;调用默认构造器对其初始化。所以,test1是包含两个空string类型的pair对象;test2中的int型成员获得0.C++代码pairuser("James","harden");coutusers=make_pair("James","harden");make_pair(v1,v2)以v1和v2值创建一个新的pair
- Airtest遍历脚本执行
_濯清涟_
#-*-coding:utf-8-*importosfromairtest.cli.runnerimportAirtestCase,run_scriptimportairtest.report.reportasreportfromargparseimport*importshutil#importjinja2#fromconf.configimport*#fromlib.logimportlib_
- Airtest 点击按钮前后两张图片的相似度,判断按钮是否可以被点击
大数据采集及分析
数据采集python
Airtest点击按钮前后两张图片的相似度,判断按钮是否可以被点击Airtest点击按钮后两张图片的相似度大于90%__author__="xiaoyun461"fromairtest.core.apiimport*fromairtest.aircv.aircvimport*fromairtest.core.cvimport*fromairtest.aircv.templateimport*#获得
- Airtest使用的图像识别算法识别比较慢解决办法,改变算法的运算顺序或者指定一种算法,提高Airtest图像识别效率
大数据采集及分析
服务器
Airtest使用的图像识别算法识别比较慢解决办法,改变算法的运算顺序或者指定一种算法,提高Airtest图像识别效率调整Airtest图像识别算法的使用顺序fromairtest.core.settingsimportSettingsasST#调整Airtest图像识别算法的使用顺序ST.CVSTRATEGY=["mstpl","tpl","sift","brisk"]指定一种算法(mstpl算
- Airtest实现在手机界面快速批量采集数据
大数据采集及分析
数据采集网络爬虫爬虫python
Airtest实现在手机界面快速批量采集数据一、问题Airtest使用的poco方法比较慢,寻找差不多一周,看完这篇文章能节省一周时间,希望帮到大家。二、解决思路使用Airtest图像识别,这样就会速度上提升效率。三、解决办法使用页面规律,要找到每条数据的附近规律(一般是图像规律),使用find_all(规律图像)计算得到坐标,再依据和图像同一条数据的坐标,计算得到差值四个(四个差值分别是左上和右
- Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
Code技术分享
.netcore
文章目录简介Asp.NetCore集成Panda.DynamicWebApi配置原理什么是POCOController?POCO控制器原理ControllerFeatureProvider实现自定义判断规则IApplicationModelConventionPanda.DynamicWebApi中的实现ConfigureApiExplorer()ConfigureSelector()Config
- UI自动化之Poco常用断言方式
AI小艾
Appium移动端测试ui自动化前端
实际上用到的几种写断言的方式:1.验证UI界面(断言图片是否存在,UI页面不稳定情况下,图片识别效率不高)assert_existsassert_not_exists2.验证数值(断言传入的两个值(数字或者string)是否相等)assert_equal:assert_equal(poco("button").get_text(),"0","按钮的值与预期一致")assert_not_equaln
- 反爬虫三:检测鼠标移动轨迹
pygodnet
反爬虫反爬虫鼠标移动检测位移检测mousemove鼠标监听
python学习交流公众号HelloPython上线啦,欢迎关注一:检测鼠标移动轨迹场景部分爬虫使用selenium,airtest等,模拟用户点击等操作,以及在滑块验证码等,这时候通过检测鼠标移动轨迹,将可以在一定程度上检测出机器人,并触发反爬措施二:逻辑与实现方式基于监听mousemove事件,触发,记录鼠标坐标,验证逻辑如下:鼠标移动位移不连续多次点击相同位置点击等操作前无位移,或位移触发次
- 后悔没早知道这款UI自动化测试框架,让你写用例像口语化一样简单
yoyo小小汐~
软件测试软件测试UI自动化测试框架程序员
携程开源的一款UI自动化测试框架,使用Flybirds你能够完成大部分的手机端自动化操作,基于Behave,实现BDD中“自然语言测试用例文档”和“自动化测试代码”关联需要用到支持BDD工具。说白了写测试用例可以用口语化。1、Flybirds●基于Behave,实现BDD中”自然语言测试用例文档”和”自动化测试代码”关联需要用到支持BDD工具。●基于Airtest,实现BDD中”测试用例能在自动化
- 数值拆分(需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台)
Spirit@2000
java开发语言
公式:获取任意一个数上每一位数。个位:数字%10十位:数字/10%10百位:数字/100%10千位:数字/1000%10。。。以此类推。。。importjava.util.Scanner;publicclassAirTest1{publicstaticvoidmain(String[]args){//录入一个三位数,获取其中个位十位百位Scannersc=newScanner(System.in)
- 云手机采集的连接和使用
qq_36532060
爬虫云原生手机
文章目录前言配置秘钥配置秘钥导入安全组配置连接adb连接airtest连接appium连接前言最近有一个项目的采集调研涉及到了利用云手机的采集,记录一下配置方式和连接工具。配置使用的是阿里云弹性云手机,正常购买之后打开。秘钥配置链接想用ADB链接,因此需要配置公钥和私钥。首先在本机(windows)上打开cmd敲adbdevices如果显示adb命令不存在的话可以参考这个配置一下ADB安装及使用详
- python 闲鱼 自动发信息_自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了
药明康德
python闲鱼自动发信息
1目标场景前篇文章讲了如何在iOS端使用Airtest实现自动化的操作,本篇将继续带大家做iOS端的自动化项目。如果你经常用闲鱼,应该每天都要进行下面操作,App签到、鱼塘签到、擦亮宝贝,这一系列操作都是重复且枯燥的。本篇文章的目的是利用Python实现iOS端闲鱼日常操作。2编写代码在编写脚本之前,我们需要利用MacOSX的控制台程序拿到闲鱼App的bundle。第一步,打开目标App。利用应用
- Airtest-Selenium实操小课
测试界的世清
软件测试自动化测试技术分享seleniumpython爬虫
1.前言上一课我们讲到用Airtest-Selenium爬取网站上我们需要的信息数据,还没看的同学可以戳这里看看~那么今天的推文,我们就来说说看,怎么实现看b站、刷b站的日常操作,包括点击暂停,发弹幕,点赞,收藏等操作,仅供大家参考学习~2.需求分析和准备整体的需求大致可以分为以下步骤:打开chrome浏览器打开百度网页搜索“哔哩哔哩”点击进入“哔哩哔哩”官网搜索关键词“Airtest酱”点击进入
- 三、playwright+pytest-高阶篇-封装
张小胖、
测试开发playwrightpytest自动化
背景playwright、pytest的介绍,以及基础入门在这篇就不做详细介绍了。分别在前2篇中。本篇主要是讲如何将playwright与pytest结合起来,做成通用的UI自动化框架。众所周知:UI自动化最大的问题是后期维护困难,这个后期维护主要就在业务变动,导致元素变动定位不到。故而后面写的逻辑全部都无法使用;市场上也有其他的解决办法,比较火的airtest(图像识别)。感兴趣的可以去研究下,
- Conan: starting at a text book Hello World
Richard1905
ConanLearningpythonc++
CommandLinestosearchlibrariesfromconancenter#conansearchpoco--remote=conancentertoinspectthemetadataofalibrary#conaninspectpoco/1.9.4toinstallthelibraryandthedependencybutalsothetransitivedependencies
- C#控制台程序中展示表格 (ConsoleTable类库的使用)
卷儿哥
.NETc#
C#控制台中展示表格有时我们需要在控制台程序中以表格的形式展示数据,刚好有一个叫ConsoleTable的第三方库可以实现,使用这个库,可以让开发人员很轻松的将一组对象以表格的形式展示在控制台中。而且这个库写的非常简洁,只有一个cs文件,我读了源代码,确实写得水平非常高。HaveyoueverjustwantedtooutputflatstructuredPOCOouttoconsole?Sure
- 1.了解关于手机的知识2.买手机要注意哪些方面?
全能小CC
第一,系统主流的系统只有两种:安卓和苹果iOS国内对于安卓系统都做了本地化深层次的定制,也就是UI,国内主流的安卓定制UI我根据个人体验分为了三个梯队。1.小米MIUI、魅族Flyme(出于尊敬放在第一梯队,实际上也就第二梯队)、oppocoloros72.oppocoloros6(由于系统进步太大分了两个)、一加氢OS3.vivoFuntouchos(国内最差系统)为什么没有华为的EMUI,因为
- 【Poco库源码解析】Poco库中的通知
敬先生
Poco库c++
1、介绍PocoPocoPoco中的通知,是消息源通过中间载体将消息发送给观察者,通知可以分为同步通知和异步通知。下图是同步通知,消息发送流程:2.同步通知2.1消息classNotification:publicRefCountedObject{public:typedefAutoPtrPtr;Notification();virtualstd::stringname()const;protec
- 【Poco库源码解析】Poco库的事件
敬先生
Poco库c++
1.使用示例#include"Poco/BasicEvent.h"#include"Poco/Delegate.h"#includeusingPoco::BasicEvent;usingPoco::Delegate;classSource{public:BasicEventtheEvent;voidfireEvent(intn){theEvent(this,n);//theEvent.notify
- 笔记本~笔记目录
weixin_42717928
私密学习笔记链接
个人学习笔记(整理不易,有帮助点个赞)-已经整理笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客一:airtestAirtest(一):Airtest笔记(一)_airtest电源键_weixin_42717928的博客-CSDN博客Airtest(二):Airtest笔记(二)_airtest循环_weixin_42717
- 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