未找到

未发布 如何选择你的移动APP KPIs(关键绩效指标)
by Harriet666 keys 分享 1487231962156
移动APP市场正以惊人的速度发展。越来越多的人在户外时会选择移动端来访问网络。为了取得更大的竞争力和获得更多用户的注意力,移动端APP开发者还有许多应该做的。近年来应用商店非常受欢迎,它可以为每个使用手机的人提供适合他们的应用。面对这种情况,移动端APP开发者如何衡量自己的应用是否成功呢?在移动应用发展过程中,下载量已经不是衡量成功的唯一标准了。
你需要更精准的关键绩效指标(KPIs)来评判你的APP在市场中的表现是好是坏。需要特别注意的是每个APP是不同的,因此你应该根据自身APP所属的类别来选择KPIS。同样的,所选的指标也必须符合你的商业目标。下面就教大家如何选择你的移动APP KPIs。
查看完整方法>>>>>


未发布 2D/3D文档查看器ABViewer发布v12,大大提高PDF转DWG的速度丨附下载
by Harriet666 keys 分享 1497596728894
ABViewer是一款高质量的2D/3D文档查看器,可提供专业的浏览、编辑和转换功能,支持30多种光栅和矢量图形格式,其中包括AutoCAD DWG, DXF, DWF, Hewlett-Packard HPGL, PLT, HGL, CGM, SVG, IGES/IGS, STEP/STP, STL, 3DS, TIFF, BMP, JPG, GIF等。

【ABViewer 12最新版下载>>>】
ABViewer 12支持AutoCAD®DWG 2018、PDF转DWG速度更快、DWG/DXF转G-code。
ABViewer始终与时俱进,CAD应用程序的新版本ABViewer 12主要用于DWG/DXF和其他2D和3D CAD格式,以及三个主要亮点。

导入AutoCAD®DWG 2018

无论你是在CAD行业工作还是偶尔接收CAD图纸,ABViewer 12始终能够打开所有版本的DWG文件。支持导入最新版本的绘图文件格式 - AutoCAD®DWG 2018。
9e98f9609cea49b4bd3dc4882b979993ojpg

提高PDF转DWG的速度

ABViewer 12中PDF到DWG转换速度大大加快。以前,转换大文件需要很多时间,现在你无需浪费这些时间了。一些文件的转换就在眨眼之间!
bacee89af4214eab84cf49d63cd79b65ojpg

DWG/DXF转换为G-code

许多使用数控机床的人需要从CAD文件中生成G-code。新版本的ABViewer可以实现这个目标。
你可以使用ABViewer创建铣削和切割数控机床的G代码。只需加载你的DWG或DXF文件,调整设置,ABViewer将从你的图纸中生成G-code并将其保存为NC文件格式。
0cb278f4c3bc41e19013d58abc678f9bojpg
 
未发布 GIS软件开发工具包TatukGIS Developer Kernel 发布 v11.3.0-Unstable1丨附下载
by Harriet666 keys 分享 1489124965641
TatukGIS Developer Kernel(DK)是一个用于开发自定义地理信息系统(GIS)应用程序以及解决方案的综合性软件开发工具包(SDK)。众所周知,构建一个庞大的地理信息系统需要花费大量的金钱和人力,而TatukGIS却是同类产品中性价比最高的控件,TatukGIS Developer Kernel DK因其功能强大,价格适中,已被超过 50个国家的个人、公司、以及政府等客户用来实现其地理信息系统解决方案。根据不同地首选开发环境,本产品分别以五个独立产品的形式提供(即VCL、.NET/WPF、ActiveX、Compact Framework和ASP.NET),各个产品使用相同的框架、应用程序编程接口(API)技术。

TatukGIS Developer Kernel更新至v11.3.0-Unstable1。Delphi、.NET、ActiveX和ASP.NET版本现已合并,此次更新皆适用于以上版本。

【最新TatukGIS Developer Kernel点击下载>>>】

未发布 Web集成工具Thinfinity® VirtualUI™ v2.0发布丨附下载
by Harriet666 keys 分享 1502269565469
Cybele Software,Inc.发布Thinfinity VirtualUI v2.0版。该产品让开发Windows桌面环境的应用程序变得更加容易、快速和实惠。使用Thinfinity VirtualUI,可以将现有源代码添加一行,以便通过任何操作系统和任何设备上运行的任何HTML5客户端都可以使用虚拟化GUI。
 
传统的桌面到网络转换过程需要大量的时间和金钱投入,并且需要执行大量的重新编码。这迫使许多公司和开发商将这一昂贵的转型搁置下来。但是,这也意味着他们会丢失无数潜在的用户。
 
许多开发人员希望他们的桌面平台移动到网络上。在两个平台Windows 和 HTML5上无需两倍工作量。使用Thinfinity VirtualUI就不用维护多个源代码版本。附加的Thinfinity VirtualUI代码不会影响在Window环境中运行的应用程序。
 
Thinfinity VirtualUI v2.0最新版下载>>>

Thinfinity VirtualUI v2.0中的新功能 


  • 增强最终用户访问架构,允许以以下一种或多种方法进行匿名或身份验证的访问:Windows登录、OAuth/2、RADIUS或使用Thinfinity Authentication API的自定义身份验证方法。
  • 文件系统和注册表虚拟化帮助开发人员为每个最终用户创建安全、受控和独立的环境,映射或仅公开相关应用程序文件夹和注册表项。
  • 会话记录/播放以保存应用程序会话并稍后重播。会话记录有许多场景:复制问题、应用演示和教程、技术支持、审计监控、电子学习等。
通过增加这些功能,Thinfinity VirtualUI v2.0实现了独特的虚拟化和集成级别。
 

要求:


  • Thinfinity VirtualUI与.NET、Delphi、C ++和支持Win32 GDI/GDI + API和ActiveX/COM接口的任何编程语言集成。
  • 所需硬件包括运行Windows 8或更高版本(32位/64位)或Server 2012的网关服务器和运行Windows 8或更高版本(32位/64位)或Server 2012的一个或多个服务器。
  • 客户端设备需要符合HTML5标准的Web浏览器,例如IE10 / 11、Chrome、Safari或Firefox。
未发布 【示例教程】使用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

未发布 Edraw Max(亿图图示)新技能:在软件上进行反激活
by Harriet666 keys 分享 1499240850460
Edraw Max(亿图图示)8.7以上的版本,新增了“反激活”功能,也就意味这用户以后可以自主进行反激活。Edraw Max(亿图图示)一个产品秘钥支持两台电脑同时使用,如果超过两台电脑,则需要清除其中一台电脑的绑定,也就是反激活操作。又或者因为某些原因导致电脑需要重装系统,那么,你也需要进行反激活。否则,就会出现产品秘钥失效的情况。
 
本文将详细介绍Edraw Max(亿图图示)8.7以上版本在软件上应该如何进行反激活操作!目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
 
首先,请确定软件是8.7及其以上版本,软件版本查看如下图所示:
 
如果软件版本未达到8.7以上,请先进行软件更新。Edraw Max(亿图图示)8.7最新中文版点击下载>>>
 
如果已经是8.7以上版本的,就可以通过软件一键“反激活”按钮,来进行反激活操作了。
 
第一步:点击软件上方菜单栏“帮助”中的“反激活”,然后系统会弹出一个提示框,确认信息后点击“反激活”。
第二步:当提示反激活成功后,软件会自动关闭。
第三步:再次打开软件,软件就显示为试用版本的了。
接下来你就可以任意的换电脑,重装系统了。当这一切都准备完毕,软件也重新下载、安装好了,最后只需要按照一般的激活方法,使用原来的产品密钥激活软件就可以了!
总而言之,如果你要换电脑了,请提前进行反激活;如果你的电脑需要重装系统,也请提前反激活。
 
Edraw Max(亿图图示)8.7最新版下载地址:https://www.evget.com/product/2064/download
 
温馨提示:首次反激活即刻生效,以后再进行反激活则需30天的冷却期。
未发布 安全预警:Xshell 5.0 Build 1322官方版本被植入后门,请尽快更新至最新版本
by Harriet666 keys 分享 1502703358521
知名服务器终端管理软件Xshell在7月18日发布的5.0 Build 1322官方版本被植入后门,用户下载、更新到该版本均会中招。危害正在评估中,或可能窃取用户设备信息。
 
Xshell是一款功能强大的服务器终端管理软件,支持SSH1、SSH2、TELNET等协议,由国外公司NetSarang开发,在运维、站长、安全等圈子里有极多受众。
 
NetSarang公司在8月7日发布安全公告,称其最近更新(7月18日)的Xmanager Enterprise、Xmanager、Xshell、Xftp、Xlpd五款软件存在安全漏洞,官方已于8月5日紧急修复,并发布更新版本。目前暂未发现有人利用过漏洞。
 
五款软件的受影响版本:
Xmanager Enterprise 5.0 Build 1232
Xmanager 5.0 Build 1045
Xshell 5.0 Build 1322
Xftp 5.0 Build 1218
Xlpd 5.0 Build 1220
 
8月5日五款软件发布新版本,更新日志基本一致,都提到修复SSH通道的追踪消息和问题文件nssock2.dll:
FIX: Unnecessary SSH channel trace messages
FIX: Patched an exploit related to nssock2.dll
 
NetSarang公司没有解释漏洞的成因,据了解,很可能是该公司遭遇了入侵,发布版本被植入后门。有国内用户更新到Xshell问题版本,抓包发现该版本的nssock2.dll会向陌生域名(*.nylalobghyhirgh.com)发送畸形DNS请求。问题版本的nssock2.dll带有官方签名,可能是攻击者窃取了NetSarang的签名,或者直接在源码层面进行了植入。


修复方案

NetSarang公司已经发布修复版本,建议该公司产品用户请尽快更新至最新版本,企业网络可将*.nylalobghyhirgh.com域名进行屏蔽。

目前五款软件的最新版本:
Xmanager Enterprise 5 Build 1236下载
Xmanager 5 Build 1049下载
Xshell 5 Build 1326下载
Xftp 5 Build 1222下载
Xlpd 5 Build 1224下载
未发布 图像扫描工具包VintaSoftTwain.NET SDK v10.1发布,简化图像采集功能
by Harriet666 keys 分享 1491816416520
VintaSoftTwain.NET SDK允许控制平台和手持扫描仪、网页和数码相机,以及.NET环境中的任何其它TWAIN设备的运作。
【最新VintaSoftTwain.NET SDK点击下载>>>】

更新内容:

1、现在,从扫描仪中获取图像的功能可以很简单地添加到Web应用程序中:
  • Vintasoft.Twain.Web.WcfServices程序集可以在ASP.NET应用程序的服务器端使用,并允许创建一个用于从扫描程序中采集图像的WCF服务。
  • 可以在ASP.NET MVC应用程序的服务器端使用Vintasoft.twain.Web.ApiController组件,并允许创建一个用于从扫描仪中进行图像采集的Web控制器。
  • 用JavaScript编写的Vintasoft.Twain.js文件可以在ASP.NET应用程序的客户端使用,包括类和枚举,这简化了扫描仪的图像采集功能。
2、演示应用:
  • VintasoftWebTwainService - 新的控制台演示应用程序,演示了如何创建一个本地自我托管的Web服务来管理扫描仪。该Web服务是基于Web API控制器的。
  • AspNetMvcTwainDemos - 新的ASP.NET MVC演示应用程序,演示了如何从扫描仪中获取图像,处理所获取的图像,将获取的图像保存到本地文件或上传到HTTP(S)服务器上。该演示可以在任何浏览器(Chrome、Firefox、Edge、Internet Explorer、Opera)中使用,并使用本地Web服务与扫描仪进行通信。该演示使用了在VintasoftWebTwainService演示应用程序中实现的本地Web服务。
  • VintasoftWcfTwainService - 新的控制台演示应用程序,演示了如何创建一个本地的自我托管的Web服务来管理扫描仪。该Web服务是基于WCF服务的。
  • AspNetTwainDemos - 新的ASP.NET WebForms演示应用程序,演示了如何从扫描仪中获取图像,处理获取的图像,将获取的图像保存到本地文件或上传到HTTP(S)服务器上。该演示可以在任何浏览器(Chrome、Firefox、Edge、Internet Explorer、Opera)中使用,并使用本地Web服务与扫描仪进行通信。该演示使用了在VintasoftWcfTwainService演示应用程序中实现的本地Web服务。
未发布 一体化建模仿真平台20-sim v4.6.4发布,修复3D动画
by Harriet666 keys 分享 1503567227661
20-sim是一种机电一体化系统的建模和仿真程序。利用20-sim可以像绘制工程方案一样灵活地的键入模型。这些模型能用于仿真和分析多域动态系统的特性,也可以创建控制系统,甚至可以生成C代码并用于快速原型设计和HIL仿真。

【20-sim v4.6最新版点击下载】

一体化建模仿真平台20-sim v4.6.4发布。此版本是一个维护版本,主要修复了以下问题:
3D动画修复:
  • 点角度范围问题。
代码生成修复:
  • 如果子模型采用输入的积分,则直接映射到R(ate) - 变量。
  • FMU中的初始方程不能影响初始状态。
  • 在FMI 1.0主模拟器中运行FMU时发生崩溃。
文档修复:
  • 参考手册:关于'while do'和'reapeat until'的声明不清楚。
  • 参考手册:3D动画窗口中的欧拉角定向(ZXZ而不是XYZ)。
模拟器修复:
  • 在模拟期间关闭20-sim时不保存模型。
  • 编写多个运行结果的数据文件时出现问题(参数扫描)。
  • 未命名节点可以为连续时间块而不是相应的离散块生成指令的问题。
未发布 MailBee.NET Objects显示HTML/纯文本邮件教程(二):在桌面应用程序中显示
by Harriet666 keys 分享 1502445139738
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
 
MailBee.NET Objects介绍和试用点击查看>>>
 
本文主要介绍了在桌面应用程序中显示HTML/纯文本邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
如果你需要在桌面应用程序中以纯文本控件(如Memo)显示HTML消息,则应将HTML文本转换为纯文本。
C#
msg.Parser.HtmlToPlainMode = HtmlToPlainAutoConvert.IfNoPlain;
VB.NET
msg.Parser.HtmlToPlainMode = HtmlToPlainAutoConvert.IfNoPlain
 
上面的代码将邮件转换为纯文本。然后你可以显示如下的纯文本正文(假设textBox1是表单上的文本控件):
C#
textBox1.Text += msg.BodyPlainText;
VB.NET
textBox1.Text += msg.BodyPlainText

 近期热门 - 点击最多
  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