15bd774f997dc7fae5f8faae791cca7d

几个可以简化 rails 开发命令的函数

在 rails 的 bin 目录下,有一些可执行文件,你在开发过程中使用这些可执行文件来操作,从而使用项目自带的可执行文件

但是默认的 rails 命令使用的是全局的 rails ,如果我希望使用项目中的可执行文件,就需要执行 bin/rails, 略微繁琐,所以有没有一种可以更加简单的方式呢?答案是肯定的。你可以通过在你的命令行中添加一个新的命令来实现这个效果。

具体代码如下:

funciton rx(){
	if test -f "bin/rails"
	then
	  bin/rails $*
	  exit
	else
	  rails $*
	fi
}
funciton yx(){
	if test -f "bin/yarn"
	then
	  bin/yarn $*
	  exit
	else
	  yarn  $*
	fi
}
function bx(){
if test -f "bin/bundle"
	then
	  bin/bundle $*
	  exit
	else
	  bundle  $*
	fi
}
Code language: PHP (php)

你可以将这段代码粘贴在你的 .bashrc.zshrc  文件中,从而使其在命令行启动时可用。

这段代码很简单, 定义了三个新的函数,后续我们在命令行输入 rxyxbx 的时候,会自动调用当前目录或全局的 railsyarnbundle 目录。这样你可以在任何一个目录下使用 rx 命令来操作。

三个函数的结构都是一样的,首先检测当前目录下的子目录是否存在 rails 可执行文件,如果存在,就调用本地的函数,并将参数传递。如果不存在,就调用全局的函数,将参数传递。

总结

我们可以通过定义简单的一些命令,简化项目的开发。而这样的思路,你可以应用在任何一个项目中,而不仅仅是 rails 项目中。

yellow Volkswagen van on road

2020 年旅行总结

2020 年是特别的一年,这一年我们遭遇了 COVID-19,我们见证了武汉数月的封城,也见证了下半年航司的大促销。这一年是独特的一年,我也想单开一篇,来记录我的 2020 年。

上半年

2020 年的上半年,是肃穆的。

一月初时,我还在鹅厂搬砖,随着团队的安排,从深圳前往广州,参与了广州的「微信公开课」活动。到了一月末,我就在春节回家的高铁上,见证了武汉的封城。

下半年

2020 年的下半年,是愉悦的。

到了 2020 年的下半年,疫情开始逐渐肃清,武汉也开始解封。各航司开始进行疫情之时的自救,各家纷纷推出了自己的随心飞套餐。

恰逢我原计划要在 9 月份离开鹅厂,所以就购买了南航的随心飞(又在随后的双十一过程中,购买了海航的随心飞)。

在九月份离开鹅厂后,就开始了我的随心飞之旅。

  • 9 月份从深圳飞往西安、北京;从深圳飞上海;
  • 10 月份国庆结束还用随心飞从河南飞回了广东;
  • 10 月份从深圳飞海口,来了个当日往返,闪现一波;
  • 11 月份从深圳飞往沈阳,并从沈阳一路向北,途径长春,前往哈尔滨。
  • 12 月份,又再次从深圳飞往北京。

上半年的欠下的旅行,似乎在下半年都一水的飞回来了。

回顾这半年,随心飞我亏本了么?没有,随心飞让我做了很多过去我不敢想,也没有钱去做的事情(比如一周连续飞行)

这半年里,我看过了太多过去我不会看,以后也可能不会再看的东西。过去的生活,很美好。

2021 年

2020 年虽然我去了很多地方,但迫于种种原因,并没有完成我的打卡中国之旅。好在我之前也买了海南航空的随心飞,明年依然可以继续随心飞。而且,最近南方航空的随心飞又出了 2.0,我想我依然会购买吧。

毕竟,中国这么大,我想去看看。

group of fresh graduates students throwing their academic hat in the air

你的大学应该如何生活?

大学是目前这个时代,不少人会走上的一条路。

但,大学对于每一个走这条路的人意义不一而同。有的人目标明确,有的人浑浑噩噩。这条路怎么走,大部分人都说不清。

而说不清的核心因素,是从未想清楚目的地是何处,没有了目的地,也就没有了指引方向的灯塔,不过是随波逐流。

在这种情况下,只能跟着别人走,随大流。

今天我在看别人的博客的时候,发现了上海交通大学的生存指南,写的很现实,也很真实。我觉得有必要推荐给看我博客的大学生、准大学生们。

或许你没有想清楚自己的目的地是何处?或许你还没有理解大学生活中的某一些细节为何是这样。这本电子书结构化的将你在大学会遇见的事情都告诉你,让你通过了解别人的世界,引导自己的学习和生活。

上海交通大学生存指南:https://survivesjtu.gitbook.io/survivesjtumanual/li-zhi-pian/huan-ying-lai-dao-shang-hai-jiao-tong-da-xue

此外,还有一本书要推荐给你,来自黄灯的《我的二本学生》,实际上,如果你是更高的学府,你可能不会面临书中所提的问题,但不意味着你不会遇见类似的问题。我倒是建议,你可以读一读这本书,了解别人的生活现状,以明晰自己的生活定位。

此外,关于学历这个问题,我一直都觉得,学历只是你曾经获得某个技能的标志,但对于你的未来,并非完全由学历定位,而且,在绝大多数的企业中,学历是一个门槛,但这个门槛并非完全无法逾越,有很多的方式可以绕过门槛,从窗户爬进面试现场。所以,与其说「我就是二本学生,我只能这样」,不如想想如何才能做到「我要突破二本给我的限制,让自己变得更好」。

red and white heart illustration

如何实现子域名应用?

多域名应用的心思是从 WordPress.com 的时候起来的,当时一直在想,如何实现这种多域名的应用?

最近看到了一个实现,算是解了心头的疑惑。

如果不涉及 SSL ,子域名应用的实现并不算复杂,可以简单的通过将用户请求进行 rewirte 转发的方式,来实现对请求的转发。

举个例子,比如将 x.example.com 转发到 www.example.com/pages/x 中,这样在应用中就无需单独对于多域名编写代码,只需要从 Path 中提取前缀,并进行数据库查询,将数据结果返回回去就好。

如果涉及到 SSL,子域名应用的实现相对复杂一些,涉及到了 SSL 证书的管理。不过也有实现简单的方式,那就是购买一个泛域名证书,这样 Nginx 会通过泛域名证书提供服务,因此,应用程序在处理上和上面的逻辑一样,只要将请求转发就好了。

如果涉及到子域名绑定,则相对麻烦一些,需要能够编程式的操作 Nginx 的代码文件,不过也还好,你可以在应用的目录下动态的生成 Nginx 的配置文件,并在默认的配置文件中 include 动态生成的目录,从而避免文件生成后的管理成本太高。此外,需要借助 execl ,执行命令对 Nginx 执行检查和重启的操作。

此外,也可以考虑直接使用 default_server ,从而直接将所有未识别的情况转发到某个特定的路径。不过需要在应用中添加请求判断,对于无法绑定的域名,提供一个特定的反馈,引导用户进行绑定。

总结

如果你的应用不涉及到 SSL,也不涉及到域名绑定,则十分简单,直接使用 Nginx 转发请求即可;但如果涉及到了 SSL,则需要考虑泛域名证书,从而降低编程的成本;如果涉及到了域名绑定,则需要为应用程序新增对 Nginx 操作的能力,从而降低应用的管理和研发成本。

继续阅读
f6b45291a31c61dd2fea43f6269feb40

如何面对朋友的推荐

昨天和朋友去街上溜达,期间他给我介绍了一个拍夜景模式的 App,叫 「Night Mode」,在他给我拍样片的时候,我就付费把 App 买了下来。

他很惊讶,为什么我会这么快买?,「你是我见过买的最快的」。


为什么会有这个问题?

可能是因为过去的人们都无法相信他,也不会选择相信他。所以就要再三思索才决定是否要购买和选择使用他所推荐的产品。

但对于我而言,我并不会在每一次都这样做。实际上,我的推荐机制的运作是基于对于人的信任而进行的。

举个例子,就这次的场景来说,是一个朋友向我推荐他自己觉得好用的 App。那我思考的是:

  1. 这个人可靠么?答案是肯定的。
  2. 这个人用过的 App 多么?他推荐的好么?答案也是肯定的,他手机里装了几百款 App,同一类型的软件往往会下载多款。
  3. 这个 App 贵么?答案是否定的,这个 App 并不算特别贵,18 元。
  4. 这个 App 的价格,超出我对于这个人的信任了么?答案是否定的。这个价格不会让我损失对他的信任。

既然上面的问题都指向了可以买,那我大可以相信他的选择,直接下单购买。

很简单的几个问题,就把问题的决策做完了。何乐而不为呢?

woman holding white mug while standing

你需要花钱买流量么?

因为在做视频的缘故,我在微信上加了一些做视频的群。今天看到一个话题,很有意思,拿出来说说我的看法:

你是否需要为你自己的账号购买流量?到底是应该买流量还是做 SEO?

这个问题对于不同的账号所有者,不同的账号所处状态,是有所差别的,并没有一个可以通用的答案。不过,我可以分享一下我自己对于这个问题的思考,来帮助你做出选择。

两个问题,帮你分析自己是否需要购买流量?

是否需要花钱买流量的思考维度1: 购买流量的钱,对于你来说是否是稀缺的

购买流量是需要成本的,我们需要评估这个成本我们是否可以承受。如果这个成本对于我们来说无法承受,自然就不再存在购买流量的可能。

而不同的平台,流量的成本并不相同,购买的方式也天差地别,比如抖音官方提供了加量的平台:抖+,而 BIlibili 则没有在官方提供类似的功能。

期间的价格也不同,低的可能几百块钱就好,高的可能上万也只是开始,根据你所在的平台,而有所差别。

是否需要花钱买流量的思考维度2: 购买流量的钱,关注的是转化还是试错?

时间是宝贵的,金钱也是宝贵的,当我们投入资金去购买流量的时候,我们会有一个预期,这次流量投放能为我们带来什么。这个时候就需要思考,我们有钱购买流量时,我们购买流量的目的是什么?不同的目的对于我们自己有不同的需求。

如果你关注的是转化,那么你就要先确保自己的内容拥有足够的转化,有足够的积累来转化这些内容。不然买来的流量转化率很低,白白浪费资金;倒不如慢慢做 SEO ,一点点提升。

而如果你关注的是试错,则应该在进行流量投放时,选择小额多次的方式,选择不同的内容进行投放,通过多样化的投放,找到目标客户群体关注内容。通过金钱来提升试错的效率,降低试错的整体成本,也是一个不错的选择。

总结

购买流量本身只是一种工具,倘若你明确的说明,并且不以此为一种欺骗上级的手段,购买流量未尝不可。用好购买来的流量,换来更快的找到目的地,并不亏。

其实购买流量的事情很常见,举个大家最熟悉的例子,游戏行业经常会有购买流量的行为,也有专门的发行公司来负责流量的采买和游戏的分发。而游戏敢这么做,大部分时候是他们的商业模式已经得到了验证,需要的更多是花钱节省时间,去快速的覆盖到足够多的人群,提升转化后的总量。

two women sitting on leather chairs in front of table

从拒绝需求讨论开发者在团队中的身份

我今天在听播客时,听到了 XMind 的创始人园长提到了一个观点

我们要把团队成员当成成员,而不是乙方,要让团队成员有发言权

园长,XMind

这让我想起了我在腾讯时,做的最后一个项目。

背景大致是我被调到一个临时的项目组,配合秘书团队做一个小程序。在小程序上线后,开始使用以后,秘书临时新增一个功能,我认为这个功能不合理,会增加线上应用的风险,且功能实现无法短时间实现且保证安全。但秘书认为我是没事找事,最终,以和我合作的前端小哥在前端实现为最终方案进行解决。

这个事情中,秘书因为有自己的 KPI,所以必须要实现;前端因为要急着从项目中抽身,而选择了放弃对于需求的评估。我认为这个功能的设计属于拍脑袋,没有考虑到实现的复杂度和对线上应用的影响而拒绝。

在这个过程中,我觉得前端放弃底线,实现任何看起来可能不合理的需求是有问题的。但考虑到即将离开腾讯,所以也就放弃了争吵,随便他们去了。

随后我问了一下群里的设计同学,看看他们是否有会和产品反驳需求的时候,得到的反馈让我很是惊讶:“我们是服务型设计,从不拒绝需求”。

即使是在腾讯,设计师这样富有创意的工作也变成了只会做需求的工人,那在这种情况下,设计师的价值何在?服务型的设计,和乙方何异?

对于我来说,如果一项产品需要我来做,那我一定要思考这里的需求的合理性,如果不合理,我一定会选择去和产品经理讨论,并将实际存在的问题抛出来,去讨论这个需求是否真的值得去做。在我看来,如果这个需求我不经思考就去做,那和机器人没啥区别。

而更多的人,可能从来不考虑自己到底是团队的成员还是团队的乙方。又或者,是国内大公司的高度分工下,让每一个人都成为上一个流程的乙方?

silver iPhone 6 on organizer rack

从被动整理到主动整理

最近我将 Things 的日志簿的移动选项从立即改为了「每天」,在这个过程中,我体会到了这个功能的价值。

作为一个任务管理软件,遵循 GTD ,点击 check,任务就被清理掉是一个 ToDo 软件最为常见的功能。

那允许用户手动切换这个功能的时间,又是为了什么呢?我一直没有明白,直到我调整了这个选项,我才终于明白他的价值。

立即收入日志簿的好处是对于使用者没有任何的心智负担,不需要思考我是否要去做收入日志簿的这个动作。但相应的,也失去了再次和这个任务打交道的机会。

而将其设置为每日/手动,这可以让你的任务始终呆在他的位置上,直到这一天过去,或者是你手动做了录入。虽然相比立即收入多了一步操作,但你获得的是在完成录入的时候,你会重新 review 自己的这些文档,了解自己在过去的时间所做的事情。

一个简单的调整,对于一个人进行工作和时间的整理很有帮助。