知鸦日报2024-07-06

2024-07-05 16:30:00 ~ 2024-07-06 16:30:00

产品

一招轻松搞定节日图标绘制

摘要

做UI最考验个人技能的便是画图标,特别是重大节日时,公司会有运营改版需求,这时一套优秀的节假日图标往往是个令人头疼的问题。

一招轻松搞定节日图标绘制

技术

medium技术:Evolution of the Medium iOS app architecture

摘要

这篇文章主要介绍了作者团队将应用程序从单体架构转变为基于包的架构,并详细说明了转变过程中的一些关键技术。作者提到了一个名为"Navigator"的抽象层,用于在包级别上进行导航,并通过示例展示了其用法。此外,文章还介绍了"Model"和"Features"两个Swift包的作用和功能,并提到了"Features"包中的一个具体功能——新的活动信息流。作者还展示了该功能的代码结构和使用了GraphQL的方式,并介绍了视图模型和服务的实现方式。

Evolution of the Medium iOS app architecture

medium技术:Custom color elevation effect in Compose

摘要

Medium Engineering团队正在将系统迁移到Compose。在使用Compose过程中,作者发现了一些有趣的事情。作者遇到了一个问题,就是在Composable代码中设置的颜色在深色主题下没有发生光照效果。通过阅读Surface代码,作者发现了原因:如果提供的颜色与Material主题中定义的默认颜色不同,就不会应用光照叠加效果。作者认为这种处理方式缺乏灵活性,但理解这样做是为了与Material主题保持一致。

Custom color elevation effect in Compose

medium技术:How do we use SwiftUI in the Medium iOS application

摘要

该篇文章主要介绍了团队在Medium iOS应用中使用SwiftUI的情况。他们使用SwiftUI构建了列表和活动功能,并展示了一些代码示例和界面截图。他们还讨论了使用SwiftUI时遇到的一些挑战和妥协,以及在用户输入和分享功能方面使用SwiftUI时的问题和解决方案。此外,他们还分享了一些其他使用SwiftUI构建的功能,如新的帖子浮动操作栏和添加到列表的底部弹出视图。他们强调SwiftUI的可迭代性、快速构建和纯净的代码风格,以及SwiftUI已经在数百万用户中得到广泛应用的事实。

How do we use SwiftUI in the Medium iOS application

medium技术:Fixing duplicate stories in Medium’s For You feed

摘要

在解决"For You"推送重复故事问题后,用户体验得到显著改善。但新的缓存逻辑存在一个限制,即当用户在缓存中删除了Feed实例后返回"For You"页面,他们将无法获取更多之前未获取过的故事。为解决这个问题,可以实施更强大的缓存策略,但需要考虑内存扩展成本。需要在权衡利弊后决定解决方案。

Fixing duplicate stories in Medium’s For You feed

medium技术:Building a ChatGPT Plugin for Medium

摘要

MediumGPT是ChatGPT的插件,它解决了ChatGPT无法访问互联网和更新内容的问题。插件的API使得ChatGPT能够获取和操作Medium的内容。插件的调试验证了ChatGPT对插件API的理解,并可以通过询问特定问题触发插件功能。插件的链式查询功能也被证明有效,可以根据用户的查询获取相关文章和主题的最新内容。插件还可以暴露更多的API,为ChatGPT提供更多功能和信息。虽然目前还不清楚插件的具体用途,但使用它进行建立和操作是一种有趣的体验。

Building a ChatGPT Plugin for Medium

medium技术:How to do pagination in SwiftUI

摘要

本文介绍了在SwiftUI中实现列表分页的技巧。作者以Medium iOS应用为例,展示了如何无限滚动查询结果。作者通过一个通用的容器视图来展示数据源,处理了加载、空数据和下一页加载的状态。在列表的末尾,作者使用了一个进度指示器,并在其出现时执行一个任务,来加载下一页的数据。作者还提到了使用.onAppear而非.task来处理任务的取消问题。文章最后给出了一个具体的例子,展示了如何使用ForEach构建帖子列表。总的来说,本文介绍了作者多年来在SwiftUI中处理分页的方法,并给出了具体示例。

How to do pagination in SwiftUI

medium技术:Challenges of mixed SwiftUI and UIKit codebases in iOS Apps

摘要

这篇文章讨论了将旧版UIKit视图升级到SwiftUI的问题。作者指出,将SwiftUI视图整合到UIKit项目中可能并不像预期的那样顺利。由于两者采用了不同的编程方式和布局系统,需要使用UIHostingController将SwiftUI视图嵌入到UIKit中。在处理滚动跟踪时,SwiftUI和UIKit也有不同的API和方法。为了解决单元格大小的问题,有时需要在SwiftUI和UIKit中实现相同的视图,这增加了开发的复杂性。特别是对于Medium应用程序中的重要组件PostPreview,这个问题变得更加严重。

medium技术:How we build SwiftUI features in the Medium application

摘要

Medium去年收购了Glose,并且Glose团队一直忙于与新同事整合和建立新功能。他们正在使用SwiftUI和Combine开发新功能,以加快UI构建速度,并为SwiftUI、Swift包和Combine的未来架构做准备。他们计划创建MediumModel包,以提高构建和预览速度。他们还在使用SwiftUI的组件和新的Menu API来实现界面的导航和按钮功能。他们在iOS 13中使用List,并找到了一些方法来移除分隔线。在iOS 14中使用LazyVStack代替List,虽然有一些性能问题,但可以根据操作系统版本进行切换。他们还在导航栏中实现了标题渐变效果。SwiftUI在现有代码库中的应用经历了一些挑战,但现在他们已经建立了正确的架构,非常满意。他们鼓励大家不要犹豫地使用SwiftUI,因为它是未来的趋势。

How we build SwiftUI features in the Medium application

medium技术:Microservice Architecture at Medium

摘要

本文介绍了微服务架构中解耦建设和运行服务的策略,并强调了持续的可观察性和失效处理的重要性。通过使用统一的监控工具和日志搜索,以及处理RPC调用的失败情况,实现了服务的可观察性和容错性。文章还提到了避免微服务带来的一些问题,如过度建模、技术选择过多、耦合运行和构建服务、数据建模不当等。通过采取这些策略,可以提高微服务架构的效率和稳定性。

medium技术:Mapping Medium’s Tags

摘要

这篇文章介绍了如何利用机器学习模型将Medium文章的标签转化为向量表示,并通过计算余弦相似度来寻找相似的标签。作者使用了500,000个英文标签进行训练,得到了每个标签的100维向量表示。通过比较向量,可以找到与特定标签最相似的其他标签。这种方法可以帮助提高文章的分类和组织。通过对向量进行算术运算,可以在向量空间中进行跳转,从而找到与组合标签最相似的其他标签。作者还展示了通过降维技术将标签向量可视化的方法,并展示了标签之间的关系。

Mapping Medium’s Tags

medium技术:Counting your followers

摘要

Medium为了处理用户关系,使用了用户关系表和用户统计表。用户关系表中的latest_followed_at列用于确定用户之间的关系是否存在。该列的值是根据twitter_followed_atfacebook_followed_atmedium_followed_at三个时间戳中的最大值来确定的。用户统计表中的关注数和粉丝数用于在关注页面上显示。在2016年之前,用户可以将Facebook好友和Twitter关注导入到Medium中,导入后会创建用户之间的关系,并更新相关的时间戳和统计数据。在2016年之后,为了更快地跟踪用户关系,引入了latest_followed_at列作为关系的真实来源。通过这个改进,用户关系的计算和显示更加准确。在开发新界面时,注意到“Latest From Following”页面缺少作者或有不应该出现的作者。通过分析发现,问题出在用户关系表和latest_followed_at字段上。一些Twitter、Facebook和Medium的关注时间没有正确地转移到latest_followed_at字段中,而一些取消关注也没有正确地反映。为了解决这个问题,进行了一次数据修复。修复过程中,首先从数据库中查询需要修复的用户关系,然后将数据导入到数据仓库Snowflake中进行查询。随后,运行了两个查询来找出需要修复的数据,并将结果存储为CSV文件。这些文件被发送到Amazon的Simple Queuing Service (SQS),然后由事件处理器处理。处理器根据数据库中的数据进行计算和验证,并根据计算结果更新用户关系。通过这个修复工作流程,问题得到了解决。

Counting your followers

京东技术:进程还在,JSF接口不干活了,这你敢信?

摘要

应用在配合R2m(R2M:京东内部一款基于Redis研发的,具备高性能、高可用、在线伸缩能力的分布式缓存服务)升级redis版本的过程中,上游反馈调用接口报错,RpcException:[Biz thread pool of provider has been exhausted],通过监控系统和日志系统定位到现象只出现在一两个节点,并持续出现。第一时间通过JSF(JSF:中文名-杰夫,是Jingdong Service Framework (京东服务框架)的缩写,完全自主研发的高性能服务框架)将有问题的节点下线,保留现场,业务恢复。

进程还在,JSF接口不干活了,这你敢信?

腾讯技术:由蒙层截图失败展开的html2canvas实现原理探讨

摘要

html2canvas透明蒙层失败的经验总结。

由蒙层截图失败展开的html2canvas实现原理探讨

GrowingIO技术:混沌测试

摘要

混沌测试类似于"故障演练",不局限于测试,而更像是工程实践。

混沌测试

GrowingIO技术:一文搞定前端错误捕获和上报

摘要

今天就与大家一起探讨一下我们在Web场景中的异常错误数据如何收集以及如何上报。

一文搞定前端错误捕获和上报

GrowingIO技术:Flutter 无埋点SDK实现

摘要

文章介绍了使用AspectD工具在Flutter中实现AOP埋点的方法。通过修改编译工具flutter_tool,在编译期进行代码插桩,实现自动化埋点。文章提供了使用AspectD的步骤和配置,并给出了运行示例的指导。同时,文章还提到了如何参考Flutter Inspector工具的实现,在编译期通过transformer实现所有widget的抽象类_HasCreationLocation的操作。这样可以记录文件位置信息,实现自定义的埋点功能。需要注意的是,在修改相关代码前需要执行flutter clean并重新编译。

彩云技术:彩云天气地理查询优化(2): 行政区划查询

摘要

在彩云天气 App 和 API 里可以获取到当前经纬度的气象预警信息,比如「大风蓝色预警」。 不同国家地区的预警发布规则不一样,在中国是按照行政区划层级来发布的,其中最小到县级行政区。 所以在实现中,需要将经纬度转换成行政区划层级信息,再查找相关的预警信息。 在过去几年中,这部分模块经历了多次重构和完善,在此分享下每个版本的实现方式。

彩云天气地理查询优化(2): 行政区划查询

彩云技术:彩云天气地理查询优化: 最近的 N 个点

摘要

我们从一个实际业务场景的谈起:如何找到离北京市海淀区 768 创意产业园最近的 K 个国家级观测站?

最简单的思路是完整遍历所有候选站点,然后计算每个站点和 768 的距离,按照距离从小到大,选最多前 K 个。 这个代码并不难写。但是问题是慢。

彩云天气地理查询优化: 最近的 N 个点

彩云技术:一种基于稀疏矩阵的雷达 dBZ 数据格式方案

摘要

​雷达 dBZ 数据是我们制作降雨短临预报的重要数据资源。由于该类数据时空分辨率较高,若以常规气象的栅格点存储格式进行存储则存储压力很大。最近我们尝试利用稀疏矩阵的原理设计了一套既节约存储空间又能实现高效随机读取的矩阵数据格式方案。

一种基于稀疏矩阵的雷达 dBZ 数据格式方案

众安技术:Elasticsearch8实践: 新功能和特性解析

摘要

技术研发中心平台架构团队关于Elasticsearch 8.x功能与特性的分享。介绍了ES8.x在性能提升、成本降低及新增特性方面的优势;同时为降本增效,中间件搜索团队升级了二向箔搜索引擎服务平台以支持ES8.x的使用。

众安技术:众安银行的Flutter 热修复实践之路

摘要

探秘众安银行如何运用Flutter Web技术实现高效的热修复方案,提升线上应用的稳定性与用户体验。

众安银行的Flutter 热修复实践之路

爱康技术:爱康全链路压测及流量回放探索

摘要

全链路压测是一种系统性的性能测试方法,旨在模拟真实用户场景下的完整操作流程,全面评估软件系统在不同压力下的性能表现。这种测试方法对于保证应用程序的高可用性、稳定性和可扩展性至关重要。

爱康全链路压测及流量回放探索

七猫技术:Java+MotionEvent实现埋点自动化

摘要

本文旨在帮助测试人员“0”代码完成UI自动操作以及埋点自动校验,基于现状,埋点测试以及每次发版需要花费大量时间验证相关埋点,并且随着业务发展,埋点数量只会越来越多,很难做到每次发版将全部埋点回归验证一遍,虽然线上有埋点数据监控系统,但是发现埋点数据异常时已处于外网阶段,因此需要一套机制降低埋点问题逃逸率,同时降低测试负担,提高测试效率。

Java+MotionEvent实现埋点自动化

得物技术:StarRocks跨集群迁移最佳实践

摘要

2024年之前,DBA维护的StarRocks集群存在在用低版本多、稳定性受组件bug影响大的问题,给日常运维带来很一定压力,版本升级迫在眉睫。于是,我们在今年年初安排了针对2.5以下版本升级2.5.13的专项,在此做一个实践分享。

阿里巴巴技术:带你了解“Java新特性——模块化”

摘要

Java平台从Java 8向Java 9及更高版本的进化,其中引入了一个重要的新特性——模块系统。文章详细介绍了模块系统的概念,如主要参数、关键指令,以及模块化策略。此外本文还提供了最佳实践建议,帮助开发者更好地理解和应用Java模块系统。

带你了解“Java新特性——模块化”

京东技术:生成式推荐系统与京东联盟广告-综述与应用

摘要

这篇文章从生成式推荐系统和京东联盟广告的背景入手,首先引出两者结合的动因与策略,随后对当前的流程和方法进行了细致的回顾与整理,最后详细介绍了在京东联盟广告领域的应用实践。通过深入分析与案例展示,希望为广告领域的推荐系统带来新的见解和启发。

生成式推荐系统与京东联盟广告-综述与应用

‹ 2024-07-05 日报 2024-07-07 日报 ›