https://larryli.vicp.net/svn 配置示例

# http 配置
<VirtualHost *:80>
ServerAdmin larryli@qq.com

使用独立的虚拟主机目录

DocumentRoot /xampplite/larryli/htdocs
ServerName larryli.vicp.net

logs 也放在独立目录中

ErrorLog /xampplite/larryli/logs/error.log
CustomLog /xampplite/larryli/logs/access.log common
<Directory "/xampplite/larryli/htdocs">

一般的安全设置

Options FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<IfModule dav_svn_module>
<Location /svn>
DAV svn

svn 也放在独立目录下

SVNPath /xampplite/larryli/svn
AuthType Basic
AuthName "larryli subversion repository"

svn-none 是一个空文件,这样就只允许 http://larryli.vicp.net/svn 读操作,禁止写

AuthUserFile /xampplite/larryli/conf/svn-none
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
</IfModule>
</VirtualHost>

https 配置

<VirtualHost *:443>
SSLEngine on
ServerSignature On

分开设置密钥

SSLCertificateFile /xampplite/larryli/conf/server.crt
SSLCertificateKeyFile /xampplite/larryli/conf/server.key
ServerAdmin larryli@qq.com
DocumentRoot /xampplite/larryli/htdocs
ServerName larryli.vicp.net

SSL 日志

ErrorLog /xampplite/larryli/logs/ssl-error.log
CustomLog /xampplite/larryli/logs/ssl-access.log common
<Directory "/xampplite/larryli/htdocs">
Options FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<IfModule dav_svn_module>
<Location /svn>
DAV svn
SVNPath /xampplite/larryli/svn
AuthType Basic
AuthName "larryli subversion repository"

用户认证文件

AuthUserFile /xampplite/larryli/conf/svn-passwd

https 下读写都需要认证

Require valid-user
</Location>
</IfModule>
</VirtualHost>

Subversion 目录约定

svn 的分支处理与 cvs 不同,cvs 是采用内置命令生产新的内部结构来存放分支差异,而 svn 则是由用户自己来设计。
一般来说,svn 仓库下约定有三个目录:trunk、branches 和 tags,分别存放主干、分支和标记。
trunk 直接存放主干源代码,branches 和 tags 下会有二级目录,其目录名就是分支和标记名。
当然,根据项目人员的喜好,在 branches 和 tags 下使用多层目录也是可以,比如专门的 tags/release 下在标记出 1.0 发布版本,而 tags/test 下的 1.0 则是内部测试版。而对于 1.0 测试版本的补丁修改则放到 branches/test/1.0 下。
另外,如果一个仓库存放多个项目可以采用 prjname/trunk、prjname/branches、prjname/tags 的目录划分;或者 trunk/prj1、trunk/prj2、branches/prj1/release1、branches/prj2/release1 之类的目录划分。
总之,svn 的分支目录只是一种约定。

Ubuntu 下安装 Subversion https 服务器

首先是安装 Apache2,Ubuntu 上默认安装的 Apache2 就已经带上 ssl 模块。
sudo apt-get install apache2
使用 a2emod 开启模块。
sudo a2enmod ssl
https 必须提供一个站点密钥,一般情况下使用如下命令即可。
apache2-ssl-certificate
但是当前的 ubuntu 版本存在 Bug 遗失了该工具,只能使用 openssl 手工生成。
sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999
记得在 Common Name 中填写你的域名。
Common Name (eg, YOUR name): larryli.vicp.net
完成后将当前目录下的 apache.pem 文件复制到 apache2 配置目录。
sudo mkdir /etc/apache2/ssl
sudo cp apache.pem /etc/apache2/ssl/apache.pem

在 Windows 下貌似要进行下列的操作(直接使用 Apache msi 安装):
openssl req -new -out server.csr -config ..confopenssl.conf
openssl rsa -in privkey.pem -out server.key -config ..confopenssl.conf
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 999 -config ..confopenssl.conf

复制的文件是 server.crt 和 server.key 到 conf 目录下。
完成后还需要修改虚拟主机设置。
sudo nano /etc/apache2/sites-available/default
修改 NameVirtualHost * 为:
NameVirtualHost *:80
NameVirtualHost *:443

然后增加新的虚拟主机配置文件。
sudo mkdir -p /var/larryli
sudo nano /etc/apache2/sites-available/larryli

内容如下:
<VirtualHost *:443>
ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerName larryli.vicp.net
ServerAdmin webmaster@localhost
DocumentRoot /var/larryli/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/larryli/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/larryli-error.log
LogLevel warn
CustomLog /var/log/apache2/larryli-access.log combined
</VirtualHost>

需要在 sites-enable 做一个符号链接才能启动该虚拟主机设置。
sudo ln -s /etc/apache2/sites-available/larryli /etc/apache2/sites-enable/001-larryli
001 是序数,以便 apache2 启动时按照正确的顺序加载配置
重新启动 apache2 即可使用 https 访问
sudo /etc/init.d/apache2 restart

然后安装 Subversion。
sudo apt-get install subversion
sudo apt-get install libapache2-svn

创建 svn 仓库。
sudo svnadmin create /var/larryli
因为要配置为通过 https 访问,更改文件属主。
sudo chown -R www-data:www-data /var/larryli
然后创建一个密码文件。
sudo htpasswd -c /etc/subversion/passwd larryli
(有文档写的是 htpassd2 命令)
可以增加多个用户。
然后修改虚拟主机配置文件。
sudo nano /etc/apache2/sites-available/larryli
内容如下:
<VirtualHost *:443>
ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerName larryli.vicp.net
ServerAdmin webmaster@localhost
<Location />
DAV svn
SVNPath /var/larryli
AuthType Basic
AuthName "larryli subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
ErrorLog /var/log/apache2/larryli-error.log
LogLevel warn
CustomLog /var/log/apache2/larryli-access.log combined
</VirtualHost>

上面的设置允许匿名用户访问 svn 库,但只允许认证用户提交修改。
如果不需要限制,将 LimitExcept 段代码全部删除即可。
如果要限制匿名用户访问,则删除 LimitExcept 但保留下面的代码:
Require valid-user
最后重新启动 Apache2。
sudo /etc/init.d/apache2 restart

YU-RIS 手册04 宏

宏功能用于简化多次调用的命令和内容。必须在 macro.yst 文件中定义宏,定义方法如下:
MACRO[NAME=宏名 STR="宏展开文字内容"]
引用宏时,使用:
[宏名]
宏名可以使用半全角字符,但是全角字符必须在半角字符前使用(译注,这段不一定准确)。
例如:
MACRO[NAME=TC STR="TEXT[X=20 Y=360 SIZE=24]"]
引用时:
[TC]
就等价于:
TEXT[X=20 Y=360 SIZE=24]
对于特殊的不引起歧义的场合可以省略 [ ] 直接使用 宏名,如:
ABCあいうえお
CG[NO=1 X=5]ABC

YU-RIS 手册03 系统变量

系统变量是系统的内置变量,包括日期时间、当前 OS 类型、按下的按键等等。
系统变量标识符以 _ 字符开头,简要的介绍如下:

  • @_LC LOOP 循环命令内的计数器变量
  • @_PINT(n) GOSUB 跳转后的返回数据,n 是 1-8 的数字
  • @_PFLT(n) $_PSTR(n) 与上面类似
  • @_RINT(n) RETURN 跳转后的返回数据,n 是 1-8 的数字
  • @_RFLT(n) $_RSTR(n) 与上面类似
  • $_M ~ $_M8 宏定义时用来标记参数
  • $_TEXT 现在显示的文本
  • $_TEXT_FLAG 现在显示的文本标志,比如换行换页等等
  • @_MENUCODE 菜单选择项
  • @_TIME 时间 @_TIME(0,0) 当前年 @_TIME(0,1) 月 @_TIME(0,2) 日 @_TIME(0,3) 星期 @_TIME(0,4) 小时 @_TIME(0,5) 分钟 @_TIME(0,6) 秒 @_TIME(0,7) 毫秒;@_TIME(1,0) 是系统启动时的年,依次类推
  • @_OS_TIME @_OS_TIME(0) 操作系统启动过的毫秒数,@_OS_TIME(1) 引擎系统启动后的毫秒数
  • @_OS_VERSION 操作系统:20 Win98 21 Win98SE 30 WinME 40 Win2K 50 WinXP 60 Win2k3 70 Vista 255 其他
  • @_OS_DXVERSION DirectX 版本
  • @_OS_SOUND 1 声音可用,0 声音不可用
  • @_OS_MEMTOTAL 内存总数
  • @_OS_MEMAVAIL 可用内存数
  • @_SYSTEM_VERSION YU-RIS 版本号(乘1000)
  • $_SYSTEM_PATH 启动目录
  • @_ARGC 命令行参数数目
  • $_ARGV(0~8) 命令行参数
  • @_DEBUGMODE 调试模式(0/1)
  • @_SCREEN_COLOR 屏幕颜色数
  • @_SCREEN_SIZE_X 屏幕宽
  • @_SCREEN_SIZE_Y 屏幕高
  • @_WINDOW_EXEC_MAX 窗口最大化(0/1)
  • @_WINDOW_EXEC_CLOSE 窗口关闭(0/1)
  • @_MEDIA_READONLY 媒体只读
  • @_PAI π值(3.1415926535)
  • @_INP(n) 鼠标/键盘按下状态
  • @_KEY_ANY 任意键按下
  • @_KEY_A ~ @_KEY_Z A 到 Z 键按下
  • @_KEY_0 ~ @_KEY_9 0 到 9 键按下
  • @_KEY_NUM0 ~ @_KEY_NUM9 小键盘 0 到 9
  • @_KEY_F1 ~ @_KEY_F24 F1 到 F24
  • @_KEY_BS @_KEY_TAB @_KEY_SPACE @_KEY_ENTER @_KEY_SHIFT @_KEY_CTRL @_KEY_ALT 对应退格、制表、空格、回车、上档、控制和换档键
  • @_KEY_LEFT @_KEY_RIGHT @_KEY_UP @_KEY_DOWN @_KEY_INSERT @_KEY_DELETE @_KEY_ESC @_KEY_PAGEUP @_KEY_PAGEDOWN 键盘左右上下,插入、删除、退出、上翻页、下翻页键
  • @_KEY_NUMADD @_KEY_NUMSUB @_KEY_NUMMUL @_KEY_NUMDIV @_KEY_NUMDEC 小键盘 + – * / .
  • @_KEY_HYPHEN @_KEY_CIRCUMFLEX @_KEY_YEN @_KEY_AT @_KEY_LEFTBRACKET @_KEY_RIGHTBRACKET – ^ @ [ ]
  • @_KEY_SEMICOLON @_KEY_COLON @_KEY_COMMA @_KEY_PERIOD @_KEY_SLASH @_KEY_BACKSLASH ; : , . /
  • @_MOUSE_L @_MOUSE_R @_MOUSE_M 鼠标左、右、中键
  • @_MOUSE_U @_MOUSE_D 鼠标滚轮上下
  • @_MOUSE_X @_MOUSE_Y 鼠标指针位置
  • @_PAD_LEFT(n) @_PAD_RIGHT(n) @_PAD_UP(n) @_PAD_DOWN(n) N 号手柄的左右上下(n 0~15)
  • @_PAD_BUTTON(n, m) N 号手柄的 M 号按键状态(m 0~31)

YU-RIS 手册02 变量

变量的类型和种类
变量有三种类型:

  • INT 整数型,64 位,范围是 -9223372036854775808~9223372036854775807
  • FLT 实数型,64 位浮点数
  • STR 字符串

有两种种类:

  • 全局变量,在整个游戏中都可以使用。
  • 本地变量,仅在当前脚本中使用。

引用方式
对于数字变量使用 @变量名,而字符串变量则需要 $变量名 来引用。比如:
CG[NO=1 X=@A Y=@B FILE=$FILENAME]
变量需要声明才能使用,但不需要在第一次使用时指定变量值。
但是全局变量必须在 global.yst 文件中使用 G_INT G_FLT G_STR 声明,如下:
G_INT[@A=5]
G_FLT[@B]
G_STR[$F]

对于本地变量,可以随时声明。声明标识符为 INT FLT STR:
INT[@A=3]
FLT[@C]
STR[$F]

另外变量名不能以 _ 下划线开头,因为以 _ 开头的变量保留为系统变量。

数组
当前只能使用八元以下的数组。数组的示例如下:
例一,声明 0 到 9 一共 10 个的一元数组,所有变量默认为 0
INT[@A(10)]
例二,声明二元数组,并指定所有变量为 5
INT[@B(10,5)=5]
例三,声明二元字符串数组,并指定所有字符串是 GAME
STR[$S(10,5)="GAME"]
变量赋值
正规的变量赋值命令是 LET,但是一般都省略掉该命令,直接使用表达式。
例一,变量 A 赋值 5
@A=5
例二,数组变量 B (2,3) 赋值为表达式的结果
@B(2,3)=4+@A*3
例三,变量 C 加 10
@C=@C+10
也可以采用复合赋值
@C+=10
例四,字符串可以进行 + 连接运算
$S="ABC"+".BMP"
也可以使用字符串变量
$S="ABC"+$F
变量类型转换
数值变量和字符串变量可以使用 $@ 和 @$ 相互转换。
例一,数值变量 B 转换为字符串 “123”
STR[$A]
INT[@B=123]
$A=$@B

例二,字符串变量 B 转换成数值 123
INT[@A]
STR[$B="123"]
@A=@$B

对于转换必须是有效的数值。