导出导入数据表中部分记录的方法

今天犯了一个很低级的错误,通过命令行恢复一个mysqldump出来的很大的文件时,由于没有没有将它放到后台进行,运行几个小时之后突然由于超时而中断与远程服务器的连接了。幸好可以通过SQL语句导出导入部分记录的数据:

导出:

SELECT * FROM park_log WHERE pl_id > 51025594 INTO OUTFILE '/tmp/apps_park_log_51025594.txt';

导入:

 LOAD DATA INFILE '/data1/apps_park_log/xB' INTO TABLE park_log;

yejr曾经测试比较,LOAD DATA比导入SQL文件快,但由于LOAD DATA必须所有操作进行完之后才向数据库里写记录,所以有时候往往会感觉LOAD DATA比较慢。我刚操作一个数千万行的文件时,还以为程序没有工作而手动中止了。真是一个活生生的例子。

换用Drupal程序

操作远远没有想象中的复杂:先通过wordpress将原Blog内容导出为一个WXR格式的文件,然后通过Drupal的Wordpress Import模块,点几下鼠标即可将wordpress的内容转移至durpal里。

为了简化url,这次干脆将drupal程序放到了网站的根目录,值得一提的是,转换前后blog的feed订阅地址都没有变,不知道是不是巧合。

分区、格式化、用标签方式挂载一个分区

fdisk /dev/sdb
mkfs.ext3 /dev/sdb1

mkdir /data1
e2label /dev/sdb1 /data1
然后编辑/etc/fstab文件,添加如下内容
LABEL=/data1 /data1 ext3 defaults 1 0
然后mount -a

e2labe就好像给一个磁盘设备添加标签,便于记忆。不过我觉得挂载时还是使用设备标识(如/dev/sdb1)比较明显一些。

tcp_window_scaling导致的windows服务器回应迟缓问题

工作遇到了一个奇怪的现象:windows下访问某个IIS服务器没有问题,有的Linux也可以正常访问,但有的Linux访问时,服务器回应十分迟缓。

后来在bbs里有人让我参考kernel相关的一篇文章,原来自从内核2.6.17版本后TCP window scaling的变动导致无法访问某些路由器。

我进行如下设置,解决了问题:
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

文件反转命令tac和字符串反转命令rev

1. tac
将文件的最后一行当作第一行输出,以此类推,比如:
bash-3.1$ cat /etc/passwd | tac | tail -n 3
daemon:x:2:2:daemon:/sbin:/bin/false
bin:x:1:1:bin:/bin:/bin/false
root:x:0:0::/root:/bin/bash

2. rev
用法:rev [file ...]
描述:反转文件每行里的字符串顺序,如果没有指定文件,则从标准输出读取
bash-3.1$ echo 123456789 | rev
987654321

通过ssh证书让putty自动登录

再复杂的密码也没有证书安全,再简单的密码也没有证书方便。有些人因为Putty无法保存密码,进而抛弃了这个免费、小巧的远程登录工具。条条大陆通罗马,其实可以ssh证书的方式让putty安全、方便的实现自动登录。

step0. 所需软件
putty.exe, puttygen.exe(官方)
step1. 生成密钥
运行puttygen.exe,按照默认即可:选择SSH-2 RSA1024位的key、空白的Key passphrase,然后点击Generate,在空白区域不断随机挪动光标,直到它产生key。将它生成的那一行Public key粘贴到文件里,比如叫id_rsa2.pub;然后点击"Save private key",将对应的密钥保存下来,如id_rsa2.prv。

UTF-8、BOM、<feff>的问题

有些编辑器,比如M$ Windows的记事本,在创建UTF8编码文件时会在头部添加一个不可见字符。这个字符可以通过vim查看到,而且如果是一个php文件,php4、php5在解析时均会有输出。

原来这个被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8里是可选的。因此,才会出现有的编辑器在文件头部添加添加BOM、而有的语法解析器又不作处理的的混乱情况。

根据w3c里FAQ的建议,解决方法就是,删无赦!

btw, 刚才无意中发现,PHP 5.2.5的命令行下去除了BOM的显示,而 PHP 5.2.6确又显示出来了。

使用Slax Linux制作可引导的U盘

step1. 准备工作
- 下载Slax,.iso或者.tar格式均可,当前是v6.0.7,约190M
- 视主板BIOS具体选项,将U盘制作成相应格式(USB-HDD/USB-FDD/USB-ZIP)的可引导盘
如果找不到U盘附带的转换软件,可使用USBoot v1.70(下载页面)。我使用的是USB-HDD。
- U盘1个,我使用的是很普通的64M的

step2. 格式化U盘
这里建议格式化成linux下的文件系统,因为后面我使用默认的FAT32文件系统制作好,发现中途因为找不到某些文件而失败。
# mkfs.ext2 /dev/sdb1

step3. 拷贝文件
下载后直接将其中的boot和slax目录拷贝至U盘里
# cp boot slax /mnt/sdb1 -r
这里假设U盘被mount到了/mnt/sdb1目录

step4.

体验virtualbox的无缝模式

由于公司选择腾讯的RTX作为官方通讯工具,使用Linux后没少和虚拟机打交道。见识了MachineMa同学演示的VirtualBox无缝模式,根据网上的教程,比葫芦画瓢体验了一把,感觉不错,终于找到了个VirtualBox代替Vmware的理由了。

步骤:
step1. 下载并安装VirtualBox
VirtualBox是从去年的1.5.0版本开始支持无缝模式的,根据使用Vmware的经验,建议选择最新的版本

step2. 选择相应的guest additions程序
类似vmware里的工具包,不过这个是个单独的iso文件,需要单独下载。

step3. 安装guest additoins
开启虚拟机的情况下,通过菜单里的"device" / "mount CD/DVD" / "CD/DVD image",选择已下载完成的Vboxguestadditions.iso,然后在虚拟机的光驱里双击安装。

按计划行事

随着时间的积累,以前大家的工作方式逐渐变得混乱,领导审时度势组织大家开了一次小会。本没有对这场中午的小会抱多大希望,但“develop with pleasure”的主题货真价实,听完之后犹如醍醐灌顶般恍然大悟,感觉以前没有头绪的事情一下子有了眉目。

对于维护上线的web项目,以往的做法是发现错误随时更正。这种松散的方式看起来很辛苦,但效率总是不高,而且还极易处于被动的地位。另外一种方式的好处就显而易见了,根据各种需求、计划、决策、反馈制定一个短期的版本计划,定期发布。根据该计划,线上的每次改动都将对应代码仓库里的一个版本,这样即便是某次发布时出现错误,也可以很容易恢复到稳定版本。除了版本发布操作,不再零散更新线上的文件。如果想灵活一些,还可以缩短计划中的开发周期。

以前没有仔细考虑过类似的问题,或许这只是项目管理中的冰山一角。其实很多事情都是相通的,就拿上文中的按计划发布版本来说,早在大学时班主任就曾多次向我们灌输计划、总结的重要性,当时可能也听了,只是没真正体会到它的重要性。

总之一句话:事前计划,事后总结。
就这。

btw,新增一个"快乐开发 | developer"分类,今后用于存放类似问题。

Syndicate content