# 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>
七度苹果生活,貌似专题针对 Apple 用户的,没什么修改的 WordPress MU 系统,支持多用户博客。
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 的分支目录只是一种约定。
首先是安装 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
不是 niconico,是 neconeco 猫猫啦。嗯,看到伪 IE 的“み”图标没?チアキ真是越来越可爱了。
这轮没有什么争论,都回自由行星同盟了。
所以以前的 SSW 博客继续更新,呵呵。
宏功能用于简化多次调用的命令和内容。必须在 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
系统变量是系统的内置变量,包括日期时间、当前 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)
变量的类型和种类
变量有三种类型:
- 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
对于转换必须是有效的数值。