主要出现了两个问题,第一个问题是,无法分区。表现的问题就是到 boot camp 助理最后一步的时候,分区老是不成功。

解决方法:重启按住 Command + R 选择 磁盘工具,然后选择系统盘,检查错误,修复错误。然后重启再次使用 Boot Camp 就可以正常分区了。

第二个问题就是,安装程序无法创建新的系统分区,也无法定位现有系统分区。

苹果也给了解决方案,http://support.apple.com/kb/TS4599?viewlocale=zh_CN。

但是我的问题是,我把移动硬盘插在了 左侧 的 USB 接口上,并且 USB 的格式是 EXFAT 格式。

最后把移动硬盘去掉,顺利安装成功。

对于 IE6 也可以使用纯 CSS 来实现 position:fixed 的效果。直接上代码吧。
先是结构。

1
2
3
4
5
    <div class="container">
        我是IE6,使用 absolute 模拟 fixed.</br>
        这里多多复制几个,效果明显。
    </div>
    <div class="fixed"></div>

然后是 CSS。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        body {
            height:100%;
            overflow-y:auto;
            padding:0px;
            margin:0px;
        }
        .container {
            height:1800px;
            background:#CCC;
        }
        .fixed {
            position:fixed;
            top:50px;
            left:50px;
            background:red;
            height:50px;
            width:50px;
        }

还有对于 IE6 来说,加一个单独的样式

1
2
3
4
5
6
7
8
   <!--[if lte IE 6]>
        <style type="text/css">
            html {overflow-x:auto; overflow-y:hidden;}
            .fixed {
                position:absolute;
            }
        </style>
    <![endif]-->

原理就是对于 body 设置高度 100%,html 垂直方向上,超出高度给隐藏掉。然后里面的内容自己滚动,而 absolute 的相对于浏览器窗口的话,因为浏览器窗口就那么大,又不滚动,所以 absolute 看起来就 fixed 了。

但是这个有个问题,就是 所有设置了 absolute 和 relative 的元素,都会表现为 fixed 的,所以还是有副作用的。不过可以用来做遮罩层。

例子可以使用 IE6 浏览器访问。

服务器用的是 DS 的 年付 15$ 512内存,256 交换空间的这款。貌似我的系统是 Ubuntu 12.10 。因为 Gitlab 官方推荐是 1GB 内存,所以这个稍微显得有点危险,尝试了大概一个星期,最后终于安装成功了。下面说说我遇到的坑。

其实官方的安装文档蛮详细的,按照官方文档一步一步来,应该不会出问题。但是出了问题的话,还是不知道去哪里找解决方案,我就出了这两个问题,经过坚持不懈的搜索和尝试,最后终于解决了这个错误,因为几乎每次重新安装,都会出现这个错误,所以还是写在这里,一方面大家可以看看,一方面自己也做一个记录。

主要是两个地方,

一个是安装完成之后,执行 service gitlab start 的时候报错,并且启动不成功,可以通过 service gitlab status 来查看状态,如果启动成功了,就会看到 pid 等信息,访问网页版的会提示 502,在

1
2
3
cat /var/log/nginx/gitlat_error.log
 
2013/08/09 10:42:17 [crit] 32573#0: 30 connect() to unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket failed (2: No such file or directory) while connecting to upstream, client: **********, server: **********, request: "GET / HTTP/1.1", upstream: "http://unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket:/", host: "*******"

查看日志,会出现此问题。

如果遇到这个问题,尝试重启服务器,然后在启动 gitlab 尝试多试几次,如果还是不行的话,再尝试执行下面几行代码,记得先 cd /home/git/gitlab

1
sudo -u gitlab -H bundle exec rake assets:precompile RAILS_ENV=production

这样我是可以了,但是不知道你的问题解决没有。

然后就是 url 跳转到了 /user/sign_in 登录页面,但是此时我还是 502 了,此时说明 gitlab 执行成功了,但是 还是有问题,经过搜索,在这篇博文中发现同样的错误,然后想起来,在按教程安装的时候,提示这步有错误,代码如下。

1
cp config/unicorn.rb.example config/unicorn.rb

执行这句的时候,提示没有此文件,但是在,config 目录下,发现了 unicorn.rb 文件,只不过是空的 0KB 大小,然后尝试再次执行此命令,一直都是提示 没有此文件,
此时尝试执行下,

1
sudo -u git -H bundle install --deployment --without development test postgres aws

以安装 unicorn ,但是官方文档是不安装这个的,不知道为什么,反正我是安装了。可以和官方的文档对比下(在 Install Gems 这节),多安装了一个unicorn。不过这个应该不是必须的。

此时再次执行

1
cp config/unicorn.rb.example config/unicorn.rb

如果还是提示没有此文件,那么就大杀器来了。

将 config/unicorn.rb 拷贝一份到本地,将这个文件中的内容全部复制近本地的 unicorn.rb 中,然后将其上传到 config 中。然后再执行

1
bundle exec unicorn_rails -c config/unicorn.rb -E production -D

重启下 gitlab 再试试。然后我就解决了这个问题。

卡号 密码 面值 余额 到期时间 状态 备注
1SCM132W0042 49033682 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W0049 29233728 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004D 18303170 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004J 36138961 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004L 35550492 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004N 96763893 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004P 19477642 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004R 49544034 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004T 38516776 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004X 43521716 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.

如果使用了,请在底下留言注明下。谢谢。

jQuery 中 mouseout() 和 mouseleave() 的触发时机,都是在鼠标离开匹配的元素时被触发,在他俩之间的不同,主要就是在子元素上“事件冒泡”处理方式上的区别。

1. 没有子元素的情况下。

如果匹配的元素没有子元素的情况下,这两者之间是没有区别的。

2. 匹配的元素还有子元素。

如果匹配元素有子元素,那么这两者之间的区别主要来自于对“事件冒泡”时候的处理。

例如,下面的结构:

1
2
3
4
    <div id="outerBox">OuterBox
	<div id="innerBox">InnerBox
	</div>
    </div>

P.S 确保给 outerBox 和 innerBox 都绑定某些事件。

mouseout()
当鼠标进入 “outerBox” ,没有事件被触发。
当鼠标离开 “outerBox” ,并且进入 “innerBox” , “outerBox” 上绑定的事件被触发。
当鼠标离开 “innerBox” , 并且进入 “outerBox” , 紧随着 “outerBox” 的事件,“innerBox” 上绑定的事件被触发。
当鼠标离开 “outerBox”, “outerBox” 上绑定的事件被触发。

mouseleave()
当鼠标进入 “outerBox” ,没有事件被触发。
当鼠标离开 “outerBox” ,并且进入 “innerBox” , 没有事件被触发。
当鼠标离开 “innerBox” , 并且进入 “outerBox” ,“innerBox” 上绑定的事件被触发。
当鼠标离开 “outerBox”, “outerBox” 上绑定的事件被触发。

为了更好地理解,下面给出一个例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
    <html>
<head>
 
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
 
<style type="text/css">
	#mouseout-outerBox1, #mouseleave-outerBox1,
	#mouseout-outerBox2, #mouseleave-outerBox2{
		margin:8px;
		border:1px groove #999966;
		background-color : #999966;
		width:150px;
		height:150px;
		color:white;
	}
	#mouseout-innerBox2, #mouseleave-innerBox2{
		margin:8px 8px 8px 16px;
		border:1px groove #0000FF;
		background-color : #0000FF;
		width:100px;
		height:100px;
		color:white;
	}
	span{
		padding:8px;
	}
	.content{
		width:500px;
		height:250px;
	}
	.container1{
		float:left;
		padding-right:16px;
	}
</style>
 
</head>
<body>
  <h1>jQuery mouseout() vs mouseleave() example</h1>
 
<div class="content">
  <div class="container1">
	  <span>mouseout() - no child element</span>
	  <div id="mouseout-outerBox1">OuterBox
	  </div>
	  <span id="mouseout-msg1">#mouseout is fired : 0</span>
  </div>
 
  <div class="container1">
  	  <span>mouseleave() - no child element</span>
	  <div id="mouseleave-outerBox1">OuterBox
	  </div>
	  <span id="mouseleave-msg1">#mouseleave is fired : 0</span>
  </div>
</div>
 
 
 
<div class="content">
  <div class="container1">
	  <span>mouseout() - with child elements</span>
	  <div id="mouseout-outerBox2">OuterBox
	  	<div id="mouseout-innerBox2">InnerBox
	  	</div>
	  </div>
	  <span id="mouseout-outer-msg2">#mouseout outer is fired : 0</span>
          <br/>
	  <span id="mouseout-inner-msg2">#mouseout inner is fired : 0</span>
  </div>
 
  <div class="container1">
  	  <span>mouseleave() - with child elements</span>
	  <div id="mouseleave-outerBox2">OuterBox
	  	<div id="mouseleave-innerBox2">InnerBox
	  	</div>
	  </div>
	  <span id="mouseleave-outer-msg2">#mouseleave outer is fired : 0</span>
          <br/>
	  <span id="mouseleave-inner-msg2">#mouseleave inner is fired : 0</span>
  </div>
</div>
 
<script type="text/javascript">
 
//example 1
var mouseout1=1;
$('#mouseout-outerBox1').mouseout(function(event) {
  $('#mouseout-msg1').text('#mouseout is fired : ' + mouseout1++)
});
 
var mouseleave1=1;
$('#mouseleave-outerBox1').mouseleave(function(event) {
  $('#mouseleave-msg1').text('#mouseleave is fired : ' + mouseleave1++)
});
 
//example 2
var mouseoutouter2=1;
$('#mouseout-outerBox2').mouseout(function(event) {
  $('#mouseout-outer-msg2').text('#mouseout outer is fired : ' + mouseoutouter2++)
});
 
var mouseoutinner2=1;
$('#mouseout-innerBox2').mouseout(function(event) {
  $('#mouseout-inner-msg2').text('#mouseout inner is fired : ' + mouseoutinner2++)
});
 
var mouseleaveouter2=1;
$('#mouseleave-outerBox2').mouseleave(function(event) {
  $('#mouseleave-outer-msg2')
         .text('#mouseleave outer is fired : ' + mouseleaveouter2++)
});
 
var mouseleaveinner2=1;
$('#mouseleave-innerBox2').mouseleave(function(event) {
  $('#mouseleave-inner-msg2')
         .text('#mouseleave inner is fired : ' + mouseleaveinner2++)
});
 
</script>
</body>
</html>

或者点击这里看看这个例子.

MAMP Pro 2.1.4 注册码:
MP-4A9D-E225-E267-FD9F0
2.1.2 也可用。使用的时候只需要 MP- 之后的复制过去就可以了。

澳门

2013/07/24 / 5 评论 / 3479 围观

只要在香港坐船便很容易就可以到达澳门澳门不但是一个历史悠久的城市,它更是21世纪亚洲最享富盛名的娱乐大都会,这里的娱乐不只局限于世界一流的赌场澳门酒店,更有浓厚多元文化的一面,想感受大自然气息也可以,想在大城市里游玩也可以,可以说是应有尽有。

澳门在葡萄牙殖民时期留下的遗产有不少,当中最显而易见的是当地的建筑物,不少保留了以前的殖民色彩,例如瓷砖广场、五颜六色的街道等。还有受葡萄牙殖民影响而蓬勃发
展起来的食品和葡萄酒。

澳门之所以得以发展起来,有一大部分要归功于它的地理位置。在丝绸之路中这里有着「交易之门」的称号,加上它位于珠江口,使它在各地贸易来往之中担任着重要的角色。

在16世纪50年代初期,葡萄牙人到达澳门并得到当地官吏的许可而建立了城市,在很短的时间内已成为了中国、日本、印度和欧洲之间贸易的重要十字口。近年来更发展了不少轻工业,如纺织、电子和玩具等。旅游业方面更是不用多说,澳门兴建了大量世界级的酒店、度假村、体育设施、餐厅和最具影响力的赌场。

澳门和香港都是中国一个特别的存在:「特别行政地区」,分别于1999年12月20日和1997年7月7日回归中国,其后都继续扩大规模,不停的填海和兴建建筑物,不停的增加旅游焦点和其多样性。而澳门独特的文化更吸引了不少外地旅客冒名而来。其实澳大利亚除了赌场外,还有很多值得一看的地方和事物。

12306订票

2013/05/20 / 4 评论 / 2918 围观

这个据说很好用,哈哈哈。

1
2
3
4
5
<select name="passenger_1_seat_detail_select" style="display: none" id="passenger_1_seat_detail_select" onchange="setSeatDetail('1')">
<option value="0">随机</option>
<option value="3">上铺</option>
<option value="2">中铺</option>
<option value="1">下铺</option></select>

其实对 BFC(Block Formatting Contexts 块级格式化上下文) 听过很多次了,虽然每次都无意中也有用到,但是并没有深入的看看这个到底是个什么东西。今天有点时间看到了这篇文章,但是感觉理解起来有点吃力,所以总结下,按照自己的理解再写一写,一方面加深记忆,一方面,以后自己理解起来也方便。

1. 防止外边距叠加。
这里的防止外边距叠加不是两个同级(兄弟)元素之间的外边距叠加,而是防止父元素和子元素之间的外边距叠加。来个结构:

1
2
3
4
5
  <div class="a"></div>
  <div class="a">
    <div class="b"></div>
    <div class="b"></div>
  </div>

然后样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
  .a, .b {
    margin:10px 0;
  }
  .a {
    width:200px;
    height:50px;
    background:red;
  }
 .b {
    width:100px;
    height:10px;
    background:blue;
  }

此时给 .a .b 都有一个

1
  margin:10px 0;

的外边距。但是并没有触发 .b 的 BFC 特性,此时如图所示:

对 BFC (Block Formatting Contexts) 的一点理解
例子请看:http://jsbin.com/odesoz/3/

然后给 .a 添加

1
  overflow:hidden;

以触发 .a 的 BFC 特性,此时结果如图所示:

对 BFC (Block Formatting Contexts) 的一点理解
红色是 .a ,蓝色是 .b ,且 .b(蓝色) 是 .a(红色) 的子元素,一目了然。
此时的例子请看:http://jsbin.com/odesoz/2/

2. 清除浮动
其实平常我们使用的清除浮动的技巧,也就是利用了 BFC 的原理。
浮动元素导致父级元素的高度塌陷,此时触发父级元素的 BFC,因为

创建了 BFC的元素就是一个独立的盒子,里面的子元素不会在布局上影响外面的元素,反之亦然,同时BFC任然属于文档中的普通流。

其实这句话挺不好理解的,按我的理解,就是这个元素触发了 BFC 然后它就需要按它的行为来,不管里面的元素是什么样子的。不管你浮动不浮动,我多大我就是多大。所以讲浮动闭合(清除)了。
到这里,其实另一点也就呼之欲出了,那是什么呢?就是 只要是可以使父级元素触发 BFC 的特性,都可以闭合浮动。这些就是闭合浮动的原理。(参考

例子可看:http://jsbin.com/odesoz/5/(清除浮动), http://jsbin.com/odesoz/7/ (未清除浮动)

3. 块级格式化上下文不会重叠浮动元素
其实也就是如果有浮动元素和 BFC 一起的话,BFC 元素,会表现为有宽高的样子。具体请看这篇文章的 3.3,因为我觉得这里写的会比我写得好。而且配图也不错。

那么到底神马是 BFC 呢? (其实这些不想写来着,网上那么多,但还是加深印象吧)

其实说的简单点,就类似于在一个环境中的好几个 display:block 的元素所产生的相互影响的原理和表现。

比较专业的说法就是:它能把一个集合中的 float, margin, clear 等等的各种元素包裹,形成的一个集合就为 BFC , BFC 中的任何都不会对 BFC 外的元素产生影响。
通俗地来说:创建了 BFC 的元素就是一个独立的盒子,里面的子元素不会在布局上影响外面的元素,反之亦然,同时 BFC 仍然属于文档中的普通流。
在普通流( Normal flow )中,在创建了块格式化上下文的元素中的子元素都会按照块格式化上下文提供的规矩来排列自己,除非自己也创建一个新的块格式化上下文。

如何触发块级格式化上下文(BFC)?

1
2
3
4
5
6
7
8
    float:left|right ,除了none
    overflow:hidden|auto|scroll(也就是除了overflow:visible;position: absolute|fixed
    display:inline-block|table-cell|table
    fieldset 元素
    表格的单元格(display: table-cells,TD、TH)
    表格的标题(display: table-captions,CAPTION)
    表格元素创建的 “匿名框” 。(display:table 之后创建的匿名框 http://www.w3.org/TR/CSS21/tables.html#anonymous-boxes)

虽然 IE6 7 不支持 BFC,但是在他们中有一个类似的概念 hasLayout。触发hasLayout的条件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    position: absolute 
    float: left|right 
    display: inline-block 
    width: 除 “auto” 外的任意值 
    height: 除 “auto” 外的任意值 (例如很多人清除浮动会用到 height: 1%  ) 
    zoom: 除 “normal” 外的任意值 (MSDN)
    writing-mode: tb-rl (MSDN)
  在 IE7 中,overflow 也变成了一个 layout 触发器:
    min-width:任何值
    min-height:任何值
    max-width:除了none之外的任何值
    max-height:除了none之外的任何值
    overflow: hidden|scroll|auto ( 这个属性在IE之前版本中没有触发 layout 的功能。 )
    overflow-x|-y: hidden|scroll|auto (CSS3 盒模型中的属性,尚未得到浏览器的广泛支持。他们在之前IE版本中同样没有触发 layout 的功能)

其他一些知识点,请参考引用文章中的那几篇引用文章。

如论如何,还是不习惯 Ubuntu 的 Unity 桌面,捉摸着怎么将此桌面换成之前熟悉的 Gnome 呢,搜了一大圈互联网,终于在这篇文章里面找到了方法,试了试,还不错,只是没有删除 Unity 的方法,不过这个并不重要,删不删都无所谓。

稍微翻一下,以后用得着,别人也可以用。

1. 先安装 Gnome Packages。

打开终端,输入

1
sudo apt-get install ubuntu-gnome-desktop ubuntu-gnome-default-settings

此时如果出现选择 GDM 或者是 LightGDM 的话,请选择 GDM。

如果,你已经使用了 GDM 或者系统没有出现选择设置的界面,或者你选择了使用 LightGDM 的话,那么你可以使用下面的命令来重新设置。

1
sudo dpkg-reconfigure gdm

当然,不是非要一定使用 GDM 的,也可以使用 LightGDM 但是这样就不能体验完整的 Gnome 3 了。

同时,最好可以将 ubuntu-setting 这个包给删除掉(我没有删除,用的没有问题)。至于这个包是干嘛的,这里就不翻译了,反正说的是删不删对使用都没有影响。不过删除了之后,某些 ubuntu 默认的设置就会被改变,例如窗口的按钮顺序, Rhythmbox 插件也是靠这个包来启用的。

这样就完了,接下来的是可选的步骤。

2. 安装一些其它的 Ubuntu 的包,例如 GNOME Documents 和 Boxes(做了这一步,但是基本没用,我也不知道干嘛的)。

1
sudo apt-get install gnome-documents gnome-boxes

注:因为一个 bug boxes 只在 64位上才可用,32位这里就不要装了。

3. 更新 GNOME Control Center, Nautilus, Totem 以及其他的 GNOME 3 packages 到 3.6.x(这一步也没有做)

不过要先加一个 PPA 才行。

1
sudo add-apt-repository ppa:gnome3-team/gnome3

然后请遵循这个文章,或者用系统更新来安装。

如果安装了 PPA 之后,有些包将会被更新为: GNOME Control Center 3.6.3, Aisleriot 3.6.0, Brasero 3.6.0, Nautilus 3.6.3 以及 Totem 3.6.2.这个 PPA 同样提供了 Transmission 0.7.1, Transmageddon 0.23 以及 Sound Juicer 3.5.0(至于这些软件都是干嘛的,我也不知道,我没有用,没有做到这一步,也就没有更新)。

4. 删除 overlay scrollbars(这一步也没有做)
到这一步,基本就完成了,但是这里使用的还不是 Gnome 的 overlay scrollbars 而是 Ubuntu 自己的,所以通过下面的命令,将 Ubuntu 自己的 overlay scrollbars 删掉,从而使用 Gnome 3 的。

5. 然后就是重启了,当然注销也可以,只是注销看不到登陆界面的效果。