- arcEngine开发之IMap、ILayer、IFeatureLayer和IFeatureClass关系
firepation
ArcEngine编程C#Engine
刚开时学习Engine开发时,对于这几个接口之间的关系总是理不清,因此写下这篇文章做个总结。是什么在engine开发中,我觉得使用过程中应该将每个接口对应到ArcMap中的具体事物中,这才能对它们有深刻的认识,那么,这几个接口代表的事物是什么呢?IMap这相对来说比较好理解,Map就是许多图层的集合,就像ArcMap中的MXD文档一样,可以包括许多图层Layer.ILayerLayer是图层对象,
- arcgis计算面到线的最短距离(c#,arcengine)
gis新秀
arcenginec#GISarcgis
首先是问题,问题如下。首先有一个面数据,一个线数据。如下现在我要获取每个面到线的最短距离,怎么做了?用arcgis一般的人还是很难会操作的(很熟练的就别论了)。现在如何简单快速的解决?,降级使用者的门槛?现在打开我们的程序。输入两个数据,点击计算,计算完成后结果就是这样了。是不是简单了很多,啊哈哈。源码如下:有需要的博客找我联系方式。滴滴
- ArcEngine10.2 VC++实现地图浏览基本功能
OrangePan
ArcObjectsVC++VC++ArcEngine10.2
1、创建一个mfc单文档程序(我这里叫MapEx),前面可以默认,高级功能中的“ActiveX控件(R)”必须要,在最后一步生成的类,基类选择CFormView。2、添加MapControl控件,点击窗体IDD_MAPEX_FORM,右键选择“插入ActiveX控件(X)”,选择EsriMapControl,确认。3,、加载地图,可以通过MapControl的属性页MapDocment来加载,也可
- VS2019+ArcEngine10.2+ArcMap10.2环境搭建
椰汁芒芒冰
其他
VS2019+ArcEngine10.2+ArcMap10.2环境搭建tps://www.pianshen.com/article/5195200233/
- C#+ ArcEngine 调用GP工具示例
吵吵人
记得添加引用:usingESRI.ArcGIS.Geoprocessing;……引用这部分少什么添加什么,很简单相交publicIFeatureClassIntersect2(IFeatureClassA,IFeatureClassB,stringname){Geoprocessorgeoprocessor=newGeoprocessor();geoprocessor.OverwriteOutpu
- VS2013/VS2015/VS2017下使用ArcEngine10.1/10.2
11wy11
ArcGISAEVS
背景ArcObjectsSDKforMicrosoft.NetFramework10.1或10.2在安装时,会检测VS2010或VS2012的安装路径,而有时因为其他项目使用限制而且不愿同时安装多个版本的VS,通过修改注册表方式实现安装具体步骤1.修改注册表首先打开注册表,window系统可以通过win+R,输入regedit后,回车打开注册表这里以2013为例找到计算机\HKEY_LOCAL_M
- ArcGIS Engine专题(1)之License许可统一管理类
xizhjxust_GIS
ArcEngine专题ArcEngineC#许可管理工具
ArcEngine/ArcObject二次开发的项目,在使用相关组件时都需要进行许可管初始化。许可初始化可以通过两种方式实现。目录一、手动拖拽许可控件LicenseControl二、通过IAoInitialize接口进行初始化(推荐)三、注
- ArcEngine 加载栅格影像图并建立金字塔
GIS_百度
C#gis
一般情况加载栅格影像图,但没建立金字塔,导致软件卡死~其实方法很简单,只需添加pRasterPyramid.BuildPyramid(-1,rstResamplingTypes.RSP_NearestNeighbor)即可。一、方法代码如下://////从文件夹中加载栅格数据的静态方法//////栅格文件的路径///返回加载的栅格IRasterpublicstaticvoidLoadRasterF
- ArcEngine加载栅格数据
HerryDong
ArcEngineArcEngine栅格数据
一直以来对栅格数据接触较少,曾经大二的时候用ERDAS做过监督分类和蓝藻提取,后来接触了GIS开发也就没再做过了,不过现在还是准备探索一下ArcEngine针对栅格数据的相关操作。既然数据是GIS的血液,那就从加载栅格数据开始吧。栅格数据大致分为两种形式进行存储:一种是以文件的形式存储,例如TIFF文件,另一种则是存储在地理数据库中。在ArcEngine中,IRasterWorkspace接口用于
- 读取dxf
小koala
将Cass导出的dxf导入ArcEngine二次开发的软件,将一些要素编码示例记录下来备忘。1、参考资料dxf参考手册解析dxf图形文件格式dxf文件分析2、点线注记图形编码示例以下组码取自ENTITIES(实体段),关于dxf数据结构请翻阅参考资料2.1点要素0//开头标识INSERT//点要素标识522F3302100AcDbEntity8GXYZ//Cass图层名6Continuous100
- ArcEngine添加指北针
HerryDong
ArcEngineArcEngine指北针
程序主界面如下图所示:主界面代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.W
- ArcEngine符号化——点符号选择器
HerryDong
ArcEngineArcEngine
1、前言前面的博客介绍了在ArcEngine中如何创建各类符号,但是回顾一下ArcMap中的操作,你肯定会想:一个一个创建符号实在是太过麻烦,如果有一个符号选择器供我们使用就好了。这篇博客就来介绍一下如何创建一个如下图所示的点符号选择器。2、符号样式文件对于ArcEngine来说,它是不能直接使用ArcMap中的符号库的,它能使用的是一种后缀名为*.ServerStyle的文件。以我的电脑为例,我
- ArcEngine编辑模块——批量删除要素
HerryDong
C#ArcEngineC#ArcEngine
1、前言在ArcEngine中,删除要素的方法有很多,你可以使用IFeatureCursor或ITable查询出部分要素然后依次删除。但这两个接口只能针对单个图层的要素进行删除,而在编辑状态下,我们可能一次选中了多个图层下的多个要素,这时候就得使用IFeature接口的Delete方法进行操作,下面给出实现代码。2、删除要素2.1、主界面代码usingESRI.ArcGIS.Controls;us
- ArcEngine中的空间参考操作代码
HerryDong
ArcEngineArcEngine
GIS中的坐标系一般分为地理坐标系和投影坐标系。地理坐标系就是用经纬度来表示位置,投影坐标系则是按照一定的数学规则,将球体投影到平面上,一般用X、Y表示位置,单位为米。若要进行投影转换,如果转换前和转换后的空间参考是基于同一参考椭球体,则可在ArcGIS中直接进行转换,如果转换前和转换后的空间参考基于不同的参考椭球体,则首先需要计算七参数,然后才能在ArcGIS中进行转换。下面是ArcEngine
- ArcEngine符号化——填充符号
HerryDong
ArcEngineArcEngine
1、前言这篇博客来介绍一下ArcEngine中的填充符号。填充符号一般有简单填充、点填充、线填充等等,有一类特殊的点密度填充将在下一篇博客介绍。2、常用的填充符号2.1、简单填充符号2.2、点填充符号2.3、线填充符号2.4、叠加填充符号2.5、图片填充符号2.6、渐变填充符号3、实现代码usingSystem;usingSystem.Windows.Forms;usingESRI.ArcGIS.
- arcgis 线上到指定点的距离最短的一点/QueryPointAndDistance/ReturnNearestPoint
Prince_Treasure
ArcGISC#
在ArcEngine中可以通过两种方式实现:第一种:由ICurve和IPolyline接口的QueryPointAndDistance方法实现。该方法中有七个参数,下面对这些参数进行详细说明:1.extension参数:esriSegmentExtension枚举类型,用于指定曲线段延伸的方式,主要有esriNoExtension(曲线段不做延伸)、esriExtendTangents等。延伸方式
- C# AO/AE The coordinates or measures are out of bounds
Prince_Treasure
c#
c#arcengine开发shape导入sde中图形缩小不显示问题,因为shape不存在domain问题,导入sde中会把shape默认的图形范围导入,导致地图显示超过domain范围就会无法绘制。IGeoDatasetpGeoDataset=pInFeatureClassasIGeoDataset;doublexMin;doublexMax;doubleyMin;doubleyMax;pGeoD
- C# ArcGIS HRESULT:0x80040228
Prince_Treasure
arcgisc#
ArcObjects或者ArcEngine的C#版本在读取shp文件的时候报错:HRESULT:0x80040228首先确保你的license可用,方法是新建一个winform程序,向界面拖入license控件,如果能过成功则表示license没问题,如果拖入就直接报错则表明license有问题,需要重新安装或者换个安装包。如果上面一步的license检查没有问题,在读取的时候报错HRESULT:
- 基于C#的AE二次开发之IQueryFilter接口、ISpatialFilter接口、IQueryDef 接口的查询接口的介绍
Prince_Treasure
ArcGISC#VS2012c#开发语言
一、开发环境开发环境为ArcGISEngine10.2与Visualstudio2010。在使用ArcEngine查询进行查询的时候主要使用三种查询接口IQueryFilter(属性查询)、ISpatialFilter(空间查询)、IQueryDef(多表查询)那么这三个接口的区别是什么呢?要求IQueryFilterISpatialFilterIQueryDef属性约束TrueTrueTrue空
- C#转Java心路历程
xiangshangdemayi
JAVAjavaC#心路历程经验对比
前言:因为目前gis圈里,搞b/s的基本后台都用的是java、c++,java占主流。不过c/s的主流还是C#,主要集中在ArcEngine、skyline、osgEarth上做二次开发。但我一直是做b/s的,虽然搞了三年的C#,还是准备转java。有句话说的好,做一件事,最好的时间就是十年前,或者现在。所以别犹豫,干就完了。接下来对比一下C#和java的不同之处吧:1、gettersetterC
- 【编程实践】VS调用ArcEngine开发出现的问题之ArcGIS version not specified. You must call RuntimeManager.
狮智先生
编程实践visualstudiocodevisualstudiowindows
问题描述:“System.InvalidOperationException”类型的未经处理的异常在ESRI.ArcGIS.AxControls.dll中发生其他信息:ArcGISversionnotspecified.YoumustcallRuntimeManager.BindbeforecreatinganyArcGIScomponents.解决方法:在[解决方案资源管理器]中,打开【Prog
- FME数据处理04:面自相交拓扑检查
小薛引路
FMEFME
在ArcGIS中仅提供了线要素的自相交拓扑检查,并未找到关于面要素自相交的相关表述;本文结合FME2019。列举了几种面自相交的情形,并介绍了FME中三个转换器及其设置方法。关于ArcEngine的拓扑检查接口,可以参见基于C#的ArcEngine二次开发22:要素拓扑检查_小薛引路的博客-CSDN博客https://blog.csdn.net/m1m2m3mmm/article/details/
- ArcEngine向量法等距扩展多边形
小koala
在开发项目中遇到生成界址点注记的功能需求,注记坐标的确定成为难点,打算用多边形扩展的方法确定注记的坐标,但AE的不提供多边形扩展(收缩)接口,与之相似的,缓冲的点不是与原多边形坐标一一对应。在网上找了多边形扩展算法,采用向量法。1、原理和步骤原理草图步骤:获取边向量(末-初),向量用坐标点存储;获取边向量的单位向量;确定指向新点方向:向量减法(末-初)、sin(向量积);获取斜率:新向量(指向新点
- arcengine栅格渲染(栅格重分类) IRasterClassifyColorRampRenderer
jack5s
ArcGIS二次开发ArcGIS二次开发栅格重分类栅格颜色渲染
ArcGIS中常用到栅格数据的颜色渲染,以及相应级别的label的显示privatevoidRasterView(IRasterLayerRasterLayer,doubleBreakPoint1,doubleBreakPoint2,doubleBreakPoint3,doubleBreakPoint4,doubleBreakPoint5){IRasterClassifyColorRampRend
- ArcGIS Engine 与 Visual Studio版本对照表
surpassLiang
地理信息arcgisarcgis开发c#
通过C#对于Arcgis的二次开发,需要VisualStudio版本需要与ArcGISEngine对应,VisualStudio版本的或高或低都不能使ArcObjectsSDKformicrosoft.Netframework安装成功。下面是各个版本的对照表。序号ArcEngine版本visualStudio版本Network版本110.2/10.21/10.222010的社区、专业版和旗舰版3.
- 基于ArcEngine二次开发的选择带橡皮筋平移工具
hsg77
GIS相关ArcGISEngine开发笔记
基于ArcEngine二次开发的选择带橡皮筋平移工具去掉了单击居中的功能主要采用了下面三个方法:ScreenDisplay.PanStart(this.startPoint)ScreenDisplay.PanMoveTo(movePoint);ScreenDisplay.PanStop();usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Controls;using
- ArcEngine二次开发实用函数13:根据百万图号计算中央子午线和带号
小薛引路
AE二次开发实用函数集c#linqjava
计算公式及示例:以I46G027096为例6度分带6度带号的计算方式为:46-30=16带对应的6度分带的中央子午线为:16*6-3=933度分带对应的3度带的计算则需根据不同的比例尺来计算软件设计软件界面:界面布局:标签Name图幅号textBox_bwth6度带号TextBox6dh6度中央子午线TextBox6zwx3度带号TextBox3dh3度中央子午线TextBox3zwx完整源码:u
- ArcEngine二次开发实用函数14:结果导出的shp文件
小薛引路
AE二次开发实用函数集arcgis
在进行矢量数据检查时,我们经常性的需要将数据导出为shp格式的文件;本节就着重介绍矢量图像导出shp格式的文件的一些细节和注意事项。1.创建工作空间注解1:在创建工作空间时,我们需要传递的参数是shp文件保存路径名称的目录部分;名称部分则是在创建图层的时候再给。可以通过System.IO.Path.GetDirectoryName()和System.IO.Path.GetFileName()两个方
- ArcEngine二次开发0——入门(下载 部署 组件学习)
蔺WIT
专业学习笔记GISArcEngineC#AE二次开发
折腾一下ArcGISEngine二次开发。目录1、开发环境配置2、部署一个ArcGISEngine应用程序3、ArcObject组件学习4、报错及解决4、其他1、开发环境配置参考:https://blog.csdn.net/H48662654/article/details/113384150(使用ArcEngine前,先要安装对应版本的ArcGISDesktop桌面版软件,同时,AE也有对应的V
- arcengine的一些例子实现
benbensheng
打开mxd文件OpenFileDialogaxMapControl1.LoadMxFile(pFileName);打开shp文件IWorkspaceFactorypWorkspaceFactory=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath,0);IFeatureWorkspacepFeatureWorkspace=new
- 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