首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Electron 23.1.2 发布,跨平台桌面应用开发工具

Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序。它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用。Electron 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 Electronv23.1.2现已发布,具体更新内容如下: Fixes 修复了 BrowserView.webContents 在 close 时没有发出的 destroyed event。#37451 修复了使用 secure 作为 cookie 过滤器时返回的错误结果。#37248 修复了如果用户在 macOS 上设置了aspectRatio,则minWidth/minHeight和maxWidth/maxHeightjia将不会被强制执行。#37457 修复了在 macOS 上将hasReply和actions传递给主进程通知导致第一个 action 被遮挡和不可用的问题。#37448 修复了可拖动区域在 Mac App Store 构建中不起作用的问题。#37473 修复了未在 frameless window 的可拖动区域中传递 right-clickevents 的问题。#37394 Other Changes 改进了contents.takeHeapSnapshot的错误信息。#37460 更新 Chromium 至 110.0.5481.177。#37389 更新说明:https://github.com/electron/electron/releases/tag/v23.1.2

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

Go 语言开发工具 LiteIDE X38.2 发布

LiteIDE X38.2 正式发布。 更新 gotools & gocode,修复泛型代码查找和代码完成。 重构 Go 类视图和大纲视图,支持泛型显示。 更新 Delve 调试插件,增加反汇编视图,修复 windows 下退出错误。 ### 2023.02.14 Ver X38.2 * LiteIDE * fix and update gotools & gocode * refactor astview outline * update dlv debugger plugin * GolangAst * new outline view by pos * support typeparams * LiteDebug * add disassemble view * DlvDebugger * fix generics func sync * fix dlv process exit on windows * refactor gorountines model * support disassemble model * LiteBuild * gosrc.xml TARGETNAME use BUILD_DIR_PATH * GolangEdit * support any and comparable * GolangCode * support any and comparable * gotools * types fix find obj field * types fix object string * gotest fix run test file use -run mode * astview add new -outline for outline * astview add new -tp for typeparams * astview fix interface embedded type * gocode * fix identifier comparable * update lookup object

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

Electron 23.0.0 发布,跨平台桌面应用开发工具

Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序。它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用。Electron 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 Electronv23.0.0现已发布,具体更新内容如下: Fixes 当激活 macOS 语音控制以允许对 Electron 应用程序进行完全语音控制时,现在会启用基本辅助功能支持。#37145 修复了由未初始化的 pref 引起的 printing 崩溃。#37149 Other Changes 已弃用的incrementCapturerCount()/decrementCapturerCount()方法已被删除。#37148 将 Chromium 更新为 110.0.5481.77。#37120 更新说明:https://github.com/electron/electron/releases/tag/v23.0.0

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

给 Databend 添加 Scalar 函数 | 函数开发系例一

在 Databend 中按函数实现分为了:scalars 函数和 aggregates 函数。 Scalar 函数: 基于输入值,返回单个值。常见的 Scalar function 有 now, round 等。 Aggregate 函数: 用于对列的值进行操作并返回单个值。常见的 Agg function 有 sum, count, avg 等。 https://github.com/datafuselabs/databend/tree/main/src/query/functions/src 该系列共两篇,本文主要介绍 Scalar Function 从注册到执行是如何在 Databend 运行起来的。 函数注册 由 FunctionRegistry 接管函数注册。 #[derive(Default)] pubstructFunctionRegistry{ pubfuncs:HashMap<&'staticstr,Vec<Arc<Function>>>, #[allow(clippy::type_complexity)] pubfactories:HashMap< &'staticstr, Vec<Box<dynFn(&[usize],&[DataType])->Option<Arc<Function>>+'static>>, >, pubaliases:HashMap<&'staticstr,&'staticstr>, } 三个 item 都是 Hashmap。 其中,funcs 和 factories 都用来存储被注册的函数。不同之处在于 funcs 注册的都是固定参数个数的函数(目前支持最少参数个数为0,最多参数个数为 5),分为 register_0_arg, register_1_arg 等等。而 factories 注册的都是参数不定长的函数(如 concat),调用 register_function_factory 函数。 由于一个函数可能有多个别名(如 minus 的别名有 subtract 和 neg),因此有了 alias,它的 key 是某个函数的别名,v 是当前的存在的函数名,调用 register_aliases 函数。 另外, 根据不同的功能需求, 我们提供了不同级别的 register api。 函数构成 已知 funcs 的 value 是函数主体,我们来看一下 Function 在 Databend 中是怎么构建的。 pubstructFunction{ pubsignature:FunctionSignature, #[allow(clippy::type_complexity)] pubcalc_domain:Box<dynFn(&[Domain])->Option<Domain>>, #[allow(clippy::type_complexity)] pubeval:Box<dynFn(&[ValueRef<AnyType>],FunctionContext)->Result<Value<AnyType>,String>>, } 其中,signature 包括 函数名,参数类型,返回类型以及函数特性(目前暂未有函数使用特性,仅作为保留位)。要特别注意的是,在注册时函数名需要是小写。而一些 token 会经过 src/query/ast/src/parser/token.rs 转换。 #[allow(non_camel_case_types)] #[derive(Logos,Clone,Copy,Debug,PartialEq,Eq,Hash)] pubenumTokenKind{ ... #[token("+")] Plus, ... } 以实现 `select 1+2` 的加法函数为例子,`+` 被转换为 Plus,而函数名需要小写,因此我们在注册时函数名使用 `plus`。 with_number_mapped_type!(|NUM_TYPE|matchleft{ NumberDataType::NUM_TYPE=>{ registry.register_1_arg::<NumberType<NUM_TYPE>,NumberType<NUM_TYPE>,_,_>( "plus", FunctionProperty::default(), |lhs|Some(lhs.clone()), |a,_|a, ); } }); calc_domain 用来计算输出值的输入值的集合。用数学公式描述的话比如 `y = f(x)` 其中域就是 x 值的集合,可以作为f的参数生成 y 值。这可以使我们在索引数据时轻松过滤掉不在域内的值,极大提升响应效率。 eval 可以理解成函数的具体实现内容。本质是接受一些字符或者数字,将他们解析成表达式,再转换成另外一组值。 示例 目前在 function-v2 中实现的函数有这几类:arithmetric, array, boolean, control, comparison, datetime, math, string, string_mult_args, variant 以 length 的实现为例: length 接受一个 String 类型的值为参数,返回一个 Number 类型。名字为 length,domain 不做限制(因为任何 string 都有长度)最后一个参数是一个闭包函数,作为 length 的 eval 实现部分。 registry.register_1_arg::<StringType,NumberType<u64>,_,_>( "length", FunctionProperty::default(), |_|None, |val,_|val.len()asu64, ); 在 register_1_arg 的实现中,我们看到调用的函数是 register_passthrough_nullable_1_arg,函数名包含一个 nullable。而 eval 被 vectorize_1_arg 调用。 注意:请不要手动修改 register_1_arg 所在的文件 [src/query/expression/src/register.rs](https://github.com/datafuselabs/databend/blob/2aec38605eebb7f0e1717f7f54ec52ae0f2e530b/src/query/expression/src/register.rs) 。因为它是被 [src/query/codegen/src/writes/register.rs](https://github.com/datafuselabs/databend/blob/2aec38605eebb7f0e1717f7f54ec52ae0f2e530b/src/query/codegen/src/writes/register.rs) 生成的。 pubfnregister_1_arg<I1:ArgType,O:ArgType,F,G>( &mutself, name:&'staticstr, property:FunctionProperty, calc_domain:F, func:G, )where F:Fn(&I1::Domain)->Option<O::Domain>+'static+Clone+Copy, G:Fn(I1::ScalarRef<'_>,FunctionContext)->O::Scalar+'static+Clone+Copy, { self.register_passthrough_nullable_1_arg::<I1,O,_,_>( name, property, calc_domain, vectorize_1_arg(func), ) } 这是因为 eval 在实际应用场景中接受的不只是字符或者数字,还可能是 null 或者其他各种类型。而 null 无疑是最特殊的一种。而我们接收的参数也可能是一个列或者一个值。比如 selectlength(null); +--------------+ |length(null)| +--------------+ |NULL| +--------------+ selectlength(id)fromt; +------------+ |length(id)| +------------+ |2| |3| +------------+ 基于此,如果我们在函数中无需对 null 类型的值做特殊处理,直接使用 register_x_arg 即可。如果需要对 null 类型做特殊处理,参考 [try_to_timestamp](https://github.com/datafuselabs/databend/blob/d5e06af03ba0f99afdd6bdc974bf2f5c1c022db8/src/query/functions/src/scalars/datetime.rs)。 而对于需要在 vectorize 中进行特化的函数则需要调用 register_passthrough_nullable_x_arg,对要实现的函数进行特定的向量化优化。 例如 comparison 函数 regexp 的实现:regexp 接收两个 String 类型的值,返回 Bool 值。在向量化执行中,为了进一步优化减少重复正则表达式的解析,引入了 HashMap 结构。因此单独实现了 `vectorize_regexp`。 registry.register_passthrough_nullable_2_arg::<StringType,StringType,BooleanType,_,_>( "regexp", FunctionProperty::default(), |_,_|None, vectorize_regexp(|str,pat,map,_|{ letpattern=ifletSome(pattern)=map.get(pat){ pattern }else{ letre=regexp::build_regexp_from_pattern("regexp",pat,None)?; map.insert(pat.to_vec(),re); map.get(pat).unwrap() }; Ok(pattern.is_match(str)) }), ); 函数测试 Unit Test 函数相关单元测试在 [scalars](https://github.com/datafuselabs/databend/tree/d5e06af03ba0f99afdd6bdc974bf2f5c1c022db8/src/query/functions/tests/it/scalars) 目录中。 Logic Test Functions 相关的 logic 测试在 [02_function](https://github.com/datafuselabs/databend/tree/d5e06af03ba0f99afdd6bdc974bf2f5c1c022db8/tests/sqllogictests/suites/query/02_function) 目录中。 关于 Databend Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 Databend 文档:https://databend.rs/ Twitter:https://twitter.com/Datafuse_Labs Slack:https://datafusecloud.slack.com/ Wechat:Databend GitHub :https://github.com/datafuselabs/databend

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

Go 语言开发工具 LiteIDE X38.1 发布

LiteIDE X38.1 发布,支持 Go1.18 泛型。 * 支持 Go1.18 泛型,支持泛型/实例的代码完成,查找和重构支持。 * 改进环境变量,编辑器,代码完成和集成终端等插件。 * 支持 VS2019 和 FreeBSD/OpenBSD 编译。 ### 2023.01.22 Ver X38.1 * LiteIDE * gotools & gocode support Go1.18 generics * support build for windows vs2019 * support build for freebsd/openbsd * fix memory leak * GolangCode * support Go1.18 generics * remove options and default set * uncheck GOPATH for set-lib * LiteEnv * fix memory leak * filter go env * LiteBuild * fix memory leak * fix buildconfigdialog twice accept * LiteEditor * fix selection navigation saved * check backspace empty completion unpopup * GolangEdit * update actions for GO111MODULE * GolangPlay * load depends * Bookmarks * fix memory leak * Terminal * libterm fix build for vs2019 * add option for set font * ptyqt use conptyprocess for vs2019 * ptyqt fix unixptyprocess for freebsd/openbsd * gotools * types support generics method lookup * gocode * support generics type autocomplete * support incomplete dep autocomplete

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

Electron 22.0.1 发布,跨平台桌面应用开发工具

Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序。它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用。Electron 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 Electronv22.0.1现已发布,具体更新内容如下: Fixes 更改了使用requireInteraction选项创建的 HTML5 通知在 Linux 和 Windows 上不会超时。#36501 修复了在非沙盒渲染器进程的内联脚本中运行 eval 时可能发生的崩溃。#36668 修复了使用dialog.showMessageBox()时focus ring highlighting不正确的问题。#36802 修复了 Linux 上 branded release builds 的二进制剥离问题。#36654 修复了在 macOS 上 Electron 启动时有关WebSwapCGLLayer符号重复的警告。#36800 Other Changes 添加了 node-api:处理不支持外部缓冲区的问题。#36624 chromium 的反向移植修复:1352405。#36517 chromium 的反向移植修复:1352405。#36518 从 mksnapshot_args 中删除了不需要的 --turbo-profiling-input 参数,用于 Linux mksnapshot zip。#36782(也在23) 将 Chromium 更新为 108.0.5359.99。#36613 更新说明:https://github.com/electron/electron/releases/tag/v22.0.1

资源下载

更多资源
Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册