自杀

作者:Ajian 发布时间:February 25, 2009 分类:生活记事

           什么样的动力会让一个人去自杀,我从未想过这个问题,今天却是发现这个词竟这么近的在我的身边发生。做着依旧往常平常的饭菜,依然看着永不停止的电视节目,想着明天依旧繁忙的工作,却不知远处一个朋友已悄然离开,无声无息......

          一切都这么不可思议,是否会有人因你的离去而改变,山川河流没有,花草树木没有,那他呢?

         为什么,为什么,千万个为什么在我脑际乱撞。对你的思念你是否还能感应到,你是否得到解脱了。

         如果真的有来世,你是否会后悔;  如果真的有来世,你会选择.......

         记忆会随着时间的推移把你从脑中慢慢的擦去,也许不管多少年都会记得这个事实,而你是否也已经都忘记,不管是高兴的还是痛苦的。

          走好!                                                                                                                                                                           

祭丹姐

2009-02-25

Vim配置技巧小结

作者:Ajian 发布时间:February 19, 2009 分类:杂记摘要,Linux软件

整理一些个人的Vim配置技巧。

默认情况下,Vim编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更快捷和方便的编程可以更改 ~/.vimrc配置文件,当然也可以直接在命令模式下设置
VIM会默认读取用户根目录下的.vimrc,第一次安装完vim是没有这个配置文件的,需要cp /etc/vim/vimrc ~/.vimrc

$vim ~/.vimrc

基本语法:
“双引号开始的行为注释行.

在最后添加或者修改原有的命令
命令:

1、“显示行号
set number
2、“检测文件的类型
filetype on
3、“记录历史的行数
set history=1000
4、“语法高亮度显示
syntax on
5、智能缩进
“第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;
“第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编
set autoindent
set smartindent
6、“设置一个TAB四个空格,并且转换成四个空格,到其它编辑器上也是四个空格而不是一个TAB,tabstop则代表的还是此编辑器的一个TAB,那么不同的编辑器则会有不同。
set softtabstop=4
7、“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
8、“自动查询功能,进行查找时,使用此设置会快速找到答案。
set incsearch

如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包

Shell代码规范[个人]

作者:Ajian 发布时间:February 18, 2009 分类:Shell

前言:随着写的SHELL程序越来越多,发现自己每次写都有不同的习惯或者定义了不同的东西,变量名定义得不一样,整个程序缩进不统一,没有注释等问题,等我回过头看这些程序的时候发现很麻烦。所以想到写个自己的shell代码规范。

作   者: Ajian
时   间: 2009-02-19
文 档名: Shell代码规范
版   本: 1.0
用   途: 规范Shell代码书写,方便查看与修改。

1 概述

1.1 目的

定义Shell脚本命名和编码规范,统一管理Shell脚本,便于自己和别人查看,提高代码书写速度和美观,暂时只对自己进行约束,其它人只供参考。

1.2 概述

本文主要根据Fedora Core 4.0的特点,描述安装脚本、OS初始脚本、补丁制作等方面的代码编写规范,可能大部分还是根据自己的习惯与反复思考后的结果,同样也参考了PHP代码规范等。

1.3 开发工具

shell脚本是个文件,没有开发环境,FC4图形环境下,可用gedit、vi、vim、joe等,推荐使用vim因为这个最通用,他的功能同样是很强大,如果想在图形化下可以用gvim,并将环境设置为sh高亮显示,方法:1)cp /etc/vim/vimrc ~/.vimrc    2) vim ~/.vimrc   去掉”syntax on,并且;Windows下,可用ultraedit。文件保存时,有汉字提示的Shell脚本文件,文件保存时,字符编码必须为GB18030/GBK/GB2132 (UTF-8) 三种格式之一。

2 对象命名规范

2.1 命名约定
1.本文档的命名约定是系统配置文件、脚本文件;

2.文件名、变量名、函数名不超过20个字符;

3.命名只能使用英文字母,数字和下划线,只有一个英文单词时使用全拼,有多个单词时,使用下划线分隔,长度较长时,可以取单词前3~4个字母。

4.文件名全部以小写命名,不能大小写混用(通过U盘交换文件时,大小写可能会丢失,即:大写文件名可能会全部变成小写文件名);

5.避免使用Linux的保留字如true、关键字如PWD等(见附表);

6.从配置文件导出配置时,要注意过滤空行和注释

2.2代码开头约定

1、第一行一般为调用使用的语言

2、下面要有这个程序名,避免更改文件名为无法找到正确的文件

3、版本号

4、更改后的时间

5、作者相关信息

6、该程序的作用,及注意事项

7、版权与是否开放共享GNU说明

8、最后是各版本的更新简要说明
如下面的例子:

#!/bin/bash

# -------------------------------------------------------------------------------
# Filename:    check_mem.sh
# Revision:    1.1
# Date:        2009/02/10
# Author:      Ajian
# Email:       ajian521#gmail.com
# Website:     www.ohlinux.com
# Description: Plugin to monitor the memory of the system
# Notes:       This plugin uses the "" command
# -------------------------------------------------------------------------------
# Copyright:   2009 (c) Ajian
# License:     GPL
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# you should have received a copy of the GNU General Public License
# along with this program (or with Nagios);
#
# Credits go to Ethan Galstad for coding Nagios
# If any changes are made to this script, please mail me a copy of the changes
# -------------------------------------------------------------------------------
#Version 1.0
#The first one , can monitor the system memory
#Version 1.1
#Modify the method of the script ,more fast

2.3 缩进

由于Shell没有很好的编辑环境,所以,建议用四个空格为基数进行缩进,好处在不同的环境下TAB可能代表的空格数不同,造成代码的错乱。用TAB他的优点是速度快方便,可以在编辑的时候也用TAB,但需要转换。

可以在更改编辑器,Windows的就不说了,主要是VIM

:set softtabstop=4

注意不要使用 :set tabstop=4 上面那个是同时把这一个TAB转换为四个空格,而这一条是定义TAB为四个空格,如果到其它编辑器上就会看到默认8个空格的情况,那就会不美观了。

另外将原有的TAB转换为空格,:retab

如果想让刚才的配置永久生效需要改动vim的配置文件 vim ~/.vimrc,更多详细的有用的配置见“VIM配置总结”

2.4 页宽

每行不要超过80字,如果超出,建议用“\”折行,有管道的命令行除外。

2.5 环境变量

变量:全部是大写字母

变量引用:全部以变量名加双引号引用,如”$TERMTYPE”,或“${TERMTYPE}”,如果变量类型是数值型不引用,如:

如果需要从配置文件导出变量,则在变量前加一大写字母,以识别导出变量与自定义环境变量的区别,如:

变量值的引用尽量以$开头,如$(ls inst_*.sh),避免使用`ls inst_*。sh`

循环控制变量可以命名为单个字母, 比如 i、j等。 也可以是更有意义的名称, 比如 UserIndex。

环境变量和全局变量 在脚本开头定义。

函数中使用较多的文件,以环境变量的形式在文件开头定义,仅函数中使用的变量在函数开头定义

2.6 函数

函数以动名词形式存储,且第二个单词首字母要大写,如updateConfig()

每个函数控制在50-100行,超出行数建议分成两个函数

多次反复调用的程序最好分成函数,可以简化程序,使程序条理更清楚

2.7 语句

if 语句

if/then/else 语句中最可能被执行的部分应该放在 then 子句中, 不太可能被执行的部分应该放在 else 子句中。

如果可能, 尽量不要使用一连串的 if 语句, 而应该以 case 语句替代。

不要使 if 语句嵌套超过5层以上, 尽量以更清楚的代码替代。

case 语句

概要

case 语句中的单个子句应该以 case 常数的数字顺序或字母顺序排列。 子句中的执行语句应该尽量保持简单, 一般不要超过4到5行代码。 如果执行语句过于复杂, 应该将它放置在独立的函数中。

case 语句的 *) 子句应该只在正常的默认情况或检测到错误的情况下使用。

格式

case 语句遵循同样的缩进和命名约定。

while 语句

使用 Exit 过程退出 while 循环是不好的; 如果可能, 应该只使用循环条件来结束循环。

while 循环的所有初始化代码应该紧贴在进入 while 循环之前, 不要被其他无关语句分隔开。

循环结束后的处理应该紧跟在循环之后。

for 语句

如果需要执行确定次数的增量循环, 应该用 for 语句替代 while 语句。

2.8 信号捕捉

如果在进行重要配置修改时,应捕捉用户按键,如果用户按下Ctrl+C等重要操作终止程序,则调用回退程序,如:

2.9 关于注释

程序头应加注版本与功能说明的注释。但程序第一行不能汉字。

程序体中应包含必要的注释,注释说明如下:

单行注释,可以放在代码行的尾部或代码行的上部;

多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分

代码修改时,对修改的内容要加必要版本注释及功能说明。

参考资料:借鉴了仙人掌的规范 http://www.linuxdiyf.com/bbs/thread-106301-1-1.html

WordPress代码高亮插件WP-Syntax[转载]

作者:Ajian 发布时间:February 18, 2009 分类:杂记摘要

给自己的BLOG加上了代码的语法高亮这插件,对比了好几个类似的插件,觉得这个还是不错的,并且还加上了CSS显示更好看些了,现在转载记录下,以备切换之用。另外注意的事不要设置line为1 即为显示行号,因为我的首页的摘要会出现问题。

下载地址:http://wordpress.org/extend/plugins/wp-syntax/

安装

  1. Upload wp-syntax.zip to your Wordpress plugins directory, usually wp-content/plugins/ and unzip the file. It will create a wp-content/plugins/wp-syntax/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Create a post/page that contains a code snippet following the proper usage syntax.

写文章时,用 <pre> 和 </pre> 将代码包住即可。同时在<pre> 中指定参数 lang=”代码类型” ling=”起始行数”。
最后在使用的过程中注意 lang=”" 一定要使用双引号,而不能用单引号。

Usage(使用方法)

Wrap code blocks with <pre lang=”LANGUAGE” line=”1″> and </pre> where LANGUAGE is a GeSHi supported language syntax. See below for a full list of supported languages. The line attribute is optional.

Example 1: PHP, no line numbers

function foo()
{     echo "Hello World!n";   }
for ($i = 0; $i &lt; 10 $i++) {     foo();   }
?&gt;

Example 2: Java, with line numbers

1
2
3
 public class Hello {
   public static void main(String[] args)
{     System.out.println("Hello World!");   } }

Example 3: Ruby, with line numbers starting at 18

18
19
20
21
22
 class Example
   def example(arg1)
     return "Hello: " + arg1.to_s
   end
 end

Supported Languages(支持的语言)

The following languages are supported in the lang attribute:

abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp-qt, cpp, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml-brief, ocaml, oobas, oracle8, pascal, per, perl, php-brief, php, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80

(Bold languages just highlight the more popular ones.)

Styling Guidelines

WP-Syntax uses default GeSHi colors by default. It also uses inline styling to make sure that code highlights still work in RSS feeds. To spruce up your code snippets to look more like the screenshots, try adding this CSS to your stylesheet template:
WP-Syntax 能够保留代码中的缩进(空格),让代码更加美观。不过,WP-Syntax高亮的代码默认不会进行拆行,如果代码过长的话,将会导致页面被撑大,影响美观。将如下 CSS 样式写入到所选择的主题样式中,能够解决这个问题:

.wp_syntax {
  color: #100;
  background-color: #f9f9f9;
  border: 1px solid silver;
  margin: 0 0 1.5em 0;
  overflow: auto;
}

/* IE FIX */
.wp_syntax {
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: expression(this.scrollWidth &gt; this.offsetWidth ? 15 : 0);
}

.wp_syntax table {
  table-layout:fixed;
  overflow:hidden;
  text-overflow:ellipsis;
  WORD-BREAK: break-all;
  WORD-WRAP: break-word;
  border-collapse: collapse;
}

.wp_syntax div, .wp_syntax td {
  vertical-align: top;
  padding: 2px 4px;
}

.wp_syntax .line_numbers {
  text-align: right;
  background-color: #def;
  width:30px;
  color: gray;
  overflow: visible;
  font-family: 'Lucida Grande',
  'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;
}

/* potential overrides for other styles */
.wp_syntax pre {
  margin: 0;
  width: fixed;
  float: none;
  clear: none;
  WORD-BREAK: break-all;
  WORD-WRAP: break-word;
  overflow: visible;
  font-size:8pt;
  font-family: Courier New;
}

Advanced Customization

WP-Syntax supports a wp_syntax_init_geshi action hook to customize GeSHi initialization settings. Blog owners can handle the hook in a hand-made plugin or somewhere else like this:

 add_action('wp_syntax_init_geshi', 'my_custom_geshi_styles');
  function my_custom_geshi_styles(&amp;$geshi)
{
     $geshi-&gt;set_brackets_style('color: #000;');
     $geshi-&gt;set_keyword_group_style(1, 'color: #22f;');
 }
?&gt;

This allows for a great possibility of different customizations. Be sure to review the GeSHi Documentation.

Varnish注意事项[增长]

作者:Ajian 发布时间:February 18, 2009 分类:Varnish

Varnish基于内存的缓存软件,因为他的特点也有他特别好的优点,当然缺点也是很明显的,但对于一般的非下载网站来说,使用varnish是相当不错的,以我使用1年多的在两种不同的系统架构上成功使用的经验可以告诉你varnish有着相当不错的性能,稳定性更比squid好。下面是总结一些varnish使用的注意事项:

PS:现在varnish比较的活跃,出来的版本2比1改进了很多,后来的几个小版本又有不错的表现,但由于之前一直忙其它的,虽然使用上了最新的也满足了我们的需求,但还没有时间来细细的研究他,如果有相同爱好的人可以一起研究

1、操作系统需要是64位系统,不然缓存的大小会自动减为2G

2、从版本1到版本2的启动文件是要改变的,尤其注意很多人都是从张宴的BLOG那篇文章入手的,如果按那篇文章来配置版本2的话会有使用不了或者很慢的情况,很多人都出现了这个问题(有时间我写个详细的)

3、varnish重启时一定要在访问量少的时候,因为varnish是基于内存缓存的,重启后很多数据都需要重新从后端获取,造成后端的瞬时压力很大,所以会很危险,尽量在访问较小的情况下重启varnish服务,或者用varnish的命令接口加载配置文件,看下面的图

varnish重启后影响图

4、(未完待续,想起再写)