Welcome to my blog. The English verison of posts are in En page.

Ubuntu下最舒爽的输入法

私以为,Ubuntu下最舒服的输入法是Rime,建议在Ubuntu下安装fcitx-rime

安装

我的系统环境是Ubuntu 16.04

安装完成以后,使用ctrl+grave。grave就是tab上方的反引号。

rime是佛振,我国开发者进行开发的,充满了Hack精神的输入法引擎,在条件允许的情况下,可以进行捐助。

博客的二次提升

今天晚上我在rss上花费了不少时间,由于效率不高,算是娱乐了一下吧。

[阅读全文]
blog 

记又一次搞崩服务器

记又一次搞崩服务器。使用“又”,是因为我搞崩不是一次两次了。我希望这是最后一次。

背景

使用Android连接服务器的时候,发现要比自己的mac速度快很多,于是十分好奇,打算研究一下是什么因素导致的。

流程

检查了app以后,判断应该是开启了fast TCP导致的,于是考虑在mac上也开启对应的fast TCP,但是效果并不是十分显著;于是再次排查,发现服务器端并没有开启fast TCP

这就很奇怪了,为什么速度这么快呢?是因为对“同源”的加密方法有优化吗?

于是,自然而然的考虑是不是可以通过开启这个TCP加速来加速服务器。这就开启了噩梦的开端。因为需要3.7以上的Linux Kernel才支持这个特性,所以需要先升级内核。我的内核难道不应该是最新的吗?带着这个以为输入了uname sr,显示内核版本2.6*。惊奇,我的VPS内核这么旧吗?于是自然而然的想到要升级一下内核,并且理所应当的把升级内核的脚本apt-get install linux-kernel-lts-wily运行了一下。于是噩梦开始了。

OpenVZ本身是不支持升级内核的,所有的VM都使用同一个内核版本,因此这个命令导致了很神奇的BUG,安装内核装不上,卸载内核卸载不了。

这个时候我面临两个选择,一个是重新安装系统,一个是解决当前的这个问题。

经过简单地判断,我认为如果解决当前问题,可能花费我更多的时间,直接重新安装系统就可以了。重新配置一些相关措施也并不难。

失算的事情是,尽管我依稀记得一部分关于配置的内容,但是要完全复现我所配置的相关应用已经很难了,因为我没有做记录。于是来回又踩了许多坑,之前有些坑我有很明确的踩进去的记忆。

这就非常痛苦了,每次操作都在嘲讽自己的愚蠢与过度自信。最后,我只进行了简单的配置,只找回了部分的优化——记忆里我所做的优化就只有这些了,但是速度似乎下降了,这就是最终的结果。

这也让我想起《人月神话》里面描写的一句,具体我已经记不清了,意思大概是这样的:有些步骤你是必须要做的,只不过当前你没有做而已,以后是要补上的。我读到这个地方的时候,联想这个规律为“技术债”。

好了,以上就是我还“技术债”的全部过程了。

教训

  1. 研究问题虽然好,但是要注意花费的时间
  2. 在生产服务器上,不要做没有经过自查的操作。
  3. 不要被强迫症控制了,能用则用。
  4. 记录自己的行为日志,如果可以的话,写一个安装脚本

唉,真是一次不合格的运维行动。

Django导出博客为hexo博客

Django导出主要使用render_to_string方法来进行;

可以参考的源码如下:

对应的渲染article.html

运行的时候,python manage.py shell,然后导入export 包即可。

Ubuntu 16.04 install iai-kinect2

install libfreenect2, choose the (other) and don’t forget to test bin/Pronect after install.

ATTENTION: I don’t have NVIDIA or AMD graph card. It might be different if you use them.

PROBLEM

when you face this problem

run

roscd kinect2_registrations

edit CMakeLists.txt, add

it will work.

使用Docker时遇到的sitemap问题

这两天感觉博客访问量已经不能靠用嘴宣传了,于是决定做一下sitemap,但是发现django自带的sitemap生成器存在这样的问题:生成的sitemap是依照container的hostname来显示的。 为此我查询了一下其他人是怎么搞的,发现他们都把nginx和django放在一个容器下——但是如此构建不仅麻烦,似乎违背了docker的构建思路,在一个container里面放了多个进程。因此,我认为下面的方案是合理的。 解决方案 Enabling the sites framework To enable the sites framework, follow these steps: Add ‘django.contrib.sites’ to your INSTALLED_APPS setting. Define a SITE_ID setting: SITE_ID = 1 Run migrate. django.contrib.sites registers a post_migrate signal handler which creates a default site named example.com with the domain example.com. This site will also be created after Django creates the test database. To set the correct name and domain for your project, you can use a data migration. [阅读全文]

使用fish – 一个新的shell

许多人都在推荐fish-shell,比如说阮一峰大佬和Reitz神;因此也要试试fish的魅力。虽然已经是z和zsh的老用户,但是对于效率的极致追求不能停。

注意:fish仅适用于某些开发场景,目前不适用于所有开发场景——在其他许多shell环境中,由于历史因素以及已经构建完成的大量生态,对于当前的开发影响是巨大的。

fish基本操作

fish不仅仅使用tab进行不全,还可以使用ctrl+f或者alt+f进行全行不全。

fish还可以通过安装oh-my-fish,对应到z-shell的oh-my-zsh。不过,一般情况下,fish本身就已经做的够好了,基本不需要再进行更多的配置。

fish中的export

使用set -x来替代。例如set -x HOME /home/svtter,即export HOME=/home/svtter

后记

后来我还是切换回了zsh;我使用的开发环境对于zsh已经支持的很好了,但是对于fish的支持还是差强人意。学习新的技术是需要成本的,如果有时间就对fish的支持进行完善,如果没时间,那么还是等它更加成熟再使用吧。

参考

http://www.ruanyifeng.com/blog/2017/05/fish_shell.html

pipenv入门指南

前言

pipenv是书写flask的大神kennethreitz的新作;pipenv集成了virtualenv和pip等工具,让你从requirements.pip以及virtualenv的环境中解放出来。并且他还集成了pyenv的选择python版本,可以说是所向披靡了。

这是他的原话:

相信随着pipenv更加流行,许多工具也会在自己的环境中对pipenv提供支持,解决许多令人不舒服的问题,也能更好的提高编辑的舒适度。

安装pipenv

创建虚拟环境 virtualenv

  1. 当不存在一个虚拟环境的时候,pipenv将会自动创建一个环境
  2. 你也可以手动创建虚拟环境:
    1. $ pipenv --three 创建Python3虚拟环境
    2. $ pipenv --two 创建Python2虚拟环境
  3. 其他的东西和virtualenv是一样的。

安装包

比如你要使用requests(是的也是这个大神写的)。

安装完成后,会生成Pipfile以及Pipfile.lock;这一点很像npm.

其他命令

  1. 激活当前虚拟环境 pipenv shell
  2. 运行虚拟环境中的命令 pipenv run python
  3. 把你的依赖图输出出来 pipenv graph
  4. 安装当前目录的相关依赖 pipenv install

使用问题

目前我使用的时候也会多少存在问题,比如说我看不见下载的进度条,默认不是开启的;

然后就是因为网络环境的问题,我的pip.conf设置不能应用到pipenv上,我需要自己手动更改Pipfile,这一点有些麻烦。

后记

本身我想把这个文章针对的群体稍微降降,针对一些技术能力不是特别高的群体,但是存在一些问题,比如有些东西是需要一定知识才能看懂的。如果出现了不懂的内容,尽量自己查找一下吧。

Shell-tips

重启终端

执行命令,修改环境变量等等之后可以通过此命令来简单重启shell

exec "$SHELL"

查找文件

$ find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示

locate findname

编辑变量

zsh中,编辑$HOME/.zshenv;在bash中,编辑.bash_profile

shell