ssh卡在debug1: SSH2_MSG_KEXINIT sent的解决办法

在公司通过kerberos登录ssh,完全没有问题。但是在家里通过l2tp连接vpn后,就无法登录了。

通过ssh -v查看日志,发现卡在debug1: SSH2_MSG_KEXINIT sent这一步。

查了下,发现是因为mtu设置太大


但是由于系统的网络是NetworkManager管理的,如果需要自动设置mtu,connection的配置中并没有vpn对应的mtu设置。后来,看了有人使用dispatcher脚本来设置。

创建/etc/NetworkManager/dispatcher.d/vpn-up文件:

#!/bin/sh

if [ "$2" = "vpn-up" ]; then
        ip link set "$1" mtu 1350
fi

然后vpn连接的时候,就会自动设置mtu了。

Fedora上完美的使用QQ

目前看下来,Linux使用QQ还是Deepin比较好。

CrossOver上的QQ目前不能记住密码,其他还好,比如聊天啥的也是可以的。

Deepin的QQ是目前最好的解决方案。

安装如下:

  • 首先,从百度网盘下载crossover-15_15.0.3-1_all-free.deb 。解压其中的opt/cxoffice/ 到/opt/cxoffice/
  • 其次,从镜像站点下载Deepin的QQ,apps.com.qq.im_8.1.17255deepin11_i386.deb
  • 解压apps.com.qq.im_8.1.17255deepin11_i386.deb 中的opt/cxoffice/support/apps.com.qq.im 到/opt/cxoffice/support/apps.com.qq.im
  • 然后执行/opt/cxoffice/bin/crossover
  • 在CrossOver点击QQ启动即可。

Continue reading Fedora上完美的使用QQ

Fedora KDE 25下安装fcitx输入法

首先,安装fcitx之后,只要是接受了GTK_IM_MODULE 、QT_IM_MODULE 、XMODIFIERS 环境变量的程序,都可以使用fcitx输入法了。

但是,即使我在~/.xprofile 里面写了这三个export语句,程序也没法读到这三个环境变量。

后来发现,这里面有两个坑:

  1. Fedora KDE的display manager换成了SDDM,而在SDDM的配置文件中,默认不会执行~/.xprofile 里面的语句。
  2. SDDM问题解决后,发现fcitx依赖的imsettings,会设置这三个变量,所以在~/.xprofile 里面export的变量,其实会被imsettings覆盖。

Continue reading Fedora KDE 25下安装fcitx输入法

安装 PHP 7

PHP 7 正式发布了好久了,现在就总结下如何在各个系统上安装 PHP 7。(本文在很大程度上参考了 Installing PHP 7.0.0

Ubuntu系列

PHP 7 可以直接使用 PPA for PHP (5.6, 7.0) : Ondřej Surý:(原来这个PPA中的fpm不能正常工作,后来发现已经改掉了)

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0

Debian系列

PHP 7 可以通过 Dotdeb repository 来安装:

创建文件 /etc/apt/sources.list.d/dotdev.list ,内容为如下两行:(其中的 <distribution> 根据需要替换为 squeeze, wheezy 或者 jessie):

deb http://packages.dotdeb.org <distribution> all
deb-src http://packages.dotdeb.org <distribution> all

添加GPG key :

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

安装 PHP 7 :

sudo apt-get update
sudo apt-get install php7.0

CentOS / RHEL系列

PHP 7 可以使用 Webstatic Yum repository 安装。

如果你使用的是 CentOS/RHEL 7.x,使用如下命令安装 PHP 7:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php70w

如果你使用的是 CentOS/RHEL 6.x,使用如下命令安装 PHP 7:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install php70w

Mac OS X

我推荐使用homebrew安装:

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew install php70

Windows

PHP 7 for Windows 可以直接从 windows.php.net 下载:

http://windows.php.net/download#php-7.0

 

git lg 和 git tg

不好意思,在下又要开始聒噪几句了。

git lg —— 更人性化地展示git历史

首先,git log默认太挫了,仅仅是罗列一个个commit,我们可以对其进行定制。

我觉得git log的–graph –oneline –decorate 就工作得不错,就把git log –graph –oneline –decorate 设置为别名lg:

git config --global alias.lg 'log --graph --oneline --decorete'

虽然可以自定义log展示的格式,但是懒得搞……

UPDATE:

翻了下oh-my-zsh,抄过来一句:

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ar) <%an>%Creset' --abbrev-commit"

git tg —— 按版本号排序,显示近几个tag

其次,每次打tag的时候都需要git tag | sort -V 一下,而且还冲掉很多之前的命令和输出。所以要定制一个tg命令来按版本号排序输出最近几次tag。

虽然git有一个设置tag.sort 可以制定按版本号排序,但是仍然会显示所有的tag,这显然不太好。

所以还是得定制别名:

git config --global alias.tg '!git tag --sort=version:refname | tail -n 5'

由于我们用到了管道,所以必须在tg这个alias前加感叹号,让git知道这个alias是一个shell命令,而不是git的子命令。

Mac Terminal ssh后中文乱码的问题(git&vim)

安装的是英文的 OS X ,SSH到别的机器上的时候,发现 git log 和 vim都乱码了:

cjk

之前在 Ubuntu 上也遇到过类似的问题,知道是 LANG 或者 LC_* 系列变量设置错误。果然,LC_CTYPE 是 UTF-8 ,而不是预料的 en_US.UTF-8 。

不得已Google了半天,都是各种不设置LC_CTYPE、关闭SendEnv选项等。

后来偶然发现自己在 English 下 Region 设置成了 China,改为 US 之后,Terminal 中的 LC_CTYPE 就是 en_US.UTF-8 了,还顺带出现了 LANG 等变量。当然 SSH 之后汉字也可以正常显示了。

Region US

ENV

如何(使用工具)下载 Oracle 的 JDK ?

本来我们可以去 Oracle 官网,点击 Accept License 来下载 JDK 的,但是由于网速关系,这种方式很慢,也没有用到多线程下载技术,所以原来一直想用 curl 或者 aria2c 来下载。但是,如果直接curl地址的话,会遇到错误:

error result

偶然翻 AUR 中 JDK 的 PKGBUILD,发现还有一个 oraclelicense=a 的 Cookie,于是尝试之:

success

success cont.

好像成功了?!

那为什么不用 aria2c 来多线程下载呢?

但是 aria2c 没有 -b 参数。对于我们,只能使用 –load-cookies=<FILE> 来装载 Mozilla/Firefox(1.x/2.x)/ Netscape 格式的 Cookie 文件了。

Cookie 文件内容如下(可以用 aria2c 的 –save-cookies=<FILE> 参数生成 Cookie 文件,然后修改哦):

.oracle.com	TRUE	/	FALSE	1598962017	oraclelicense	a

不要忘记,其中的分割符是 tab(\t)。

然后尝试下aria2c –load-cookies=cookies.txt http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-macosx-x64.dmg 吧:

final

PS:不要忘记 aria2c 的 -x 和 -s 参数哦。

PPS:其实我是下载到 vps 上,然后再 aria2c 或者迅雷的。

Docker设置代理

Debian下

修改/etc/default/docker 添加http_proxy变量:

export http_proxy=http://192.241.209.203:8384/

http://www.dockboard.org/docker-http-proxy-with-golang/

Fedora下

修改/usr/lib/systemd/system/docker.service 文件,在service段设置Environment值:

[Service]
Environment=http_proxy=http://192.241.209.203:8384/

另外

代理http://192.241.209.203:8384/目前不可用。

退而求其次

首先,ping registry-1.docker.io ,得到IP地址;再在/etc/hosts中添加如下解析:

IP      cdn-registry-1.docker.io

出自https://github.com/dotcloud/docker/issues/3203#issuecomment-31160624

用Scriptish来修复教务网的显示问题

嗯,火狐打开jw.dhu.edu.cn的“查看选课结果”页面是这样的(没有显示课程门数和学分信息):

教务网在Firefox下的显示结果
教务网在Firefox下的显示结果

好吧,祭出Scriptish,写脚本,期间遇到问题。唉,不说了,上代码:

// ==UserScript==
// @name        Fix innerText for JW.DHU
// @namespace   www.robberphex.com
// @include     http://jw.dhu.edu.cn/*
// @version     1
// ==/UserScript==

Object.defineProperty(HTMLElement.wrappedJSObject.prototype, 'innerText', {
  get: function(){
    return this.textContent;
  },
  set: function(val) {
    this.textContent = val;
  }
})

使用方法

首先,为火狐安装Scriptish扩展。

然后,将上述代码保存到一个js文件中。

about:addons 页面,点击右上角的齿轮,选择 “Install Script From File”(从文件安装User Script),选择保存代码的js文件,点击确认即可。

显示结果(显示了课程门数和学分信息。数值什么的,看看就好):

修改后的教务网显示结果
修改后的教务网显示结果