来了来了
5.07.00 Dec 9 2018
Important notes (changes that may break existing code)
======================================================
* Renamed misspelled TkbmMWInfTNRG64 to TkbmMWInfTRNG64 and ditto for 32 bit.
New stuff
=========
- Added support for 10.3 Rio.
- Added properties AutoConvertString:boolean and PrefixedZeroesIsString:boolean to
TkbmMWONFormat. AutoConvertString controls if the streamer/conversion should
attempt conversion of string values to native values (default true).
PrefixedZeroesIsString determines if an all numeric string value with
prefixed zeroes (eg. 0001 or 00.001) should be considered a string or a
numeric value (default) upon auto conversion of string values.
- Added AssignTo to TkbmMWONFormat.
- Added ClearDateTimeFormatStrings method to TkbmMWONFormat as an easy way
to clear out already defined date/time format strings.
- Added DateTime function to TkbmMWONFormat. Returns TDateTime of a TkbmMWDateTime value,
honoring the settings of property DateTimeStyle. Hence returns UTC or Local date/time
according to setting.
- Added HintedValueType to TkbmMWONCustomObject. Is used specially by ON native descendants
to prefer a specific type upon auto conversion. When setting a value specifically
using AsInt32 f.ex. the hinted type will also be set to int 32.
- Added FindParent and FindParentObject to TkbmMWONCustomObject.
- Added properties IsNumeric, IsString, IsDateTime, IsBoolean to TkbmMWONNative.
- Added TryAsFmtInt32, TryAsFmtInt64, TryAsFmtVariant, GetAsFmtVariant, SetAsFmtVariant,
methods to TkbmMWONNative, TkbmMWONObject and TkbmMWONArray. They will use the
given TkbmMWONFormat instance settings for formatting/parsing the prvided data.
Basically the Object Notration framework is now very aware about custom formatting if needed.
- Added SaveToStream and LoadFromStream to TkbmMWBSONMarshal, TkbmMWJSONMarshal, TkbmMWYAMLMarshal.
- Added SaveToUTF16Stream and LoadFromUTF16Stream to TkbmMWJSONMarshal and TkbmMWYAMLMarshal.
- Added unit kbmMWConfigONStreamer. Its classes descends from YAML classes and its purpose is
to allow for configuration interception in various Settings attributes (attributes that takes
a string containing the settings in a simplified YAML/JSON format). That includes
kbmMW_Rest, kbmMW_Auth and many others.
- Added additional hardware based random generator support in unit kbmMWCPUTRNG.
It contains TkbmMWCPURand32, TkbmMWCPURand64 which both use the CPU's pseudo random generator
if it exists, and TkbmMWCPUTRNG32 and TkbmMWCPUTRNG64 which both use the CPU's true random noise
generator if the CPU supports it (Intel/AMD only).
- Significantly updated TkbmMWCustomMetaData to support a large number of formatter and extractor methods.
- Updated TkbmMWCustomSQLRewriter to support RewriteUpsert.
- Added DefaultMetadata property to TkbmMWCustomSQLRewriter. It returns the metadata component that will
be used if no other metadata instance has been defined for it.
- Added SchemaName to TkbmMWCustomPooledDataset and TkbmMWCustomResolverTable, and SchemaNameQuote, SchemaNameCase,
SchemaNameBrackets, QuoteSchemaName to TkbmMWCustomSQLMetaData and in general
significantly improved support for parsing schema named prefixed values.
- Improved support for charset in HTTP smart services. By defining
- Added TkbmMWDateTimeParseOptions to TkbmMWDateTime. The options are used with Parse... and Try...
methods to instruct how the parsing of date and time strings should be.
If mwdtpoAllowSimple is not specified ISO8601 times must contain all parts.
If mwdtpoAllowPartial is not specified ISO8601 and RFC1123 will not allow
additional information after the date time value.
if mwdtpoToLocalTZ is specified, it will automatically convert the date/time timezone
to local timezone. Else the specific timezone given will be used.
- Added support for %D1 (1 or 2 digit day), %H1 (1 or 2 digit hour), %Z1 (1, 2 or 3 digit
msecs) which affects value to string conversion.
- Added TkbmMWPlatformMarshal.Bytes2Stream and TkbmMWDigest128 to kbmMWGlobal.
- Added kbmMWConditionallyQuoteString, kbmMWSafeIdentifier, kbmMWOccurrences functions
to kbmMWGlobal.
- Added support for HTTPSys transports returning RemoteLocation property.
- Significantly updated HTTP key/value/options handlers in kbmMWHTTPUtils.
- Added NullOnEmptyString:boolean, Indent:integer, Pretty:boolean to TkbmMWJSONStreamer
to allow streaming in pretty format.
- Added OnParseError event to TkbmMWJSONStreamer which is triggered upon a parse error.
- Added Split(const ACount:integer) Linq method to kbmMWLinq.
- Added SetFormat to TkbmMWLinq to control format settings for conversion scenarios.
- Added VALUES syntax to TkbmMWMemSQL. Syntax:
SELECT * FROM VALUES(xxxx)
where xxxx is a CSV formatted string, with fields comma separated (,) and
records semicolon separated (;). kbmMW will autodetect field types based on
the data.
- Added a number of SQL functions to TkbmMWMemSQL which can be used in the SQL statement:
LOCALDATETIMETOISO8601(datetime), ISO8601ToLocalDateTime(string),
UTCDateTimeToISO8601(datetime), ISO8601ToUTCDateTime(string),
FormatUTCDateTime([fmt,]datetime), ParseUTCDateTime([fmt,]string)
FormatLocalDateTime([fmt,]datetime), ParseLocalDateTime([fmt,],string)
The optional fmt value is a string following the TkbmMWDateTime format strings.
Eg. '%Y3-%M-%D %H:%N:%S'
- Added support for marshalling and demarshalling TTypeKind.tkInt64 and TTypeKind.tkWChar
in kbmMWObjectMarshal.
- Added TkbmMemtableWithDefinition which directly descends from TkbmMemTable, but has the
[kbmMW_Dataset([mwdsfIncludeDefinitions])] to easily force marshalling and demarshalling
to include dataset definitions (fielddefs etc). Found in kbmMWONMarshal.pas.
- Added support for automatic marshalling/demarshalling of TkbmMemTable.
- Added multiple additional query operators to ORM:
TkbmMWORMQueryOperator = (mwoqoNone,mwoqoIsNull,mwoqoIsNotNull,
mwoqoEQ,mwoqoLT,mwoqoGT,mwoqoLTEQ,mwoqoGTEQ,mwoqoNEQ,mwoqoLIKE,
mwoqoEQorNull,mwoqoLTorNull,mwoqoGTorNull,mwoqoLTEQorNull,
mwoqoGTEQorNull,mwoqoNEQorNull,mwoqoLIKEorNull );
- Added new source code generator functions to ORM:
function GenerateDelphiClass(const AValue:TClass;..):string
function GenerateDelphiClass(const ATable:TkbmMWORMTable;...):string;
procedure GenerateDelphiClass(const AValue:TClass; var...)
procedure GenerateDelphiClass(const ATable:TkbmMWORMTable; var...)
They can be used for generating a Delphi class source for a database table.
The generated class can be compiled into programs for nromal ORM access.
Typically used in combination with SurfaceDynamicTable that describes a non ORM
table for the ORM.
- Added ImportDBSchema application which can connect to any FireDAC enabled database
and import a complete schema for the database or specific tables in it and
generate matching ORM classes.
- Added support for UPSERT SQL statement which works like an UPDATE or INSERT
combined statement. If the UPDATE succeeds, no INSERT is made otherwis
records are INSERTed.
- Added options to TkbmMWORM.RewriteStatement which controls if the given statement
should be rewritten to native SQL or to kbmMW SQL.
- Added support for CRON (Unix type scheduling) strings in kbmMWScheduler.
kbmMW supports an extra enhanced mode where seconds and years also can
be specified.
- Added GroupedAs and Group to IkbmMWScheduledEvent which makes it possible to group
various events under same name, making it easier to enable or disable
specific groups of events.
- Added WithInternalTag and InternalTag to IkbmMWScheduledEvent which allows
setting a type of tag value within for example arrays of events to
be fullfilled to forward a value from one event to the next in a chain of events.
- Added UnScheduleGroup, DeactivateGroup, ActivateGroup methods to TkbmMWScheduler.
- Added InAMoment methods to TkbmMWScheduler which are perfect for running
GUI related code asynchronously.
- Added support for default value in kbmMW_Arg attribute.
If a smart method is called and the argument is missing, the default value will be used.
- Added support for ftLargeInt in kbmMWSQLite adapter.
- Officially announcing new TkbmMWTCPServerTransport which is a very high performance
transport supporting a very high number of concurrent connections.
It has been tested primarely on Windows but may support other platforms which it
will be tested for at a later stage.
Changes/minor additions
=======================
- Updated AMQP client connection to make ChannelMax and FrameMax properties
writable.
- Changed AMQP LastHeartBeat and similar from using ticks to TkbmMWTiming (usecs).
- Updated several DB adapters that contains a specialized metadata component
to publish several already existing properties.
- Updated all Object Notation based streamer classes (JSON,BSON,MessageClass,YAML) to
support overriding produced ON array, ON object and ON native instances with
specialized ones, by descending and overriding:
class function GetNativeClass:TkbmMWONNativeClass;
class function GetObjectClass:TkbmMWONObjectClass;
class function GetArrayClass:TkbmMWONArrayClass;
- Changed FireDAC adapter to not use FireDAC's features for API_MetaList, and instead
use kbmMW's default rewriter features. Reason is that kbmMW provides more details.
- Further enhanced TkbmMWRTTI.pas
- Enhanced TkbmMWSmartClientORM.Persist<T> to allow for additional arguments.
- Improved null handling in TkbmMWSQLJSONData (kbmMWSQLJSONAPI).
- Improved SQL datatype detection.
- Improved disconnection handling in TkbmMWTCPIPIndyClientMessagingTransport.
- Enhanced DOM XML to and from Object Notation conversion with features for flattening
arrays only containing one element, and if to treat values with prefixed zeroes
as a number or as a string.
- Updated kbmMW socket library.
Fixes
=====
- Fixed bug in TkbmMWClientTransactionResolver.Resolve.
- Fixed bugs in kbmMWConfiguration.
- Fixed bug in TkbmMWCSVStreamer affecting last value upon load.
- Fixed TkbmMWCustomMessagingClientTransport to forward provided Params to message stream instance.
- Fixed TkbmMWCustomMessagingClientTransport in relation to improved disconnection/connection pattern.
- Fixed several bugs in TkbmMWDateTime.
- Renamed misspelled TkbmMWInfTNRG64 to TkbmMWInfTRNG64 and ditto for 32 bit.
- Fixed bugs in kbmMW ORM.
- Fixed potential leak in TkbmMWCustomPasswordGen32.
- Fixed 64 bit compilation bug in kbmMWProcess.
- Fixed clipboard compilation bugs (clipboard not supported) in NextGen for RemoteDesktop.
- Fixed potential leaks or incorrectly cleared values in Use.AsResult and Use.AsVariant.
- kbmMW 5.07.00试用笔记
在kbmMW 5.06.20试用笔记中遇到的问题,在这个版本中,基本都解决了.但还是发现修正后存在的小问题及新问题: 1.Resolve返回值错误 当提交的ClientQuery是执行一条sql语句, ...
- kbmmw 5.08 正式发布
欢迎大家围观. Important notes (changes that may break existing code) ============================= ...
- kbmMW 5.06.20试用笔记
1.kbmMWConfiguration自动备份配置文件的问题还没有修正. 下面是以前写过的内容,再一次在新闻组中提出这个问题: kbmMW提供一个强大的配置信息管理对象,前期译过这个对象的介绍,在使 ...
- 珍惜每一滴水(kbmmw 中的内存调试)
作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间 ...
- Apache Spark2.0正式发布
Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...
- 业余草分享 Spring Boot 2.0 正式发布的新特性
就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...
- Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
Spring Cloud Greenwich 正式版在 01/23/2019 这天正式发布了,下面我们来看下有哪些更新内容. 生命周期终止提醒 Spring Cloud Edgware Edgware ...
- REST easy with kbmMW #24 使用kbmMW实现JSON/XML/YAML转换成对象
你想过没有,把一个给定的xml或json生成一个Delphi类,并通过这个类完成对xml或json的读写操作吗? 不管有没有,现在kbmMW为我们实现了,看下面这行代码: var s:string; ...
- REST easy with kbmMW #15 – Handling HTTP POST
我被问到有关如何通过基于kbmMW智能服务(Smart Service)的REST处理POST的问题. 这篇博客文章解释了典型的POST各种形式的访问,以及如何在kbmMW中处理它们. POST变种W ...
随机推荐
- java基础-反射(细节)
java面试题--java反射机制? Java反射机制的作用:1)在运行时判断任意一个对象所属的类.2)在运行时判断任意一个类所具有的成员变量和方法.3)在运行时任意调用一个对象的方法4)在运行时构造 ...
- Linux-Shell基础(变量,字符串,数组)
一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统 ...
- JavaScript基础应用
1.实现字符串的反向输出 var s="abc" s.split('').reverse().join('') -----> "cab" 知识点: S ...
- 4th Dec 2018
两个人都觉得自己没错,或者对方都把错误归结于另外一方,总会盯着对方的不足,无限放大:谁都不肯先放下兵器,亦或害怕自己放下了兵器,对方又拿起了盾.这就好像双方在同一时间拉扯一根皮筋,拉扯的越长,张力越大 ...
- H5的本地存储技术及其与Cookie的比较
第一部分: H5的本地存储技术 HTML5 提供了两种在客户端存储数据的新方法.先看下面的例子: 例1:var mySelection = {name:"car", amount: ...
- BeanUtils接口和类
Jakarta Commons项目提供了相当丰富的API,我们之前了解到的Commons Lang只是众多API的比较核心的一小部分而已.Commons下面还有相当数量的子项目,用于解决各种各样不 ...
- Android 开发 框架系列 glide-transformations 图片处理基本使用
首先简单的介绍一下Gilde作用范围.Gilde功能十分强大,它可以实现图片处理.图片本地加载.图片网络加载.位图加载.图片内存缓存.图片磁盘缓存.Gif图片加载.使用简单轻松,轻松的后是它强大的心, ...
- Java 身份证判断性别获取年龄
import com.alibaba.fastjson.JSON; import org.junit.Test; import java.text.SimpleDateFormat; import j ...
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
1 思路整理 就是页面加载完毕的时候 请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码 我是改的 onload函数 /** * 生命周期函数--监听页面加载 */ on ...
- python 修改dataframe的列名
1. 修改全部列名 df.columns base_data_model.columns = [u'有效率',u'提交率',u'参与度',u'回放占比',u'主好评率',u'辅好评率',u'是否付费' ...