Mac OS X 编辑状态下可用快捷键

  1. 跳至行首 – Control+A
  2. 跳至行尾 – Control+E
  3. 跳至下一行 – Control+N
  4. 跳至上一行 – Control+P
  5. 删除上一个单词 – Control+W
  6. 删除当前光标位置到行首的文字 – Control+U
  7. 删除当前光标位置到行尾的文字 – Control+K

用于命令行中剪切和粘贴的快捷键:

命令行拥有独特的剪切和粘贴方式,称为“kill”和“yank”:

  1. 剪切当前光标位置到行首的文字 – Control+U
  2. 剪切当前光标位置到行尾的文字 – Control+K
  3. 在光标当前位置粘贴最近一次剪切的内容 – Control+Y

给所有人发放优惠券设计方案

目前在一家海外电商平台网站工作,我们有一个给会员送优惠券的功能,用户在下订单后可以使用优惠券享受一些相应的折扣,比如减价打折什么的。

在我们后台运营系统中,我们需要按照用户ID给指定用户发放优惠券,也需要对全体会员发放优惠券。给指定用户发放优惠券便是在相应表里插入对应记录,里面有字段 user_id,以及 discount_id 分别为用户和优惠券,最初给所有用户发放优惠券的设计方案是插入 user_id 为 0 的记录,表示这张优惠券发放给所有用户。这种方案是最直接也比较好理解的方案,但后来发现者并不是很好的设计,后来发现代码里面到处散落着对 user_id = 0 的判断,使得代码复杂了不少。还有一个问题就是,优惠券记录表里面还记录这优惠券使用时间,优惠券使用次数等数据,当我们用 user_id = 0 这个的设计后,这些数据就没法记录了。

后来着手优化给所有人发放优惠券,有同事提出,当给所有人发放优惠券时直接粗暴地遍历所有用户,每人都发放一张优惠券。但这种设计显然不合理,假设我们有 10 万用户,每次给所有人发放优惠券则一次插入 10 万条记录,太恐怖了,就是 10 万时还 OK,当用户数达到百万级别了呢。

我又想到,给所有人发放优惠券不一定需要立刻就在数据库里面插入该用户的记录,我们只需要在用户登录的时候把那条记录给他插入进去就好了。这样处理就将发放优惠券的时间打散在每个用户登录时。达到了给所有用户发放优惠券的目的同时不需要一下子就插入 10 万条记录。就是这样一个方案,我们后来又进行改进,因为考虑到,假设用户15点登录了网站,我们15点1分发放优惠券,这样用户也看不到他的优惠券,因为他没有再登录。最终我们的方案是,当去获取用户拥有的优惠券时,我们先同步一下发放给所有人的优惠券(检查到有发放给所有人的券,则发放给该用户并做记录,做记录是为了去重防止每次都去给用户发放相同的优惠券)到用户的优惠券里面。目前运行 OK。

就在我写这篇博客的时候,我又想到,user_id = 0 的设计其实也是可行的,只不过我们需要把用户拥有的优惠券和用户使用优惠券的使用记录分开另外用一张表来存储,实际上,这种方式才是合理的。

解决 oh-my-zsh 中文乱码

今天尝试使用 oh-my-zsh,按照 github 上的说明:

curl -L http://install.ohmyz.sh | sh

进行安装完成后,运行 ls 发现中文文件名是乱码。搜索了一番,在 ~/.zshrc 文件末尾加入下面两行:

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

重启终端,或者运行

source ~/.zshrc

就 OK 了。

Ubuntu Server 安装 Samba 并配置匿名可读写访问

1. 安装 Samba

# apt-get install samba

2. 编辑配置文件

# vim /etc/samba/smb.conf

在最后面插入以下几行

[liubuntu-share] # 这个是你要共享的名字,可以在链接到这台机器的上看到,名字可以随便取
path=/data # 你要共享的目录,设置你自己的目录就好了
public=yes # 访问权限设置为 public
writable=yes # 可写
security=share

3. 重启

# service samba restart

 

Ubuntu Server 静态IP简洁配置

1、配置静态IP地址:

vim /etc/network/interfaces

原内容有如下4行:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

以上表示默认使用DHCP分配IP,修改为如下:

auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.110
netmask 255.255.255.0
gateway 192.168.1.1

保存退出。
注意:只需要设置address(IP地址)、netmask(子网掩码)、gateway(网关)这三项就OK,network和broadcast这两项参数是可以不写的。

2、手动设置DNS服务器:

vim /etc/resolvconf/resolv.conf.d/base

添加如下内容(这点所有Linux发行版都通用):

nameserver 8.8.8.8
nameserver 8.8.4.4

3、重启网卡使其生效:

ifdown eth0 # 如果你的网卡名不是这个,请更改为对应的
ifup eth0
# service networking restart 这个命令是不会成功的

 

大部分来自:http://www.ha97.com/4895.html,本文有修改。