未发布 ReactOS:基于Windows的开源操作系统 ReactOS是一个免费开源的全新操作系统,其设计基于Windows,就像Linux基于Unix一样。ReactOS的外观和Windows类似,可以运行Windows软件和驱动,不过,该项目正在进行当中,可能尚无法完美兼容,最好的方法是在虚拟机上安装ReactOS,检查兼容性。
ReactOS使用X.Y.Z版本命名方案:X表示项目是否达到预期目标,Y表示大版本(关键特性和增强),Z表示小版本(Bug修复和一般开发)。第一个有文档记录的版本是0.0.7,发布于1998年7月。
作为开源项目,由于社区开发人员的数量不固定,所以ReactOS没有一个固定的路线图。不过,他们会尽量在二到六个月发布一个版本。0.4.0、0.5.0和1.0.0是当前设置的里程碑版本。0.4系列版本是最后的Alpha版本,从0.5系列版本开始,项目将进入Beta测试阶段,1.0及以上版本表明该项目已经可供日常使用了。
ReactOS 0.4.6已于近日发布。该版本向真正的硬件支持迈出了重要的一步。若干双启动问题得到了解决,分区管理的安全性得到了提高,可以避免分区列表结构的冲突。ReactOS Loader现在可以加载自定义内核和HAL了。
在0.4.6中,打印子系统尚不成熟,但Colin Finck已经实现了大量新的API,并修复了一些自动化测试中暴露出的Bug。
在驱动方面,Pierre Schweitzer为其增加了NFS驱动程序,并开始实现RDBSS和RXCE,将来还会支持SMB。Sylvain Petreolle为其引入了数字电视调谐器驱动。UDFS、CDFS、SCSI和HDAUDBUS中的若干Bug也得到了修复。
在兼容性方面,0.4.6引入了一个shim引擎,作为新应用程序兼容框架的一部分。在这个版本中,该引擎默认关闭,可以通过ReactOS注册表启用。该版本还包含一个专门的NTDLL库,可以为比较新的软件提供一些它们需要的NTDLL Vista+函数。
ReactOS 0.4.6还改进了用户体验,并修复了多个内存管理、ntoskrnl和文件系统的Bug,变得更加稳定。
未发布 微软C# 8.0中的四个特性 可空的引用类型(Nullable Reference Types)
可空的引用类型可概括地表述为,引用类型将不再默认可空。因此,开发人员必须使用定义可空值类型的同样语法“Type?”,显式地标记一个引用类型为可空。
如果将一个空值赋值给一个非可空的引用类型,那么将会给出一个编译器警告。与之相类似,从可空类型中读取也会给出编译器警告,除非显式地提前检查了被质疑的变量是否为空值。因此从理论上讲,开发人员需要做的唯一更改就是在代码的适当位置标上问号。
该特性新加了一个语法。该语法针对开发人员明知一个可空变量x并非实际为空值却无法证明给编译器的情况。在上述情况下,开发人员现在可以定义x!.Method(),消除编译器对于潜在空值引用异常的警告。
异步流(Async Streams),即foreach async
异步流是IEumerable的异步等价类。C#团队自2015以来就一直在努力实现异步流。在经历了很多争议后,其语法被定为: foreach await (string s in asyncStream)
开发人员将使用如下的函数签名定义一个异步迭代器:
async IAsyncEnumerable MethodName()
就像使用一个正常的IEnumerable方法一样,开发人员可以使用“yield return”以懒方式(Lazy)构建对象流。
相比于源自响应式扩展(Reactive Extensions)的IObservable,使用这一方法的优点在于让消费者控制流速,这被称为“Pull模式”。与之相对,IObservable是一种“Push模式”,这意味着生产者可以使用高于消费者所能处理的流速让流涌向消费者。
缺省接口实现(Default Interface Implementations)
缺省接口实现在本质上是一种有限形式的多重继承。它允许抽象接口像抽象类一样,对方法进行完全的定义,只是抽象接口依然不能定义构造函数和字段。
需注意,开发人员可以通过使用ConditionalWeakTable在接口上模拟字段。
默认接口实现的主要好处是,开发人员可以在不破坏向后兼容的条件下,将一个新方法添加到一个已有的接口中。但是这并非是有保证的,因为默认接口只是在可以设计出适合的默认方法时才能工作。
扩展(Extension)
开发人员可以编写扩展方法,但是不能扩展属性,这是长期以来对C#一直存在的一个问题。事实上,如果使用当前的模式,甚至是不能定义一个扩展属性或事件的。此外,在很多开发人员看来,在静态类中放置扩展方法是“很诡异的”。
新的设计中新给出了一种称为“扩展”(Extension)的顶层语言构件。例如,如果开发人员想要为自定义的Customer类创建一个扩展方法和属性,可编写如下代码:
extension CustomerExt extends Customer {
//定义方法和属性的代码。
}就接口而言,是不能在扩展中定义实例字段的,但是可以使用ConditionalWeakTable实现模拟。定义静态字段也是允许的。
除了对属性、事件和操作符重载的扩展,C#团队甚至考虑允许扩展构造函数。扩展构造函数非常适用于工厂模式(Factory)和对象池场景。
扩展接口(Extension Interfaces)C#团队还考虑了扩展接口,即在已有类中添加新接口的能力。但是扩展接口将不会成为C# 8中的特性,因为它需要更改底层的运行时。
未发布 Xmanager Enterprise网络通讯工具更新合集 Xmanager Enterprise是完整的网络连接套件,它带有一个高性能PC X服务器,支持OpenGL(GLX)、3d硬件加速、安全终端模拟器、文件传输客户端和LPD打印机服务器。Xmanager Enterprise 4使3d X应用程序运行得更快,通过SSH和TELNET来提供安全的远程终端访问,通过SFTP/FTP进行方便的文件传输,使用LPD在本地打印远程文件等。
Xmanager Enterprise v5.1243更新:
- 修复:[Xmanager]全屏启动时屏幕闪烁
- 修复:[Xshell]自动更新会错误地显示用户正在使用最新版本
- 修复:[Xshell]终端复位时,光标不复位
- 修复:[Xshell]重命名选项卡有时将名称应用于其他选项卡
- 修复:[Xshell]反向视频终端转义序列被忽略
- 修复:[Xshell]当选择新窗口中打开时,将-newtab选项中的新选项卡名称应用于现有选项卡
- 修复:[Xftp]从连接的会话中打开新终端时,系统将提示用户输入密码
- 修复:[Xftp]从会话的上下文菜单中调用Xftp始终默认为TCP 22
- 修复:[Xlpd]资源清理
Xmanager是市场领先的PC X服务器,它能够带来Windows平台下强力的虚拟应用技术。使用Xmanager,能够使安装在远程的基于UNIX系统的X应用程序与一般的Windows应用程序 完全一样。它提供了一个强大的会话管理控制台、易于使用的X应用程序启动器、X服务器概要文件管理工具、SSH模块和用于安全访问的远程高性能PC X服务器及虚拟化的UNIX/Linux
环境。
Xmanager v5.1056更新:
Xshell是一个功能强大的终端模拟器,支持SSH、SFTP、TELNET、RLOGIN和SERIAL。它提供业界领先无法替代的性能和特性集。它有许多对企业用户有用的特性,包括:分页式环境、动态端口转发、自定义键映射、用户定义按钮、VB脚本以及显示2字节字符和支持国际语言的UNICODE终端。
Xshell v5.1333更新:
- 修复:[Xshell]自动更新会错误地显示用户正在使用最新版本
- 修复:[Xshell]终端复位时,光标不复位
- 修复:[Xshell]重命名选项卡有时将名称应用于其他选项卡
- 修复:[Xshell]反向视频终端转义序列被忽略
- 修复:[Xshell]当选择新窗口中打开时,将-newtab选项中的新选项卡名称应用于现有选项卡
Xftp是一个灵活和轻量级的SFTP / FTP客户端,它主要用于为用户提供通过网络安全的传输文件。它提供了许多强大的功能,比如直接编辑、多窗格、文件夹同步、支持FXP、服务器之 间传输以及集成第三方编辑器。在处理远程文件方面Xftp将为你节省时间和精力。 对于家庭和学校的用户来说,Xftp是免费的。具体情况可参阅家庭和学校用户免费使用许可协议条款和
Xftp v5.1229更新:
- 修复:[Xftp]从连接的会话中打开新终端时,系统将提示用户输入密码
- 修复:[Xftp]从会话的上下文菜单中调用Xftp始终默认为TCP 22
Xlpd是一个用于Windows系统的简单的行式打印机后台程序(LDP)和打印作业管理工具。它通过LPD协议从远程服务器接收打印任务并把该打印任务发送至本地打印机。LPD是一个支持多种操作系统的标准的打印协议,支持包括UNIX、Solaris和Linux等系统。
Xlpd v5.1231更新:
未发布 MailBee.NET Objects接收电子邮件(POP3)教程二:接收和显示HTML电子邮件 MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
本文主要介绍了接收和显示HTML电子邮件(POP3)的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
从POP3服务器下载整个邮件后,如上一个教程所示,开发人员可以管理可用的邮件主体。例如,当邮件没有HTML格式的主体时,开发人员可以配
置邮件解析器以从纯文本正文中创建HTML格式的主体:
C#: msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml; |
VB.NET: msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml |
此外,开发人员可以指定影响邮件解析方式的选项。例如,下面的代码指定了当纯文本正文被自动转换为HTML格式的主体时,包含在邮件纯文本
主体中的所有URI都应该被更改为相应的链接:
C#: msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink; |
VB.NET: msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink |
由于邮件解析器已配置,开发人员应调用Apply方法应用更改:
VB.NET: msg.Parser.Apply() |
解析的邮件的HTML主体内容可以使用Web浏览器控件轻松显示,如下所示:
C#: webBrowser1.DocumentText = msg.BodyHtmlText; |
VB.NET: webBrowser1.DocumentText = msg.BodyHtmlText |
请注意,WebBrowser控件仅在Visual Studio 2005和更高版本中可用。因此,上述代码将不会在早期版本的Visual Studio.NET中运行。
示例代码:
以下示例从指定邮箱中下载最后一条消息,从纯文本正文中生成HTML邮件主体,并显示此消息的HTML主体。
在使用MailBee.NET Objects之前,请确保它已解锁。
请将对MailBee.NET.dll的引用添加到应用程序中,然后在代码顶部添加以下行以允许在应用程序中使用MailBee.NET Objects:
C#: using System; using MailBee; using MailBee.Pop3Mail; |
VB.NET: Imports System Imports MailBee Imports MailBee.Pop3Mail |
然后在Visual Studio 2005中创建一个新表单,并将Button和WebBrowser控件放在此表单上。设置以下代码在按钮点击事件上运行:
C#: Pop3 pop = new Pop3(); try { pop.Connect("mail.domain.com"); pop.Login("login", "password"); Console.WriteLine("Successfully logged in."); } catch(MailBeePop3LoginNegativeResponseException e) { Console.WriteLine("POP3 server replied with a negative response at login."); } MailMessage msg = pop.DownloadEntireMessage(pop.InboxMessageCount); msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml; msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink; msg.Parser.Apply(); WebBrowser1.Text = msg.BodyHtmlText; try { pop.Disconnect(); Console.WriteLine("Disconnected successfully."); } catch { Console.WriteLine("Disconnection failed."); } |
VB.NET: Dim pop As Pop3 = New Pop3() Try pop.Connect("mail.domain.com") pop.Login("login", "password") Console.WriteLine("Successfully logged in.") Catch e As MailBeePop3LoginNegativeResponseException Console.WriteLine("POP3 server replied with a negative response at login.") End Try Dim msg As MailMessage = pop.DownloadEntireMessage(pop.InboxMessageCount) msg.Parser.PlainToHtmlMode = PlainToHtmlAutoConvert.IfNoHtml msg.Parser.PlainToHtmlOptions = PlainToHtmlConvertOptions.UriToLink msg.Parser.Apply() WebBrowser1.Text = msg.BodyHtmlText Try pop.Disconnect() Console.WriteLine("Disconnected successfully.") Catch Console.WriteLine("Disconnection failed.") End Try |
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。
未发布 集成的HTTP嗅探器HttpWatch v11发布,支持Google Chrome丨附下载 HttpWatch v11新功能
HttpWatch支持Google Chrome
现在可以在Chrome中打开一个HttpWatch窗口,通过点击HttpWatch图标来记录网络流量:
或使用任何网页中的上下文菜单:
HAR文件现在包含(缓存)和错误
HAR文件规格不允许记录缓存或失败的请求。HttpWatch现在使用与其他工具相同的扩展属性来规避此限制:

【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总 Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者SharePoint。这个TWAIN控件还支持上传和处理本地图像。
Dynamic Web TWAIN能够在所有主流浏览器上面进行网页扫描。兼容 Firefox, Mozilla , Chrome , Safari , Opera以及其他的浏览器;目前主要有三个版本:ActiveX, Plugin 和 Mac。
本文为大家整理了Dynamic Web TWAIN在线示例,欢迎收藏!
Dynamic Web TWAIN在线示例Demo>>>
Dynamic Web TWAIN v13.1最新版下载>>>
未发布 【示例教程】如何通过leadtools读取二维码中的中文 在使用leadtools进行二维码识别的过程中,经常或碰到中文识别为乱码的情况,让人比较郁闷,本文教大家如何通过leadtools来读取二维码中的中文。
中文在编为二维码的时候,实际上是先按照一定的字符集编码被转换为了二进制编码,而我们如果需要正确的读取出二维码中的中文,就必须要确认编码字符集,如UTF8,UTF16,GB2312,GBK等等。
在确认了编码方式后,我们对通过BarcodeEngine 引擎读取出的BarcodeData ,不用value属性直接去获取它的对应字符串。因为这样默认是得到的按照ascii码编码来翻译出的字符串,自然会有各种乱码,leadtools提供了另一个方法GetData(),通过这个方法可以获取原始的byte[] 数据。然后按照对应的编码方式进行转换,即可得到对应的中文字符串。
下面的例子中是针对UTF8编码的中文二维码进行识别的代码,大家可以在编译以后,对文末的二维码进行识别。
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void BarcodeData_GetDataExample()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode2.tif");
// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();
// Load the image
using (RasterCodecs codecs = new RasterCodecs())
{
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
{
// Read the first QR barcode from the image
BarcodeData data = engine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR);
// Show the barcode data found (if any)
if (data != null)
{
Console.WriteLine("Raw data is:");
byte[] bytes = data.GetData();
if (bytes != null)
{
string text = System.Text.Encoding.UTF8.GetString(bc);
Console.WriteLine(text);
}
else
{
Console.WriteLine("Empty");
}
}
else
{
Console.WriteLine("No barcode found");
}
}
}
}
