# range

Published articles for range.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Introducing IP Allowlisting

DevFeed: [Introducing IP Allowlisting](<https://devfeed.tech/articles/introducing-ip-allowlisting-16082.md>)

Original publisher: [Read original article](<https://postmarkapp.com/blog/restrict-email-sending-api-with-ip-allowlisting>)

Author: Postmark team (fdossetto+postmark@activecampaign.com)

Published: 2026-09-08T17:37:00Z

Content type: release

Language: en

Sources: [Postmark (en-US)](<https://devfeed.tech/sources/postmark-en-us.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [API](<https://devfeed.tech/topics/api.md>), [Network](<https://devfeed.tech/topics/network.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ip](<https://devfeed.tech/tags/ip.md>), [nat](<https://devfeed.tech/tags/nat.md>), [network](<https://devfeed.tech/tags/network.md>), [product-news](<https://devfeed.tech/tags/product-news.md>), [protection](<https://devfeed.tech/tags/protection.md>), [range](<https://devfeed.tech/tags/range.md>), [request](<https://devfeed.tech/tags/request.md>), [security](<https://devfeed.tech/tags/security.md>), [token](<https://devfeed.tech/tags/token.md>)

### AI overview

Postmark introduces IP Allowlisting, a security feature that restricts email sending through the Postmark API to up to 10 configured IP ranges in CIDR format. Requests from outside the allowed ranges are rejected with a 403 response. The ranges can be configured at the Server or account level, with Server settings overriding account settings.

### Source excerpt

Good security is layered and each layer does a job the others can't. Scoping a token to a Server limits what it reaches. Rotating a token limits how long it lasts. Neither can say anything about where a request came from. We've been hard at work to ship a new layer of protection that can. IP Allowlisting is a new Postmark security feature that lets you name the infrastructure your email should come from. It's available now on all Postmark plans at no extra cost. It's off until you turn it on. How IP Allowlisting works You add up to 10 IP ranges, in CIDR format, that are allowed to send email using the Postmark API. Send requests from outside those ranges are rejected with a 403 status code that includes the IP the request came from. You can set your ranges in two places: On a Server. The ranges apply to that Server, covering every Message Stream on it. This is where we'd suggest starting. On your account. The ranges apply to every Server you have. When a Server has ranges of its own they will override account level settings. That's it! A straightforward security control to protect your API sending. Protect individual Servers or across your account. Set your Allowlist ranges on the account or Server. If you don't write CIDR blocks often, it's a quick 30 seconds to get familiar with them and the correct notation. CIDR blocks allow you to enable a grouped collection of IP addresses (aka ranges.) A CIDR block is an IP address followed by a suffix that says how many addresses it covers. The smaller the suffix, the wider the range: 198.51.100.24/32 one address, and only that address 203.0.113.0/24 256 addresses: 203.0.113.0 through 203.0.113.255 203.0.0.0/16 65,536 addresses: 203.0.0.0 through 203.0.255.255 So a /32 pins the allowlist to a single machine, and a /24 covers a subnet. Most teams end up somewhere in that span. Where you find your own ranges depends on how you send. A single VM has a static public IP you can read off your provider's dashboard. Cloud workloads

## Building a DIY handheld thermal camera for work and play

DevFeed: [Building a DIY handheld thermal camera for work and play](<https://devfeed.tech/articles/building-a-diy-handheld-thermal-camera-for-work-and-play-13651.md>)

Original publisher: [Read original article](<https://blog.arduino.cc/2026/09/03/building-a-diy-thermal-camera-for-work-and-play/>)

Author: Arduino Team

Published: 2026-09-03T18:19:43Z

Content type: tutorial

Language: en

Sources: [Arduino Blog](<https://devfeed.tech/sources/arduino-blog.md>)

Topics: [Arduino](<https://devfeed.tech/topics/arduino.md>), [data](<https://devfeed.tech/topics/data.md>), [Image](<https://devfeed.tech/topics/image.md>), [3D](<https://devfeed.tech/topics/3d.md>), [User interface design](<https://devfeed.tech/topics/ui-design.md>)

Tags: [3d-printed](<https://devfeed.tech/tags/3d-printed.md>), [arduino](<https://devfeed.tech/tags/arduino.md>), [dfrobot](<https://devfeed.tech/tags/dfrobot.md>), [display](<https://devfeed.tech/tags/display.md>), [diy](<https://devfeed.tech/tags/diy.md>), [diy-thermal-camera](<https://devfeed.tech/tags/diy-thermal-camera.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [range](<https://devfeed.tech/tags/range.md>), [thermal-camera](<https://devfeed.tech/tags/thermal-camera.md>), [thermal-imaging](<https://devfeed.tech/tags/thermal-imaging.md>), [touchscreen](<https://devfeed.tech/tags/touchscreen.md>), [uno-r4](<https://devfeed.tech/tags/uno-r4.md>)

### AI overview

This article describes a DIY handheld thermal camera built with an Arduino UNO R4 Minima, a Seeed Studio MLX90640 thermal imaging sensor, and a DFRobot touchscreen. The board reads the sensor's 32x24 infrared data over I2C, processes it into an image, and displays it through a user interface in a 3D-printed enclosure.

### Source excerpt

Thermal cameras are really cool, because they give you the ability to clearly see something we humans usually can't: temperature. It is interesting to look at the world through that lens. Thermal cameras are also very useful when working with anything that involves heat, such as for spotting a leak in an HVAC system or [...] The post Building a DIY handheld thermal camera for work and play appeared first on Arduino Blog.

## 【kube-apiserver】List、Pagination 与一致性 List：continue token 与 etcd Range 成本

DevFeed: [【kube-apiserver】List、Pagination 与一致性 List：continue token 与 etcd Range 成本](<https://devfeed.tech/articles/kube-apiserver-list-pagination-list-continue-token-etcd-range-33962.md>)

Original publisher: [Read original article](<https://quant67.com/post/apiserver/06-list-pagination/06-list-pagination.html>)

Author: Liao Tonglang

Published: 2026-08-28T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [API](<https://devfeed.tech/topics/api.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [version](<https://devfeed.tech/topics/version.md>)

Tags: [410-gone](<https://devfeed.tech/tags/410-gone.md>), [apiserver](<https://devfeed.tech/tags/apiserver.md>), [cacher](<https://devfeed.tech/tags/cacher.md>), [continue-token](<https://devfeed.tech/tags/continue-token.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [etcd-range](<https://devfeed.tech/tags/etcd-range.md>), [http](<https://devfeed.tech/tags/http.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [limit](<https://devfeed.tech/tags/limit.md>), [list](<https://devfeed.tech/tags/list.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [range](<https://devfeed.tech/tags/range.md>), [resourceversion](<https://devfeed.tech/tags/resourceversion.md>), [v1-30-3](<https://devfeed.tech/tags/v1-30-3.md>)

### AI overview

This article examines Kubernetes v1.30.3 List pagination in kube-apiserver, explaining continue-token semantics, limit-and-continue etcd Range behavior, resourceVersion consistency, and the different costs of cacher and etcd3 paths. It also explains how label and field selectors affect scanning and filtering.

### Source excerpt

钉 Kubernetes v1.30.3 List 分页的 continue token 编码语义、limit+continue 多轮 etcd Range 行为、resourceVersion 对一致性语义的影响，以及 label/field selector 在 cacher 与 etcd3 路径上的不同成本。

## 【etcd】Watch 机制：watchableStore、synced/unsynced 与 ErrCompacted

DevFeed: [【etcd】Watch 机制：watchableStore、synced/unsynced 与 ErrCompacted](<https://devfeed.tech/articles/etcd-watch-watchablestore-synced-unsynced-errcompacted-33991.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/09-watch/09-watch.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [apply](<https://devfeed.tech/tags/apply.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [io](<https://devfeed.tech/tags/io.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lag](<https://devfeed.tech/tags/lag.md>), [leader](<https://devfeed.tech/tags/leader.md>), [lease](<https://devfeed.tech/tags/lease.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [notify](<https://devfeed.tech/tags/notify.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [restore](<https://devfeed.tech/tags/restore.md>), [revision](<https://devfeed.tech/tags/revision.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [watch](<https://devfeed.tech/tags/watch.md>), [watchablestore](<https://devfeed.tech/tags/watchablestore.md>)

### AI overview

This article examines the etcd v3.5.33 watchableStore implementation, including synced and unsynced watcher groups, victims caused by backpressure, Apply-time notification, historical synchronization, and the ErrCompacted client resynchronization boundary. It also discusses event ordering, follower watch progress, and interactions with Kubernetes apiserver watch caches.

### Source excerpt

钉 etcd v3.5.33 watchableStore 的 synced/unsynced/victims 三分法、Apply 后 notify 与历史追赶 syncWatchersLoop，以及 CompactRevision 触发 ErrCompacted 时的客户端重同步边界。

## 【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply

DevFeed: [【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply](<https://devfeed.tech/articles/etcd-treeindex-apply-propose-commit-apply-33988.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/06-apply-pipeline/06-apply-pipeline.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [applied-index](<https://devfeed.tech/tags/applied-index.md>), [apply](<https://devfeed.tech/tags/apply.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [index](<https://devfeed.tech/tags/index.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [recovery](<https://devfeed.tech/tags/recovery.md>), [revision](<https://devfeed.tech/tags/revision.md>), [store](<https://devfeed.tech/tags/store.md>), [treeindex](<https://devfeed.tech/tags/treeindex.md>), [txn](<https://devfeed.tech/tags/txn.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This tutorial explains the etcd v3.5.33 apply pipeline from Raft commit to MVCC application. It covers the separation between propose, commit, and apply; the roles of treeIndex and bbolt; consistent-index updates; watch notification timing; and troubleshooting committed-versus-applied lag.

### Source excerpt

走读 etcd v3.5.33 从 Raft commit 到 MVCC apply 的串行管道：treeIndex 与 bbolt 分工、consistent index、watchableStore 通知触发点，以及 committed/applied 分列排障。

## A revised algorithm for converting Gregorian dates to day counts

DevFeed: [A revised algorithm for converting Gregorian dates to day counts](<https://devfeed.tech/articles/counting-the-days-revisited-36232.md>)

Original publisher: [Read original article](<https://dotat.at/@/2026-08-09-rata-die.html>)

Published: 2026-08-09T02:29:48Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [DateTime](<https://devfeed.tech/topics/datetime.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [function](<https://devfeed.tech/tags/function.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

The article revisits an algorithm for converting Gregorian dates into Julian Day numbers or related day counts such as rata die. It explains the March-based month pattern, leap-year corrections, integer arithmetic, and limitations caused by overflow in the output data type.

### Source excerpt

Many years ago I wrote about how to convert Gregorian dates to Julian Day numbers or similar counts such as rata die as used in Calendrical Calculations. This algorithm is the core of C's mktime() function that converts a broken-down date-time into linear time_t. I recently learned from Ben Joffe that I was missing a few tricks, and my old code wasn't as good as it could have been. Here's a better version (using conventional not C numbering): if m > 2 { m -= 2; } else { m += 10; y -= 1; } y*365 + y/4 - y/100 + y/400 + m*979/32 + d - 336 the main idea Julian years Gregorian correction the month pattern the epoch domains and ranges leap year test length of month the main idea There's a helpful coincidence in the Gregorian calendar. Although the month lengths aren't obviously regular, there's a repeating 5 month pattern that becomes easier to see when you start from March, as illustrated by the table below. This pattern resets at the end of February, midway through its third repeat, coincidentally at the same point that leap days occur. Thus the first line of the code above adjusts the month and year numbers so that January and February are counted at the end of the previous year, and the coincidental alignment occurs at the boundary between the adjusted year numbers. I'll explain the details of the adjustment as I discuss the relevant parts of the second line March 31 days April 30 days May 31 days June 30 days July 31 days August 31 days September 30 days October 31 days November 30 days December 31 days January 31 days February 28 or 29 Julian years The first part of the main formula counts the number of days before the start of year y, in terms of normal years and leap days. y * 365 + y / 4 The adjustment subtracts one from the year in January and February. The effect is that the leap day in year 4 is counted as a day before the start of the adjusted beginning of year 4, i.e. before March, i.e. exactly the right place. I previously combined this part of the express

## 【TiKV / HTAP 内核】Region - Multi-Raft - PD - Percolator - TiFlash

DevFeed: [【TiKV / HTAP 内核】Region - Multi-Raft - PD - Percolator - TiFlash](<https://devfeed.tech/articles/tikv-htap-region-multi-raft-pd-percolator-tiflash-33977.md>)

Original publisher: [Read original article](<https://quant67.com/post/db/tikv-htap/index.html>)

Author: Liao Tonglang

Published: 2026-07-16T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [Raft](<https://devfeed.tech/topics/raft.md>), [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [etcd](<https://devfeed.tech/topics/etcd.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-kv](<https://devfeed.tech/tags/distributed-kv.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [htap](<https://devfeed.tech/tags/htap.md>), [learner](<https://devfeed.tech/tags/learner.md>), [multi-raft](<https://devfeed.tech/tags/multi-raft.md>), [pd](<https://devfeed.tech/tags/pd.md>), [percolator](<https://devfeed.tech/tags/percolator.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [region](<https://devfeed.tech/tags/region.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>), [snapshot](<https://devfeed.tech/tags/snapshot.md>), [split](<https://devfeed.tech/tags/split.md>), [sql](<https://devfeed.tech/tags/sql.md>), [storage](<https://devfeed.tech/tags/storage.md>), [tidb](<https://devfeed.tech/tags/tidb.md>), [tiflash](<https://devfeed.tech/tags/tiflash.md>), [tikv](<https://devfeed.tech/tags/tikv.md>), [tso](<https://devfeed.tech/tags/tso.md>)

### AI overview

This article series explains TiKV 7.x/8.x internals through Region modeling, Multi-Raft replication, raftstore apply, RocksDB column families, PD and TSO scheduling, Percolator transactions, coprocessor boundaries, and TiFlash Learner freshness. It also compares selected aspects with etcd and CockroachDB.

### Source excerpt

补齐 RocksDB 单 Region、Raft 协议与 HTAP 范式之间的工程链路：以 TiKV 7.x/8.x 拆解 Region、Multi-Raft、raftstore、PD/TSO 与 Percolator 事务，并以 TiFlash Learner 收束新鲜度；CockroachDB 对照与选型。

## HTTP 206 Partial Content Explained

DevFeed: [HTTP 206 Partial Content Explained](<https://devfeed.tech/articles/http-206-partial-content-explained-40155.md>)

Original publisher: [Read original article](<https://blog.j2sw.com/inetarch/http-206-partial-content-explained/>)

Author: j2sw

Published: 2026-06-26T11:37:15Z

Content type: tutorial

Language: en

Sources: [Justin Wilson (j2sw)](<https://devfeed.tech/sources/justin-wilson-j2sw.md>)

Topics: [HTTP](<https://devfeed.tech/topics/http.md>), [client](<https://devfeed.tech/topics/client.md>), [browser](<https://devfeed.tech/topics/browser.md>), [file](<https://devfeed.tech/topics/file.md>), [servers](<https://devfeed.tech/topics/servers.md>), [Cache](<https://devfeed.tech/topics/cache.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [cache](<https://devfeed.tech/tags/cache.md>), [cdn](<https://devfeed.tech/tags/cdn.md>), [client](<https://devfeed.tech/tags/client.md>), [file](<https://devfeed.tech/tags/file.md>), [http](<https://devfeed.tech/tags/http.md>), [http-206](<https://devfeed.tech/tags/http-206.md>), [http-codes](<https://devfeed.tech/tags/http-codes.md>), [internet-architecture](<https://devfeed.tech/tags/internet-architecture.md>), [large-files](<https://devfeed.tech/tags/large-files.md>), [range](<https://devfeed.tech/tags/range.md>), [request](<https://devfeed.tech/tags/request.md>), [server](<https://devfeed.tech/tags/server.md>), [video](<https://devfeed.tech/tags/video.md>), [web-servers](<https://devfeed.tech/tags/web-servers.md>), [web-troubleshooting](<https://devfeed.tech/tags/web-troubleshooting.md>)

### AI overview

This tutorial explains HTTP 206 Partial Content, a successful response used when a client requests only part of a file or other resource. It describes byte-range requests, the Range and Content-Range headers, and uses such as video playback, resumable downloads, and cache or CDN handling.

### Source excerpt

A browser does not always need the whole file at once. Sometimes it only needs a slice of the file. That slice might be the next part of a video or a chunk of a large object sitting behind a CDN. When that happens, the client can request a byte range instead of requesting the ... Read more The post HTTP 206 Partial Content Explained appeared first on Justin Wilson (j2sw).

## Range Tombstone Conversion: Faster Scans Over Long Runs of Deletes

DevFeed: [Range Tombstone Conversion: Faster Scans Over Long Runs of Deletes](<https://devfeed.tech/articles/range-tombstone-conversion-faster-scans-over-long-runs-of-deletes-22402.md>)

Original publisher: [Read original article](<http://rocksdb.org/blog/2026/06/22/range-tombstone-conversion.html>)

Author: Josh Kang

Published: 2026-06-22T00:00:00Z

Content type: article

Language: en

Sources: [RocksDB](<https://devfeed.tech/sources/rocksdb.md>)

Topics: [Optimization](<https://devfeed.tech/topics/optimization.md>), [rocksdb](<https://devfeed.tech/topics/rocksdb.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [conversion](<https://devfeed.tech/tags/conversion.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [range](<https://devfeed.tech/tags/range.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>)

### AI overview

This article explains a RocksDB optimization that converts contiguous point tombstones into a range tombstone during scans. The approach allows scans to skip a run of deleted entries in one step instead of processing each tombstone individually.

### Source excerpt

RocksDB has historically been known for poor performance when tombstones accumulate. This has become a common problem within Meta, and the community has raised it as well. Here, we introduce an optimization that attempts to convert contiguous tombstones into a range tombstone during scans. As a result, instead of skipping through N tombstones, we only need to skip through a single range tombstone. Background: point tombstones and range tombstones RocksDB is an LSM-tree, so a delete does not erase data in place. It writes a tombstone: a marker that shadows older values. A point tombstone (from Delete or SingleDelete) shadows exactly one key, while a range tombstone (from DeleteRange) shadows an entire half-open key range [start, end) with a single entry. Because newer data (usually) sits above older data in the tree, a read merges from the top down and takes the first entry it finds for a key, so a tombstone at an upper level hides any value for that key, or for any key in a range tombstone's span, at the levels below. Point and range tombstones hide the values below them. The scan steps over each point tombstone but skips the range tombstone in one hop, and only the live keys (a, e, j) are returned to the user. In both cases the space is reclaimed only later, during compaction, and only once the tombstone reaches the bottommost level with no live snapshot still needing it. Until then the tombstones sit in the way of reads. A scan never returns a deleted key, but to work out which keys are live it still has to step through every entry in key order. A point tombstone is just an ordinary entry, so the scan walks each one individually, and a run of N point tombstones costs N steps. A range tombstone is different: it is a single entry that covers the whole span, so when a scan reaches it, it can skip straight to the end of the range in one step instead of walking every key inside. Existing solutions A bulk delete leaves a region of the key space full of tombstones, and u

## Advanced Partitioning Strategies for PostgreSQL OLTP and Analytics Datasets at Scale

DevFeed: [Advanced Partitioning Strategies for PostgreSQL OLTP and Analytics Datasets at Scale](<https://devfeed.tech/articles/advanced-partitioning-strategies-for-postgresql-oltp-and-analytics-datasets-at-scale-19107.md>)

Original publisher: [Read original article](<https://severalnines.com/blog/advanced-partitioning-strategies-for-postgresql-oltp-and-analytics-datasets-at-scale/>)

Author: Sucahyo Ardy Prasetiyo

Published: 2026-06-04T09:15:00Z

Content type: tutorial

Language: en

Sources: [SeveralNines](<https://devfeed.tech/sources/severalnines.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [Database](<https://devfeed.tech/topics/database.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [datasets](<https://devfeed.tech/tags/datasets.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [deployment-scaling](<https://devfeed.tech/tags/deployment-scaling.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [range](<https://devfeed.tech/tags/range.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [scale](<https://devfeed.tech/tags/scale.md>)

### AI overview

This practical article explains how PostgreSQL partitioning helps manage very large OLTP and analytics datasets. It covers range, list, and hash partitioning, declarative partitioning, partition pruning, maintenance, retention, vacuuming, and operational scalability, while noting that partitioning does not compensate for poor queries or missing indexes.

### Source excerpt

When PostgreSQL tables are still relatively small, most tasks seem straightforward. You can run queries without thinking too much about indexes, retention jobs are manageable, and even vacuum operations usually stay under control. But things change pretty quickly once tables start growing into hundreds of millions or billions of rows. At that scale, even simple [...] The post Advanced Partitioning Strategies for PostgreSQL OLTP and Analytics Datasets at Scale appeared first on Severalnines.

## PostgreSQL temporal UPDATE and DELETE by range

DevFeed: [PostgreSQL temporal UPDATE and DELETE by range](<https://devfeed.tech/articles/waiting-for-postgresql-19-add-update-delete-for-portion-of-33685.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/04/02/waiting-for-postgresql-19-add-update-delete-for-portion-of/>)

Author: depesz

Published: 2026-04-02T10:51:21Z

Content type: tutorial

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [postgresql 18](<https://devfeed.tech/topics/postgresql-18.md>)

Tags: [delete](<https://devfeed.tech/tags/delete.md>), [period](<https://devfeed.tech/tags/period.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [range](<https://devfeed.tech/tags/range.md>), [temporal](<https://devfeed.tech/tags/temporal.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [update](<https://devfeed.tech/tags/update.md>), [version](<https://devfeed.tech/tags/version.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

This article explains a PostgreSQL patch that extends UPDATE and DELETE for temporal tables, allowing changes or deletions over a specified range or multirange period. The article also notes that the patch was later reverted after discussion.

### Source excerpt

Important update This has been reverted with some discussion. Thanks for ping to mkurz 🙂 On 1st of April 2026, Peter Eisentraut committed patch: Add UPDATE/DELETE FOR PORTION OF This is an extension of the UPDATE and DELETE commands to do a "temporal update/delete" based on a range or multirange column. The user can ... Continue reading "Waiting for PostgreSQL 19 - Add UPDATE/DELETE FOR PORTION OF"

## The new clamp() function in PHP 8.6

DevFeed: [The new clamp() function in PHP 8.6](<https://devfeed.tech/articles/the-new-clamp-function-in-php-8-6-20476.md>)

Original publisher: [Read original article](<https://www.amitmerchant.com/the-clamp-function-in-php-86/>)

Author: Amit Merchant

Published: 2025-12-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Amit Merchant](<https://devfeed.tech/sources/amit-merchant.md>)

Topics: [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Development](<https://devfeed.tech/topics/development.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [function](<https://devfeed.tech/tags/function.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [range](<https://devfeed.tech/tags/range.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial introduces the clamp() function planned for PHP 8.6. It explains how the function constrains a value to an inclusive minimum and maximum, including its behavior when the value is outside the range and when the bounds are invalid. It also covers named parameters and practical use cases such as user input, UI sliders, pagination, rate limiting, dates, geometry, and lexicographic strings.

### Source excerpt

You know how sometimes you want to ensure that a value stays within a specific range? Maybe you're working with user input, configuration values, or any scenario where you need to enforce boundaries.

## Range Syntax for Style Queries

DevFeed: [Range Syntax for Style Queries](<https://devfeed.tech/articles/range-syntax-for-style-queries-28832.md>)

Original publisher: [Read original article](<https://una.im/range-style-queries/>)

Published: 2025-11-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [example](<https://devfeed.tech/tags/example.md>), [function](<https://devfeed.tech/tags/function.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [properties](<https://devfeed.tech/tags/properties.md>), [range](<https://devfeed.tech/tags/range.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

A tutorial on using range syntax in CSS style queries and the if() function. It explains comparisons involving custom properties, literal values, and function results, with examples for responsive components, weather cards, grid placement, and styling effects.

### Source excerpt

Learn how to use the new range syntax for CSS style queries and the if() function.

## DigitalOcean Gradient AI Platform adds image generation, knowledge-base auto-indexing, VPC security, and developer tools

DevFeed: [DigitalOcean Gradient AI Platform adds image generation, knowledge-base auto-indexing, VPC security, and developer tools](<https://devfeed.tech/articles/build-smarter-agents-with-image-generation-auto-indexing-vpc-security-and-new-ai-tools-on-digitalocean-gradienttm-ai-platform-19915.md>)

Original publisher: [Read original article](<https://www.digitalocean.com/blog/new-capabilities-security-developer-tools-gradient-ai-platform>)

Author: Grace Morgan

Published: 2025-10-02T07:12:50Z

Content type: release

Language: en

Sources: [DigitalOcean](<https://devfeed.tech/sources/digitalocean.md>)

Topics: [AI Platform](<https://devfeed.tech/topics/ai-platform.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Digital Ocean](<https://devfeed.tech/topics/digital-ocean.md>), [text-to-image](<https://devfeed.tech/topics/text-to-image.md>), [API](<https://devfeed.tech/topics/api.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [stable-diffusion](<https://devfeed.tech/topics/stable-diffusion.md>), [multimodal](<https://devfeed.tech/topics/multimodal.md>), [Security](<https://devfeed.tech/topics/security.md>), [Image](<https://devfeed.tech/topics/image.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [accelerate](<https://devfeed.tech/tags/accelerate.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-platform](<https://devfeed.tech/tags/ai-platform.md>), [ai-tools](<https://devfeed.tech/tags/ai-tools.md>), [api](<https://devfeed.tech/tags/api.md>), [api-integration](<https://devfeed.tech/tags/api-integration.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [development](<https://devfeed.tech/tags/development.md>), [generation](<https://devfeed.tech/tags/generation.md>), [github](<https://devfeed.tech/tags/github.md>), [image](<https://devfeed.tech/tags/image.md>), [openai](<https://devfeed.tech/tags/openai.md>), [platform](<https://devfeed.tech/tags/platform.md>), [product-updates](<https://devfeed.tech/tags/product-updates.md>), [range](<https://devfeed.tech/tags/range.md>), [text-to-image](<https://devfeed.tech/tags/text-to-image.md>), [vpc](<https://devfeed.tech/tags/vpc.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

DigitalOcean announces new Gradient AI Platform capabilities, including programmatic image generation through the Serverless Inference API, Knowledge Base Auto-Indexing, security controls, and additional developer tools for building AI applications.

### Source excerpt

At Deploy London 2025, we shared the next chapter of the Gradient AI Platform. We're making it easier for developers and businesses to build production-ready AI applications, whether you're experimenting with your first agent or scaling an enterprise workload. Today, in that spirit, we're introducing a new wave of features that expand what you can build with the Gradient AI Platform, give you greater security and control, and accelerate your development workflow. Expanding capabilities for Gradient AI Platform AI applications are becoming more multimodal and data-driven, able to work with text, images, audio, and other formats. With Image Model Support and Knowledge Base Auto-Indexing, these new Gradient AI Platform features make it easier than ever to give your agents a wide range of inputs and knowledge sources. Image Model Support You can now generate images programmatically using text prompts through Gradient AI Platform's Serverless Inference API, powered by OpenAI's gpt-image-1 model. This is the platform's first non-text modality (with more coming soon), expanding our capabilities from text-only to include text-to-image generation. Text-to-image generation - Generate images directly via the Serverless Inference API. API integration - OpenAI compatible using the image generation endpoint. For code examples and setup instructions, check out the DigitalOcean Gradient AI starter kit on GitHub. Unified billing - Image generation charges appear on your DigitalOcean account alongside other services. Developer-first workflow - Direct API access without requiring UI-based tools or self-hosting. Enterprise authentication - Use Model Access Keys for secure access. With this capability, you can create images using natural language prompts for projects such as content generation, marketing assets, product imagery, and more. Get started with Image Model Support -> Knowledge Base Auto-Indexing Keep your agents up to date without the manual work. With auto-indexing, new and u

## 5 to 18: Why Your Count Might Be Off by One

DevFeed: [5 to 18: Why Your Count Might Be Off by One](<https://devfeed.tech/articles/5-to-18-why-your-count-might-be-off-by-one-33310.md>)

Original publisher: [Read original article](<https://ruslanspivak.com/bb07/>)

Author: Ruslan Spivak

Published: 2025-08-19T15:37:00Z

Content type: tutorial

Language: en

Sources: [Ruslan Spivak](<https://devfeed.tech/sources/ruslan-spivak.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

A tutorial explains how to count integers in an inclusive range using b - a + 1. It uses the range from 5 to 18 to show why subtracting the endpoints alone produces an off-by-one error, then connects the mistake to dates, strings, workout plans, floors, and loop boundaries in code.

### Source excerpt

Quick question: How many numbers are there from 5 to 18, including both ends? Your first instinct might be to subtract: 18 - 5 = 13 Feels right. But it's wrong. It's a small thing, and kind of basic, but this mistake got me more times than I'd like ...

## Implementing Unsure Calculator in 100 lines of Haskell

DevFeed: [Implementing Unsure Calculator in 100 lines of Haskell](<https://devfeed.tech/articles/implementing-unsure-calculator-in-100-lines-of-haskell-27917.md>)

Original publisher: [Read original article](<http://alt-romes.github.io/posts/2025-04-25-unsure-calculator-in-100-lines-of-haskell.html>)

Published: 2025-04-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Romes' Musings](<https://devfeed.tech/sources/romes-musings.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Development](<https://devfeed.tech/topics/development.md>), [math](<https://devfeed.tech/topics/math.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [expression](<https://devfeed.tech/tags/expression.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [list](<https://devfeed.tech/tags/list.md>), [monad](<https://devfeed.tech/tags/monad.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [operations](<https://devfeed.tech/tags/operations.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

This tutorial implements an Unsure Calculator in Haskell. It introduces a range operator for uncertain values, models calculations with a probability monad and normal distributions, samples results using pseudo-randomness, and builds an embedded calculator expression language.

### Source excerpt

Contents 1 Unsure Calculator 1.1 Sampling it up 1.2 Calculator Expressions 1.3 Showing up 1.4 Conclusion 1 Unsure Calculator The recently trendy Unsure Calculator makes reasoning about numbers with some uncertainty just as easy as calculating with specific numbers. The key idea is to add a new "range" operator (written ~) to the vocabulary of a standard calculator. The range x~y denotes that a real value is uncertain, but we are 95% sure that it falls between x and y1. Reading the notation is easy: when you see 10~15, you say: "ten to fifteen". Arithmetic operations and friends (e.g. sin, or log) transparently operate on ranges and literal numbers alike. Calculation results in a plot with a range of values that the input expression can take, and with what frequency. The motivation behind the original article is neat, so I'll just recommend you read it there to learn how and why you'd use such a calculator. Here's a real life example they used: 1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 Now, let's implement it. 1.1 Sampling it up Summon a probability monad from the void2. data Dist a where Return :: a -> Dist a Bind :: Dist b -> (b -> Dist a) -> Dist a Normal :: Double -> Double -> Dist Double instance Monad Dist where (>>=) = Bind instance Applicative Dist where pure = Return; (<*>) = ap instance Functor Dist where fmap = liftM The monad instance is free: pure = Return and (>>=) = Bind. The Normal constructor denotes a normal distribution given the standard deviation and mean. With do-notation we can easily construct a complex tree mixing Returns, Binds, and Normals. For instance: d = do s <- Normal 0 1 return (5 + s) desugars to d = Bind (Normal 0 1) (\s -> Return (5 + s)) Then, embue meaning onto a Dist a by allowing an a to be sampled according to the distribution the Dist represents. We use StdGen from random as a source of uniform pseudo-randomness: sample :: StdGen -> Dist a -> a sample g d = case d of Return x -> x Normal mean std_dev -> n1 * std_dev

## Mesh Gradients in Jetpack Compose

DevFeed: [Mesh Gradients in Jetpack Compose](<https://devfeed.tech/articles/mesh-gradients-in-jetpack-compose-25792.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/mesh-gradients-in-jetpack-compose/>)

Author: sinasamaki

Published: 2025-02-07T19:02:29Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [compose](<https://devfeed.tech/tags/compose.md>), [design](<https://devfeed.tech/tags/design.md>), [experiment](<https://devfeed.tech/tags/experiment.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implement](<https://devfeed.tech/tags/implement.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [mesh](<https://devfeed.tech/tags/mesh.md>), [performance](<https://devfeed.tech/tags/performance.md>), [points](<https://devfeed.tech/tags/points.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

A tutorial on using a modifier in Jetpack Compose to create and animate mesh gradients from colored points. It explains point placement, smoothing, axis-specific resolution, and the performance trade-offs of higher resolution.

### Source excerpt

Learn how to implement beautiful Mesh Gradients on Android

## Finding near-duplicates with Jaccard similarity and MinHash

DevFeed: [Finding near-duplicates with Jaccard similarity and MinHash](<https://devfeed.tech/articles/finding-near-duplicates-with-jaccard-similarity-and-minhash-21952.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/fuzzy-dedup/>)

Author: Nelson Elhage

Published: 2024-07-03T23:00:00Z

Content type: tutorial

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [dataset](<https://devfeed.tech/topics/dataset.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [dataset](<https://devfeed.tech/tags/dataset.md>), [pairs](<https://devfeed.tech/tags/pairs.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [range](<https://devfeed.tech/tags/range.md>), [scale](<https://devfeed.tech/tags/scale.md>)

### AI overview

This article explains approximate document deduplication using Jaccard similarity and the MinHash approximation technique. It discusses defining similarity between document pairs, setting a threshold for approximate duplicates, and why approximate similarity is not transitive.

### Source excerpt

Suppose we have a large collection of documents, and we wish you identify which documents are approximately the same as each other. For instance, we may have crawled the web over some period of time, and expect to have fetched the "same page" several times, but to see slight differences in metadata, or that we have several revisions of a page following small edits. In this post I want to explore the method of approximate deduplication via Jaccard similarity and the MinHash approximation trick.

## Faster Dynamically Quantized Inference with XNNPack

DevFeed: [Faster Dynamically Quantized Inference with XNNPack](<https://devfeed.tech/articles/faster-dynamically-quantized-inference-with-xnnpack-7410.md>)

Original publisher: [Read original article](<https://blog.tensorflow.org/2024/04/faster-dynamically-quantized-inference-with-xnnpack.html>)

Author: TensorFlow Blog (noreply@blogger.com)

Published: 2024-04-09T16:00:00Z

Content type: article

Language: en

Sources: [The TensorFlow Blog](<https://devfeed.tech/sources/the-tensorflow-blog.md>)

Topics: [Inference Performance](<https://devfeed.tech/topics/inference-performance.md>), [quantization](<https://devfeed.tech/topics/quantization.md>), [TensorFlow Lite](<https://devfeed.tech/topics/tensorflow-lite.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [model-deployment](<https://devfeed.tech/topics/model-deployment.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [announcement](<https://devfeed.tech/tags/announcement.md>), [article](<https://devfeed.tech/tags/article.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [inference](<https://devfeed.tech/tags/inference.md>), [inference-performance](<https://devfeed.tech/tags/inference-performance.md>), [learn](<https://devfeed.tech/tags/learn.md>), [ml](<https://devfeed.tech/tags/ml.md>), [performance](<https://devfeed.tech/tags/performance.md>), [precision](<https://devfeed.tech/tags/precision.md>), [quantization](<https://devfeed.tech/tags/quantization.md>), [range](<https://devfeed.tech/tags/range.md>), [scale](<https://devfeed.tech/tags/scale.md>), [tensorflow](<https://devfeed.tech/tags/tensorflow.md>), [tensorflow-lite](<https://devfeed.tech/tags/tensorflow-lite.md>), [tensors](<https://devfeed.tech/tags/tensors.md>)

### AI overview

This article explains how dynamic range quantization for XNNPack's Fully Connected and Convolution 2D operators improves CPU inference performance in TensorFlow Lite. The approach quantizes weights to 8-bit integers during model conversion and dynamically quantizes activations during inference, delivering most of the performance benefits of full quantization while retaining higher overall accuracy. The article reports a fourfold performance improvement over the single-precision baseline and describes how this can enable AI-powered features on older and lower-tier devices.

### Source excerpt

Posted by Alan Kelly, Software Engineer We are excited to announce that XNNPack's Fully Connected and Convolution 2D operators now support dynamic range quantization. XNNPack is TensorFlow Lite's CPU backend and CPUs deliver the widest reach for ML inference and remain the default target for TensorFlow Lite. Consequently, improving CPU inference performance is a top priority. We quadrupled inference performance in TensorFlow Lite's XNNPack backend compared to the single precision baseline by adding support for dynamic range quantization to the Fully Connected and Convolution operators. This means that more AI powered features may be deployed to older and lower tier devices. Previously, XNNPack offered users the choice between either full integer quantization, where the weights and activations are stored as signed 8-bit integers, or half-precision (fp16) or single-precision (fp32) floating-point inference. In this article we demonstrate the benefits of dynamic range quantization. Dynamic Range Quantization Dynamically quantized models are similar to fully-quantized models in that the weights for the Fully Connected and Convolution operators are quantized to 8-bit integers during model conversion. All other tensors are not quantized, they remain as float32 tensors. During model inference, the floating-point layer activations are converted to 8-bit integers before being passed to the Fully Connected and Convolution operators. The quantization parameters (the zero point and scale) for each row of the activation tensor are calculated dynamically based on the observed range of activations. This maximizes the accuracy of the quantization process as the activations make full use of the 8 quantized bits. In fully-quantized models, these parameters are fixed during model conversion, based on the range of the activation values observed using a representative dataset. The second difference between full quantization and dynamic range quantization is that the output of the Fully

## Just the right time date predicates with Iceberg

DevFeed: [Just the right time date predicates with Iceberg](<https://devfeed.tech/articles/just-the-right-time-date-predicates-with-iceberg-8713.md>)

Original publisher: [Read original article](<https://trino.io/blog/2023/04/11/date-predicates.html>)

Author: Marius Grama

Published: 2023-04-11T00:00:00Z

Content type: article

Language: en

Sources: [Trino Blog](<https://devfeed.tech/sources/trino-blog.md>)

Topics: [Apache Iceberg](<https://devfeed.tech/topics/apache-iceberg.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [DateTime](<https://devfeed.tech/topics/datetime.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [cast](<https://devfeed.tech/tags/cast.md>), [data-lake](<https://devfeed.tech/tags/data-lake.md>), [expression](<https://devfeed.tech/tags/expression.md>), [filter](<https://devfeed.tech/tags/filter.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [partitioning](<https://devfeed.tech/tags/partitioning.md>), [performance](<https://devfeed.tech/tags/performance.md>), [range](<https://devfeed.tech/tags/range.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains how date predicates can be optimized when querying Iceberg tables in a data lake. It covers partition pruning, hidden partitioning, constant folding, predicate pushdown, range predicates, and casting to help Trino avoid scanning irrelevant data and improve query performance.

### Source excerpt

In the data lake world, data partitioning is a technique that is critical to the performance of read operations. In order to avoid scanning large amounts of data accidentally, and also to limit the number of partitions that are being processed by a query, a query engine must push down constant expressions when filtering partitions.

## Evaluating Equality Predicates with RangeBitmap

DevFeed: [Evaluating Equality Predicates with RangeBitmap](<https://devfeed.tech/articles/evaluating-equality-predicates-25641.md>)

Original publisher: [Read original article](<https://richardstartin.github.io/posts/range-bitmap-equality-queries>)

Author: Richard Startin's Blog

Published: 2022-12-18T00:00:00Z

Content type: article

Language: en

Sources: [Richard Startin's Blog](<https://devfeed.tech/sources/richard-startin-s-blog.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Library](<https://devfeed.tech/topics/library.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [data observability](<https://devfeed.tech/topics/data-observability.md>)

Tags: [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [cardinality](<https://devfeed.tech/tags/cardinality.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [java](<https://devfeed.tech/tags/java.md>), [library](<https://devfeed.tech/tags/library.md>), [memory](<https://devfeed.tech/tags/memory.md>), [pinot](<https://devfeed.tech/tags/pinot.md>), [range](<https://devfeed.tech/tags/range.md>), [roaring](<https://devfeed.tech/tags/roaring.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

This article evaluates equality and inequality queries using RangeBitmap in the RoaringBitmap library. It explains how the enhancement can support equality filtering as a compact inverted-index alternative, including as a fallback for Apache Pinot range indexes, and reports faster selection than a stream-based scan in the described example while using less space than some inverted indexes.

### Source excerpt

I have just implemented support for (in)equality queries against a RangeBitmap, a succinct data structure in the RoaringBitmap library which supports range queries. RangeBitmap was designed to support range queries in Apache Pinot (more details here) but this enhancement would allow a range index to be used as a fallback for (in)equality queries in case nothing better is available. Supporting (in)equality queries allows a RangeBitmap to be used as a kind of compact inverted index, trading space for time, capable of supporting high cardinality gracefully. Since RangeBitmap supports memory mapping from files, I think that it could be used for data engineering beyond Apache Pinot.

## ESP Insights : Custom Dashboards

DevFeed: [ESP Insights : Custom Dashboards](<https://devfeed.tech/articles/esp-insights-custom-dashboards-13840.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/esp-insights-custom-dashboards/>)

Author: John Lee

Published: 2022-08-16T00:00:00Z

Content type: article

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [dashboards](<https://devfeed.tech/topics/dashboards.md>), [data](<https://devfeed.tech/topics/data.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [custom-dashboard](<https://devfeed.tech/tags/custom-dashboard.md>), [esp-insights](<https://devfeed.tech/tags/esp-insights.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [espinsights](<https://devfeed.tech/tags/espinsights.md>), [iot](<https://devfeed.tech/tags/iot.md>), [logs](<https://devfeed.tech/tags/logs.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [observability](<https://devfeed.tech/tags/observability.md>), [range](<https://devfeed.tech/tags/range.md>), [search](<https://devfeed.tech/tags/search.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

This article describes custom dashboards in ESP Insights. Users can save multiple dashboard views with preserved search filters and date ranges for purposes such as diagnosing crashing or rebooting devices, analyzing online devices, and filtering devices by firmware project.

### Source excerpt

The core purpose of ESP Insights Dashboard has always been to help quickly identify a group of nodes which are showing similar behaviour patterns with the help of powerful search filters. Further it helps the user to reach to a particular node and help diagnose the reason behind the node showing a certain behaviour. The user can then check the event logs or point in time metrics and system variable values and correlate any diagnostic information at hand.

## RangeBitmap - How range indexes work in Apache Pinot

DevFeed: [RangeBitmap - How range indexes work in Apache Pinot](<https://devfeed.tech/articles/rangebitmap-how-range-indexes-work-in-apache-pinot-25642.md>)

Original publisher: [Read original article](<https://richardstartin.github.io/posts/range-bitmap-index>)

Author: Richard Startin's Blog

Published: 2022-03-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Richard Startin's Blog](<https://devfeed.tech/sources/richard-startin-s-blog.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [databases](<https://devfeed.tech/tags/databases.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [pinot](<https://devfeed.tech/tags/pinot.md>), [range](<https://devfeed.tech/tags/range.md>), [roaring](<https://devfeed.tech/tags/roaring.md>), [routing](<https://devfeed.tech/tags/routing.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>)

### AI overview

This article explains the requirements and query-performance constraints for range indexes on unsorted numeric data in a column store such as Apache Pinot. It discusses segment-level data structures and how servers and brokers participate in pruning, routing, and result merging.

### Source excerpt

Suppose you have an unsorted array of numeric values and need to find the set of indexes of all the values which are within a range. The range predicate will be evaluated many times, so any time spent preprocessing will be amortised, and non-zero spatial overhead is expected. If the data were sorted, this would be very easy, but the indexes of the values have meaning so the data cannot be sorted. To complicate the problem slightly, the set of indexes must be produced in sorted order.

## Golang for-range 内部实现

DevFeed: [Golang for-range 内部实现](<https://devfeed.tech/articles/golang-for-range-40986.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/golang-range-internal/>)

Author: Joway

Published: 2021-01-20T00:00:00Z

Content type: tutorial

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Go](<https://devfeed.tech/topics/go.md>)

Tags: [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [range](<https://devfeed.tech/tags/range.md>), [tech](<https://devfeed.tech/tags/tech.md>), [type](<https://devfeed.tech/tags/type.md>)

### AI overview

The article explains how Go's for-range loop is compiled and why it can be much slower than index-based iteration when iterated elements are expensive to copy. It notes that range saves the element length, copies values, and reuses loop variables, recommending a standard for loop for large copy-heavy element types.

### Source excerpt

最近在写一个编解码的功能时发现使用 Golang for-range 会存在很大的性能问题。 假设我们现在有一个 Data 类型表示一个数据包，我们从网络中获取到了 [1024]Data 个数据包，此时我们需要对其进行遍历操作。一般我们会使用 for-i++ 或者 for-range 两种方式遍历，如下代码： type Data [256]byte func BenchmarkForStruct(b *testing.B) { var items [1024]Data var result Data for i := 0; i < b.N; i++ { for k := 0; k < len(items); k++ { result = items[k] } } _ = result } func BenchmarkRangeStruct(b *testing.B) { var items [1024]Data var result Data for i := 0; i < b.N; i++ { for _, item := range items { result = item } } _ = result } 输出结果：

[Next page](<https://devfeed.tech/tags/range.md?cursor=WyIyMDIxLTAxLTIwVDAwOjAwOjAwKzAwOjAwIiwgIjM4ZGFmNTcxLTdiYWEtNGJmMC04ZDEzLWEzMGIwZDIxNmY3YSJd>)