“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
在西南航空航班上连上WiFi却没有互联网:一份飞行数据采集实验笔记
在飞机WiFi因支付失败而无法访问互联网时,作者转而利用门户后台接口采集飞行数据,完成了一次有趣的飞行数据可视化实验。
背景:一次意外的实验契机
2023年9月24日,作者 James Vaughan 在从圣路易斯飞往奥克兰的西南航空直飞航班上,本打算花8美元购买机上WiFi来完成一些工作。然而,西南航空的WiFi门户页面无法接受任何形式的支付,且没有给出有用的错误信息。他没有就此放弃,而是打开了浏览器的开发者工具,决定亲自动手看看究竟哪里出了问题。
这一举动引发了一系列有趣的发现——虽然无法接入互联网,但飞机WiFi网络内部仍然有一个可供访问的端点,这个端点会持续返回航班的状态数据。作者花了一整趟航班的时间收集并分析这些数据,最终产出了一篇细节丰富的飞行数据可视化笔记。
技术起点:发现隐藏的数据接口
当支付请求失败后,作者在浏览器网络调试面板中发现了一个反复请求成功的端点:current.json。浏览器网络面板中每个被发起的请求都会被记录,包括那些由页面内部JavaScript发起的、与用户直接操作无关的异步请求(AJAX)。这个current.json显然就是驱动WiFi门户页面中航班状态展示的数据源。
一个典型的响应如下:
{
sat_commlink_portal: {
status: 'conn_ok',
time: 'Sun Sep 24 22:02:19 2023'
},
pcent_flt_complete: 33,
altVal: 35998,
lon: -100.755,
satcomm_status: {
commlink: 'active',
linkparams: 'not-stale'
},
dtzone: 'PDT',
within_us: true,
etad: '06:19 PM',
lat: 40.201,
gspdVal: 487,
ttgc: '2h 25m',
dist_remain: 1167,
actime24: '15:54'
}
字段解读:一份飞行数据字典
作者根据自己的理解为这些字段添加了注释,它们涵盖了机组和乘客可能在门户页面上看到的几乎所有关键数据:
sat_commlink_portal.status: 卫星互联网连接状态,值为conn_ok表示连接正常sat_commlink_portal.time: 一个始终不变的时间字段,来源不明pcent_flt_complete: 当前航班完成的百分比,可能是基于距离或基于预计飞行时间计算altVal: 当前飞行高度(英尺)lat/lon: 当前经纬度坐标satcomm_status.commlink: 卫星通信链路状态,值为activesatcomm_status.linkparams: 链路参数状态,值为not-staledtzone: 目的地时区within_us: 航班是否在美国境内(布尔值)etad: 预计到达时间gspdVal: 当前地速(关于单位,作者最初标注为MPH,但HN读者指出更可能是节/knots)ttgc: 预估剩余飞行时间(time-to-ground-contact的缩写)dist_remain: 剩余航程(英里)actime24: 24小时制的当前时间(这里指目的地当地时间,而非飞机所在地时间)
作者提出了几个疑问:sat_commlink_portal.status和satcomm_status.commlink这两个状态字段究竟有何区别?pcent_flt_complete是基于距离还是时间计算的?actime24中的ac是否代表aircraft?——如果代表飞机,同飞机所在地时间应一致,但此处显示的是目的地时间。
采集方法:从浏览器工具到命令行循环
为了展开数据采集,作者利用了浏览器开发者工具中的"Copy as cURL"功能。该功能在Firefox和所有基于Chromium的浏览器中均可使用,它能将当前网络请求以带有全部请求头(headers)的curl命令形式复制出来,对于重放浏览器发出的请求非常方便。
在经过一些实验后,作者发现这个请求并非严格需要任何Cookie或自定义请求头,于是简化为一条简单的cURL命令:
bash
curl 'https://getconnected.southwestwifi.com/current.json'
接着,他设置了一个循环命令,每30秒采集一次数据并追加写入日志文件:
bash
watch -n 30 curl https://getconnected.southwestwifi.com/current.json | jq -c >> flight-logs
在这里,watch用于周期性执行后续命令,jq -c则将JSON输出压缩为单行以便于日志存储和后续处理。虽然当时还不清楚要拿这些数据做什么,但作者还是从采集到的第一刻开始存储,以最大化后续操作空间。
数据可视化:三个维度的飞行轨迹
作者在飞行途中编写了后续可视化脚本,并在落地后对数据进行了分析。整个可视化围绕三个核心维度展开:
1. 高度随时间的变化
作者的初始假设是高度数据会有较明显的波动,但数据结果推翻了他的预期。完整的高度变化图(包含下降阶段)因范围过大难以观察噪声,但如果移除下降过程、只看巡航阶段,高度的波动幅度仅在约20-30英尺(约6-9米)之间。对一款商业客机来说,这个稳定度出人意料。当然,作者也承认不清楚这一数据的正常范围以及数据本身的精确度。
2. 预计到达时间(ETA)随时间的变化
这一维度正如预期地相当稳定,尤其是在初始起飞阶段结束后,整个飞行过程很平稳。作者表达了对恶劣天气场景的好奇——如果因天气导致着陆延误,系统报告的ETA是随着航空公司的延误预期逐渐上升,还是会在临近终点时突然跳变?这显然是一个值得在有延误经历的航班上验证的问题。
3. 地速随时间的变化
与ETA类似,在巡航阶段地速也表现稳定。作者希望更早开始采集数据,因为他对航班从爬升到达到巡航速度的过程中地速曲线的形状非常好奇——那一段数据应该更有动力学特征。
值得注意的是,作者最初将这些速度值标注为MPH,但在Hacker News评论区有读者指出,航空领域通常以节(knots,海里/小时)作为速度单位——在标准大气条件下,487节大约相当于560 MPH,这个数值对波音737等机型来说非常合理。作者随后在原文中接受并更正了这一判断。
从门户主页入手:一种技术态度的体现
这个故事的迷人之处部分在于方法论本身——当常规路径(支付互联网服务)被阻断时,作者没有去抱怨或放弃,而是选择以附近一切可用的技术手段展开探索。它展示了几个实用的技术技巧:
Web调试思维:面对一个无法工作的Web页面,最有效的第一步往往是打开浏览器开发者工具,查看网络面板中究竟发生了什么——哪些请求成功了,哪些请求失败了,以及响应内容中包含了什么。
数据源发现:成功的
current.json请求透露了该门户页面的API结构和字段含义,这是前端页面数据交互的一个直接案例。数据采集管道:利用
watch、curl、jq等标准命令行工具,快速搭建了一套轻量级数据采集系统,无需编写一次性的重语言脚本。数据驱动的好奇心:在采集数据之前并不清楚它的用途,但采集足够多的数据后通过可视化分析反而能更清晰地回答相关问题——先跑数据再提问,是数据科学中的常见实践路径。
安全性反思
作者并未在文章中讨论任何安全问题,但他的做法值得从法律和安全角度思考:访问一个在飞机内部网络中向所有连接用户开放、且用于驱动门户页面状态的端点,并不涉及传统意义上的安全漏洞利用——它不需要认证、不涉及越权访问,门户自身就向用户代理发送了这些JSON。在互联网访问受限的环境中,利用已开放的内部网络服务获取可用信息,这一行为本身通常不被视为违规操作,但类似做法在真实复杂环境中应谨慎评估其合规性。
尾声
作者以这样的总结收尾:"我没有在这些数据中发现任何特别有用或令人惊讶的东西,但这是一个在飞行中消磨时间的很有趣的方式!"
一段没有互联网的航班,反而成了探索飞行数据世界的一次迷你实验。这或许是网络空间中一些最有趣时刻的标准模板:当你被限制在某条路径之外时,围绕边界的探索往往才最有创造性。