未找到

未发布 .NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
by Harriet666 keys 分享 1507866121963
前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错。但还是有一些开发者发出了疑问,.NET Core、Xamarin、.NET Standard和.NET Framework之间有哪些不同呢?本文就为大家简单描述一下这四者之间的区别。
 
.NET Core

.NET Core是免费、跨平台的,是托管框架的开源实现。它支持4种类型的应用程序:控制台、ASP.NET Core、云和通用Windows平台(UWP)。Windows Forms和Windows Presentation Foundation(WPF)并不包含在.NET Core中。

从技术上讲,.NET Core仅支持控制台应用程序。ASP.NET Core和UWP是以.NET Core为基础构建的应用程序模型。

与.NET Framework不同,.NET Core没有作为Windows组件考虑。因此,更新是以NutGet包的形式,而不是通过Windows Update。由于.NET Core运行时安装成了App-Local,而应用程序升级是通过包管理器完成的,所以应用程序可以关联特定的.NET Core版本以及单独升级。
 
.NET Standard

托管框架的每一种实现都有一套自己的基类库。基类库(BCL)包含诸如异常处理、字符串、XML、I/O、网络和集合这样的类。

.NET Standard是一项实现BCL的规范。由于.NET实现需要遵循这项规范,所以应用程序开发人员就不用担心每一种托管框架实现的BCL不同。

框架类库(FCL),如WPF、WCF、ASP.NET,不包含在BCL中,因此,也就不包含在.NET Standard中。

.NET Standard与.NET实现之间的关系就和HTML规范与浏览器之间的关系一样。后者是前者的实现。

因此,.NET Framework、Xamarin和.NET Core,每一种托管框架都实现了.NET Standard中的BCL。随着计算机工业不断推出新的硬件和操作系统,将来还会出现新的.NET托管框架。该标准让应用程序开发人员知道,他们可以依赖于一套始终如一的API。

每个.NET版本都对应一个.NET Standard版本。

API一致,将应用程序移植到不同的托管实现以及提供工具都会更简单。

.NET Standard被定义为一个单独的NuGet包,因为所有的.NET实现都必须支持它。工具变得简单了,因为对于特定的版本,它们有一套相同的API。你还可以针对多个.NET实现构建一个库项目。

你还可以构建特定平台API的.NET Standard封装器。
 
.NET Standard vs 可移植类库

可移植类库做的不是同一件事吗?

可移植类使用多个平台均都支持的通用API。因此,支持的平台越多,可用的API就越少,而且,对于特定的平台组合,很难知道到底支持哪些API。对于一个新平台,已有的PCL必须重新编译。PCL还需要微软针对每个平台创建一个新的框架实现分支。

由于.NET Standard确定了API,而不是一个实现,所以不需要重新编译应用程序。任何新发布的.NET实现都实现了必须的库。应用程序不需要重新编译就可以运行在新的硬件平台或操作系统上。从理论上讲,在调用API时可能会捕获到NotSupportedException异常,但那种情况应该很少见。
 
小结
  • .NET Standard是一项API规范,每一个特定的版本,都定义了必须实现的基类库。
  • .NET Core是一个托管框架,针对构建控制台、云、ASP.NET Core和UWP应用程序进行了优化。每一种托管实现(如Xamarin、.NET Core或.NET Framework)都必须遵循.NET Standard实现BCL。
  • .NET Framework用于构建桌面应用程序和运行在互联网信息服务器(IIS)上的ASP.NET应用程序。它是第一个托管框架。
  • Xamarin则是一个用于构建iOS、Android、macOS和桌面应用程序的框架。
【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月31日

未发布 交互式地图图表组件AnyMap更新至v8.0.0,改进图表API
by Harriet666 keys 分享 1507802178604

AnyMap的可交互式地图是AnyChart组件的一种独特的功能,能够让你可视化地理相关的数据。(重要推荐:AnyMap已加入在线订购,超值特价低至¥368起!

AnyMap v8.0.0更新:
Modular System  Robust JavaScriptHTML5 charts  AnyChart
模块化系统
模块化系统是AnyChart 8的核心。它允许您仅连接实际使用的图表类型和功能,大大减少了在网页上运行的大小。基于模块化的AnyChart与流行的捆绑工具(如Webpack,Browserify等)完全兼容。使用我们的JS Builder轻松生成自定义构建。
 
自定义JavaScript Builds
自定义JavaScript Builder专门用于组装一个仅包含需要使用的功能和图表类型的JavaScript文件。AnyChart 8.0.0版包含30个模块和 16个主题。您还可以创建含许可证密钥的文件 。
 
Node.js服务器端渲染
Node.js服务器是一个轻量级的Web服务器,提供用于生成矢量图形(PDF,SVG或PS)、位图图像(PNG,JPG或TIFF)、PDF报告和CSV和XLSX(Excel)中的数据的API。它使用JavaScript代码以及JSON和XML配置作为输入数据。服务器非常易于安装和自定义,您可以在任何主要平台上运行:Linux,Windows和macOS。它是创建通过电子邮件或社交网络共享工具发送图表的报表系统的理想选择。
 
No Data Label Feature  Robust JavaScriptHTML5 charts  AnyChart
无数据标签功能
无数据标签功能是用于通知图表查看器数据不可用的API。由于默认情况下缺少数据,或者通过“数据更新API”,“排除数据点”功能或通过交互性删除数据,则可能会丢失数据。
 
重做CSV/Excel导出
根据需求,我们重新编制了为图表准备的CSV/Excel数据的算法。现在,它考虑到图表类型的特定功能,并允许您为不同的系列使用多个数据集。
Chart Export Settings  Robust JavaScriptHTML5 charts  AnyChart
图表导出设置
现在,您可以自定义每个图表的导出设置:在Facebook上共享的链接和说明、图像导出选项等。
上下文菜单自定义API
我们大大简化了上下文菜单定制的过程。现在,上下文菜单中的每个项目都被分配了一个DI,可以访问相应的字段和设置以及添加自定义ID。我们还添加了本地化上下文菜单的选项。
一般的API改进
我们大大改进了第八代JavaScript图表库中的AnyChart JS Charts API。 界面设置、网格设置、数据映射设置现在变得很容易。为了方便和简化从
AnyChart 7到AnyChart 8的转换,我们创建了允许大多数用户以半自动模式切换到新版本的迁移工具。
未发布 界面控件包Essential Studio for Windows Forms 2017 v3发布丨附下载
by Harriet666 keys 分享 1503046651124
Essential Studio for Windows Forms界面控件包含了高性能的Windows应用程序开发中所需的所有控件,如Grids、Charts、Gauges、Menus、Calendars、Editors等等。 到目前为止,我们开发Windows Forms 控件包已达十几年,所以该控件包是功能最齐全的控件集。除此之外,Essential Studio for WinForms还包含了一些特有控件,使您可以为应用程序添加Excel、Word和PDF格式文件的浏览和创建功能。
 
Essential Studio for Windows Forms 2017 v3下载>>>
 
Essential Studio for Windows Forms 2017 v3让开发人员创建更好的应用程序,并增加了DocIO的内容控件,支持消息框的定制以及标记PDF的功能。
 

DOCIO

内容控件

DocIO能够在Word文档中创建和修改内容控件,并提供了一种设计具有以下功能文档的方法:
  • 创建一个类似表单的用户界面。
  • 防止用户编辑内容控件的内容。
  • 将内容绑定到XML数据。
2118d706e02148f68ad4813a2a8bc83cojpg
 

Word转换PDF增强功能

 
  • DocIO现在可以在Azure网站中将Word文档转换为PDF。
  • DocIO现在可以将具有旋转图像的Word文档转换为原始格式的PDF格式。
  • DocIO现在可以将镜像边距的Word文档转换为原始格式的PDF格式。
77d4c1802b1f4d7db60deee76e8842b0ojpg
 

高级消息框

定制

支持自定义消息框元素中的字体,如标题、细节和按钮。
1883379cd89745fc8b8a4158bc9135e9ojpg
 

PDF

压缩现有的PDF文档

减小PDF文件的大小。
238247293b70438fb670a17db5c3059aojpg

标记PDF

通过允许用户创建PDF/通用可访问性(PDF / UA)或符合章节508的PDF文档来提供辅助功能。
35eadc2d52c14a84a7ab60fb5f324033ojpg
 

演示

支持插入列

演示文稿现在允许在PowerPoint演示文稿中的表中插入列。
35a8e4315d874073a20898374270842bojpg

PDF和图像转换增强功能

演示文稿现在可以将具有旋转和嵌套组形状的PowerPoint演示文稿精确转换为PDF或图像格式。
22f440e4e97c4379aec13096371bbdb2ojpg
 

XLSIO

过滤器功能增强

  • XlsIO现在允许用户通过文本、数字、单元格颜色和字体颜色对过滤的数据进行排序。
  • 提供基于自定义文本过滤器过滤数据的功能。

    7bf1f958faca4e9d929f94c9804e2cb1ojpg

未发布 Xamarin for Visual Studio v4.5发布,重新设计Property Pages和Manifests
by Harriet666 keys 分享 1494581303548
Xamarin for Visual Studio 让开发者可以在Windows上用 Visual Studio 开发原生 iOS, Android 和Windows应用程序。Xamarin for Visual Studio提供了流畅的iOS和Android的API查询,让开发者专注于应用本身。更棒的是,开发者完全可以利用一切他熟悉的开发工具进行开发,从而保证项目的高效性和持续性。

Xamarin for Visual Studio点击下载>>>

V4.5版本中包含的功能:


重新设计Property Pages和Manifests

在Xamarin 4.5中,我们重新设计了Property Pages和Manifest编辑器。为了与Visual Studio本身和Visual Studio for Mac保持一致性,新的属性页面进行了重组和简化并支持高DPI显示。现在,你可以继续在Property Pages中编辑csproj选项,并Manifest编辑器显示manifest选项。
 
新的iOS项目属性页面
新的iOS属性页面提供存储在正确构建和运行项目所需的csproj文件中的所有选项。新的设计方式使之更简单有效。

更好的iOS Info.plist Manifest编辑器
我们的iOS Manifest编辑器(info.plist)现在是一个独立的编辑器,你可以通过双击info.plist文件来启动。它有一个体验非常好的UI,用户可以轻松浏览并保持熟悉的外观。
它包括APP版本、支持定向、状态栏样式、视觉资源、游戏中心、地图集成或背景模式等功能的编辑器,以及编辑文档类型,UTI和URL类型等高级功能。
 
新的Android项目属性页面
重新设计了Android项目选项页面!拥有你需要的所有选项的简化设计。
高级Android选项已经分组到单独的对话框中,你可以通过按“选项”页面上的“高级”按钮打开该对话框。

Bug修复

此版本包括以下修复程序:

  • 修复iOS/tvOS/watchOS设备专用版本的调试问题。(4.5.0.440)
  • 改进了Bonjour SSH。(4.5.0.440)
  • OpenGL游戏(Android)模板现在使用OpenTK-1.0。(4.5.0.440)
  • Android Archive Manager现在使用区域设置来显示存档日期。(4.5.0.440)
  • 修复了二级iOS参考调试。(4.5.0.415)
  • 创建F# Blank Android项目的错误。(4.5.0.415)
  • 如果要禁用属性页上的控件,请确保工具提示可见。(4.5.0.415)
  • 在检查“Build iTunes Package Archive (IPA)”之后,仍然无法创建IPA。(4.5.0.415)
  • Analyze-Xamarin Profiler选项在某些配置中被禁用。(4.5.0.415)
  • 添加几个缺少的工具提示和Android属性页面的帮助链接。(4.5.0.415)
  • 为tvOS / watchOS扩展项目添加Enable Bitcode选项。(4.5.0.415)
  • 如果解决方案中包含共享项目,则无法打开iOS Manifest编辑器。(4.5.0.415)
  • 无法在tvOS或watchOS项目中引用PCL。(4.5.0.387)
  • 为iOS Manifest编辑器添加了工具提示。(4.5.0.387)
  • 改进F#模板。(4.5.0.387)
未发布 .Net文档图像处理工具包GdPicture.NET发布v14.0.29,改进OCR功能
by Harriet666 keys 分享 1513847733393
GdPicture.NET是一款功能全面且可无限分发的文档图像处理工具包,开发者可将其作为.NET组件运用在他们的C#, VB.NET和CodeGear应用程序中,从而实现文档生成,显示,获取,编辑和打印等功能。在您的程序中使用GdPicture.NET,可实现文档显示,获取TWAIN扫描图像,进行图像处理,执行光学字符识别操作,其涵盖了所有主流领域的其他文件成像技术。

GdPicture.NET v14最新版下载>>>
 
GdPicture.NET v14.0.28
  • 新增GdPictureOCR类、先进的OCR功能和分割功能。
  • 支持新格式:WSQ。
  • GdPictureImaging类的OCR方法现在已被弃用。必须使用新的GdPictureOCR类。
  • 改进PDF文本提取和搜索算法。
  • 改进PDF格式光栅处理器,可以更好地处理非嵌入字体,并支持由常用PDF生成器生成的非标准色彩空间。
  • 减少了OCR内存的使用,特别是在多线程环境下。
  • Datamatrix阅读器引擎:引入多个字符串编码,提高了准确性。
  • PDF417阅读器引擎:引入多个字符串编码,提高了准确性。
  • QR码阅读器引擎:引入多个字符串编码,提高了准确性。
 
GdPicture.NET v14.0.29
  • 修复了读取特定WSQ文件的问题。
  • 改进了带有非嵌入字体的PDF光栅化引擎。
  • 改进了空白页检测引擎的准确性。
  • 改进边界清除引擎的准确性。
  • 修复了处理非常见图像分辨率时OCR引擎的问题。

未发布 【示例教程】使用leadtools的WCF接口功能实现从web端上传Dicom影像文件
by Harriet666 keys 分享 1517903663716
Leadtools 19总套包下载>>>
 
leadtools为web端提供了wcf接口来供用户可以登录pacs系统,检索,查看以及上传影像。本篇博客讲解如何创建一个网页来实现上传功能,通过WCF进行dicom文件的上传时,是将dicom文件转换为base64数据流,分段进行传输。
 
本篇博客运行的前提是已经部署完成Leadtools HTML5 Web Viewer,可以正常浏览。参考https://www.evget.com/article/2018/2/6/27757.html
 
在部署完成后,将下面的代码复制到一个HTML文件中,即可运行进行测试。另外需要添加html文件所需的jquery.min.js到同文件夹路径下。
<head>
    <meta charset="UTF-8">
head>

<form onsubmit="return false;">
    <input type="hidden" name="file_base64" id="file_base64">
    <input type="file" id="fileup" multiple="multiple">
    <input type="submit" value="submit" onclick="$.post('./uploader.php', $(this).parent().serialize());">
    <div>
        <div id="msg">div>
    div>
form>
<script src="scripts/jquery.min.js">script>
<script>

    $(document).ready(function () {
        authcookie = login();
        document.cookie = "authcookie=" + authcookie;
        $("#fileup").change(function () {
            getauthcookie("authcookie");
            filelist = this.files;
            file = filelist[fileindex];
            upload(file);
        });
    });
    var authcookie;//保存authcookie
    var filelist;//上传文件列表
    var file;//当前上传文件
    var tempfile = "";//临时文件名称
    var position = 0;
    var size = 40000;//分段大小
    var done = false;
    var fileindex=0;//当前上传文件序列号

    function upload(tempfile) {
        if(position==0)
            done=false;
        var reader = new FileReader();
        if (file.size > position + 40000)
            reader.readAsArrayBuffer(file.slice(position, position + 40000));
        else 
            reader.readAsArrayBuffer(file.slice(position, file.size));
        reader.onload = function (e) {
            if (e.target.readyState === 2) {
                var base64string = base64ArrayBuffer(e.target.result);
                var data = {
                    authenticationCookie: authcookie,
                    dicomData: base64string,
                    fileName: tempfile,
                    status: position==0?"start":"append"
                };
                tempfile = senddata(JSON.stringify(data));
                if (!done) {
                    position += 40000;
                    upload(tempfile);
                    if (position+40000>file.size)
                        done = true;
                }
                else {
                    var data = {
                        authenticationCookie: authcookie,
                        dicomData: "",
                        fileName: tempfile,
                        status: "done"
                    };
                    tempfile = senddata(JSON.stringify(data));
                    position = 0;
                    $("#msg").html($("#msg").html()+"第"+(fileindex+1)+"个文件已经上传完成

"); fileindex += 1; if (fileindex < filelist.length) { file = filelist[fileindex]; upload(tempfile); } else { fileindex = 0; $("#msg").html($("#msg").html() + "文件全部已经上传完成

"); } } } }; } function senddata(data) { var result; $.ajax({ type:"post", url: "http://localhost/MedicalViewerService19/StoreService.svc/UploadDicomImage", data: data, contentType: "application/json", dataType: "json", success: function(data){result= data}, async: false }); return result; } function login() { var auth; var logininfo = { userName: "a", password: "a", userData: "" }; $.ajax({ type: "post", url: "http://localhost/MedicalViewerService19/AuthenticationService.svc/AuthenticateUser", data: JSON.stringify(logininfo), contentType: "application/json", dataType: "text", success: function (data) { auth= data }, async: false }); return auth; } function query() { } function getauthcookie() { document.cookie.split(";").forEach(function (val, index) { var index = val.indexOf("="); if ($.trim(val.substring(0, index)) == "authcookie") { authcookie = $.trim(val.substring(index + 1, val.length)); } }); return ""; } function base64ArrayBuffer(arrayBuffer) { var base64 = ''; var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var bytes = new Uint8Array(arrayBuffer); var byteLength = bytes.byteLength; var byteRemainder = byteLength % 3; var mainLength = byteLength - byteRemainder; var a, b, c, d; var chunk; // Main loop deals with bytes in chunks of 3 for (var i = 0; i < mainLength; i = i + 3) { // Combine the three bytes into a single integer chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; // Use bitmasks to extract 6-bit segments from the triplet a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 d = chunk & 63; // 63 = 2^6 - 1 // Convert the raw binary segments to the appropriate ASCII encoding base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; } // Deal with the remaining bytes and padding if (byteRemainder == 1) { chunk = bytes[mainLength] a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 // Set the 4 least significant bits to zero b = (chunk & 3) << 4; // 3 = 2^2 - 1 base64 += encodings[a] + encodings[b] + '=='; } else if (byteRemainder == 2) { chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 // Set the 2 least significant bits to zero c = (chunk & 15) << 2 // 15 = 2^4 - 1 base64 += encodings[a] + encodings[b] + encodings[c] + '='; } return base64; } script>

6

未发布 企业级工具包Essential Studio Enterprise Edition发布2017 v3丨附下载
by Harriet666 keys 分享 1509698271238

Essential Studio企业版,一个跨越八个平台并包含433种独特控件的企业级工具包。使用Essential Studio企业版,开发者可以创建丰富的应用程序,并轻松地集成商业智能分析和报告解决方案。Essential Studio企业版是世界级的软件组件,它使得开发者能在最苛刻的环境下开发出高质量的软件。

Essential Studio企业版2017 v3点击下载>>>
 
Xamarin.Forms

构建跨平台应用程序

新的选择器控件

新的径向菜单控件

PDF查看器中的文本选择和复制功能

查看详情

ASP.NET MVC

构建强大的Web应用程序

StackingSplineArea和100%StackingSplineArea图表

图表支持标尺

甘特图控件支持修改工作周

查看详情

ASP.NET Web Forms

Web开发

新的日期范围选择器

StackingSplineArea和100%StackingSplineArea图表积图类型

图表支持标尺

查看详情

UWP

开发Windows生态系统

新的选择器控件

图表的轴刻度

支持甘特图控件的样式定制

查看详情

JavaScript

充分利用JavaScript

StackingSplineArea和100%StackingSplineArea图表

图表支持标尺

甘特图控件支持修改工作周

查看详情

Windows Forms

构建更好的应用程序

DocIO内容控件

消息框定制

标记PDF

查看详情

WPF

控制桌面

树形网格的主题支持

图表的轴刻度

基于参数布局的Report Viewer参数渲染

查看详情


2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 图形图像处理控件ImageGear for .NET v22.2发布,增加新的简化示例
by Harriet666 keys 分享 1493192003612
轻松地为程序添加扫描/压缩/条形码识别/PDF/文件查看与处理/图形编辑与处理等功能。
ImageGear for .NET是一款图形图像处理控件,具有扫描,压缩,浏览、添加注释,打印,图像编辑,OCR以及PDF和矢量图像支持,使开发人员可以快速地开发出图像处理程序,可用于.NET Framework2.0、3.0、3.5、4.0,ASP.NET,WPF,SilverLight,DirectX 10和Direct3D 10。支持超过100种图片格式,包含:TIFF, JPEG, CAD, Vector, 3D PDF, PDF/A, PS等。
 
 ImageGear for .NET v22.2最新版点击下载>>>
 
ImageGear for .NET v22.2更新内容

改进:
  • ImageGear .NET v22.2在以下功能领域添加了一组新的简化示例,支持Visual Studio 2010和Visual Studio 2015:
    ▪ 注解
    ▪ 转换
    ▪ 图像处理和清理
    ▪ 元数据
    ▪ 医疗/ DICOM
    ▪ OCR
    ▪ PDF Security(以及如何“PDF Security”的新部分)
    ▪ 扫描
    ▪ 查看
  • 所有原始示例仍然可用。
  • 进一步完善了“如何使用...”的内容,您可以更容易找到所需的内容。
修复:
  • 在ImageGear for .NET v22.2中为32位和64位版本添加的修复程序如下:
  • 001-00-014589:修复了打开DOCX文件时System.ArgumentOutOfRange出现异常的问题。
  • 001-00-014384:修复了PageView KeyDown事件在WPF中没有触发的问题。
  • 001-00-013726:PDF页面在SVG中可以正确地呈现。
  • 001-00-013973:修复了使用WPF缩略图/向量样本调整图像大小时出现的问题。
  • 001-00-013734:修复了矢量样本中的问题,其中FIT_TO_HEIGHT在调整大小时会导致空白屏幕。
  • 001-00-012898:添加文档用以阐明如何处理识别对象。
  • 001-00-012099:添加文档用以阐明如何将识别组件添加到Web项目中。
  • 001-00-012265:修复了阻止用户将ImGearARTRectangle边框设置为0的问题。
  • 001-00-014586:修复了光栅化绘图算法,在加载某些Word文档时不会出现NullReferenceException。
注意:ImageGear for .NET文档提供了有关所有平台和.NET框架版本的信息。但是,并不是所有功能都可用于所有ImageGear for .NET版本,TWAIN和FreqIP仅支持32位平台。

基于浏览器的客户端图像浏览器Prizm ActiveX Viewer在线订购专享8折!

未发布 jQuery JavaScript的综合性UI组件库jQWidgets更新至v4.5.1丨附下载
by Harriet666 keys 分享 1492486905498

jQWidgets是一个基于jQuery JavaScript的综合性和创新性的HTML5 UI组件库,旨在帮助开发者创建专业、跨平台的Web应用程序,并最大限度的节省开发时间。jQWidgets包含30多种UI组件,是最快的JavaScript UI框架之一。

【最新版jQWidgets v4.5.1点击下载>>>】

jQWidgets v4.5.1更新内容:
改进:
  • 当固定tabbedGroups或取消autoHideGroups时,jqxLayout / jqxDockingLayout“allowClose”设置现在将被保留。
修复:
  • 修复了当decimalSeparator为“,”时,jqxNumberInput中关于移动设备行为的问题。
  • 修复了jqxScheduler中关于exactTimeRendering功能的问题,2天中会出现同一个预约。
  • 修复了jqxScheduler中当没有聚焦单元格时对话框会打开的问题。
  • 修复了关于jqxPopover中showArrowButton属性被动态设置的问题。
  • 修复了jqxGrid中关于“复选框”列中工具提示的问题。
  • 修复了jqxGrid中关于剪贴板粘贴功能的问题。
  • 修复了jqxGrid中当网格行详细信息和聚合功能分组启用时切换箭头显示的问题。
  • 修复了jqxGrid中关于分组聚合渲染逻辑的的问题。
  • 修复了jqxGrid中关于过滤器行下拉列表和“全选”项的问题。
  • 修复了jqxGrid中当按下“ESC”并且在源对象中定义了“updaterow”时关于全行编辑的问题。
  • 修复了jqxDataTable中关于服务器端过滤的的问题。
  • 修复了jqxWindow中关于动态启用/禁用窗口拖动的问题。
  • 修复了jqxWindow中关于关闭模式窗口后Tab键导航的问题。
  • 修复了jqxTabs中当关闭按钮被启用时有关setTitleAt方法的问题。
  • 修复了jqxRibbon中关于animationType:“slide”的问题。
  • 修复了jqxWindow中关于Internet Explorer“销毁”方法的问题。 

阅读原文>>>

未发布 教你防范勒索软件:加强网络环境的6条建议
by Harriet666 keys 分享 1496220831242

今年5月的WannaCry(勒索软件)已经让大家尝尽苦头也让网络安全系统管理员的颜面尽扫。目前来说,安全专家们仍然无法预料WannaCry(勒索软件)将会出现何种变种。对于拥有专门的安全专家的大公司来说,网络安全最起码还有个基本的保障,但对个人用户来说,就只能靠自己来进行防护了。

在这里为大家提供6条加强你的网络环境的建议,这6条建议对组织和个人用户来说,都非常有用,且易于操作。

一、使用LAPS保护你的本地管理员帐户

密码重用的常见原因是Windows工作站和服务器上的本地管理员帐户,这些密码通常通过组策略设置为公用值,或者在构建系统映像时设置为标准值。因此,在一台机器上发现本地管理员密码的攻击者就可以利用这些值访问网络上的所有计算机。

在2015年年中,微软发布了一个解决这个该问题的工具,即本地管理员密码解决方案(LAPS)。此方案是将本地管理员密码存储在LDAP上,作为计算机账户的一个机密属性,配合GPO,实现自动定期修改密码、设置密码长度、强度等,更重要是该方案可以将该密码作为计算机帐户属性存储在Active Directory中。该属性“ms-Mcs-AdmPwd”可以通过ACL锁定,以确保只有经过批准的用户,如控制台和系统管理员可以查看密码。 LAPS还包括一个PowerShell模块和一个后台客户端,LAPS UI,以简化管理和检索过程。


可以提供Microsoft LAPS UI Thick Client来支持可能需要访问本地管理员帐户的人员

LAPS实现起来非常快速简单,只需要要求系统管理员创建一个定义密码策略和本地帐户名称的GPO来管理,可以直接将单个文件AdmPwd.dll添加到Windows上。

本地管理员密码解决方案允许系统管理员定义符合其公司策略的密码
二、查看当前账户是否具备管理员权限

攻击者对具有漏洞的账户进行控制一样可以获得该设备的管理权限,比如用户有时会为了某种访问的需要,进行一些临时访问,但在访问完毕后,用户有时会忘了对这些访问进行删除或监控,以至于被黑客利用。根据我们的经验,很少有用户会把这些临时访问权限进行删除。

敏感帐户,如具有管理员权限的帐户应与普通账户,如员工的账户在查看电子邮件和浏览网页时进行帐户区分。如果用户帐户被恶意软件或网络钓鱼进行了攻击,或者在密码已被泄密的情况下,帐户区分将有助于防止对管理员的权限造成进一步损坏。

具有域管理员或企业管理员资格的帐户应受到高度限制,比如只能用于登录域控制器,具有这些权限的帐户不应再在其他系统上进行登录了。在此,我们建议大家可以基于不同的管理功能来为每个账户设置不同的权限的管理账户,比如 “工作站管理”和“服务器管理”组,这样每个管理员就不具有访问整个域的权限了,这将有助于对整个域的权限保护。

三、简化你的补丁管理

许多攻击包括WannaCry的基本攻击机制,都是针对未修补的系统。所以,不管你的网络是否对外开放,都应该定期更新操作系统和应用程序。虽然这个建议属于老生常谈,但从另一个侧面也说明了该建议的重要性。许多攻击就是利用未修复的漏洞和未更新的系统来大做文章。

对于Windows系统来说,利用Windows Server进行更新服务简单而高效。利用WSUS部署更新程序时,WSUS易于设置,可以设置为自动或手动方式。而利用第三方软件来管理更新就有点不靠谱了,比如一些商业插件就允许WSUS从其他供应商那里修补软件。还有一些比较小众的工具,像Ninite这样的第三方更新工具,既不是自动配置的,也不是免费使用的,但它允许用户从其列表中选择支持的应用程序和运行没有完全选定的应用程序。 Flexera的企业软件检查器和Microsoft的系统中心配置管理器(SCCM)等工具也可以帮助管理第三方应用程序的修补。


Windows Server Update Services向导允许管理员选择要管理的更新类型

使用WSUS,管理员可以自动批准补丁到质量检查环境,或手动批准并分配它们
相关的第三方更新工具下载资源:
https://technet.microsoft.com/en-us/windowsserver/bb332157.aspx
https://technet.microsoft.com/en-us/library/hh852344(v=ws.11).aspx
https://www.flexerasoftware.com/enterprise/products/software-vulnerability-management/corporate-software-inspector/
https://ninite.com/pro
https://www.microsoft.com/en-us/cloud-platform/system-center-configuration-manager
 
四、审核空白和默认密码

Verizon发布的《2016年数据泄露调查报告》显示“63%的已确认的数据泄露事件均涉及到密码口令(password)的丢失、密码口令安全性过低或默认密码未

更改”,所以这个建议是非常重要的。当用户在首次使用设备时,应该先对默认的出厂密码进行修改,如果没有设置密码的要先设置密码,但往往人们会忽

略这些关键的保护手段。攻击者就是利用这些疏忽来进行攻击的,因为一般的出厂默认密码都可以在网络上查到。攻击者可以利用网络设备,如交换机和接

入点上的默认密码来重定向流量,执行中间人攻击,或对网络基础设施执行拒绝服务攻击。

更糟糕的是,内部系统所利用的Web控制台在包含敏感业务数据或系统配置的应用程序中通常使用的都是默认密码。攻击者利用网络钓鱼和常见的恶意软

件的攻击向量就可以绕过安全防护,并且有时候真正的威胁是来自内部人员的恶意行为,所以借着 “内部”这个借口来放松对密码的管理,这个观念是非

常错误的。正确的做法应该是,审核所有登录密码,并进行必要的修改和设置。现在,许多设备和服务都支持双因素身份验证, 建议大家尽量开启。


只是用Google搜索出来的一些默认密码列表 
五、禁用LLMNR和NetBIOS名称解析

链路本地组播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)都可以导致在启用时快速对域名进行攻击。这些协议最常用在初始DNS查找失败时查找所请求的主机,并且会在默认情况下启用。在大多数网络中,由于DNS的存在,所以LLMNR和NetBIOS名称解析根本就没有必要再用了。当对无法找到的主机发出请求时,例如尝试访问 dc-01的用户打算输入 dc01,LLMNR和NBT-NS就会发送广播,寻找该主机。这时攻击者就会通过侦听LLMNR和NetBIOS广播,伪装成用户(客户端)要访问的目标设备,从而让用户乖乖交出相应的登陆凭证。在接受连接后,攻击者可以使用Responder.py或Metasploit等工具将请求转发到执行身份验证过程的流氓服务(如SMB TCP:137)。 在身份验证过程中,用户会向流氓服务器发送用于身份认证的NTLMv2哈希值,这个哈希值将被保存到磁盘中,之后就可以使用像Hashcat或John Ripper(TJR)这样的工具在线下破解,或直接用于 pass-the-hash攻击。

攻击者中断了一个LLMNR请求,并捕获了user01的密码哈希值

由于这些服务通常不是必需的,因此最简单的措施是完全禁用它们。大家可以顺着计算机配置 – >策略 – >管理模板 – >网络 – > DNS客户端 – >关闭组播名称解析来修改组策略,禁用LLMNR。

启用“关闭组播名称解析”的组策略选项禁用LLMNR

禁用NetBIOS名称解析并不是一件简单的事情,因为我们必须在每个网络适配器中手动禁用“启用TCP / IP NetBIOS”选项,或者运行包含以下wmic命令的脚本:

wico nicconfig其中TcpipNetbiosOptions = 0调用SetTcpipNetbios 2
wmic nicconfig其中TcpipNetbiosOptions = 1调用SetTcpipNetbios 2
不过要注意的是,虽然这些服务通常不是必需的,但一些过去的老软件仍然可以依靠NetBIOS名称解析来正常运行。在运行GPO之前,请务必测试以下禁用这些服务会对你的运行环境有哪些影响。

六、及时了解你的网络设备是否被攻击

如果你登陆过https://www.shodan.io这个网站,你一定会被其中所曝光的敏感漏洞和服务而震惊。与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“...

Shodan所搜集到的信息是极其惊人的。凡是链接到互联网的红绿灯、安全摄像头、家庭自动化设备以及加热系统等等都会被轻易的搜索到。Shodan的使用者曾发现过一个水上公园的控制系统,一个加油站,甚至一个酒店的葡萄酒冷却器。而网站的研究者也曾使用Shodan定位到了核电站的指挥和控制系统及一个粒子回旋加速器。

Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。而Shodan真正的可怕之处就是这些设备几乎都没有安装安全防御措施,其可以随意进入。

所以如果没有必要就不要把你的设备连接到互联网,不过要知道网络上有哪些型号的设备已经被攻击了,建议大家尝试使用端口扫描之王——nmap进行扫描,端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关),但是端口扫描不但可以为黑客所利用,同时端口扫描还是网络安全工作者的必备的利器,通过对端口的扫描,了解网站中出现的漏洞以及端口的开放情况。比如,像“nmap -sV -Pn -top-ports 10000 1.2.3.4/24”这样的简单扫描可以让我们快速了解攻击者可能看到的内容,利用Shodan和Censys.io这样的工具就可以做到自动搜索这些内容。

Shodan提供了有关公共服务和端口的大量信息

你知道你设备在网络上的运行状态吗?例如,你是否运行了IPv6,更重要的是,该运行状态是你打开的还是黑客打开的? SMBv1是否在你的环境中启用了一个设备?当你对这些运行情况有一个清晰地了解之后,请考虑一下你是否有必要禁用这些监控服务。

阅读原文>>>


 近期热门 - 点击最多
  1. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  2. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  3. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  4. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  5. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  6. Springboot+Gradle+Mysql+Jpa最简单实例教程
  7. SpringBoot+Spring6入门指南: 使用命令行快速搭建restful web api模板
  8. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
  9. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
  10. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务

  全端社区 - 最新回复
  1. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  2. Windows与Mac通过git ssh和rsync实现文件共享互传
  3. Windows与Mac通过git ssh和scp实现文件共享互传
  4. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  5. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  6. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  7. ReactNative获取Android/iOS的MAC/IP地址: react-native-device-info模块的安装与使用
  8. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  9. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  10. Springboot+Gradle+Mysql+Jpa最简单实例教程

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA