未发布 GIS软件开发包Map Suite v10.0发布,支持Windows、Linux和macOS多平台 Map Suite 10.0新功能
核心功能支持Windows、Linux和macOS多平台。
所有Map Suite产品系列都共享核心API。
删除合并模块并将所需的程序集移动到特定程序包。
创建可在多平台(包括Windows、Linux和macOS)上运行的新产品中心。
Map Suite产品托管在NuGet服务器上,而不是Map Suite安装程序。
简化Map Suite许可策略。
按功能拆分MapSuiteCore 9.0程序集。允许将必要的程序集导入到这些项目中。
在Linux上支持ECW文件。
在Linux上支持MrSid和JPEG2000文件。
用于Map Suite产品的BareBone NuGet Package可以创建最小尺寸的应用程序。
用于Map Suite产品的Standard NuGet Package可以让用户更轻松的将现有的9.0项目转移到10.0版本上。
v10.0和v9.0之间的变化
我们努力使安装过程和版本维护变得更加容易,并将所有Map Suite产品重新打包到NuGet软件包中。开发人员可以选择在本地安装引用、通过使用Visual Studio的NuGet管理器进行管理或者为你的团队设置本地NuGet服务器。
更有效率
Map Suite产品可帮助开发人员更有效地创建GIS应用程序。将Map Suite组件运用到你的项目中并进行分享会让你的工作变得更加效率。
跨平台/便携式
在Map Suite 9.0之前,我们一直考虑支持像Linux、MacOS、Android、iOS这样的多平台。然而,基础结构阻止了我们的步伐。如果你已经是使用Map Suite产品的开发人员,你可能知道我们支持Windows(Wpf、WinForms ...)、iOS和Android平台,但在很长一段时间中这是比较困难的。想象这种情况:客户在Windows平台上报告MapSuiteCore中的错误。我们对它进行修复并测试。但这并不是全部的工作。我们还要向iOS和Android团队报告,要求他们解决相同的错误。这是基础结构方面的错误。我们有几个MapSuiteCore分支,它依赖于不同的框架。每次修复bug时,我们需要与其他平台同步。

现在,我们的目标是让Map Suite Core的源代码尽可能便携。借助分离MapSuiteCore的机会,我们可以将现有的功能转换为便携式。本质上来说各平台可以共享相同的源代码。

分离Map Suite Core
在Map Suite 9.0中,我们在名为“MapSuiteCore”和几个扩展的程序集中支持大部分功能。而其他产品则具有基础结构。当你启动项目时,你只能引用包含Map Suite所有功能的“MapSuiteCore”。这无法最小化你的项目。
我们决定按照功能来分离Map Suite Core,例如形状、层数、样式、符号等。你所知道的每个Map Suite功能都可能是一个单独的包。你可以选择性地使用项目所需的软件包,并将应用程序控制在最小。
更简单的试用许可证
认证和许可是NuGet软件包的一个缺点。不过,我们为非注册开发人员制定了一个新策略,你不用注册就可以在有限的时间内评估Map Suite产品。你只需打开Visual Studio,创建一个项目,打开NuGet管理器并输入“MapSuite”。它会返回给你Map Suite支持的全部功能列表。
PS:原始许可证仍与10.0兼容。
第一次运行Map Suite 9.0或更低版本样本的工作流程。

第一次运行Map Suite 10.0样本的工作流程。

更改命名空间
在Map Suite 9.0和以前版本中,命名空间主要由ThinkGeo.MapSuite.Core和版本命名空间两部分组成,如ThinkGeo.MapSuite.WebEdition。现在ThinkGeo.MapSuite.Core基于它的功能已经分离了,现在我们有:
ThinkGeo.MapSuite包含用于构建Map Suite应用程序的常用和基础类,如GeographyUnit、GeoCollection等。
ThinkGeo.MapSuite.Drawing包含绘图相关类,如GeoImage、GeoSolidBrush等。
ThinkGeo.MapSuite.Layers包含一些基础类,如Layer、FeatureLayer等。
ThinkGeo.MapSuite.Shapes包含几何相关类,如PlygonShape、LineShape等。
ThinkGeo.MapSuite.Styles包含用于构建地图样式的类,如AreaStyle、LineStyle等。
未发布 Edraw Max(亿图图示)教程:如何自定义组织结构图展示的信息 在我们的日常工作中,或多或少的需要绘制一些图表,可能是某个会议的流程图,也有可能是公司的组织结构图等等,然而绘制这么多的图表,仅靠Word、PPT似乎已经越来越无法满足我们的需求了。Edraw Max(亿图图示)的出现,就是为了更好地满足我们不断提示的需求。
1、自定义组织结构图字段
只需点击“组织结构图”菜单的“定义域”按钮,在形状数据对话框中,就可以定义员工图形的数据域。而且这项调整将会作用于表中所有形状,所有数据也都可以导出为 excel 表格形式。
如果默认的属性中没有你所需要的,还可以通过“定义属性”添加新的属性。
2、显示选项
点击“组织结构图”菜单中的“显示选项”按钮,即可在显示对话框中,自定义显示的数据,照片、尺寸,显示顺序,字体样式和形状大小。“显示选项”左下角可选择应用的范围,可根据需求自由选择。
未发布 矢量图形引擎库VectorDraw Developer Framework发布v7.7014.0.5
VectorDraw Developer Framework(VDF)v7.7014.0.5更新内容:
WebJS
新增需求(7.7014.0.1)
新增需求(7.7014.0.5)
漏洞(7.7014.0.1)
70001204 线路对象捕捉无法运作
70001206 导出到vds脚本时出现异常
70001210 WebGl渲染中的实体影线问题
漏洞(7.7014.0.5)
Converter
新增需求(7.7014.0.1)
漏洞(7.7014.0.1)
漏洞(7.7014.0.5)
Engine
新增需求(7.7014.0.3)
- 70001231 改进触摸控制
- 70001234 使用Wrapper检查鼠标是否位于ViewCube内部
- 70001239 是否可以在OnFilterOsnap事件中获取交集对象
- 70001241 用webGl 3d模式绘制线条和文本
漏洞(7.7014.0.3)
- 70001235 版本2000中的DXF导出问题
- 70001236 在Wire2D模式下,线路抗锯齿功能无法正常工作
- 70001237 鼠标没有正确渲染
- 70001238 vdLayout调整大小将引发异常
- 70001240 AlignToView对象在PDF输出中缩放
- 70001242 导出多边形为dwg dxf文件格式时出错
漏洞(7.7014.0.4)
- 70001243 不完整的纸张模型刷新
- 70001245 当VectorDrawBaseControl WndProc被调用时,出现间歇性崩溃
未发布 ActiveX组件CADViewX v12发布,支持最新的AutoCAD®DWG 2018版本 CADViewX一款能让应用程序具有强大CAD图像浏览和打印功能的图像处理工具,无需任何CAD软件或查看器即可打开、浏览、打印AutoCAD等几十种格式的图像文件,还能享受直观的鼠标滚轮缩放、拖拽、平铺印画功能。
CADViewX v12更新内容
CADViewX v12是用于导入和导出CAD文件的新版本的ActiveX组件。
现在,CADViewX Lite支持最新的DWG版本 - AutoCAD®DWG 2018。借助CADViewX Lite开发的应用程序将能够查看最新的图纸。
要测试CADViewX Lite并将DWG 2018查看功能添加到应用程序中,请下载试用>>>
未发布 Java新版本的开发已正式进入轨道,版本号18.3 Java 9在9月21日正式发布,同时Oracle宣布将Java新版本的发布周期调整为每半年一次。目前,Java新版本的开发也已正式进入轨道。就已公开的消息来看,下一个版本的Java预计会在2018年3月发布,版本号将会是18.3,已经规划加入的特性包括JEP 286和296。
根据reddit站点上的讨论,首先更新的是JEP 296,Valhalla预计很快也会加入进来。OpenJDK的主页面则显示,已确定要在18.3版本实现的是JEP 286和296。
JEP 296主要是将JDK仓库群(JDK Repository Forest)合并为一个仓库,旨在降低管理大量仓库群的成本。根据InfoQ之前的报道,该仓库群的合并已经完成。这些软件仓库是在OpenJDK发展史上历次分裂生成的,在OpenJDK 9及以前的版本中将会继续存在。在这次合并操作之前,OpenJDK曾分裂为多个不同的Mercurial软件仓库群,这导致了许多问题,例如不能以原子方式对多个软件仓库应用漏洞修复(Bug Fixes)。在OpenJDK合并完成后,只会有一个软件仓库,并复制在三个开发线上。为了简化仓库的管理,JDK中还创建了用于在合并和未合并版本间移动更改的工具。
JEP 286提议在Java中引入局部变量的类型推断,该JEP在2016年提出,InfoQ曾经报道过该JEP的概况和相关的开发者调查结果。该JEP旨在减少编写Java代码相关的仪式性的内容,提升开发人员的体验,同时还要保证Java语言的静态性。它会减少开发人员在声明局部变量时,没有必要的变量类型声明。如果该JEP实现的话,在声明局部变量的时候,就可以采用类似如下的方式:
var list = new ArrayList(); // infers ArrayList
var stream = list.stream(); // infers Stream
这种语句只能用于带有初始化器(initializer)的局部变量、增强的for-loop中的索引以及传统for-loop中声明的局部变量。它不能用于方法声明、构造函数声明、方法返回值、字段、catch语句以及其他类型的变量声明中。
关于局部变量的类型推断,不管是JVM体系中的语言还是其他语言都提供了一定形式的支持,比如C++(auto)、C#(var)、Scala(var/val)以及Go(通过:=进行声明)。至于该使用var作为关键字,还是使用let或类似于C/C++中的auto作为关键字,之前曾经有过一个面向开发者的调查。大约84%的回答表明定义可变内容的变量用关键字var是恰当的,只有百分之几的回答者建议使用auto更合适。根据Java语言架构师Brian Goetz介绍,该功能应该使用关键词var。
关于该特性的用法,在reddit上有一些讨论。有人表示,即便在支持“auto”语法的语言中,该特性使用的也比较少,因为有些人希望一眼就能看出变量的类型是什么。也有人认为,var有它的适用空间,在小的代码块中,直接用它实例化对象是可以的。如果是作为方法返回值的话,还是希望明确声明类型,Java的类型推断并不支持方法返回值,这一点倒不必担心。如果函数或代码块比较长的话,就不建议使用var了并要考虑适时进行代码的重写。时间和经验将会让我们更加明确应该在何时使用新功能,就像Optional刚出现时,也是耗费了一些时间才明确其推荐适用场景。
Valhalla项目中包含了一些有趣的JEP,包括值类型(Value Type)、针对原始类型实现泛型功能、增强的volatile等,外界很期待这些内容最终也能添加到新版本中。
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 jQuery JavaScript的综合性UI组件库jQWidgets更新至v5.4.0丨附下载 jQWidgets是一个基于jQuery JavaScript的综合性和创新性的HTML5 UI组件库,旨在帮助开发者创建专业、跨平台的Web应用程序,并最大限度的节省开发时间。jQWidgets包含30多种UI组件,是最快的JavaScript UI框架之一。
jQWidgets v5.4.0更新内容:
改进:
修复:
试用、下载、了解更多产品信息请点击"咨询在线客服"

未发布 MailBee.NET Objects发送电子邮件(SMTP)教程八:使用多个SMTP服务器发送邮件 MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
本文主要介绍了如何使用使用多个SMTP服务器发送邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
当开发人员不确定他将用于发送电子邮件的SMTP服务器是否可靠(例如,有时服务器崩溃)时,使用多个SMTP服务器则非常有用。例如,当使用单个SMTP服务器发送消息时,如果此SMTP服务器崩溃,则MailBee无法发送消息。但是,在使用多个SMTP服务器时,如果一个SMTP服务器崩溃,MailBee会根据这些服务器的优先级别尝试使用其他SMTP服务器。
因此,使用多个SMTP服务器增加了邮件发送成功的可靠性。MailBee.NET Objects允许开发人员管理SMTPSERVER对象的集合,存储在SMTP.SmtpServers的SMTP对象的属性。开发人员应调用SMTP.SmtpServers.Add方法向集合添加一个新的SmtpServer对象实例。这个方法有五个重载。第一个重载允许添加直接SmtpServer对象,如下所示:
| C#: SmtpServer smtp_srv = new SmtpServer(); smtp_srv.Name = "mail.domain.com"; smtp_srv.AccountName = "john_doe"; smtp_srv.Password = "secret"; oMailer.SmtpServers.Add(smtp_srv); |
VB.NET: Dim smtp_srv As SmtpServer = New SmtpServer() smtp_srv.Name = "mail.domain.com" smtp_srv.AccountName = "john_doe" smtp_srv.Password = "secret" oMailer.SmtpServers.Add(smtp_srv) |
SMTP.SmtpServers.Add方法的下一次重载允许通过指定的服务器名称或相应的IP地址添加新的SMTP服务器,如下所示:
| C#: oMailer.SmtpServers.Add("127.0.0.1"); oMailer.SmtpServers.Add("smtp.company.com"); |
VB.NET: oMailer.SmtpServers.Add("127.0.0.1") oMailer.SmtpServers.Add("smtp.company.com") |
此外,开发人员可以指定SMTP服务器的端口号和优先级。默认优先级为0(即最高),默认端口号为25。以下代码将两个具有不同优先级的SMTP服务器添加到集合中:
| C#: oMailer.SmtpServers.Add("127.0.0.1", 33, 1); oMailer.SmtpServers.Add("smtp.company.com", 37, 2); |
VB.NET: oMailer.SmtpServers.Add("127.0.0.1", 33, 1) oMailer.SmtpServers.Add("smtp.company.com", 37, 2) |
此外,SMTP.SmtpServers.Add方法的以下重载允许通过指定的服务器名称(或相应的IP地址)、登录名和密码将SMTP服务器添加到集合中,如下所示:
| C#: oMailer.SmtpServers.Add("127.0.0.1", "dan_brown", "password"); oMailer.SmtpServers.Add("smtp.company.com ", "john_doe", "secret"); |
VB.NET: oMailer.SmtpServers.Add("127.0.0.1", "dan_brown", "password") oMailer.SmtpServers.Add("smtp.company.com ", "john_doe", "secret") |
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。