OOZOU
与我们联系
洞察

今日所学

来自 OOZOU 团队的简短实用笔记,记录日常工程与设计工作中的点滴收获。

全部主题shell 30ruby on rails 22ruby 12macos 10vim 7figma 4cli 3javascript 3heroku 1elixir 1
cliFebruary 16, 2026

用 YOLO alias 让 Claude Code 完全自主运行

--dangerously-skip-permissions 这个 flag 能让 Claude Code 不经确认提示就运行命令、编辑文件。每次都要敲这么长一串很快就会让人厌烦。

cliMarch 20, 2024

在 GNU/Linux 的独立 Nvidia GPU 上运行命令(例如 ollama)

要确保某个命令(CLI)在 GNU/Linux 中使用你的 NVIDIA GPU,可以在命令前加上环境变量 \\NV\PRIME\RENDER\OFFLOAD=1 和 \\GLX\VENDOR\LIBRARY\NAME=nvidia。

ruby on railsFebruary 10, 2022

用 Pundit Policy 管理 permitted parameters、默认值与各 action 的参数

要管理 permitted params,你可以在你的 policy 中加入 permitted\attributes 和 permitted\attributes\for\#{action},例如

ruby on railsJanuary 31, 2022

在 Turbo 中用 `requestSubmit` 提交表单

Turbo 会监听 form 上的 submit 事件。因此,用 JS 提交表单时,请一律使用 requestSubmit。

ruby on railsJanuary 19, 2022

在 GitHub Actions 中让 Rubocop 与 ESLint 忽略 bundled gems

Rails 项目在 GitHub actions 中通常会把 gems 安装到 vendor 目录,方便在后续运行时使用缓存。

macosAugust 20, 2021

为你的“局部”截图或纯边框图片加上 macOS 风格的阴影

不管你喜不喜欢,macOS 截取完整应用程序窗口的快捷键(⇧- ⌘- 5)默认会在保存的图片周围加上一层淡淡的阴影。当你把截图或图片放进文档时,这能让画面更…

figmaJune 22, 2021

用叠加 hue 填充效果的 overlay 图层做出单色页面

用叠加 hue 填充效果的 overlay 图层做出单色页面

figmaJune 18, 2021

按住 ⌥option 沿输入框点击拖动即可调整尺寸

按住 ⌥option 沿输入框点击拖动即可调整尺寸

cliMay 25, 2021

git check-ignore

这条命令可以帮你检查某个文件或路径是否被忽略,加上 -v 参数还会显示命中的 exclude 规则(文档)。

rubyApril 30, 2021

让 Pry 支持粘贴使用行首点记法的多行 Ruby 区块

我们现在很常使用行首点记法,例如

ruby on railsApril 18, 2021

Rails 6、Ruby 3、Bootstrap 5 与 Hotwire

以 Hotwire 扩展 Bootrails 的博客文章: 所有最新潮的东西(截至我写这篇 TIL 的时候):

figmaFebruary 17, 2021

在 Figma 中把文本对象转成 Title Case

你可以设置文本框的属性,让里面的文字自动转成 Title Case(也支持其他常见的大小写格式)

herokuJanuary 6, 2021

缩减 Heroku Slug 大小

首先,安装 Heroku Repo plugin:

shellDecember 8, 2020

在 Bash 和 Zsh 运行无痕/私密命令

只要在命令前面加一个空格,它就不会被存进 ~/.bash\_history。例如 qrencode -o out.png "Some secret text"

macosNovember 7, 2020

将 SVG 转成 PNG

在 MacOS 上,安装 inkscape(用 brew),然后这样使用:

figmaOctober 31, 2020

Figma 中 CMD+Click 的行为

在 Designer mode 按住 ⌘CMD 点击左键,会选中该 frame/group 里最深层的图层;而在 inspector/developer mode 这么做,则会选中你选区里最外层的对象/frame/group…

ruby on railsOctober 27, 2020

Rails Cache-Control

若要在 Heroku 上启用静态资源的 cache-control 响应头设置并使用 CDN:

shellOctober 22, 2020

用 homebrew 升级 postgres 数据库

要升级 postgres,可以运行

ruby on railsOctober 14, 2020

修正 Heroku rails console 的输入问题

如果你在 Heroku(或其他地方)的 rails console 里粘贴多行内容,可能会遇到各行“互相渗透”挤成一团的问题。

rubyOctober 14, 2020

不含插值的 Heredoc

有时你想用 Ruby 的 Heredoc,但不希望它做插值('#{....}')。只要给你的标识符加上一对单引号就能做到:

ruby on railsOctober 14, 2020

在 Rails 中为 DOM 生成唯一 ID

Rails 有许多很棒的 view helper,其中之一就是 dom\id:*

ruby on railsOctober 13, 2020

为 Rails 5 attributes API 添加自定义类型

Rails 5 的 attributes API 让我们可以非常轻松地创建 form object。

macosOctober 13, 2020

在 macOS 的 Dock 加入空白间隔来为应用程序分组

打开 term(或同类终端)并粘贴下面这行命令:

shellOctober 13, 2020

用 Amazon AWS S3 CLI 复制文件并设置权限

打开 term(或同类终端)并粘贴下面的内容:

shellOctober 13, 2020

愤怒的 Docker 大清除

如果你在 Docker 上遇到 No Space left 错误,这是暴力解法:

ruby on railsOctober 13, 2020

不经过 HTTP 把文件附加到 ActiveStorage

如果你想附加一个在磁盘上生成的文件,或者从用户提交的 URL 下载下来的文件,可以这样做。

rubyOctober 13, 2020

在 Ruby 中自动创建中间层的 Hashtable

所有中间层的 hashtable 都会魔法般地自动创建出来

shellOctober 13, 2020

用相同文件名 + 前缀来备份文件

注意:其实你可以在任何命令中使用 !#:1,因为它代表传给该命令的最后一个参数。

shellOctober 13, 2020

Bash alias 与魔法

我在用户目录下单独放了一个文件 ~/.aliases,用来存放我所有的 bash alias。我很常用 alias,也经常新增,所以写了一个 bash function 来随手添加…

elixirOctober 13, 2020

用 Elixir 计算 anagram

例如:

rubyOctober 13, 2020

用 rbenv 为单条命令切换 Ruby 版本

你可以用 rbenv local 暂时切换 Ruby 版本

macosOctober 13, 2020

在 macOS 上更改系统名称

在 term(或同类终端)中,复制并粘贴:

rubyOctober 13, 2020

把 VS Code 的 Go to definition 改成 Cmd+Click

只要打开你的用户设置 JSON 文件,加上这个选项:

shellOctober 13, 2020

查询 IKEA 商品库存

如果你正在等某件 IKEA 商品补货,这里有一个能自动掌握最新状态的实用解法。这篇指南会说明如何用 shell script 检查 IKEA 的库存状况,并在…

shellOctober 13, 2020

用 shell script 检查命令是否存在

用 shell script 检查命令是否存在

macosOctober 13, 2020

Chrome 标签页操作技巧

有时候我想回到上一个浏览过的页面,但又想保留当前这个页面。用快捷键就能轻松做到

macosOctober 13, 2020

清理 brew 上过时的 formula

用 brew cleanup 腾出一些空间!

ruby on railsOctober 13, 2020

从 Enumerable 创建 Hash (Rails 6.0)

新方法让你可以从 Enumerable 创建 Hash:

ruby on railsOctober 13, 2020

编写幂等的 migration

当你要写破坏性的 migration 时,如果要删除数据表,请加上 if\exists: true;如果要添加或删除字段,请先检查数据表是否存在…

shellOctober 13, 2020

创建你自己的 git 命令(alias)

有没有想过把 git 命令缩短一点?你当然可以用 shell alias,但那样得时刻记住上下文,才不会忘记每个 alias 代表什么。其实你可以用 alias 在 git 里定义自己的…

shellOctober 13, 2020

删除 Git 中已经 merge 的 branch

你可以在 egrep -v 'master|develop|foo|bar' 里加上更多想保留的 branch

shellOctober 13, 2020

删除已 merge 的 git branch

删除所有已经 merge 的本地 git branch 的实用 git 命令 git branch --merged | egrep -v "(^\\|master|dev)" | xargs git branch -d*

javascriptOctober 13, 2020

JS 的解构赋值

简单的例子 javascript const [a, b, ...c] = [10, 20, 100,200] // a= 10, b=20, c=[100,200] const { first, second } = { first: 1, second: 2 } // first = 1, second = 2

shellOctober 13, 2020

在 Git 中比较本地文件与远程版本的差异

只要运行下面这条命令,就能拿到与远程版本的 diff

shellOctober 13, 2020

根据 commit 找出所属的 branch

c198bb715 Make default expired description logic pretty `

shellOctober 13, 2020

把先前的 commit 强制 push 到 repo

如果你已经 push 了一些代码,想要 force push 某个较早的 commit,可以这样做 shell git push origin +commit\sha^:branch\name

shellOctober 13, 2020

获取当前的 git branch 名称

获取当前的 git branch 名称

macosOctober 13, 2020

获取当前连接的 wifi 密码

password: "!forHackers" `

shellOctober 13, 2020

浏览单个文件的 Git 历史记录(GUI)

浏览单个文件的 Git 历史记录(GUI)

javascriptOctober 13, 2020

如何在 JavaScript 中用一行代码创建带属性的 HTML 元素

在开发 JavaScript 项目时,动态创建 HTML 元素是很常见的需求。传统上,你可能要写好几行代码来创建元素,再一个个设置属性…

ruby on railsOctober 13, 2020

如何在你的项目中找出 god objects(Rails)

进入项目根目录,cd 到 app/models(当然是在 CLI 里),然后运行 wc -lw \ | sort -u*

vimOctober 13, 2020

如何退出 Vim

1. 安装最新版本的 Vim 2. 在 Vim 中打开一个文件 3. 按 ⌘-Q 关闭终端 4. 重新打开终端

vimOctober 13, 2020

如何真正!!退出 vim

在终端里

vimOctober 13, 2020

如何在 VIM 中用 sudo 保存文件

如何在 VIM 中用 sudo 保存文件

ruby on railsOctober 13, 2020

提交到另一个 action 的 HTML 表单

我很早就知道可以通过 submit 按钮提交一个值,借此判断表单是由哪个按钮提交的,例如

ruby on railsOctober 13, 2020

想覆盖之前设置的排序时

如果你想覆盖之前设置的排序(哪怕是通过 default\_scope 设置的),请改用 reorder()。

rubyOctober 13, 2020

提升 Bundler 性能

通过用多个 job 并行运行 bundler 任务来提升 bundler 性能:

shellOctober 13, 2020

终止卡住的 rails

我想终止在特定 port 上运行的 rails。(我的笔记本上跑着好几个 rails 服务器。)

shellOctober 13, 2020

终止无响应的 SSH session

SSH session 偶尔会失去响应。如果我让笔记本进入睡眠,这种情况相当常见。与其直接关掉标签页,你可以使用 SSH Escape Characters 来终止 session

ruby on railsOctober 13, 2020

限制数量的 has_many 关联

限制数量的 has_many 关联

shellOctober 13, 2020

列出目录结构并排除一个或多个目录

想过在显示当前目录结构时排除一两个目录吗?

ruby on railsOctober 13, 2020

列出你的 model 名称

注意:RUBYOPT=-W0 可以在运行 rails 命令时抑制警告信息,避免冗长的输出。

shellOctober 13, 2020

用 hub 从命令行创建 pr

先用 brew 安装 hub:brew install hub 然后使用像下面示例这样的简单命令:hub pull-request -m "best pr ever" -b oozou:develop -h feature/awesome-improvements

macosOctober 13, 2020

我最常用的 slack 快捷键

⌘-K(or T) 打开频道切换器(我完全靠这个快捷键在频道间移动,并把 slack 设置成隐藏所有没有新消息的频道)

rubyOctober 13, 2020

optional relation + RSpec 搭配 shoulda-matchers

User 1 - 0..1 Laptop

ruby on railsOctober 13, 2020

Postgres 函数与 Non-sargable 查询

在 where 子句中使用 postgres 函数可能会让查询变成 non-sargable。

ruby on railsOctober 13, 2020

PostgreSQL UPDATE Join

这个查询演示了如何使用 PostgreSQL 的 UPDATE join 语法,根据另一张数据表的值来更新某张数据表的数据。例如;

vimOctober 13, 2020

在任何 Vim 模式下快速上下移动整行

我在 vim 里经常上下移动代码行,所以创建了一些 mapping 让这件事更轻松。这些 mapping 对应 ⌘-j 往下移、⌘-k 往上移。在 normal、insert 和 visual 模式都能用。vim nnoremap <D-j> :m…

rubyOctober 13, 2020

移除 ruby 2.6 内置的 bundler

在已安装 bundler v2 的情况下用 ruby 2.6+ 生成 rails 6 应用,会创建无法使用的 binstubs。如果你看到这个错误 You must use Bundler 2 or greater with this lockfile. 你可以移除…

shellOctober 13, 2020

从你的 branch 移除不要的 commit

从你的 branch 移除不要的 commit

vimOctober 13, 2020

在 VIM 中重命名文件

这是我在 VIM 中用来重命名文件的一个很方便的函数(在 MacVIM 和 Neovim 也能用)

macosOctober 13, 2020

在 DELETE 之后重置 Postgres 数据表的 sequence

从数据表删除最近的记录之后,如果自动递增字段的连续性对你很重要,可以重置它的 sequence 计数器。以下面这张 users 数据表的操作为例:

shellOctober 13, 2020

在 Git 中还原被删除的文件

在 Git 中还原被删除的文件

rubyOctober 13, 2020

对你当前的 branch 运行 rubocop

对你当前的 branch 运行 rubocop

rubyOctober 13, 2020

在 commit 之前运行 rubocop

Git hooks 对于在 Git repository 中自动化任务、落实代码规范来说非常强大。Git hooks 的一个常见用途,就是在允许 commit 之前先运行自动化测试和代码分析工具…

shellOctober 13, 2020

对不同的输入重复运行同一条命令

如果你必须对不同的输入重复运行同一条命令。

ruby on railsOctober 13, 2020

Rails 中的 scope or scope

scope :human, -> { user.or(author) } scope :terminator, -> { admin.or(robot) } `

shellOctober 13, 2020

查看先前 commit 中被删除的文件 [git]

查看先前 commit 中被删除的文件 [git]

shellOctober 13, 2020

用 cURL 发送消息到 Slack

Slack 允许你通过 Webhooks 服务发送消息

shellOctober 13, 2020

对旧的 repo 做 shallow clone

如果你接下来要开发的 repo 不需要完整的 git 历史,可以指定 clone 深度,只 clone 这个 repo 的 x 个 revision。

ruby on railsOctober 13, 2020

在你的 Rails app 中显示 TODO 和其他注释

你知道可以用 rails notes 显示 rails app 中所有的 TODO/OPTIMIZE/FIXME 吗?

javascriptOctober 13, 2020

用 Vue.js 实现简单的 Flux 架构

对于只需要简单状态管理模式的小型 app,我总是用一个组件来保存整个 app 的状态,也就是一个 container。它作为 single source of truth,让 app 引用自己的状态…

rubyOctober 13, 2020

抑制 rspec 警告

$ RUBYOPT=W0 bundle exec rspec spec/ ...

ruby on railsOctober 13, 2020

在 rails log 加上有用的标签信息

刚学到 rails 的 tagged logging。你知道可以用下面的方式为 log 加上标签吗

vimOctober 13, 2020

在 VIM mapping 中使用大写字母

注意:@joe 这解决了你的问题 :D

macosOctober 13, 2020

用 FFmpeg 和 Apple Script 压缩视频

打造一个可以把视频拖放上去、大幅压缩视频的应用程序:

shellOctober 13, 2020

用 `host` 获取更多域名信息

你可能会用 dig 从 DNS 服务器查询域名的 A/CNAME/MX 等记录。但如果只是想快速看个概况,就用 host 吧:

ruby on railsOctober 13, 2020

在 collection JSON schema 中使用 minItems/maxItems

要让你的 collection JSON schema 更可靠,请使用 minItems 和 maxItems,这样你才能信任你的 API。

vimOctober 13, 2020

把 Neovim 当作 git difftool 使用

只要把这段贴进你的 ~/.gitconfig

shellOctober 13, 2020

使用 Git 的 aliases 功能

Git 允许你通过 config 在内部创建 alias。你的全局 config 应该位于 ~/.gitconfig

shellOctober 13, 2020

在 Github 上监控 CI 状态

安装了 Github 的 hub 之后,你可以像这样获取当前 branch 的 ci-status:

rubyOctober 13, 2020

FactoryBot 也可以用在非 ActiveRecord 的 model 上

你可以用 FactoryBot 的 initialize\with* 方法,以任何你想要的方式初始化对象,让你能随心所欲地为任何对象创建 factory

shellOctober 13, 2020

列出文件树的 Zsh function

在命令行浏览目录时,若能以“tree”格式查看目录和子目录的结构,通常会很有帮助。虽然已经有很多现成工具,例如…

有项目想法吗?

我们很想听听您正在做的产品。

开始对话hello@oozou.com
OOZOU Logo

曼谷 · 新加坡 · 香港

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

服务

  • Web 开发
  • AI 智能体与生成式 AI
  • 移动应用开发
  • 数据分析与工程
  • UI/UX 与产品设计
  • 数字化转型

公司

  • 关于我们
  • 加入我们
  • 博客
  • 案例研究
  • Today I Learned
  • 联系我们

更多

  • 行业
  • 合作伙伴网络
© 2026 OOZOU. 版权所有。
隐私政策行为准则反贿赂反贪腐政策