未发布 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等。
未发布 15个适合初学者学习C#编程语言的免费在线资源丨附地址 C#是一种通用编程语言,广泛应用于开发企业应用程序。C#是由Microsoft开发的,是.NET框架的主要语言。C#主要用于创建控制台应用程序、图形用户界面(GUI)应用程序和Web应用程序等。这些应用程序在个人计算机、Windows移动设备和嵌入式系统上运行。C#提供了一系列功能,例如自动管理内存和垃圾回收。它支持数据封装和继承和多态性,并且包括对COM技术(组件对象模型)和基于Windows的应用程序的本地支持。
如果你准备学习C#编程语言,那么有大量的在线资源非常适合初学者学习。这里列出了15个在线资源可以让你逐步学习C#编程。
未发布 苹果公司透露Siri新发音引擎的内部原理 苹果公司透露了他们通过深度学习让Siri的发音更加自然的内幕。
iPhone用户使用自然语言向Siri提问,Siri也通过语音回答问题。Siri可以使用21种语言回答问题,遍布全球36个国家。在2017年WWDC大会上,苹果宣布了iOS 11上的Siri将使用最新的文本语音引擎。2017年8月,苹果的机器学习期刊透露了他们是如何让Siri的发音更加自然的。 iPhone上的语音是通过拼接预先录制的人类语音来生成的。先录制几个小时的语音,再把它们拆分成单词,然后再把单词拆成最基本的元素:音素。在生成句子的时候,系统会选择合适的音素,再把它们拼接在一起。
为音素选择合适的录音是一件很有挑战性的事情。每一个音素都要与发音相匹配,也要与相邻的其他音素相匹配。旧系统只有几种录音,音素的来源很有限,所以听起来有点不自然。于是苹果决定使用深度学习来确定声音单元在句子中的各种属性。
每一台iOS设备都包含了一个小型的预录音素数据库。每一份数据都包含了音频属性:声音频谱的音高和音长。一个经过训练的“深度混合密度网络(deep mixture density network)”用于预测每一个音素在句子中的特征。苹果设计了一个成本函数来训练这个网络,着重考虑到两个方面的问题:如何让音素与发音相匹配以及如何让它与句子相融合。
在通过“Viterbi”算法从数据库里找到需要的数据后,系统会选出最佳的音素组合,把它们拼接起来,然后播放出声音。
另一种方式是生成声波,而不是拼接预录的声音。2016年9月,Alphabets Deepmind发布了WaveNet引擎,可以基于电脑生成文本语音。它的不足是速度很慢,就算使用最快的台式电脑也需要很长时间才能完成合成任务。所以,Siri不会在短时间使用合成语音代替录制语音。
未发布 Edraw Office Viewer component教程(二):将Excel嵌入VB 6并使之自动化
使用Edraw office viewer component,vb开发人员可以轻松地将一个现有的Excel电子表格嵌入到表单中,然后进行自动化。在加载表单时,开发人员可以使用Open方法从硬盘驱动器或服务器中加载* .xls、* .xlsx、* .xslm或* .cvs文件,并在窗口的某个区域中打开。Excel文件可以是只读、完全编辑或禁止保存等状态。开发人员还可以使用excel组件轻松实现excel自动化。
本文将演示如何逐步将Excel嵌入到VB中。如果你没有officeviewer.ocx文件,请先安装。
Office viewer component - 支持Word、Excel、PowerPoint、Visio和Project的vb6、vb.net项目
在VB 6中嵌入Excel组件
启动Visual Basic并创建一个新的标准项目。默认情况下创建Form1。
在“工具箱”面板中,右键单击空白区域。然后单击Component...
在弹出的对话框中,查看Edraw Office Viewer Component。
单击确定按钮。
Office Viewer Component便已添加到“工具栏”窗口中。
切换到VB 6窗口,然后添加组件。
该组件包括许多自定义Excel窗口的方法、事件和属性。
开发人员可以使用以下代码在Form_Load事件中打开一个excel文件。
Private Sub Form_Load() EDOffice1.OpenFileDialog'EDOffice1.OpenWord “d:\ test.xlsx” 'EDOffice1.Open“d:\ test.xls”,“Excel.Application” End Sub |
为了保护Excel工作表不被最终用户修改,开发人员需要在DocumentOpened事件中添加以下代码。
Private Sub EDOffice_DocumentOpened() EDOffice1.ProtectDoc 1'XlProtectTypeNormal End Sub |
一些包含excel自动化的方法可用于创建或修改Excel数据。
bool ExcelAddWorkSheet(long Index); bool ExcelDeleteWorkSheet(long Index); bool ExcelActivateWorkSheet(long Index); 长ExcelGetWorkSheetCount(); bool ExcelSetCellValue(long Column,long Row,BSTR Value); BSTR ExcelGetCellValue(长列,长行); bool ExcelSetRowHeight(long Row,double Height); bool ExcelSetColumnWidth(long Column,double Width); afx_msg bool ExcelDeleteRow(long Row); bool ExcelDeleteColumn(long Column); bool ExcelInsertRow(long Row); bool ExcelInsertColumn(long Column); bool ExcelInsertPageBreakInRow(long Row); bool ExcelInsertPageBreakInColumn(long Column); bool ExcelCopyToClipboard(); bool ExcelPasteStringToWorksheet(BSTR bstText); |
使用Visual Basic自动化操作Excel
单击项目,然后单击引用。将显示“引用”对话框。向下滚动列表,找到Microsoft Excel object库(Microsoft Excel xx.x Object库),然后选择引用Excel。如果列表中没有正确的Excel Object库,请确认你是否安装了合适的Excel版本。
单击“确定”关闭“引用”对话框。
将CommandButton添加到Form1。
在Form1的代码窗口中,插入以下代码:
Private Sub Command1_Click() Dim oXL As Excel.Application Set oXL = EDOffice1.GetApplication() Dim oWB As Excel.Workbook Set oWB = EDOffice1.ActiveDocument() Dim oSheet As Excel.Worksheet Dim oRng As Excel.Range Set oSheet = oWB.ActiveSheet oSheet.Cells(1, 1).Value = "First Name" oSheet.Cells(1, 2).Value = "Last Name" oSheet.Cells(1, 3).Value = "Full Name" oSheet.Cells(1, 4).Value = "Salary" ' Format A1:D1 as bold, vertical alignment = center. With oSheet.Range("A1", "D1") .Font.Bold = True .VerticalAlignment = xlVAlignCenter End With ' Create an array to set multiple values at once. Dim saNames(5, 2) As String saNames(0, 0) = "John" saNames(0, 1) = "Smith" saNames(1, 0) = "Tom" saNames(1, 1) = "Brown" saNames(2, 0) = "Sue" saNames(2, 1) = "Thomas" saNames(3, 0) = "Jane" saNames(3, 1) = "Jones" saNames(4, 0) = "Adam" saNames(4, 1) = "Johnson" ' Fill A2:B6 with an array of values (First and Last Names). oSheet.Range("A2", "B6").Value = saNames ' Fill C2:C6 with a relative formula (=A2 & " " & B2). Set oRng = oSheet.Range("C2", "C6") oRng.Formula = "=A2 & "" "" & B2" ' Fill D2:D6 with a formula(=RAND()*100000) and apply format. Set oRng = oSheet.Range("D2", "D6") oRng.Formula = "=RAND()*100000" oRng.NumberFormat = "$0.00" ' AutoFit columns A:D. Set oRng = oSheet.Range("A1", "D1") oRng.EntireColumn.AutoFit oXL.UserControl = True End Sub |
按F5运行项目。Excel将自动填充excel单元格。
自动化Excel时要注意的一点是Excel Macro Recorder。它仍然在Word 2007中,但隐藏在开发者功能区栏。
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。
未发布 【315style】VMProtect正版授权低至6.9折,折后再享第二套半价! 在3.15国际消费者权益保护日到来之际,慧都科技联合全球知名厂商VMPsoft特别推出“VMProtect正版授权超低折扣”的促销活动,活动期间,VMProtect授权低至6.9折,折后再享第二套半价!
活动时间:即日起至2018.4.15
用户在购买同一版本的平台授权时,既可在原有折扣基础上享受第二套半价的优惠。
如:用户购买 Ultimate Edition Personal License for Windows平台 + for OS X平台
最终购买价为:3742+3742/2=5613元
VMProtect是一款虚拟机保护软件,是目前最为流行的保护壳之一。VMProtect将保护后的代码放到虚拟机中运行,这将使分析反编译后的代码和破解变得极为困难。除了代码保护,VMProtect还可以生成和验证序列号,设置过期时间,限制免费更新等等。
郑重承诺:慧都所售产品均为厂商授权的正版产品,在线订购安全便捷,请完全放心!
未发布 JMS消息平台FioranoMQ更新v10.3.0,改进共享HA功能 FioranoMQ是世界上第一个基于网格、点对点JMS消息平台,具有强大且独特的功能,包括动态路由、消息流的分布式调试、JMS客户端应用程序的动态部署、无限的可扩展性、直接援引标准的JCA组件以及无与伦比的JMX标准易管理功能。在封闭的基准测试中超过每秒50,000条的消息,FioranoMQ还是世界上最快的独立的标准消息服务器。
v10.3.0新增
改进FioranoMQ共享HA(高可用性)功能
共享HA功能已得到增强,使其对活动代理和共享数据库以及锁定文件之间的网络中断更敏感。通过检查锁定文件是通过NFS共享创建还是使用本地文件,增加了更多安全检测来检查锁定文件上代理的真实性。
新增的共享HA代理解决了以下问题:
当活动代理和共享数据库之间的网络连接断开时更改状态。
数据库和锁定文件运行状况检查:如果活动代理与共享数据库的断开连接,代理将自动进行故障切换。
HA状态线程不会在任何情况下退出。
切换到被动状态后,活动代理必须释放锁,让待机代理获取锁并变为活动状态。
共享HA部署必须满足以下条件:
CSP磁盘使用通知
当启用生产者故障快速功能时,“客户端持久性”(CSP)的磁盘使用率可能非常频繁,具体取决于将消息发送到队列或主题目标时设置的超时值。因此,引入了CSP磁盘使用警报机制。客户端应用程序通过在客户端进行日志记录并在特定生产应用程序的CSP的使用违反配置的阈值时发出提醒。
注意:此功能现在可在Java和C/C++ RTL中使用。
优化加载管理对象
在代理启动期间或通过JMX API调用时,通过XML文件加载管理对象已被优化,以处理更多数量的目标配置。优化确保使用某些常用目的地的客户端应用程序不会受到影响,从而避免长时间停顿。
MQTT安全和认证
支持创建与MQTT代理程序的安全连接。
CSharp RTL(JMS 2.0)的异步发送功能
新的发送方法已添加到MessageProducer中,允许消息异步发送。这些方法立即返回并在单独的线程中执行发送,而不阻塞调用线程。
JMX API
添加以下JMX API:
Connection MBean中的API来获取客户端版本信息和构建号。
主题会话MBean下的API'getPersistentQueueSize()'和'getPSQAvailableMessageCount()'。
'listAllSessionsInfo()',所有主题会话的列表及其PSQ度量。
'getClientID(TopicSessionToken)'获取与主题会话令牌相关联的客户机ID。
'get(set)LockFileValidationTimeout()',在共享HA中锁定文件验证超时。
资源管理器mbean下的'getResourceCount()'分别获取由资源名称和实例计数组成的地图作为关键值。
CSharp RTL
在CSharp RTL中添加了新的管理API,用于限制基于IP地址的FioranoMQ代理。
“未接来电”,当代理人关机时调用的方法将在代理程序启动时存储和执行。此功能现在可在C#RTL中使用。
改变
FioranoMQ 10.3.0代理和Java RTL需要Java 8或更高版本。
基于net beans的Studio工具将不再与FioranoMQ安装程序一起发送,与安装程序一起提供的基于eclipse的Studio将针对64位平台。
共享HA条件:
HA对(Primary-Secondary)通信和网关服务器通信必须共享相同的网络接口卡。
锁定文件和共享数据库必须共享相同的装载点。
HA中的代理不得与HAManager属性“Primary”共享相同的值。
最新的C/C++ RTL库现在使用VS 2015构建。
未发布 2017年8个最流行的Web编程趋势 互联网一直在不断的发展,这意味着开发人员必须及时了解当前的所有变化。人们在新闻、社交、购物到银行等各大方面都与互联网有着千丝万缕的联系。因此,为了满足全球数百万网络用户的需求,
Web开发需求正在上升。
Web编程趋势是在W开发的过程中不断变化,不断创新,并逐步淘汰已经过时的想法。以下是2017年你可能会看到的一些当前的Web编程趋势:
视频曾一度统治互联网,它能确保那些在线的人参与互动,并吸引受众停留更长的时间。随着网页上视频的观看次数显着增加,从长远来看,也可以带来更多的转化。

这是一个越来越多开发人员喜欢使用的集合。通过它,你可以创建单页应用程序,而不需要依赖于java中的框架。此外,该集合可以确保使用它的人做到最好。
这一直是一个趋势。开发人员正在使用Motion UI创建具有生命力的网站,并且还会对登录到其中的每个用户做出反应。这是出现在你屏幕上的特殊效果。
材料设计基本上是Google的一种哲学,它定义了应用程序在无线设备上的外观和性能。使用它可以更改所有类型,包括网站的风格和动画在布局中显示的方式。在视觉上,它正在成为开发人员的关键工具。
当你正在寻找创建在服务器上运行的网站时,你应该考虑这一点。这是一个趋势,因为它是创建网站的绝佳方式。创建的文件大大简化了,因为它们存储在除数据库之外的文件中。其拥有流量、安全性、速度和易于操作等优点。加载网站更容易、更安全。
浏览多个标签、以及链接到更多页面的网页已经是过去式了。现在用户正在选择单页面的网站、博客等类型。他们使用更方便,特别是在人们在旅途中的移动设备上。
Angular 2带来了很多转变,例如Google的JavaScript框架,这是完全重新设计的。它的好处是它利用了JavaScript ES6中的功能。这意味着未来的Web开发将变得更容易和有效。
这是未来Web开发中一个重要的趋势,特别是在游戏行业。它开始于Vive和Oculus Rift的到来,为游戏世界带来了巨大的可能性。像Google和Mozilla这样的全球性公司带来的API将有助于虚拟现实的转型。
Web开发人员必须了解Web编程的最新趋势,以便设计符合这些趋势的网站以及增加用户体验的网站。随着互联网的快速发展,这些趋势也会随之而变。因此,随时了解行业趋势是非常有用的。