草庐IT

electron 应用开发优秀实践

一、背景在团队中,我们因业务发展,需要用到桌面端技术,如离线可用、调用桌面系统能力。什么是桌面端开发?一句话概括就是: 以Windows、macOS和Linux为操作系统的软件开发 。对此我们做了详细的技术调研,桌面端的开发方式主要有Native、QT、Flutter、NW、Electron、Tarui。其各自优劣势如下表格所示:我们最终的桌面端技术选型是Electron,Electron是一个可以使用Web技术来开发跨平台桌面应用的开发框架。其技术组成如下:Electron=Chromium+Node.js+NativeAPI各技术能力如下图所示:整体架构如下图所示:Electron是多进程

跨桌面端之组件化实践

背景介绍windows千牛功能很丰富,mac千牛什么时候可以把能力对齐?相信所有跨平台应用,都有遇到过这样的窘境。由于平台差异的复杂性,维护多端产品成本非常高,且常常存在多端体验不一致的问题。情况就是这样,而我们团队维护了pc千牛和pc旺旺2款跨端产品,在效能和体验的双重压力之下,搭建一个多端统一的pc应用跨平台开发框架势在必行。本文主要介绍了千牛PC跨端框架中,我们关于组件化部分的思考、方案选择、遇到的一些问题和解法。所谓框架,它既是一个“框子”,有一定的约束性,也是一个“架子”,有一定的支撑性。IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具

现今 Swift 包中的二进制目标

文章目录理解二进制在Swift中的演变。命令行工具相关。结论。在 iOS 和 macOS 开发中,Swift包现在变得越来越重要。Apple已经努力推动桥接那些缝隙,并且修复那些阻碍开发者的问题,例如阻碍开发者将他们的库和依赖由其他诸如 Carthage[1] 或 CocoaPods[2] 依赖管理工具迁移到Swift包依赖管理工具的问题,例如没有能力添加构建步骤的问题。这对任何依赖一些代码生成的库来说都是破坏者,比如,协议和Swift生成。理解二进制在Swift中的演变为了充分理解Apple的Swift团队在二进制目标和他们引入的一些新API方面采取的一些步骤,我们需要理解它们从何而来。在后

聊聊 Swift 中的热重载

​前言这一年是2040年,我们最新的MacBookM30X处理器可以感知到瞬间编译大型Swift项目,听起来很神奇,对吧?除此之外,编译代码库只是我们迭代周期的一部分。包括:重新启动它(或将其部署到设备)导航到您在应用程序中的先前位置重新生成您需要的数据。如果您只需要做一次的话,听起来还不错。但是如果您和我一样,在特别的一天中,对代码库进行200-500次迭代,该怎么办呢?它增加了。有一种更好的方法,被其他平台所接受,并且可以在Swift/iOS生态系统中实现。我已经用了十多年了。从今天开始,您想每周节省多达10小时的工作时间吗?热重载热重载是关于摆脱编译整个应用程序并尽可能避免部署/重新启动

深入理解Alertmanager:源码解读如何自定义Alert的恢复时间

Alertmanager处理由Prometheus服务器等客户端应用程序发送的告警。负责对它们进行分组、静默、抑制、去重并路由到正确的接收方,例如Email、Wechat、Webhook。Prometheus告警处理逻辑的问题在prometheus告警体系中,在告警策略正常运行时,检测到有新的符合告警规则的信息,就产生告警发送给alertmanager,如果恢复了,也会产生恢复的信息发送给alertmangaer,这是理想的情况。如果在告警过程中有发生告警规则的更新,比如发现告警阈值太低,调整了阈值,那么在prometheus的更新过程中,会丢弃老的评估信息,直接使用新的评估规则再次运行评估,

Sentry日志监控系统基本介绍及部署使用

Sentry简介在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试、生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了。一般我们都是在错误发生一段时间后,错误信息才会传递到开发⼈员那里,然后一顿操作查看程序运行的日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么。Sentry由此应运而生成为了解决这个问题的一个很好的工具,设计了诸多特性帮助开发者更快、更方便、更直观的监控错误信息。Sentry是什么?Sentry是程序的哨兵,它可以监控我们在生产环境中项目的运行状态,一旦某段代码运行报错,或者异常,会第一时间把报错的路由,异常文件,请求方式等

SQLite切换日志模式优化

SQLite是一款轻型的数据库,SQLite是一款轻量级数据库,是一个关系型数据库管理系统,它包含在一个相对小的C库中,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。 它能够支持Windows/Linux/Unix/Android/iOS等等主流的操作系统,占用资源非常的低,因此在移动端也有很广泛的应用。SQLIte有多种日志模式(具体见背景知识),在项目的开发迭代中,会遇见原本就版本app使用的SQLite日志模式是旧版默认的rpllbackjournal,当用户设备存在待恢复的.journal文件,新版本app的SQLite又需要将日志模式切换至wal时,我们就需要探究

可视化全链路日志追踪通用设计:问题排查从小时级降至5分钟

可观测性作为系统高可用的重要保障,已经成为系统建设中不可或缺的一环。然而随着业务逻辑的日益复杂,传统的ELK方案在日志搜集、筛选和分析等方面愈加耗时耗力,而分布式会话跟踪方案虽然基于追踪能力完善了日志的串联,但更聚焦于调用链路,也难以直接应用于高效的业务追踪。一、背景1、业务系统日益复杂随着互联网产品的快速发展,不断变化的商业环境和用户诉求带来了纷繁复杂的业务需求。业务系统需要支撑的业务场景越来越广、涵盖的业务逻辑越来越多,系统的复杂度也跟着快速提升。与此同时,由于微服务架构的演进,业务逻辑的实现往往需要依赖多个服务间的共同协作。总而言之,业务系统的日益复杂已经成为一种常态。​2、业务追踪面临

掌握Web应用的监控与告警

最近组里又来了一个需求:当告警发生时,将告警信息通过企业微信发送给开发的相关负责人,方便尽快排除故障。实际使用Alertmanager来完成这项工作,下面介绍具体的实现方法。详细配置告警通道配置监控最重要的是在故障发生时,能将告警信息发送出来,让正确的人第一时间获悉故障的详情,只有这样才能尽快排除故障。企业微信很多公司都有使用,而且Alertmanager支持将企业微信作为告警通道。按照企业微信的官方文档来配置告警通道,如果觉得麻烦,可以在浏览器上搜索“alertmanager企业微信”关键字,就有很多配置例子展示。我们需要得到下面五个键值对:wechat_api_url:'https://q