kk Blog —— 通用基础

date [-d @int|str] [+%s|"+%F %T"]

CI 处理 URL 的“大小写敏感”问题

CI 处理 URL 的“大小写敏感”问题

找到system/core里的Router.php文件,修文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//找到 function _validate_request
function_validate_request($segments)
{
	// 增加下面这一句,其实就是强制将控制器名字转化为小写
	$segments[0] = strtolower($segments[0]);
	// Does the requested controller exist in the root folder?
	if(file_exists(APPPATH.'controllers/'.$segments[0].EXT))
	{
	    return $segments;
	}
}
?>

Ubuntu安装mysql扩展

打开“新立得软件包管理器“安装两个东东就好了,

他们分别是:php5-mysql 和 libapache2-mod-auth-mysql,

装好之后重启apache:sudo/etc/init.d/apache2 restart

git remote管理远程库

查看当前的远程库

要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字.在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库:

1
2
3
4
5
6
7
$ git clone git://github.com/schacon/ticgit.git
$ cd ticgit
$ git remote
	remote也可以加上 -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址:
$ git remote -v
	origin git://github.com/schacon/ticgit.git
	如果有多个远程仓库,此命令将全部列出.

这样一来,我就可以非常轻松地从这些用户的仓库中,拉取他们的提交到本地.

添加远程仓库

要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行git remote add [shortname] [url]

1
2
3
4
5
6
7
8
9
10
11
12
$ git remote
	origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
	origin git://github.com/schacon/ticgit.git
	pb git://github.com/paulboone/ticgit.git
	现在可以用字串 pb 指代对应的仓库地址了.
	比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb
$ git fetch pb
	现在,Paul 的主干分支(master)已经完全可以在本地访问了,
	对应的名字是 pb/master,你可以将它合并到自己的某个分支,
	或者切换到这个分支,看看有些什么有趣的更新.

从远程仓库抓取数据

正如之前所看到的,可以用下面的命令从远程仓库抓取数据到本地: $ git fetch [remote-name]此命令会到远程仓库中拉取所有你本地仓库中还没有的数据.运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟.

如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下.所以git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新).有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并. 说明:
事先需要创建好远程的仓库,然后执行

1
2
3
4
5
git remote add [仓库名] [仓库url]  
git fetch [远程仓库名]  
即可抓取到远程仓库数据到本地,再用  
git merge remotes/[仓库名]/master 
就可以将远程仓库merge到本地当前branch.

这种分支方式比较适合独立-整合开发,即各自开发测试好后 再整合在一起.

远程仓库的删除和重命名

在Git中可以用git remote rename命令修改某个远程仓库的简短名称,比如想把 pb 改成 paul,可以这么运行:

1
2
3
$ git remote rename pb paul
$ git remote
	origin

paul注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了paul/master. 碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:

1
2
3
$ git remote rm paul
$ git remote
	origin

CodeIgniter去掉url中的index.php

RewriteEngine命令需要rewrite mod的支持

$>cd /etc/apache2/mods-enabled 切换到apache下的mods-enabled目录
$>sudo ln -s ../mods-available/rewrite.load rewrite.load 启用rewrite mod
$>sudo /etc/init.d/apache2 restart 重启apache服务器。 或者在apache的配置文件httpd.conf中将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉,再重启服务器。
或者
sudo a2enmod rewrite

CodeIgniter去掉url中的index.php

CodeIgniter去掉url中的index.php CI默认中url中带index.php,比如 http://localhost/index.php/blog/comment/1.html 去掉这个index.php步骤:

1.打开apache的配置文件,conf/httpd.conf :

LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉。
搜索 AllowOverride None(配置文件中有多处),看注释信息,将相关.htaccess的该行信息改为AllowOverride All。

2.在CI的根目录下

即在index.php,system的同级目录下,建立.htaccess,直接建立该文件名的不会成功,可以先建立记事本文件,另存为该名的文件即可。内容如下(CI手册上也有介绍):

1
2
3
RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

就可以去掉 index.php 了。
要注意 /index.php/$1 要根据你目录(Web 目录,比如 http://www.domain.com/index.php)的实际情况来定,比如网站根目录是 /ci/index.php 则要写成 /ci/index.php/$1

RewriteCond $1 !^(index.php|images|robots.txt) 上面的代码意思是排除某些目录或文件,使得这些目录不会 rewrite 到 index.php 上,这一般用在图片、js、css 等外部资源上。也就是说非 PHP 代码都要排除出去。(这里我排除了 images 目录和 robots.txt 文件,当然 index.php 也应该被排除)

3.

将CI中配置文件(system/application/config/config.php)中$config[‘index_page’] = &index.php&;将$config[‘index_page’] = &&; 。
ok,完成。还要记得重启apache。

tail 命令

1
2
tail -c +1024 test
head -c +1024 test

1.如果你只想看文件的前5行,可以使用head命令,如:
1
head -5 /etc/passwd
2. 如果你想查看文件的后10行,可以使用tail命令,如:
1
tail -10 /etc/passwd 或 tail -n 10/etc/passwd
1
tail -f /var/log/messages

参数-f使tail不停地去读最新的内容,这样有实时监视的效果 用Ctrl+c来终止!

3. 查看文件中间一段,你可以使用sed命令,如:
1
sed -n '5,10p' /etc/passwd

这样你就可以只查看文件的第5行到第10行。

tail语法格式:

1
2
3
tail [ -f ][ -c Number | -n Number | -m Number | -b Number | -k Number ] [File ]
或者
tail [ -r ][ -n Number ] [ File ]

使用说明: tail命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。 Number变量
指定将多少单元写入标准输出。 Number变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头
指定的单元数开始将文件写到标准输出。如果值的前面有-(减号),则从文件末尾指定的单元数开始将文件写到
标准输出。如果值前面没有 +(加号)或-(减号),那么从文件末尾指定的单元号开始读取文件。

主要参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。
-c Number 从 Number 变量表示的字节位置开始读取指定文件。
-f 如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),
	那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续
	从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定 File 参数,
	并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另一个进程正在
	写入的文件的增长。
-k Number 从 Number 变量表示的 1KB 块位置开始读取指定文件。
-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在
	单字节和双字节字符代码集环境中的一致结果。
-n Number 从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件。
	如果文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有
	与 -n 标志一起时才有效。否则,就会将其忽略。
1
2
3
4
input
tail -b +1 file
tail -c +1 file
tail -n +2 file//从开始数第二行的位置