MoreRSS

site iconXiaoZongLin | 肖宗林修改

网名:林林。学生,初二开始写博客,在维护(或曾经维护过)“开往-友链接力”和“中文博客列表导航”项目。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

XiaoZongLin | 肖宗林的 RSS 预览

都市天际线2:通过优化设计路网解决拥堵

2026-02-26 18:17:05

《都市天际线2》这款游戏我玩了大概半年,游戏平台上显示我玩了五百多个小时,玩通了两次(指的是达到最终的里程碑)。这款游戏的体验比较好,我在里面喜欢静静看着十字路口的车流发呆。

玩游戏经常会遇到棘手的交通堵塞问题,且最近一次工业区还因为交通条件不好出现了大面积进货成本过高的情况。

之前我是这样缓解拥堵问题的:拓宽普通道路、区与区之间用简单的八车道道路或高速公路连接。导致了一些问题:内陆地区没有高速公路,交通条件差,到其他区域的运输时间长;高速公路出入口容易拥堵,从主干道堵到高速上等。

除了工业区大面积提示原料成本过高之外,因为一处人行天桥设计不到位,几个东西“互锁”起来删也删不掉,所以打算重新开一个存档解决交通堵塞的问题。

存档初期建立两个居民区和一个工业办公区,区与区之间用高速公路连接,区内部用双向四车道道路,居民上下高速通过区内部的高速主干道和立交桥。

居民区二连接立交

高速公路匝道出入口可以使用 Taffic 插件设置让行规则与规划车道,经过一番设计,高速公路的承载能力有所提高。

区内路网像前文那样设计会出现一个问题:高速车道会延伸出四条高速主干道插入小区,如果高速主干道位于小区的中间,那这几条主干道需要同时承担车辆进出高速和小区内部两部分沟通的功能,会发生拥堵。

图片远处的高速公路通过两条高速主干道进入小区

根据参考资料[1],要避免拥堵,需要设计以快速路为骨架、主干道为辅助、高密度支路为主体的分级交通网络。这样可以做到交通流逐级往下分配缓解拥堵。同时设计地铁连接主要功能区。

关于地铁的设计:每个辖区设一个地铁站,通过地铁线路连接居民区和工业办公区,区内部设置住宅到地铁站的辖区公交环线,方便居民通过公交转乘地铁通勤。

图片上方为连接各区的高速公路,高速公路经立交接三车道高速主干道,随后连接八车道分隔式次干道,最后连接四车道分隔式道路进入网状居民区

连接网状居民区的路口需要有人行天桥,否则游戏红绿灯的神奇机制会让路口堵塞。

估计是没有人行天桥,又或者是刚建住宅区,有大量居民迁入,路口很堵

“高速-高架立交-主干道-八车道次干道-四车道小区网格”路网的效果不错。在有两处较高密度住宅区连接的次干道,车流流动顺畅。

参考资料:

都市天际线2:通过优化设计路网解决拥堵最先出现在林林杂语

博客聚合有感

2026-02-23 22:28:29

我辞去开往维护组负责人的文章一经发出,Blogsclub的创始人便邀请我前去参加维护,盛情难却,如今也在 Blogsclub 上挂了名。几年以来,与十年之约、开往、中文博客列表导航和 Blogsclub 打交道多了,有些话,收集起来发在这里,与君共勉。

数载躬行未肯轻,是非功过任人评。
心持灯火照前路,不负江湖不负名。


因为公告和博客是维护组的传声筒,对开往项目举足轻重,所以谁掌握了公告和博客,谁就掌握了开往。

域名这些基础设施固然重要,服务器可能被投毒,域名解析可能被篡改。掌握基础设施的人如果愿意可以导致开往一段时间的瘫痪。但,QQ 群被封了可以发个公告让大家到新群,域名变了可以发通知让大家改域名。项目需要这些基础设施,但并不依赖某个特定的基础设施。换句话说,开往没了某个域名、某台服务器照样还能转。就影响力来说,在我看来不如博客。博客作为开往维护组对外发声的主要工具,同样也是将开往某个成员的想法、观点上升为项目集体意志的主要途径。

某个圈子里有他们自己的道德,好比行侠仗义,讲的是自己心中的义,而不是法律和规定差不多。

你项1跟个球场看台一样,都有一群人在上面看球,下面踢球的每次都不一样。(开往成员群2025年8月20日公告)


不以“世界是个草台班子”为由耻笑任何一个站在台上、且能一直站住的人。创造一出戏要比评价一场表演难一万倍。敢上台的人,就是要比坐在下面黑漆漆人群里的看客牛逼。宁当草台上的主演,不做豪华席位的观众。

摘自微信公众号“新青年王昱”

有时,你会收到来自他人自以为是的指导。他们其实也不知道该怎么做,随便乱说一通,等你失败之后再来一句「我早就说了…」。要清楚台上的人就是比看客牛逼。我也一样。

开往不一定要发博客、发公告、颁布新规则才能算回应,无声本身就是一种回应。(2026年2月8日晚与柯致信)


两年半前,我曾跟着写一篇《加入开往团队所给我带来的》,具陈当时项目的氛围。“希望之后可以将开往内部的一些讨论分享出来,让大家了解,这是一个有趣的维护组,有趣的小团伙。”如今的光景又有些不一样。

就本文章而言,前面说要严格标准不要门槛太低,后面又说审核不透明。加入门槛这件事高了有人骂,低了也有人骂。我们夹在中间很不舒服。但是我们不会让只有初始页的网站加入开往,至于您遇到的网站可能是由于删库导致的,如果您遇到长期没有更新博客的网站可以通过成员列表的投诉功能向开往反应。至于您引用 HowieHz 的文章,建议您阅读开往去年 5 月和 7 月的博客,QQ 群的事情说明不了什么。关于兜底条款,您可以在仓库中搜索有援引该条款驳回的情况。我在审核的过程中援引该条款时会在社群说明。原本我在项目的讨论里发了一个废除兜底条款的帖子,但组里没有同意。兜底条款算是目前比较平衡的一个方案了。最后,我从初三接手开往到现在,除去高三缺席的一年,四年接手经营的项目被您说成黑社会,我深感痛心。感谢您能拨冗写出这一篇炮轰开往的文章。每个人对开往这种项目都有自己的理解。对我来说,我平时逛逛开往,给博客发一点评论,欣赏欣赏别人的文章,这是开往于我的意义。(于《炮轰开往:泛滥低质链接失去初心的开往,还有存在的必要吗?》一文下的留言)

我问:不知你曾经是否有这种感觉:作为一个项目的维护者,很少从这个项目得到成就感,每次都像是给站长们打工似的被催审,出事的时候被嘲讽,还没有人在我们花时间处理申请和事件之后说一声谢谢。维护者有何错,才让站长们群嘲热讽?谁愿意忍受人世的鞭挞和讥嘲、旁人看客的冷眼和费尽辛勤所换来的小人的鄙视。干得好了,是应该的;干不好了,就是自己的失责。钱要自己花,时间精力要自己出,评价的那张嘴却张在闲人头上。
他答:所以我不干啦。(与某人的对话)

这份所谓的规范貌似可以看作十年之约项目组交接的直接原因。目前十年之约主动注销了ICP备案,关闭了项目网站的访问。
夜以继日燃烧着自己热情与精力,秉持着利他主义辛勤工作着的十年之约维护者,已经做得足够好了!(于频道中的发言)


革命的队伍越到后面越是精纯。

在热闹之后是无人问津和费劲不讨巧。做这件事情需要耐得住寂寞,但我显然耐不住寂寞。

先前的我错了,管理一个团队并不是讨好团队里的所有人,并幻想一些人能够在团队中和睦相处,而是划定一个共同的目标,将害群之马从团队里清除出去。讨好别人太累,幻想用自己的热情留下别人不切实际,跟一个不讲道理的人讲道理更是不着边际。

就跟公司一样,开往的开发不是热闹的,热闹的时候也不会用来开发和维护,而是在吵需求、可用性、必要性这类可有可无的东西,因为其实开往本身就是可有可无的东西,有些需求只要妥协一下就消失了。开往项目的维护在时间精力投入上像个无底洞,就跟不断优化博客加载速度、访问体验一样。从开往跳出来对于别人来说未尝是件难事,互联网也不是我们生活的一切。我更希望维护组的成员能在做完自己安排的事情之后,自我提升完,再来弄开往的事情。显然,我自己做不到。我个人从去年开始就有些担心开往正在我的误导下逐渐背离初衷,还有开往被其他的项目淹没(开往不是博客聚合项目。)我个人的领导能力很差,每当维护组群里要吵起来的时候,我这个INFP都很想发“别吵了,你们别吵了”。从小学开始到现在,由我主导的活动、团体比赛无一幸免地失败了,我一直在告诉自己那只不过是过去的自己能力不够,但一次又一次的巧合…上面论证了我在能力和人品上存在不足,外加我对项目的一些看法和期许。(2024年2月16日一些没用的话)

不要每天花出多少时间来维护,只需要能跟着长期做下来。(与某人的对话)

  1. 「你项」是我当时说的玩笑话,如今看来并不合适 ↩

四载心血筑联营,岂为虚名纸上争。
台前尽历风霜路,屏后谁同苦甘情?
春蚕吐尽心尤热,烛火燃残夜自明。
莫道无声真已默,山河不改月长庚。

博客聚合有感最先出现在林林杂语

HGAME 2026 WriteUp

2026-02-16 20:00:00

很多题不会做,等题解出来在这里一并记录自己当时做题的思路和照着题解做题的过程。

一周目

魔理沙的魔法目录

观察网络控制台

看控制台发现网页每过一段时间向/record发请求(通过Authorization Header 来鉴权),再通过/check检查是否达到足够的时间。tracker.js被混淆了,就是一个黑盒。用 Postman 试试看。

通过 Postman 给接口发请求

接口并没有限制 time 的大小,那我们填大一点,发完请求在浏览器等一会 flag 就出来了。

答案自己就出来了

但如果挂机等一个小时的话应该也能做出来。

Vidarshop

我自己没做出来这一题。

什么你这卖的东西这么贵 什么为什么都用uid了用户名还要抢啊, 什么凭啥admin可以管我们所有人的钱啊

题目的题干

update接口直接改的好像是User类的balance属性欸,但是User属性中balance似乎并非。。。该怎么修改balance呢

题目的提示

一开始看题目和登陆页面看感觉像是 SQLi,要直接登录到 admin 账号去管钱。注入试了两次之后发现能登录,登陆进去发现鉴权用的是 Bearer Token,token 为 JWT,用空密钥试了一下不行。然后对着/api/update接口调了半天,发现没用,睡觉。

第二天醒来接着看这道题,注册了一个用户名和 uid 都是 111 的账号,对着 JWT 解析出来的结果发呆。不知道想到什么了,试着把 111 输到密钥里,验证成功…是哪个地方有问题吗?为什么就验证成功了?我将 token 拿到工具里爆破了一下,工具给出结果:密钥还真是 111。

此时的我欣喜若狂

我猜想密钥应该和 uid 是一样的,因为 uid 也被放在 header 传给接口了。拿其他账号一试,我猜错了:是所有账号生成的 JWT 密钥都是 111 啊。这样就可以构造一个 admin 的 token 了。

然后用这个管理员的 token 在题目环境里试了试,知道了这些信息:

  • balance 貌似是所有用户的共有属性,前端的接口是假的(貌似就算用 admin 权限也无法修改,还没找到题目说的 admin 管钱是怎么管的)
  • 应用好像用 uid 来识别是否为管理员,ctf-token 来识别用户名(并且没有检验用户是否存在的逻辑)可以通过在接口请求的 body 里指定 username 来显示某个用户的 balance(虽然大家都共用同一个)
  • buy 接口能使 balance 实实在在地变少,但好像利用不了(没办法指定花的钱数,自然无法改为负数)

我又试了试,还是没有试出什么名堂来。题目归档之后,CopperKoi 同学把题解发给我,是我没见过的原型链污染。大概就是用前面伪造的 token 发请求到 /update 接口,payload 如下:

{"__init__": {"__globals__": {"balance": 2000000}}}

看样子题目确实是这么解的。

二周目

easyuu

很早以前玩虚拟空间的时候有部署过一个 PHP 文件就实现文件上传、查看、登录等功能,给我当时幼小的心灵带来一些震撼。

貌似发现了一个可以利用的接口

“uu是什么意思,很简单吗,分开来想想你就明白啦”,题干是这样说的。从同学口中得知,uu 是 upload & update 的意思。他还说,做题首先应该尝试拿到源码。我在题目环境的/app/update里发现了一个压缩包,像是源码,想着用download_file接口进行目录穿越下载下来又不行,浏览器好像会把../和链接的上一级进行“消消乐”。

要不要encode一下试试?

然后我就把源码的压缩包下载下来了。打开一看,Rust Cargo!

我将代码喂给 GitHub Copilot 和 Deepseek,Deepseek 给出一种可能的攻击方案:可以先在本地加恶意代码并编译,再通过上传接口将文件上传到/app/update(又是一个目录穿越),等代码自动更新之后拿到 flag。

import requests

url = "http://环境地址/api/upload_file"
files = {
    'file': ('../../../../app/update/easyuu', 
             open('target/x86_64-unknown-linux-musl/release/easyuu', 'rb'),
             'application/octet-stream')
}
response = requests.post(url, files=files)
print(response.status_code)
print(response.text)

但是没成功。上传文件这个接口的目录穿越可行。但自动更新这个机制能否利用不清楚,本地编译了几次,一直cargo clean cargo build --release --target x86_64-unknown-linux-musl,文件大小都是553928。估计编译出来的一直是老代码。

baby-web?

读附件的代码之后发现应用并没有限制 php 文件的上传,所以上传了一个一句话木马上去,然后用蚁剑连接。结果发现上传附件的文件夹只有我上传的文件,flag也不在文件系统当中。

HGAME 2026 WriteUp最先出现在林林杂语

新年新气象:网站快一点,再快一点

2026-02-16 12:28:02

WordPress 如果没有缓存,就会加载得超级慢。此前,我在网站上装了 Jetpack Boost、WP Super Cache 等插件。昨晚看到 此前发的文章,发现还能装一个 Redis Object Cache。

插件装得越来越多,我问 ChatGPT 有没有必要装这么多插件,它向我推荐了一种方案。如今,网站的访问速度基本得到了改善。秒开估计还是有些困难。

测速全绿(全部深绿还有点难)

Fastcgi Cache

WordPress 上的缓存插件都是在 PHP 运行的过程中起作用的,Fastcgi 缓存可以将服务器的缓存前置到 Nginx,如果 Nginx 匹配到缓存文件直接返回,请求不会给到 PHP。

在站点的 Nginx 配置文件伪静态部分后面加上如下片段,其中加粗部分为缓存的有效时间。

    set $skip_cache 0;
    if ($request_method = POST) { set $skip_cache 1; }
    if ($http_cookie ~* "wordpress_logged_in_") { set $skip_cache 1; }
    if ($request_uri ~* "/wp-admin/|/wp-login.php|/xmlrpc.php") { set $skip_cache 1; }
    if ($args != "") { set $skip_cache 1; }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-cgi-85.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_cache WORDPRESS;
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        fastcgi_cache_valid 200 301 302 30m;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;

        add_header X-Cache $upstream_cache_status;
    }

在 Nginx 的全局配置文件中加上如下片段。

fastcgi_cache_path /www/wwwroot/fastcgi_cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

Gzip 和 Brotli 压缩

知道创宇的加速乐本就有 Gzip 自动压缩的功能,默认开启且无法关闭。皓子的 静态资源预压缩:零运行时开销,极致节省带宽 这篇文章给我提供了一种可能的优化路径。因为原先安装的 Nginx 并没有带 Brotli 模块,所以我卸载掉重新编译安装了一个。

然后 apt 安装 Brotli,在网站目录里搜索 js、css 文件并生成其对应的 gz、br 文件。

随后,在 Nginx 站点配置文件中添加关于 Gzip 和 Brotli 压缩的设置。

brotli on; brotli_static on; brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json application/xml text/html image/svg+xml;

gzip on; gzip_static on; gzip_vary on; gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json application/xml text/html image/svg+xml;

但可能是因为 CDN,我并没能测试到服务器返回 br encoded 的内容。

WordPress的插件

弄好上面的缓存和压缩之后,把 WP Super Cache 插件移除掉网站访问起来也不会太卡。目前网站正在用这些优化速度的插件:

插件名 用途
Advanced Database Cleaner 清理修订版本等垃圾数据
CompressX 提供图片的webp和avif版本
Redis Object Cache 网站目前使用的唯一缓存插件

新年新气象:网站快一点,再快一点最先出现在林林杂语

HarmonyOS 6初体验

2026-02-13 13:59:09

晚上,咖啡豆子突然问我:“你手机用的是华为吗?有升级 HarmonyOS 6 吗?”起初注意过设置里有升级鸿蒙 6 公测版的选项,但没关注。如今被问到,才在网上看看,群里问问。去年春节买的手机如今也可以用上鸿蒙操作系统了。

从安卓的鸿蒙 4 升级到鸿蒙 6,升级前我有一些顾虑:

  • 应用数据会丢吗?
  • 学校要求的软件能否兼容?
  • 没有备案的软件可以使用吗?
  • ……

咖啡豆子晚上因为忍不住好奇就先更新了,我早上找了一些回答,问咖啡豆子,明确了一些信息:

  • 在更新之前系统会进行数据备份,开机后使用微信会自动回复聊天记录,软件数据不会丢。
  • 暂不支持鸿蒙的应用会变成“卓易通”版的应用,软件数据也不会丢,功能也都能正常使用,再也不怕把 2Fa 软件里的数据丢掉了。
  • 鸿蒙操作系统的应用商店有我们学校使用的定制款学习通,至于能不能签到就要开学之后试。

早上,带着一些忐忑,我点下那个更新按钮。手机自己进行下载、备份、安装,整个流程用时不短,备份时还不能切屏,好在我没有什么要用手机处理的事情。接近中午,手机才向我展现出“鸿蒙版”的新面目。

新系统,微信、QQ、支付宝…几乎所有应用都需要重新登录。鸿蒙最开始惊艳我的一点是:输入法在将短信收到的验证码填进去之后会随即把短信标为已读并划去通知。这个体验点真的很小,虽然我手动把消息划掉也用不了多少时间,但真方便不少。

临近中午用网易云音乐听歌,虽然网易云音乐还是安卓版,但体验上优化不少。我不需要进入网易云音乐就可以实现音乐的操控。比起此前将音乐控制放在控制中心,这样我连下划调出控制中心的步骤都省了。

感觉像是苹果的灵动岛?

听说 QQ 和微信少了很多功能,如今用了一天,并没有感觉到什么不方便。微信的消息通知还是跟安卓时的一样,估计是我禁止自启动了。欸,鸿蒙 6 好像连应用启动管理的设置都没有了(都是系统来管的嘛)。

下拉呼出通知栏,解锁手机,滑动退出这些操作都很丝滑。在鸿蒙用安卓应用(比如 Chrome)感觉有些问题,我在编辑文章的时候经常触发黑屏。

目前总的来说,鸿蒙系统惊艳了我,给不时要输验证码的我方便不少,流畅的使用体验也让我舒心不少。

HarmonyOS 6初体验最先出现在林林杂语

云上

2026-02-07 23:25:21

建议配合听蒼鈺Danielle翻唱的《归途有风》
晚上从飞机上看

此前来西安坐的是傍晚的飞机,飞在空中只能看到地面上的灯光,灯光连成一条一条路。有些城市像是依山而建,有些城市则从中心向四周放射状伸展。

起初一片黑,什么都看不见。突然出现地上发出的灯光,我们便伸向舷窗看。有时看得清楚,还能看到路上的车灯。

白天,白白的天。从西安回来的飞机是白天的。云多,天又亮,我能从舷窗看到清晰又细腻的云层。云层望不到边。小时候说云像棉花糖一样,看上去好像真的和棉花糖一样软。云多是好,我能看看此前没见过的云层;云多不好,我还没在白天看过高空下的城市呢。回到家之后,我将我在飞机上拍的照片和视频分享给我的父母。他们坐飞机回来时是深夜,看到这些照片时颇为震撼。

回来坐飞机用不到三小时,却隔五个月。

短聚,长离。

云上最先出现在林林杂语