Fedora Core 10 下配置 Apache2

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>

Tags :  Linux   Fedora  

Published by 2009-01-12 01:00:25 | Views : 311 | Comments : 60


Python-news项目进度

Category : Django

从今天开始,在这里记录下Python-news项目的进度,已督促开发。

目前项目分为3个模块,分别为blogs,members和news,我主要负责news模块。

现在news已经完成的功能有:

  • 已经可以验证用户是否登录
  • 已经可以发帖,编辑器使用Tiny_MCE
  • 已经可以修改发的帖子,并会显示修改时间

接下来需要完成的功能有:

  • 继续美化,并完善新闻页面的首页
  • 继续修改发帖页面,使其可以粘贴图片
    • 除了新闻模块,blogs模块也需要开始开发了,目前没有人做这个模块,只能我跟大桃2个人来开发了

      Tags :  Django  

      Published by 2009-01-12 00:40:31 | Views : 290 | Comments : 48


我的Vim设置

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>

Tags :  Linux   Vim   Editor  

Published by 2009-01-01 18:57:00 | Views : 309 | Comments : 210


Ubuntu下配置Apache2虚拟主机

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即可完成设定。

Tags :  Apache2   Ubuntu   Linux  

Published by 2008-12-26 10:37:31 | Views : 329 | Comments : 45


使用jQuery创建拖拽排序列表

Category : JavaScript

项目中需要用到拖拽排序,于是去研究了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')来获得当前的排序结果.

Tags :  jQuery   JavaScript  

Published by 2008-12-22 16:13:11 | Views : 280 | Comments : 38


PHP脏话处理

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


WEB开发人员都应该有的工具

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 : 将本行代码复制到下一行

Tags :  PHP   IDE   Firefox   Aptana  

Published by 2008-12-10 17:05:59 | Views : 307 | Comments : 51


PHP基础查漏补缺

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.增加了主题更换功能(下午刚更新的)

欢迎大家继续支持本人的博客

Tags :  mood  

Published by 2008-11-10 10:36:02 | Views : 285 | Comments : 52


CSS布局基本知识

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;">

Tags :  CSS   HTML  

Published by 2008-11-08 10:48:32 | Views : 265 | Comments : 37