ikartool界面(一)

作者在尝试使用VC6遇到困难后转而学习PHP,并成功实现了基本的PHP脚本运行。期间解决了多种技术问题,包括配置Apache、安装PHP环境及解决ikartool.c算法优化问题。

  这次完完整整地悲剧了……

先是安装VC6,很好,很顺利,只是结果让我很惊讶:为什么我选了让它安装在F:\MVC\    它居然把F:作为目录了……我一打开F,就看到满地的文件,很是不爽,于是卸掉重装。等我选文件夹时,他居然不许我安在F:\MVC还说“You have choosen a different directory.”

  搞了半天才弄懂,原来一开始是让我选Common文件夹的位置,后来是让我选VC98、VB98、VFP的目录,这两个当然不能一样了。于是,把Common放在F:\MVC\common 其他的放在F:\MVC 终于安装好了,用向导建立了一个基本对话框……出错了!……(当时没截图,现在只记得是在提示说找不到什么 .h 文件。我彻底怒了,鼓捣了一个下午,安装了五六次,最后居然不能用!!于是把它彻底删干净,可惜我不懂注册表,不然我还把注册表也改回来。

  软件还是简单的好啊,用TC编译 .c 的这段时间,虽然遇到了不少问题,也很怀念以前用VC6编译.c、.cpp的事,但是不管什么问题,我都能够弄清楚,倒是 VC6 一出问题我就没辙了。

 

  没办法了,实验室的电脑,又不敢重装/还原系统,只好不用VC了,那用什么来写界面呢?想到最后还想给这个ikartool实现直接读取网页内容的功能,而 ikariam 的服务器又应该用的是php(网址出现:“.com/index.php?view=mili”,该是用的php吧),决定用php脚本编写它的界面。

 

那就开始安装了,照着Javaeye的教程安装Apache、php、ZendOptimizer、activeperl直到所有的都修改完(在这里讲几个小细节(不要拍我*_^):

PHP:Hypertext Preprocessor 写道
4. 在文件末尾添加
  ScriptAlias /php/ "c:/php/"
  AddType application/x-httpd-php .php
  # For PHP 4
2. 修改<IfModule alias_module> </IfModule> 之间
  ScriptAlias /cgi-bin/ "D:/Programmes/Server/Apache2.2/cgi-bin/"
  及
  <Directory "D:/Programmes/Server/Apache2.2/cgi-bin">
  划线部分分别改为 C:/php/ 和 C:/php 
3. 将 #!c:/program files/perl/perl 改为 #!C:/Perl/bin 
1. 第133行前面加 # 

——这里面的x-httpd-php .php中间确实有一个空格,删掉的话Apache会无法开启服务……

——所谓划线部分,其实就是引号里的所有。

——根本就没有那样的一行

——第133行就只有一个# 要是再加一个,那一行就变成##了,不过我没加)

 

安装倒是不难,但是,我要怎么实验 php 脚本是不是运行了呢?看着屏幕上的“It Works!”我却是一点Work的办法都没有。想想看,这些内容肯定是在某一个html文档中,想到这句话:

PHP:Hypertext Preprocessor 写道
5 查找 DirectoryIndex index.html
  修改成
  DirectoryIndex index.html index.html.var index.php
  这样index.php 可以充当默认页面了

于是在Apache文件夹下查找index.html文件,打开第一个,高兴死了:

于是就开始“hello world!”了:

<html>
<body>
	<h1>It works!</h1>
	<?php
	echo "hello world!";
	?>
</body>
</html>

然后刷新 http://localhost 仍然只显示 It Works!

再看,“这样index.php可以充当默认页面了”。于是把 .html 重命名成 .php ,再刷新,终于hello world!了。

就这样,我开始了学习php的道路。(相信这并不是正常的运行php脚本的方法,但是它毕竟可行。)

 

在这里,顺便把昨天残余的一点问题解决掉(ikartool.c算法优化的问题):

Gold(t)=gold(0)+3*(pop+satisfy)*t-3*matwork-3*luxwork-9*scient+150satisfy*(exp(-0.02t)-1);

求驻点,得 t0=-50ln(1+(pop-matwork-luxwork-3scient)/satisfy) 处Gold(t)取极小值。

当 t0<0||t0>=0&&Gold(t0)>=0 时,Gold(t)全程为正,利用 Gold(t)==needgold 判据得到的 time 是可靠的。

当 t0>=0&&Gold(t0)<0 时,上述判据得到的 time 不可靠,因过程中 Gold(t) 有小于 0 的时候;此时使用 Gold(t0)==0 作为判据,计算matwork、luxwork、scient 的数量:

化简 Gold(t0)==0 得3*(pop+satisfy)+gold(0)/t0 ==3(matwork+luxwork+3*scient);

又       needmat-mat==matwork*t;

          needlux-lux==luxwork*t;

          needres-res==scient*t;

          t0=-50ln(1+(pop-matwork-luxwork-3scient)/satisfy);

记       matwork+luxwork+3*scient 为 W ;

          B+gold(0)/t0=3W;

          t0=-50ln(1+(pop-W)/satisfy);       这两式中,仅 W 和 t0 是未知的。

得       W=-gold(0)/(150ln(1+(pop-W)/satisfy))+B/3;

即       W=pop-satisfy*(exp(gold/(50*(B-3W)))-1)

 

这就解决了C语言初试(三)所述第4条 needgold<=gold 的情况。

 

最后,若needmat<=mat||needlux<=lux||needres<=res时,因为他们都是不会减少的量,所以只需相应的取matwork=0、luxwork=0、scient=0即可。

 

啊呀~~这个事情被放在这里这么久了!国庆玩的真是太夸张了。

 

继续,

话说W该如何才能解出呢?

先看看W是什么:W=(matwork+luxwork+scient)+2*scient

t0呢:t0=-50ln(1+(pop-W)/satisfy)         与

         tfull=-50ln(1-(house-pop)/satisfy) 对照

可知 t0 指的是 pop 达到 W 所需时间。

1.W>=satisfy+pop时,ln函数超出定义域:理所当然 => pop 上限是 satisfy+pop 当然 t0 不可能达到。

2.pop-W==0时迭代式 W=-gold(0)/(150ln(1+(pop-W)/satisfy))+B/3 分母为0。但:t0 按意义为 0 ,W为 pop

满足方程组。

 

唉~昨天又没有写这个算法,倒是学习了这么久的css,终于写了一个让我比较满意的界面,贴在这里,收掉这部分吧:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

简直要把我逼疯了!才做到这里,现学现卖 CSS 都还好了,这下又要现学 SQL 了。努力吧!谁让你当初看见数据库就躲,遇到网络编程就退呢。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值