虚拟机装RedHat时不能输入根口令。。
以前装过是正常的。。后来想想之前是装英文版 这次只装了中文,于是回到语言选项,把English(USA)也选上,
再进入根口令 依然不能输入,把English(USA)设为默认语言,这回可以了。再试了次设默认语言为中文,这次也可以 Orz 真神奇
试下动态编译。。
前几天看到了 今天米事就来写一写, = = 期间遇到了两个问题:
用eclipse来写com.sun.tools找不到,以及运行时找不到文件(java.lang.ClassNotFoundException)。。
先贴代码:
-
package org.yoyo.test;
-
-
import java.io.File;
-
import java.io.IOException;
-
import java.io.PrintWriter;
-
import java.lang.reflect.InvocationTargetException;
-
import java.lang.reflect.Method;
-
import java.net.MalformedURLException;
-
import java.net.URL;
-
import java.net.URLClassLoader;
-
import java.util.Scanner;
-
-
import com.sun.tools.javac.Main;
-
-
/**
-
* 动态编译测试
-
* @author YOYO
-
*/
-
public class RuntimeCompileTest {
-
-
/**
-
* CompileMain
-
*/
-
private static Main javac = new Main();
-
-
/**
-
* 创建临时文件存放代码
-
* @param codes
-
* @return
-
*/
-
try {
-
writer.write("public class " + className + " {" + "\r\n");
-
writer.write(" public static void main(String[] args) {" + "\r\n");
-
writer.write(codes);
-
writer.write(" }" + "\r\n");
-
writer.write("}" + "\r\n");
-
writer.flush();
-
writer.close();
-
-
return file;
-
e.printStackTrace();
-
return null;
-
}
-
}
-
-
/**
-
* 输入代码
-
* @return
-
*/
-
-
while (scanner.hasNext()) {
-
codes.append(scanner.nextLine() + "\r\n");
-
}
-
scanner.close();
-
-
}
-
-
/**
-
* 编译
-
* @param fileName
-
* @return
-
*/
-
@SuppressWarnings("static-access")
-
return javac.compile(args);
-
}
-
-
/**
-
* 执行
-
* @param file
-
* @return
-
*/
-
@SuppressWarnings("unchecked")
-
try {
-
Class clazz = urlClass.loadClass(getClassName(file));
-
-
return true;
-
e.printStackTrace();
-
e.printStackTrace();
-
e.printStackTrace();
-
e.printStackTrace();
-
e.printStackTrace();
-
e.printStackTrace();
-
e.printStackTrace();
-
}
-
-
return false;
-
}
-
-
/**
-
* 获得类名
-
* @param file
-
* @return
-
*/
-
return file.getName().substring(0,
-
file.getName().length() - ".java".length());
-
}
-
-
/**
-
* 测试
-
* @return
-
*/
-
public boolean newTest() {
-
if ("".equals(file.getName()) || 0 != compile(file.getName())) {
-
return false;
-
}
-
return run(file);
-
}
-
-
/**
-
* @param args
-
*/
-
}
-
-
}
com.sun.tools找不到的解决方法:在项目属性-Libraries里面加上jdk下面的tools.jar包即可。
java.lang.ClassNotFoundException引起原因:我原来用的是Class.forName(...)方法,这个方法只加载ClassPath里面的类,因此找不到。。
改成上面代码中的URLClassLoader来读取就可以了。
在OGRE中使用Terragen生成的高度图。。
首先在Terragen的Landscape窗口,生成一个地形(Generate Terrain),完成后单击Export,导出成Raw 16 bits Intel Byte-Order(好像8bit也可以,没有试过)。
之后将OGRE SDK的media目录下的terrain.cfg文件复制一份,改成你想要的名字,修改里面的以下参数:
- WorldTexture=terrain_texture.jpg
这是纹理的贴图图片
- DetailTexture=terrain_detail.jpg
纹理的精细文件
- DetailTile=3
精细等级
- Heightmap.image=terrain.png
高度图源文件,可以是灰度图image,也可以是raw。
- Heightmap.raw.size=513
这本来是放在注释里面的,如果使用raw,则将这个size设成你地形的size。
- Heightmap.raw.bpp=2
这也是注释的内容。。如果用raw,则根据bits数,如果你生成8bits的,则bpp=1,16bits则为2。
- PageSize=513
建议和raw的size一样 - -。
改好后保存,将你需要的纹理文件和raw文件都放入media\materials\textures文件夹下。下面在OGRE中加载:
创建Terrain场景管理器
-
mSceneMgr = mRoot->createSceneManager("TerrainSceneManager");
加载场景
-
std::string terrain_cfg("test.cfg");
-
mSceneMgr -> setWorldGeometry( terrain_cfg );
完成 - -。。。
笔记之U盘装不了驱动。。XD
今天终于用上U盘了 > < 我是个不乖的学生 :P
把windows/inf下的usbstor.ini属性安全项设为完全允许就OK了~
啊~久违的eclipse~~~久违的API~~~~~~~~~~~~~
MFC模拟登陆FNOJ...
可以算是第一个MFC程序吧 > <
昨天晚上用Java写了一个可以支持多个OJ的(POJ/ZOJ/FNOJ/HOJ),进度10%
(不过完全不知何时有兴致会继续 = ___= 前天还在玩网游的说……)
白天在公司米有环境,正好米什么事情,于是就来练习下MFC好了,
写了一个只能查自己代码的,运行截图如下:
试一下Yahoo Pipes。。
我想导入CSDN博客上的文。。发现它的rss只提供摘要 无比囧。。于是google搜到了这个东西,
步骤如下:
- Fetch Feed:输入RSS地址
- Loop,输入口与FetchFeed相连,根据每页link,解析,CSDN博客正文开始于blogstory的div。将内容存储到item.temp中。
- Rename,输入口与Loop相连,输出连到Pipes Output,将item.temp.0.content重命名为description即可(或其他名字也OK - -,因为我要导入用……)。
- 右下角DEBUG即可查看效果。
- 测试成功后,右上角SAVE存储,有时不怎么稳定 要多存几次 = =。
- SAVE完成后 提示Run,即可进入该Pipes页面。此时会重新读取,速度会比较慢,有时还会出错 多刷新几次即可。
CEGUI主键盘上的回车原来是Return。。Orz
英语果然差劲Orz。。。
早上找Key,只看到NumpadEnter,找不到Enter,无意间发现Apostrophe上的tip是:Enter on main keyboard……
大喜,始终测不出来。。。后来百度之。。原来是RETURN。。
而Apostrophe乃是撇号的意思 OrzOrzOrz 不过我测了下,仿佛是按下回车旁边那个键(")按下再弹起的瞬间。。
为啥米回车会是Return???GOOGLE之。。找到《细查回车和换行》一文,节选如下:
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
话说回车的英文名是carriage return,怪不得\r会回到行首 = = 原来它就是回车,中文名字太奥义了。
Wiki百科说:回車鍵第一次由1960年在Smith Corona公司的印表機出現。當時,此鍵一般被標「Return」。為了幫助不說英語的用戶學習打字,之後出版的打字機經常被標「↵」符號。
~~~~~~~~~~~~TAT 可我见过的所有键盘都标的是Enter~~~~~
CEGUI setText无法显示中文。。
项目设好了中文字体,加上中文输入,输入的字符显示出来是正常的,但是直接在程序里面setText中文却显示乱码……
查了一下是字符编码的关系……CEGUI是UTF-8格式的。。必须进行转换。。我的项目使用多字节,下面是转换函数:
-
CEGUI::String CharArrayToString(const char* pszText)
-
{
-
// ASCII -> Unicode
-
int nLen = strlen(pszText);
-
std::wstring unicode(nLen, 0);
-
unicode.resize(
-
MultiByteToWideChar(CP_ACP, 0, pszText, static_cast<int>(nLen),
-
const_cast<wchar_t*>(unicode.data()), unicode.size())
-
);
-
-
// Unicode -> UTF-8
-
char buff[128] = "";
-
WideCharToMultiByte(CP_UTF8, 0, unicode.data(), static_cast<int>(unicode.size()),
-
buff, sizeof(buff), NULL, NULL);
-
-
return CEGUI::String((CEGUI::utf8*)(buff));
-
}
附上几个链接:
- 关于CEGUI的中文输入与显示:http://blog.csdn.net/naugthyLeo/archive/2009/05/25/4215687.aspx
这好像是我的老师 - -!我的项目就是按照该方法实现的中文输入。
- CEGUI中的汉字显示实现:http://blog.sina.com.cn/s/blog_613d5bdc0100er4f.html
由于CEGUI根据Unicode编码生成纹理,中文字符可能需要生成过多纹理,这里作者对CEGUI做了一些修改。
- 研究cegui,写脚本:http://songxiaoyu8.blog.163.com/blog/static/2081812820096232432677/
本文的末尾有一组编码转换的函数,方便使用^^ 上面的函数就是根据这里的修改。