如果您对WeihanLi.Npoi1.10.0更新日志感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于WeihanLi.Npoi1.10.0更新日志的详细内容,并且为您提供关
如果您对WeihanLi.Npoi 1.10.0 更新日志感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于WeihanLi.Npoi 1.10.0 更新日志的详细内容,并且为您提供关于Cocoapods 1.9.0 更新日志、Django2.1 更新日志、Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!、fir.me 自动化发布Android应用并自动添加更新日志的有价值信息。
本文目录一览:- WeihanLi.Npoi 1.10.0 更新日志
- Cocoapods 1.9.0 更新日志
- Django2.1 更新日志
- Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!
- fir.me 自动化发布Android应用并自动添加更新日志
WeihanLi.Npoi 1.10.0 更新日志
WeihanLi.Npoi 1.10.0 更新日志
Intro
上周有个网友希望能够导入Excel时提供一个 EndRowIndex
来自己控制结束行和根据字段过滤的功能,周末找时间做了一下这个 feature,并且解决了一个 Csv 导入的一个痛点,下面再具体介绍
EndRowIndex
SheetSetting
增加 EndRowIndex
以为了提前结束数据读取,比如说只读 TOP 100 条数据或者有一部分数据属于是不相关的垃圾数据,我们就可以利用这个配置来避免做一些不必要的数据读取(目前只对 Excel 导入生效)
DataValidation
一直没有做数据校验的功能,之前我的做法通常是先全部导入到一个 list 然后再过滤掉不符合要求的数据,这样做有些繁琐而且增加内存消耗,在这个版本中增加了数据校验的功能,用户可以设置一个委托来校验数据是否合法,如果导入的数据不合法则不会返回,只有合法的数据才会返回。(Csv 和 Excel 导入有效)
使用示例可以参考下面的单元测试
[Theory]
[InlineData(ExcelFormat.Xls)]
[InlineData(ExcelFormat.Xlsx)]
public void DataValidationTest(ExcelFormat excelFormat)
{
IReadOnlyList<Notice> list = Enumerable.Range(0, 10).Select(i => new Notice()
{
Id = i + 1,
Content = $"content_{i}",
Title = $"title_{i}",
PublishedAt = DateTime.UtcNow.AddDays(-i),
Publisher = $"publisher_{i}"
}).ToArray();
var excelBytes = list.ToExcelBytes(excelFormat);
var settings = FluentSettings.For<Notice>();
lock (settings)
{
settings.WithDataValidation(x => x.Id > 5);
var importedList = ExcelHelper.ToEntityList<Notice>(excelBytes, excelFormat);
Assert.Equal(list.Count(x => x.Id > 5), importedList.Count);
int i = 0, k = 0;
while (list[k].Id != importedList[i].Id)
{
k++;
}
for (; i < importedList.Count; i++, k++)
{
if (list[k] == null)
{
Assert.Null(importedList[i]);
}
else
{
Assert.Equal(list[k].Id, importedList[i].Id);
Assert.Equal(list[k].Title, importedList[i].Title);
Assert.Equal(list[k].Content, importedList[i].Content);
Assert.Equal(list[k].Publisher, importedList[i].Publisher);
Assert.Equal(list[k].PublishedAt.ToStandardTimeString(), importedList[i].PublishedAt.ToStandardTimeString());
}
}
settings.WithDataValidation(null);
}
}
Csv new()
constraint
Csv 导入移除了 new()
限制,这样解决了之前的一个痛点,就是当导入类型为 string
的时候,没办法直接导入,需要添加一个 model,包含一个 string 类型的属性,如此太麻烦了, new()
限制移除之后就可以直接导入为 List<string>
了,不再需要再建一个临时类了
var list = CsvHelper.ToEntityList<string>();
More
最近想把 Entity 配置的 Mapping 这种方式抽象出来,适用于所有需要映射关系配置的场景
Excel 做一层抽象,基于 NPOI 实现一套,基于 Epplus 实现一套,也可以基于 OpenXML 实现
以后有需要对 Word 或其他的需要,也可以像 Excel 一样,先做一层抽象,再根据相应的 Package 做实现即可
一直觉得有些纠结,如果这样子改了项目名叫 WeihaLi.Npoi
就不合适了,还没想好项目怎么命名,后面想好了,再新建项目或项目重命名吧,目前改了一部分,放在 vnext 分支上了,有兴趣的童鞋可以到 Github 看看,也非常欢迎各位给我提 feature request 或好的改进建议
Reference
https://github.com/WeihanLi/WeihanLi.Npoi
https://www.nuget.org/packages/WeihanLi.Npoi/
https://github.com/WeihanLi/WeihanLi.Npoi/issues/79
Cocoapods 1.9.0 更新日志
CocoaPods 1.9 现在支持 “XCFrameworks”, “podspec 支持基于配置的依赖”, “指定 schemes 的代码覆盖率”, “use_frameworks link 自定义”
XCFramework Support
推荐指数:***
随着 Xcode11,苹果引入的新的 Bundle 格.XCFramework. 这种支持多个不同的架构和平台类型的.framework 捆绑到一个结构里面。 二进制依赖项也需要 XCFrameworks 来支持 macOS Catalina 中引入的新的 Catalyst 平台。
用法
Pod::Spec.new do |s|
s.name = ''ToastLib''
s.version = ''1.0.0''
# ...rest of attributes here
s.vendored_frameworks = ''ButterLib.xcframework''
end
如何创建 xcframework 参考视频
Configuration-based dependencies for Podspecs
推荐指数:**
Podspecs 也指出基于配置的依赖了
用法
Podfile 修改
target ''BananaApp'' do
pod ''Toast'', :configurations => [''Debug'']
end
Podspec 修改
Pod::Spec.new do |s|
s.name = ''ToastLib''
s.version = ''1.0.0''
# ...rest of attributes here
s.dependency ''ButterDebugging'', :configurations => [''Debug'']
s.dependency ''ErrorReportingTool'', :configurations => [''Release'']
end
注意目前只支持:Debug 和 Release
Code Coverage in Test Specs
推荐指数:***
支持 code_coverage,依赖在 1.7 版本中引入的 scheme
用法
Pod::Spec.new do |s|
s.name = ''Networking''
s.version = ''1.0.0''
# ...rest of attributes here
s.test_spec ''Tests'' do |test_spec|
test_spec.scheme = {
:code_coverage => true, :environment_variables => {''FOO'' => ''BAR'' }
}
end
end
Swift Version Variants
推荐指数:*** 现在,在 podspec 里使用 swift_versions 可以指定多个 swift 版本,配合 Podfile 里面 supports_swift_version 使用
用法
Podspec
Pod::Spec.new do |s|
s.name = ''CannonPodder''
s.version = ''1.0.0''
# ...rest of attributes here
s.swift_versions = [''4.0'', ''5.0'']
end
Podfile
target ''SampleApp'' do
supports_swift_version ''< 5.0''
pod ''CannonPodder''
end
target ''SecondApp'' do
supports_swift_version ''>= 5.0''
pod ''CannonPodder''
end
use_frameworks! Linkage Customization
推荐指数:***** 现在 Swift 支持 static linking,CocoaPods 扩展了 DSL,允许指定连接包的类型。
用法
use_frameworks! :linkage => :static
Django2.1 更新日志
前两天本来想把 2.1 的 release note 做个中文摘要,后来发现没什么大的改动。
不过更新以后还是发下一个 bug,或者是已经 feature 本身的改动,就是 QueryDict 这个类的实例不能再往里放整数了,否则会报错:
File "/usr/local/lib/python3.5/dist-packages/django/http/request.py" in urlencode
524. for v in list_
File "/usr/local/lib/python3.5/dist-packages/django/http/request.py" in <genexpr>
524. for v in list_
Exception Type: AttributeError at /zhaohuogan/archives/
Exception Value: ''int'' object has no attribute ''encode''
修改方法,整数强制类型转换为字符串,然后递交给 QueryDict 实例。
这个 bug 会是一个临时 bug,我向 Django 官方提交了这个 bug,不过和别人的 dup 了,官方响应:会恢复原先的特征行为。
Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!
Eclipse是一个优秀的开源IDE,目前支持C/C++、JAVA、JS、PHP等语言。
Subclipse的是一个Eclipse团队提供插件提供在Eclipse IDE中的Subversion的支持。该软件是根据发布的[Eclipse 公
共协议许可-V1.0]开原许可。
------------------------------------------------------------------------------------------------------------------
Subclipse的更新日志:
注:由于Subclipse的1.10.0,最低颠覆JavaHL要求是1.8.0。
注: SVNKit支持不是目前可用于Subversion的1.8。您必须使用JavaHL还是坚持使用的Subclipse 1.8.x的版本,
直到SVNKit可用。
------------------------------------------------------------------------------------------------------------------
版本1.10.3 2013年10月16日
- SVNKit 1.8.0-β2
- 性能-使检查只读文件装饰可选缺省情况下和关闭。(1540)
- 改善与分公司进行比较,以解决树冲突的情况。(1549)
- 增强更换分支/标签对话框。(1552)
Eclipse安装更新地址:http://subclipse.tigris.org/update_1.10.x/
------------------------------------------------------------------------------------------------------------------
版本1.10.2 2013年9月3日
- 更新JavaHL到SVN 1.8.3
- SVNKit 1.8.0-Beta版
- FIX RevisionRange通过合并的API,以便正确判断类型合并运行。(1544)
- 试图获得一个未版本控制目录信息时,不要记录错误。(1538)
- 修复SVNMoveDeleteHook因此它不具有移动文件或文件夹到一个项目,未纳入版本控制的干扰。(1536)
- 空证明CleanupResourcesCommand。(1535)
- 修复潜在的NPE在历史视图当选择(有一定BUGTRAQ:日志正则表达式模式),其中包含一个错误ID日志条目。(1539)
- 不显示多个提示时,从多个项目中的文件添加到SVN:从同步视图忽略。(1543)
Eclipse安装更新地址:http://subclipse.tigris.org/update_1.10.x/
------------------------------------------------------------------------------------------------------------------
版本1.10.1 2013年7月25日
- 更新JavaHL到SVN 1.8.1
- 修正了当BUGTRAQ提交错误:消息被定义,而不是在Bugtraq:标签。(1526)
- 财产后自动refesh SVN属性视图中添加,删除或修改。(1527)
- 当更新状态缓存,不要试图从非版本控制的文件夹中获取状态。(1531)
- 空证明CleanupResourcesCommand。(1535)
Eclipse安装更新地址:http://subclipse.tigris.org/update_1.10.x/
------------------------------------------------------------------------------------------------------------------
版本1.10.0 2013年6月18日
- 更新JavaHL到SVN 1.8.0
- 包括使用svn:自动道具和svn:全局-忽略已知的属性列表。(1512)
- 定制的装饰为移动资源。(1510)
- 显示其中项目已从移动/在提交/还原对话框,并同步视图。(1510)
- 树冲突解决方案的增强功能。(1517)
- 使用新的继承属性支持以获得bugtraq的特性,而不是走在工作拷贝自己。(1511)
- 使用新的继承属性支持检查DeferFileDelete属性,而不是走了的工作拷贝自己。(1511)
- 使用diff -总结到工作副本的版本库比较最新的。(1516)
- 使用diff -总结与分支/标记比较。(1516)
- 修复导出SVN存储库首选项。(1520)
- 修复RevertResourceManager工作和其他工作的Subclipse之间潜在的死锁。(1523)
Eclipse图文详解安装方法:
http://blog.csdn.net/gulaer/article/details/17057161
fir.me 自动化发布Android应用并自动添加更新日志
我们再上篇拿到了最新的git log 3条更新日志
参考链接:链接地址 点击这里
自动上传脚本如下:
此脚本在jenkins 构建脚本里,执行任务后自动上传、并添加更新日志(最新3条日志)
gradle clean
gradle assembleRelease
fir login b0ad1098a8fa6950ebc629dfXXXXXXX (您自己的id自己配)
fir me
git log -3 --pretty=format:''%s'' --abbrev-commit | awk -F '':'' ''{print NR " " $0 }'' | pbcopy
fir publish -s 自己定义的短链接地址(英文缩写) app/build/outputs/apk/flavorDev/release/*.apk -c "$(pbpaste)"
fir publish -s 自己定义的短链接地址(英文缩写 app/build/outputs/apk/flavorTest/release/*.apk -c "$(pbpaste)"
实现的效果如下:
关于WeihanLi.Npoi 1.10.0 更新日志的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Cocoapods 1.9.0 更新日志、Django2.1 更新日志、Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!、fir.me 自动化发布Android应用并自动添加更新日志等相关知识的信息别忘了在本站进行查找喔。
本文标签: