storytlr 安装出现错误

出现错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) ENGINE=MyISAM DEFAULT CHARSET=utf8’ at line 19

经检查出错文件是:

protected/install/database/update/003/add_mentions_table.sql

该 SQL 语句多了一个逗号,将 UNIQUE KEY `item` USING BTREE (`source_id`, `item_id`, `url`), 后的逗号去掉即可。

bash启动脚本

本文系转载,原文网址:http://learn.akae.cn/media/ch31s04.html

4. bash启动脚本

启动脚本是bash启动时自动执行的脚本。用户可以把一些环境变量的设置和alias、umask设置放在启动脚本中,这样每次启动Shell时这些设置都自动生效。思考一下,bash在执行启动脚本时是以fork子Shell方式执行的还是以source方式执行的?

启动bash的方法不同,执行启动脚本的步骤也不相同,具体可分为以下几种情况。

4.1. 作为交互登录Shell启动,或者使用–login参数启动

交互Shell是指用户在提示符下输命令的Shell而非执行脚本的Shell,登录Shell就是在输入用户名和密码登录后得到的Shell,比如从字符终端登录或者用telnet/ssh从远程登录,但是从图形界面的窗口管理器登录之后会显示桌面而不会产生登录Shell(也不会执行启动脚本),在图形界面下打开终端窗口得到的Shell也不是登录Shell。

这样启动bash会自动执行以下脚本:

首先执行/etc/profile,系统中每个用户登录时都要执行这个脚本,如果系统管理员希望某个设置对所有用户都生效,可以写在这个脚本里

然后依次查找当前用户主目录的~/.bash_profile、~/.bash_login和~/.profile三个文件,找到第一个存在并且可读的文件来执行,如果希望某个设置只对当前用户生效,可以写在这个脚本里,由于这个脚本在/etc/profile之后执行,/etc/profile设置的一些环境变量的值在这个脚本中可以修改,也就是说,当前用户的设置可以覆盖(Override)系统中全局的设置。~/.profile这个启动脚本是sh规定的,bash规定首先查找以~/.bash_开头的启动脚本,如果没有则执行~/.profile,是为了和sh保持一致。

顺便一提,在退出登录时会执行~/.bash_logout脚本(如果它存在的话)。

4.2. 以交互非登录Shell启动

比如在图形界面下开一个终端窗口,或者在登录Shell提示符下再输入bash命令,就得到一个交互非登录的Shell,这种Shell在启动时自动执行~/.bashrc脚本。

为了使登录Shell也能自动执行~/.bashrc,通常在~/.bash_profile中调用~/.bashrc:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

这几行的意思是如果~/.bashrc文件存在则source它。多数Linux发行版在创建帐户时会自动创建~/.bash_profile和~/.bashrc脚本,~/.bash_profile中通常都有上面这几行。所以,如果要在启动脚本中做某些设置,使它在图形终端窗口和字符终端的Shell中都起作用,最好就是在~/.bashrc中设置。

下面做一个实验,在~/.bashrc文件末尾添加一行(如果这个文件不存在就创建它):

export PATH=$PATH:/home/akaedu

然后关掉终端窗口重新打开,或者从字符终端logout之后重新登录,现在主目录下的程序应该可以直接输程序名运行而不必输入路径了,例如:

~$ a.out

就可以了,而不必

~$ ./a.out

为什么登录Shell和非登录Shell的启动脚本要区分开呢?最初的设计是这样考虑的,如果从字符终端或者远程登录,那么登录Shell是该用户的所有其它进程的父进程,也是其它子Shell的父进程,所以环境变量在登录Shell的启动脚本里设置一次就可以自动带到其它非登录Shell里,而Shell的本地变量、函数、alias等设置没有办法带到子Shell里,需要每次启动非登录Shell时设置一遍,所以就需要有非登录Shell的启动脚本,所以一般来说在~/.bash_profile里设置环境变量,在~/.bashrc里设置本地变量、函数、alias等。如果你的Linux带有图形系统则不能这样设置,由于从图形界面的窗口管理器登录并不会产生登录Shell,所以环境变量也应该在~/.bashrc里设置。

4.3. 非交互启动

为执行脚本而fork出来的子Shell是非交互Shell,启动时执行的脚本文件由环境变量BASH_ENV定义,相当于自动执行以下命令:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

如果环境变量BASH_ENV的值不是空字符串,则把它的值当作启动脚本的文件名,source这个脚本。

4.4. 以sh命令启动

如果以sh命令启动bash,bash将模拟sh的行为,以~/.bash_开头的那些启动脚本就不认了。所以,如果作为交互登录Shell启动,或者使用–login参数启动,则依次执行以下脚本:

/etc/profile
~/.profile

如果作为交互Shell启动,相当于自动执行以下命令:

if [ -n "$ENV" ]; then . "$ENV"; fi

如果作为非交互Shell启动,则不执行任何启动脚本。通常我们写的Shell脚本都以#! /bin/sh开头,都属于这种方式。

解决 Win 7 apache 局域网内其他计算机不能访问的问题

症状:

安装  Apache 后,本地 http://localhost, http://127.0.0.1, http://192.168.1.X,可以正常访问,但是同局域网内其他计算机输入本机IP地址却不能访问。

解决:

猜测是防火墙的问题,于是关闭防火墙,可以访问。因此你偷懒的话可以直接在控制面板-Windows防火墙里将防火墙关闭即可。

另一种解决方式是,给防火墙增加一条规则允许 80 端口被访问,具体设置方法如下:

1、在 控制面板 > 系统和安全 > Windows防火墙中 左侧点击 高级设置
2、点击左侧 入站规则,然后点击右侧的 新建规则,然后在弹出的入站规则向导中依次是
规则类型:端口
协议和端口我们选的是 TCP 协议和 特定本地端口(例:80)
操作:允许连接
何时应用规则中选中所有(域、公用、专用)
输入名称和描述
点击完成,就OK了。
经过以上设置,同局域网的其他计算机就可以用你的IP地址访问你搭建的服务器了。

推荐拼音输入法英库

搜狗输入法会经常弹出小窗口问是否要换皮肤,烦不胜烦啊。其实QQ拼音也不错,今天在论坛上看到一个网友推荐英库输入法,我已经安装使用,效果不错,默认界面看起来很小清新。

英库输入法 微软英库拼音输入法运用微软亚洲研究院的创新研究成果,新的版本优化了核心引擎,系统更加稳定高效,加上云端服务器的无限量存储和计算能力,还有30多万词条的中文词库和新词热词,大幅提升输入的准确率,中英文混合一次输入,最新的电视剧名?网络流行语?赛季新秀?都来试试看吧!

CodeIgniter 控制器方法不能和控制器类名同名

我写了这样一段代码:

class Login extends CI_Controller {

    public function index()	{
        $this->load->library('form_validation');
        /* ... other code ... */
        $this->load->view('login_form');
    }

    public function login() {
        $this->load->helper('url');
        /* ... other code ... */
    }
}

 

运行,无论怎样都有错,提示 $this 的 load, session 等属性不存在。找了半天才知道是存在与控制器类名相同的方法引起的。

但是为什么会是这样呢?有时间研究一下。

Linux 批量设置文件夹权限 && eclipse 返回上一次光标位置

好吧,其实标题两者内容没有联系,写在这里做个备忘。

1、Linux 下递归给某文件夹下的所有文件和文件夹设置权限命令为:

chmod -R 777 DIR_NAME

只给文件夹设置权限:

find DIR_NAME -type d | xargs chmod 777

同理只给文件设置权限:

find DIR_NAME -type f | xargs chmod 777

2、eclipse 使用 F3 查看函数或类定义后,如果打开的文件的文件很多就不知道原光标在何处。eclipse 有快捷键:Alt + 方向键

利用 Dropbox 备份网站数据及数据库

过程记录如下。

1、在 Dropbox 官网注册帐号,刚注册会有 2 G 空间。(对我们这台博客服务器来说,差不多了。可以通过邀请和做任务获得更多的免费空间)

2、ssh 登录服务器

3、下载并配置 Dropbox linux 客户端
下载

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

运行

~/.dropbox-dist/dropboxd

会生成一个地址,复制到浏览器打开,然后登录 Dropbox 帐号就可以将服务器和帐号绑定了。
家目录下会生成一个 ~/Dropbox 文件夹,Dropbox 默认会同步该文件夹下的所有文件。在该目录下为网站根目录做一个软链接

ln -s /var/www

这样就可以将网站所有文件同步到 Dropbox 服务器啦,如果要同步 Mysql 数据库,还需要 mysqldump 出数据,将其复制到这里即可。

4、Dropbox 一直运行会占用内存,因此做了一个定时任务,每天备份 Mysql,然后运行 Dropbox 一个小时。
编辑任务

crontab -e

编辑(如果是第一次运行此命令,会提示选择编辑器),在最下面添加如下内容

0 3 * * * mysqldump -u用户 -p密码 --all-databases > ~/Dropbox/mysql-all-database.sql
0 4 * * * ~/.dropbox-dist/dropboxd
0 5 * * * pkill dropbox

 

谷歌收录大大减少

今天在谷歌搜索“刘静的博客”,竟然翻到第三页下面才出现我的这个博客链接。我记得前两天还很正常,搜索该词条排在第一个的就是我的这个博客。

我估计是因为前几天我安装了一个 SEO 的插件,使用该插件更改了我博客分类,归档的 URL 结构,以及文章标题的显示内容。我搞不清楚该插件是如何工作的,后来又卸载了它。应该就是因为这个原因导致谷歌对博客收录产生了影响。

结论:不要大范围的更改站点 URL 结构和文章内容页面的标题。

关于visual studio类视图和资源视图不显示类和资源的问题

Update 2012-4-2 21:18:56:

两种解决方法:①工具—选项—文本编辑器—C/C++—高级,浏览/导航下的禁用数据库选项置为True;② Win + R 运行:devenv /resetsettings

我电脑上安装的是visual studio 2010.昨天发现新建项目后类视图和资源视图不显示相关内容,大家知道,如果没有类视图的话会很不方便。在网上放狗搜索未找到解决方法,没办法,只有重安装了一遍,打开,发现问题依旧。我猜想是哪里设置出错了。后来在msdn论坛上找到了重置所有设置的方法:运行:devenv /resetsettings,此命令功能是重置IDE所有设置。(顺便再贴一个命令:devenv /safemode,以安全模式即不加载第三方插件运行vs。)

重置vs设置后一切正常,然后我又设置了禁用数据库选项,发现再次打开工程又出现了上述问题,才明白问题出在了哪里。

前两天,我发现使用vs2010建的工程,目录下会有sdf文件和ipch目录,这两个东西占的空间非常大,想看看能不能删了这两个东西,于是搜索,找到解决方法。依次打开vs2010菜单栏—工具—选项—文本编辑器—C/C++—高级,浏览/导航下的禁用数据库选项置为True。工程就不会产生sdf和ipch相关文件了。但之后类视图不显示类的问题就出现了。

题外话:我怎么觉得wordpress的编辑器这么难用啊,一点都不方便。每段前面要空两格都不能按Tab键实现,并且按回车就会空出一行。关键是,就算我在编辑里前面有空格,发布之后段落开头空格又不见了。这格式到底要怎么控制嘛。还有,为什么标题visual和studio之间的空格隔那么远啊。

(原博客发布时间:2011-05-10 09:05:16)