据部分人称,百度Hi打开网页都是直接使用IE而非默认浏览器,当然我这里做不了实验……Javran 以为是因为他用的 Chrome 是百度竞争对手开发的而不支持,便托他在百度里面工作的朋友去问了下开发者,结果据说开发者说是直接调用 iexplore.exe 打开网页的 _-b
今天高中时候的贴吧上有一个人在试用了 Chrome 后称“现在终于发现IE有多么LJ了”,然后就提出了同样的问题。于是我就稍微研究了一下~
拿 eXeScope 打开 BaiduHi.exe 文件(eXeScope 是可以完美 wine 出来的~),没有发现与 iexplore.exe 有关的字符串,有点失望。再看看目录里面如此多的 dll 文件,用 eXeScope 一个一个开过去,发现对于那里的 dll 文件 eXeScope 似乎只能看到版本信息……然后突然想到,我们可以直接去找文件中有没有 iexplore.exe 这个字符串~因为在 Linux 下,这一工作变得格外简单:
1
| find -type f -print0 | xargs -0 grep --binary-files=binary -l iexplore.exe |
一条命令便足矣,对 Bash 稍有了解的人一定能完全理解这句话的含义~
下面它输出了两个文件:ImEngine.dll 和 Basement.dll。用 IE 打开很可能就固化在这两个文件里面!用 MadEdit 打开这两个文件,果真发现了 iexplorer.exe。不过不敢乱改,改了也没法实验(印象中百度Hi不能被完美 wine 出来),于是接下去的实验就作罢了。
可是又有人报告百度Hi可以调用疼逊TT打开,我就真不知道是怎么回事了 _-b
< Chrome,eXeScope,Linux,百度Hi >
今天看了 LinuxToy 上推荐的《Arch Linux 安装指南》,看到其中关于分区的部分,我突然想写篇文章来讨论一下 Linux 中应该怎么分区、应该怎么选文件系统、应该怎么配置才会比较不错。
Read the rest of this entry »
< Linux,分区 >
Linux 会死机么?我可以很肯定地说,会!如何?很简单,我的上一篇日志就介绍了一种方法~要让 Linux 死机很容易,但难的是在死机以后如何安全的让他摆脱死机状态。
Linux 死机有很多种情况,最常见的是系统负载过高导致的。如上次介绍的 fork 炸弹就是这个原理,此外还可以运行内存耗用极大的程序(如虚拟机),也会迅速提升系统负载。由于系统负载过高导致的卡死,一定是解决的越快越好!此时必须记住的是,不能再试图依赖任何图形界面的东西,如 Gnome 的系统监视器(这是我从 Windows 遗留下来的愚昧习惯……),这只会继续加重这种卡死的局面。那怎么办?
Read the rest of this entry »
< Linux,死机 >
Linux 的 fork 创建子进程的机制非常著名了,是一个很优美的方式。可是,这个东西是很可怕的。
记得曾经看到一个在 shell 上运行的 fork 炸弹:
(严重警告不要在任何 Linux 或 UNIX 的 Shell 上实验这条命令……)
这次我用 C 写了个想试验一下资源限制是否传递到子进程,就有了下面程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include <stdio.h>
#include <unistd.h>
#include <sys/resource.h>
int main(void) {
struct rlimit rtime;
rtime.rlim_cur = rtime.rlim_max = 1;
setrlimit(RLIMIT_CPU, &rtime);
while (1) {
fork();
}
return 0;
} |
当然,这个程序其实运行了最多卡一会儿(我差点以为被炸死了……),最后系统还是及时结束了这个疯狂的过程,此时查看系统负载,5分钟内负载高达227.x!
如果你想实现上面一行 shell 的功能(即直接拯救一切的那种……),只要下面代码就够了:
1
2
| #include <unistd.h>
int main() { while (1) fork(); } |
< Linux,炸弹 >
曾经的曾经,很早很早以前,我发布了一个叫 ujudger-base 0.1 的东西,是用 C++ 写成的简单测评程序,仅能测试程序运行时间和内存耗用(还不准确)。
这次发布的是一个完整的测评机,支持传统题型、交互题和提交答案题,可导出测评结果。整个程序使用 Python 编写,直接把 ujudger.py 复制到待测目录下并编写 config 文件即可测评。
不过现在这个程序只有一个文字界面,非常简陋,而且安全性不佳。但现在正在撰写的 ujudger 1.0 (版本跨越大,意味着变化之巨大……) 将就这些问题有重大改进,敬请期待。
另外,有人询问是否准备让这个测评机与另一个 Windows 下的开源测评机 Cena 兼容。我的回答是,由于设计差异,可能比较困难。对比 Cena 的自定义校验器,ujudger 的自定义校验器更强大,同时 Cena 的校验器可以通过一点简单的修改或加一个脚本外壳就可以在 ujudger 中使用。在 1.0 中计划兼容 Cena 的校验器。至于配置文件,1.0 中配置文件的格式会有较大变动,不过可能可以通过转换程序将 Cena 的配置文件转为 ujudger 的。
我在 Google Code 上开了一个项目,感兴趣的同学可以关注关注~地址:http://ujudger.googlecode.com/
最后,ujudger 0.1 的下载地址也在 Google Code 上:ujudger.py
< Cena,Linux,OI,Python,ujudger >
众所周知,Linux 的权限控制虽然很简单,但却十分严格和有效的。(和 Windows 复杂却没用的权限控制形成鲜明对比……)由于最近编写测评机,希望利用 Linux 的高安全性做运行级恶意代码防护,因此就顺带地研究了一下 Linux 的权限控制。经过这次探秘,我对 Linux 的权限有了更新的认识,确实是一个很强大的东西啊!
由于本人的能力有限,文章中的不足和谬误也请大家多多指教!
Read the rest of this entry »
< Linux,安全 >
很久没写日志了,前段时间本来想写一个安装 CoreAVC for Linux 的,结果它未能成功拯救我的福音战士新剧场版1080P,于是就放下了……
这次由于对 Scribes 测试版 bug 重重的不满和随时可能丢失修改的担忧,在看了一部分《开源世界旅行手册》后,毅然决定试一试传说中的 vim。
Read the rest of this entry »
< Linux,Ubuntu,vim >
在开源界,总是有很多不可思议的东西,在没有虚拟化技术的机子中的 Windows 下跑 Linux 可以以 Native 的速度似乎很早就已经成功了。使用的是一个叫做 coLinux 的程序,它将整个 Linux 系统当做 Windows 的一个进程,其高得惊人的执行效率伴随着是相当小的资源占用。
Read the rest of this entry »
< Linux,Ubuntu,Windows,虚拟机 >
今天回家本想在我的 Ubuntu 上玩玩 OpenGL,结果花了一个下午,终于研究出些东西了……
在 NeHe 的源代码中似乎有 Linux 的,不过一个是用 glut、一个是用 SDL、一个是用 GLX,原本看到 glut 是 OpenGL 官方的一个夸平台的简单窗口系统,结果发现全屏不能……于是就找到了 GLFW 这个东西,据说比较简单,不过还是研究了一个下午。
下面说一下研究成果吧,首先,想要用 g++ 编译用 GLFW 写的程序,一定要加这些编译参数: -lglfw -lGL -lGLU -lXrandr,特别是最后一个,是其官方参考中没有的!这个是我查了许多资料,然后瞎猜猜到的……再说说头文件,这次不需要引用3个库了,只有一个 #include <GL/glfw.h> 就可以了,似乎把其他的库自动引用了。另外就是,画完要用 glfwSwapBuffers(); 刷新,不然不仅什么都不会显示,而且还会死机……除此之外,还要注意那个键盘的按键,不要想当然的和 Windows 下拿去类比,根据研究发现,键盘事件交出的 key 最大可以达到 318,而且特殊键都会以这些“大值”返回,所以一定要申请好内存……
这次主要参考了:
GLFW Reference
OpenGL Tutorials – Basics
以及 NeHe 的 OpenGL 教程。
Read the rest of this entry »
< C/C++/C#,Linux,OpenGL >
很早以前,我就知道,在 Windows 里面我们可以直接运行非二进制文件的 bat/cmd 命令行文件,还有那个 vbs 脚本文件。
到了 Linux,我发现,在这里,每一样都比 Windows 里面先进……虽然不能运行 vbs 或 bat/cmd,但这里有 bash、python、perl、ruby……
好吧,我承认还是有脚本不行的,但 Linux 下即使 bash 都比 vbs 强大……
后来知道了 php 也可以……php-cli 模式可以在 Linux 下直接执行 php 脚本。
今天又知道了……原来 JavaScript 脚本也可以直接执行。先是把一个 JavaScript 脚本设置为可执行,但是没法运行。然后到 bash 中找什么命令能执行 JavaScript……我试了一下 javascript 命令,没有,又试了下 js,bash 提示我,在 spidermonkey-bin 包中包含这个命令。联想到刚刚看过一个资料说到 Spidermonkey 是 Firefox 的脚本解析器,我就用 apt 安装了个(今天新加的网易源实在太快了!)
随后,修改了一下脚本,大约是这个样子的:
1
2
| #!/usr/bin/js
print("Hello world!"); |
执行,在 bash 中输出了 Hello world! 太高兴了!
Linux 下真是没有不能执行的脚本,Windows 永远也比不上……
我就不理解了,这么先进的 Linux 怎么就没什么人用呢?多少功能比 Windows 方便……
< Javascript,Linux >
Comments