Category : Linux
由于家里没有Debian的安装盘,所以只好装上FC10来使用linux了.
装上fedora后,就开始配置我的lamp环境了,cd进/etc/apache2后发现,根本没有此目录,可是我的apache2服务器都开启了,怎么可能后不存在该目录呢.于是尝试用cd /etc/httpd来测试,结果还真让我给猜对了.Red hat系列的linux都把apache安装在httpd目录,而debian和ubuntu则是安装在apache2目录,名字稍有不同,进去后,发现配置文件也有很大的不同.
Debian下的目录设计一开始让人觉得有些匪夷所思,但是仔细想想会发现,这样的设置原来更人性化,它将配置文件分为几个目录,比如说,站点和虚拟主机的配置,就有2个目录,一个是sites-enable一个是sites-available,从名字上就可以看出来区别了,第一个是目前使用的,后面的是可以使用的.这里不再对debian的设置做更多的讲解了,本文主要讲Fedora下的配置.
Fedora下的apache2配置文件就一个,为/etc/httpd/conf/httpd.conf,打开此文件,将里面的User apache和Group apache改成自己的用户名,这样做就不用设置任何权限也可以打开自己的页面了(仅限开发用,做服务器的话不要这么改),如果要配置基于端口的虚拟服务器的话,先设置要监听的端口,比如说Listen 88,一个listen一行,然后设置虚拟服务器,配置信息如下:
<VirtualHost *:88>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/kingheaven/phpmyadmin
<Directory "/home/kingheaven/phpmyadmin">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Published by 2009-01-12 01:00:25 | Views : 311 | Comments : 60
从今天开始,在这里记录下Python-news项目的进度,已督促开发。
目前项目分为3个模块,分别为blogs,members和news,我主要负责news模块。
现在news已经完成的功能有:
- 已经可以验证用户是否登录
- 已经可以发帖,编辑器使用Tiny_MCE
- 已经可以修改发的帖子,并会显示修改时间
接下来需要完成的功能有:
Category : Vim
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
"
"
" Created by David Shieh
" E-mail : mykingheaven@gmail.com
" blog : kingheaven.alwaysdata.net
"
" created: 2009-02-06 14:03
"
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Get out of VI's compatible mode..
set nocompatible
"Sets how many lines of history VIM har to remember
set history=400
"Enable filetype plugin
filetype plugin on
filetype indent on
"Set to auto read when a file is changed from the outside
set autoread
"Have the mouse enabled all the time:
set mouse=a
"Set mapleader
let mapleader = ","
let g:mapleader = ","
"Fast save and quit
nmap <leader>w :w!<cr>
nmap <leader>q :q!<cr>
nmap <leader>f :find<cr>
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Enable syntax hl
syntax enable
"Set font to dejaVu 10pt
set guifont=dejaVu\ Sans\ MONO\ 10
"Set the colorscheme
colorscheme desert
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files and backups
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Turn backup off
set nobackup
set nowb
set noswapfile
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Folding
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Enable folding, I find it very useful
set nofen
set fdl=0
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text options
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set expandtab
set shiftwidth=4
au FileType html,python,vim,javascript,php,tpl setl shiftwidth=4
au FileType html,python,vim,javascript,php,tpl setl tabstop=4
set smarttab
set lbr
set tw=500
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Indent
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Auto indent
set ai
"Smart indet
set si
"C-style indeting
set cindent
"Wrap lines
set wrap
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM userinterface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Set 7 lines to the curors - when moving vertical..
set so=7
"Turn on WiLd menu
set wildmenu
"Always show current position
set ruler
"The commandbar is 2 high
set cmdheight=1
"Show line number
set nu
"Do not redraw, when running macros.. lazyredraw
set lz
"Change buffer - without saving
set hid
"Set backspace
set backspace=eol,start,indent
"Bbackspace and cursor keys wrap to
set whichwrap+=<,>,h,l
"Ignore case when searching
set ignorecase
set incsearch
"Set magic on
set magic
"No sound on errors.
set noerrorbells
set novisualbell
set t_vb=
"show matching bracets
set showmatch
"How many tenths of a second to blink
set mat=2
"Highlight search things
set hlsearch
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => file encoding
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set encoding=utf-8
set fileencodings=utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => NerdTree
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <F10> :NERDTreeToggle<CR>
Published by 2009-01-01 18:57:00 | Views : 309 | Comments : 210
Category : Linux
在安装完apache2和php后,我们需要对apache2进行一些配置。
进入/etc/apache2/目录,修改ports.conf,加入要监听的端口。
使用cp /mods-available/rewrite.load /mods-enabled/,开启mod_rewrite模块。
进入/sites-enabled/修改000-default文件,加入虚拟主机信息:
<VirtualHost *:88>
ServerAdmin webmaster@localhost
DocumentRoot /home/icefox/phpmyadmin/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/icefox/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
使用sudo /etc/init.d/apache2 restart重启apache2即可完成设定。
Published by 2008-12-26 10:37:31 | Views : 329 | Comments : 45
项目中需要用到拖拽排序,于是去研究了jQuery的UI,发现它提供了一种非常简单的方式来实现可视化排序.
首先是html代码:
<ul id="test">
<li>first</li>
<li>second</li>
<li>third</li>
</ul>
<input id="test-button" type="button">
<input id="show" type="text">
然后在script中导入jQuery,ui.core和ui.sortable3个包
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="ui.core.js"></script>
<script type="text/javascript" src="ui.sortable.js"></script>
最后,写对应的js脚本
$(document).ready(function(){
$('#test').sortable({
items:'li'
});
$('#test-button').click(function(){
$('#show').attr('value',$('#test').sortable('toArray'));
});
});
解释一下:
要排序的东西放在ul里,用sortable()来使列表可排序,items指出要排序的元素,使用sortable('toArray')来获得当前的排序结果.
Published by 2008-12-22 16:13:11 | Views : 280 | Comments : 38
Category : PHP
在开发过程中,经常会遇到需要处理脏字的问题,这里提供了一种简单通用的解决办法.
首先,把所有需要过滤的脏字存成字符串的形式,每个脏字之间用','来分隔,比如说"fuck,shit".
然后,用explode()来将字符串转换成数组,并用str_replace()来进行脏字的替换.
PHP代码:
<?php
function remove_bad_words($words){
$bad_words = "shit,fuck";
$array = explode(',',$bad_words);
foreach ($array as $one) {
$words = str_replace($one,'**',$words);
}
return $words;
}
$original_words = "shit , fuck you";
$modified_words = remove_bad_words($words);
print_r($modified_words);
?>
Tags :
PHP
Published by 2008-12-10 17:27:14 | Views : 297 | Comments : 45
Category : PHP
一、最好用的WEB开发IDE -- Aptana
目前的发行版是1.2.1.这是一个免费的基于Eclipse的IDE,用它的好处当然显而易见了。原生的支持HTML,CSS和JAVASCRIPT,支持的开发语言有PHP,Ruby On
Rails,Python,当然,这些都需要通过插件来支持,不过既然是基于Eclipse的,那么就不要对它的扩展能力表示怀疑.
二、最好用的WEB调试工具 -- Firefox + Firebug
毫无疑问,双F组合已经成为web开发人员的默认调试工具了.使用Firebug,我们可以非常容易的对样式和js进行调试,节省了开发人员的时间.目前还有FirePHP,这是个Firebug的扩展,使用它,我们还可以对PHP进行调试.
附:Aptana常用快捷键
Ctrl + D : 删除鼠标所在行
Ctrl + Alt + Arrow Left : 代码向左移一个Tab(可以直接按下Tab)
Ctrl + Alt + Arrow Right : 代码向右移一个Tab(可以按下Sheft + Tab)
Ctrl + Alt + Arrow Up : 将本行代码复制到上一行
Ctrl + Alt + Arrow Down : 将本行代码复制到下一行
Published by 2008-12-10 17:05:59 | Views : 307 | Comments : 51
Category : PHP
前天帮公司做oDesk的PHP测试,才发现原来基础这么重要,很多很简单的题都需要查资料才知道答案,于是决定重温下PHP知识.
一、数据类型
php有以下几个数据类型:
1.Integer整型
就是各种整型数字,$a = 15;$b = 27;$c = 0x24;等
2.Float浮点型
各种小数类型的数据,$a = 0.125;$b = 17.0E - 3;等
3.String字符串型
各种字符串数据,$a = "hello";
输入长一点的字符串可以这样
1. $foo = <<<EOD
2. This is a "multiline" string
3. assigned using the 'heredoc' syntax.
4. EOD;
4.Array数组类型
php中最重要的数据类型就是数组,其结构也可以千变万化.定义一个数组:
$array = array(
'0' => array(
'name' => 'David',
'nickname' => 'kingheaven'
),
'1' => array(
'name' => 'Shieh',
'nickname' => 'kingheaven'
)
);
这里定义了一个2维数组,使用里面的数据的话,可以这样:
echo $array['0']['name'];
5.Boolen布尔型
只有2个可选值,true和false
6.Null类型
不存在用Null来表示(Null不区分大小写)
7.Class对象类型
用一个例子来表示
class test {
var $str = "Hello World";
function init($str) {
$this->str = $str;
}
}
引用这个类里面的值用以下代码:
$class = new test;echo $class->str;
二、数据类型的转换
使用(int),(float),(string),(array)等将数据转换成相应类型,比如:
$a = (int)"123";$b = 123;$c = (string)$b;
三、面向对象基础
1.使用new来初始化对象:
class test {
function __construct() {
echo "hello";
}
}
$a = new test;
2.使用extends来继承类
class a {
function __construct() {
echo "hello";
}
}
class b extends a {
function __construct() {
echo "hello again";
}
}
$b = new b;
3.使用__autoload()来自动加载对象
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
这个例子中,$obj和$obj2会自动从MyClass1.php和MyClass2.php中去查找MyClass1和MyClass2类,如果出错,会抛出异常.
4.__construct()构造函数和__destruct()析构函数
和所有面向对象语言中的构造函数和析构函数一样,在类初始化和销毁的时候自动运行,只有一点需要注意,这个2个函数都没有返回值,而且不能尝试去抛出异常
5.访问控制public,protected和private
规则如下, 由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问.需要注意的是,如果未指定访问控制,则默认为public.
6.范围解析操作符::
要操作不在一个类内的函数或者变量,可以使用::来解析
class MyClass {
const CONST_VALUE = 'A constant value';
}
echo MyClass::CONST_VALUE;
在类的外面使用类名加::来表示调用这个类中的变量或者方法.如果想在类中调用父类的方法呢,可以这样
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass
{
// 覆盖父类中的方法
public function myFunc()
{
// 但仍然可以调用已被覆盖的方法
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
使用parent表示要使用父类的方法或者变量.要调用本类中的方法或者变量,可以用self::或者$this->.
Tags :
php
Published by 2008-11-14 11:04:11 | Views : 289 | Comments : 40
Category : Mood
经过本人的不懈努力,现在博客增加一下新功能:
1.增加了tag功能,每篇文章可以设置多个tag,首页显示所有的tag,可以通过链接来查看tag相同的文章
2.增加了搜索功能,可以搜索博客内的所有文章
3.增加了地图功能,不过目前还在完善中,地图的中心是我居住的城市--西安市
4.增加了主题更换功能(下午刚更新的)
欢迎大家继续支持本人的博客
Published by 2008-11-10 10:36:02 | Views : 285 | Comments : 52
Category : CSS
在CSS布局中,应该注意以下细节,否则网页的结构会变的非常混乱,布局也会变的异常复杂
内联(inline)元素和块级(block)元素的区别:
内联元素就是会显示在行内的元素,它默认是不会换行的,后面的元素会跟着它继续显示的;而块级元素就是刚好和它相反的元素,默认是会独立占据一行,后面的元素会显示在下一行.
常见的内联元素有a,span,input,select,code,img,常见的块级元素有div,h1-h6,p,pre
计算盒子的大小:
首先要清楚盒子的模型,盒子的最外层(黄色区域)是margin外补丁,然后是border边框(灰色区域),再往里面是padding内补丁(蓝色区域),最后才是元素的大小width和height(红色区域),所以一个盒子实际的宽度是margin+border+padding+width,高度是margin+border+padding+height,注意,margin,border和padding都要算2倍的,因为左右和上下都有.
页面的布局:
要让各个元素都按自己的要求来排列,其实也不是件容易的事情.如果要对页面的几个大的div进行布局的话,一般都会给要并排的div加上float:left的CSS属性,它的意思是让元素左浮动.因为默认的div是会独立占据一行的,只有让它浮动后,它才会并排.下面有个例子:
上面的2个层就是使用了float:left属性,是它们排在了一行,代码如下:
<div style="width:200px;height:100px;">
<div style="width:100px;height:100px;float:left;background-color:blue;"></div>
<div style="width:100px;height:100px;float:left;background-color:yellow;"></div>
</div>
使用float有一点需要注意的就是,下面的元素会继承上面的float属性,为了不使页面混乱,下面的元素必须要加上clear:both来清除浮动,或者在最后一个浮动的元素后面加上<br style="clear:both;">
Published by 2008-11-08 10:48:32 | Views : 265 | Comments : 37