25 Jun 2013
今天一时犯贱想要算算自己的学分绩 (确实是犯贱啊!), 然后发现手动计算实在太麻烦了, 于是写了下面这个脚本来自动计算学分绩.
使用方法
- 将 NJU GPA 这个链接拖拽到你的书签栏.
- 登录教服平台.
- 点击刚才添加到书签栏的书签, 稍等片刻即可看到结果. (记得允许弹出窗口)
所有课程都纳入了计算范围 (不包括总评一栏标注为合格的课程), 学分绩这种东西知道个大概就行了, 况且不同情况下计算方法也不一样,
比如出国是包括通识课的, 而保研则是各个学院有自己的标准.
后话
由于教服平台并不是在一个页面将所有成绩展示出来, 所以需要读取多个页面的数据后才能计算, 但是页面一刷新, 脚本就无法再运行下去了.
一开始想用 Frame 来解决这个问题, 后来因为 SOP 的原因而告失败.
最后解决的办法是通过 window.open() 打开子窗口, 然后对子窗口进行操作.
具体细节如果感兴趣的话, 自己分析下上面那个 Bookmarklet 的源码吧.
忽然想到今年补选通识课的时候, 利用按键精灵和 JS 实现了个简单粗暴的抢课插件, 当时之所以用到按键精灵就是因为抢课需要不停的刷新页面, 现在看来也可以利用操作子窗口的办法来实现个纯 JS 的抢课插件了.
22 Jun 2013
统计大作业需要录制演示视频, 使用 Camstudio 录制的视频有些多余的部分需要剪掉, Ubuntu 下也没什么好的剪辑工具, 下了个 OpenShot 试了下, 功能是简陋了点, 不过还算能用. 就是导出视频的时候提示我没有 libx264 和 libmp3lame 库.
大概搜了下, 安装 libavformat-extra-52 即可.
sudo apt-get install libavformat-extra-52
Trouble Installing Codecs libx264 AND libmp3lame
10 Jun 2013
继上次 Ubuntu 知识整理后, 今天对 Vim 进行一下整理.
Vim 教程推荐
Venture Into Vim
作者的英文发音挺奇怪的, 不过我觉得还蛮好听的, 尤其是那些弹舌音.
关于 buffer 的快捷键
退出在 buffer 中的文件
查看 buffer 中的文件
在 buffer 中切换
:bn[ext]
:bp[revious]
:bf[irst]
:b[num]
:b#
bp 与 b# 的区别是, bp 的上一个针对的是在 ls 命令中显示的顺序, 而 b# 代表的是切换到上一次访问文件. b[num] 切换到 ls 中显示的对应编号的文件.
假如你 ls 显示的内容是下面这样的:
1 # "file_a"
2 "file_b"
3 %a "file_c"
- bd 删除 file_c
- bd2 删除 file_b
- bn 切换到 file_a
- bp 切换到 file_b
- bf 切换到 file_a
- b2 切换到 file_b
- b# 切换到 file_a
expandtab, shiftwidth, softtabstop, tabstop 的区别与含义
" 使用空格代替 tab
set expandtab
" normal 模式下使用 >>, << 和 Insert 模式下使用 <C-t>, <C-d> 进行缩进的长度
set shiftwidth=4
" Insert 模式下使用 Tab 键进行缩进的长度
set softtabstop=4
" Tab 的长度. 如果没有开启 expandtab 选项, vim 会对缩进的空格进行转换, 假如缩进长度为 n, 将转换成 n / tabstop 个 tab 加 n % tabstop 个空格
set tabstop=8
要更好的理解这之间的区别就是要搞清楚缩进的含义. 缩进就是插入空格, 至于空格是否会被转换成制表符, 就需要看 expandtab 选项是否开启, 而空格如何转换成制表符则是根据 tabstop 的值来确定.
Note: 使用 set list 来显示不可见字符, 比如, 制表符对应的字符就是 ^I.
Vim 中删除空行
# :[range]g[lobal]/{pattern}/[cmd]
:g/^$/d
具体的关于 global 的使用方法可以使用 :h global 来查看手册.
zR 与 zi 的区别
zR: 设置 foldlevel 的值为最高值.
zi: 对 foldenable 的值取反.
Vim 中每一个 fold 都有一个开关的属性. 每次 set foldlevel 都会根据 foldlevel 的值修改每个 fold 的开关情况. set foldenable 则只设置全局是否开启折叠,并不会修改每个 fold 的开关情况.
这样的话 zR, zi 的区别就很好理解了
递增/递减数字
Ctrl-a/x: 光标所在位置如果是数字的话则加/减 1.
Vim 中限制替换区域
假如你有一段代码是这样的.
foo(){
// do something
}
bar() {
// do something
}
如果你希望使用 :s 命令在所有前面没有空格的大括号之前加上空格, 那么就需要使用到 \zs, \ze 来对替换区域进行限制.
好吧, 我必须得承认这个例子举的很烂, 你完全可以不使用 \zs 来完成这个任务.
04 Jun 2013
安装 Guest Additions
如果虚拟机中安装的是 XP 的话, 只要在菜单中选择安装增强包, 然后打开我的电脑, 双击光驱就可以弹出安装对话框了.
但是在 Ubuntu Server 中则要稍微复杂些.
首先, 安装 build-essential:
sudo apt-get install build-essential
之后在 Devices 菜单中选择 Install Guest Additions, 与 XP 不同的是, 这里你需要手动挂载光驱:
sudo mount /dev/cdrom /media/cdrom
挂载成功之后进入 /media/cdrom 文件夹并执行 VBoxLinuxAdditions.run 脚本:
cd /media/cdrom
sudo ./VBoxLinuxAdditions.run
至此增强包安装完成. 之后你就可以进行共享文件夹的设置了, 设置完成后重启, 共享文件夹将出现在 /media 目录下, 以 sf_ 开头.
但是你会发现你无法切换到你的共享文件夹中, 原因是当前用户不在 vboxsf 这个组中. 使用下面的命令将当前用户加到 vboxsf 组中.
sudo usermod -G vboxsf -a ACCOUNT
最后重启下就行了.
VirtualBox Shared Folders with Ubuntu Server Guest
Fix shared folder Ubuntu Guest & Host Virtualbox permission denied
长时间没有操作后屏幕黑屏
解决方法是在 grub 中添加 consoleblank=0 的启动参数.
sudo vim /etc/default/grub
找到
GRUB_CMDLINE_LINUX_DEFAULT=""
在双引号中添加 consoleblank=0
GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"
最后更新下 grub 并重启
sudo update-grub
sudo reboot
How do I disable the blank console “screensaver” on Ubuntu Server?
添加 Host-only Adapter
首先在 VirtualBox 主界面中打开 Preferences.
在 Network 界面中添加一个 Host-only Network. 这样当你选择 Host-only Adapter 时就不会报错了.
完成这些后, 你会发现主机还是无法访问 Ubuntu. ifconfig 显示的是 eth1 网络接口没有启动. 需要我们手动配置下.
sudo vim /etc/network/interfaces
# 添加下面的内容
auto eth1
iface eth1 inet dhcp
# 启动接口
sudo ifup eth1
01 Jun 2013
题外话
不久前决定使用 Jekyll 来写博客, 断断续续花费了一周的时间终于在今天将博客搭建完成. 由于之前的博客是自己写的一个类似于微博的系统, 数据不太适合直接转移到 Jekyll 平台, 所以决定把之前的一些内容整理整理再发布到这里.
版本选择
首先, 不是 LTS 版本的都不需要考虑. 这样也就只剩下 10.04 和 12.04 可供选择. 我由于实在不能接受 Unity 的桌面, 所以最后选择了 10.04 的版本.
但是 10.04 也有些问题, 比如不能安装 lightworks 不得不说是令人比较遗憾的地方.
以下所有内容主要基于 Ubuntu 10.04 (Lucid Lynx)
安装
安装基本上没有什么好说, 就是如果使用 USB 安装 Alternate 版本的时候可能会出现找不到镜像文件的错误.
解决方法是在启动的时候把光标移到 Defaut 上然后按 Tab 键来修改 Grub 的启动选项, 之后在 “–” 前添加 “cdrom-detect/try-usb=true”, 最后回车就行了.
上面是 10.04 的解决办法, 如果你安装的是 12.04 的版本的话, 就需要自己手动挂载 ISO 文件到光驱了:
# 将 ISO 文件拷贝到 U盘
# 当出现错误提示的时候按 Alt + F2 切换终端, 然后输入下面的命令
umount /dev/sdb4
mkdir /mnt/usb
mount /dev/sdb4 /mnt/usb
cd /mnt/usb
mount -o loop ubuntu-12.04-alternate-i386.iso /cdrom
软件
MPlayer2
Ubuntu 上最好的播放软件, 没有之一.
sudo add-apt-repository ppa:ripps818/coreavc
sudo apt-get update
sudo apt-get install mplayer2
LibreOffice
安装的话直接去官网下载 deb 包.
安装之前先卸载 OpenOffice:
sudo apt-get purge openoffice*.*
Docky
软件中心的 Docky 无法去除自带的图标, 所以要从 ppa 上安装.
sudo add-apt-repository ppa:docky-core/ppa
sudo apt-get update
sudo apt-get install docky
下面是去除 Docky 自带图标:
- 按Alt + F2, 输入 gconf-editor, 回车
- 找到 apps/docky-2/docky/items/DockyItem
- 取消选择 ShowDockyItem
- 重启 Docky
unrar
rar 解压中文压缩包会出现编码问题, unrar 则没有这个问题.
JDK
安装无非就是下载解压, 主要是设置环境变量.
网上有的说是修改 .bashrc 文件, 这样虽说运行确实不成问题, 但是 Eclipse 将无法找到你安装的 JDK.
所以最好是修改 /etc/profile 文件.
添加:
export JAVA_HOME=/opt/java/jdk1.7.0_17
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
美化
修改用户登录界面的桌面背景
默认的紫色背景太丑了.
懒得翻译了, 直接贴原文:
- Move your favorite login wallpaper to your Home folder. Make sure that it is of .JPG format.
- Move the wallpaper to the system wallpaper directory. In the terminal:
sudo mv ~/your-wallpaper-name.jpg /usr/share/backgrounds
- Activate the Appearance window upon login
sudo cp /usr/share/applications/gnome-appearance-properties.desktop/usr/share/gdm/autostart/LoginWindow
- Close the terminal. Log out of your current session. At the login screen, the Appearance window will show up. Go to the background tab and select your favorite wallpaper as the background. (If you can’t find your favorite wallpaper, click Add. You should be able to find your wallpaper in the /usr/share/backgrounds directory).
- Your login background will instantly change to the wallpaper you have selected. Now login to your desktop.
- Open a terminal. Type the following command to deactivate the Appearance window upon login.
sudo unlink /usr/share/gdm/autostart/LoginWindow/gnome-appearance-properties.desktop
How to Change Your Login And Boot Screen In Ubuntu Lucid
修改 Terminal 默认启动大小
给 Terminal 添加 --geometry=132x43
启动参数.
删除信封/帐号图标
# 删除信封图标
sudo apt-get remove indicator-messages
# 删除帐号图标
sudo apt-get remove indicator-me
优化
终端 Tab 键不区分大小写
默认在终端中按 Tab 键进行补全的时候是区分大小写的, 解决方法是:
# Case-Insensitive Tabbing in Ubuntu Terminal
sudo vim /etc/inputrc
# 添加下面内容
set completion-ignore-case on
解决无线 LED 灯一直闪烁的问题
Ubuntu 默认的情况下是, 如果无线上有网络数据交换的话, LED 灯会一直闪烁.
sudo vim /etc/network/if-up.d/wifi-led-noblink
# 添加下面内容
#!/bin/sh
#This script prevents the wifi light from blinking when on.
#To enable this script, create a soft link to it in /etc/network/if-up.d/
echo none > /sys/class/leds/iwl-phy0::RX/trigger
echo none > /sys/class/leds/iwl-phy0::TX/trigger
echo none > /sys/class/leds/iwl-phy0::radio/trigger
echo none > /sys/class/leds/iwl-phy0::assoc/trigger
# Make the script executable
sudo chmod u+x /etc/network/if-up.d/wifi-led-noblink
HOW TO STOP THE BLINKING WIFI LED ON UBUNTU LAPTOPS WITH INTEL WIRELESS CARDS
如果你是 ThinkPad
设置充电阈值
sudo -i
aptitude install tp-smapi-dkms
modprobe tp_smapi
echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 85 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
配置风扇
由于 Ubuntu 对于 ThinkPad 的风扇支持不是太好, 导致系统运行过程当中, 风扇持续的高速运转, 可以通过安装 ThinkFan 解决.
# 安装 ThinkFan
sudo apt-get install thinkfan
# 开机加载模块
sudo vim /etc/modprobe.d/thinkfan.conf
# 添加下面内容
options thinkpad_acpi fan_control=1
# 开机启动
sudo vim /etc/default/thinkfan
# no => yes
START=yes
# 按需修改 ThinkFan 配置
sudo vim /etc/thinkfan.conf
设置小红点灵敏度
sudo vim /etc/rc.loal
# 将以下内容写到文件中
sleep 10
echo -n 255 > /sys/devices/platform/i8042/serio1/serio2/speed
echo -n 255 > /sys/devices/platform/i8042/serio1/serio2/sensitivity
最后,安装 Pointing devices 来启用中键滚动和关闭 TouchPad
其它
解决软件中心中的残留源
懒得修改了, 直接把我原来的博客复制过来.
今天想要解决 network-manager 的 DHCP 问题时,添加了 ppa:network-manager/ppa, ppa:network-manager/trunk 这两个源,后来发现即使是升级了 network-manager 也不能解决问题,然后就先卸载所有和 network-manager 相关的程序,然后从 /etc/apt/sources.list.d 中删除了相关的ppa源,但是发现即使我 update 之后,在 Ubuntu Software Center 中还是有这两个源的存在, 各种Google之后,在下面这个帖子里发现了蛛丝马迹:
https://bugs.launchpad.net/ubuntu/+source/software-center/+bug/574155
10楼的兄弟说道:
I think I know what´s causing this:
I used some PPA´s which I removed, but I kept using the ppa version of the app
The software center keeps the ppa because you still use the ppa version.
After forcing the program back to the lucid version with synaptic, the ppa disappears in the software center after updating the cache. :)
于是打开 Synaptic Package Manager 搜索删不掉的 ppa 源中的软件(一定要完全对应),然后选择 Package - Force Version 在弹出的窗口里的下拉菜单中选择 lucid 的版本, 最后应用修改, 最最后运行
sudo /usr/share/software-center/update-software-center
重建下 software-center 的缓存,一切OK!
rc.local 没有运行?
Q: rc.local is not executed
A: Upstart operates asynchronously. rc.local often runs too soon. Try adding a sleep command at the top of the script
总而言之就是要想你写在 rc.local 的脚本能顺利运行,就在脚本最开始加上 sleep 10
无法编译程序?
现在想想以前每次想要在 Ubuntu 下自己编译程序都不能成功,大概是因为没有安装 build-essential 吧
sudo apt-get install build-essential
桌面背景图片所在文件夹
/usr/share/backgrounds
PPA 源所在文件夹
/etc/apt/sources.list.d
还在用左右箭头移动光标?
bash 中删除一个 word 的快捷键是 Alt + Backspace
在一般的文本编辑器中, 按 word 移动的快捷键时 Ctrl + 光标, 按 word 删除的快捷键是 Ctrl + Backspace
Eclipse 中文注释乱码
- window->preferences->General->Content Types
- 找到要修改的文件的类型,在下面有个Default encoding,在输入框中输入GBK
- 点击Update
- 点击OK
- 重启eclipse
激活/锁定 root 用户
# 激活 root 用户
sudo passwd root
# 锁定 root 用户
passwd -l root
深度卸载软件
使用 purge 而不是 remove 来卸载.
卸载后执行下面的命令:
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean
dpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge