Reducing technical debt from feature flags

Reducing technical debt from feature flags Read time: 16 minutes Last edited: Oct 15, 2024 Overview This guide provides ways to reduce and eliminate technical debt related to feature flags using LaunchDarkly. Like all debt, technical debt accumulates over time, but you can mitigate that debt over time if you put effective processes in place before you need them. In this guide, we’ll explore: The challenge of technical debt The lifecycle of a flag Naming conventions Using tags Code references Deprecating, archiving, and deleting flags Just like feature flags should be a core engineering practice, so should a strategy to address technical debt. LaunchDarkly can help you by automatically identifying flags that need code removal or are ready to archive. ...

October 20, 2024 · 20 min · 9912 words · Joey

The definitive guide to feature management.

什么是特性管理? 特性管理是由特性标志(feature flags)驱动的一类新的软件开发工具和技术。一个特性标志是代码中的一个控制杠杆(一个_if-else_语句),它将代码部署与特性发布解耦。开发者多年来一直在使用特性标志的一些变体。但是,当涉及到享受特性标志的全部好处时,许多人只是触及了表面。 ...

October 20, 2024 · 5 min · 2247 words · Joey

The definitive guide to feature management.

What is feature management? Feature management is a new class of software development tools and techniques powered by feature flags. A feature flag is a lever of control within your code (an if-else statement) that decouples code deployments from feature releases. Developers have used some variation of feature flags for years. But when it comes to enjoying the full benefits of feature flags, many have only scratched the surface. At most organizations, the art of feature flagging is confined to just a few teams across a few use cases. Such limits stem, in part, from the fact that managing feature flags at scale is quite challenging. For one thing, technical debt can rapidly accrue if you start using flags in large volumes. As a result, only a handful of developers end up using them, thus limiting the value an organization can capture from those flags (see what we did there?). Another drawback of conventional flags is they only support basic true-false, or Boolean, use cases. This, too, prevents organizations from realizing the full benefits of feature flags. ...

October 20, 2024 · 6 min · 1070 words · Joey

代码分支管理

拆分为两套代码所存在的问题: 使用不同分支后,大型修改的合并将变得极为困难,不论是从上游合并到下游,还是下游合并到上游,都将成为一个耗时巨大的工程,以轻共享代码合并上游为例,历时3个多月,经历过大量测试,仍然出现风险不可控。如果只是禁绝了从下游合并到上游的可能,下游的客户也一样需要承担上游合并到下游所带来的功能异常风险,及下游代码丢失的风险,该风险从宏观和微观层面,都与下游合并至上游一致。 ...

September 18, 2024 · 3 min · 1153 words · Joey

Vim使用小技巧

如何键入真正的Tab字符? 如果你想要在 Vim 中输入真正的 Tab 字符,你可以在插入模式下按 Ctrl-V,然后按 Tab。这将插入一个真正的 Tab 字符,而不是空格。 注释代码? 快捷注释, V gc 如何缩进? 在 Neovim 中,您可以使用以下方法进行代码缩进: ...

August 28, 2024 · 3 min · 1136 words · Joey

NvChad

Ctrl+n 打开/关闭 NvimTree

August 26, 2024 · 1 min · 7 words · Joey

Istio Error Flag

HTTP and TCP Long name Short name Description NoHealthyUpstream UH No healthy upstream hosts in upstream cluster in addition to 503 response code. UpstreamConnectionFailure UF Upstream connection failure in addition to 503 response code. UpstreamOverflow UO Upstream overflow (circuit breaking ) in addition to 503 response code. NoRouteFound NR No route configured for a given request in addition to 404 response code or no matching filter chain for a downstream connection. UpstreamRetryLimitExceeded URX The request was rejected because the upstream retry limit (HTTP) or maximum connect attempts (TCP) was reached. NoClusterFound NC Upstream cluster not found. DurationTimeout DT When a request or connection exceeded max_connection_duration or max_downstream_connection_duration . HTTP only ...

August 21, 2024 · 2 min · 351 words · Joey

Google I/O connection 2024

进场 Google Cloud 最新动态 在GoogleCloud上用Gemini构建web应用 使用数据库构建生成式AI应用 午餐 使用Ray 超越RAG Firebase

August 8, 2024 · 1 min · 62 words · Joey

图数据库

核心概念 顶点vertex 边edge cypher查询语言 主要选型 apache AGE neo4j 101 基于apache AGE的基础测试 -- 开启 LOAD 'age'; SET search_path = ag_catalog, "$user", public; SELECT * FROM ag_catalog.drop_graph('geae', true); SELECT create_graph('geae'); SELECT * FROM cypher('geae', $$ CREATE (i1:Invoice {id:'123', name: '发票1', code: 'B1'}), (i2:Invoice {name: '发票2', code:'B2'}), (f1:Form {name: "单据1", comment: "发票:B1"}), (f2:Form {name: "单据2", comment: "发票:B2"}), (f3:Form {name: "单据3", comment: "发票:B3"}) $$) as (a agtype); SELECT * FROM cypher('geae', $$ MATCH (a:Invoice), (b:Form) WHERE b.comment contains a.code AND b.xxx = a.ccc CREATE (a)-[e:包含 {property:a.property + '<->' + b.property}]->(b) RETURN e $$) as (e agtype); SELECT * from cypher('geae', $$ MATCH (V)-[R:包含]-(V2) RETURN V,R,V2 $$) as (V agtype, R agtype, V2 agtype); ...

July 31, 2024 · 1 min · 302 words · Joey

明史 - 世宗

世宗一

July 31, 2024 · 1 min · 3 words · Joey