首页 文章 精选 留言 我的

精选列表

搜索[浏览器兼容性],共10009篇文章
优秀的个人博客,低调大师

向后兼容性增强和新的宏

以下由中文社区翻译,能力有限,如有翻译错误,欢迎指正! 在持续六个月的开发后,我们骄傲地宣布,Nim 1.2 版本发布了! 本发行版包含了超过 600 次的尚未被合并到 1.0.x 版本的提交。 与 1.0 相比,添加了几个新功能和标准库。 我们努力将断崖式的改动降至最低, 但如果不进行这些必要的更改,某些错误是无法被修复的, 而且我们认为我们的用户将从中受益。 我们建议所有用户升级和使用 1.2 版本。 使用多个版本的 Nim useVersion 如果你想要更新到 v1.2 版本,但依赖与 v1.0 版本的一些行为, 你可以使用命令行参数 --useVersion 来切换。 在最新的 Nim 中,你可以用这个参数来模拟之前版本的 Nim 。 举个例子,v1.2 版本的 Nim 对 proc 类型的类型转换变得更加严格。 如果这个变更无法兼容你的代码,你可以使用 --useVersion:1.0 来模拟之前版本的行为。 上面的例子只是个示例。 如果你依赖于一些边缘案例,或现已修复的错误行为,试试 --useVersion:1.0 ,他可能返回你想看到的结果。 如果没有得到你想要的之前版本的行为,请打开在 我们的 bug 追踪器 上提个 issue , 我们会努力在未来的 bug 修复版本(1.2.x)中进行修复。 when declared 如果你开发了 Nim 的库,而且想让不管是用 v1.0 的还是 v1.2 版本的用户都能使用你的库, 但却依赖了一些在 v1.0 版本没有,而在 v1.2 版本中才加入的新特性, 你可以使用 when declared 作为你的优势。 举个例子, sequtils 模块现在加入了 unzip 过程。 你就可以把你的代码写成下面这样: import sequtils when not declared(unzip): proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) = result[0] = newSeq[S](s.len) result[1] = newSeq[T](s.len) for i in 0..<s.len: result[0][i] = s[i][0] result[1][i] = s[i][1] let a = @[('a', 1), ('b', 2), ('c', 3)] let b = unzip(a) # version 1.0 将会使用上方声明的过程 # version 1.2 会直接使用 sequtils 模块的过程 assert b == (@['a', 'b', 'c'], @[1, 2, 3]) 安装 Nim 1.2 Nim 的新用户 检查你系统的包管理器是否已经装载了 1.2 版本, 或者按照 这里 的说明进行安装。 老用户 如果你之前使用 choosenim 安装过老版本的 Nim , 升级到 1.2 版本就这么简单: $ choosenim update stable 为 v1.2 贡献力量 我们的贡献者都是超人, 我们列举了很多到 这里。 给你们个大大的么么哒,没有你们就没有这个版本! 新特性 GC: ARC 我们这次版本主要的新特性是 --gc:arc ! 为了避免陷入本文中大量的细节, 我们建议你查看下 FOSDEM上的这个视频(YouTuBe), Araq 在视频中解释了 ARC 背后的详细信息,并展示了一些显示其优点的基准。 之后可能会更新一篇关于 ARC 详细说明的文章。 新的宏语法糖 1.2.0 版本介绍了一些新的宏,它们应该可以帮你完成一些通用的任务。 在接下来的一些章节中,我们会给你展示他们和他们的用例。 所有的示例都意味着 import sugar。 Collect collect 是一个用以解析序列/集合/表解析的宏。 它替代了 lc (list comprehension,列表解析), 而且比 lc 更人性化和强大。 使用 collect 没有开销,比如说:你可以把 newSeqOfCap 和它配合使用。 所有集合的语法都是类似的,区别在于 init 函数和最后一个表达式。 举个例子: let numbers = collect(newSeq): # 或者: collect(newSeqOfCap(10)) for i in 1..10: i assert numbers == @[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] import tables let oddSquares = collect(initTable): for i in numbers: if i mod 2 == 1: {i: i * i} assert len(oddSquares) == 5 assert oddSquares[7] == 49 import sets let oddOrNegative = collect(initHashSet): for i in numbers: {if i mod 2 == 1: i else: -i} assert 5 in oddOrNegative assert 2 notin oddOrNegative assert -2 in oddOrNegative Dup dup 是一个宏,它让原地函数(in-place functions,译者注:引用传递参数的函数) 可以在不影响和修改函数输入的情况下返回结果。 我们是这么考虑的,Nim的未来版本将只提供函数的原地版本 (即不再提供 sort 和 sorted、rotateLeft 和 rotatedLeft 等), 他们可以被 dup 转换为返回拷贝的函数。 这些版本可以通过 dup 转换成返回副本的函数。 这个宏也允许了(其他方式的)函数链(function chaining)。 还是看示例吧: proc makePalindrome(s: var string) = for i in countdown(s.len-2, 0): s.add(s[i]) var a = "abc" makePalindrome(a) assert a == "abcba" var b = "xyz" var c = b.dup(makePalindrome) assert b == "xyz" assert c == "xyzyx" 下划线(_)可用于表示传递参数的位置: import algorithm # b = "xyz" var d = dup b: makePalindrome # xyzyx sort(_, SortOrder.Descending) # zyyxx makePalindrome # zyyxxxyyz assert d == "zyyxxxyyz" Capture ‎capture 是一个宏,在循环中创建闭包时非常有用, 以捕获一些局部循环变量(按其当前迭代值)。 您可能希望将其用于事件处理和 {int: callBack} 查找表。‎ 举例如下: import strformat, sugar var myClosure: proc(): string for i in 5..7: for j in 7..9: if i * j == 42: capture i, j: myClosure = proc (): string = fmt"{i} * {j} = 42" let a = myClosure() assert a == "6 * 7 = 42"

优秀的个人博客,低调大师

Tangdao Design 发布 1.0.1,修复兼容性,新增组件,添加后台模板页

本次更新内容如下: 修复 1、修复样式sass变量问题。 新增模板 1、新增模板、模板布局、导航 查看模板 新增组件 1、新增模式窗口 2、整理工具类 3、新增气泡卡片 4、新增进度条 5、新增步骤组件 6、新增滚动插件 7、新增加载组件 8、新增Tab标签 9、新增Toast提示组件 10、新增文字提示组件 11、新增表格组件 12、新增表单 13、新增表单布局 14、新增Select2组件 15、新增Search组件 16、新增各类图表组件 Tangdao Design 是一个优质的现代干净的Bootstrap 4中台模板,使用简单和最小的设计。它使用SASS预处理器、HTML5、CSS3和jQuery插件完全响应。它使用了大多数helper/utilities类,这些类是可重用的类,可以加快页面的速度并提高页面时间加载的速度。它可以用于大多数类型的应用程序模板,如分析、管理等程序,也可以用于您的桌面或移动应用程序。惊人的灵活性和可重用性。

优秀的个人博客,低调大师

MySQL Driver 5.1.X与6.X日期兼容性问题

1.引言 最近在一个新项目里尝试使用mysql-connector-java-6.0.5.jar,但是从MaxCompute(原名ODPS)中导入MySQL的数据在控制台中看到是正常的,从Java应用里读取的却是相差13或14小时的。甚至SQL里限定了数据的时间在某一天,应用查出来的数据还能是不在那天的。这就很奇怪了,本着求根问底,踩坑识坑的精神,好好地研究了一把。 首先看从http://search.maven.org中可以大概的看到MySQL Driver的发布历史:5.1.X和6.X版本现在正在双线演进。 2.复现问题 那么首先写一个小的JDBC程序来验证一下两个版本Driver行为的不一致,MySQL中的表如下: CREATE TABLE `demo_table` ( `id` INT(11) NULL DEFA

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册