未找到

未发布 集成的HTTP嗅探器HttpWatch更新至v11.0.19丨附下载
by Harriet666 keys 分享 1506678451146
HttpWatch是一款集成的HTTP嗅探器,为IE和Firefox提供新的方法以查看您网站的负载和运行情况。你可以直接在浏览器中调试由web页面生成的网络流量,而无需切换到一个单独的工具。

【HttpWatch v11.0.19免费下载>>>】

HttpWatch v11.0.19更新内容
v11.0.19更新内容
  • 改进:为IE 11中的F12开发工具的HAR文件的不一致性添加了解决方法,以便在HttpWatch中加载和查看。
  • 修复:在Chrome中请求记录可能会出现计时错误。
v11.0.18更新内容
  • 修复:在Chrome 61中录制时可能会发生“未找到框架”的错误。
未发布 GIS软件开发包Map Suite v10.2.0发布,支持3D渲染
by Harriet666 keys 分享 1513242946786
Map Suite .NET的地图控件&组件可以为你的.NET定制应用程序添加交互式地图和GIS功能。作为一个.NET软件开发者,你可以使用Map Suite强大的地图API为你的项目添加空间功能,包括交互式的Visual Basic或C#地图、地理编码、空间分析、路由和地理处理等等。Map Suite是你工具箱中不可或缺的一个地图SDK。
 
Map Suite v10.2.0亮点
  • 支持3D渲染和OSM Buildings
  • 增加了对USGS DEM的支持
  • 升级了FdoFeatureSource以支持最新的FDO 4.0库
  • 为所有FeatureSources和FeatureLayers添加了“GetFeatureIds”API
有关任何Map Suite产品版本的增强功能和更改的完整列表,请查看官方ThinkGeo Wiki中的具体更新日志。

未发布 微软的dotnet-new工具可以使创建JavaScript Web 程序变得更简单
by Harriet666 keys 分享 1488337232319

Microsoft发布了一组工具,使用他们的dotnet-new工具和使用Node.js的灵活方法可以快速生成基于JavaScript的Web 应用程序。

dotnet-new工具是.NET Core工具的一部分,用于使用简单的命令启动一个新项目。作为ASP.NET Core JavaScript Services的一部分,Web开发人员现在可以使用相同的命令来启动新的单页应用程序(SPA)。

点击查看完整内容>>>

未发布 【315style】VMProtect正版授权低至6.9折,折后再享第二套半价!
by Harriet666 keys 分享 1521622003370
在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还可以生成和验证序列号,设置过期时间,限制免费更新等等。
 
郑重承诺:慧都所售产品均为厂商授权的正版产品,在线订购安全便捷,请完全放心!
未发布 CAD DLL发布v12新版本,支持最新版本的DWG - AutoCAD®DWG 2018
by Harriet666 keys 分享 1497431255647
CAD DLL是一个为开发者打造的新版本CAD库,可在支持动态链接库技术的语言中添加CAD功能到应用程序中。
 
【CAD DLL v12点击下载>>>】

最新的CAD DLL 12是一个用于在VC ++、VB和Delphi / C ++ Builder中查看和转换DWG、DXF、HPGL、SVG和其他CAD文件的库。
 
现在,CAD DLL支持最新版本的DWG - AutoCAD®DWG 2018。在此dll的帮助下创建的应用程序可以轻松导入最新的图纸。
 
此外,改进了CAD DLL的导出功能。现在,你可以通过Windows图元文件技术更快地导出文件到DWG和DXF。输出文件的导出速度和质量得到了很大的提高。
 
此外,对于为CNC机床创建应用程序并需要从CAD文件生成G-code的用户来说,现在使用CAD DLL,可以将DWG / DXF到G-code转换功能添加到你的应用程序中。
c48a1812f8604d76a9f7cf789251aaedojpg
CAD DLL 12中包含的改进内容列表:
  • 导入AutoCAD®DWG 2018
  • 通过Windows图元文件(ExportToCADFile)导出DWG / DXF
  • 导出G-code
你可以下载并测试最新版本的CAD DLL>>>
未发布 邮件客户端WebMail Pro v7.7.4发布,在线订购限时75折优惠!
by Harriet666 keys 分享 1496393211510

AfterLogic WebMail Pro是基于网页并以脚本开发的邮件客户端。能以前端模式与现有的邮件服务器或内置邮件服务器工作。

WebMail Pro最新版下载>>>

WebMail Pro


V7.7.4更新内容:

  • 更新Tenants REST API。
  • 更新法语翻译。
  • 正确处理多个IMAP-quota值(webmail.default-imap-quota-name)。
  • 语言自动检测现在可用作配置选项。
  • 修复了Helpdesk客户端屏幕的错误。
  • 修复首次登录时提示“上次登录”信息的错误。
  • 修复其他Bug。

试用、下载、了解更多产品信息请点击"咨询在线客服"   

未发布 LEADTOOLS Multimedia SDK更新:改进RTSP和H.265/H.264的硬件加速
by Harriet666 keys 分享 1498202835215
LEADTOOLS Multimedia SDK此次更新意在改进实时流协议(RTSP)和H.265和H.264编解码器中的硬件加速。
RTSP
  • 支持新格式:
    QuickTime
    Windows媒体播放器
  • 支持RTSP流中的KLV元数据
  • 通过TCP和HTTP服务器增加对RTSP的支持
  • 增加了新的安全处理程序
  • 改进对相机、搜索和AAC音频流的支持
  • 增加RTSP Live Streaming的新示例
  • 增加了到RTSP DESCRIBE响应的流比特率
编解码器,多路复用器和解复用器
  • 增加了对第六代QuickSync加速的支持以及后来的英特尔处理器对H.265编码器和H.265解码器的支持
  • 在H.265和H.264解码器上使用CUDA硬件加速时,支持非异步模式
  • 支持在H265解码器中选择解码引擎
  • 支持在H.265解码器中解码10位视频
其他多媒体更新
  • 增加了将DVR录制成较小的完整视频片段的功能
  • 添加了一个新的Microsoft Smooth Streaming源过滤器,允许从Microsoft Smooth Streaming服务器进行播放、转换和流式传输
  • 在播放模块中增加了自动海报框擦除的编程控件
  • 支持LEAD颜色空间转换器的P010格式
此更新对19版本的用户免费,即刻下载>>>
LEADTOOLS Multimedia包含产品:

未发布 【示例教程】使用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

未发布 【示例教程】如何使用LEADTOOLS图像标注控件在界面上对图像进行标注
by Harriet666 keys 分享 1511343290477
leadtools对图像和文档提供了多种类型的标注,允许用户通过图形界面或者后台代码进行插入。本教程将按照步骤分享如何使用图像标注控件在界面上对图像进行标注。
 
Leadtools 19总套包下载>>>

1.创建VS项目

在VS中创建winform项目,创建完成后需要确认使用的.NET版本以及编译的目标平台。本例采用.NET4.0和X86平台进行编译。

 
2.引用接口dll

需要引用的dll列表如下,可以在C:\LEADTOOLS 19\Bin\Dotnet4\Win32找到。
主界面Form1代码中添加引用
using System.Windows.Forms;
using Leadtools;
using Leadtools.Codecs;
using Leadtools.WinForms;
using Leadtools.Annotations;

3.主界面添加相关控件

在设计界面添加一个MenuStrip菜单
添加按钮用以打开文件;
添加下拉框,包括2个选项:标注模式和浏览模式

 
4.后台代码编写

4.1控件初始化相关代码
添加相关对象
        RasterImageViewer viewer = new RasterImageViewer();
        RasterImage img;
        AnnAutomationManager annger;
        AnnAutomation automation;

添加initControl()方法,用于初始化图片浏览控件以及标注相关控件,在Form1()构造函数中调用该方法
private void initControl() {
            Support.SetLicense();
            viewer.Dock = DockStyle.Fill;
            panel1.Controls.Add(viewer);
            viewer.HorizontalAlignMode = RasterPaintAlignMode.Center;
            viewer.VerticalAlignMode = RasterPaintAlignMode.Center;
            loadImage("qwe.jpg");
            if (viewer.Image != null)
            {
                // create and setup the automation manager 
                annger = new AnnAutomationManager();

                // Instruct the manager to create the default (all) automation objects. 
                annger.CreateDefaultObjects();

                // create the toolbar and add it to the form 
                annger.CreateToolBar();
                Controls.Add(annger.ToolBar);

                // setup the automation (will create the container as well) 
                automation = new AnnAutomation(annger, viewer);

                // add an event handler for changes to the current designer 
                automation.CurrentDesignerChanged += new EventHandler(automation_CurrentDesignerChanged);

                // setup this automation as the active one 
                automation.Active = true;
            }
            toolStripComboBox1.SelectedIndex = 0;
        }
 
4.2添加加载图像方法
private void loadImage(string filename)
        {
            img = new RasterCodecs().Load(filename);
            viewer.Image = img;
        }
4.3添加automation_CurrentDesignerChanged方法
private void automation_CurrentDesignerChanged(object sender, EventArgs e)
        {
            AnnAutomation automation = sender as AnnAutomation;
            AnnButtonRunDesigner buttonRunDesigner = automation.CurrentDesigner as AnnButtonRunDesigner;
            if (buttonRunDesigner != null)
                buttonRunDesigner.Run += new EventHandler(buttonRunDesigner_Run);
        }
4.4添加buttonRunDesigner_Run方法
private void buttonRunDesigner_Run(object sender, AnnRunDesignerEventArgs e)
        {
            if (e.OperationStatus == AnnDesignerOperationStatus.End)
            {
                AnnButtonObject btn = e.Object as AnnButtonObject;
                MessageBox.Show(string.Format("Button with text = {0} was clicked!", btn.Text));
            }
        }
4.5添加打开文件按钮事件方法
private void loadImage(string filename)
        {
            img = new RasterCodecs().Load(filename);
            viewer.Image = img;
        }
4.6添加模式下拉框选项改变事件方法
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            annger.UserMode = (toolStripComboBox1.SelectedIndex == 0) ? AnnUserMode.Design : AnnUserMode.Run;
        }

5.编译运行

演示程序界面如下图所示
未发布 电子邮件.NET控件MailBee.NET Objects使用指南合集(下)
by Harriet666 keys 分享 1504086452458
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。本文主要介绍了MailBee.NET Objects的使用指南。
 

一、哪里可以下载MailBee.NET Objects并更新我当前的版本?

你可以使用NuGet软件包管理控制台将最新版本的MailBee.NET程序集添加到项目中:
Install-Package MailBee.NET
最新版本的MailBee.NET Objects安装程序(包括程序集本身以及文档、示例和工具)下载地址:http://www.afterlogic.com/download/MailBeeNetObjects.msi
 
最新版本的MailBee.NET程序集可从下面的网址获取:http://www.afterlogic.com/updates/mailbee_net.zip
 
存档包括.NET 2.0/3.5版本(MailBee.NET.dll),.NET 4.0版本(MailBee.NET.4.dll),.NET 4.5+版本(MailBee.NET.45.dll),Mono,Xamarin iOS和Android版本。.NET 2.0/3.5版本仍然可以在.NET 4.0及更高版本中使用,它不包括.NET 4.0特定的优化。但是,只有.NET 4.5版本支持async/await方法。
 
当你下载MailBee.NET软件包安装程序MailBeeNetObjects.msi时,首先要关闭可能使用MailBee.NET的所有应用程序。如果Visual Studio .NET正在运行,请关闭它。然后,你需要卸载现有的MailBee.NET Objects。要删除现有版本的产品,请使用控制面板中的“ 添加/删除程序”。然后,可以轻松安装新版本的MailBee.NET:只需运行安装程序并按照屏幕上的说明进行操作即可。
 
现在你已安装了新版本的MailBee.NET Objects,但是由MailBee.NET Objects提供支持的应用程序仍然使用的旧版本。因此,你应该更新项目中的引用并重新创建由MailBee.NET Objects提供支持的应用程序。
 
对于Visual Studio .NET项目,应删除对MailBee.NET的引用(在解决方案资源管理器中打开项目的引用并删除对MailBee.NET的引用),然后添加新的并重建项目。
 
对于非Visual Studio .NET环境,你应该手动替换应用程序的/ bin子文件夹中的MailBee.NET.dll文件并重新构建项目。安装MailBee.NET软件包后,你可以在安装文件夹中找到MailBee.NET.dll文件(默认情况下,它是32位Windows上的“C:\Program Files\MailBee.NET Objects”或64位上的"C:\Program Files\MailBee.NET Objects (x86)")。
 
我们会发布BounceDatabase的更新。你可以下载最新版本:http://www.afterlogic.com/updates/BounceDatabase.zip并将其提取到C:/Program Files/MailBee.NET Objects/BounceDatabase目录中,以覆盖现有文件。


二、如何在我的.NET项目中添加MailBee.NET Objects?

在Visual Studio .NET中,请按照以下步骤(假设你的Visual Studio .NET项目名为EmailApp):
1.在解决方案资源管理器中,右键单击项目名称(EmailApp),然后在上下文菜单中选择添加参考命令。
2.在出现添加引用对话框中,找到MailBee.NET Objects。如果你有新版本的MailBee.NET.dll(比安装程序更新),你可以单击浏览按钮并手动找到MailBee.NET.dll文件。然后双击引用将其添加到列表中,单击确定。
3.在添加的引用属性中,确保Copy Local设置为True。
 
要在非Visual Studio .NET应用程序中引用MailBee.NET Objects,你应该手动将MailBee.NET.dll文件上传到应用程序根文件夹下的/ bin文件夹中。如果没有/bin文件夹,你应该先创建它。
 
以这种方式引用MailBee.NET Objects库的应用程序可以利用XCOPY部署。一旦从应用程序引用了MailBee.NET Objects,下一步是将库中的名称空间导入到应用程序中,如MailBee.NET Objects文档或MailBee.NET Objects附带的演示项目中的示例。然后你就可以开始开发由MailBee.NET Objects提供支持的应用程序了。
 

三、购买后支持多久的免费升级?

保证在购买后至少一年的免费升级。随后的几年,维护费用(包括免费升级和标准技术支持)可以每年以50%的价格购买。
 

四、哪里查看产品许可协议?

AfterLogic的所有商业产品的许可查看。http://www.afterlogic.com/products/common-licensing

 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  2. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  3. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  4. Node.js 打印vite react+go项目目录树
  5. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  6. Windows与Mac通过git ssh和rsync实现文件共享互传
  7. Windows与Mac通过git ssh和scp实现文件共享互传
  8. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  9. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  10. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别

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

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

OnceOA