在 Finder 中用 iTerm 打开当前目录

需求

  在使用 Mac 的过程中,在终端打开当前目录是一个常见的需求。之前可以通过 xtraFinder 等 Finder 的扩展实现这个需求,但在 macOS 10.12 之后,这类扩展程序只能在禁用系统文件保护的情况下才能使用。
  作为一个强迫症患者,无法忍受禁用系统文件保护带来的风险,但又十分需要这个功能,怎么办?

方案

  于是我开始研究如何使用系统提供的方案来实现需求,经过不懈的努力,找到了很多过期资料,虽然在新版系统上已经无法使用,但是给了我一个思路。
  尝试过多个方案,使用 Automator 配合 AppleScript 的解决方案,应该是目前的最优解决方案。
  基本步骤是:

  1. 获取 Finder 当前文件夹的路径。
  2. 激活 iTerm2。
  3. 如没有窗口则创建窗口。
  4. 当前 Tab 正在使用则创建新 Tab。
  5. 在 Tab 会话中输入 cd 命令并执行。

查看更多

分享 评论

OpenResty 中的 Redis 使用技巧

前言

  Redis 是非常流行的 NoSQL 数据库之一,因其高效、稳定、开源、数据结构丰富,深受业内钦赖。很幸运,OpenResty 也内置了对 Redis 的支持。
  在使用 OpenResty 的过程中,Redis 一直是主力存储方式之一。虽然 OpenResty 内置了 Redis 驱动,但在实际项目中,对其进行进一步的封装,能更方便的使用和管理。
  在这个过程中,遇到了很多需要注意的点,也积累了一些技巧和经验,在此总结一下。

技巧

单例模式

  单例模式是对数据连接或数据查询工具类的常用处理模式。保持数据连接的单例好处很多,最重要的一点是确保了同一连接的复用,不会被重复打开浪费资源,也方便了连接的管理和状态维护。
  在 OpenResty 中,可以通过把 resty.redis:new() 产生的对象保存到 ngx.ctx 中实现单例。同一请求可以通过 ngx.ctx 共享已打开的连接。

查看更多

分享 评论

妥善的处理重试请求

前言

  手机游戏项目中,由于用户在很多时间使用的是移动网络,和服务器连接不稳定在所难免。客户端发送给服务端的请求没接收到应答,也是经常碰到的情况。
  同样是没有接收到应答,是因为服务端未接收到请求,还是发送应答给客户端失败,客户端很难区分。对客户端来说,这两种情况几乎没有什么分别。
  这会带来一个问题:客户端在无法接收到应答的时候,是否发送重试请求?
  如果是因为服务端没收到请求造成的无应答,那么发送重试请求并没有什么问题。但如果是因为服务端发送应答给客户端失败造成的无应答,那么发送重试请求,会让服务端重复处理已处理过的请求。
  如果只是强化、升级这种请求,重复处理请求也许问题也不是太大。但如果是购买、消费这种请求,重复消费恐怕会引起玩家的重度不适,收到很多吐槽和投诉。

查看更多

分享 评论

需要“局部变量化”全局函数么?

前言

  在很多的 Lua 语言相关的著作中都强调,在代码头部将代码里使用到的全局函数或者全局库局部变量化,将大大提升代码的执行效率。
  举个栗子,Roberto Ierusalimschy《Lua Programming Gems》 的第二章 Lua Performance Tips 提到:

 除了一些明显的地方外,另有几处也可使用局部变量,可以助你挤出更多的性能。比如,如果在很长的循环里调用函数,可以先将这个函数赋值给一个局部变量。这个代码:

for i = 1, 1000000 do
    local x = math.sin(i)
end

比如下代码慢 30%:

local sin = math.sin
for i = 1, 1000000 do
  local x = sin(i)
end


查看更多

分享 评论

巧设 Openresty 包含路径

路径的难题

  我在之前的一篇文章中提到,关于 OpenResty 中的文件包含路径,是个值得注意的问题。
  OpenResty 仅会将它自己的 lualib 目录加入 package.pathpackage.cpath,我们的项目目录需要自己处理。
  最初我曾经试过将 项目目录加入到 package.pathpackage.cpath 中,确实达到了目的。
  但在 nginx 上配置了第二个 server 并将它的目录也加入包含路径之后,由于 lua_code_cache 的存在,不同 server 间的相同相对路径的文件的缓存会互相冲突,导致 require 可能不能加载正确的文件。  

巧妙的方案

  其实解决方案来自 PHP 中 autoload 的启发,我使用了一些 nginx 配置和一个单独的函数用来加载项目中的文件。


查看更多

分享 评论

关于 netstat 命令

使用 netstat

  netstat 命令是 linux 下一个非常有用的命令,顾名思义,其作用是查询当前的网络状态。
  以最常用的查询 TCP 连接状态为例,在 Shell 里运行以下命令:

netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c

  你会看到当前所有 TCP 连接的状态计数:

屏幕快照


查看更多

分享 评论

正直帝的传奇经历

前言  

  事情终于告一段落了,暮然回首,感觉还是很有必要写个日志,把我的光辉形象记录下来。

起因

  我有一张中行的美元单标信用卡,绑定了支付宝的快捷支付,可以在淘宝消费,但一直不能用支付宝还款,我每月都测试下,期待能够有一天,可以用支付宝还款。
  2014年2月18日11点左右,我像往常一样,用支付宝向那张中行卡还款1元,过了半小时,还是和往常一样,支付宝告诉我还款失败了。
  过完一个忙碌的下午,到18点的时候,突然发现有一条未读短信,中行提醒我的那张卡成功入账1元。这是咋回事?不是还款失败了么?

查看更多

分享 评论

为宝宝在德国海淘奶粉

前言

  国内奶粉的质量让人感到担忧,初为奶爸的我,花了大量的时间,查询各种资料,只为了给宝宝淘到放心的口粮。其中艰辛不谈,将经验和大家分享一下,希望能够对奶爸奶妈有些帮助。

奶粉的选择

  这个问题见仁见智,欧洲和美国得品牌还是值得信赖的。在这些品牌里排除受新西兰事件影响的,再按知名度排列一下,各位奶爸奶妈心里多少也都有了个大概想法。
  结合众多网站奶爸奶妈的经验总结,以及各种亦真亦假的研究报告,我最终选择的是 爱他美Aptamil),德国的高端奶粉品牌,号称最接近母乳。
  选择爱他美的原因很多,除了网上奶爸奶妈们的一致赞誉,以及对其品质、配方和理念的认可外,对德国的好感也是很重要的一方面。
  家里的锅炉是德国的威能,别人家的锅炉出各种问题的时候,我家一点事情都没。接触到的各种德国产品,也都以精确耐用著称,似乎从来都没听说过德国产品有质量问题。

查看更多

分享 评论