解决 SSH 连接提示 Permission denied publickey

服务器是使用 publickey 进行连接,当在 git push 时发生 Permission denied (publickey)。同时解决 ssh-add 重启后失效。 解决 ssh-add your_publickey 如果遇到报错 Could not open a connection to your authentication agent. Try to eval `ssh-agent` 注意: 在重启电脑后失效,一直没有找的其他合适的解决方案,所以选择在 ~/.bashrc 或 ~/.zshrc 中添加: ssh-add your_publickey 2> /dev/null 2> /dev/null 是为了保持静默运行 References ssh 连接提示 Permission denied (publickey) 怎么破? | 吴川斌的博客

March 30, 2017 · 1 min · 50 words · Me

解决 Ubuntu Sogou 无法选词输入中文

sogou 输入法突然无法选词输入中文,候选词位置出现白框,多次重重装 fcitx 和 sogou 也没有解决。尝试使用 google pinyin 代替,但是感觉很不顺手。 issue in GitHub sogou 输入法 GitHub 上的一些 issue: #43 #177 #179 解决 方案一 try to lastest version 方案二 clean fcitx, SogouPY*, sogou-qimpanel in ~/.config, then relogin and try again cd ~/.config sudo rm -rf fcitx SogouPY sogou-qimpanel References ubuntu-sogou-不能显示候选词 | Color Win’s Notes – EOF –

March 17, 2017 · 1 min · 55 words · Me

Git pull rebase 和 merge no-ff 保持提交线图整洁

git log 中的一个清晰的提交线图是很方便进行 code review 和代码回退 git pull --rebase 主要是为是将提交约线图平坦化,而 git merge --no-ff 则是刻意制造分叉 pull rebase perform a rebase after fetching 状况 Git 作为分布式版本控制系统,所有修改操作都是基于本地的,在团队协作过程中,假设你和你的同伴在本地中分别有各自的新提交,而你的同伴先于你 push 了代码到远程分支上,所以你必须先执行 git pull 来获取同伴的提交,然后才能 push 自己的提交到远程分支。 按照 Git 的默认策略,如果远程分支和本地分支之间的提交线图有分叉的话(即不是 fast-forwarded),Git 会执行一次 merge 操作,因此产生一次没意义的提交记录,从而造成了像上图那样的混乱。 解决 其实在 pull 操作的时候,使用 git pull --rebase 选项即可很好地解决上述问题。 加上 --rebase 参数的作用是,提交线图有分叉的话,Git 会 rebase 策略来代替默认的 merge 策略。 假设提交线图在执行 pull 前是这样的: A---B---C remotes/origin/master / D---E---F---G master 如果是执行 git pull 后,结果多出了 H 这个没必要的提交记录。提交线图会变成这样: ...

March 17, 2017 · 2 min · 231 words · Me

禁止 Google 根据区域重定向跳转

使用代理上 Google 时,Google 常会根据网络代理的区域进行重定向跳转。例如:使用韩国代理时,google.com 会跳转到 https://www.google.co.kr/,搜索结果也多为韩语,很是不方便。 解决的办法其实也很简单:访问 https://www.google.com/ncr 就可以了。 ncr 表示:No Country Redirection,禁止区域重定向。 – EOF –

March 14, 2017 · 1 min · 16 words · Me

Git 修改提交历史

在使用 Git 时,我们经常会遇到修改本地提交记录的情况。比如:修改最近一次提交记,还比如:将多次小的 commit 合并成一个大的 commit。 这种做发有利也有弊,利在:review 代码时,可以按功能看,可以省去 review 一些前期写的无效的代码;弊是:一次提交修改过多,如果有问题,不利于调试。 具体情况具体分析,是解决问题的金句。 修改最近一次提交记录 修改提交说明 如果只想更改最近一次的提交说明,只需输入: git commit --amend 然后你就会进入文本编辑器,输入你想要的内容,保存并退出即可 改被提交的快照 如果你完成 commit 后又想修改被提交的快照,增加或者修改其中的文件。 先执行 git add 命令,将修改的文件添加到缓存区,然后运行 git commit -amend 命令,该命令会获取你当前的暂存区的内容一并提交到最后一次 commit 例如:新加了一个文件 new_file.cpp ,想要合并到最后一次提交,过程如下: git add new_file.cpp git commit -amend 也可以直接运行下面的命令,不过要小心,不要提交了多余的文件 git commit -a -amend 将文件从本次提交中移除 如果想把已经 commit 的文件从这次 commit 移除的话,运行命令: git reset [-soft] HEAD~1 # -soft可加可不加,默认就是soft选项 git checkout -filename # 要从本次提交移除的文件名 git commit -m "new commit" 修改多个提交记录 要修改历史中更早的提交,你必须采用更复杂的工具。Git 没有一个修改历史的工具,但是你可以使用 rebase 工具来衍合一系列的提交到它们原来所在的 HEAD 上。 ...

March 13, 2017 · 3 min · 531 words · Me

PHP empty 方法判断 0.0

在使用 empty(mixed $var) 时要考虑 $var 的 类型,尤其是在判断数据库查询后的字段。 bool empty(mixed $var) 以下的东西被认为是空 true 的: ""(空字符串) 0 (作为整数的 0) 0.0 (作为浮点数的 0) "0" (作为字符串的 0) NULL FALSE array() 一个空数组 $var 未初始化的变量 new stdClass() 不包含任何属性的对象 注意: string 的判断要非常注意,数据库查询后的字段常常为 string,应该进行正确的类型转换。 以下的东西被认为是非空 false 的: $var = true; $var = 1; $var = -1; $var = “0.0”; $var = “foo”; $var = array(0); $var = new stdClass(); $var->property = null; $str = '0.0'; echo empty($str); // false 很可能和预期是相反的 echo empty((float)$str); // true – EOF – ...

March 9, 2017 · 1 min · 79 words · Me

Linux crontab 内容定时备份

crontab -r 是一个很危险的命令,它将直接重置 crontab 中的内容;输入 crontab 后,使用 ctrl + d 退出也将清空 crontab 中的内容。所以 crontab 内容的定时备份也变得有必要了。 备份脚本 crontab_bak.sh #!/bin/bash crontab -l > /home/tom/crontab_bak/bak`date '+%Y%m%d_%H%M%S'`.txt config in crontab 12 12 * * * /bin/bash /home/tom/crontab_bak/crontab_bak.sh crontab 常用命令 crontab -l # 列举 crontab 的任务 crontab -e # 编辑 crontab 的任务 crontab -r # 删除 crontab 的任务;风险 crontab -h # crontab 的帮助 crontab -i # 删除 crontab 前进行提示 – EOF –

March 7, 2017 · 1 min · 67 words · Me

解决 Ubuntu warning Setting locale failed

在配置新服务器时遇到 Setting locale failed 的警告,要求 Please check that your locale settings perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_MESSAGES = "zh_CN.UTF-8", LANG = "zh_CN.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 解决方法 安装 localepurge 管理语言文件 sudo apt-get install localepurge 选择我们想要的语言,例如 en_US.UTF-8 和 zh_CN.UTF-8 当然也可以使用以下命令再次进行配置: sudo dpkg-reconfigure localepurge 生成自己想要的语言 sudo locale-gen zh_CN.UTF-8 en_US.UTF-8 打印出当前的配置信息 locale 默认情况下终端 ssh 的时候会将本地的 locale 传到服务器中,可以通过命令指定 ssh 服务器的语言: ...

March 3, 2017 · 1 min · 93 words · Me

回顾 2016

2016 肯定是很特别的一年。年初离开了老师的队伍,来北京找实习。年中和 318 告别,大学毕业了。年末换房学做饭,开始另种生活。对于 2017 更多了对自己的期待。 2016 是在保定的雾霾中开始。结束了大为,决定离开老师的队伍,来北京实习,这对我来说是一个不大不小的决定。老师带着,跟学长一起走到这里,这里有了很多宝贵的东西,有很多回忆,很多故事可以讲。选择离开,主要还是想看看在这之外的是什么样子。 朋友、老师、爸妈都为我的实习操过心,不过推荐的地方在各种奇怪的理由下都没有成。自己开始在拉勾上投简历,一次次来返在京石铁路上。面试一直是不顺的。完全没有想到对实习生有如此高的要求,很多技术问题正中下怀。心里是有落差的,在我当时的想法里,那些在工程中是用不易用到的,但也感到自己技术知识的浅薄。面试了俩三家后也发现了套路,回答不好的、答不上的问题,回去查查准备准备,下回就能用上。 没什么难度的大学毕业。大学里更多的收获是跟着老师、学长在课堂外搞事,是和宿舍的、好朋友在一起的时间。真的好幸运啊,遇到 318 的舍友们。没想到和你们每一个人都超级聊的来。大四的时候人就渐渐不齐,但只要宿舍在,不到最后毕业真的不知道要分别了。我们相互影响着成长,至少除去了我很多很 low 的思想。我们相互练着酒量、每天演着戏、日常说着骚话。 德育答辩上一个同学说:我常翘课、考试挂科,但我大学四年过的很坦荡,我会因为和舍友游戏上的一个好玩的套路高兴很久。我收获朋友。我没什么后悔的。 这很戳中我的泪点。没什么后悔的,也是对我大学的注脚。愿你们成家的幸福,工作的有成。 从上学到工作,过渡的很平稳。工作中有一些挑战,但总之是还应对的来。可没有什么出众的地方,我不想过的太平凡,愿有一技之长,独挡一面。我常说自己:菜啊、傻啊、什么的,我确实不想用这些来词来逃避问题,我想尽快的甩掉这些。我也愿自己可以更有底气和勇气说出,现在不能说出的话,愿更决绝的对大事小情做决定。 年末随着公司搬家,自己也搬了。炒菜做饭成了每天另一部分。也许才是真正生活二字的开始。 突然想到学长提的一个问题:你们有谁把技术当做以后安身立命的本事? 现在对于我来说,这问题的答案比任何时候都更加清晰。 最后,还是怀揣着 2014 末的敬请期待,让一切皆有可能,开始 2017。 —— 送给 木林木丶 – EOF –

December 31, 2016 · 1 min · 30 words · Me

Ubuntu 下使用 UFW 管理防火墙服务

UFW (Uncomplicated Firewall) 作为 iptables 的前端应用,给用户提供了简单的接口界面。使用着不需要去记非常复杂的 iptables 语法。UFW 也使用了 简单英语 作为它的参数。像 allow、deny、reset 就是他们当中的一部分。UFW 绝对是那些想要快速、简单的就建立自己的防火墙,而且还很安全的用户的最佳替代品之一。 检查系统上是否已经安装 UFW sudo dpkg --get-selections | grep ufw 安装 UFW sudo apt-get install ufw UFW 常用命令 查看 UFW 状态 sudo ufw status see configured rules even when inactive ufw show added 启用/禁用 UFW # 启用 sudo ufw enable # 禁用 sudo ufw disable 先添加 ufw allow ssh,防止墙掉自己 查看 UFW 规则 需要先启用 UFW sudo ufw status verbose 在每条规则上加个序号数字 ...

October 10, 2016 · 1 min · 212 words · Me