- iperf工具源码下载、编译、编译报错解决、以及测试网络带宽
正在起飞的蜗牛
嵌入式开发环境搭建linux网络网速测试工具
1、iperf源码下载(1)源码下载地址:https://iperf.fr/iperf-download.php;(2)有的版本源码下载下来并不能直接编译成功,可能会报缺少头文件或者编译选项的错误,要么去解决这些错误,要么换个版本再试一下;(3)在我的环境中,2.0.9版本的iperf是可以直接编译成功的,下面的讲解都是基于2.0.9版本;(4)如果只是用iperf的基本功能,比如测网络带宽,没必
- 在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)
Waygoer
vins_fusionubuntulinux运维
最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。github网站传送门->https://github.com/HKUST-Aerial-Robotics/VINS-Fusio
- 编译/仿真 报错记录
Flying_Bird089
UVM实战测试用例
1.SESyntaxError之前编译是通过的,在修改了几个文件中的东西之后,编译报错,但是此test_base文件并未修改,所以去看修改的地方是否有问题,没有问题的话,就去看此文件的上一文件是否有错误。2.Nullobjectaccess编译通过,仿真报ERROR,如标题报错行中使用了13行声明的utx_tr,加入了23行的例化后,不再报错。
- 【启动编译报错】SyntaxError: Unexpected token “.“
sunny-king
npmwebpack前端vue.js
新加入的项目一般情况下,该项目的版本与本机cmd里面的版本不对应导致的;只需要使用这个命令npmupgrade,更新版本。
- 【IOS】Type ‘ChartDataSet‘ does not conform to protocol ‘RangeReplaceableCollection‘
Easonhe
IOSios
问题IOS开发Charts集成时编译报错解决方法在ChartDataSet的中增加replaceSubrange的实现publicfuncreplaceSubrange(_subrange:Swift.Range,withnewElements:C)whereC:Collection,ChartDataEntry==C.Element{}解决!
- 【IOS】import导入模块或头文件错误
Easonhe
IOSioscocoamacos
问题描述xcode运行ios项目时编译报错@import的导入模块或头文件的时候报错notfound解决方法排查问题所有出现import失败的地方所引入的头文件或模块都是在项目中存在的,notfound的共同特点是引入的都是重定向形式的。例如:原本的framework里的headers本应该是一个头文件的集合文件夹,但是实际上framework里的headers是一个文本文件,里面是一个相对路径,
- Linux第60步_“buildroot”构建根文件系统第2步_配置“buildroot下的busybox”并测试“buildroot”生成的根文件系统
LaoZhangGong123
产品研发linux服务器STM32MP157经验分享根文件系统
1、查看“buildroot下的busybox”安装路径打开终端输入“ls回车”输入“cdlinux回车/”,切换到到“linux”目录输入“ls回车”,查看“linux”目录下的文件和文件夹输入“cdbuildroot/回车”,切换到到“buildroot”目录输入“ls回车”,查看“buildroot”目录下的文件和文件夹输入“cdbuildroot-2020.02.6/回车”,切换到到“bu
- Linux第61步_“buildroot”构建根文件系统第3步_烧写根文件系统到EMMC中_并完善开发板配置
LaoZhangGong123
产品研发linuxSTM32MP157ubuntu经验分享烧录
烧录到EMMC测试,还需进一步测试和配置。1、删除rootfs”目录下的“rootfs.tar”压缩包打开第1个终端输入“ls回车”输入“cdlinux/回车”,切换到“linux”目录输入“ls回车”,列出“linux”目录下的文件和文件夹输入“cdnfs/回车”,切换到“nfs”目录输入“ls回车”,列出“nfs”目录下的文件和文件夹输入“cdrootfs/回车”,切换到“rootfs”目录输
- 解决STM32MP157开发板密码登录问题
LaoZhangGong123
产品研发STM32MP157linux学习经验分享密码
开发板密码登录问题是很多人遇到的问题,网上有很多帖子,我也参考过,不太适用,很复杂,甚至会被误导,我差点连ubuntu虚拟机都无法登录了。有的密码匹配,有的取消不了密码。1、密码配置:1)、打开“buildroot”中的图形化配置界面2)、移动向下光标键至“Systemconfiguration”,见下图:3)、按“回车键”,移动“向下光标键”至“EnableRootloginwithpasswo
- RK3568笔记十四:yolov8pose部署
殷忆枫
RK3568学习笔记笔记YOLO
若该文为原创文章,转载请注明原文出处。本篇参考山水无移大佬文章,并成功部署了yolov8pose在RK3568板子上,这里记录下全过程。在此特感谢所有分享的大佬,底部附大佬的链接。一、环境1、平台:rk35682、开发板:ATK-RK3568正点原子板子3、环境:buildroot特别说明:本示例中模型的训练使用的数据是coco8-pose数据集,数据量很少,模型效果无法保证,只是用来测试部署用的
- Linux系统安装Python编译报错
October autumn
ToolPythonlinux
Unix&Linux平台安装Python以下为在Unix&Linux平台上安装Python的简单步骤:打开WEB浏览器访问https://www.python.org/downloads/source/选择适用于Unix/Linux的源码压缩包。下载及解压压缩包。如果你需要自定义一些选项修改Modules/Setup执行./configure脚本makemakeinstall执行以上操作后,Pyt
- linux中安装python 3.8.0 编译报错 Could not import runpy module 解决方案
HD243608836
pythonlinuxlinux安装python3runpy
环境CentOS7Gcc4.8.5Python3.8.0相关报错makebuild_allCFLAGS_NODIST="-fprofile-use-fprofile-correction"LDFLAGS_NODIST=""make[1]:Enteringdirectory`/usr/local/src/Python-3.8.0'./python-E-S-msysconfig--generate-p
- Qt信号-槽
开发呆呆
这篇文档从使用到实现去讲信号-槽,适合小白到使用一两年的。对于Qt使用而言,信号-槽是我们津津乐道的一个功能,那我们先来看我们会怎么使用它。初步认识Qt的信号-槽的写法比较简单。1、如果一个类需要使用信号-槽,那么需要这个类继承从QObject继承,并且在类中调用使用宏Q_OBJECT如果在非QObject的子类中使用Q_OBJECT,将编译报错:error:ClasscontainsQ_OBJE
- 从左值和右值的角度分析a++和++a
发生了什么Bug
c语言基础&实用技巧c语言
摘自牛客上的一个题目:inta=5,则++(a++)的值是?答案是会编译报错。原因:a++返回的是右值(rvalue),而我们不能对一个右值进行自增操作。所以++(a++)会报错。怎么理解呢?(a++)返回的是a在+1之前的值,这个值是一个临时的对象。这个临时的对象在(a++)这条语句结束后,马上就结束了生命周期,即右值,而我们不能对一个右值进行自增运算。总之,a++和++a都是一个表达式,表达式
- Linux环境CMake编译时报错找不到CUDA
狗子孙
CMakeLists.txt中有找CUDA的代码(例如find_package(CUDAREQUIRED)),系统也有装完整的NVIDIA驱动和CUDA环境(nvidia-smi能正常输出CUDA版本),但CMake编译报错:CouldNOTfindCUDA(missing:CUDA_INCLUDE_DIRSCUDA_CUDART_LIBRARY)查看发现系统的cuda路径是/usr/local/
- RTMP_ReadPacket, failed to read RTMP packet header rtmp://127.0.0.1/live/lyc: Unknown error occurred
程序山顶洞人
ffmpeg
关于imx6ull视频推拉流出现的:RTMP_ReadPacket,failedtoreadRTMPpacketheaderrtmp://127.0.0.1/live/lyc:Unknownerroroccurred解决方法:根据报错猜测是RTMP服务出现问题,就再去重新配置支持RTMP、HTTPFLV协议的第三方模块:nginx-http-flv-module最后在使用Buildroot编译的时
- C++: 进阶之路:解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()
FishAnd_Yu
#C++进阶(常见错误)c++sort排序函数
1:问题描述定义了一个struct结构体如下:structReview{stringtitle;intrating;}定义如上结构体,当我们通过sort()排序时,看看会出现什么结果。voidtest6(){vectorbooks;Reviewrv={"a",1};books.push_back(rv);Reviewrv0={"a",20};books.push_back(rv0);Reviewr
- 【揭秘家用路由器0day】Qemu & buildroot 安装和测试
zephyrOOO
路由器安全安全linux
今天在虚拟机中安装Qemu和MIPS交叉编译环境buildroot,操作系统环境信息查看【揭秘家用路由器0day】Wine+IDA环境搭建遇到了很多问题,在此做一个记录。Qemu目前通过apt安装的qemu版本是7.2apt-cachepolicyqemu-systemqemu-system:Installed:(none)Candidate:1:7.2+dfsg-5ubuntu2.4Versio
- 使用HLS FFT报错: undefined reference to‘xilinx_ip_xfft_v9_1_*‘问题解决方法
凳子花❀
Verilog数字IC设计HLSHLSfpga开发
最近需要用到HLS的FFT库,写了一个简单代码后编译报错:../Vitis_HLS/hls_fft.h:670:undefinedreferenceto'xilinx_ip_xfft_v9_1_create_state'../Vitis_HLS/hls_fft.h:771:undefinedreferenceto'xilinx_ip_xfft_v9_1_bitacc_simulate'../Vit
- HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘
凳子花❀
HLSVerilog数字IC设计uvmfpga开发linux
最近在通过HLS实现一些算法,其中用到了hls::cos函数,写完代码编译报错:../Vitis_HLS/hls_cordic_apfixed.h:229:undefinedreferenceto`cordic_apfixed::circ_table_arctan_128'build/xf_computePhaseMap_accel.o:Infunction`voidcordic_apfixed:
- 抽象类和接口
挥发的石灰
JavaSEjava开发语言
目录抽象类案例:特点:接口案例:特点:抽象类和接口的区别抽象类抽象类提供了去定义抽象方法当一个方法在父类本身并没有实际意义,只是为了给不同的子类重写自己独有的逻辑时,这个方法在父类当中就可以为抽象方法,同时父类本身也就必须为抽象类。抽象类和方法通过abstract声明。案例:当子类继承了抽象类父类,但是没有重写其中的抽象方法(eat())时,编译报错。此时我们就需要在子类中重写eat()方法特点:
- 搭建交叉编译环境--RK3588示范
北极星6号
linux各子系统编译linux编译交叉编译
Makefile交叉编译环境1.环境脚本buildenv.sh#1.代码路径sourceDir=/home/liuj/3_work/ok3588-linux-source/#2.交叉编译rootfs链接库syslib=$sourceDir/buildroot/output/OK3588-Ubuntu/target/libusrlib=$sourceDir/buildroot/output/OK35
- RK3568笔记十二:Zlmedia拉流显示测试
殷忆枫
RK3568学习笔记笔记
若该文为原创文章,转载请注明原文出处。Zlmediakit功能很强大,测试一下拉流,在通过解码显示。一、环境1、平台:rk35682、开发板:ATK-RK3568正点原子板子3、环境:buildroot测试的代码在GitHub-airockchip/rknpu2main_video.cc主要功能是通过Zlmedia拉取RTSP流,并解码,然后重新编码保存成视频,所以直接在例子上修改程序,增加DRM
- 安卓开发解决Could not find method versionName() for arguments [1.0] 问题
笑对浮华
项目中导入一个模块后编译报错CouldnotfindmethodversionName()forarguments[1.0].........根据提示显示下图中所示那一行报错:图一build.gradle(Module:app)打开build.gradle(Module:Project)发现vname的值为1.0,是int类型,正确应该是String类型,加上""后编译通过。更改前如图:图二bui
- 记录 | python 源码编译报错subprocess.CalledProcessError Command lsb_release
极智视界
踩坑记录pythonsubprocess
subprocess.CalledProcessError:Command'('lsb_release','-a')'returnednon-zeroexitstatus1.解决方法find/-namelsb_releaserm-rf/usr/bin/lsb_release
- vue使用es的reduce方法编译报错Error: Can‘t resolve ‘core-js/modules/es.array.reduce.js‘
呆呆加油呀
javascriptvue.js前端
哈喽大家好啊最近在vue使用es的reduce方法编译报错Error:Can'tresolve'core-js/modules/es.array.reduce.js报错如图所示:解决方案:npminstall--savecore-js然后重新编译下将正常了参考原文:使用import异步加载语法报错_modulenotfound:error:can'tresolve'core-js/mo-CSDN博
- Maven 多模块项目编译报错 The POM for xxx is invalid
一线大码
Mavenmavenjavaintellij-idea
参考地址:Maven传递依赖无法引入问题(ThePOMforxxxisinvalid)编译警告信息:[WARNING]ThePOMforcom.gtcom:output-common:jar:1.0.0-SNAPSHOTisinvalid,transitivedependencies(ifany)willnotbeavailable,enabledebugloggingformoredetails
- Maven - 编译报错:程序包 XXX 不存在(多模块项目)
放羊的牧码
#MavenmavenjavapomspringbootBOOT-INF编译报错程序包XXX不存在
问题描述编译报错:程序包XXX不存在(多模块项目)原因分析检查依赖模块pom文件,看是不是引入了如下插件org.springframework.bootspring-boot-maven-pluginrepackagespring-boot-maven-plugin插件作用为了创建一个可执行的jar包,接下来看看加插件打包的结构不加插件的结构对比发现是多了BOOT-INF目录,比如A项目引入了此插
- CIMG编译错误 undefined reference to `__imp_SetDIBitsToDevice'
不存在的里皮
dev-cpp下编译报错C:\Users\jj\AppData\Local\Temp\ccDdSzYA.oCImg_demo.cpp:(.text$_ZN12cimg_library11CImgDisplay5paintEv[_ZN12cimg_library11CImgDisplay5paintEv]+0xb7):undefinedreferenceto`__imp_SetDIBitsToDev
- Android Stuido编译报错:Program type already present: MTT.ThirdAppInfoNew
Alex-whj
Android
背景:AndroidAppSync成功但是打包时报错:Programtypealreadypresent:MTT.ThirdAppInfoNew参照:https://blog.csdn.net/ddxxll2008/article/details/105671161处理后无果。排查过程:百度Programtypealreadypresent都提示是包依赖冲突,于是双击shift打开searchev
- 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