分类于 代码人生 | 555 次点击 | 发表评论 »
由 Apex 发表于

最近帮朋友开发调试VPN,真真正正感受了一把在线合作开发的感觉。

我们处在不同的地方,通过网络联系(使用MSNSkype),进行实时的文字和语音交流,以及传送一些文件。我们通过IPSEC隧道(OpenSwan)将两边的小网络连在一起,变成一个局域网。并且我通过VPN(OpenVPN)登陆上去(使用USB Key),数据通讯都是经过重重加密(OpenSSL)。

下面是我们的网络环境示意图:

网络环境

开发涉及到Window部分和Linux两大部分,基本开发(VC 6 / MinGW / SlickEdit / UltraEdit / GCC)在我自己本地进行,然后SSH到对方的服务器上远程编译调试(GCC / GDB),服务器端将来会移植到RISC的CPU上,使用裁减后的Linux。

运用各种技术手段,感觉整个网络都under control,非常爽!

分类于 代码人生 | 887 次点击 | 发表评论 »
由 Apex 发表于

.lua测试脚本

在编写第一个Lua程序之前,我们先编写一个.lua脚本以供调用,代码如下:

下载: test.lua
  1. -- test.lua
  2. print("Hello Lua !")

其中,两个连续的减号意味着这是一行注释。我们期望执行这个.lua脚本的结果是在屏幕上打印一串“Hello Lua !”的字符串。

提示:多行注释使用“--[[”开始,以“]]”结束。

内嵌Lua解释器

现在我们来写一个最简单的控制台程序,并在其中内嵌Lua解释器,运行该程序,可以执行test.lua脚本,在屏幕上打印出我们希望的结果。先来看代码,然后再解释代码内容:

下载: testlua.cpp
  1. extern "C"
  2. {
  3. #include "../include/lua/lua.h"
  4. #include "../include/lua/lualib.h"
  5. #include "../include/lua/lauxlib.h"
  6. }
  7.  
  8. #pragma comment(lib,"../lib/liblua.lib")
  9.  
  10. int main ( int argc, char *argv[] )
  11. {
  12.     /* the Lua interpreter */
  13.     lua_State* L;
  14.  
  15.     /* initialize Lua */
  16.     L = lua_open();
  17.  
  18.     /* load Lua base libraries */
  19.     luaL_openlibs(L);
  20.  
  21.     /* run the script */
  22.     luaL_dofile(L, "test.lua");
  23.  
  24.     /* cleanup Lua */
  25.     lua_close(L);
  26.  
  27.     return 0;
  28. }

看看这代码,我都不用作解释了。 :)

编译上述代码,最终我们会有两个文件:testlua.exe和test.lua。将这两个文件放到同一个目录下,在命令行模式执行testlua.exe,就可以看到我们期望的输出了!

就是这么简单!!下一次,我们将尝试在.lua脚本中调用主程序(testlua.exe)内部的C函数~~

分类于 WordPress相关 | 737 次点击 | 发表评论 »
由 Apex 发表于

今天在家里将coolcode插件装上了,测试了一下,效果那是相当的好。可惜一点:作者为了能够支持从页面上复制的代码粘贴到Word中,同时保持颜色信息,就将颜色硬编码到后台PHP文件中了。但是这并不是我想要的,因为我的页面主体是深色调的,导致直接使用他的颜色会非常刺眼。所以我做了一些修改,把PHP中的硬编码又去掉了,然后重新配色,以符合我的Blog的色彩搭配。

看看效果:

  1. // This is one-line comment.
  2. /*
  3.   And this is multi-line
  4.   comments for read.
  5. */
  6. #include <iostream>    // Use STL. (BUG: inline comment not work.)
  7. #include <string>
  8.  
  9. int main(void)
  10. {
  11.     string strInfo("Hello CoolCode!");
  12.     int i = 0;
  13.  
  14.     if(0 == i)
  15.     {
  16.         cout << strInfo << endl;
  17.         return 0;
  18.     }
  19.     else
  20.     {
  21.         cout << "ERROR: Some bad thing happened." << endl;
  22.         return -1;
  23.     }
  24. }

可以看出,绝大部分代码的色彩已经可以很好的显示了,这就已经足够了。CoolCode插件真是太棒了,赞一个~~~

这样,我就可以继续Lua编程之旅了。

PS.双击左侧的代码行数列,可以隐藏代码行数显示,试试看~~

分类于 WordPress相关 | 632 次点击 | 发表评论 »
由 Apex 发表于

这两天一直没有写什么东西出来,不是我突然变得更懒了(虽然我本来也比较懒),而是难以编辑带有代码的文章。我考察了一下CoolCodeFCKEditor。CoolCode效果比较好,但是暂时装不上;FCKEditor也没有装上,还需要进一步研究啊。

等到把编辑器的问题搞定后,我会继续发关于Lua方面的一些文字。

分类于 代码人生 | 1,727 次点击 | 发表评论 »
由 Apex 发表于

要在自己的程序中使用Lua,我们必须将Lua解释器核心编译到自己的程序中来,无论是直接编译到主程序中,还是作为外部DLL调用,总之,第一件事情是编译Lua解释器核心。

说明:以后的操作如果没有特别注明,就是在Windows平台上进行的。

首先,到Lua官方网站下载最新的Lua源代码,得到的是一个.tar.gz。可以用流行的压缩软件如WinZip,WinRAR,或者开源的7z(推荐使用)来解开。解开的目录中有一个src目录,整个Lua核心代码就在这里了。

我们在Windows平台上拟使用Visual C++ 6.0来进行试验,但是src目录中并没有VC6使用的工程文件。这个问题很好解决:在VC6中新建一个Win32 Static Library静态库工程,建议工程名称设置为liblua,工程路径指向Lua的src目录,最好的方式是先设置工程名称,然后修改工程路径(为什么?你试试就知道了 -:) )。在随后的工程设置向导中,不要加入任何设置,即,不要勾选“Pre-Compiled Header”和“MFC Support”选项。

接下来,将所有src中的所有 .c (lua.c除外)和 .h 文件加入到工程中,编译,就可以得到我们想要的静态库 liblua.lib 文件了。

在我们自己的软件项目中,只需要 liblua.lib 和 几个头文件就可以开发了, 所以我们需要把这些文件整理一下,放到合适的位置。我是这样放的:

建立include目录,然后在include目录下建立lua目录,将下列文件复制到lua目录下:

  • lauxlib.h
  • lua.h
  • luaconf.h
  • lualib.h

建立和include目录同级的lib目录,将编译好的 liblua.lib 放到这里。可以参考下图:

Lua 开发环境路径设置
图中,exe和dll两个目录是打算用来存放自己写的测试程序的。

这样,我们的开发环境就配置好了,下一次,我们将开始做第一个调用lua脚本的小程序,来真正体验lua的威力。

页面导航 (5/7)« 第一页...«34567»