Vim快速选中、删除、复制引号或括号中的内容

最近刚刚发现了一些Vim中,快速对引号或括号等标点内的内容进行选中、删除、复制操作的超级技巧,感觉非常实用。可以极大的提高编辑效率。

以下命令可以对标点内的内容进行操作。
ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容

继续阅读

发表在 vim | 留下评论

在Vim中设置svn代码更新、提交快捷键

经常写代码的同学免不了要经常重往版本库中提交、更新代码。如果在Vim中设置一些快捷键来完成这些工作,可以极大的提高工作效率。由于Vim灵活的可配置性,完成这些工作非常轻松,以svn为例说下具体方法:

在~/.vimrc中添加以下代码:
"更新当前目录的代码
map <F5>    :!svn up <cr>
"提交SVN(当前目录)
map <F7>    :!svn ci -m "" <cr>
"提交SVN(当前文件)
map <F8>    :!svn ci -m "" %<cr>

添加以上代码后,在Vim中按F5就可以更新当前目录,F7提交当前目录中版本库的所有改动,F8只提交当前编辑的文件(前提是当前文件已添加到版本库中),快捷键可以根据自己的喜好修改。

另外在版本库提交时还可以做一些其他的工作,比如如果你写的是PHP代码,那么可以在提交前先检查php程序中有没有语法错误,如果没有错误再提交,有错误不提交。

"提交SVN(当前文件)前先检查php语法
map <F8>    :!php -l % > /dev/null && svn ci -m "" %<cr>
"仅检测PHP语法
autocmd FileType php map <silent> <F9> :!php -l %<cr>

如果你使用的是其它版本控制软件,比如cvs等,相信参照以上的方法也可以简单实现。

发表在 php, vim | 留下评论

jQuery性能优化指南

现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,  比如我.  jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了<jQuery Performance Rules>这篇文章, 简单的摘译了一下:

  1. 总是从ID选择器开始继承
  2. 在class前使用tag
  3. jquery对象缓存起来
  4. 掌握强大的链式操作
  5. 使用子查询
  6. 对直接的DOM操作进行限制
  7. 冒泡
  8. 消除无效查询
  9. 推迟到 $(window).load
  10. 压缩js
  11. 全面掌握jquery

继续阅读

发表在 javascript | 留下评论

oracle预定义的异常列表

命名的系统异常 产生原因
ACCESS_INTO_NULL 未定义对象
CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时
COLLECTION_IS_NULL 集合元素未初始化
CURSER_ALREADY_OPEN 游标已经打开
DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值
INVALID_CURSOR 在不合法的游标上进行操作
INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字
NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的元素时
TOO_MANY_ROWS 执行 select into 时,结果集超过一行
ZERO_DIVIDE 除数为 0
SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数
VALUE_ERROR 赋值时,变量长度不足以容纳实际数据
LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码
NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据
PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl./SQL 系统包
ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法
STORAGE_ERROR 运行 PL/SQL 时,超出内存空间
SYS_INVALID_ID 无效的 ROWID 字符串
TIMEOUT_ON_RESOURCE Oracle 在等待资源时超时

继续阅读

发表在 数据库 | 留下评论

ORACLE 中ROWNUM用法详解

这段时间工作上一直在与ORACLE打交道,由于以前没有用过ORACLE,所以对很多知识不了解,上网时看到了一些ORACLE知识,在此记录,以便进一步学习。

对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、<=、!=),并非说用>,& gt;=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明
继续阅读

发表在 数据库 | 留下评论

gvim 在新标签页中打开文件

在windows下使用vim时有个很不方便的地方,每次双击文件编辑时,就会新打开一个窗口,如果想在新标签中打开,就必须右击文件,然后选择在当前的vim中打开。网上搜索了一些文章,方法基本都是修改注册表,修改右键的编辑功能,使用起来还是不方便。能不能双击文件时直接在gvim的新标签中打开呢?经过摸索,我想到了以下方法。

1.新建一个批处理文件,文件名随便取,比如gvim_tab.bat, 写入以下几行内容:
@echo off
start /B D:\Vim\vim72\gvim.exe -p --remote-tab-silent "%~f1"
exit
(注意修改你自己的gvim的路径)
2.将你想要用gvim编辑的文件类型的打开程序改为gvim_tab.bat(并选择记住打开方式)

这样双击你刚才修改的文件类型,看看是不是在gvim的新标签中打开了呢?

发表在 vim | 留下评论

软件开发者面试百问

来自: InfoQ

想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒。我去年就碰到这种事了。你肯定不想这样吧。听我的,没错。在树上开站立会议门都没有。

问点有难度的问题能帮你把聪明人跟狒狒们分开。我决定把我自己整理出来的软件开发者面试百问发出来,希望能帮到你们的忙。

这个列表涵盖了软件工程知识体系中定义的大多数知识域。当然,如果你只想找出类拔萃的程序员,便只需涉及结构、算法、数据结构、测试这几个话题。如果想雇架构师,也可以只考虑需求、功能设计、技术设计这些地方。

继续阅读

发表在 软件工程 | 留下评论

Linux下MBR的备份与恢复

MBR是Master Boot Record的简称,又叫主引导记录.它是硬盘上最重要的一个数据结构,当用分区软件创建分区的时候,分区软件会自动创建MBR.MBR处于硬盘的第一个 扇区.即0柱面,0磁头,1扇区.主引导记录由三部分构成,第一部分是一小段执行代码,共446字节,第二部分是64字节的分区表,第三部分是系统标志,一般为 55AA(两个字节).在基于X86的计算机上,可执行代码检查分区表的合法性,同时查找系统分区.找到系统分区后,MBR读取系统分区的第一个扇区,也就是分区引导 扇区到内存,然后把代码控制权交给分区引导扇区.

Linux备份或恢复MBR的方法很简单。
备份MBR分区法份方法如下:
dd if=/dev/sda1 of=/root/mbr bs=512 count=1

恢复MBR

dd if=/root/mbr of=/dev/sda1 bs=512 count=1

硬盘的分区表是存放在硬盘的446字节开始的64个字节中,如果只想备份硬盘分区表的方法如下:

dd if=/dev/sda1 of=/root/mbr bs=1 skip=446 count=64

恢复分区表的方法如下:
dd if=/root/mbr of=/dev/sda1 bs=1 skip=446 count=64

发表在 linux, shell | 留下评论

Mysql中复制介绍及主从服务器的配置

复制介绍

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主 服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

如果你想要设置链式复制服务器,从服务器本身也可以充当主服务器。

继续阅读

发表在 数据库 | 留下评论

修改mysql的最大连接数

mysql 5.0的默认最大连接数为100, 对于大负载量的并发需求可能不够,这时你可以修改mysql的最大连接。
查看mysql的当前最大连接数:
mysqladmin -uroot -ppassword variables | grep max_connections
或者
mysql> SHOW GLOBAL VARIABLES WHERE Variable_name='max_connections';

修改方法有如下几种

继续阅读

发表在 数据库 | 留下评论

Linux 下查看CPU温度

Linux下可以通过lm_sensors来查看CPU的温度(当然你的硬件首先要支持),要使用这个功能要有内核相关模块(比如I2C)的支持,下面说一下操作方法:

先看一下你的机器上是否安装了lm_sensors,
$ rpm -q lm_sensors

如果没有安装就先安装一下
$ sudo yum install -y lm_sensors

检测传感器:
$ sudo sh -c "yes|sensors-detect"

继续阅读

发表在 linux, shell | 留下评论

在Linux下查看、修改Windows分区的卷标

修改Linux分区的卷标可以用 e2label,比如要把/dev/sda1 的卷标改为/boot,则可这样

$ e2label /dev/sda1 /boot
查看Linux分区文件系统卷标
$ e2label /dev/sda1
/boot

在Linux中如何修改Windows分区的卷标呢?我们要用到两个工具:
对于 VFAT 文件系统,可以使用来自 dosfstools 软件包的 >dosfslabel;对于 NTFS 文件系统,可以使用来自 ntfsprogs 软件包的 ntfslabel

dosfslabel (若没有安装,Fedora用户可以直接yum install -y dosfstools)
用于VFAT分区,命令用法:
dosfslabel device [label]

如修改vfat分区(fat16,fat32均可)卷标

$ dosfslabel /dev/sda5 /windows

查看vfat分区卷标

$ dosfslabel /dev/sda5

ntfsprogs (若没有安装,Fedora用户可以直接yum install -y ntfsprogs)

用于NTFS分区,命令用法:
ntfslabel device [label]
如修改ntfs分区卷标

$ ntfslabel /dev/sda6 /xp

查看ntfs分区卷标

$ ntfslabel /dev/sda6
/xp

发表在 linux, shell | 留下评论

UNIX 高手的 10 个习惯

采用 10 个能够提高您的 UNIX® 命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术,这些技术非常好,但是通常被忽略。了解常见 错误和克服它们的方法,以便您能够确切了解为何值得采用这些 UNIX 习惯。

当 您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类 缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯,之后对进行了更详细的描述。

继续阅读

发表在 linux, shell | 留下评论

GNU 与自由软件基金会创始人 Richard Stallman 访谈录

Richard Stallman 是著名的 GNU 项目,自由软件基金会创始人,这是vnunet.com 对 Richard Stallman 做的一次访谈,谈到了他对自由软件,商业软件以及开源软件看法,另谈到了社会网络站点以及隐私问题。原文作者 Rosalie Marshall。

作为自由软件基金会的创始人,你如何定义自由软件?

继续阅读

发表在 linux, unix哲学 | 留下评论

使用 Shell 进行进制转换

假定在您的脚本中有一些数字,您需要以另外的进制处理这些数字。使用 Shell 运算可以很容易地自动实现这类转换。一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制。如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带有 0(这种情况假定是八进制)或 0x(这种情况假定是十六进制)。键入以下内容以得到一些八进制和十六进制值的十进制输出:

$ echo $((013))
$ echo $((0xA4))

您还可以使用以下格式指定 2 到 64 之间的任意进制:

继续阅读

发表在 linux, shell | 留下评论