wordpress 固定连接使用标题的英文翻译

2014/03/27

WordPress使用文章名做为标题有助于优化搜索。但使用中文文章名做标题又显得很丑。所幸有人提供了插件WP Slug Translate,可以将中文文章名自动翻译成英文。

下载安装此插件。在点击发布文章后,出现错误:
Fatal error: Call to undefined function curl_init() in /mnt/…../wp-
content/plugins/wp-slug-translate/wp-slug-translate.php on line 30

curl_init() 是CURL提供的函数。出现这个错误应该是curl没有安装。到服务器上查看,果然未安装CURL;
使用命令:
apt-get install php_curl
安装以后重新测试。文章标题的英文翻译成功,但是访问时出现404错误。查找原因是
1.apache默认没有加载重写模块。
2.PHP没有开启伪静态方法。
解决方案:
1.在 /etc/apache2/mods-enabled 中添加一个load文件,假如mymod.load,将需要加载的模块添加进去。这里需要添加的是mod_rewrite.so:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

2.打开 /etc/apache2/sites-available/default

.将站点节点下的AllowOverride None 改为AllowOveride All

然后重启Apache,成功设置标题为文章中文路径的英文翻译!

 

Sqlite 如何获取系统时间

2014/03/20

Sqlite3提供了函数

select time()

select datetime()

来获取时间和日期。不过获取出来的是世界时间。可以给函数传参数来获取本地时间:

select time(CURRENT_TIMESTAMP,’localtime’);

select datetime(CURRENT_TIMESTAMP,’localtime’)

Note 2,631

Ubuntu Dash 无法搜索的问题

2014/01/13

Ubuntu从13.04升级到13.10后,出现Dash无法进行搜索的问题,即Dash里一片空白,输入任何字符都无法没有反应。

找到如下解决办法:

sudo apt-get install –reinstall unity-lens-* unity-scope-home

完成以后重启Ubuntu解决此问题。

 

 

Note 2,781

什么是良好的封装

2013/07/13

封装、继承和多态是面向对象的三要素。

不良的封装会使程序变得难以开发和维护,严重的时候,甚至会破坏类的工作机制。

就如果一间房子,正常进出房间的通道就是门,房间内的东西被墙保护着,而如果你的墙被砸了一个洞,可以让人随意进出,那后果可想而知。

一个封装良好的类至少需要做到以下几点:

1.尽可能地限制类和成员的可访问性

尽可能地使用private,而不是public.

2.不要公开暴露成员变量

暴露成员变量会破坏类的封装性,从而限制对抽象的控制能力。

例如Point类

class Point
{
public:
   int x;
   int y;
   long color;
}

 

这么做破坏了其封装性。使用者可以随意地使用类里的数据,而Point类却连成员变量何时被改变都无从知道。更严重的是,一旦需要改变该类的行为,将付出很大的代码。例如如果需要在 x<0时,color改变为红色。而下面的代码则可以轻易做到:

01 class Point
02 {
03 public:
04     int GetX();
05     void SetX(int x);
06   
07     int GetY();
08     void SetY(int y);
09   
10     long GetColor();
11 private:
12     int m_nx;
13     int m_ny;
14     long m_lcolor;
15 }

 

void Point::SetX(int x)
{
   if(x < 0)
        m_lcolor = 0xFF0000;
   
   
m_nx = x;
}

这样的封装才是合理且安全的,外部不知道,也不需要知道SetX内部是如何做的。

3.避免把私用的成员函数放到类的接口中

真正的封装,外部根本看不到任何实现细节。然而,C++等某些语言将某些细节放到了接口之中。如上面提到的Point类,虽然成员变量无法在类外被访问到,但是程序员仍然可以知道这些变量,这一点实际上是违背了封装的原则(或者C++鼓励程序员查阅实现细节?)。在《Effective C++》的第34条里,提到了解决为类问题的一个惯用技法:把类的接口与类的实现分离开,类声明中包含一个指针,指向该类的实现。

 

01 class Point
02 {
03     public:
04         int GetX();
05         void SetX(int x);
06         int GetY();
07         void SetY(int y);
08     private:
09         PointImplementation* m_pImpl;
10 }

 

4.避免使用友元类

除非很必要的场合,一般情况下尽量避免使用友元类,它对封装会造成破坏,使代码量提升,并大大增加了维护的难度

 

 

Coding 3,385

遍历窗体内所有控件

2013/06/08

MFC:

HWND hCtrl = ::GetWindow(m_hWnd,GW_CHILD);
while(hCtrl)
{
   //Do sth, like
   //CWnd* pCtrl = CWnd::FromHandle(hCtrl);

   hCtrl = ::GetWindow(hCtrl,GW_HWNDNEXT);
}

可以使用Windows API GetWindw()函数获取控件

函数原型:

HWND GetWindow( HWND hWnd, UINT uCmd );

hWnd:参考窗口句柄

uCmd:与hWnd的关系

如果存在参数指定关系的窗体,则返回句柄,否则返回NULL.

 

Note 2,406

Ubuntu和Windows共存,修改启动顺序

2012/11/19

使用Ubuntu以来,一直是使用Ubuntu带的WUBI将其安装在Windows下的硬盘上。前两天希望从11.04升级到最新版本,一直升级不成功,于是打算直接重装。这次直接装在硬盘分区上。

可装完以后,发现一件很纠结的事:开机时,默认是使用的Ubuntu引导,默认选项是Ubuntu。而我希望默认启动的是Windows。

我上谷歌百度了一下,有讲到修改 /boot/grub/menu.lst文件达到变换启动顺序的目的。

但是在我系统的这个目录下并未发现有这个文件(我的系统是Ubuntu 12.10),可能是版本不一样吧。不过,这个目录下有一个文件 grub.cfg  与传说中的menu.lst格式好像差不多。于是我对这个文件做了修改。重启后,启动项成功改为Windows 7!

以下是修改过程:

 

阅读全文…

Note 3,386