话题公司 › medium

公司:medium

Evolution of the Medium iOS app architecture

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

Custom color elevation effect in Compose

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

How do we use SwiftUI in the Medium iOS application

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

Fixing duplicate stories in Medium’s For You feed

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

Building a ChatGPT Plugin for Medium

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

How to do pagination in SwiftUI

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

Challenges of mixed SwiftUI and UIKit codebases in iOS Apps

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

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,因为它是未来的趋势。

Microservice Architecture at Medium

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

Mapping Medium’s Tags

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

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),然后由事件处理器处理。处理器根据数据库中的数据进行计算和验证,并根据计算结果更新用户关系。通过这个修复工作流程,问题得到了解决。

How to recreate Medium’s article layout with CSS Grid

本文介绍了使用CSS Grid来重新创建知名网站Medium的文章布局。除了左侧的三列布局外,还在右侧添加了一个类似的栏目。通过将整个文章标签转换为网格,并将整个宽度分为七列,可以实现中等大小图片和引用的布局。此外,还介绍了如何创建特殊样式的文本元素,并将其放置在文章的右侧。通过使用CSS Grid,可以轻松地实现这些布局效果。

打造增长核武器④:内容平台的网络效应,Medium的进化之路

一方面它是全球范围内,在内容质量和设计审美上都能堪称业界之最的长文类创作出版平台,有强烈的标杆性,对类似的内容型/信息类平台,甚至社区的发展都有借鉴意义。

Read Time and You

Here’s how read time is calculated

Medium 架构实践:避免微服务综合症

在这篇文章中,Medium将分享关于如何有效实现微服务架构并避免微服务综合症的经验。

[译]Medium 是如何优化图片加载的

Medium 是全球非常知名的阅读平台,允许用户多人协作,并将自己的内容发布到平台上,让更多人知道自己所要表达的信息。 之前写过一篇关于Pinterest如何处理图片预加载的文章,有兴趣的可以点击这里 阅读。今天我们主要分析下Medium在图片预加载有哪些值得大家学习的地方。 先来观察下效果吧:…

  • «
  • 1
  • »

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-09 09:41
浙ICP备14020137号-1 $Carte des visiteurs$