• 诺基亚N73疑难杂症解答

    以下是一些出错的代码,你可以轻松了解到出错的原因,不在为爱机系统出错头痛!
    KErrNotFound-1        
    找不到指定文件
    KErrGeneral-2           一般错误
    KErrCancel-3          
    操作被取消
    KErrNoMemory-4        
    内存不足
    KErrNotSupported-5     &n...
  • 原来在putty上用vi的时候,开NumLock时按小键盘上的数字键并不能输入数字,而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。输入数字的时候,不能用小键盘总是很不舒服的。于是就去找解决办法。

    解决办法:

    在选项 Terminal->Features 里,找到 Disable application keypad mode ,选上就可以了。

  • 2007-10-05

    用 wine 装QQ - [默认分类]

    复制win下的mfc42.dll,msvcp60.dll,riched20.dll,riched32.dll到wine的 system32目录下(riched20.dll,riched32.dl可能已经有了 就不需要了)

    安装qq

    破解qq的sb防钩子程序
    删除你qq安装目录下(一般为~/.wine/drive_c/Program Files/Tencent/QQ)的TIMPlatform.exe 这个文件

    设置 riched20.dll
    打开winecfg,在libraries选项页下,添加riched20.dll和riched32.dll (别忘复制这两个文件到你wine的system32目录下) 然后选edit,都设为native

    OK

    现在的wine 安装QQ 方便多了

  • 当Wine程序需要显示HTML网页时,Wine就会弹出Wine Gecko Installer窗口要求安装Gecko,而它又要连到网上下载Gecko,对于网络不好或教育网的用户通常是安装不了的。今天参考这篇文章:http://appdb.winehq.org/appview.php?iVersionId=6422,解决了离线安装Wine Gecko的问题。步骤如下:

       1. 从http://source.winehq.org/winegecko.php下载 wine_gecko.cab
       2. $ cp wine_gecko.cab ~/.wine/drive_c/
       3. $ regedit
          修改 HKCU/Software/Wine/MSHTML 中的GeckoUrl为:C:\wine_gecko.cab,可参看附图1
       4. 接着执行需要HTML支持的程序,当弹出Wine Gecko Instalerl窗口时,点安装就行了,这是你会发现它瞬间就安装完成了。
       5. 删除wine_gecko.cab,$ rm ~/.wine/drive_c/wine_gecko.cab
  • 1.1Wine is not an emulator

    这个我就不翻译了,没有多少技术介绍。

     
    1.2使用最新的Wine

    记住最新版的Wine会包含一些旧版本里没有的bug。在feisty的软件仓库里包含了 0.9.33,而最新的Wine是0.9.44(我翻译文章时)。0.9.33更加稳定,但是最新的版本包含重大的DirectX改进。有一些不能在 0.9.33下运行的游戏能够在0.9.44中很好地运行。在使用0.9.37到0.9.40之间的某些版本运行KotOR2时,声音在我的系统上崩溃了。那是最好的有关使用最新版导致棘手问题的好例子。

    (译者:我个人还是推荐使用最新版,使用新版本会有更好的运行速度,而且基本上每个bug都会在未来的2~3个版本中被修复)...
  • 点击 html 添加如下代码:

    <blockquote style="border: 1px solid #9898ba; padding: 7px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> 你写的内容 </blockquote>

     

    参考:

    http://quasimo.blogbus.com/logs/2005/11/1634952.html

  •  ~/.vimrc加入
    set fencs=utf-8,gbk

    这一行的作用是告诉 vim,打开一个文件时,尝试 utf8,gbk 两种编码,vim 只
    需要扫描文件的前一段,就可以根据文件里面的数据判断出文件是否用的是
    utf8 或者 gbk 编码。如果不指定这一行,则 vim 只会用当前编码 (locale)
    来打开文件,因为你的 locale 是 UTF-8,而文件是 gbk,所以打开是乱码。

  • @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

    .tabbrowser-tab {
       -moz-user-focus: ignore !important;
    }

  •   其实在附录B中W. Richard Stevens, Stephen A. Rago已经实现了这些函数,

      把这些实现了的函数写成了头文件,再编译程序时只要包含该头文件就不会出现编译错误的情况了。


  • Vim 之所以经久不衰,是因为它好用。但真正要让 Vim 好用起来,也许离不开对它的配置。这里有 一个可能是史上最强大的 Vim 配置文件?因为这个配置文件的总行数达到了 800 多行。不仅如此,它还集成了一些非常好用的 Vim 脚本,使 Vim 的功能变得异常强大。作者还将这个配置文件写得不仅适用于 Linux,而且也可用于 Mac 中。如果你是一个 Vim Fans,千万要试试。

      语法高亮显示的 html 版
          纯文本版

    → 转载时务必以超链接形式标明文章原始出处及作者信息。
    → 本文网址:http://linuxtoy.org/archives/vimrc.html

  • http://www.97sky.cn/downinfo/91.html
  • 改正方法很简单:退出Firefox(对于Mozilla Suite,如果打开了Quick Launch也要把Quick Launch关闭),在您Firefox的Profile目录(一般是C:\Documents and Settings\[用户名]\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\,“xxxxxxxx”默认会是一个长度为8的字符串,如果更改了的话就另当别论)下新建一个user.js(默认是没有,有当然更好:P)或者 prefs.js ,最后在这个user.js 或 prefs.js 里加入以下几行:

    user_pref("capability.policy.policynames", "allowclipboard");
    user_pref("capability.policy.allowclipboard.sites", "http://www.mozilla.org");
    user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
    user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");

    添加多个sites时,sites和sites之间用空格隔开
    再打开Firefox就可以对Rich Edit控件Cut&Copy&Paste了。
    参考:

    http://www.mozilla.org/editor/midasdemo/securityprefs.html

  • 当 vim 启用鼠标的支持的时候 (set mouse=a) , 在urxvt下用vim的时候 就不能直接用鼠标选中要复制的内容,然后用鼠标中键贴到其他的地方。 

    需要按住 shift 然后用鼠标选取要选种的内容 , 就可以了 。

    ps: 我用了vi才会有这个毛病   vim没有 晕 

     

  • 在DialogBlocks 4.11 上注册通过

    http://lnote.blogbus.com/files/11850387890.7z

  • g++ hworld.cpp $(wx-config --libs --cxxflags) -o hworld
  • 版本和环境:
    wxWidgets 2.8.3
    Windows2000 sp4
    VC++ 6.0

    step1:下载wxMSW-2.8.3-Setup.exe,将其安装到C:\wxWidgets_283.(或下载zip包直接解压)

    安装后的文件夹中有全部的代码和文档以及示例。但没有编译好的lib。因为你可以按照自己的需要去编译。不过好歹要麻烦一下了,好在编译非常方便。

    step2: 编译之前的配置

    C:\wxWidgets_283\build\msw中找到config.vc
    C:\wxWidgets_283\include\wx\msw中找到setup.h

    可进行一些全局的设置(对你编译出的所有库都有效),特别是setup.h将被拷贝到各个lib的目录中去。当你改变setup.h时要先手工删掉lib下面的setup.h

    这儿我只是打开了opengl支持库的编译选项。

    step3:编译

    可用两种方式编译:1)C:\wxWidgets_283\build\msw 下面的vc projects 2)使用命令行
    我选择第二种方法。

    我使用的是VC++6,所以使用nmake。

    我编译了三个版本的库,分别是unicode debug/release静态库和unicode release动态链接库
    nmake -f makefile.vc UNICODE=1 BUILD=release
    nmake -f makefile.vc UNICODE=1 BUILD=debug
    nmake -f makefile.vc UNICODE=1 SHARED=1 BUILD=release

    编译后的库位于:
    C:\wxWidgets_283\lib\vc_lib debug版本和release版本的库都在一起,区别在于名称debug版多了个d,如:
    wxbase28u.lib和wxbase28ud.lib

    C:\wxWidgets_283\lib\vc_dll dll库和他们的导入库都在这个目录中

    编译sample
    库编译好了试试编译C:\wxWidgets_283\samples中的例子,选择minimal这个最小化的例子。
    用VC++6打开工程,可以看到以及预设了很多配置,分别选择Win32 Unicode Debug/Release和Win32 DLL Unicode Release试试。注意由于sample项目都添加了对于base和core的依赖,所以直接选择build会重新编译一遍相应的库。所以手动把依赖去掉。然后build minimal.
    分别编译3个版本,对应上面做出的三种库。发现动态版的minimal.exe需要两个dll,这两个dll加起来要4M之多,而静态release版的minimal.exe只有1M多。

     

    http://cnwxwidgets.googlepages.com/wxindex.html 

  •  在面向对象的语言里面,出现了类的概念。这是编程思想的一种进化。所谓类:是对特定数据的特定操作的集合体。所以说类包含了两个范畴:数据和操作。而C语言中的struct仅仅是数据的集合。(liyuming1978@163.com)

    1.实例:下面先从一个小例子看起
    #ifndef C_Class
           #define C_Class struct
    #endif
    C_Class A {
           C_Class A *A_this;
           void (*Foo)(C_Class A *A_this);
           int a;
           int b;
    };
    C_Class B{               //B继承了A
           C_Class B *B_this;  //顺序很重要
           void (*Foo)(C_Class B *Bthis);              //虚函数
           int a;
           int b;
           int c;
    };
    void B_F2(C_Class B *Bthis)
    {
           printf("It is B_Fun\n");
    }
    void A_Foo(C_Class A *Athis)
    {
           printf("It is A.a=%d\n",Athis->a);//或者这里
    //     exit(1);
    //     printf("纯虚 不允许执行\n");//或者这里
    }
    void B_Foo(C_Class B *Bthis)
    {
           printf("It is B.c=%d\n",Bthis->c);
    }
    void A_Creat(struct A* p)
    {
           p->Foo=A_Foo;
           p->a=1;
           p->b=2;
           p->A_this=p;
    }
    void B_Creat(struct B* p)
    {
           p->Foo=B_Foo;
           p->a=11;
           p->b=12;     
           p->c=13;
           p->B_this=p;
    }
    int main(int argc, char* argv[])
    {
           C_Class A *ma,a;
           C_Class B *mb,b;
           A_Creat(&a);//实例化
           B_Creat(&b);
           mb=&b;
           ma=&a;
           ma=(C_Class A*)mb;//引入多态指针
           printf("%d\n",ma->a);//可惜的就是 函数变量没有private
           ma->Foo(ma);//多态
           a.Foo(&a);//不是多态了
           B_F2(&b);//成员函数,因为效率问题不使用函数指针
           return 0;
    }
    输出结果:
    11
    It is B.c=13
    It is A.a=1
    It is B_Fun
    2.类模拟解说:
           我在网上看见过一篇文章讲述了类似的思想(据说C++编程思想上有更加详细的解说,可惜我没空看这个了,如果有知道的人说一说吧)。但是就象C++之父说的:“C++和C是两种语言”。所以不要被他们在语法上的类似就混淆使用,那样有可能会导致一些不可预料的事情发生。
           其实我很同意这样的观点,本文的目的也不是想用C模拟C++,用一个语言去模拟另外一个语言是完全没有意义的。我的目的是想解决C语言中,整体框架结构过于分散、以及数据和函数脱节的问题。
           C语言的一大问题是结构松散,虽然现在好的大型程序都基本上按照一个功能一个文件的设计方式,但是无法做到更小的颗粒化――原因就在于它的数据和函数的脱节。类和普通的函数集合的最大区别就在于这里。类可以实例化,这样相同的函数就可以对应不同的实例化类的变量。
           自然语言的一个特点是概括:比如说表。可以说手表,钟表,秒表等等,这样的描述用面向对象的语言可以说是抽象(继承和多态)。但是我们更要注意到,即使对应于手表这个种类,还是有表链的长度,表盘的颜色等等细节属性,这样细微的属性如果还用抽象,就无法避免类膨胀的问题。所以说类用成员变量来描述这样的属性。这样实例并初始化不同的类,就描述了不同属性的对象。
           但是在C语言中,这样做是不可能的(至少语言本身不提供这样的功能)。C语言中,如果各个函数要共享一个变量,必须使用全局变量(一个文件内)。但是全局变量不能再次实例化了。所以通常的办法是定义一个数组。以往C语言在处理这样的问题的时候通常的办法就是这样,比如说socket的号,handel等等其实都是数组的下标。(不同的连接对应不同的号,不同的窗口对应不同的handel,其实这和不同的类有不同的成员变量是一个意思)
           个人认为:两种形式(数组和模拟类)并无本质的区别(如果不考虑虚函数的应用的话),它们的唯一区别是:数组的办法将空间申请放在了“模块”内,而类模拟的办法将空间申请留给了外部,可以说就这一点上,类模拟更加灵活。

  • 打开http://mycroft.mozdev.org/download.html,在搜索框中输入baidu,然后在结果中点击“Baidu (百度)”即可。
  •    1 shiftwidth:这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观,和下面的参数最好一致。同时它也是>>或者<<符号移位长度的制定者。

        2 tabstop:定义tab所等同的空格长度,一般来说最好设置成8,因为如果是其它值的话,可能引起文件在打印之类的场合中看起来很别扭。除非你设置了 expandtab模式,也就是把tabs转换成空格,这样的话就不会一起混淆,不过毕竟制表符为8是最常用最普遍的设置,所以一般还是不要改。

        3 softtabstop 如果我们希望改变程序中的缩进怎么办?shiftwidth和tabstop不一样的话,你会发现程序比较难看的。这时候,softtabstop就起作用了。可以从vim的说明中看到,一旦设置了softtabstop的值时,你按下tab键,插入的是空格和tab制表符的混合,具体如何混合取决于你设定的softtabstop,举个例子,如果设定softtabstop=8,那么按下tab键,插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符;如果softtabstop=12,那么插入的就是一个制表符加上4个空格;如果 softtabstop=4呢?那么一开始,插入的就是4个空格,此时一旦你再按下一次tab,这次的四个空格就会和上次的四个空格组合起来变成一个制表符。换句话说,softtabstop是“逢8空格进1制表符”,前提是你tabstop=8。
  • 新建一个Boolean,名字为network.protocol-handler.external.ed2k,值为true
    新建一个String,名字为network.protocol-handler.app.ed2k,值为/usr/bin/ed2k  (这个要根据你自己文件所在的位置)
  • set lines=55



  • 修正后,变为:



    此解决方法是 ubuntuforums.org 提出的,这里移植到 Everest 上。
    首先如果运行着 Firefox,那么关闭它。然后打开终端命令提示符,输入下面的命令:

    wget http://www.linux-ren.org//uploads/newbb/14_465d20ba9c325.bz2 -O firefox-form-widgets.tar.bz2

    tar xvf firefox-form-widgets.tar.gz

    sudo cp /usr/lib/firefox/res/forms.css /usr/lib/firefox/res/forms.css.bak

    cat firefox-form-widgets/res/forms-extra.css | sudo tee --append /usr/lib/firefox/res/forms.css > /dev/null

    sudo cp -r firefox-form-widgets/res/form-widgets /usr/lib/firefox/res

    rm -rf firefox-form-widgets


    再打开 Firefox,一切就变得好看了。

     本地下载

    注:ArchLinux 的firefox在  /opt/mozilla 下面

  • 注意,其中“s”为表示替换动作,“%”表示所有行,“g”表示全文,“^”表示行首,“$”表示行尾。

    在文件的第一行或其5行至最后一行的行首插入内容     :5,$s/^/要加的内容/
    在文件的每一行的行尾添加内容   :%s/$/要加的内容/g
    在整个文件中替换string成string1  :%s/string/string1/g


    替换操作

    经常用到的一些简单替换命令有:

    ◆ s 将当前字符替换为一个或多个字符,例如5 s 表示将从当前字符开始的5个字符替换为一个或多个字符;
    ◆ S 将当前行替换为一个或多个字符;
    ◆ r 单个字符替换。


    文本格式转换

    将DOS格式文本转成Unix格式文本,命令如下:

    :1,$s/^M//g

    其中^M是同时Ctrl+V+M按出来的,表示回车。


    在行首尾添加字符串

    用下列命令在文本每行的行首添加字符串“NewString”,请注意空格的存在。

    :g/^/s//NewString/g
    :%s/^/NewString/g

    用下列命令在每行的行尾添加字符串“NewString”:

    :g/$/s//NewString/g
    :%s/$/NewString/g

    从文本的第3行至最后一行的行首全部插入字符串“NewString”:

    :3,$s/^/NewString/


    在整个文件中替换

    在整个文件中替换特定字符串,所用的命令如下:

    :%s/old_string/new_string/g

    如果仅将文件中的第3行到第7行中的“old_string”替换成“new_string”,那么使用下列命令:

    :3,7s/old_string/new_string/


    复制 y
    粘贴 p
    选择开始 v