Total Pageviews

Tuesday, 7 April 2026

Chawan

 TUI web browser https://chawan.net

Chawan is a TUI web (and (S)FTP, Gopher, Gemini, ...) browser with CSS, inline image and JavaScript support.

It uses its own small browser engine developed from scratch, which can nevertheless display many websites in a manner similar to major graphical browsers.

It can also be used as a terminal pager.

Screenshot of Chawan displaying its SourceHut page

Compiling

A Unix-like operating system (Linux, *BSD, Haiku, macOS, ...) is assumed. On Windows you have to use WSL.

  1. Clone the Chawan repository:
    git clone https://git.sr.ht/~bptato/chawan && cd chawan
  2. Install the Nim compiler: https://nim-lang.org/install.html
    • Please use 2.0.0 or newer, ideally 2.2.6. (nim -v displays your Nim compiler's version.) The 1.6 branch from 1.6.14 upwards may still work, but it isn't recommended unless you have no other choice.
    • If you are using a 32-bit system, you probably need 2.2 or newer. 2.0 may still work if you export CFLAGS=-fpermissive.
  3. Install the following dependencies:
    • OpenSSL (or LibreSSL)
    • libssh2
    • brotli
    • pkg-config
    • GNU make (gmake on non-GNU systems)
    • Quick copy-paste for Debian: apt install libssh2-1-dev libssl-dev libbrotli-dev pkg-config make
  4. Run make (without arguments).
  5. Install using make install (e.g. sudo make install).

Then, try:

$ cha -V # open in visual mode for a list of default keybindings
$ cha example.org # open your favorite website directly from the shell
$ mancha cha # read the cha(1) man page using `mancha'

Packages

You can also install Chawan from packages maintained by volunteers. Known stable packages are:

Unstable packages (tip of the master branch):

Each release also comes with static binaries. However, their dependencies can quickly get out of date, so installing a package or compiling Chawan yourself is preferable.

Features

Currently implemented features are:

  • multi-processing, incremental loading of documents
  • HTML5 support with various encodings (UTF-8, Shift_JIS, GBK, ...), forms, cookies
  • CSS-based layout engine: supports flow layout, table layout, flexbox layout, double-width characters (CJK)
  • user-programmable keybindings (defaults are vi(m)-like), mouse support
  • JavaScript support in documents (disabled by default)
  • inline image support with Sixel or Kitty protocol (disabled by default; see doc/image.md on how to enable)
  • supports several network protocols: HTTP(S), (S)FTP, Gopher, Gemini, Finger, Spartan
  • markdown viewer (cha README.md), man page viewer (mancha)
  • user-defined protocols and file formats
  • syscall filter based sandboxing on FreeBSD, OpenBSD and Linux (through capsicum, pledge and seccomp-bpf)
  • bookmarks, history

...with a lot more planned.

Bugs, technical issues, etc.

First, read the troubleshooting document. If it doesn't help, open a ticket.

When using the ticket tracker, please make sure your tickets are valid markdown, or they become unreadable on the web interface.

If you want to send plain text e-mails not formatted as markdown, use the mailing list instead. This is also where you can send patches.

If you're having troubles accessing SourceHut, you can also use the Codeberg mirror.

Documentation index

Chawan's documentation is available as man pages (man cha) and as Markdown files.

If you're interested in modifying the code:

Relatives

w3m has been the main inspiration for Chawan; although the two do not share code, the UI and feature set is similar.

Ferus is a separate graphical browser engine written in Nim, which uses Chawan's HTML parser.

from  https://codeberg.org/bptato/chawan

Hexpm

 

API server and website for Hex。

CI

API server and website for https://hex.pm.

Contributing

To contribute to Hexpm you need to properly set up your development environment.

Also see the client repository: hex. The client uses hexpm for integration tests, so hexpm needs to support all versions the client supports. CI ensures that tests are run on all supported versions.

Setup

  1. Run mix setup to install dependencies, create and seed database etc
  2. Run mix test
  3. Run iex -S mix phx.server and visit http://localhost:4000/

After this succeeds you should be good to go!

See setup alias in mix.exs and sections below for more information or when you run into issues.

from  https://github.com/hexpm/hexpm

 

 

披着军队外衣的超级财阀——伊朗革命卫队的生意经

 

1979年,当霍梅尼的专机降落德黑兰时,他面对的是一个随时可能被推翻的政权。
旧军队忠诚度存疑,左翼革命者虎视眈眈,库尔德人正在西部拿着枪要求自治。这个新生的伊斯兰共和国,四面都是敌人。
霍梅尼做了一件事,这件事在此后四十年深刻改变了整个中东的权力格局:
他在正规军队之外,再建了一支只效忠于他的军队。
这就是伊斯兰革命卫队(IRGC),波斯语叫"Sepah Pasdaran",护卫者之军。
它当时的任务是:防止政变,镇压异见,捍卫革命。
没有人知道,这支最初只有6000人的护卫队,会在四十年后成为一个控制伊朗约三分之一经济的庞大商业帝国——而且,越是制裁,它越壮大。

诞生于恐惧

理解革命卫队,必须先理解它被创造时的历史语境。
1979年的伊朗,不是一个统一的革命。
街头有共产主义者,有世俗民族主义者,有伊斯兰左派,有库尔德分裂武装——这些力量曾经共同推翻了沙阿,但他们并不全都想要一个神权国家。霍梅尼需要一支只对他效忠的武装力量,来完成他在这场革命内部的"二次革命"。
革命卫队就是这把刀。
创立革命卫队的穆赫辛·拉菲多斯特透露,革命派在讨论是否要成立革命卫队时,大部分人都同意革命需要一支能保护自身的力量,因此革命卫队是作为"霍梅尼神权统治的意识形态捍卫者及牵制军方的可靠力量",其主要目的是反革命。
换句话说,它从第一天起就是一支政治军队,而非传统意义上的国防力量。
然后,战争来了。

两伊战争,意外的造化

1980年9月,伊拉克军队越过边境,萨达姆·侯赛因以为可以在几周内拿下一个刚刚经历革命动荡的伊朗。
这场赌博他输掉了。战争打了八年。
但对革命卫队来说,这场战争是一个意想不到的礼物。
西方国家对新生的伊斯兰政权实施武器禁运。伊朗买不到零件,买不到弹药,买不到先进武器系统。被逼无奈,伊朗决定自己造。这项任务,落到了革命卫队身上
于是,一支原本只负责政治镇压的力量,开始学习工程、物流、供应链管理、武器制造。它建立了自己的工程部队,负责在前线挖战壕、修碉堡、架桥梁、修补被炸毁的基础设施
八年战争结束时,伊朗经济几近崩溃,两伊战争给伊朗造成的直接经济损失高达9600亿美元,间接损失难以估量。
但革命卫队拥有了西方禁运逼出来的完整工程能力。
这是它日后经济帝国的第一块基石。

从战壕到工地——戈尔博集团的诞生

1988年,战火停息。一个棘手的问题摆在面前:数十万退伍的革命卫队士兵,怎么安置?
伊朗政府的解决方案,在历史上看来近乎天才——允许革命卫队成立民用公司,用战争中积累的工程能力投入战后重建。
1990年,最高领袖哈梅内伊正式授权成立"戈尔博建设总部"(Khatam al-Anbiya Construction Headquarters,简称KAA),由革命卫队工程部队改制而来。
这家公司的前身,就是那些在两伊战争前线挖战壕的士兵。
战后,伊朗基础设施一片废墟,西方企业不敢进入,政府转而依靠内部力量。1990年,最高领袖哈梅内伊授权建立了戈尔博建设总部——一个庞大的工程建设集团。
战后重建的需求是真实的。修桥、修路、修水坝、修电网,这些都是迫切的社会需求。而革命卫队不仅有工程能力,还有军队那种不计成本、不论回报的执行力,以及最关键的——政治庇护。
合同开始涌来,大批量的,不需要竞标,直接从政府划拨。
这个模式奠定了未来三十年革命卫队扩张的基本范式:政治权力换取经济特权,再用经济资源强化政治地位

制裁是最好的护城河

2005年,内贾德当选总统,革命卫队的经济扩张进入加速器。
内贾德本人曾是革命卫队成员。他上任后的一系列操作,在外人看来像是莽撞,但逻辑其实非常清晰。
伊朗推进核计划,美国和联合国加码制裁。跨国公司开始撤离。道达尔撤了,西门子撤了,马士基撤了,大量欧洲企业在制裁压力下退出伊朗市场。
外人的位置,让给谁?
让给革命卫队。
随着国际制裁加剧,外国跨国公司被迫撤离伊朗,戈尔博建设总部得以在石油、天然气和石化项目方面获取了大量新合同,借此发展成一个控制伊朗几乎所有主要金融、经济和工业领域的庞大巨人。
从逻辑上看,制裁制造了一种完美的垄断条件:
外资退出,留下真空;革命卫队填补真空;由于政治管控,新的国内私营竞争者无法进入革命卫队在无竞争对手的环境中获取利润,再用利润反哺政治系统;政治系统的生存因此依赖于革命卫队的财政支持,双方形成深度共生
制裁原本想要窒息这个政权,但实际上它消灭了唯一能挑战革命卫队垄断地位的竞争力量——外资和具有全球视野的本国私营企业。

史上最大的交易——"私有化"的奥秘

2009年9月,伊朗电信公司(TCI)——这家全国最大的国有企业之一,在德黑兰证券交易所挂牌出售51%股份。
在这场竞标中,一个名为"莫宾信托财团"的集团在30分钟内,以78亿美元价格完成了德黑兰证券交易所有史以来最大的单笔交易。这个财团与革命卫队关系密切。
这是伊朗历史上最大的一笔"私有化"交易。
竞争中的其他公司都以安全顾虑或缺乏足够资金为由取消了资格,有观察家称这次收购"在宪法第44条的棺材上钉了钉子"。
这就是伊朗式"私有化"的本质:国有资产不是从国家转移到市场,而是从国家转移到了革命卫队。
2006年到2010年期间,国有企业转移了价值700亿美元的资产,但其中仅有13.5%的股份流向了真正的私有领域,其余皆流入了半官方领域和机构。
银行、电信、石化、汽车制造、港口、医药——一个接一个,在"私有化改革"的外衣下,从国家手里转移到革命卫队手里。

经济帝国究竟有多大

很难精确计算,因为革命卫队的财务从不透明。但现有数据已经让人瞠目。
革命卫队控制着伊朗南部60个边界通道,控制着伊朗除石油以外57%的进口和30%的出口,在境外还有接近600家下属贸易公司。从制药、电信到石油行业,深深卷入伊朗的经济生活,是一个庞大的商业垄断组织。
根据估算,公共部门对伊朗GDP的贡献率达35%,私营部门约占25%,半国有部门约占40%。伊斯兰革命卫队的网络是军事实体最大的组成部分,其网络产值的GDP占比约为15%,呈现上升趋势。


它的触角延伸到了令人惊讶的地方——
激光矫视手术诊所、连锁药店、农业合作社、住宅开发、大学、出租车公司……甚至还有伊朗著名的"圣城球队",德黑兰最成功的足球俱乐部之一,也在革命卫队的商业版图之中。
议会里有超过80名成员出身于革命卫队。前德黑兰市长卡利巴夫,革命卫队出身,后成为议会议长。伊朗各省份的省长、市长中,革命卫队背景的数量在过去二十年显著增加。
军事、政治、经济,三者已深度缠绕,难以分割。

制裁的悖论

西方对伊朗的制裁,已经持续了超过四十年。从1979年的资产冻结,到2006年的联合国决议,到2018年特朗普的极限施压,再到今天的全面封锁。
制裁的逻辑是:切断收入来源,让政权无法维持运转,迫使其妥协。
但这个逻辑漏掉了一个关键变量:制裁的成本和收益,在伊朗国内的分配是极度不均等的。
普通伊朗人承受了制裁的大部分成本——货币贬值(2023年黑市美元兑里亚尔汇率曾高达85万:1)、进口商品短缺、通货膨胀、就业机会减少。
而革命卫队不仅没有承受这些成本,反而通过以下机制从制裁中获益:
走私垄断:制裁造成商品短缺,短缺造成黑市溢价黑市被革命卫队控制的60个边境口岸垄断制裁越严,溢价越高,走私利润越大。据估计,革命卫队与其他军事半军事集团控制的黑市交易额占伊朗GDP的6%~36%,包括走私、毒品交易等非法经济活动。
进口替代:外国商品进不来,国内只有革命卫队的企业能接单生产替代品,因为只有它们有资金、有政治庇护、有供应链网络。
汇率套利:伊朗长期实行多层次汇率制度,官方汇率和市场汇率之间存在巨大差价。革命卫队系的银行和财团可以用官方汇率买进美元,在黑市价格抛出,差价就是纯利润。
项目垄断:外国公司走了,大型基础设施和能源项目的承包方只剩革命卫队的戈尔博建设总部。合同不需要竞标,预算不受监督,这是最稳定的利润来源之一。
换句话说,制裁关上了正规经济的大门,但革命卫队走的从来就不是正规渠道。

阿喀琉斯之踵

但这个帝国,也有自己的脆弱之处。
革命卫队旗下的企业并非由技术专家管理,而是由退役将领、情报官员和政治关系深厚的亲信运营,这些人缺乏真正的技术专长。这套体系设计上的目标是向军事精英输送资源,同时剥夺私营部门的投资、机会和自主权。
南帕尔斯天然气田是一个典型案例。伊朗和卡塔尔共享这个全球最大的天然气田。伊朗拥有更大的份额,却在产量上远远落后。2022年,卡塔尔的产量几乎是伊朗的两倍,尽管卡塔尔开发更晚。分析人士将这一差距主要归因于不合格承包商的技术管理失当,以及意识形态导向的人事任命取代了专业技术人才。
大量政府项目被革命卫队旗下企业拿走后,以意识形态忠诚替代专业能力的管理方式,导致延期、超支、质量低劣。
如果用一句话总结革命卫队腐败对当前战争局势的影响:通过建立一个充斥着寻租、走私、空壳公司和隐性金融网络的安全-经济帝国,革命卫队成功维系了伊斯兰共和国多年的运转;但这个腐败架构本身,如今已成为政权在全面战争状态下的核心脆弱点。

一个帝国的内在矛盾

伊斯兰革命卫队用四十年时间,把自己从一支政治护卫队变成了一个国中之国。
它能做到这一点,不是因为它有多优秀,而是因为外部压力恰好创造了它茁壮生长的土壤:制裁关闭了外资、削弱了国内私营竞争者、强化了对黑市管道的需求;战争给了它技术能力;私有化给了它合法的扩张入口;与最高领袖的特殊关系给了它政治豁免权。
这种结构,也是伊朗这个有着数千年文明的古老国家,在过去四十年里始终无法实现正常经济发展的核心原因之一。
一个国家的工程建设、电信、石化、进出口、银行系统,由一支军队垄断运营——这种模式可以在制裁压力下维持存活,但它无法竞争,无法创新,无法创造真正的经济繁荣。
伊朗2025年的人均GDP约为3897美元,在全球排第133位,是台湾的九分之一,中国的三分之一不到。
石油储量全球前五,天然气储量全球前二,人口9000万,有过辉煌的文明——坐在金山上,却是这个结果。
马克思曾经写过,历史上一切政治斗争归根结底都是经济斗争。
在伊朗,这个命题被反过来验证了:一切经济扩张,归根结底都是政治安排的结果。
革命卫队最明白这一点。它用四十年时间证明,在特定的制度逻辑下,制裁不是它的敌人——制裁是它最好的生意伙伴

美国退出北约,欧洲人到底怕不怕

 

欧洲的问题:钱从哪来

以德国为例,把这笔账算得最清楚。

德国计划将军费开支从2025年的950亿欧元增至2029年的1620亿欧元,增幅达70%,占GDP比例从2.4%升至3.5%。为实现这一目标,德国放宽债务上限,允许十年内为国防和基础设施借款1万亿欧元,预计赤字将从2024年的330亿欧元升至2029年的1260亿欧元。

这在德国是什么量级的事?德国的"债务刹车"机制是写进宪法里的,改它需要联邦议院三分之二多数票。德意志银行经济学家将默茨推动的这项改革描述为"德国战后历史上最具历史性的范式转变之一",并表示"它发生的速度和预期财政扩张的规模让人想起德国的统一"。

这句话有多重要?德国统一是1990年,是整个联邦德国历史上最大的财政冲击。现在的扩军,规模可以与之相提并论。

但军费跟基础设施投资有本质差别——炸弹打出去就消耗了,不像桥梁和学校会持续产出价值。德国曼海姆大学经济学教授汤姆·克雷布斯指出,军费支出的"财政乘数"最高仅0.5左右,即每投入1欧元军费,经济活动仅增加约50欧分的价值;而基础设施、教育和托幼投资的"财政乘数"往往是军费的两到三倍。

翻译成大白话:花同样一欧元,建幼儿园的回报是造坦克的6倍。

但没有办法,安全是刚需。德国普通家庭的生活也将受到影响——为筹措资金,政府或将提高税收,尤其针对高收入群体和企业。而债务和利息压力可能促使政府在未来预算中更趋紧缩,进而影响社会福利支出,如养老金和公共医疗等领域。

这才是这场地缘变局真正影响到普通欧洲家庭的方式:养老金的实际购买力可能下降,公立医院的等待时间可能拉长,子女的教育补贴可能收紧——这些看不见的削减,都会在未来五年内以隐蔽的方式出现。

在德国,这件事已经不只是新闻,而是茶几上的日常话题了。

对美国军工来说,这是一场灾难还是好消息?

答案很反直觉:两者都是,取决于你看的时间维度。

短期内,欧洲扩军对美国军工业是巨大利好。特朗普视阈下,"财政回报"是:不是从欧洲直接收钱,而是通过逼迫他们承担更大的安全支出,而大量新增的欧洲军费,很大一部分将用于购买美国制造的武器——如F-35、爱国者导弹、波音运输机等,这实际上是美国国防工业的隐性"财政收益"。

根据咨询公司"纵向"研究合伙公司的分析,预计2026年美国五大国防承包商的现金流将达到260亿美元,是2021年的两倍。洛克希德·马丁、雷神、通用动力——这些公司的订单本来就多,现在欧洲的8000亿欧元又撑开了一片新的需求

但中长期,麻烦来了。

欧洲人被逼急了,已经开始系统性地走向军工自主欧盟的目标是到2030年实现50%的防务订单本土化采购,而2022年至2023年度欧盟防务订单本土化率仅为22%——这意味着欧洲要在六年内把本土军工采购比例翻1倍以上。

更直白的数据:莱茵金属将其155毫米炮弹的年产量从2022年的7万发增加到2024年的75万发,目标是到2027年达到150万发;弹药现在占集团销售额的27%和利润的52%。这家公司自2022年以来股价涨了超过2000%,市值超过了德国大众汽车。

英国BAE Systems在2025年销售额增长10%,得益于欧洲各国政府的"台风"战斗机、护卫舰和战车大量订单,截至2025年12月底储备订单达到创纪录的836亿英镑。

欧洲军工的崛起,长远看会蚕食美国军火商的欧洲市场份额。特朗普现在的策略是:先用北约撤出威胁逼欧洲加码军费,短期内美国军火商吃得满嘴流油;但欧洲建立起自主军工体系之后,美国武器的市场就会系统性萎缩

Wednesday, 1 April 2026

川普想用血洗波斯灣給中國立威:押上美軍全部家底狂轟伊朗

 

-川普恐怕会惨败。

Awesome-Database-Learning

 A list of learning materials to understand databases internals.

A list of learning materials to understand databases internals, including but not limited to:

  • papers
  • blogs
  • courses
  • talks

Please submit a pull request if there is any material that you think should be included in this collection.

Table of Contents

Recommended Courses, Books and Talks

Courses

Books

Talks

Blogs

SQL & Relation Algebra

Courses:

Query Optimizer

Courses:

Blogs:

Planner Models

Blogs:

Papers:

Subquery Optimization

Blogs:

Papers:

Join Order Optimization

Papers:

Functional Dependency & Physical Properties

Thesis:

Papers:

Cost Model

Papers:

Statistics

Papers:

Books:

Query Execution

Courses:

Execution Framework

Papers:

Vectorization vs Compilization

Blogs:

Papers:

Join

Papers:

Hash Table

Courses:

Blogs:

Bloom Filter

Papers:

DDL

Relational Model

Blogs:

Codd's Rules

Blogs:

Relational Data Model

Blogs:

Relational Algebra

Blogs:

ER to Relational Model

Blogs:

SQL - Overview

Blogs:

Transaction

Isolation Levels

Blogs:

Papers:

Concurrency Control

Courses:

Papers:

Network

Courses:

Papers:

Storage

NoSQL Systems

Papers:

Buffer Management

Courses:

Papers:

Disk IO

Blogs:

Papers:

B-Tree

Blogs:

Courses:

Papers:

LSM-Tree

Papers:

Learned Indexes Structures

Papers:

Serializing & RPC

Data Partitioning

Blogs:

Papers:

Replication & Consistency

Blogs:

Papers:

Consensus

Technical report:

  • University of Cambridge Distributed consensus revised, a great paper about Consenssus especially Paxos and Paxos-Related algorithms, by Heidi Howard

Papers:

Scheduling

Blogs:

Papers:

Benchmark & Testing

Blogs:

Papers:

HTAP

Papers:

TLA+

Talks:

from  https://github.com/pingcap/awesome-database-learning

Tuesday, 31 March 2026

Clash-RS, clash的rust版本

 

https://watfaq.gitbook.io/clashrs-user-manual/

A custom protocol, rule based network proxy software.

CI codecov

✨ Features

 
  • 🌈 Flexible traffic routing rules based off source/destination IP/Domain/GeoIP etc.
  • 📦 Local anti spoofing DNS with support of UDP/TCP/DoH/DoT remote, and expose it as a local UDP/TCP/DoH/DoT server.
  • 🛡 Run as an HTTP/Socks5 proxy, or utun device as a home network gateway.
  • ⚙️ Hysteria2/Shadowquic/Shadowsocks/Socks5(TCP/UDP)/SSH/tor(onion)/Trojan/Tuic/VLess/Vmess/Wireguard(userspace) outbound support with different underlying transports(gRPC/TLS/H2/WebSocket/etc.).
  • 🌍 Dynamic remote rule/proxy loader.
  • 🎵 Tracing with Jaeger

🖥 Environment Support

 
  • Linux
  • macOS
  • Windows
    • You need to copy the wintun.dll file which matches your architecture to the same directory as your executable and run you program as administrator.
  • iOS

💰 Sponsors

 

📦 Install

 

Use With GUI

 

https://github.com/LibNyanpasu/clash-nyanpasu

Download Prebuilt Binary

 

Can be found at https://github.com/Watfaq/clash-rs/releases

Docker Image

 

https://github.com/Watfaq/clash-rs/pkgs/container/clash-rs

Local Build

 

Dependencies

  • cmake (3.29 or newer)
  • libclang(LLVM)
  • nasm (Windows)
  • protoc(for geodata proto generation)
  • pre-commit
$ pipx install pre-commit
$ pre-commit install

$ cargo build
 

🔨 Usage

 

Example Config

 

sample.yaml:

port: 7890
 

Run

 
-> % ./target/debug/clash -c sample.yaml
 

Help

 
-> % ./target/debug/clash-rs -h
Usage: clash-rs [OPTIONS]

Options:
  -d, --directory <DIRECTORY>
  -c, --config <FILE>          Specify configuration file [default: config.yaml] [short aliases: f]
  -t, --test-config            Test configuration and exit
  -v, --version                Print clash-rs version and exit [short aliases: V]
  -l, --log-file <LOG_FILE>    Additionally log to file
      --help-improve           Enable crash report to help improve clash
  -h, --help                   Print help
 

FFI

 

Compile for apple platforms

 

To create a framework for iOS and macOS platforms

git clone https://github.com/Watfaq/clash-rs.git
cd clash-rs
chmod +x scripts/build_apple.sh
./scripts/build_apple.sh
 

This command will generate a clashrs.xcframework file in the build directory.

🔗 Links

 

🤝 Contributing

 

❤️ Inspired By

from 

https://github.com/Watfaq/clash-rs