7 lines
61 KiB
HTML
7 lines
61 KiB
HTML
<html lang=en op=submitted><!--
|
||
Page saved with SingleFile
|
||
url: https://news.ycombinator.com/submitted?id=levkk
|
||
saved date: Tue Feb 24 2026 10:58:52 GMT+0800 (中国标准时间)
|
||
--><meta charset=utf-8><meta name=viewport content="width=device-width, initial-scale=1.0"><style>:root{--sf-img-0: url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMzIgMTYiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMiAyNyAxNC0yOSAxNCAyOXoiIGZpbGw9IiM5OTkiLz48L3N2Zz4=")}</style><style>body{font-family:Verdana,Geneva,sans-serif;font-size:10pt;color:#828282}td{font-family:Verdana,Geneva,sans-serif;font-size:10pt;color:#828282}input{font-family:monospace;font-size:10pt}a:link{color:#000000;text-decoration:none}a:visited{color:#828282;text-decoration:none}.title{font-family:Verdana,Geneva,sans-serif;font-size:10pt;color:#828282;overflow:hidden}.subtext{font-family:Verdana,Geneva,sans-serif;font-size:7pt;color:#828282}.yclinks{font-family:Verdana,Geneva,sans-serif;font-size:8pt;color:#828282}.pagetop{font-family:Verdana,Geneva,sans-serif;font-size:10pt;color:#222222;line-height:12px}.comhead{font-family:Verdana,Geneva,sans-serif;font-size:8pt;color:#828282}.hnname{margin-left:1px;margin-right:5px}#hnmain{min-width:796px}.title a{word-break:break-word}.comment a:link,.comment a:visited{text-decoration:underline}.c00 a:link{color:#000000}.c5a a:link,.c5a a:visited{color:#5a5a5a}.c73 a:link,.c73 a:visited{color:#737373}.c82 a:link,.c82 a:visited{color:#828282}.c88 a:link,.c88 a:visited{color:#888888}.c9c a:link,.c9c a:visited{color:#9c9c9c}.cae a:link,.cae a:visited{color:#aeaeae}.cbe a:link,.cbe a:visited{color:#bebebe}.cce a:link,.cce a:visited{color:#cecece}.cdd a:link,.cdd a:visited{color:#dddddd}.pagetop a:visited{color:#000000}.topsel a:link,.topsel a:visited{color:#ffffff}.subtext a:link,.subtext a:visited{color:#828282}.subtext a:hover{text-decoration:underline}.comhead a:link,.subtext a:visited{color:#828282}.comhead a:hover{text-decoration:underline}.hnmore a:link,a:visited{color:#828282}pre:hover{overflow:auto}.votearrow{width:10px;height:10px;border:0px;margin:3px 2px 6px;background:var(--sf-img-0),linear-gradient(transparent,transparent) no-repeat;background-size:10px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.votearrow{background-size:10px;background-image:var(--sf-img-0),linear-gradient(transparent,transparent)}}@media only screen and (min-width:300px) and (max-width:750px){#hnmain{width:100%;min-width:0}body{padding:0;margin:0;width:100%}td{height:inherit!important}span.pagetop{display:block;margin:3px 5px;font-size:12px;line-height:normal}span.pagetop b{display:block;font-size:15px}.title{font-size:11pt;line-height:14pt}.subtext{font-size:9pt}.votearrow{transform:scale(1.3,1.3);margin-right:6px}.votelinks{min-width:18px}.votelinks a{display:block;margin-bottom:9px}input[type="text"]{font-size:16px;width:90%}}</style><meta name=robots content=noindex><title>levkk's submissions | Hacker News</title><meta name=referrer content=no-referrer><link rel=icon href=data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4IiB2aWV3Qm94PSI0IDQgMTg4IDE4OCIgd2lkdGg9IjE4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im00IDRoMTg4djE4OGgtMTg4eiIgZmlsbD0iI2Y2MCIvPjxwYXRoIGQ9Im03My4yNTIxNzU2IDQ1LjAxIDIyLjc0NzgyNDQgNDcuMzkxMzAwODMgMjIuNzQ3ODI0NC00Ny4zOTEzMDA4M2gxOS41NjU2OTYzMWwtMzQuMzIzNTIwNzEgNjQuNDg2NjE0Njh2NDEuNDkzMzg1MzJoLTE1Ljk4di00MS40OTMzODUzMmwtMzQuMzIzNTIwNzEtNjQuNDg2NjE0Njh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+><link rel=canonical href="https://news.ycombinator.com/submitted?id=levkk"><meta http-equiv=content-security-policy content="default-src 'none'; font-src 'self' data:; img-src 'self' data:; style-src 'unsafe-inline'; media-src 'self' data:; script-src 'unsafe-inline' data:; object-src 'self' data:; frame-src 'self' data:;"><body><center><table id=hnmain border=0 cellpadding=0 cellspacing=0 width=85% bgcolor=#f6f6ef><tbody><tr><td bgcolor=#ff6600><table border=0 cellpadding=0 cellspacing=0 width=100% style=padding:2px><tbody><tr><td style=width:18px;padding-right:4px><a href=https://news.ycombinator.com/><img src=data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4IiB2aWV3Qm94PSI0IDQgMTg4IDE4OCIgd2lkdGg9IjE4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im00IDRoMTg4djE4OGgtMTg4eiIgZmlsbD0iI2Y2MCIvPjxwYXRoIGQ9Im03My4yNTIxNzU2IDQ1LjAxIDIyLjc0NzgyNDQgNDcuMzkxMzAwODMgMjIuNzQ3ODI0NC00Ny4zOTEzMDA4M2gxOS41NjU2OTYzMWwtMzQuMzIzNTIwNzEgNjQuNDg2NjE0Njh2NDEuNDkzMzg1MzJoLTE1Ljk4di00MS40OTMzODUzMmwtMzQuMzIzNTIwNzEtNjQuNDg2NjE0Njh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+ width=18 height=18 style="border:1px white solid;display:block"></a><td style=line-height:12pt;height:10px><span class=pagetop><b class=hnname><a href=https://news.ycombinator.com/news>Hacker News</a></b><a href=https://news.ycombinator.com/newswelcome.html>welcome</a> | <a href=https://news.ycombinator.com/newest>new</a> | <a href="https://news.ycombinator.com/threads?id=cdostan">threads</a> | <a href=https://news.ycombinator.com/front>past</a> | <a href=https://news.ycombinator.com/newcomments>comments</a> | <a href=https://news.ycombinator.com/ask>ask</a> | <a href=https://news.ycombinator.com/show>show</a> | <a href=https://news.ycombinator.com/jobs>jobs</a> | <a href=https://news.ycombinator.com/submit rel=nofollow>submit</a> | <font color=#FFFFFF>levkk's submissions</font></span><td style=text-align:right;padding-right:4px><span class=pagetop><a id=me href="https://news.ycombinator.com/user?id=cdostan">cdostan</a> (<span id=karma>1</span>) | <a id=logout rel=nofollow href="https://news.ycombinator.com/logout?auth=025505045d1988297412d0a373394a79fe9ed9d7&goto=submitted%3Fid%3Dlevkk">logout</a></span></table><tr style=height:10px><tr id=bigbox><td><table border=0 cellpadding=0 cellspacing=0><tbody><tr class="athing submission" id=47123631><td align=right valign=top class=title><span class=rank>1.</span><td valign=top class=votelinks><center><a id=up_47123631 class=clicky href="https://news.ycombinator.com/vote?id=47123631&how=up&auth=a2f89e05f461243c844581bea87ad21be82011e1&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://github.com/pgdogdev/pgdog>Show HN: PgDog – Scale Postgres without changing the app</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=github.com/pgdogdev"><span class=sitestr>github.com/pgdogdev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_47123631>196 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2026-02-23T15:33:24 1771860804"><a href="https://news.ycombinator.com/item?id=47123631">11 hours ago</a></span> <span id=unv_47123631></span> | <a href="https://hn.algolia.com/?query=Show%20HN%3A%20PgDog%20%E2%80%93%20Scale%20Postgres%20without%20changing%20the%20app&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=47123631">45 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=47048265><td align=right valign=top class=title><span class=rank>2.</span><td valign=top class=votelinks><center><a id=up_47048265 class=clicky href="https://news.ycombinator.com/vote?id=47048265&how=up&auth=2e6ca2610627ffc7b0f03ec0190c7785edbfdefe&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href="https://news.ycombinator.com/item?id=47048265">PgDog: Connection pooler, load balancer and sharder for PostgreSQL</a></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_47048265>1 point</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2026-02-17T15:05:55 1771340755"><a href="https://news.ycombinator.com/item?id=47048265">6 days ago</a></span> <span id=unv_47048265></span> | <a href="https://hn.algolia.com/?query=PgDog%3A%20Connection%20pooler%2C%20load%20balancer%20and%20sharder%20for%20PostgreSQL&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=47048265">discuss</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=46035004><td align=right valign=top class=title><span class=rank>3.</span><td valign=top class=votelinks><center><a id=up_46035004 class=clicky href="https://news.ycombinator.com/vote?id=46035004&how=up&auth=6930713bf37114263d5a9dfaaba8f1419374867a&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/shard-your-database>Shard Your Database</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_46035004>1 point</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-11-24T15:16:53 1763997413"><a href="https://news.ycombinator.com/item?id=46035004">3 months ago</a></span> <span id=unv_46035004></span> | <a href="https://hn.algolia.com/?query=Shard%20Your%20Database&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45981116><td align=right valign=top class=title><span class=rank>4.</span><td valign=top class=votelinks><center><a id=up_45981116 class=clicky href="https://news.ycombinator.com/vote?id=45981116&how=up&auth=171f0812b4865ce497e7204099ffc52b9efa0e5e&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/shard-your-database>Shard Your Database</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45981116>3 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-11-19T15:55:43 1763567743"><a href="https://news.ycombinator.com/item?id=45981116">3 months ago</a></span> <span id=unv_45981116></span> | <a href="https://hn.algolia.com/?query=Shard%20Your%20Database&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45968951><td align=right valign=top class=title><span class=rank>5.</span><td valign=top class=votelinks><center><a id=up_45968951 class=clicky href="https://news.ycombinator.com/vote?id=45968951&how=up&auth=81a53dff6f9a9af4d275d87dc22fd616700a6147&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/shard-your-database>Shard Your Database</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45968951>1 point</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-11-18T17:03:03 1763485383"><a href="https://news.ycombinator.com/item?id=45968951">3 months ago</a></span> <span id=unv_45968951></span> | <a href="https://hn.algolia.com/?query=Shard%20Your%20Database&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45362610><td align=right valign=top class=title><span class=rank>6.</span><td valign=top class=votelinks><center><a id=up_45362610 class=clicky href="https://news.ycombinator.com/vote?id=45362610&how=up&auth=e279f15cd9dd669a04c859bb5814eb2ea83f6b2c&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/writing-nothing-but-docs>Writing Nothing but Docs for a Week</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45362610>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-09-24T16:26:46 1758731206"><a href="https://news.ycombinator.com/item?id=45362610">5 months ago</a></span> <span id=unv_45362610></span> | <a href="https://hn.algolia.com/?query=Writing%20Nothing%20but%20Docs%20for%20a%20Week&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45292363><td align=right valign=top class=title><span class=rank>7.</span><td valign=top class=votelinks><center><a id=up_45292363 class=clicky href="https://news.ycombinator.com/vote?id=45292363&how=up&auth=a3613515e1135d94f07abff3ddcb200f015651eb&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://docs.pgdog.dev/features/pub_sub/>Pub/Sub</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45292363>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-09-18T17:20:52 1758216052"><a href="https://news.ycombinator.com/item?id=45292363">5 months ago</a></span> <span id=unv_45292363></span> | <a href="https://hn.algolia.com/?query=Pub%2FSub&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45201046><td align=right valign=top class=title><span class=rank>8.</span><td valign=top class=votelinks><center><a id=up_45201046 class=clicky href="https://news.ycombinator.com/vote?id=45201046&how=up&auth=688e5660dc4e985e59a3d50865822a1010f07723&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://docs.pgdog.dev/features/sharding/2pc/>Two-Phase Commit</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45201046>3 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-09-10T17:35:06 1757525706"><a href="https://news.ycombinator.com/item?id=45201046">5 months ago</a></span> <span id=unv_45201046></span> | <a href="https://hn.algolia.com/?query=Two-Phase%20Commit&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=45201046">2 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45194417><td align=right valign=top class=title><span class=rank>9.</span><td valign=top class=votelinks><center><a id=up_45194417 class=clicky href="https://news.ycombinator.com/vote?id=45194417&how=up&auth=2407fdb6bce7b6f9ca9bb0ce7fffca1288c28024&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://github.com/pgdogdev/pgdog/pull/419 rel=nofollow>Implement two-phase commit (2pc)</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=github.com/pgdogdev"><span class=sitestr>github.com/pgdogdev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45194417>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-09-10T07:30:23 1757489423"><a href="https://news.ycombinator.com/item?id=45194417">5 months ago</a></span> <span id=unv_45194417></span> | <a href="https://hn.algolia.com/?query=Implement%20two-phase%20commit%20%282pc%29&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45128515><td align=right valign=top class=title><span class=rank>10.</span><td valign=top class=votelinks><center><a id=up_45128515 class=clicky href="https://news.ycombinator.com/vote?id=45128515&how=up&auth=a421a49b1c58762d0bac4d76e733ae1dd9d47d2b&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/sharded-primary-keys>Primary Keys in Sharded Databases</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45128515>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-09-04T15:40:53 1757000453"><a href="https://news.ycombinator.com/item?id=45128515">5 months ago</a></span> <span id=unv_45128515></span> | <a href="https://hn.algolia.com/?query=Primary%20Keys%20in%20Sharded%20Databases&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=45065690><td align=right valign=top class=title><span class=rank>11.</span><td valign=top class=votelinks><center><a id=up_45065690 class=clicky href="https://news.ycombinator.com/vote?id=45065690&how=up&auth=d214235ed5c6d6040c99ce1763ea9a7bff149a09&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/plugins-are-back>PgDog adds support for Rust plugins</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_45065690>3 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-08-29T15:52:43 1756482763"><a href="https://news.ycombinator.com/item?id=45065690">5 months ago</a></span> <span id=unv_45065690></span> | <a href="https://hn.algolia.com/?query=PgDog%20adds%20support%20for%20Rust%20plugins&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=44799614><td align=right valign=top class=title><span class=rank>12.</span><td valign=top class=votelinks><center><a id=up_44799614 class=clicky href="https://news.ycombinator.com/vote?id=44799614&how=up&auth=20f707d372e9a142b47b0288ddd525eab4fa14e2&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/scaling-postgres-listen-notify>Scaling Postgres Listen/Notify</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_44799614>1 point</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-08-05T15:51:46 1754409106"><a href="https://news.ycombinator.com/item?id=44799614">6 months ago</a></span> <span id=unv_44799614></span> | <a href="https://hn.algolia.com/?query=Scaling%20Postgres%20Listen%2FNotify&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=44735874><td align=right valign=top class=title><span class=rank>13.</span><td valign=top class=votelinks><center><a id=up_44735874 class=clicky href="https://news.ycombinator.com/vote?id=44735874&how=up&auth=ab3905d5291a77b2bd4d28486adfca2ec356775f&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/sharding-postgres-at-network-speed>Sharding Postgres at Network Speed</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_44735874>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-07-30T15:56:40 1753891000"><a href="https://news.ycombinator.com/item?id=44735874">6 months ago</a></span> <span id=unv_44735874></span> | <a href="https://hn.algolia.com/?query=Sharding%20Postgres%20at%20Network%20Speed&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=44710975><td align=right valign=top class=title><span class=rank>14.</span><td valign=top class=votelinks><center><a id=up_44710975 class=clicky href="https://news.ycombinator.com/vote?id=44710975&how=up&auth=7fa3eeb6c2de59a3da90c4a3a2e8824b5cec71e5&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/resharding-postgres-at-6.5gb-second>Resharding Postgres at 6.5 GB per second</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_44710975>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-07-28T14:02:56 1753711376"><a href="https://news.ycombinator.com/item?id=44710975">7 months ago</a></span> <span id=unv_44710975></span> | <a href="https://hn.algolia.com/?query=Resharding%20Postgres%20at%206.5%20GB%20per%20second&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=44491104><td align=right valign=top class=title><span class=rank>15.</span><td valign=top class=votelinks><center><a id=up_44491104 class=clicky href="https://news.ycombinator.com/vote?id=44491104&how=up&auth=9ed331467707c48bc3664d350b410d834ccb98d4&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/list-and-range-sharding>Sharding multi-tenant Postgres databases</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_44491104>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-07-07T15:01:36 1751900496"><a href="https://news.ycombinator.com/item?id=44491104">7 months ago</a></span> <span id=unv_44491104></span> | <a href="https://hn.algolia.com/?query=Sharding%20multi-tenant%20Postgres%20databases&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=44099187><td align=right valign=top class=title><span class=rank>16.</span><td valign=top class=votelinks><center><a id=up_44099187 class=clicky href="https://news.ycombinator.com/vote?id=44099187&how=up&auth=63a6cfc69183c7d7d47faa7ecb50bc9364624d40&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://github.com/pgdogdev/pgdog>Show HN: PgDog – Shard Postgres without extensions</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=github.com/pgdogdev"><span class=sitestr>github.com/pgdogdev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_44099187>307 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-05-26T16:55:49 1748278549"><a href="https://news.ycombinator.com/item?id=44099187">9 months ago</a></span> <span id=unv_44099187></span> | <a href="https://hn.algolia.com/?query=Show%20HN%3A%20PgDog%20%E2%80%93%20Shard%20Postgres%20without%20extensions&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=44099187">80 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43995188><td align=right valign=top class=title><span class=rank>17.</span><td valign=top class=votelinks><center><a id=up_43995188 class=clicky href="https://news.ycombinator.com/vote?id=43995188&how=up&auth=c04de68bad91fda92ed0d7b4bb90047fc49bde10&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/multi-tenant-pg-can-be-easy>Multi-tenant Postgres can be easy</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43995188>4 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-05-15T14:00:53 1747317653"><a href="https://news.ycombinator.com/item?id=43995188">9 months ago</a></span> <span id=unv_43995188></span> | <a href="https://hn.algolia.com/?query=Multi-tenant%20Postgres%20can%20be%20easy&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43937246><td align=right valign=top class=title><span class=rank>18.</span><td valign=top class=votelinks><center><a id=up_43937246 class=clicky href="https://news.ycombinator.com/vote?id=43937246&how=up&auth=df530f230ced73afc0aeaf58424faf2c2c461553&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/replicating-postgres-production-traffic>Replicating Postgres Production Traffic</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43937246>4 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-05-09T14:34:14 1746801254"><a href="https://news.ycombinator.com/item?id=43937246">9 months ago</a></span> <span id=unv_43937246></span> | <a href="https://hn.algolia.com/?query=Replicating%20Postgres%20Production%20Traffic&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=43937246">2 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43905335><td align=right valign=top class=title><span class=rank>19.</span><td valign=top class=votelinks><center><a id=up_43905335 class=clicky href="https://news.ycombinator.com/vote?id=43905335&how=up&auth=358b3468eea1e835a952603a18ed3b998a7f5be1&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/pgbouncer-vs-pgdog>PgDog vs. PgBouncer</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43905335>3 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-05-06T14:10:57 1746540657"><a href="https://news.ycombinator.com/item?id=43905335">9 months ago</a></span> <span id=unv_43905335></span> | <a href="https://hn.algolia.com/?query=PgDog%20vs.%20PgBouncer&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43845770><td align=right valign=top class=title><span class=rank>20.</span><td valign=top class=votelinks><center><a id=up_43845770 class=clicky href="https://news.ycombinator.com/vote?id=43845770&how=up&auth=1cccc69f0cd6bee56167b8b465a9885685da1b3f&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/sharding-a-real-rails-app>Sharding a Real Rails App</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43845770>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-04-30T14:28:32 1746023312"><a href="https://news.ycombinator.com/item?id=43845770">9 months ago</a></span> <span id=unv_43845770></span> | <a href="https://hn.algolia.com/?query=Sharding%20a%20Real%20Rails%20App&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43844787><td align=right valign=top class=title><span class=rank>21.</span><td valign=top class=votelinks><center><a id=up_43844787 class=clicky href="https://news.ycombinator.com/vote?id=43844787&how=up&auth=afecf556bcf50d6165477d7b7351f1ea11134366&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/sharding-mastodon-part-1>Sharding Mastodon, Part 1</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43844787>4 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-04-30T13:14:08 1746018848"><a href="https://news.ycombinator.com/item?id=43844787">9 months ago</a></span> <span id=unv_43844787></span> | <a href="https://hn.algolia.com/?query=Sharding%20Mastodon%2C%20Part%201&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43762063><td align=right valign=top class=title><span class=rank>22.</span><td valign=top class=votelinks><center><a id=up_43762063 class=clicky href="https://news.ycombinator.com/vote?id=43762063&how=up&auth=5122c88aa0da6a4093808072812b84bd09e447a0&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/building-for-production>Building for Production</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43762063>4 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-04-22T13:40:58 1745329258"><a href="https://news.ycombinator.com/item?id=43762063">10 months ago</a></span> <span id=unv_43762063></span> | <a href="https://hn.algolia.com/?query=Building%20for%20Production&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43693326><td align=right valign=top class=title><span class=rank>23.</span><td valign=top class=votelinks><center><a id=up_43693326 class=clicky href="https://news.ycombinator.com/vote?id=43693326&how=up&auth=98196da394aa772c46aed2825f42d3a3dad6adbd&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/hacking-postgres-wire-protocol>Hacking the Postgres wire protocol</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43693326>229 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-04-15T14:33:10 1744727590"><a href="https://news.ycombinator.com/item?id=43693326">10 months ago</a></span> <span id=unv_43693326></span> | <a href="https://hn.algolia.com/?query=Hacking%20the%20Postgres%20wire%20protocol&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=43693326">50 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43682236><td align=right valign=top class=title><span class=rank>24.</span><td valign=top class=votelinks><center><a id=up_43682236 class=clicky href="https://news.ycombinator.com/vote?id=43682236&how=up&auth=0b90f228e1ba5420a6b376e6c7f064b7d547541e&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/vertical-sharding-sucks>Vertical Sharding Sucks</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43682236>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-04-14T15:16:06 1744643766"><a href="https://news.ycombinator.com/item?id=43682236">10 months ago</a></span> <span id=unv_43682236></span> | <a href="https://hn.algolia.com/?query=Vertical%20Sharding%20Sucks&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43484399><td align=right valign=top class=title><span class=rank>25.</span><td valign=top class=votelinks><center><a id=up_43484399 class=clicky href="https://news.ycombinator.com/vote?id=43484399&how=up&auth=a538fc28d113cf3c15f60afb395697a77100d910&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/sharding-pgvector>Sharding Pgvector</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43484399>86 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-03-26T17:10:30 1743009030"><a href="https://news.ycombinator.com/item?id=43484399">11 months ago</a></span> <span id=unv_43484399></span> | <a href="https://hn.algolia.com/?query=Sharding%20Pgvector&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=43484399">10 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43364668><td align=right valign=top class=title><span class=rank>26.</span><td valign=top class=votelinks><center><a id=up_43364668 class=clicky href="https://news.ycombinator.com/vote?id=43364668&how=up&auth=3820793e0892b0492e81e36df551a1246f1a1d01&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://pgdog.dev/blog/you-can-make-postgres-scale>Making Postgres scale</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=pgdog.dev"><span class=sitestr>pgdog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43364668>225 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-03-14T17:07:11 1741972031"><a href="https://news.ycombinator.com/item?id=43364668">11 months ago</a></span> <span id=unv_43364668></span> | <a href="https://hn.algolia.com/?query=Making%20Postgres%20scale&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=43364668">188 comments</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43030255><td align=right valign=top class=title><span class=rank>27.</span><td valign=top class=votelinks><center><a id=up_43030255 class=clicky href="https://news.ycombinator.com/vote?id=43030255&how=up&auth=eaaad09302464f2dda3e38491a64b8d354beed64&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://levkk.bearblog.dev/working-with-the-postgres-protocol/ rel=nofollow>Working with the Postgres Protocol</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=levkk.bearblog.dev"><span class=sitestr>levkk.bearblog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43030255>3 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-02-12T22:06:17 1739397977"><a href="https://news.ycombinator.com/item?id=43030255">on Feb 12, 2025</a></span> <span id=unv_43030255></span> | <a href="https://hn.algolia.com/?query=Working%20with%20the%20Postgres%20Protocol&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=43014284><td align=right valign=top class=title><span class=rank>28.</span><td valign=top class=votelinks><center><a id=up_43014284 class=clicky href="https://news.ycombinator.com/vote?id=43014284&how=up&auth=80195ae003c5140d3e3098340b0f43a91e52e05c&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://levkk.bearblog.dev/sharding-postgres-with-logical-replication/ rel=nofollow>Sharding Postgres with Logical Replication</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=levkk.bearblog.dev"><span class=sitestr>levkk.bearblog.dev</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_43014284>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-02-11T15:53:39 1739289219"><a href="https://news.ycombinator.com/item?id=43014284">on Feb 11, 2025</a></span> <span id=unv_43014284></span> | <a href="https://hn.algolia.com/?query=Sharding%20Postgres%20with%20Logical%20Replication&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=42697751><td align=right valign=top class=title><span class=rank>29.</span><td valign=top class=votelinks><center><a id=up_42697751 class=clicky href="https://news.ycombinator.com/vote?id=42697751&how=up&auth=2a5c5dc115255fd12253d213d1c578f476265511&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://github.com/levkk/pgdog rel=nofollow>Show HN: PgDog, Load Balancer for PostgreSQL</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=github.com/levkk"><span class=sitestr>github.com/levkk</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_42697751>2 points</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2025-01-14T14:41:24 1736865684"><a href="https://news.ycombinator.com/item?id=42697751">on Jan 14, 2025</a></span> <span id=unv_42697751></span> | <a href="https://hn.algolia.com/?query=Show%20HN%3A%20PgDog%2C%20Load%20Balancer%20for%20PostgreSQL&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a> | <a href="https://news.ycombinator.com/item?id=42697751">1 comment</a></span><tr class=spacer style=height:5px><tr class="athing submission" id=42297173><td align=right valign=top class=title><span class=rank>30.</span><td valign=top class=votelinks><center><a id=up_42297173 class=clicky href="https://news.ycombinator.com/vote?id=42297173&how=up&auth=a601d2ae172c9618c1071b00b9424004063e727d&goto=submitted%3Fid%3Dlevkk"><div class=votearrow title=upvote></div></a></center><td class=title><span class=titleline><a href=https://github.com/levkk/rwf/issues/51 rel=nofollow>Rwf: Call for Beta Testers</a><span class="sitebit comhead"> (<a href="https://news.ycombinator.com/from?site=github.com/levkk"><span class=sitestr>github.com/levkk</span></a>)</span></span><tr><td colspan=2><td class=subtext><span class=subline><span class=score id=score_42297173>1 point</span> by <a href="https://news.ycombinator.com/user?id=levkk" class=hnuser>levkk</a> <span class=age title="2024-12-02T15:34:33 1733153673"><a href="https://news.ycombinator.com/item?id=42297173">on Dec 2, 2024</a></span> <span id=unv_42297173></span> | <a href="https://hn.algolia.com/?query=Rwf%3A%20Call%20for%20Beta%20Testers&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0" class=hnpast>past</a></span><tr class=spacer style=height:5px><tr class=morespace style=height:10px><tr><td colspan=2><td class=title><a href="https://news.ycombinator.com/submitted?id=levkk&next=41914544&n=31" class=morelink rel=next>More</a></table><tr><td><img src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" height=10 width=0><table width=100% cellspacing=0 cellpadding=1><tbody><tr><td bgcolor=#ff6600></table><br>
|
||
<center><span class=yclinks><a href=https://news.ycombinator.com/newsguidelines.html>Guidelines</a> | <a href=https://news.ycombinator.com/newsfaq.html>FAQ</a> | <a href=https://news.ycombinator.com/lists>Lists</a> | <a href=https://github.com/HackerNews/API>API</a> | <a href=https://news.ycombinator.com/security.html>Security</a> | <a href=https://www.ycombinator.com/legal/>Legal</a> | <a href=https://www.ycombinator.com/apply/>Apply to YC</a> | <a href=mailto:hn@ycombinator.com>Contact</a></span><br><br>
|
||
<form action=//hn.algolia.com/>Search: <input type=text name=q size=17 autocorrect=off spellcheck=false autocapitalize=off autocomplete=off value><template shadowrootmode=user-agent><div contenteditable=plaintext-only></div></template></form></center></table></center><single-file-infobar style="accent-color: initial !important; place-content: initial !important; place-items: initial !important; place-self: initial !important; alignment-baseline: initial !important; anchor-name: initial !important; anchor-scope: initial !important; animation-composition: initial !important; animation: initial !important; appearance: initial !important; aspect-ratio: initial !important; backdrop-filter: initial !important; backface-visibility: initial !important; background: initial !important; background-blend-mode: initial !important; baseline-shift: initial !important; block-size: initial !important; border-block: initial !important; border: initial !important; border-radius: initial !important; border-collapse: initial !important; border-end-end-radius: initial !important; border-end-start-radius: initial !important; border-inline: initial !important; border-start-end-radius: initial !important; border-start-start-radius: initial !important; inset: initial !important; box-shadow: initial !important; box-sizing: initial !important; break-after: initial !important; break-before: initial !important; break-inside: initial !important; buffered-rendering: initial !important; caption-side: initial !important; caret-color: initial !important; clear: initial !important; clip: initial !important; clip-path: initial !important; clip-rule: initial !important; color: initial !important; color-interpolation: initial !important; color-interpolation-filters: initial !important; color-scheme: initial !important; column-count: initial !important; column-fill: initial !important; gap: initial !important; column-rule-color: initial !important; column-rule-style: initial !important; column-rule-width: initial !important; column-span: initial !important; column-width: initial !important; contain: initial !important; contain-intrinsic-block-size: initial !important; contain-intrinsic-size: initial !important; contain-intrinsic-inline-size: initial !important; container-name: initial !important; container-type: initial !important; content: initial !important; content-visibility: initial !important; counter-increment: initial !important; counter-reset: initial !important; counter-set: initial !important; cursor: initial !important; cx: initial !important; cy: initial !important; direction: initial !important; display: initial !important; dominant-baseline: initial !important; dynamic-range-limit: initial !important; empty-cells: initial !important; field-sizing: initial !important; fill: initial !important; fill-opacity: initial !important; fill-rule: initial !important; filter: initial !important; flex: initial !important; flex-flow: initial !important; float: initial !important; flood-color: initial !important; flood-opacity: initial !important; font-family: initial !important; font-feature-settings: initial !important; font-kerning: initial !important; font-optical-sizing: initial !important; font-palette: initial !important; font-size: initial !important; font-size-adjust: initial !important; font-style: initial !important; font-synthesis-small-caps: initial !important; font-synthesis-style: initial !important; font-synthesis-weight: initial !important; font-variant-alternates: initial !important; font-variant-caps: initial !important; font-variant-east-asian: initial !important; font-variant-ligatures: initial !important; font-variant-numeric: initial !important; font-variant-position: initial !important; font-variation-settings: initial !important; font-weight: initial !important; font-width: initial !important; glyph-orientation-horizontal: initial !important; glyph-orientation-vertical: initial !important; grid: initial !important; grid-column-end: initial !important; grid-column-start: initial !important; grid-row-end: initial !important; grid-row-start: initial !important; hanging-punctuation: initial !important; height: initial !important; hyphenate-character: initial !important; hyphens: initial !important; image-orientation: initial !important; image-rendering: initial !important; inline-size: initial !important; inset-block: initial !important; inset-inline: initial !important; isolation: initial !important; letter-spacing: initial !important; lighting-color: initial !important; line-break: initial !important; line-height: initial !important; list-style: initial !important; margin-block: initial !important; margin: initial !important; margin-inline: initial !important; margin-trim: initial !important; marker: initial !important; mask: initial !important; mask-composite: initial !important; mask-mode: initial !important; mask-size: initial !important; mask-type: initial !important; math-shift: initial !important; math-style: initial !important; max-block-size: initial !important; max-height: initial !important; max-inline-size: initial !important; max-width: initial !important; min-block-size: initial !important; min-height: initial !important; min-inline-size: initial !important; min-width: initial !important; mix-blend-mode: initial !important; object-fit: initial !important; object-position: initial !important; offset-anchor: initial !important; offset-distance: initial !important; offset-path: initial !important; offset-position: initial !important; offset-rotate: initial !important; opacity: initial !important; order: initial !important; orphans: initial !important; outline: initial !important; outline-offset: initial !important; overflow-block: initial !important; overflow-inline: initial !important; overflow-wrap: initial !important; overflow: initial !important; overscroll-behavior-block: initial !important; overscroll-behavior-inline: initial !important; overscroll-behavior: initial !important; padding-block: initial !important; padding: initial !important; padding-inline: initial !important; paint-order: initial !important; perspective: initial !important; perspective-origin: initial !important; pointer-events: initial !important; position: initial !important; position-anchor: initial !important; position-area: initial !important; position-try: initial !important; position-visibility: initial !important; print-color-adjust: initial !important; quotes: initial !important; r: initial !important; resize: initial !important; rotate: initial !important; ruby-align: initial !important; ruby-overhang: initial !important; ruby-position: initial !important; rx: initial !important; ry: initial !important; scale: initial !important; scroll-behavior: initial !important; scroll-margin-block: initial !important; scroll-margin: initial !important; scroll-margin-inline: initial !important; scroll-padding-block: initial !important; scroll-padding: initial !important; scroll-padding-inline: initial !important; scroll-snap-align: initial !important; scroll-snap-stop: initial !important; scroll-snap-type: initial !important; scroll-timeline: initial !important; scrollbar-color: initial !important; scrollbar-gutter: initial !important; scrollbar-width: initial !important; shape-image-threshold: initial !important; shape-margin: initial !important; shape-outside: initial !important; shape-rendering: initial !important; speak-as: initial !important; stop-color: initial !important; stop-opacity: initial !important; stroke: initial !important; stroke-color: initial !important; stroke-dasharray: initial !important; stroke-dashoffset: initial !important; stroke-linecap: initial !important; stroke-linejoin: initial !important; stroke-miterlimit: initial !important; stroke-opacity: initial !important; stroke-width: initial !important; tab-size: initial !important; table-layout: initial !important; text-align: initial !important; text-align-last: initial !important; text-anchor: initial !important; text-autospace: initial !important; text-box: initial !important; text-combine-upright: initial !important; text-decoration: initial !important; text-decoration-skip-ink: initial !important; text-emphasis-color: initial !important; text-emphasis-position: initial !important; text-emphasis-style: initial !important; text-indent: initial !important; text-orientation: initial !important; text-overflow: initial !important; text-rendering: initial !important; text-shadow: initial !important; text-transform: initial !important; text-underline-offset: initial !important; text-underline-position: initial !important; text-wrap: initial !important; timeline-scope: initial !important; touch-action: initial !important; transform: initial !important; transform-box: initial !important; transform-origin: initial !important; transform-style: initial !important; transition: initial !important; translate: initial !important; unicode-bidi: initial !important; vector-effect: initial !important; vertical-align: initial !important; view-timeline: initial !important; view-transition-class: initial !important; view-transition-name: initial !important; visibility: initial !important; white-space: initial !important; widows: initial !important; width: initial !important; will-change: initial !important; word-break: initial !important; word-spacing: initial !important; writing-mode: initial !important; x: initial !important; y: initial !important; z-index: initial !important; zoom: initial !important; -apple-pay-button-style: initial !important; -apple-pay-button-type: initial !important; border-spacing: initial !important; -webkit-box-align: initial !important; -webkit-box-decoration-break: initial !important; -webkit-box-direction: initial !important; -webkit-box-flex: initial !important; -webkit-box-flex-group: initial !important; -webkit-box-lines: initial !important; -webkit-box-ordinal-group: initial !important; -webkit-box-orient: initial !important; -webkit-box-pack: initial !important; -webkit-box-reflect: initial !important; -webkit-column-axis: initial !important; -webkit-column-progression: initial !important; -webkit-cursor-visibility: initial !important; -webkit-font-smoothing: initial !important; -webkit-hyphenate-limit-after: initial !important; -webkit-hyphenate-limit-before: initial !important; -webkit-hyphenate-limit-lines: initial !important; -webkit-initial-letter: initial !important; -webkit-line-align: initial !important; -webkit-line-box-contain: initial !important; -webkit-line-clamp: initial !important; -webkit-line-grid: initial !important; -webkit-line-snap: initial !important; -webkit-locale: initial !important; -webkit-nbsp-mode: initial !important; -webkit-rtl-ordering: initial !important; -webkit-text-fill-color: initial !important; -webkit-text-security: initial !important; -webkit-text-stroke-color: initial !important; -webkit-text-stroke-width: initial !important; -webkit-text-zoom: initial !important; -webkit-user-drag: initial !important; -webkit-user-modify: initial !important; -webkit-user-select: initial !important;"><template shadowrootmode=open><div><style>.infobar,.infobar .infobar-icon,.infobar .infobar-link-icon {min-inline-size:28px;min-block-size:28px;box-sizing:border-box;}.infobar,.infobar .infobar-close-icon,.infobar .infobar-link-icon {opacity:0.7;transition:opacity 250ms;}.infobar:hover,.infobar .infobar-close-icon:hover,.infobar .infobar-link-icon:hover {opacity:1;}.infobar,.infobar-content {display:flex;}.infobar {position:fixed;max-height:calc(100% - 32px);top:16px;right:16px;margin-inline-start:16px;margin-block-end:16px;color:#2d2d2d;background-color:#737373;border:2px solid;border-color:#eee;border-radius:16px;z-index:2147483647;animation-name:flash;animation-duration:.5s;animation-timing-function:cubic-bezier(0.39,0.58,0.57,1);animation-delay:1s;animation-iteration-count:2;}.infobar:valid,.infobar:not(:focus-within):not(.infobar-focus) .infobar-content {display:none;}.infobar:focus-within,.infobar.infobar-focus {background-color:#f9f9f9;border-color:#878787;border-radius:8px;opacity:1;transition-property:opacity,background-color,border-color,border-radius,color;}.infobar-content {border:2px solid;border-color:#f9f9f9;border-radius:6px;background-color:#f9f9f9;overflow:auto;}.infobar-content span {font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:18px;word-break:break-word;white-space:pre-wrap;margin-inline:4px;margin-block:4px;}.infobar .infobar-icon,.infobar .infobar-close-icon,.infobar .infobar-link-icon {cursor:pointer;background-position:center;background-repeat:no-repeat;}.infobar .infobar-close-icon,.infobar .infobar-link-icon {align-self:flex-start;}.infobar .infobar-icon {position:absolute;min-inline-size:24px;min-block-size:24px;}@keyframes flash {0%,100% { background-color:#737373;}50% { background-color:#dd6a00;}}.infobar:focus-within .infobar-icon,.infobar.infobar-focus .infobar-icon {z-index:-1;background-image:none;margin:4px;}.infobar .infobar-close-icon {min-inline-size:22px;min-block-size:22px;}.infobar .infobar-icon {background-color:transparent;background-size:70%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHADIRLMaOHwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAPUExURQAAAIqKioyNjY2OjvDw8L2y1DEAAAABdFJOUwBA5thmAAAAAWJLR0QB/wIt3gAAAGNJREFUSMdjYCAJsLi4OBCQx6/CBQwIGIDPCBcXAkYQUsACU+AwlBVQHg6Eg5pgZBGOboIJZugDFwRwoJECJCUOhJI1wZwzqmBUwagCuipgIqTABG9h7YIKaKGAURAFEF/6AQAO4HqSoDP8bgAAAABJRU5ErkJggg==);}.infobar .infobar-link-icon {right:4px;background-size:60%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8H+DhhoQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJJJREFUOI3t070NRCEMA2CnYAOyDyPwpHj/Va7hJ3FzV7zy3ET5JIwoAF6Jk4wzAJAkzxAYG9YRTgB+24wBgKmfrGAKTcEfAY4KRlRoIeBTgKOCERVaCPgU4Khge2GqKOBTgKOCERVaAEC/4PNcnyoSWHpjqkhwKxbcig0Q6AorXYF/+A6eIYD1lVbwG/jdA6/kA2THRAURVubcAAAAAElFTkSuQmCC);}.infobar .infobar-close-icon {appearance:none;background-size:80%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8VC4EQ6QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJtJREFUOI3NkrsBgCAMRLFwBPdxBArcfxXFkO8rbKWAAJfHJ9faf9vuYX/749T5NmShm3bEwbe2SxeuM4+2oxDL1cDoKtVUjRy+tH78Cv2CS+wIiQNC1AEhk4AQeUTMWUJMfUJMSEJMSEY8kIx4IONroaYAimNxsXp1PA7PxwfVL8QnowwoVC0lig07wDDVUjAdbAnjwtow/z/bDW7eI4M2KruJAAAAAElFTkSuQmCC);}.infobar { top:16px; bottom:auto; }.infobar { right:16px; left:auto; }</style><form class="infobar"><span tabindex="-1" class="infobar-icon"></span><span tabindex="-1" class="infobar-content"><input type="checkbox" required="" class="infobar-close-icon" title="Close"><span>Tue Feb 24 2026 10:58:52 GMT+0800 (中国标准时间)</span><a class="infobar-link-icon" target="_blank" rel="noopener noreferrer" title="Open source URL: https://news.ycombinator.com/submitted?id=levkk" href="https://news.ycombinator.com/submitted?id=levkk"></a></span></form><script>function Wo(n,{saveUrl:e,infobarContent:t,saveDate:a}){if(e){const o=n.querySelector("single-file-infobar").shadowRoot;o.querySelector(".infobar-content span").textContent=t||a;const i=o.querySelector(".infobar-content .infobar-link-icon");i.href=e,i.title="Open source URL: "+e}};function Ho(n,e=_o){const t=n.evaluate("//comment()",n,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);let a=t&&t.singleNodeValue;if(a&&a.nodeType==Node.COMMENT_NODE&&a.textContent.includes(e)){const n=a.textContent.split("\n"),[,,e,...t]=n,o=e.match(/^ url: (.*) ?$/),i=o&&o[1];if(i){let n,e;if(t.length&&(e=t[0].split("saved date: ")[1],e&&t.shift(),t.length>1)){let e=t[0].split("info: ")[1].trim();for(let n=1;n<t.length-1;n++)e+="\n"+t[n].trim();n=e.trim()}return{saveUrl:i,infobarContent:n,saveDate:e}}}};(function Go(n,e){const t=Ho(n,e);t&&t.saveUrl&&Wo(n,t)})(document, "SingleFile");</script></div></template></single-file-infobar> |