未找到

未发布 【示例教程】LEADTOOLS中如何载入DICOM文件并压缩
by Harriet666 keys 分享 1510907723026
LEADTOOLS可帮您开发出功能强大的文档图像应用程序。其主要功能包括综合图像注释,专业的黑白图像显示(例如灰度级和偏黑),以及专业的黑白图像处理。其它功能包括对黑白图像的性能和内存进行优化,文档图像清理(包括倒置文本,去边界,去打孔机和去线)以及使用LEADTOOLS Fast TWAIN和WIA进行扫描。
 
本篇文章分享一个基本的LEADTOOLS C#代码示例,讲解如何载入DICOM文件,然后将它压缩保存以减少文件大小。
 
在压缩时,你将使用jpeg2000压缩类型。一旦初始化了DicomJpeg2000Options选项,就可以开始为新的DICOM文件设置选项了。
 
有两个枚举,将在这个过程中使用的:
  • CompressionControl-获取或设置指示如何确定所产生的压缩。
  • CompressionRatio -获取或设置指示压缩比使用整型值。
一旦你有了这些枚举集合的DicomJpeg2000Options选项,你需要给数据集本身的选项。
 
现在你可以使用ChangeTransferSyntax改变数据集的传输语法。
 
最后,你可以使用保存方法保存数据集。
 
通过这些设置,我们可以将DICOM文件从从854kb压缩到36kb。
 
DicomEngine.Startup();
using (DicomDataSet ds = new DicomDataSet())
{
   //Load DICOM File 
   ds.Load(input, DicomDataSetLoadFlags.None);

   //Initialize J2K Options
   DicomJpeg2000Options options = ds.DefaultJpeg2000Options;

   //Set Options
   options.CompressionControl = DicomJpeg2000CompressionControl.Ratio;
   options.CompressionRatio = 50;

   //Add options to the dataset
   ds.Jpeg2000Options = options;

   //Change the transfer syntax to J22K
   ds.ChangeTransferSyntax(DicomUidType.JPEG2000, 2, ChangeTransferSyntaxFlags.MinimizeJpegSize);

   //Save Dicom file
   ds.Save(dest, DicomDataSetSaveFlags.None);

   //Shut down the DICOM engine
   DicomEngine.Shutdown();
}
未发布 百度正式开源其RPC框架brpc
by Harriet666 keys 分享 1506650334597
9月14日,百度正式在GitHub上基于Apache 2.0协议开源了其RPC框架brpc。brpc是一个基于protobuf接口的RPC框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有RPC协议,并支持多种第三方协议,从目前的性能测试数据来看,brpc的性能领跑于其他同类RPC产品。
 
brpc开发于2014年,主要使用的语言是C++和Java,是百度内部使用最为广泛的RPC框架,它经受了高并发高负载的生产环境验证,并支撑了百度内部大约75万个同时在线的实例。据了解,百度内部曾有多款RPC框架,甚至在2014年时还开源过另外一款RPC框架sofa-pbrpc。那brpc是在什么样的背景下诞生的?它有什么样的优势?又为何要开源?就这些问题,InfoQ记者采访了brpc负责人戈君。
 
Q:谈谈brpc的一些基本情况?什么时候开始研发的?经过了怎么样的迭代和升级?目前在内部应用情况如何?

戈君:brpc于2014年创建,在百度内部称为“baidu-rpc”。到目前为止,brpc一共进行了3000次左右的改动,现在仍在持续优化中,百度内的wiki上可以查询到每次改动的描述。brpc的主要语言是C++和Java,对其他语言的支持主要是通过包装C++版本,比如brpc的Python版包含C++版的大部分功能。
 
brpc目前支撑百度内部大约75万个同时在线的实例(不含client),超过500种服务(去年的统计,现在已不统计这类数据)。Hadoop、Table、Mola(另一种广泛使用的存储)、高性能计算、模型训练、大量的在线检索服务都使用了brpc。brpc第一次统一了百度内分布式系统和业务线的通信框架。
 
Q:为什么百度当时要研发brpc?

戈君:我们在实践中意识到,RPC作为最基础的通信组件,当时的百度已经不领先了。我当时的经理刘炀曾是Google的工程师,非常重视基础架构的建设,也愿意在这个方向投入资源。
 
我们在内部会更加深入地讨论这些问题。“好用”有时看起来很主观,但其实还是有据可循的,它的关键点是能不能真正地提高用户的效率:开发、调试、维护都要考虑到,如果用户效率真的被提高了,用户会想着你的,靠吹嘘或政令推广的东西得不了人心。我们创建brpc的初衷是解决百度业务所面临的实际挑战,同时也希望成为百度同学最喜爱的工具,哪怕离开百度也会怀念brpc。我们希望在提供了一个好用框架的同时,也展现了一种工作方法:注释怎么写,日志怎么打,ChangeLog怎么写,版本怎么发布,文档怎么组织,甚至对未来不在百度的同学的工作也有帮助,所以从这点来说brpc从一开始就是拥抱开源的。事实上,我们在口碑上做得还不错,brpc的wiki可能是百度内被点赞最多的内容之一。
 
Q:与其他的一些开源的RPC框架相比,brpc的优势是什么?

戈君:brpc主打的是深度和易用性。一方面我们没有精力像gRPC那样摊大饼,什么都做。另一方面我们也注意到gRPC(包括更早的Thrift)的深度和易用性并不够。技术方面的东西就是这样,看示例程序,文档非常牛逼,但实战中可能就是另一回事了,为什么各个公司都要造自己的轮子,一个隐藏原因就是表面高大上的东西在一些细节上让你无法忍受。

RPC真正的痛点是什么?是可靠性、易用性和定位问题的便利性。服务中不要出现不可解释的长尾,程序的可变项要尽量少,各种诡异问题要有工具支持快速排查。而这些在目前开源的RPC框架中做的并不好,它们大多看着很牛,但就是无法在自己组织中推广开来。回到前面那三点,brpc是如何做的呢?
  • 可靠性。这一方面是代码质量问题,通过为brpc团队设立很高的招聘门槛,以及在团队中深入的技术讨论,我们确保了稳固的代码基础。另一个问题是长尾问题,这是设计问题,brpc其实包含了很多模块,其中的bthread是一个M:N线程库,就是为了更好地提高并发避免阻塞。brpc中的读和写都是wait-free的,这是最高程度的并发。技术细节请点击链接查看。
  • 易用性。有种设计是什么选择都做成选项丢给用户,号称功能都有,但一旦出问题,则是用户“配置错了”。而且这样用户还非常依赖开发团队,没有开发团队的支持基本用不了,开发团队有足够的理由扩充团队。这么做其实非常不负责任,用户面对海量的选项也很难受。brpc对于增加选项非常谨慎,框架能自己做判断的绝不扔给用户,所有用户选项都有最合理的默认值,不设也能用。我们认为这对用户体验来说非常重要。
  • 定位问题的便利性。这点其它开源框架目前做的都不好,正常使用是可以的,但出问题就麻烦了。这个问题在百度内部其实也很严重,brpc之前用户排查问题都要拉RPC同学一起排查,RPC框架对用户是个黑盒,用户根本不知道里面发生了什么。按我们的经验,基本每天都有几个用户在群里问server卡顿,client超时之类的问题,排查问题是常态,人手必然不够。时间长了用户就觉得你这个框架各种问题,人还拽的不行很少回他们消息。brpc的解决办法是给server内加入各种HTTP接口的内置服务,通过这些服务,用户可以很快看到server的延时、错误、连接、跟踪某个RPC、CPU热点、内存分配、锁竞争等信息,用户还可以使用bvar来自定义各类统计信息,并在百度的运维平台NOAH上汇总。这样大部分问题用户可以自助解决。其实我们去看也是看这些,只是会更加专业。内置服务的具体说明可以看这里。
 
Q:作为公司内部的RPC框架,在服务治理方面有什么考虑?

戈君:百度内部RPC使用非常广泛,基本都是RPC调用,一些产品线还会通过local RPC隔离工程框架和策略代码。这么多年下来,服务周边的系统也比较全面了:编译是BCLOUD,发布是Agile,服务注册和发现是BNS,认证是Giano,监控和运维是NOAH。在百度内部,brpc和这些系统做了比较紧密的绑定,用户体验是一站式的。虽然在开源版本中,这些结合大都删掉了,但用户可以根据自己组织中的基础设施来进行定制:交互协议,名字服务,负载均衡算法都可以定制。对于其中一些特别通用的,我们希望用户反馈到开源版本中来以方便所有人。
 
Q:之前百度还开源过sofa-pbrpc,brpc与它的区别是什么?

戈君:sofa-pbrpc也是百度开发的一个比较早期的RPC框架,属于sofa编程框架的一部分,在搜索有应用。brpc相比sofa-pbrpc有如下优点:
  • 对协议的抽象更一般化,并统一了全百度的通信架构。bprc能容纳非常多的协议,基于Protobuf的,基于HTTP的,百度内的nshead/mcpack,开源的Redis/Memcached,甚至RTMP/FLV/HLS直播协议,brpc能逐渐地嵌入现有系统,而不需要彻底重构,但sofa-pbrpc则不具备扩展协议的能力。类似的,sofa-pbrpc也无法定制负载均衡算法,brpc默认提供round-robin、随机、一致性哈希,Locality-aware(局部性感知)四种算法,用户还能定制。
  • 多线程质量更好。多线程编程是非常困难的,看起来简单的RPC遍布多线程陷阱,比如处理超时的代码可能在RPC还没发出去时就运行了;发送函数还没结束,处理回复的回调就被运行了;一个回复还在被处理另一个回复回来了,诸如此类。另外,一个异步RPC的回调里发起一个同步RPC会发生什么,带着锁做同步RPC会发生什么。这些问题我们都不能在sofa-pbrpc中找到满意的答案。
  • 完备的调试和运维支持。解决这个问题的本质还在可扩展性,你如何让用户参与进来定制他们感兴趣的指标,为此我们设计了bvar,让用户能用比原子变量代价还小的方式自由地定制各种指标,用户能在浏览器上看到指标的变化曲线,或在运维平台NOAH看到汇总的监控数据。brpc还加入了大量内置服务方便用户调试程序,查看连接,在线修改gflags,追踪RPC,分析CPU热点,内存分配,锁竞争等一应俱全。
无需讳言,brpc在诞生之初和sofa-pbrpc在百度内部是有竞争关系的,但就像其他地方一样,这种竞争带来了活力。类似的,brpc和其他已经开源的RPC框架也是良性的竞争关系,在比拼谁能真正提高用户效率的过程中共同进步。每个用户都可以去对比代码、文档质量,接口设计,易用程度,扩展能力等,投出自己的一票。
 
Q:谈谈brpc的整体架构?

戈君:技术栈无外乎是从传输层垒到应用层,就略过不讲了,具体可以去看下开源出来的文档。brpc在架构上强调“在不牺牲易用性的前提下增强可扩展性”,比如brpc支持非常多的协议,在百度内部一个brpc server同端口可以支持二十几种协议,这对于服务的平滑迁移就非常好用。

Client端的协议也非常多,用户用brpc和bthread用得很爽,所以希望我们最好能统一所有的客户端,像对Redis和Memcached的客户端支持也是在这个背景下做的,这两个客户端比官方Client好用多了,感兴趣的读者可以去尝试一下。但这么多协议的配置非常简单,填个字符串就行了,比如HTTP就是把ChannelOptions.protocol设为“http”,Redis就是“redis”。Server端甚至不用设,它会自动判断每个client的协议,怎么做到的开源文档里也有。

名字服务、负载均衡也都可以定制。但为了对用户负责,我们也不鼓励“太自由”的定制,比如一点点需求的变化就要搞个新的,这时更需要想清楚本质区别是什么。这个事情我们在百度内的支持群里每天都在做,我们是开放的”乙方”,但我们也是严厉的”乙方”。
 
Q:brpc的性能如何?这么高的性能是怎么做到的?

戈君:性能是我们非常看中的一点,它和用户体验也是紧密联系的。好用但性能不行,或不好用但性能很牛,用户会很难受,我们不希望用户纠结。从另一个角度来看,在推广初期,我们要说服产品线用brpc靠什么?最直观的就是性能提升。而且这儿的性能不能停留在benchmark的图片上,而是能在真实应用中体现出来。开放出来的案例文档中或多或少都包含了性能提升,具体如下:
  • 百度地图API入口
  • 联盟DSP
  • ELF学习框架
  • 云平台代理服务
 
Q:为什么要将brpc开源?接下来在开源项目的迭代方面有什么计划吗?

戈君:因为马上还有不少依赖RPC的百度系统要开源啊。RPC作为最基础的组件,开源不仅仅是为了自身,也是为其它开源项目铺路,比如说我们马上还会开源基于brpc的RAFT库,搭建高可用分布式系统非常方便;以及使用brpc的bigflow,让流式计算变得很顺手。这些年百度对开源的认识也在不断加深,开源看似曝光了百度的核心技术,但带来的生态影响力更重要。从Apollo、PaddlePaddle开始,百度真的开始拥抱开源了。brpc的开源版和内部版很接近,只是去掉了对百度内部独有的一些基础设施的支持,我们在内网写的深入分析RPC技术细节的文档也都一并开源了,后续也会及时推送改动,请大家放心。这是一个活项目,不会拉个开源分支就不管了。
查看更多资讯>>>

未发布 MailBee.NET Objects退回邮件教程(二):POP3部分
by Harriet666 keys 分享 1503567760428
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,
简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。

MailBee.NET Objects介绍和试用点击查看>>>
 
 
本文主要介绍了SMTP服务器退回邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
 
在上期的SMTP部分中,我们将退回的电子邮件发送到指定的单个电子邮件地址。
 
每封退回的电子邮件都包含失败的电子邮件地址(以及其他信息)。这个失败的地址是我们想知道的。这个任务看起来很简单 - 你需要做的是扫描退回的
邮件以确定地址的典型字段。但是有一个隐藏的危险:每个邮件服务器都有自己的邮件退回格式。虽然它们几乎具有相同的“From”和“主题”字段,但是退回地址可以在邮件的任何位置。MailEnable服务器的典型退回邮件如下所示:
From: POSTMASTER@domain.com
To: jdoe@domain.com
Subject: Message Delivery Failure

MailEnable: Message Delivery Failure.

The following recipient(s) could not be reached: 

Recipient: [SMTP: bill@domain.com] Reason: The message could not be delivered because the domain name (domain.com) does not appear 

to be registered.

函数GetInvalidEmailAddressME()检查邮件是否被退回,并从退回的邮件中提取失败的地址。由于退回邮件格式不同,此功能仅对MailEnable服务器有效。例如,如果你正在使用Communigate Pro服务器,则退回消息如下所示:
From: MAILER-DAEMON@domain.local
To: jdoe@localhost Subject:
Undeliverable mail:

Failed to deliver to ''
 
正如你所看到的,这个退回的邮件与前一个几乎相同。使用哪个服务器并不重要,退回信息总是有From,To和Subject字段,退回信息在其正文中有失败的地址。函数GetInvalidEmailAddressCP()与前一个函数几乎相同; 区别仅在于检查邮件字段并搜索失败的地址。支持尽可能多的退回电子邮件格式至关重要。这就是为什么你需要修改GetInvalidEmailAddress()函数,以适应服务器使用的退回电子邮件格式。
 
注意:在某些情况下,你可能需要扫描退回的电子邮件以获取其他信息。如果由于暂时的问题,退回的邮件到达,则不要删除电子邮件地址:邮箱超过配
额,邮件服务器关闭等。退回邮件可以分为两种类型:硬邮件和软邮件。如果是不存在的帐户或域,则会发生硬性退回。其他故障,如完整的邮箱或暂时
不可用的域,则是软性退回。你可以为数据库中的每个地址进行计算。也许下一次尝试发送邮件到具有一些软性退回的地址时将成功。
 
代码示例:
在此示例中,我们从指定的帐户中检索退回的电子邮件,然后从每个退回的电子邮件中提取失败的电子邮件地址。失败的地址传递给RemoveEmailFromDatabase子程序,该子程序必须从数据库中删除失败的地址。应用程序还会从服务器中删除退回的电子邮件,以避免下次处理。
C#:
// Create POP3 object
Pop3 pop = new Pop3();

// Enable logging to file
pop.Log.Enabled = true;
pop.Log.Filename = @"C:\log.txt";
pop.Log.Clear();

// Connect to POP3 server
pop.Connect("mail.domain.com");
pop.Login("bounce", "secret");

// Download headers and bodies of all messages.
MailMessageCollection msgs = pop.DownloadMessageHeaders(1, -1, -1);
                        
// Loop through all messages in the mailbox
foreach (MailMessage msg in msgs)
{
        string strLine = msg.BodyPlainText;
        Console.WriteLine("From: " + msg.From.Email);
                                
        // Get failed email address
        string str_invalid_email =  GetInvalidEmailAddressME(msg);

        // If str_invalid_email is non-empty then failed email 
        // address was found
        if (str_invalid_email.Length > 0)
        {
                // Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email);

                // Display invalid adress
                Console.WriteLine("Invalid email: " + str_invalid_email);                

                // Delete bounced email from server to avoid
                // processing it next time
                pop.DeleteMessage(msg.IndexOnServer);
        }
}

// Disconnect from POP3 server
pop.Disconnect();

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for MailEnable servers
static string  GetInvalidEmailAddressME(MailMessage msg)
{
        string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Delivery Failure") == -1)
{ 
                return "";
        }
        if (msg.From.ToString().IndexOf("POSTMASTER") == -1)
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("SMTP:");

        // Check if bounced message report contains "Recipient:" field
        if (i_start == -1)
        {
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for Communigate Pro servers
static string  GetInvalidEmailAddressCP(MailMessage msg)
{
string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Undeliverable mail") == -1) 
        {
                return "";
        }
        if (msg.From.ToString().IndexOf("MAILER-DAEMON") == -1) 
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("to '<");

        // Check if bounced message report contains 
        // "Failed to deliver to " field
        if (i_start == -1)
        { 
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// This function must remove (or disable) specified
// email address from mailing list
static void RemoveEmailFromDatabase(string str_invalid_email)
{
// TODO: Add your code here                        
}
 
VB.NET:
Dim pop As New Pop3

' Enable logging to file
pop.Log.Enabled = True
pop.Log.Filename = "C:\log.txt"
pop.Log.Clear()

' Connect to POP3 server
pop.Connect("mail.domain.com")
pop.Login("jdoe", "secret")

' Download headers and bodies for all messages.
Dim msgs As MailMessageCollection = pop.DownloadMessageHeaders(1, -1, -1)

' Loop through all messages in the mailbox
Dim msg As MailMessage
For Each msg In msgs
        Dim strLine As String = msg.BodyPlainText
        Console.WriteLine("From: " + msg.From.Email)

        ' Get failed email address
        Dim str_invalid_email As String = GetInvalidEmailAddressME(msg)

        ' If str_invalid_email is non-empty then failed email 
        ' address was found
        If str_invalid_email.Length > 0 Then
                'Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email)

                ' Display invalid address
                Console.WriteLine("Invalid email: " & str_invalid_email)

                ' Delete bounced email from server to avoid
                ' processing it next time
                pop.DeleteMessage(msg.IndexOnServer)
        End If
Next
Console.ReadLine()

' Disconnect from POP3 server
pop.Disconnect()

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for MailEnable servers
Function GetInvalidEmailAddressME(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Delivery Failure") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("POSTMASTER") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("SMTP:")

        ' Check if bounced message report contains "Recipient:" field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for Communigate Pro servers
Function GetInvalidEmailAddressCP(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Undeliverable mail") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("MAILER-DAEMON") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("to '<")

        ' Check if bounced message report contains 
        ' "Failed to deliver to " field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' This function must remove (or disable) specified
' email address from mailing list
Sub RemoveEmailFromDatabase(ByVal str_invalid_email As String)
        ' TODO: Add your code here                        
End Sub
未发布 Edraw Max(亿图图示)教程:如何自定义组织结构图展示的信息
by Harriet666 keys 分享 1499850237522
在我们的日常工作中,或多或少的需要绘制一些图表,可能是某个会议的流程图,也有可能是公司的组织结构图等等,然而绘制这么多的图表,仅靠Word、PPT似乎已经越来越无法满足我们的需求了。Edraw Max(亿图图示)的出现,就是为了更好地满足我们不断提示的需求。
 
本文就给大家介绍 一下,在使用Edraw Max(亿图图示)绘制企业组织结构图的时候,应该如何完美的展现各种信息!目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
 
Edraw Max(亿图图示)V8.7中文版点击下载>>>
 

1、自定义组织结构图字段

只需点击“组织结构图”菜单的“定义域”按钮,在形状数据对话框中,就可以定义员工图形的数据域。而且这项调整将会作用于表中所有形状,所有数据也都可以导出为 excel 表格形式。
如果默认的属性中没有你所需要的,还可以通过“定义属性”添加新的属性。


2、显示选项

点击“组织结构图”菜单中的“显示选项”按钮,即可在显示对话框中,自定义显示的数据,照片、尺寸,显示顺序,字体样式和形状大小。“显示选项”左下角可选择应用的范围,可根据需求自由选择。
未发布 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017
by Harriet666 keys 分享 1499676794095
Elements是一款多平台移动项目开发工具软件,它包含Oxygene、C#、Swift三种编程语言和相关工具,并且提供这三种语言丰富的开发经验以及最新的Fire开发环境,极大的方便开发人员开发软件项目。
 
Elements 9.1点击下载>>>
 


 Fire


此版本是Fire最重要的更新。

性能改进

Fire在许多方面都进行了精简和性能改进。代码编辑器的响应速度更快,例如,在构建过程中CPU占用低。100%的响应一直是Fire的首要目标。Fire的大部分工作都是在极低功耗的12“MacBook”Adorable“上完成的,而我们的基准是,即使是最低端的硬件,Fire也可以使用,9.1版本更是如此。

互动调试控制台

Fire的调试功能在许多方面得到了加强,最出色是引入了新的交互式调试控制台。当你的应用程序进入调试器时,底部控制台视图现在允许你使用调试器命令提示符与调试器进行交互。
在使用LLDB的平台(如Cocoa和一些Island targets)上,你可以使用所有功能访问LLDB的完整命令界面;在其他平台上你会收到我们的edb提示,它提供必要的命令并将随着时间的推移而扩展。
3dac7b36f7c847c484d29ce20110bdabojpg

Gradle References和EBuild

Fire(和Elements构建链)支持Java和Android项目中的显式Gradle References管理。Gradle References现在是项目的第一类成员,就像常规引用一样,它们可以通过“管理引用”表进行添加和更新。Fire还使用我们即将推出的EBuild工具链的技术预览。
9028a442e67b45839026cef980b7bcdfojpg
 

 Visual Studio中的Elements


Visual Studio是Windows上开发人员的主要IDE,Elements 9.1为Visual Studio带来了一些新功能和增强功能。

支持Visual Studio 2017

支持所有新的Visual Studio 2017 IDE。虽然没有Shell,Elements 9.1提供了与已安装的Visual Studio 2017集成,包括专业版、企业版和免费社区版。当然,VS2017中支持所有四种平台和三种语言。
 

 
 Island


我们最初在9版中引入的新版本的Island平台也是这个版本的主要重点,有许多改进和增强和修复:

在Windows 10上运行和调试Linux应用程序

针对Linux的Island开发人员现在可以在Visual Studio、Windows 10 Creators Update或更高版本的本地机器上无缝地运行和调试他们的应用程序,只需点击“ 开始 ”或按F5。
f54702d38b3c44e28301c258b27bb1f9ojpg
 
 

新的子平台:ARM上的Android NDK和Linux

Elements 9.1中Island平台支持两个新的子平台。除了支持英特尔x64之外,Linux应用程序现在可以定位armv6和更高版本的CPU。你可以开发在嵌入式设备上运行的Island应用程序,从Raspberry Pi一直运行到Bare ARM系统等。
此外,我们还添加了Android NDK作为一个brad新的子平台,允许你使用NDK、Oxygene、C#、Swift和Java语言创建Android应用程序扩展(或整个应用程序)。

支持Library

EUnit、Elements RTL和Delphi RTL都已经移植到了这个版本的Island,现在在使用这些(可选)库时,可以在所有三个平台上同步。
 

 
 Libraries


Elements RTL

Elements 9.1正式引入了新的跨平台兼容性库Elements RTL。代替“Sugar”,Elements RTL是一个可选的库。无论你是在编写一个iOS应用程序并计划移植到Android,还是要创建Mac和Windows版本的桌面应用程序,Elements RTL可以轻松共享代码。
当然,Elements RTL也支持我们新的Island平台。

Delphi RTL改进

用于将Delphi代码移植到Oxygene的Delphi RTL兼容性库得到了改进。它现在基于Elements RTL,并且也适用于Island,使其成为跨所有Elements targets的真正跨平台。
未发布 专业的格式转换工具pdf2cad发布v11,支持当前所有的Windows和Mac操作系统
by Harriet666 keys 分享 1491899188681

pdf2cad是一款可将PDF文件转换成CAD格式的转换工具。仅需几秒钟,便可将所提取的准确图形在常规的CAD工具中进行修改,如AutoCAD, TurboCAD和MicroStation。pdf2cad可将PDF工程图输出为DWG, DXF和HPGL格式。pdf2cad格式转换工具适用于Windows或Mac OS X操作系统。

pdf2cad v11提供了许多新功能和增强功能,包括64位版本,支持所有当前的Windows和Mac操作系统,处理受密码保护的PDF文件,更多地控制图像,灵活的页面编号,其他方法来分隔图层等等。

【pdf2cad点击下载>>>】

pdf2cad v11更新内容:


输入选项
  • pdf2cad v11提供了一个新的选项来指定受密码保护的PDF文件。
pdf2cad
输出选项
  • 在输出文件名中定义页码的新选项
  • 使用文件名作为目录名称的新选项
pdf2cad
文本选项
  • 支持Unicode字符集
  • 提升处理未知字符编码的能力
格式
  • 增加DXF / DWG格式的英寸作为单位选项
分层
  • 基于实体类型的图层
  • 改进嵌套分层和名称验证
  • 将每个图层转换为单独文件的新选项(仅限DXF)
pdf2cad
比例选项
  • 使用mm、英寸、英尺和米的新选项来定义比例
pdf2cad
图像选项
  • 可忽略小图像或裁剪后将其转换为颜色线
  • 将图像对象移动到背景的新选项
  • 如果PDF文件包含IMAGE对象,则显示警告消息
pdf2cad
综合
  • 改进字体警告处理
  • 修复和改进DXF / DWG格式
  • 增强PDF解释器
  • 新的64位版本pdf2cad 
  • 支持最新的操作系统版本,包括Windows 10.0和Mac OS X Mavericks
  • pdf2xxx CL(Windows)支持Unicode文件名
未发布 网络通讯控件PowerSNMP for .NET常见问题合集
by Harriet666 keys 分享 1502788489271
PowerSNMP for .NET是用于监视和控制网络设备创建自定义的SNMP管理器。简单网络管理协议(SNMP)采用线程通信机制,安全强、并且具有编码/解码功能,您可以快速开发定制SNMP应用程序。由于开发此工具需要的资源少,灵活性好,所以便于重新使用和维护。
 
PowerSNMP for .NET试用版下载>>>
 
问:PowerSNMP for .NET与其他SNMP产品有什么不同?
答:最新版本的PowerSNMP产品线增加了新的.NET 2.0重新设计,利用新的.NET环境的强大功能,提供了最先进的Internet Communications组件。包含以下功能:
  • SNMP版本1,2和3包含认证、加密/解密
  • RFC 1155,1157,1158,1213,2578,2579,3417和3418中定义的内置对象、标识符、表格、通知和组
  • MIB解析,自定义MIB文件可用于在源代码中生成C#或VB类
  • MIB编译,自定义MIB文件可用于在运行时生成动态类和对象
  • 可轻松实现多线程应用程序的启动方法
  • EncodedMessage属性,用于轻松调试发送和接收的字节以及会话记录
.NET环境已经发展,用户也是如此。客户正在开发更多的ASP.NET应用程序,更多的控制台应用程序和更多的服务应用程序。缺乏UI、伪阻塞和异步方法与这些环境无关。由于这些原因,PowerSNMP for .NET 4.x设计有以下重点:
  • 改进异步支持:传统的PowerSNMP异步支持提供了一种在工作线程上执行的方法,但这需要一个信号机制来指示何时完成操作。这导致了难以维护的事件驱动代码。通过新的设计,代码占用更少的资源并且更加灵活。
  • 改进.NET 2.0功能:PowerSNMP 4.x已经充分利用了.NET 2.0中引入功能。现在大多数用户已经从.NET 1.x迁移,可以升级PowerSNMP并兼顾兼容性。当然,.NET 1.x产品线仍可在.NET 1.x环境中使 用以支持旧版应用程序。
  • 支持.NET CF(Compact Framework):通过新的设计,全面支持Compact Framework。

问:试用版与许可版本有什么不同?
答:在开发期间,产品“试用”版本和许可版本之间没有区别。
在运行时,没有有效的开发者许可证创建的应用程序将定期显示一条试用消息。除了这个消息之外,功能没有区别。

问:示例是否随产品一起发送?
答:当然。我们发送将CSharp和Visual Basic .NET中的完整应用程序(不仅仅是简单的技术演示)作为Windows应用程序和Web应用程序。
 
问:PowerSNMP是否完全支持从表格中获取值?GetBulk怎么样?
答:以上都支持。PowerSNMP包括高级表格检索方法,完全支持版本2命令(如GetBulk)。
 
问:应用程序如何使用Manager控件?
答:一个典型的应用程序会将所有代理的IP地址存储在网络上,并且会按照时间表从代理收集统计信息。应用程序的地址也可能会被注册到代理以设置陷阱,因此管理员将以异步方式(动态地)通知重要的代理事件。信息将被记录到文件中,并通过用户界面动态显示。
 
问:应用程序如何使用代理控件?
答:假设PC主机正用于控制硬件设备。你可以创建一个代理,被查询时将通过硬件设备的统计信息进行响应。该概念可以扩展到提供由主机收集和提供的任何类型的信息(使用SNMP标准)。
 
问:我可以创建一个作为Microsoft操作系统代理的子代理吗?
答:通常不能。代理商通常使用“知名”端口161进行通信。由于Microsoft的代理将使用此端口,你的应用程序将必须使用非标准端口,并且你的管理器必须配置为检查你的非标准端口(可以在某些情况下进行,但不常见)。
 
问:当我建立VS.NET 2008 Website时,为什么会出现“尝试反序列化一个空的流”的异常?
答:网站为组件许可创建一个App_Licenses.dll,必须与应用程序一起分发。由于一个明显的VS.NET 2008错误,这个dll在64位操作系统编译时是错误的。为了解决这个问题,可以更换2008 Website中的App_Licenses dll。 
 
选项包括:
a)使用相同的控件/组件在相同(许可)机器上编译2005 Website
b)在32位计算机上编译2005或2008 WebSite,前提是该机器也获得许可(Dart Developer许可证允许安装在最多两台机器)
从以上的选项中选一个替换有缺陷的App_Licenses.dlll,并且网站应该在没有问题的情况下构建和部署。不要删除新的dll,否则VS.NET将再次创建错误的dll。
未发布 【福利】Dynamsoft全线产品7折限时特惠,全年仅此一次!
by Harriet666 keys 分享 1510218248423
Dynamsoft公司是版本控制和事件跟踪软件应用程序领域的领先开发商。旗下扫描识别工具Dynamic Web TWAIN、版本控制软件SourceAnywhere for VSS、.NET控件Dynamic .NET TWAIN等产品深受用户的青睐。
 
为了感谢广大用户的支持,慧都14周年之际与Dynamsoft公司联合推出“Dynamsoft全线产品7折限时特惠”活动,全年仅此一次,你还在等什么!
 
活动时间:2017.11.1-2017.11.30
 
应用于Web应用程序的TWAIN扫描识别工具
支持所有主流浏览器。
 
 
更快速、更安全的远程获取
和跨平台VSS插件
兼容所有的网络技术,平台和设备
 
 
为桌面应用程序设计的.NET控件
适用于C#和VB.NET 
能让你从任何TWAIN设备中获取图像的托管代码SDK
 
 
 
一款多功能的条码读取控件
只需要几行代码就可以将条码读取功能
嵌入到Web或桌面应用程序
 
 
快速、轻松地为您的web应用程序
启用图像和视频捕捉
 
 
一个用以替代VSS的独立版本控制软件
 
                                                       
 
一款基于SQL Server的本地/网络版本控制软件
 
 

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

未发布 电子邮件.NET控件MailBee.NET Objects v11.1发布丨附下载
by Harriet666 keys 分享 1497431589248
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
 

MailBee.NET Objects v11.1最新版下载>>>


v11.1更新内容:

  • 使用DNS RBL执行垃圾邮件过滤的新RblFilter类。
  • 更好地支持.NET Core和Xamarin中的证书。现在可以在SSL/TLS连接和DKIM中使用客户端证书。
  • Imap.SetSeenForEntireMessages默认为false。这意味着MailBee在下载整个邮件时不会设置SEEN标志,除非你更改此属性值。
  • 新的Global.DnsServers属性会覆盖当前系统分配的DNS服务器的默认列表。如果当前平台不支持DNS服务器自动检测(例如Xamarin),该功能则非常有用。
  • 新的TimeStamp.IP属性,显示邮件的IP地址来源。
  • 改进了Outlook .MSG文件中内联图像的自动检测功能。
  • bug修复。

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

 
未发布 Essential Studio for ASP.NET MVC发布2017 v2,增加日期范围选择器功能
by Harriet666 keys 分享 1495683576978
Essential Studio for ASP.NET MVC是一个帮您轻松创建高性能Web应用程序的ASP.NET MVC界面开发包,它包含了几乎所有企业级Web应用程序开发所需要的控件,如Grids, Charts, Gauges, Menus, Calendars, Editors等。 除此之外,该控件包还包含了可以让您的应用程序浏览和创建Excel,Word,PDF文件的高性能元件库。
 
Essential Studio for ASP.NET MVC发布2017 v2版本,增加日期范围选择器、文本注释等功能。
 
【Essential Studio for ASP.NET MVC 2017 v2点击下载>>>】

通常

支持资源文件本地化

支持资源文件本地化,根据应用程序或组件生成文本。

25a534ba89ac41258bb0a68be70eae49ojpg

18cfc4842e39487da1e0484ff3f6a291ojpg

 

日期范围选择器

日期范围选择器是一个新的MVC帮助组件,允许从应用程序中的一组预定义或自定义日期范围中进行选择。

主要特征

  • 从弹出窗口中选择日期的选项。
  • 设置便于选择的预定义自定义范围选项。
  • 支持本地化。
  • 手机友好。

c936ff63e04141f88d10dd61bdfbe999ojpg


图表

饼状图系列

增加创建饼状图的新功能。

04161a37650f4b85828454ad4fcf4fccojpg

打印

支持打印图表。

dadeb8c38c984aa08945abf99498dffbojpg

改进轴元件配置

图表控件现在可以防止轴图元素(如标签和标题)放在图表区域内时,图表值越过轴的问题。

d7256c30a52547a2a3368a143855ecb2ojpg


圆形表盘

图例

添加图例来表示圆形表盘中的范围。

215731bb62a6487b94d0b8553c4b6d3aojpg

图表

标签的模板选项

图表控件现在支持在HTML和SVG渲染模式中定义标签的模板内容。

7c3d4760fa0646df99d68b3aa8384889ojpg

DocIO

增强Word转换PDF功能

DocIO现在支持Word到PDF转换期间的方程式字段。

66bbb39553bb4ecda15c1df4ff7a24feojpg

甘特图

导出PDF

甘特图内容现在可以导出为PDF。

b969ed8f0ff04545aa01d11c95546548ojpg

自定义工具栏项目

甘特图控件现在支持自定义工具栏项目。

38439dbab1564870860d001e227276e4ojpg

映射展开状态

最初加载时,可以映射记录的展开状态。

 

列表框

排序

现在可以按升序或降序自动排序列表项。

95d47e514d5c4ac9a782f253378728daojpg

列表显示

虚拟滚动

添加正常模式和连续模式下的虚拟滚动支持,无需缓冲即可加载大量数据。

65253c09a57c4aed8d693ce82b958b60ojpg

PDF

增强PDF安全功能

现在支持PDF 2.0安全功能(AES Revision 6)。

fa3643f1662d4bccb5517c91923848a8ojpg

PDF查看器

文本标记注释

文本标记注释(高亮、下划线和删除线)已添加到PDF查看器控件中。现在可以加载PDF文档,包括文本标记注释,并且可以编辑现有注释。

dc6c9ec2cad04938989a3819d36760e4ojpg

数据透视图表

分组标签

数据透视图表中的分组标签可以选择向上和向下拉取以提供详细的系列信息。

1110787552004ee981637a231ccd6e65ojpg

Pivot客户端

计算成员

Pivot客户端支持通过交互式对话框在运行时创建和显示维度和测度。

4dbe899544db48f581c741c1e0f65c09ojpg

所有Pivot控件通用

Mondrian XML/A连接(客户端模式)

所有数据透视控件都可以通过不同版本的XML/A连接从Mondrian中检索多维数据,仅适用于客户端模式。

 

演示

注释功能

可以在PowerPoint演示文稿中创建和修改注释。

65ca3ca6c75f4dd6af238540a05a6514ojpg

富文本编辑器

粘贴清理

从Word或网页(HTML)复制的内容将在粘贴到富文本编辑器时进行预处理,清理和格式化以获取正确的HTML。

 

时间表

隐藏周末

周末可以隐藏在调度程序中,并在所有视图中只显示工作日。

74f7cf627eea40108c119ece86b2d592ojpg

 

拼写检查器

打字时检查拼写

当按下Enter键或空格键时,拼写检查器控件主动检查拼写错误。它还可以在选定的文本中检查错误。

使用“类”来检查多个目标

可以根据CSS类或ID来检查多个HTML元素(如div、span、textarea和input)。

检查内联框架中的拼写

拼写检查器控件允许检查内联框架(iframe)中的内容是否有拼写错误。


树型网格

自适应渲染

树型网格控件的UI已经在移动环境中得到了改进。

327db43e96104739a661ec2acea0d912ojpg

ac9b4d7781094c119ff3cc08413a6f27ojpg

对话框编辑

树型网格控件现在支持对话框编辑。

5dcea82f62fe46bf836dc707739f53daojpg

6c79f20ba8444889a5536122bdcf0212ojpg

自定义工具栏

树型网格控件现在支持自定义工具栏。

b8e3420d4f764fd5ad7b9ca52190b232ojpg

列验证

记录在更新到数据库之前可以进行验证。

0b32887af96345feb0134892a8820491ojpg

映射展开状态

初始加载时可以映射树形网格中记录的展开/折叠状态。

复选框列

树型网格支持通过Boolean数据显示复选框列。

4d4f3d84d1eb489c8afc952d58dfcfa8ojpg

XlsIO

Excel到PDF转换中的图标设置

Essential XlsIO支持使用“仅显示图标”和“反向图标顺序”选项进行PDF转换的自定义图标设置。

154dca6ba7a44e29bafb81226134a7bfojpg

增强图表转换图像功能

将图表转换为PDF文件或图像时,图表元素(如标题和显示单元)现在支持富文本和具有不同标记的图表系列。

53547136eef744c29aab1c9408ca7032ojpg

数据透视表自定义排序

数据透视表列可以通过字符串数组或设置自定义位置进行排序。

f2ab5072f604484ca5a1b4876d2e2ad9ojpg

表格过滤器

可以根据文本、数值和日期过滤Excel表格行。

c2a380932fa34111a91ec1cb14e26eb8ojpg


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


 近期热门 - 点击最多
  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. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

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

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

OnceOA