首页 文章 精选 留言 我的

精选列表

搜索[Solon框架],共10000篇文章
优秀的个人博客,低调大师

Rubik —— Android 组件化开发框架

Rubik是一套解决Android平台组件化的综合方案,提供gradle project之间的路由通讯能力,以及对gradle project的组件定义、版本控制、maven发布、aar/jar与源码之间的切换以及组件的自由组合等能力。 English Readme Rubik由两部分组成: Rubik Router :即Rubik的函数级路由能力,与一般的页面路由不同,Rubik Router允许把Uri及参数,导航到工程内部,任意的一个公开的JVM语言(Java/Kotlin)函数的执行上,以便于更灵活的进行gradle project之间不基于代码调用的通讯。 Rubik 工具链 :提供组件上下文的定义、版本控制、maven发布、aar/jar与源码之间的切换等能力,包括4个gradle plugin: rubik: 提供全局定义组件的能力,并根据全局定义自动启用rubik-context、rubik-root等插件 rubik-context: 提供task,自动生成镜像函数等中间代码,并把中间代码打包成context.jar ,按版本号发布到maven 提供task,把业务代码按flavor、版本号编译成aar (包括代码、资源、内置SDK)发布到maven 通过全局定义的组件,为组件所在子工程自动添加其他context.jar的依赖 rubik-root: 给壳工程提供筛选组件等能力,根据flavor、版本号筛选要打包进apk的业务组件 提供组件的源码工程和aar切换的能力 rubik-test: 给工程提供单元测试环境 快速开始 1. 工程创建和组件声明: (1) 创建或使用已有的一个或多个android library module,作为"组件工程"(如demo代码中的demo_component_detail、demo_component_home等),用于开发真正的业务逻辑。 (2) 在最外层工程(gradle root project)的build.gradle或gradle.properties文件中配置Rubik版本号等初始化参数,并在最外层工程中启用rubik插件: ext { rubik_kapt_version = "com.rubik:kapt:1.9.1.1-K1_5" rubik_router_version = "com.rubik:router:1.9.1.1-K1_5" rubik_plugins_version = "com.rubik:plugins:1.9.1.1-AGBT4-K1_5" } apply plugin: 'rubik' // 启用rubik插件 (3) 在最外层工程的build.gradle文件或同级目录下的rubik-*.gradle文件中,配置组件信息: rubik { component { // 第一个组件 uri "app://com.myapp.home" // 组件的Uri dependencies { // 组件需要依赖的其他组件 uri ("app://com.myapp.detail" ) { version "0.1.1" // 依赖其他组件的版本 } uri( … ) } source { // 定义默认来源,如不需切换源码和aar,可以只声明project或maven project (":demo_component_home") } } component { … } //继续配置第二个组件 } 2. 让组件之间互相通信: (1). 在接口提供者工程内,通过注解定义路由路径,作为组件暴露给其他组件的通信接口: 通过RFunction注解声明函数路由: @RFunction(path = "account/user") fun getUser(id : Int, name : String) : User? { … } 通过RPage注解声明页面路由: @RPage(path = "page/main") class HomeActivity : AppCompatActivity() { … } (2). 执行接口提供者工程对应的"publishRubikXxxRContextLib"任务,发布组件上下文到云端或本地maven仓库。 (3). 执行接口提供者工程对应的"publishRubikXxxRComponent"任务,发布组件aar到云端或本地maven仓库。 (4). 在接口调用者工程内,调用上述接口提供者所提供的接口,可以选择两种方式: 通过Kotlin DSL: navigate { uri = "app://com.myapp.detail/account/user" // 请求的uri query { // 请求的参数 "id" with 400 "name" with "CuiVincent" } result<User?> { user -> // 通过泛型指定接收数据类型,多次异步返回时,可以用多个result接收 … } } 通过自动生成的镜像函数: DetailContext.Account.user(400, "CuiVincent" ) { user -> … // 自动生成的镜像函数的参数类型、返回值类型都是明确的,比DSL方式更具有约束力 } 3. 筛选要打包的组件 (1). 创建或使用已有的android application project,作为"壳工程"(如demo代码中的demo_root_app),用于把组件组装并编译成Apk。 (2). 在"壳工程"的的build.gradle文件或同级目录下的rubik-*.gradle文件中,指定"壳工程"最终要将哪些组件,以哪种方式引入,并打包到最终的编译产物之中: rubik { packing { projectMode { // projectMode,通过源码工程的方式引入组件 uri ("app://com.myapp.home") uri ("app://com.myapp.*") // 支持通过*匹配任意字符 } mavenMode { // mavenMode,通过maven上的aar的方式引入组件 uri ("app://com.myapp.detail") { version "0.2.0" } } } } 测试 通过rubik-test插件,给当前工程的androidTest variant添加全部可pick组件的context.jar依赖,便于写测试用例。 @RunWith(AndroidJUnit4::class) class RouterTestCase { @Before fun init() { Rubik.init() } // 初始化Rubik @Test fun usePerview() { PerviewContext.preViewVideo(path) { success -> log("preViewVideo success:${success}") } // 测试用例 } … // 继续写测试用例 }

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

SQLAlchemy 1.4.42 发布,Python ORM 框架

SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。 SQLAlchemy 1.4.42 现已发布。此版本包含了各种错误修复,主要是在 ORM 相关用例领域。还添加了两个新的与 ORM 相关的配置警告,指出在某些情况下使用不正确的 mappings 时可能会导致混淆行为的情况。公告指出,虽然某些现有设置可能具有这些模式中的任何一种并且会看到新的警告,但这些错误配置模式已经存在多年,并不表示现有应用程序有任何新问题。 此外,新版本还修复了在尝试连接到各种形式的 Azure 云数据库时有关 MSSQL 方言的持续回归;其中修复了一种类型的 Azure 数据库,然后引入了连接到另一种类型的新问题。开发团队表示,SQLAlchemy 项目没有针对这些数据库的直接测试资源,因此只能依靠用户反馈的来判断,但是很可能这些问题最终会在此版本中得到解决。 1.4.42 的完整变更日志可查看Changelog。 下载页面

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

SQLAlchemy 1.4.40 发布,Python ORM 框架

SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。 SQLAlchemy 1.4.40 版本的更新内容如下: orm [orm] [bug] 修正了在多态 SELECT 中多次引用 CTE 的问题,该问题可能导致同一 CTE 的多个 "克隆" 被构建,然后将这两个 CTE 触发为重复的。 engine [engine] [usecase] 在 Core 中为 Connection 实现了新的 Connection.execution_options.yield_per 执行选项,以反映 ORM 中可用的相同 yield_per 选项。 [engine] [bug] 修正了 Result 中的错误,在使用 Connection.execution_options.stream_results 时,如果使用的 dialect 不支持明确的 "server side cursor" 设置,则不会使用缓冲的结果策略。 [engine] [bug] 添加了 FilterResult.yield_per(),以便 MappingResult、 ScalarResult 和 AsyncResult 等结果实现能够访问该方法。 sql [sql] [bug] 调整了字符串包含函数 .contains(), .startswith(), .endswith() 的 SQL 编译,以强制使用字符串连接操作符,而不是依赖加法操作符的重载 mypy [mypy] [bug] 修正了 mypy 插件在默认使用 lambda 作为 Column 时的崩溃问题 asyncio [asyncio] [bug] 当使用 AsyncConnection 或 AsyncSession 作为上下文管理器时,特别是在 __aexit()__ 上下文管理器退出时,为连接和会话释放过程添加了 asyncio.shield() ,在上下文管理器完成后释放对象。 postgresql [postgresql] [bug] 修正了 psycopg2 dialect 中的问题,即为 #4392 实现的 "多主机" 功能,可以在查询字符串中以 ?host=host1:port1&host=host2:port2&host=host3:port3 的形式传递多个 host:port 对,但没有正确实现。 misc [bug] [types] 修正了在装饰 ARRAY 数据类型时, TypeDecorator 不能正确代理 __getitem__() 操作符的问题 更多详情可查看:https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.40

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

Markdoc —— 基于 Markdown 的创作框架

Markdoc 是一个基于 Markdown 的语法和工具链,用于创建自定义文档网站,具有功能强大、使用灵活和可扩展的特点。Markdoc 由支付公司 Stripe 开发,最初用于支持 Stripe 的公共文档,这是他们最大和最复杂的内容网站。 安装 要开始使用 Markdoc,首先使用以下命令安装库: npm install @markdoc/markdoc 或者是 yarn add @markdoc/markdoc 并将其导入你的应用程序: const Markdoc = require('@markdoc/markdoc'); 或者如果你使用的是 ESM import Markdoc from '@markdoc/markdoc'; 然后使用在你的应用或工具中使用Markdoc: const doc = ` # Markdoc README {% image src="/logo.svg" /%} `; const ast = Markdoc.parse(doc); const content = Markdoc.transform(ast); return Markdoc.renderers.react(content, React); 开发 运行 npm install 运行 npm run build 使用npm test运行测试

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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应用均可从中受益。

Sublime Text

Sublime Text

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

用户登录
用户注册