Web前端开发QQ群 110939958-业余程序员

我发现的设计与UE

硬盘灯的重要性

说这个的原因是我的本本竟然没有硬盘灯,这在购买的时候是个意外
不过这些年也用过来了,虽然有时候不得不爬在本本上听听硬盘是否在响... --!

就一般的pc来说,假如你的系统失去了响应,硬盘灯可以提示电脑是否真的挂了.
这一点是很重要的,因为如果程序是在拼命地读盘,你可能需要等一会(或者等好一会..),而如果它似乎已经死了,那最好把它干掉
如果干掉一个正在读写磁盘的程序是要付出代价的,轻者留下垃圾文件,重者文件丢失或者系统损坏
没有硬盘灯,是一个糟糕的想法

送进回收站的确认框

我认为这是一个鸡肋
既然是鸡肋就是说它在某些地方还是有一点用处的,比如说电脑新手或是"习惯"了的用户
不过,仔细想想,你点击"取消"的机率有几成呢?反正我几乎从来不会点那个,因此,这个确认成为一个累赘
误删文件的双保险(这个确认框+回收站)是不必要的,通常当你习惯成自然而漫不经心地点"删除->确认->清空回收站"的时候,这一切都形同虚设了
放心地依靠回收站吧,请不要经常地清空它,里面的东西不会变质
试着把那个确认框去掉,那个选项就在回收站的右键里,也许你会觉得世界更美好

我对我的部下说:"去,把那个家伙干掉!"
我希望他回答:"是!"
而不是:"您真的要干掉它吗?"...

(全文 ...)

用Python调用glade

Python 2.6.5, glade 3.6.7

import pygtk
pygtk.require("2.0")

import gtk
import gtk.glade

class TestGlade:
	def destroy(self,widget,data=None):
		gtk.main_quit()
	def __init__(self):
		builder = gtk.Builder()
		builder.add_from_file('glade/gtk2.glade')
		self.mainwindow = builder.get_object('mainWindow')
		self.mainwindow.connect('destroy',self.destroy)
		button = builder.get_object('button')
		button.connect('clicked', self.click_event)
		self.mainwindow.show()

	def click_event(self, widget):
		widget.set_label('clicked')

	def main(self):
		gtk.main()

if __name__ == "__main__":
		window = TestGlade()
		window.main()

这不是DOS

不过也就是模拟了一个输入框,再者就是任务树(任务->子任务...)

另外就是通过它改进了一下keymap,它的事件派发用起来更"有趣"了..

参观请移步: http://www.jatx.org/jatx/jxui/console/

Orta+Faenza主题方案

Orta是一款gtk主题,而Faenza是著名的图标主题

Orta theme

Orta 主题

Faenza 图标主题

安装方法:

Orta: 参考地址http://gnome-look.org/content/show.php/Orta?content=134123

sudo add-apt-repository ppa:nikount/orta-desktop
sudo apt-get update
sudo apt-get install orta-theme

Faenza: 参考地址http://gnome-look.org/content/show.php/Faenza?content=128143

sudo add-apt-repository ppa:tiheum/equinox
sudo apt-get update && sudo apt-get install faenza-icon-theme

局部效果图:

Orta+Faenza效果

Orta+Faenza效果

关于窗口大小

通常需要设定窗口大小是在弹出窗口的时候.尽管浏览器的window对象有resizeTo方法,但是对于非弹出窗口现在许多浏览器已经不理会这个动作了(比如chrome,opera...的某些版本)

设定的方式有两种

1. 在弹出方法的第三个参数中指定

window.open("url", "", "width=300, height=200");

2. 调用子窗口的window.resizeTo方法

win.resizeTo(300, 200);

经测试:

第一种方法的数值指的是 窗口的"视口(viewport)"的大小,不包括窗口本身的一些东东(标题栏,边框,地址栏等)

第二种方法指定的是窗口本身的大小,所以若想用这个来适应网页内容是不靠谱的

值得一提的是 window.resizeTo 似乎与操作系统的窗口机制相关,在ubuntu的火狐下指定的并不是窗口本身的大小,而是除去"窗口装饰"的大小(即除去标题栏,边框.但包括地址栏,状态栏之类)

以下是截图(所有数值为300*200):

弹出窗口的原始大小为内容区大小

弹出窗口的原始大小为内容区大小

上图依次为Opera, chrome, firefox 均在Ubuntu下.

(全文 ...)

CSS 高度百分比

关于CSS高度的百分比是这样规定的:

百分基数为元素包含块的高度,不可为负值.如果包含块的高度没有显式给出(即取决于内容的高度),该值等同于"auto".

元素在不设置高度的时候默认就是"auto".

所以百分比的高度必须在父元素有声明高度时使用.

但是有一种情况,如果此元素是绝对定位的(absolute或fixed) 那么百分比高度会起作用,其参照物为它的 offsetParent 的高度(不论是否设置)

省略连续的数字

Q群里有人发的, 很早以前写的了,,,
演示在这里: http://www.jatx.org/pub/ShortNumStr.html

function doFilter(str, elli) {
var stk = [];

return str.replace(/\d/g, function($$, i, str) {
var n = parseInt($$, 10);
var ret = '';
//不满足就出栈
if(!check(n)) {
ret = joinStack(stk);
}
stk.push(n);
//处理最后一个字符
if(i == str.length - 1) {
ret += joinStack(stk);
}
return ret;
});
function joinStack(stk) { (全文 ...)