“写笔记”支持四种格式——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)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
Docker
Docker — 轻量级容器引擎,让应用打包、分发、部署像点外卖一样简单。
最近有个朋友问我:“你天天写代码,部署环境搞来搞去的,不烦吗?”我笑了笑,没说话,直接给他甩了个Docker。三分钟后他回了一句:“卧槽,这玩意儿我早该用。”
Docker到底是什么?它解决了什么问题?简单说,你写了一个Python程序,本地跑得飞起,一部署到服务器就崩。原因?Python版本不对、缺个库、系统环境不一样。Docker就是来解决这个“在我电脑上明明能跑”的世纪难题的。它把你的应用和它需要的环境打包成一个“容器”,这个容器在任何装了Docker的机器上都能跑,结果完全一致。
说白了,Docker就是给应用装了个“随身行李箱”,走到哪都能打开用,不用再重新搭环境。
下载安装
先别急着看教程,得先把它装到电脑上。Docker官方提供了多平台的安装包,下载地址在这里:
Windows用户
直接下载Docker Desktop for Windows,双击安装。安装过程中会提示启用WSL2(Windows Subsystem for Linux),按提示操作就行。装完后重启电脑,任务栏会出现鲸鱼图标,点开就能用。注意:Windows 10专业版或企业版体验最好,家庭版也能用,但可能需要手动装WSL2。
macOS用户
同样下载Docker Desktop for Mac。Intel芯片和Apple Silicon(M1/M2)的安装包是分开的,别下错了。双击.dmg文件拖到Applications文件夹,打开后会在菜单栏出现鲸鱼图标。第一次启动会弹窗要权限,点“允许”就行。
Linux用户
Linux用户最幸福,一条命令搞定:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
装完之后记得把当前用户加到docker组,不然每次都要sudo:
sudo usermod -aG docker $USER
newgrp docker
装完后打开终端输入:
docker --version
看到版本号就说明成了。再跑个hello world验证一下:
docker run hello-world
如果看到一段欢迎文字,恭喜你,Docker已经能正常工作了。
基础使用教程
既然装好了,咱们来点实际的。Docker的核心概念就三个:镜像(Image)、容器(Container)、仓库(Repository)。别被术语吓到,我用人话解释:
- 镜像:一个只读的模板,里面包含应用和它需要的环境。比如一个装了Python 3.11和Flask的系统快照。
- 容器:镜像跑起来后的实例,就像一个轻量级的虚拟机。你可以启动、停止、删除它。
- 仓库:存放镜像的地方。Docker Hub是官方仓库,里面有几百万个现成的镜像,你需要的软件大概率都有。
第一步:拉取一个镜像
比如你想跑一个Nginx服务器,不用自己装,直接拉:
docker pull nginx
Docker会自动从Docker Hub下载最新版的Nginx镜像。你也可以指定版本,比如docker pull nginx:1.25。
第二步:运行容器
拉下来之后跑起来:
docker run -d -p 8080:80 --name my-nginx nginx
解释一下参数:
-d:后台运行(detach模式)-p 8080:80:把本机的8080端口映射到容器的80端口--name my-nginx:给容器起个名字nginx:用哪个镜像
现在打开浏览器访问http://localhost:8080,就能看到Nginx的欢迎页面。就这么简单,你已经成功部署了一个Web服务器。
第三步:管理容器
查看正在运行的容器:
docker ps
看所有容器(包括已停止的):
docker ps -a
停止容器:
docker stop my-nginx
启动已停止的容器:
docker start my-nginx
删除容器:
docker rm my-nginx
第四步:构建自己的镜像
光用别人的镜像不过瘾,咱们自己做一个。假设你有一个Python Flask应用,项目目录结构如下:
myapp/
├── app.py
└── requirements.txt
在项目根目录下创建一个Dockerfile,内容如下:
# 使用官方Python镜像作为基础
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY app.py .
# 暴露端口
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
然后构建镜像:
docker build -t my-flask-app .
-t是给镜像打标签,方便识别。构建完成后运行:
docker run -d -p 5000:5000 my-flask-app
访问http://localhost:5000,你的Flask应用就跑起来了。
第五步:用Docker Compose管理多容器应用
现实中的项目往往不止一个服务,比如一个Web应用需要前端、后端、数据库。一个个手动启动太麻烦,Docker Compose就是干这个的。
在项目目录下创建docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
然后一条命令启动所有服务:
docker-compose up -d
停止所有服务:
docker-compose down
Docker Compose会自动处理依赖关系,先启动数据库再启动Web应用。这个功能对开发环境尤其好用,一个文件就能定义整个技术栈。
进阶技巧
基础够用了,再分享几个常用的“骚操作”。
1. 清理磁盘空间
Docker用久了会堆积大量无用的镜像、容器、卷,磁盘空间不知不觉就满了。一键清理:
docker system prune -a --volumes
这个命令会删除所有停止的容器、未使用的网络、悬空镜像,以及没有被任何容器使用的卷。慎用,但很管用。
2. 进入容器内部调试
有时候需要看看容器里的日志或文件,可以直接进入容器:
docker exec -it my-nginx bash
如果容器里没有bash(比如基于alpine的镜像),用sh:
docker exec -it my-nginx sh
进去之后就跟操作普通Linux一样,可以查看文件、跑命令。
3. 挂载本地目录到容器
开发的时候频繁改代码,每次都要重新构建镜像太慢了。可以用卷挂载,让容器直接读取本机目录:
docker run -d -p 5000:5000 -v $(pwd):/app my-flask-app
这样你改了本机的代码,容器里的应用也会立刻生效(前提是应用支持热重载)。开发时特别爽。
4. 多阶段构建减小镜像体积
Python镜像动辄几百兆,但生产环境其实只需要运行环境。多阶段构建可以大幅减小体积:
# 第一阶段:构建
FROM python:3.11-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 第二阶段:运行
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY app.py .
CMD ["python", "app.py"]
最终镜像只包含运行所需的最小文件,体积能缩小一半以上。
5. 使用.dockerignore
和.gitignore类似,在项目根目录创建.dockerignore文件,排除不需要的文件:
__pycache__
*.pyc
.git
.env
构建镜像时就不会把这些垃圾文件打包进去,既加速构建又减小体积。
写在最后
Docker不是那种学了要背一堆命令的工具,它是真正能帮你省时间的。以前我部署一个项目,光配环境就得半小时,现在一个docker-compose up搞定一切。而且团队协作时,新人来了不用装什么MySQL、Redis、Node.js,装个Docker拉镜像就能跑,效率提升肉眼可见。
如果你还在手动配环境、被“在我电脑上明明能跑”折磨,真的,试试Docker。相信我,用上之后你会后悔——后悔没早点用。
有什么问题欢迎留言讨论,踩过的坑也可以分享出来,大家一起避雷。