- 博客(292)
- 资源 (13)
- 收藏
- 关注
原创 Yoga Styling (2)
Display 控制节点应遵循的布局规范。Flex(默认值):遵循 CSS 弹性盒模型(CSS Flexible Box Model)规范。None:节点会从布局树中移除,且不可见。
2025-12-17 08:00:00
533
原创 Yoga Styling (3)
属性会在弹性容器的行与列之间添加间距。你可以指定间距仅作用于行之间、仅作用于列之间,或同时作用于行和列之间。若节点设置了固定尺寸,且定义了相对的两个边缘的偏移量(例如,同时为右边缘和左边缘分配了数值),则左边缘和上边缘的偏移量具有优先级。上的总尺寸超出容器尺寸时的处理方式。默认情况下,子元素会被强制排列在同一行(可能导致子元素被缩小)。当启用换行后,可通过。属性指定多行子元素在容器中的排布方式。属性用于设置在容器上,控制当子元素在。
2025-12-17 08:00:00
337
原创 Yoga 高级教程
在实际应用中,常会遇到部分内容的尺寸依赖于 Yoga 无法表达的因素的情况,这类内容通常包括文本,或是使用其他系统进行渲染和布局的视图。而在后续的布局计算中,只要父节点的约束条件未发生改变,所有非 “脏” 状态的节点都会被跳过,不参与此次布局计算。包含块并非 Yoga 专属概念,在网页领域也存在该概念,但由于 Yoga 仅实现了网页浏览器功能的一个子集,其包含块的行为更为简化,因此有必要以不同的角度来阐释它。节点最终的内容尺寸应从节点的布局计算结果中读取,而非缓存测量函数的返回值。
2025-12-16 08:00:00
627
原创 关于 Yoga
Yoga是一个嵌入式布局系统,专注于弹性盒模型(Flexbox),主要用于确定UI元素的尺寸和位置。它支持部分CSS特性,可跨平台实现代码共享。采用C++编写并提供C接口,通过绑定层支持多种语言调用。Yoga不涉及绘制功能,而是作为底层布局引擎被ReactNative等UI框架集成使用。
2025-12-15 08:00:00
120
原创 Yoga入门
在历史版本中,Yoga 存在一些不符合行业标准的行为,这会导致其布局效果与网页浏览器中的样式布局产生差异。这些结果包括节点相对于其父节点边框盒的偏移量、自身尺寸,以及各物理方向上外边距(margin)、边框(border)和内边距(padding)的最终解析值。一份配置会绑定到特定的 Yoga 节点上,这使得 Yoga 节点树中不同部分在布局计算时能采用不同的行为规则。Java 环境下的 Yoga 节点树若要实现从右到左(RTL)的布局,可通过设置根节点的。整个 Yoga 节点树的布局会一次性完成计算。
2025-12-15 08:00:00
977
原创 FFmpeg Protocols Documentation
设置实时模式下单次发送函数调用传输的数据包最大声明大小,文件模式下默认不使用(设为 0),默认值为 -1(自动,通常为 MPEG-TS)。每个值前缀为单个字符表示类型:B(布尔值)、N(数字)、S(字符串)、O(对象)、Z(空值),后跟冒号。该协议提供大多数客户端功能和部分服务器功能,支持 RTMP、HTTP 隧道传输的 RTMP(RTMPT)、加密 RTMP(RTMPE)、SSL/TLS 上的 RTMP(RTMPS)以及这些加密类型的隧道变体(RTMPTE、RTMPTS)。
2025-12-12 08:00:00
771
原创 FFmpeg Bitstream Filters Documentation
解包 DivX 风格的打包 B 帧。这种格式占用空间更大,可能导致轻微的音视频同步问题,解码时需要更多 CPU 资源(除非播放器有解码图像队列来补偿 2、0、2、0 的每包帧模式),且复制到 mp4 或 mpeg-ps/ts 等标准容器时可能出现问题 —— 因为 MPEG-4 解码器可能无法解码这些非标准格式。某些编码器允许长期头部(如 MPEG-2 序列头部、H.264/HEVC 的(VPS/)SPS/PPS)以 “带内”(即作为包含编码帧的比特流的一部分)或 “带外”(如在容器级别)方式传输。
2025-12-11 08:00:00
1014
原创 FFmpeg Scaler Documentation
FFmpeg 缩放器为 libswscale 库的图像转换工具提供了高层接口,尤其支持图像缩放和像素格式转换功能。设置当输入图像包含 Alpha 通道但输出图像不包含时使用的 Alpha 混合模式,默认值为。的方式设置,以下标注为 “仅 API 可用” 的选项除外。设置缩放器标志,同时用于指定缩放算法。仅可选择一种算法,默认值为。,表示源图像为全范围(full range);,表示源图像为有限范围(limited range)。设置源像素格式(必须以整数形式表示)。设置抖动算法,支持以下取值,默认值为。
2025-12-10 08:00:00
512
原创 FFmpeg Resampler Documentation
FFmpeg 重采样器为 libswresample 库的音频重采样工具提供了高层接口。具体而言,它支持执行音频重采样、音频声道布局矩阵重组,以及音频格式和封装布局转换。音频重采样器支持以下命名选项:可通过以下方式设置选项:在 FFmpeg 工具中指定。选项中显式设置值,或通过 libavutil/opt.h API 进行编程式调用。、在 aresample 滤镜中使用。
2025-12-10 08:00:00
1235
原创 Effect 与 neverthrow 对比
本文对比了TypeScript中neverthrow和Effect两个库的错误处理API。两者都采用容器模式封装成功/失败结果,提供相似的函数式操作如map、mapErr、unwrapOr等,但在实现方式和风格上存在差异:neverthrow采用实例方法调用(如result.map()),而Effect采用函数式管道风格(如pipe(Either.map()))。文章通过同步和异步场景的代码示例,详细展示了两个库在创建结果、转换值、处理错误、链式调用等方面的异同,特别指出Effect特有的pipe链式风格对
2025-12-09 08:00:00
567
原创 FFmpeg 工具文档
单个声道名称(如 ‘FL’、‘FR’ 等),可在 ‘@’ 后添加自定义名称(如 ‘FL@Left’、‘FR@Right’ 等)。标准声道布局名称(如 ‘mono’、‘stereo’ 等)。十进制数字 + ‘c’:表示该声道数对应的默认声道布局(参见函数,注意并非所有声道数都有默认布局)。十进制数字 + ‘C’:表示具有指定声道数的未知声道布局(注意并非所有声道布局指定字符串都支持未知声道布局)。
2025-12-09 08:00:00
997
原创 从 ZIO 迁移到 Effect
Effect框架采用服务联合类型表示环境依赖,与ZIO的交叉类型方式不同。这种设计移除了Has包装类型,利用TypeScript的结构类型特性避免冲突。当服务存在同名属性时,联合类型(A|B)不会像交叉类型那样简化为never,从而保持类型安全。Effect未提供预定义类型别名,而是显式使用Effect<A>表示类型,避免组合时的语义混淆。这种设计简化了类型系统,降低了认知负担。
2025-12-08 08:00:00
430
原创 Effect 与 Promise 对比
本文对比了TypeScript中Promise和Effect两种异步处理方案的差异。Effect采用惰性求值和多执行模式,支持结构化并发和类型安全的错误处理;而Promise采用饥饿式求值和单次执行模式,缺乏内置中断机制。在创建方式上,Effect通过succeed/fail方法明确区分成功/失败场景,并提供类似async/await的Effect.gen语法。并发处理方面,Effect通过all/raceAll等方法提供更精细的控制。核心区别在于Effect具有更好的类型安全性、错误管理和执行控制能力,适
2025-12-08 08:00:00
1026
原创 Effect 与 fp-ts 对比
fp-ts项目已正式并入Effect-TS生态系统,作者Giulio Canti加入Effect组织。Effect可视为fp-ts的升级版(v3),在保留原有功能基础上新增多项特性。两库对比显示,Effect在资源管理、并发控制、错误处理等方面优势明显,但初始包体积较大。Effect提供Micro模块作为轻量替代方案,适合对包体积敏感的场景。特性对比表详细展示了Effect在类型化服务、测试支持、日志追踪等18个维度的全面优势,特别适合需要高性能并发和复杂错误处理的场景。
2025-12-07 08:00:00
601
原创 关于 Effect 的常见误解
Effect框架常见误解解析:1. 性能方面,Effect的生成器API与async-await性能相当,仅在简单运算场景会有明显差异,其核心价值在于处理并发和错误等复杂问题;2. 包体积约25KB(gzip)且支持tree-shaking,实际使用可能减小总体积;3. 学习曲线虽陡但只需掌握10-20个核心函数即可上手;4. 与RxJS存在本质区别,Effect专注单发射效果和命令式编程,提供完整的类型安全控制流;5. 基于TypeScript实现能充分利用现有生态,其效果系统实现优于某些函数式语言。建议
2025-12-07 08:00:00
944
原创 Effect -- Platform (2)
摘要:Effect平台提供多个实用模块:1. Path模块支持路径操作(拼接、解析、规范化等);2. PlatformLogger可将日志写入文件,支持批量处理和多种格式;3. Runtime的runMain方法简化主程序执行,内置错误处理和退出码管理;4. Terminal模块实现终端交互功能,包括标准输入输出操作。示例包含路径拼接、文件日志记录、数字猜谜游戏等实用场景,展示如何利用这些模块构建可靠的Node.js应用。
2025-12-06 10:15:47
966
原创 Effect -- Platform (1)
Effect平台是一个跨平台开发库,支持Node.js、Deno、Bun和浏览器环境。它提供稳定的模块如文件系统(FileSystem)、终端交互(Terminal)、键值存储(KeyValueStore)等,以及实验性模块如HTTP客户端、服务器等。通过平台特定包(@effect/platform-node等)实现跨平台兼容性。主要功能包括:1) 跨平台路径处理;2) 命令行命令创建与执行;3) 文件系统操作;4) 类型安全的键值存储。该库采用Effect架构,支持错误处理和依赖注入,提供内存和文件系统两
2025-12-06 10:06:26
1062
原创 Effect -- Schema(5)
*输出:left: {*//*输出:left: {*/API 允许你从 Effect 的Schema生成一个标准模式 V1(Standard Schema v1)对象。可通过模式定义中的arbitrary注解,自定义任意数据的生成方式。})age: Age})/*示例输出:*/该注解允许访问 fast-check 库的完整导出(fc),可返回能精准生成目标数据类型的Arbitrary。
2025-12-04 08:00:00
692
原创 Effect -- AI
Model下面我们通过一个完整示例,演示如何定义、实现并使用一个从API 获取冷笑话的工具。首先,使用Tool.make构造函数定义语言模型可访问的工具。:工具的可选描述success:工具成功执行时返回的值类型failure:工具执行失败时返回的值类型parameters:调用工具时需传入的参数description: "从 ICanHazDadJoke API 获取一个搞笑的冷笑话",success: Schema.String, // 成功时返回字符串(即笑话内容)
2025-12-04 08:00:00
670
原创 Effect -- Micro
/ 定义一个继承自 Micro.Error 的自定义错误类// 抛出自定义错误(等价于 Micro.fail(new MyError(...)))" })})/*输出:"cause": {"error": {*/// 声明一个生成随机数的服务标签Random,>() {}// 使用服务//// ┌─── 类型:Micro<void, never, Random>// ▼// 获取 Random 服务实例// 从服务中获取随机数。
2025-12-04 08:00:00
1563
原创 Effect -- Schema(3)
本文介绍了模式转换(Schema Transformations)的核心概念及其应用。模式转换允许数据在不同类型间进行转换,如字符串转数字或日期对象转换。文章详细解析了Schema.transform和Schema.transformOrFail方法的使用场景:前者用于确定成功的转换,后者则处理可能失败的复杂转换。通过多个实例演示了基础类型转换、组合转换、数组转集合等操作,并探讨了异步转换、错误处理和依赖注入等高级用法。此外,还介绍了字符串、数字、布尔值等数据类型的特定转换方法,以及Schema注解系统用于
2025-12-03 08:00:00
869
原创 Effect -- Schema(4)
你可以使用message注解为架构的不同部分定义专门定制的自定义错误消息。这使开发人员能够提供更具上下文相关性的反馈,从而改进调试和验证过程。以下是| string| {返回类型描述string提供直接描述错误的静态消息。利用动态消息,这些消息可以整合同步过程的结果或依赖于可选依赖项。对象(包含message和override允许你定义特定的错误消息以及一个布尔标志(override该标志决定自定义消息是否应取代任何默认或嵌套的自定义消息,从而能精确控制向用户显示的错误输出。
2025-12-03 08:00:00
1338
原创 Effect -- Schema(6)
在使用 JSON Schema 时,某些数据类型(如bigint)没有直接对应的表示方式,因为 JSON Schema 本身不原生支持这些类型。这种缺失通常会导致生成 schema 时出现错误。要解决此问题,你可以通过自定义jsonSchema// 为 `bigint` 类型添加自定义 JSON Schema 注解type: "在 JSON Schema 中表示 bigint 的自定义方式"})})/*输出:],
2025-12-03 08:00:00
666
原创 Jinja Extensions(扩展)
Jinja扩展机制允许开发者通过添加过滤器、测试、全局变量等方式增强模板功能。扩展需在环境创建时通过extensions参数添加,或使用add_extension()方法动态加载。内置扩展如i18n支持国际化,提供trans标签并与gettext/Babel集成,可通过环境方法安装翻译函数。开发者可自定义扩展(需继承Extension类),通过操作AST节点实现新功能。文档详细说明了扩展API、节点类型及扩展示例(如缓存标签实现),同时介绍了新式gettext调用等高级特性。
2025-12-02 08:00:00
1537
原创 Effect -- Schema(2)
本文介绍了Effect Schema库中过滤器的使用方法和高级功能。过滤器允许开发者在基础类型检查之外添加自定义验证逻辑,通过Schema.filter函数声明,接收待验证schema和断言函数作为参数。文章详细讲解了过滤器的多种应用场景,包括字符串长度验证、密码匹配检查、多错误报告等,并介绍了如何添加元数据注解、指定错误路径等高级功能。此外,还涵盖了递归Schema定义、属性重命名、模式投影等高级用法,以及如何处理可选字段、默认值和标记类型等常见需求。文章通过大量代码示例展示了如何在实际项目中应用这些功能
2025-12-02 08:00:00
1106
原创 Effect -- Behaviours
TypeScript中的等价性与排序模块提供了灵活的值比较方案。等价性(Equivalence)定义了满足自反性、对称性和传递性的二元关系,支持自定义比较逻辑,如通过id比较对象。排序(Order)模块提供了比较器接口,支持字符串、数字等基础类型的比较,并能派生复杂对象的排序规则。两个模块都支持组合多个比较条件,并提供了实用函数如反转排序、范围检查和极值查找等功能。这些工具使得在TypeScript中实现精确的值比较和排序变得简单高效。
2025-12-01 08:00:00
886
原创 Effect -- Schema(1)
EffectSchema 是一个用于在 TypeScript 中定义和使用数据模式的模块,支持数据验证、转换和类型安全。它允许定义 Schema<Type,Encoded,Requirements> 来描述数据结构,并提供解码、编码、断言、测试数据生成等功能。文档详细介绍了如何定义各种数据类型(原始类型、字面量、联合类型、元组、数组、记录、结构体等),处理可选/必需属性,进行类型守卫和断言,以及自定义解析行为。该模块强调不可变性,支持 JSON 兼容性命名约定,并提供丰富的 API 来处理数据转
2025-12-01 08:00:00
1300
原创 Effect -- Data Types
摘要:本文详细介绍了Effect库中多个核心数据类型的功能与使用方法。主要内容包括: BigDecimal:高精度数值计算模块,解决JavaScript浮点数精度问题,支持金融等领域的精确运算。 Cause:错误处理机制,详细记录错误类型、调用栈和执行轨迹,支持顺序和并发错误的组合分析。 Chunk:高效不可变集合,优化了拼接操作性能,适用于函数式编程场景。 Data:简化数据结构创建,自动处理等值性和哈希计算,支持样例类、元组等类型定义。 DateTime:不可变日期时间处理,支持时区管理和精确算术运算,
2025-11-30 08:00:00
1045
原创 Effect -- Traits
Effect框架的Equal模块为TypeScript提供了基于值的相等性检查方案,解决了JavaScript原生引用比较的局限性。该模块支持自定义相等性逻辑实现,通过Equal接口可定义特定类型的比较规则,同时与Hash接口配合使用哈希优化比较效率。Data模块简化了值类型的相等性检查实现。Equal模块尤其适用于集合操作,通过HashSet和HashMap等数据结构确保基于内容的正确比较,避免了原生Set/Map的引用比较问题。这种机制不仅保证了数据完整性,还提升了集合操作的性能和可预测性。
2025-11-30 08:00:00
757
原创 Effect --Code Style
本文摘要介绍了Effect框架的核心概念和功能:1. 应用程序入口点:使用NodeRuntime.runMain实现优雅关闭,处理SIGINT信号并确保资源释放 2. 双重API设计:Effect.map等函数提供数据前置(data-first)和数据后置(data-last)两种调用方式 3. 标记类型(Branded Types):通过Brand模块创建类型安全的值,防止不同类型间的意外混用 4. 模式匹配:使用Match模块实现类型安全的模式匹配,支持when/not/tag等匹配器 5. 代码简化技
2025-11-29 10:35:45
755
原创 Effect -- TestClock(测试时钟)
摘要:Effect框架提供了TestClock工具,用于高效测试涉及时间操作的代码。TestClock允许手动控制时间流逝,避免真实等待,从而加快测试速度。通过TestClock.adjust方法可模拟时间推移,触发预定时间内的副作用执行。文章展示了测试超时、周期性任务和延迟对象等场景的示例,强调最佳实践是:创建纤程→调整时钟→验证结果。这种机制特别适用于需要精确控制时间的测试场景,能确保测试的可预测性和执行效率。
2025-11-29 10:17:22
452
原创 Effect-资源管理
摘要:本文详细介绍了Effect框架中的资源管理机制,重点讲解了如何安全获取、使用和释放资源。通过Effect.ensuring、Effect.onExit和Effect.onError等函数实现类似try/finally的功能,确保资源在各种执行结果下都能被正确释放。文章还深入探讨了作用域(Scope)的概念,展示如何通过Effect.acquireUseRelease和Effect.acquireRelease管理资源生命周期,包括自动释放和手动控制作用域关闭。最后通过一个工作区创建的示例,演示了如何实
2025-11-28 08:00:00
933
原创 Effect -- observability
Effect框架提供了强大的日志记录和指标监控功能,支持动态日志级别控制、自定义日志输出、细粒度日志控制以及基于环境的日志配置。其指标系统包含计数器、仪表盘、直方图、摘要和频率五种类型,适用于不同监控场景。通过追踪功能,可以跨服务跟踪请求生命周期,使用跨度记录操作详情。Effect还支持与Sentry等工具集成,并通过Supervisor管理纤程状态。这些特性共同构成了一个全面的可观测性解决方案,帮助开发者监控和优化分布式系统性能。
2025-11-28 08:00:00
1594
原创 Effect -- 批处理(Batching)
本文介绍了如何使用批处理(Batching)优化API调用,通过减少HTTP请求次数提升应用性能。主要内容包括: 基本API调用模型:定义了用户、待办事项等数据结构及获取数据的API函数 批处理实现方法: 将请求转换为结构化数据模型 配置批处理解析器(RequestResolver) 整合请求与解析器形成可执行查询 性能优化技巧: 支持批处理的API合并请求 请求缓存避免重复获取 并发执行提高效率 高级功能: 带上下文的解析器 自定义缓存配置 定时任务调度 该方法特别适用于数据交互频繁的应用场景,能显著减少
2025-11-28 08:00:00
1534
原创 Effect -- Caching
摘要:本文介绍了Effect库中的缓存管理功能,包括cachedFunction(函数记忆化)、once(单次执行)、cached(延迟缓存)和cachedWithTTL(带存活时间的缓存)等核心方法。通过示例代码展示了如何实现随机数记忆化、单次任务执行、耗时任务缓存等功能。文章还详细解析了Cache模块的特性,包括组合性、同步/异步统一处理、效果集成和指标跟踪,并演示了并发缓存查找的实现方式。缓存支持容量限制和TTL设置,提供refresh、invalidate等方法管理缓存生命周期,专为高并发场景设计,
2025-11-28 08:00:00
541
原创 Effect -- Concurrency
Effect框架提供了强大的并发控制工具,包括纤程(Fibers)、信号量(Semaphore)、队列(Queue)、发布-订阅(PubSub)和门闩(Latch)等核心组件。纤程作为轻量级虚拟线程,支持资源安全取消;信号量通过许可机制控制并发访问;队列提供背压感知的消息传递;PubSub实现消息广播;门闩则用于同步等待。框架支持四种并发策略:顺序执行、数值限制、无界并发和继承并发。中断机制采用异步模型,确保资源安全释放。这些工具协同工作,为构建高并发、资源安全的应用程序提供了完备的解决方案。
2025-11-28 08:00:00
538
现代计算机图形学入门-Games101课件
2024-04-16
WEBGL英文原版教程
2013-08-23
PaaS云计算系统仿真平台及其数据库子系统的设计与实现
2012-10-31
齿轮设计WebCAD系统中STEP标准的应用_孙磊
2013-08-23
jQuery即学即用
2012-10-31
opengl编程指南
2013-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅