RSS
 

六个高智商的冷笑话

12 Nov

1
工程师、物理学家和数学家同时接到一个任务:将一根钉子钉进一堵墙。
工程师造了一件万能打钉器,即能把任何一种可能的钉子打进任何一种可能的墙里的机器。
物理学家对于榔头、钉子和墙的强度做了一系列的测试,进而发展出一革命性的科技——超低温下超音速打钉技术。
数学家将问题推广到N维空间,考虑一个1维带扭结的钉子穿透一个N-1维超墙的问题。
很多基本定理被证明……当然啦,这个题目之深奥使得一个简单解的存在性都远非显然。

2
一位农夫请了工程师、物理学家和数学家来,想用最少的篱笆围出最大的面积。
工程师用篱笆围出一个圆,宣称这是最优设计。
物理学家将篱笆拉开成一条长长的直线,认为围起半个地球总够大了。
数学家好好嘲笑了他们一番。他用很少的篱笆把自己围起来,然后说:“我现在是在外面。”

3
物理学家和工程师乘着热气球,在大峡谷中迷失了方向。
他们高声呼救:“喂——!我们在哪儿?”
过了大约15分钟,他们听到回应在山谷中回荡:“喂——!你们在热气球里!”
物理学家道:“那家伙一定是个数学家。”
工程师不解道:“为什么?”
物理学家道:“因为他用了很长的时间,给出一个完全正确的答案,但答案一点用也没有。”

4(代数都忘光了,谁来解释下这个?)
常函数和指数函数e的x次方走在街上,远远看到微分算子,常函数吓得慌忙躲藏,说:“被它微分一下,我就什么都没有啦!”指数函数不慌不忙道:“它可不能把我怎么样,我是e的x次方!”
指数函数与微分算子相遇。指数函数自我介绍道:“你好,我是e的x次方。”微分算子道:“你好,我是d/dy!”

5
物理学家、天文学家和数学家走在苏格兰高原上,碰巧看到一只黑色的羊。
“啊,”天文学家说道,“原来苏格兰的羊是黑色的。”
“得了吧,仅凭一次观察你可不能这么说。” 物理学家道,“你只能说那只黑色的羊是在苏格兰发现的。”
“也不对,” 数学家道,“由这次观察你只能说: 在这一时刻,这只羊,从我们观察的角度看过去,有一侧表面上是黑色的!”

6
一天,数学家觉得自己已受够了数学,于是他跑到消防队去宣布他想当消防员。
消防队长说:“您看上去不错,可是我得先给您一个测试。”
消防队长带数学家到消防队后院小巷,巷子里有一个货栈,一只消防栓和一卷软管。消防队长问:“假设货栈起火,您怎么办?”
数学家回答:“我把消防栓接到软管上,打开水龙,把火浇灭。”
消防队长说:“完全正确!最后一个问题:假设您走进小巷,而货栈没有起火,您怎么办?”
数学家疑惑地思索了半天,终于答道:“我就把货栈点着。”
消防队长大叫起来:“什么?太可怕了!您为什么要把货栈点着?”
数学家回答:“这样我就把问题化简为一个我已经解决过的问题了。”

 
1 Comment

Posted in 未分类

 

nginx反向代理服务器端口问题

06 Nov

nginx可以很方便的配置成反向代理服务器

server {
        listen       80;
        server_name  bothlog.com;
        location / {
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_pass http://127.0.0.1:9380;
        }
}

但是如果nginx的监听端口不是默认的80端口,改为其他端口如81端口。

后端服务器中request.getServerPort()无法获得正确的端口,返回的仍然是80;

在response.sendRedirect()时,客户端可能无法获得正确的重定向url。

正确的配置方法为

在 $host之后加上端口号,如$host:81

server {
        listen       81;
        server_name  bothlog.com;
        location / {
          proxy_set_header Host $host:81;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_pass http://127.0.0.1:9380;
        }
}
 
No Comments

Posted in nginx

 

向<wicket:head>加入CSS条件注释

25 Oct

整合wicket和blueprint时碰到CSS条件注释问题。

blueprint的CSS引用语句如下

<link rel="stylesheet" type="text/css" href="styles/blueprint/screen.css" media="screen, projection" />

<link rel="stylesheet" type="text/css" href="styles/blueprint/print.css" media="print" />

<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="styles/blueprint/ie.css" media="screen, projection" />
<![endif]-->

为了兼容低版本的IE,最后一个link标签中有条件注释(Conditional Comments)

<!--[if lt IE 8]> ... <![endif]-->

由于上面三个CSS是所有页面公用的样式文件,如果简单的将上面代码片段拷贝到页面的<head></head>标签里势必带来繁琐的步骤和大量的代码冗余。好在wicket提供了在Page实现类中引用CSS方法,在html页面中加入如下标签

<head><wicket:head></wicket:head></head>

并在对应的page类的构造方法里加入如下代码

add(CSSPackageResource.getHeaderContribution("styles/blueprint/screen.css", "screen, projection"));
add(CSSPackageResource.getHeaderContribution("styles/blueprint/print.css", "print"));

就能实现css的动态引入。如果把上面代码片段放到所有page实现类的公共父类中去,通过继承与多态,每个页面都导入如上CSS。一个美好的想法,问题是wicket并没提供条件注释(Conditional Comments)的输出方法,而blueprint偏偏需要条件注释。

一番折腾后发现通过自定义的HeaderContribution可以输出带条件注释的CSS,代码如下

add(new HeaderContributor(new IHeaderContributor() {
	private static final long serialVersionUID = -7665269108971796375L;

	@Override
	public void renderHead(IHeaderResponse response) {
		response.renderString("<!--[if lt IE 8]>");
		response.renderCSSReference(
			returnRelativePath("styles/blueprint/ie.css"),
						"screen, projection");
		response.renderString("<![endif]-->");
	}

	private final String returnRelativePath(String location) {
		// WICKET-59 allow external URLs, WICKET-612 allow absolute
		// URLs.
		if (location.startsWith("http://")
			|| location.startsWith("https://")
			|| location.startsWith("/")) {
			return location;
		} else {
			return RequestCycle.get().getProcessor()
				.getRequestCodingStrategy()
				.rewriteStaticRelativeUrl(location);
		}
	}
}));

<>

 
No Comments

Posted in wicket

 

win7下访问ext4分区(二)

05 Oct

之前有写过一篇《win7下访问ext4分区》介绍使用Ext2Fsd访问ext4分区,由于Ext2Fsd的版本一致停留在0.48配置,需要通过重新格式化调整ext4的分区参数才能访问,对于win7+ubuntu的用户来说,使用起来很不方便。

今天介绍另一个工具Ext2Read,可以在win7下直接访问ext2/ext3/ext4是格式,只有一个exe文件,虽然不及像Ext2Fsd那样与资源管理器集成来得方便,但绿色小巧,便于携带和分享。

 
1 Comment

Posted in linux, win7

 

柳传志的火鸡理论

30 Sep

有三种动物,鸡、火鸡、鸵鸟,共同生活在一个动物园里,因此,难免在相遇之际相互端详一下,比比个头大小。

如果是两只鸡相遇,双方的印象大概是这样:你比我要小。

如果是一只鸡与一只火鸡相遇,火鸡会认为自己比鸡大得多;而鸡则会认为,咱们的个头差不了多少。

如果是一只鸡与鸵鸟相遇,鸡一般都会承认对方的个头确实比自己大。

一只年老而觉悟了的鸡,得出两点认识:
1、在缺少比较的情况下,很容易高估自己。
2、想要开眼界,就不能一生一世总在鸡群中相望。

而那只鸵鸟则感慨道:如果要想获得别的动物许可的优势,需要比它们高出许多许多。

 
 

Ubuntu 10.04开启字符模式并设置静态IP

24 Aug

在VMWare中运行Ubuntu,开启图形界面太浪费资源了,2G的内容已经被WIN7占去了一半,在开个VMWare,不用干别的事情了。另外VMWare默认的网络方式是NET,虚拟机通过DHCP获得IP,而我习惯于使用XShell通过SSH访问虚拟机,Dynamic IP不便于保存Session,所有顺便把虚拟机中UBuntu的IP设置成静态的。

切换Ubuntu到字符模式启动

1.修改/etc/default/grub文件

$sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

改为

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text

2.更新grub配置

$sudo update-grub

重启即可。

当需要使用图形模式的时候,执行

$startx

就可以启动gnome了。

设置静态IP

1.编辑interfaces文件

$sudo vi /etc/network/interfaces

内容如下

auto lo
iface lo inet loopback

在文件末新增如下内容

auto eth0
iface eth0 inet static
address 192.168.56.125
netmask 255.255.255.0
gateway 192.168.56.2

红色部分根据实际情况修改

2.添加静态DNS服务器IP

sudo vi /etc/resolv.conf

添加如下内容

nameserver 192.168.56.2

3.重新加载网卡配置

$sudo ifup eth0
 
No Comments

Posted in ubuntu

 

Chrome中一旦退格IBus无法输入

21 Aug

一旦按了backspace删除之前输入的文字,就要重新启动ibus才能输入,不然输入什么都是不能显示的,

已经证实是iBus的key snooper特性导致了这个问题。可以考虑将iBus升级到1.3.5以上(添加PPA)

$sudo add-apt-repository ppa:shawn-p-huang/ppa
$sudo apt-get update
$sudo apt-get dist-upgrade
 
5 Comments

Posted in ubuntu

 

解决Ubuntu 10.04 ATI显卡无法调节Fn键调节屏幕亮度问题

21 Aug

升级Ubuntu 10.04后我的hp4411s无法通过Fn+F7/F8调节屏幕亮度,特别是电池供电时,屏幕自动黑下来以后,还等到电源管理里去调节亮度,挺烦人的。Google以后发现是ATI显卡驱动问题,通过安装驱动可以解决该问题。通过“系统“-“系统管理”-“硬件驱动”很容易的装上驱动,重启后可以通过Fn键调节亮度了,但按下了葫芦起了瓢,开机画面变成了低分辨率的那种,奇难看。有一阵Google,才发现原来驱动有开源与官方之分,据说官方的比较好一点。解决开机画面低分辨率问题需要一些繁琐的设置绕过去。

下面介绍如果安装ATI官方驱动并且解放开机画面底分辨率问题

一、安装ATI官方驱动

1.下载页面

http://support.amd.com/us/gpudownload/Pages/index.aspx

在该页面一次选择适合你技巧的驱动型号和平台即可

如果你的机器型号时4411s直接下载下面链接

http://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/ati-driver-installer-10-7-x86.x86_64.run

2.安装

$chmod +x ati-driver-installer-10-7-x86.x86_64.run
$./ati-driver-installer-10-7-x86.x86_64.run

通过向导默认安装即可。

二、解放开机画面底分辨率问题

1.安装v86d和hwinfo包

$sudo apt-get install v86d hwinfo

2.查看自己显卡支持的分辨率

sudo hwinfo --framebuffer
vangie@vangie-laptop:~$ sudo hwinfo –framebuffer
[sudo] password for vangie:
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.464]
Unique ID: rdCR.QOJHFkjgnM2
Hardware Class: framebuffer
Model: “(C) 1988-2005, ATI Technologies Inc.  M92″
Vendor: “(C) 1988-2005, ATI Technologies Inc. “
Device: “M92″
SubVendor: “ATI ATOMBIOS”
SubDevice:
Revision: “01.00″
Memory Size: 16 MB
Memory Range: 0×80000000-0x80ffffff (rw)
Mode 0×0300: 640×400 (+640), 8 bits
Mode 0×0301: 640×480 (+640), 8 bits
Mode 0×0303: 800×600 (+832), 8 bits
Mode 0×0305: 1024×768 (+1024), 8 bits
Mode 0×0310: 640×480 (+1280), 15 bits
Mode 0×0311: 640×480 (+1280), 16 bits
Mode 0×0313: 800×600 (+1600), 15 bits
Mode 0×0314: 800×600 (+1600), 16 bits
Mode 0×0316: 1024×768 (+2048), 15 bits
Mode 0×0317: 1024×768 (+2048), 16 bits
Mode 0x030d: 320×200 (+640), 15 bits
Mode 0x030e: 320×200 (+640), 16 bits
Mode 0×0320: 320×200 (+1280), 24 bits
Mode 0×0393: 320×240 (+320), 8 bits
Mode 0×0395: 320×240 (+640), 16 bits
Mode 0×0396: 320×240 (+1280), 24 bits
Mode 0x03b3: 512×384 (+512), 8 bits
Mode 0x03b5: 512×384 (+1024), 16 bits
Mode 0x03b6: 512×384 (+2048), 24 bits
Mode 0x03c3: 640×350 (+640), 8 bits
Mode 0x03c5: 640×350 (+1280), 16 bits
Mode 0x03c6: 640×350 (+2560), 24 bits
Mode 0×0333: 720×400 (+768), 8 bits
Mode 0×0335: 720×400 (+1472), 16 bits
Mode 0×0336: 720×400 (+2944), 24 bits
Mode 0×0321: 640×480 (+2560), 24 bits
Mode 0×0322: 800×600 (+3200), 24 bits
Mode 0×0323: 1024×768 (+4096), 24 bits
Mode 0x03ee: 1366×768 (+1408), 8 bits
Mode 0x03ef: 1366×768 (+2752), 16 bits
Mode 0x03f0: 1366×768 (+5504), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

这里我将选择”Mode 0x03f0: 1366×768 (+5504), 24 bits”最大分辨率。

3.修改/etc/default/grub文件,使用uvesafb的framebuffer来启动

打开/etc/default/grub文件文件

$sudo gedit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

改为

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash nomodeset video=uvesafb:mode_option=1366×768-24,mtrr=3,scroll=ywrap”

注意:红色部分根据具体情况修改

4.修改/etc/initramfs-tools/modules文件

$sudo gedit /etc/initramfs-tools/modules

新增如下内容

uvesafb mode_option=1366×768-24 mtrr=3 scroll=ywrap

5.运行下面的命令,启用framebuffer

$echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

6.运行下面的命令,更新grub配置文件

$sudo update-grub
$sudo update-initramfs -u

7.重启机器

三、参考文档

[1]Ubuntu 10.04 ATi显卡官方驱动&开源驱动的问题总集

[2]I.实战.解决Ubuntu 10.04开机画面低分辨率问题&顺带美化

 
2 Comments

Posted in ubuntu

 

将Tunnelier注册成Windows服务

14 Aug

最近硬盘坏道了,没有过保,HP可给换了块新的,重装了x64版的win7,下载Tunnelier的时候意外发现,官网上有Running Tunnelier as a Windows Service条目,之前一直以为只有MyEnTunnel可以注册成Windows服务,原来通过工具可以将任何程序注册成服务。文章中提到了三个工具:

下面我将介绍如何使用NSSM(Non-Sucking Service Manager)将Tunnelier注册成服务。

Read the rest of this entry »

 
3 Comments

Posted in GFW

 

老了

26 Jul

某日晚归地铁上,
和一好友电话,
挂机时,
我感慨一句:
“再不解放台湾,志玲姐姐就老了”。
收线后,
旁边一大叔模样的人感慨说:
“年轻人,你们还有机会,青霞姐姐已经老了”。
回家后给老爸电话谈及此事,
老头沉闷半天说:
“丽君姐姐已经不在了”

 
2 Comments

Posted in 未分类