在Linode中设置DNS

搬家到Linode上后需要做的第一件事就是把之前的域名转过来。

其具体做法是这样的:

1. 登录linode.com,选择最上面的DNS Manager

2. 选择Add a new domain zone

3. 在接下来的表单里,domain name填你的域名,但是这里需要注意的是,如果你想让你的域名能以不带www的方式访问,在这里就一定不要填写以www开头的域名。否则不带www的形式是访问不了的。这里的Type选择Master

4. Continue后,在下面那个表单里填写SOA E-mail地址,注意在下面的IP选择框中一定要选择你的公网IP而不是linode内网的IP。

5. 其他都可以保留默认值,直接save即可。

6. 别忘了把你域名的name server设置成linode的,具体地址在前面第四步里save完了以后那个页面上能看到。

但是好像linode里面即便是公网IP都是DHCP而来的,为了保险起见,我们最好还在系统里面设置一下固定IP,省的哪天一重启发现IP变了。在系统里面设置IP的步骤我这里就不列了,各位可以根据安装的不同的操作系统去google一下。这里我需要强调的是,不仅仅要设置IP,似乎DNS服务器也需要设置。我在linode的ubuntu里发现那个已经默认设置好了,但是在centos里面就得我自己来设置。

下回讲讲怎么配置web,php,mysql环境的吧,主要是用的lnmp一键安装包

TightVNC On Ubuntu

这两天在办公室里修了台破机器装了个Ubuntu 9.1. 不知道最近怎么那么人品大爆发,遇到了不少问题。主要是VNC的事情,客户端连接上去总是有问题。最终换了个TightVNC。

最后的问题是连也能连上去了,多个session也能开了,却发现大写键跟shift键根本不灵。搜了一通发现了一个解决方案,遂记录之以备不测:

The workaround is to include the line "export XKL_XMODMAP_DISABLE=1" in ~/.vnc/xstartup as in

    #!/bin/sh

    xrdb $HOME/.Xresources
    xsetroot -solid grey
    #x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
    #x-window-manager &
    export XKL_XMODMAP_DISABLE=1
    /etc/X11/Xsession

apparently it has to be before the "/etc/X11/Xsession" line

分享我的网站(wordpress)数据备份脚本

    前两天突然看到一篇文章讲两个Wordpress备份插件。我想实现异地备份功能,而这其中最好的插件貌似也只能把备份数据通过mail形式发到邮箱里。这对于小数据量的备份还可以,但是如果上传目录里的图多了根本就行不通。于是想到我是可以通过shell访问我的站点空间的,那完全可能通过文件传输协议把备份放到其他地方去。

    首先研究的是能不能通过dropbox,写个脚本直接备份文件进dropbox。我参考了《Install Dropbox In An Entirely Text Based Linux Environment》但是没有成功,原因是dreamhost支持的gclib是2.1版本的,而在纯字符操作环境的linux下安装dropbox需要glib2.4:

image

如果空间可以符合要求的话,可以试试这个方案,我个人觉得应该是最好的方案了。联系了dreamhost的客服,说我得自己来编译跟安装glibc。有点麻烦,有时间了再玩这个吧。

    这条路不通,就只能考虑直接通过ftp把备份文件传到我的路由器上了。有个DDWRT就是方便,直接在管理页面上做了端口映射,把上面的FTP服务的21端口暴露在互联网上,这样就可以通过我的dreamhost访问了。不过这样的缺点就是安全性不好。

    然后用下面的脚本实现备份操作。总体来说,备份需要做的工作分成两部分,一是备份数据库,二是备份一些重要文件。

#!/bin/sh
#Define variables
now=`date +%Y%m%d`
sitename="faquir.net"
dbname="zq_blog"
dbhost="mysql.faquir.net"
dbuser="xxxxxx"
dbpass="xxxxxxxxxx"
ftphost=myhome.3322.org
ftpuser=ftpuser
ftppass=ftppassword

#Clean folders
rm -rf ~/backups/$sitename
mkdir ~/backups/$sitename

#Backup database
mysqldump –opt –user=$dbuser –password=$dbpass –host=$dbhost $dbname > ~/backups/$sitename/$dbname.sql

#Package SQL and uploads images
tar czvf ~/backups/$sitename/$sitename.$now.tar.gz ~/$sitename/wp-content/uploads ~/backups/$sitename/$dbname.sql
echo "created file:"$sitename.$now.tar.gz

#upload to router
ping -c 3 $ftphost
if [ "$?" -eq "0" ]
then
ftp -i -n $ftphost<<EOF

user $ftpuser $ftppassword
cd /data/backups/
lcd ~/backups/$sitename
bin
put $sitename.$now.tar.gz
close
bye
EOF
fi

echo "backup finished!!"

    版权没有,大家可以自行修改以适应你的需求。

    之后在dreamhost中设置crontable让这个脚本每天半夜的时候执行。完了就给我的指定邮箱里发邮件。于是每天早上我除了得到我的备份文件外,就可以得到这样一个邮件了:

/home/zhangqi/faquir.net/wp-content/uploads/
/home/zhangqi/faquir.net/wp-content/uploads/2009/
/home/zhangqi/faquir.net/wp-content/uploads/2009/12/
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia-150×150.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1-150×150.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/.jpg-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21-300×225.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/1-300×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia-291×300.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/.jpg-300×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20-300×275.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/1-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1-291×300.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21-150×150.jpg
/home/zhangqi/backups/faquir.net/faquir_net.sql
created file:abigbird.com.20091203.tar.gz
PING myhome.3322.org (124.64.122.70) 56(84) bytes of data.
64 bytes from 124.64.122.70: icmp_seq=1 ttl=49 time=247 ms
64 bytes from 124.64.122.70: icmp_seq=2 ttl=49 time=228 ms
64 bytes from 124.64.122.70: icmp_seq=3 ttl=49 time=246 ms

— myhome.3322.org ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 228.394/240.844/247.589/8.832 ms
Local directory now /home/zhangqi/backups/faquir.net
backup finished!!

翻墙进入picasa

    最近发生在我身上的最让我伤心的事情之一就要算picasa被墙了,两年来去各地旅行的照片都保存在那上面。随着picasa的被墙,我两年的记忆好像也随风而去~~

    为了找回渐行渐远的记忆,不得不发动一切办法翻墙出去。上网搜了半天,发现其实还是用hosts的方式上,但是试了一下居然不行。后来发现是通常的解决方案里的IP地址貌似已经不能工作,直接被转到了google首页 —- 貌似这个是google自己的改动?之后又发现了一组新的IP确实可以工作。具体翻墙方法如下:

Windows:

修改<windows_root>\system32\drivers\etc\hosts文件,加入以下几行:

203.208.33.100 picadaweb.google.com
203.208.33.100 lh1.ggpht.com
203.208.33.100 lh2.ggpht.com
203.208.33.100 lh3.ggpht.com
203.208.33.100 lh4.ggpht.com
203.208.33.100 lh5.ggpht.com
203.208.33.100 lh6.ggpht.com

Linux:

修改/etc/hosts,同样加入上面那几行,不过需要注意的是在LINUX里面,IP地址跟域名之间必须要用“tab”隔开而不是空格。

 

至少在今天,2009-8-17,这个方案是OK的。

在Linux上分割PDF文件

    最近在学习新技术,下到的一个PDF文档有20多M,想放手机上看,直接说存储空间不足—其实我猜是内存不足才对,因为文件我是放卡上的。无论如何,需求就是,把这个大文件分割成几个小的,这样就可以在手机上看了。
    随便一google,就查到了ptftk,它能够做到的不仅仅是分割PDF而已,可以看其主页上的介绍:
===============================================================================================

If PDF is electronic paper, then pdftk is an electronic staple-remover, hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. Pdftk is a simple tool for doing everyday things with PDF documents. Keep one in the top drawer of your desktop and use it to:

  • Merge PDF Documents

  • Split PDF Pages into a New Document

  • Rotate PDF Pages or Documents

  • Decrypt Input as Necessary (Password Required)

  • Encrypt Output as Desired

  • Fill PDF Forms with FDF Data or XFDF Data and/or Flatten Forms

  • Apply a Background Watermark or a Foreground Stamp

  • Report on PDF Metrics such as Metadata, Bookmarks, and Page Labels

  • Update PDF Metadata

  • Attach Files to PDF Pages or the PDF Document

  • Unpack PDF Attachments

  • Burst a PDF Document into Single Pages

  • Uncompress and Re-Compress Page Streams

  • Repair Corrupted PDF (Where Possible)

===============================================================================================
    其基本用法在主页上也有举例,我这里就举一个能满足我需求的命令吧:
pdftk A=Eclipse.Plug-ins.Third\ Edition.Dec.2008.pdf cat A1-217 output plugin1.pdf
把“Eclipse.Plug-ins.Third\ Edition.Dec.2008.pdf”这个文件的第1到217页(1-4章)分为plugin1.pdf文件。命令语法很简单,就不讲了,可以直接去主页上看或者看命令的帮助。分开的文件不到7M,手机上面可以直接打开。

映射无处不在

    今天在跟同事讨论问题的时候的时候突然意识到,似乎在软件开发领域,我们随时随地都在跟“映射”打交到。
    需求和设计是把用户的要去映射为程序员的语言,构建是把设计映射为代码。而编译器则把程序员的代码映射为机器指令。
而这种映射在非纯业务层面里则更多。例如把规则映射为xml描述,把数据模型映射为关系模型,把一套复杂的业务实体映射为类的继承体系–而动作则可能映射为类的方法或aop。
    映射无处不在,可能这也是xml很有用的原因之一,它完全可以描述任何关系来保存这映射操作里的任何一个环节。

代码大全学习笔记3

    周末又花了半个下午的时间看了一章代码大全。发现如果是开着电脑看,总也不能集中精神,于是关了电脑,用笔和纸来做学习笔记。现在再来把记好的东西转过来。
    (more…)

Linux上Flac文件转MP3

    参考“http://www.linuxtutorialblog.com/post/solution-converting-flac-to-mp3”实现。
    实际上非常简单,就当笔记好了,记录一下我在Ubuntu上是怎么做的。
1. 安装FLAC
sodu apt-get install flac
2.安装lame
sudo apt-get install lame
3.下来就可以直接用命令进行转换了:
for file in *.flac; do $(flac -cd “$file” | lame -h – “${file%.flac}.mp3”); done

这个命令的效果是把当前目录下所有的flac文件都转换为mp3文件。不过有一个缺点,不能根据cue文件对flac进行分轨,转出来的是一个大的MP3文件。这个问题留到下周解决吧。

代码大全读书笔记2

用什么方式对软件开发这件事进行建模比较合适?

    软件开发就像写信?
a. 寄出去即为结束?
b. 典型的软件系统在其首次发布之后的工作量,可能达到整个工作量的90%,典型情况下也有2/3之多。
c. 对写作而言,最重要是原创性。但是对于软件构建来说,“努力创造真正的原创成果”的开发效率,往往低于专注于重用以往项目的一些设计思想、代码以及测试用例的开发效率

    培养、种植软件?

    “建筑”软件?

 智慧为工具箱
    技术并不是规则,它是分析的工具

代码大全读书笔记1

    原来很少在自己的blog里面写技术,以至我的blog连个“技术”的分类都没有。这次在team中制定了学习基础开发知识的任务,大家下来都要做homework。正好趁这个时候强迫自己把借来很长时间没怎么看的《代码大全》看了。以后每周会至少写两篇读书笔记。绝对不会全部生抄书上的东西,每一条都是自己个人有所感。到时候总结一下blog就可以做ppt出来讲了。

1. 软件开发在我们公司跟项目中实际上是一件很严肃和理性的事情

2. 开发人员,应该回过头来,更多地关注构建部分
a. 不同程序员的生产率差异可达20倍
b. 构建活动在整个开发活动总时间所占比例为30%–80%之间,而在我们这样的团队,其他的70%–20%工作实际上交由其他team完成。

3. 提高我们生产率和提高我们专业程度的方法—专注于以下方面(同属软件构建的不同部分)
a. 验证有关的基础工作已经完成,因此构建活动可以顺利地进行下去
b. 确定如何测试所写代码
c. 设计并编写类和子程序
d. 创建并命名变量和常量
e. 选择控制结构,组织语句块
f. 对你的代码进行单元测试和集成测试,并排除其中的错误
g. 评审开发团队其他成员的底层设计和代码,并让他们评审你的工作
h. 润饰代码,爱惜进行代码的格式化和注释
i. 将单独开发的多个软件组件集成为一体
j. 调优代码,让它更快、更省资源

4。 应该更广义地理解“模型”,其不仅仅是对隐晦、不直观概念的生动表达,其更表达了我们看问题的角度和方式。当模型本身被制定出来以后,它就已经限制了我们对模型所描述问题的认知。

5. 1973年,数据处理从“以计算机为中心”到“以数据库为中心”转变。把焦点从“在计算机中流动的数据流”转为“以数据池”为中心,已经36年了。是不是这个模型已经阻碍了“数据处理”的进一步发展?

6. 如何给我们在公司的软件开发活动下一个定义?
写作?
就像写信那样去write代码?
(个人觉得这个非常好,作者试着在这部分对不同的软件开发方式下定义,只要有了定义,就有了正确的模型,有了正确的着重点和学习、分析方式。所以这部分准备下次完整地一下看完)

« Previous Page