octopress 迁移到 hexo 后,disqus 评论的转移

迁移过来后 disqus 的评论消失了。
这是因为 hexo 和 octopress 的地址略有不一样。

比如原来 octopress 是:

1
http://kokutoukiritsugu.github.io/blog/2015/03/30/octopress-to-hexo/

现在 hexo 是:

1
http://kokutoukiritsugu.github.io/2015/03/30/octopress-to-hexo/

hexo 相比 octopress 的 url 少了一个 /blog

disqus 有个 url mapper
说明在此: url mapper help

当然它还有别的工具,我试了下这个比较顺手。。。
下下来 csv 文件,然后用 excel 打开,复制左边一列到右边
然后选中右边一列,只对右边一列做 查找与替换,删除掉所有的 blog/ ,再保存为 csv 文件上传就好了。

git 在多账户的情况下使用 SSH 免密码操作

当然先去掉我以前设置的全局 email 和 name

1
2
git config --global --unset user.name
git config --global --unset user.email

现在每个 repo 要设置自己的 email 和 name

1
2
git config user.name "你的name"
git config user.email "你的email"

生成两个邮箱的 ssh key
生成的时候提示输入文件名的时候选择两个不同的文件,
提示输入密码就直接为空,目标是操作的时候免密码嘛。

1
2
ssh-keygen -t rsa -C "github_email1"
ssh-keygen -t rsa -C "github_email2"

现在在 ~/.ssh 下面有了这几个文件:

1
2
3
4
id_rsa (对应的 github_email1)
id_rsa.pub (对应的 github_email1)
id_rsa_second (对应的 github_email2)
id_rsa_second.pub (对应的 github_email2)

现在要在 github 网页上,分别登录两个账号,
复制两个账号对应的 .pub 文件内容到 github 网页上的 设置 ssh key 里面。

新建一个 ~/.ssh/config 配置文件
内容如下:

1
2
3
4
5
6
7
8
9
10
11
host username1
hostname github.com
Port 22
User git
IdentityFile "id_rsa的路径"
host username2
hostname github.com
Port 22
User git
IdentityFile "id_rsa_second的路径"

现在可以测试一下是否设置正确了。

1
2
ssh -T username1
ssh -T username2

看到了 Hi 你的用户名! You’ve 这行话,就说明 ssh 配置对了。
上面的 username1 和 username2 可以随便取,这两个是后面要用到的。

这时候可以开始设置 repo 用 ssh 的方式来连接 github 了
先看看原来的 remote 地址是什么

1
git remote -v

得到

1
2
origin https://github.com/你的账号/你的repo (fetch)
origin https://github.com/你的账号/你的repo (push)

现在是多账户,这个 repo 用的是 username1 里面的 ssh key 那么 ssh 地址就应该是这样的

1
username1:你的账号/你的repo

这个 username1 就是上面的 ~/.ssh/config 里面设置好的两个 host 名
git 设置的命令是:

1
git remote set-url origin username1:你的账号/你的repo

当然因为前面去掉了全局账号和邮箱,这里就也要设置这个 repo 的账号和邮箱。

enjoy!

迁移 octopress 到 hexo

最近在 windows 下折腾 cygwin 和 msys2 ,windows 下想用 linux 工具集真是不方便。
然后突然想起 octopress 了,这货要装 ruby 等等一堆东西,windows 下折腾,想想就醉了。
google 了下,打算切换到 hexo。
基于 node.js 的静态博客。而且还有生成速度很快的优点。

主要下载了 msysgit , io.js (兼容 node.js ,某些情况速度更快,顺便可以试试 io.js)。
安装的时候 msysgit 提示环境变量的时候,选择的第二个,只把 git 添加到环境变量。
这样就可以到处使用了。
先是把原来的给 clone 下来。 顺便 checkout 出 source 分支。

git clone 博客github地址 博客文件夹
cd 博客文件夹
git checkout -t origin/source

重命名 source 分支 为 octopress 来备份以前的博客源文件。
github 重命名远程分支是先删除远程分支,再重命名本地分支,然后再推送过去成为一个新的分支。

git branch -m source octopress
git push origin --delete source
git branch --set-upstream-to origin/octopress
git push

现在可以新建一个 hexo 分支了。

git branch hexo
git checkout hexo

原来的文章都在 source/_posts 下面。
因为我在 windows 下面,我就打开文件夹手动删掉了除 source/_posts 和 .git 这两个文件夹之外的其他文件。
然后推送到 github 上面。

git add --all .
git push --set-upstream origin hexo
git push

开始安装 hexo

npm install hexo-cli -g
npm install hexo --save
hexo init .
npm install
npm install hexo-deployer-git --save

这就安装完成了。
接下来是主题的安装,还有设置。
选了 light 主题,这个最简约,官网还有其他的可选。

git submodule add git://github.com/tommy351/hexo-theme-light.git themes/light

这个主题默认启用了 facebook 。
原来我用的是 disqus 的评论,所以这个主题要编辑一下设置。
在 theme/light/_config.yml 里面:

comment_provider: facebook 

修改为

comment_provider:

配置 hexo
主要需要修改的就以下几项:

title: 博客标题
subtitle: 子标题
author: 名称

url: 博客url

new_post_name: :year-:month-:day-:title.markdown

theme: light

启用 disqus 评论需要加一行

disqus_shortname: kokutoukiritsugu

以上这些都可以照着 octopress 原来的复制过来。
然后就是最后面的 deploy 部分,修改为 github 模式。

deploy:
  type: git
  repo: 你的git地址
  branch: master
  message: Site updated { { now("YYYY-MM-DD HH:mm:ss") } }

上面这一行 大括号与大括号之间我加了个空格,否则 hexo 会生成失败。
然后可以预览试试了。

hexo g
hexo s

修改一下默认的新文章格式。
scaffolds/post.md

修改为和 octopress 一样的。

---
layout: post
title: {{ title }}
date: {{ date }}
comments: true
categories: 
tags:
---

这样 hexo n “title” 的时候生成的东西就和原来 octopress 时一样了。
保存一下当前的配置和文章。

git add --all .
git commit -m "somthing"
git push

enjoy.

Archlinux 下 BCM4352 驱动加载

gnome 装完后发现没 wifi ,ip link看了发现只有有线和本地 lo 回环。
于是 lspci 一下发现网卡在,

lspci -vnn | grep Bro

03:00.0 Network controller [0280]: Broadcom Corporation BCM4352 802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)

我想不会要找驱动吧,google 了一下,搜到了这个
broadcom-wl
博通看起来有几个不同的驱动啊。
照着里面的试了下。

先卸载内核模块

rmmod b43
rmmod ssb

我机子上这俩都没加载
直接加载另外的模块:

modprobe wl

wl会自动加载以下的俩模块,没加载就要手动加载。

modprobe lib80211
modprobe lib80211_crypt_tkip

ip link 看看,发现 wifi 起来了。

2: wlp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT mode DORMANT group default qlen 1000
link/ether 00:6b:9e:06:1d:8c brd ff:ff:ff:ff:ff:ff

运气不错~

然后就是屏蔽模块和自动加载 wl 了。
/etc/modprobe.d/ 下面放个 nob43.conf ,里面写上

blacklist b43
blacklist ssb

然后在/etc/modules-load.d/ 下面放个 wl.conf ,里面写上:

wl
lib80211
lib80211_crypt_tkip

这就ok了。

archlinux-2015.02.01 配置

前面已经装好了 archlinux,一个很基本的系统,
接下来装个图形界面,和一些基本的软件什么的。

窗口管理器选的 gdm ,然后图形界面选的 gnome3

安装 zsh

至于为嘛,用了就离不开了~
虽然有些小蛋疼的地方。。

pacman -S zsh

新建一个用户

参考的 wiki ,直接照打的
现在想想如果没添加这些权限,现在可能都在解决问题了,这文章肯定要过一两天才看得到了。

useradd -m -g users -G audio,video,floppy,network,rfkill,scanner,storage,optical,power,wheel,uucp -s /usr/bin/zsh 你的用户名

设置密码

passwd 你的用户名

sudo 的设置

默认似乎没法用,
需要 visudo 编辑一下 sudo 的配置。

visudo

进去后去掉wheel那一行前面的注释符号 # 即可。

%wheel ALL=(ALL) ALL

安装 xorg 和 gdm 和 gnome 和 nvidia 驱动

输入法选的 fcitx
顺便安装了一个 xterm 测试 xorg 用
alsa-utils 安装是因为 gnome 要这个貌似。

pacman -S xorg-server xorg-xinit wqy-zenhei wqy-microhei wqy-microhei-lite fcitx xterm alsa-utils unrar unzip
pacman -S fcitx-configtool

xorg 装完可以启动下试试,看看能不能正常使用,
退出的话,用鼠标叉掉窗口,就退出了。

startx

我显卡是 nvidia 安装驱动就用 nvidia 驱动吧,之前 ubuntu 下面用着挺好的。

pacman -S nvidia

会提示 libgl 冲突,选择 nvidia 的就行,mesa-libgl 是开源版本的。
安装 gnome3 ,archlinux 默认就是 3 了,直接安装就是 gnome3 了。

安装这个包默认 gdm 貌似也装了,就不用再安装一遍了。

pacman -S gnome

安装 vim

注意要安装 gvim ,这个相比 vim 多了 clipboard 等编译参数,
有的指令比如 “+y 这种与系统剪切板交互的指令只有 gvim 才有。
启动不过还是一样的是 vim

pacman -S gvim

配置 vi 指向 vim

archlinux 自带一个 vi ,但真的非常不好用,
虽然在 .zshrc 里加入 alias vi=vim 之后,当前用户可以了,
但是 sudo vi 之后,又变成了那个阉割版的 vi ,
简单粗暴的,直接链接下 vim 到 vi 了,

ln -s /usr/bin/vim /usr/local/bin/vi

卸掉:

pacman -R vi

加入以下 alias

alias vi=vim
alias sudo='sudo '
alias 'sudo vi'='sudo vim'

安装 fcitx 的一些组件

拼音输入法我选的是 rime ,在 osx 下用了很久了,就这个了。

pacman -S fcitx-gtk2 fcitx-gtk3 fcitx-rime fcitx-configtool fcitx-qt4 fcitx-qt5

安装 gnome 的网络组件

这个装了之后,在 gnome 右上角才能设置。
wireless_tools 是 wifi 必须的。

pacman -S gnome-nettool wireless_tools

装完要开启 networkmanager 服务
顺便启动一下

systemctl enable NetworkManager
systemctl start NetworkManager

装个 firefox 先用用,后面再安装 chrome

我是 chrome 控~
当然还有 flash plugin

pacman -S firefox flashplugin

启动 gdm

感觉可以启动 gdm 试试了

systemctl enable gdm
systemctl start gdm

啊,登录界面来了~
n卡还是方便,没碰到啥问题。

可以用新建的账户登录了
剩下的配置就用 gnome-terminal 来弄了~

当然登录之后就不是 root 账户了,搞个啥都要 sudo
我恨 sudo

触摸板驱动

大部分都是 synaptics 的触摸板,装了就能用触摸板了。

sudo pacman -S xf86-input-synaptics

配置 fcitx

vi ~/.xprofile

加入三行:

export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx

要注销下才能生效。

fcitx 自带一个 fcitx-diagnose
configure ui 和 xim 报的错误可以不管,其他都修正了,一般 fcitx 就 ok 了。

配置 oh-my-zsh

真是个好东西

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

搞定

设置 gnome3

装个 GNOME tweak tool 先

sudo pacman -S gnome-tweak-tool

进入设置里,Tweak Tools
Appearance 里,打开 Global Dark Theme,黑色才高大上嘛。
Desktop 里,打开 Icons on Desktop,桌面才能放图标。

一些小工具

iftop 查看流量的
aria2 命令行下载工具
xorg-xinput xinput 工具,编辑鼠标加速用
gedit gnome3 的文本编辑器

dosfstools 有了这个才有 mkfs.fat
ntfsprogs 有了这个才有 mkfs.ntfs

sudo pacman -S iftop aria2 xorg-xinput gedit
sudo pacman -S dosfstools
sudo pacman -S ntfsprogs

差不多就这些了。

Archlinux-2015.02.01 安装

准备安装

之前有装有 ubuntu ,分给 / 有 50g ,然后因为我有 16G 内存,
swap 就只分了 512M ,现在发现就是可能没法休眠,因为 swap 太小了放不下内存的数据。。
分区状态:

sda           8:0    0 238.5G  0 disk  
├─sda1        8:1    0   384M  0 part  /boot/efi
├─sda2        8:2    0   128M  0 part  
├─sda3        8:3    0    99G  0 part  
├─sda4        8:4    0  88.5G  0 part  
├─sda5        8:5    0  49.5G  0 part  /
└─sda6        8:6    0   512M  0 part  [SWAP]
sdb           8:16   0 931.5G  0 disk  
└─md126       9:126  0 931.5G  0 raid1 
  └─md126p1 259:0    0 931.5G  0 md    /run/media/kokutou/HitachiRaid1
sdc           8:32   0 119.2G  0 disk  
├─sdc1        8:33   0   382M  0 part  
└─sdc2        8:34   0 118.6G  0 part  
sdd           8:48   0 931.5G  0 disk  
└─md126       9:126  0 931.5G  0 raid1 
  └─md126p1 259:0    0 931.5G  0 md    /run/media/kokutou/HitachiRaid1

sda 是个 256g 的固态,放了win7,
然后分区表是 gpt ,
sda1 是 efi 分区,
sda2 是微软的保留分区,
sda3 是 win7 系统盘,
sda4 是win7 下的 D 盘。
sda5 装了 ubuntu ,安装的时候就不用分区了,直接格式化掉就行了。

写入安装镜像

找了个 4g 的 u盘 ,直接用 dd 把镜像给写进去了。
用的是 windows 下的 cygwin 里面的 dd ,没用那个 安装助手,安装助手 在 uefi 下面没一个能启动的。。。

cygwin 下用 dd 不能用卷标,得 cat/proc/partitions 来得到 类似 /dev/sdx 的磁盘路径才行。
不要搞错,否则数据就没了 ^_^
写入命令是:

dd if=image.iso of=/dev/sdx(你的u盘) bs=4M

然后重启选择u盘启动,就进到 shell 可以开始安装了。

安装

基本就是参考 wiki 上的来的。

键盘布局我没设置。
终端字体我也没设置。

locale 设置了下,注释掉了 en_US.UTF-8 和 zh_CN. 和 zh_HK.
如下:

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8  
zh_CN.GB18030 GB18030  
zh_CN.GBK GBK 
zh_CN GB2312  
zh_TW.UTF-8 UTF-8  
zh_TW.EUC-TW EUC-TW  
zh_TW BIG5  

然后 locale-gen 就行了。

联网

我有线连的路由器,ping 一下 www.baidu.com ,没通就 dhcpcd一下来自动获取 ip ,稍等一会,再 ping 就通了。

格式化分区

lsblk 看一下,然后格式化之前的 ubuntu 分区,再挂载,最后建立挂载表。

sda      8:0    0 238.5G  0 disk 
├─sda1   8:1    0   384M  0 part /boot/efi
├─sda2   8:2    0   128M  0 part 
├─sda3   8:3    0    99G  0 part 
├─sda4   8:4    0  88.5G  0 part 
├─sda5   8:5    0  49.5G  0 part /
└─sda6   8:6    0   512M  0 part [SWAP]

/dev/sda1 是 efi , /dev/sda5 是根分区,/dev/sda6 是 swap 分区。

mkfs.ext4 /dev/sda5
mkswap /dev/sda6
swapon /dev/sda6

挂载分区

我的home和boot就都放在根分区下了。
顺便把efi挂上去。

mount /dev/sda5 /mnt
mkdir /mnt/home
mkdir /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

编辑源列表

用 vi 把 /etc/pacman.d/mirrorlist 里面的 163 的源放到第一个就行了。

安装基本系统

pacstrap -i /mnt base base-devel

生成 fstab

genfstab -U -p /mnt >> /mnt/etc/fstab

完了检查下 fstab ,看看是不是对的。

Chroot 到新系统,并配置系统

arch-chroot /mnt /bin/bash

locale

编辑下 /etc/locale.gen 注释掉几个 utf-8 的项目。

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

然后 locale-gen
设置 locale:

echo LANG=en_US.UTF-8 > /etc/locale.conf

字体和键盘映射跳过,除非是非英语

时区

这个 archlinux 是建议用 utc 时间的,不过 windows 是用的本地时间,
然后 osx 默认也是用的 utc 时间,之前我 osx 和 windows 是时间差是用的 osx 下面的一个开机修改时间的小脚本弄的,现在想了想就还是把 windows 修改成 utc 时间,再删掉 osx 那个小脚本好了。

  • 修改 windows 为 utc 时间。*
    打开 regedit ,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation项下面,新建一个名为 RealTimeIsUniversal 的 dword32 值 ,并赋值为 1 ,然后重启,再联网同步一下时间。
    当然不用现在就做,装完或者装之前再弄都行。

回到 linux
用 utc+8 的时区,比如上海。

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

硬件时间,默认就是 utc ,可不用设置。
就算时间错了,设置好 windows utc 之后,windows 下同步一下,再进 linux 时间就对了。

hwclock --systohc --utc

hostname 主机名

echo hostname > /etc/hostname

并且在 /etc/hosts 添加一样的主机名(这个好像不用做,不过我还是做了。

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1       localhost.localdomain   localhost   *myhostname*
::1             localhost.localdomain   localhost   *myhostname*

网络

这个倒不用设置,要网的时候临时 dhcpcd 好了。

创建初始 ramdisk

似乎这个自动做了,不用手动来一遍。

mkinitcpio -p linux

设置 root 密码

passwd

输入密码是没显示的,不是你键盘坏了。

安装 grub

由于是 uefi 启动,参数略有不一样。
/boot/efi 是之前挂载好了的efi分区 。

pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck

然后生成 grub 配置文件就可以重启了。

grub-mkconfig -o /boot/grub/grub.cfg

卸载分区,重启系统

重启的时候分区会自动卸载,直接重启就行了。。。

exit
reboot

欢迎来到 archlinux

刚装完,啥都没有,不过这种很干净的感觉挺好的。。。

archlinux下,普通用户adb无法连接设备

archlinux 下面,装的 google 官网的 Android Studio
想用真机调试,点了软件里的运行之后,发现设备显示的确是问号:

????????????    no permissions

于是估计应该是没权限,进入到 Sdk 的目录下面
sudo adb devices 发现可以正常连接设备。

搜了下 wiki ,普通用户使用看起来要写 udev 脚本,
于是上 yaourt 搜了下,发现了个 android-udev 的包,直接安装下试试:

yaourt -S android-udev

试试普通用户运行adb devices,啊,正常了。

再试试 Android Studio ,普通用户能调试了。

找了找,发现 android-udev 这个包是安装了 /lib/udev/rules.d/51-android.rules 这个 udev 规则。感兴趣的可以看看。

octopress 添加分类列表

发现octopress居然没分类列表,于是google下,添加了一个:
链接
步骤为:

增加category_list插件
保存以下代码到plugins/category_list_tag.rb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Jekyll
class CategoryListTag < Liquid::Tag
def render(context)
html = ""
categories = context.registers[:site].categories.keys
categories.sort.each do |category|
posts_in_category = context.registers[:site].categories[category].size
category_dir = context.registers[:site].config['category_dir']
category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase)
html << "<li class='category'><a href='/#{category_url}/'>#{category} (#{posts_in_category})</a></li>\n"
end
html
end
end
end
Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag)

以上生成list,以下让它显示出来
增加aside
复制以下代码到source/_includes/asides/category_list.html。

Categories

    {% category_list %}

修改 _config.yml 文件中的 default_asides 项:
加入 asides/category_list.html 即可

default_asides: [asides/category_list.html, asides/recent_posts.html ... ... ]

andorid studio 在 archlinux 上调试程序时报错

用 google 官网的 android studio 安装完后,直接新建个空工程和avd,
点运行会报错如下:

Error: Cannot run program "/home/user_name/Android/Sdk/build-tools/21.1.2/aapt": error=2, No such file or directory

到对应目录下看,发现 aapt 这个程序是存在的。
但是 ./aapt 却不能运行。
之前尝试yaourt -S android-studio的时候会安装一大堆 lib32 的库,
于是怀疑是没 lib32 的库,
当然你直接yaourt -S android-studio等它解决完依赖后就停下来也行。
就可以不用看下面的了

但我不想装那么多库,就只能排查了。

搜到了ldd可以看程序,但发现这东西和我想的不太一样。
然后找到了readelf,运行:

readelf -l ./aapt

得到一大堆,看中间一行:

...
Requesting program interpreter: /lib/ld-linux.so.2
...

应该就是这个库了,google 了一下发现是 lib32-glibc
直接pacman -S lib32-glibc装上,
接着./aapt会发现可以运行了,这是会直接提示说缺xxx.so.x
直接照名称装上 lib32-zlib 和 lib32stdc++5 就ok了。

这时候再运行./aapt就正常了。
再打开 Android Studio 调试试试,能正常运行不报错了。

使用goagent代理git

环境 archlinux + zsh

git直连的时候也不是不能正常工作,就是特慢,实在不能忍。。。
以下为代理方法,直接加入到.zshrc:

# 设定http和https代理,指向GoAgent
# 这个设置会同时影响到 curl wget rvm gem bundle
export http_proxy='http://127.0.0.1:8087'
export https_proxy=$http_proxy
# 让git clone时忽略SSL错误
export GIT_SSL_NO_VERIFY=true

当然,不用上面的全局方法,只让git通过代理也是可以的。

git config --global http.proxy http://127.0.0.1:8087

以下运行一次~

# git的全局设定,关闭ssl验证
git config --global http.sslVerify false

用全局代理的话,完了之后 yaourt -S xxx 会出现 curl 证书错误
修正方法:

# 让curl永久忽略SSL错误
echo insecure >> ~/.curlrc

我这样做却无效。。。
google之后发现还是要手动装证书= =

ca-certificates update
https://www.archlinux.org/news/ca-certificates-update/

archlinux 2014-12-11之后ca的安装方法改变了
链接

以下新的安装方法:

复制 goagent/local/CA.crt /etc/ca-certificates/trust-source/anchors/
运行 trust extract-compat

然后 curl 就ok了~

啊,rake gen_deploy 飞速~