作者归档: 童燕群

WordPress博客添加“返回顶部”按钮

“返回顶部”在网页页面上非常实用。一般主题都没有自带该按钮。可以自己DIY一个。

添加步骤,打开博客的后台管理,依次进入“外观”,“编辑”,打开“footer.php”,在最后一个</div>与</body>之间添加如下代码,注意替换图片地址(斜体部分)以匹配特定主题。

<div id="full" style="width:88px; height:88px; position:fixed; right:0px; 
    bottom:0px; margin-left:0px; margin-bottom:0px; z-index:100; text-align:center; cursor:pointer;">
  <a>
    <img src="https://cdn.codefine.site:5443/wp-content/themes/thematic/gallery/totop2.png"
    border=0 width="55px" width="55px" alt="返回顶部">
  </a>
</div>
<script type="text/javascript">
  var isie6 = window.XMLHttpRequest ? false: true;
  function newtoponload() {
    var c = document.getElementById("full");
    function b() {
      var a = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
      if (a > 0) {
        if (isie6) {
          c.style.display = "none";
          clearTimeout(window.show);
          window.show = setTimeout(function() {
            var d = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
            if (d > 0) {
              c.style.display = "block";
              c.style.top = (400 + d) + "px"
            }
          },
          300)
        } else {
          c.style.display = "block"
        }
      } else {
        c.style.display = "none"
      }
    }
    if (isie6) {
      c.style.position = "absolute"
    }
    window.onscroll = b;
    b()
  }
  if (window.attachEvent) {
    window.attachEvent("onload", newtoponload)
  } else {
    window.addEventListener("load", newtoponload, false)
  }
  document.getElementById("full").onclick = function() {
    window.scrollTo(0, 0)
  };
</script>

 

本站效果截图:

未命名23

| 1 分2 分3 分4 分5 分 (5.00- 4票) Loading ... Loading ... | 归档目录:建站技术, 移动互联, 软件技术 | 标签: , , |

DRBD远程实时双机热备系统配置完全手册

今天本来想按照之前的计划,分析一下drbd的源码,看到/proc/drbd文件的实现方式时,就想打开drbd服务切实看一下,结果发现几年前配置过的drbd已经不能再使用了,还是先把配置过程完整再尝试一下,以便记录在这里分享出来。

首先需要准备两台虚拟机,可以使用vmware或者virtualos。本文主要针对drbd的配置和使用过程,虚拟机安装部分不作详述。

步骤:

(一)安装虚拟机

安装配置Linux OS,目前桌面版的Linux系统都是免费的,可以很容易获取到安装镜像源。常用的有:Ubutun、Fedora和OpenSuse,可以自行选用。

(二)给虚拟机配置网络

最好都能上外网,以便下载安装常用软件包。

(三)安装drbd软件

上述的Linux桌面发行版自带的安装源中都能找到drbd的安装包。如果没有,那么需要自行下载源码编译安装,这样安装过程中一般会出现不少问题,Google或者百度能解决。

这里以我的两个虚拟机为例:
visual_machine_linux 
在做drbd实验之前,需要对虚拟机做快照备份,防止中途OS崩溃无法启动后可以回退。

系统配置:
虚拟机1
[root@t ~]# hostname
t
[root@t ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:07:3D:A8
inet addr:192.168.1.104 Bcast:255.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe07:3da8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:280652 errors:0 dropped:0 overruns:0 frame:0
TX packets:2326851 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26215565 (25.0 MiB) TX bytes:3493042943 (3.2 GiB)
Interrupt:19 Base address:0x2024

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@t ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.1.104 localhost.localdomain localhost localhost t
::1 localhost6.localdomain6 localhost6
192.168.1.106 Shentar

192.168.1.104 ME

[root@t ~]#

虚拟机2
[root@Shentar /]# hostname
Shentar
[root@Shentar /]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0C:29:39:C4:28
inet addr:192.168.1.106 Bcast:255.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe39:c428/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2327200 errors:0 dropped:0 overruns:0 frame:0
TX packets:280717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3492827412 (3.2 GiB) TX bytes:26300053 (25.0 MiB)
Interrupt:19 Base address:0x2024

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@Shentar /]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.1.106 localhost.localdomain localhost localhost Shentar
::1 localhost6.localdomain6 localhost6
192.168.1.104 t

192.168.1.106 ME

(四)在配置好了虚拟机之后,给每个虚拟机增加一块硬盘,用作drbd的镜像源。

准备供drbd管理的磁盘,对于虚拟机很方便,直接添加硬盘即可。添加步骤:

  1. 打开虚拟机的设置对话框:

    wps_clip_image-26891
  2. 点击add按钮

    wps_clip_image-27328
  3. 一路next即可。
  4. 添加完成后的虚拟机配置如下:

    wps_clip_image-27459 
    启动虚拟机

    使用fdisk -l命令会发现系统中多了一块硬盘设备:

    [root@Shentar ~]# fdisk -l

    Disk /dev/sdc: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x00000000

    Disk /dev/sdc doesn't contain a valid partition table

    注:这里的显示内容中已经将其他无关的磁盘信息删除。
  5. 对新加的硬盘创建分区,按照如下步骤执行即可:
    [root@Shentar ~]# fdisk /dev/sdc

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-391, default 1):
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-391, default 391):
    Using default value 391

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@Shentar ~]# fdisk -l

    Disk /dev/sdc: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x2a28d263

    Device Boot Start End Blocks Id System
    /dev/sdc1 1 391 3140676 83 Linux

(五)配置drbd.conf文件

两台虚拟机都配置完毕后,可以配置drbd.conf文件了。我的两台虚拟机的配置文件如下

[root@Shentar ~]# cat /etc/drbd.conf 

#
# please have a a look at the example configuration file in
# /usr/share/doc/packages/drbd.conf
#
resource r0 {
protocol C;

startup {
wfc-timeout 2000;
degr-wfc-timeout 6000;
}

syncer {
rate 50M;
}

disk {
on-io-error pass_on;
}

on Shentar {
device /dev/drbd2;
disk /dev/sdc1;
address 192.168.1.106:7789;
meta-disk internal;
}

on t {
device /dev/drbd2;
disk /dev/sdc1;
address 192.168.1.104:7789;
meta-disk internal;
}
}

两台虚拟机的配置完全一样即可。

 
(六)创建drbd资源

执行如下两条命令创建drbd资源:

[root@Shentar ~]# drbdadm create-md r0

[root@t ~]# drbdadm create-md r0

其中r0是配置文件中指定的资源名。

(七)初次启动drbd

  • 启动两台虚拟机上面的drbd服务。

/etc/init.d/drbd start

先启动的一台虚拟机会等待另外一台,一直停留在如下等待画面:

[root@t ~]# /etc/init.d/drbd start

Starting DRBD resources: [ d(r0) s(r0) n(r0) ]..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
reboot the timeout is 6000 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
expire after 2000 seconds. [wfc-timeout]
(These values are for resource '
r0'; 0 sec -> wait forever)
To abort waiting enter '
yes' [ 30]:

等待另一台启动后,会自动完成启动。

  • 查看系统进程,会发现多了3个drbd相关的进程:
[root@t ~]# proc

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S< 0 0:00 [kthreadd]
2 2966 0 0 ? -1 S 0 0:00 \_ [drbd2_worker]
2 2975 0 0 ? -1 S 0 0:00 \_ [drbd2_receiver]
2 3014 0 0 ? -1 S 0 0:00 \_ [drbd2_asender]

我的理解,drbd2_worker为本地磁盘管理内核线程,drbd2_receiver为接受对端同步数据的线程,drbd2_asender为本地发送数据到对端内核线程。

此时,使用drbd内核线程的状态,会发现二者已经建立联系:

[root@t ~]# cat /proc/drbd 

version: 8.3.5 (api:88/proto:86-91)

GIT-hash: ded8cdf09b0efa1460e8ce7a72327c60ff2210fb build by root@t, 2010-05-22 10:36:02

2: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:3140544

检查drbd是否创建了设备drbd2:

[root@t ~]# l /dev/drbd2 

brw-r----- 1 root disk 147, 2 2013-07-14 16:04 /dev/drbd2

[root@t ~]#

说明drbd的磁盘设备已经创建成功了。

/proc/drbd 文件是内核线程写的,当用户态打开该文件时,内核线程会将此时本端监控到的连接状态反馈给用户。PS:从这里可以看出,我的drbd是在2010年编译安装的,这个时间也够久远了。

到这里已经可以确认drbd安装、配置成功了。

但是还需要强制指定一端为主,并在新的drbd设备上面创建文件系统,方能挂载到系统使用。

  • 在其中一个节点执行如下命令,强制置主:

[root@t ~]# drbdsetup /dev/drbd2 primary -o

此时再查看drbd的工作状态,会发现两台主机的drbd之间已经在同步数据了,同步速度为50M/s,这个速度是配置文件中指定的。


[root@t~]#cat/proc/drbd
version:8.3.5(api:88/proto:86-91)
GIT-hash:ded8cdf09b0efa1460e8ce7a72327c60ff2210fbbuildbyroot@t,2010-05-2210:36:02
2:cs:SyncSourcero:Primary/Secondaryds:UpToDate/InconsistentCr----
ns:372792nr:0dw:0dr:380960al:0bm:22lo:1pe:13ua:256ap:0ep:1wo:boos:2768160
[=>..................]sync'ed:12.0%(2768160/3140544)K
finish:0:01:06speed:41,376(41,376)K/sec

不必等待同步完成,已经可以在主端创建文件和使用了,但是在数据同步完成之前不能倒换或者强制重启的动作,否则会出现主备数据不一致的问题,导致“脑裂”出现。

数据同步完成后,状态显示为:


[root@t~]#cat/proc/drbd
version:8.3.5(api:88/proto:86-91)
GIT-hash:ded8cdf09b0efa1460e8ce7a72327c60ff2210fbbuildbyroot@t,2010-05-2210:36:02
2:cs:Connectedro:Primary/Secondaryds:UpToDate/UpToDateCr----
ns:3140544nr:0dw:0dr:3140544al:0bm:192lo:0pe:0ua:0ap:0ep:1wo:boos:0

  • 对drbd虚拟设备做文件系统:

[root@t~]#mkfs.ext3/dev/drbd2
mke2fs1.40.8(13-Mar-2008)
Warning:256-byteinodesnotusableonoldersystems
Filesystemlabel=
OStype:Linux
Blocksize=4096(log=2)
Fragmentsize=4096(log=2)
196608inodes,785136blocks
39256blocks(5.00%)reservedforthesuperuser
Firstdatablock=0
Maximumfilesystemblocks=805306368
24blockgroups
32768blockspergroup,32768fragmentspergroup
8192inodespergroup
Superblockbackupsstoredonblocks:
32768,98304,163840,229376,294912
Writinginodetables:done
Creatingjournal(16384blocks):done
Writingsuperblocksandfilesystemaccountinginformation:done
Thisfilesystemwillbeautomaticallycheckedevery38mountsor
180days,whichevercomesfirst.Usetune2fs-cor-itooverride.

注意,文件系统只在一端做即可,另一端会在数据同步完成后就自动有文件系统了。同样创建的文件的权限也会同步到对端。因此两边操作系统的同名用户的用户id和组id也要完全一样,否则会出现同名用户创建的文件到了对端后出现该用户无法访问的问题。该问题在不指定用户id创建系统用户时比较容易出现,也比较隐藏。

  • 现在就可以挂载使用drbd的虚拟磁盘设备/dev/drbd2 了。

[root@t/]#mkdirdrbd2/
[root@t/]#mount/dev/drbd2/drbd2

无出错提示,则挂载成功。

下面就可以在用户态下使用drbd的分区了。

  • 做一个最简单的试验,在主节点创建一个文件,然后倒换到备,在备上面查看该文件:

[root@t/drbd2]#echo'hellodrbd!'>./justatest.txt
[root@t/drbd2]#catjustatest.txt
hellodrbd!
  • 然后倒换drbd。

在主端执行如下命令:


cd/
umount/drbd2
drbdadmsecondaryall
[root@t/drbd2]#cd/
[root@t/]#umount/drbd2
[root@t/]#drbdadmsecondaryall
[root@t/]#cat/proc/drbd
version:8.3.5(api:88/proto:86-91)
GIT-hash:ded8cdf09b0efa1460e8ce7a72327c60ff2210fbbuildbyroot@t,2010-05-2210:36:02
2:cs:Connectedro:Secondary/Secondaryds:UpToDate/UpToDateCr----
ns:3256620nr:0dw:116076dr:3140673al:41bm:221lo:0pe:0ua:0ap:0ep:1wo:boos:0
[root@t/]#

在备端执行如下命令:


[root@Shentar/drbd2]#drbdadmprimaryall
[root@Shentar/]#mkdir/drbd2
[root@Shentar/]#mount/dev/drbd2/drbd2

然后再查看备端的文件是否同步成功:


[root@Shentar/drbd2]#cd/
[root@Shentar/]#cd/drbd2/
[root@Shentar/drbd2]#catjustatest.txt
hellodrbd!
[root@Shentar/drbd2]#

可以看到备端没有作文件系统,但是可以直接挂载磁盘,并打开主端同步过来的文件。

 (八)后面就可以在drbd上面架数据库或者其他对文件持久化要求比较高的应用了。

Drbd在文件系统下层,直接管理块设备的块,因此如果是上层应用自身将数据结构破坏,那么坏的数据也会被同步到对端。如果是一端磁盘损坏,那么倒换后,也许数据还是好的,可以继续起上层应用,起到容灾的作用。Drbd不会自动倒换,需要在双机控制应用程序中写监控和倒换脚本来控制。

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 归档目录:DRBD, 软件技术 | 标签: , , |

Netty和Jetty的Java NIO 网络框架模型分析

Netty的NIO框架模型。在以前的文章中,为解决Jetty的问题,分析过Java NIO基于多路事件分离器的异步IO框架模型。一直都没有系统分析Netty和Jetty的网络模型,这两天将二者的网络框架部分的代码仔细读了一下,整理了二者的网络模型,画出了Netty的模型图:

netty_network_frame_model

在图中,每个侦听都会创建一个Acceptor Reactor,由Boss线程来监控多路分离器,这里只关注连接事件,当有新的建立连接请求达到时,该线程会第一时间响应,将接收到的请求注册到事件多路分离器中,事件多路分离器有多个,默认情况下其个数为CPU核心数的两倍,应该是CPU超线程的数目。这里会给每一个达到的连接编一个序号,将序号对分离器个数取模(hash到0~3的一维空间),根据模值分配给相应的分离器。事件分离器开始监听新的连接上面的读写事件。检查线程为NioWorker。读写数据会通过回调用户注册的handler的相应接口来实现。因此,处理耗时数据的情况下,需要用户将其提交给后台线程,而不应该阻塞事件分离器,否则会导致新的连接无法建立,其他并发请求无法处理。

Jetty在代码风格上面跟Netty差别很大,看jetty代码感觉更清晰一点,可能是因为以前处理问题已经看得非常多了。前面的文章也说过,Jetty是在一个线程中调用一个同步的accept()方法来等待新的连接请求,等到新的连接到来时,就生成新的change事件放到多路分离器中,同样也是有多个多路分离器,选取原则与Netty完全一样。简单的轮询实现负载均衡。这是典型的半同步半异步(Half-Sync/Half-Async)的模式。在只使用1个事件分离器时,会发现分发线程通常会引入很多问题。前面两篇文章中提到的问题分析都跟这个有关。

不知道Jetty与Netty为什么在接受新请求这里有差别,难道Netty的方式更利于处理短连接,而Jetty则更利于处理长连接,比如Http连接?优待进一步的并发测试才能说明问题。如果netty的方式很好,那么Jetty应该也早就改成了该方式。

| 1 分2 分3 分4 分5 分 (5.00- 9票) Loading ... Loading ... | 归档目录:IO编程, Jetty, Netty | 标签: , , |

班车即将涨价

diao丝听闻班车涨价,旋即入手白色5系一辆————单车。掐指一算,这得半年才能骑回成本。#生命在于折腾#

DSCF0028

| 1 分2 分3 分4 分5 分 (4.80- 5票) Loading ... Loading ... | 归档目录:生活札记 |

分布式存储知识学习清单(完善中)

分布式存储是云存储和云计算的基石。没有特别深入的存储基础知识,但是对分布式存储比较感兴趣。希望以不同的开源存储系统的架构特点和细节组成一条学习的主线,以点带面的掌握主流的架构、算法和适用场景。

1、DRBD

1)磁盘IO的截获和处理流程;
2)同步和异步IO复制流程
3)内核态与用户态交互流程
4)文件系统、VFS和块IO之间的关系

2、Ceph

1)对象接口
2)分布式存储的元数据与数据节点分离架构

3、VFS

1)内核知识点
2)本地文件系统

4、关系数据库

1)PostgreSQL、Sqlite,SQL语法,DB文件组织的数据结构

5、算法

1)PAXOS算法:Chubby、BigTable、GFS论文
2)NoSQL、Cassandra、Voldemort,节点间消息通讯模型,多副本一致性保障。
3)CAP定理相关

| 1 分2 分3 分4 分5 分 (4.80- 10票) Loading ... Loading ... | 归档目录:C/C++, Java, Linux内核, 算法数据结构 |

温习一下AIO编程,AIO编程简单实例

完成端口(AIO)是Windows下开发多并发网络连接、异步服务器程序的最常用方案。JDK 1.7版本引入了AIO的相关封装。这里把之前写过的一个AIO例子发出来温习一下。为下一步分析JDK的AIO做一些准备工作。

下面的例子是AIO与线程池结合的例子,每个连接在建立之后即调用一次receive方法,这里的receive是不阻塞主线程的继续运行接受其他连接的。可以把这个调用想象成一个事件注册的过程,告诉内核对象,我关心这样的读取数据事件,当数据过来时,先把它收下来,放到之前用参数指定的内存缓冲区中,然后通知一下我就可以了。子线程就在等待数据接收完成的完成端口上面等待,直到数据接收完成,处理数据。让繁杂的数据接收拷贝过程交给内核对象去完成。使得线程管理和编程更加简单。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.80- 5票) Loading ... Loading ... | 归档目录:C/C++, IO编程 |

再游西冲

于2011年8月15日,深圳坂田。

因为三年前的时候已经去过一次西冲了,这次活动本来是非常不想去的。就像上一次去的时候一样,也是因为刚到新的部门,也想同大家多认识一下,还是在主管的一再要求下,最后还是报名了。居然没弄明白活动内容和行程,误以为是两天的活动,有点尴尬。

有点意外的是,这次活动与以往的出游、聚餐、游戏的主题不一样,居然是所谓的拓展,以前只听说过这个,还是第一次参与。

上午10点左右,刚到目的地就开始拓展,在一个空旷的草地上,头上烈日如火,应该有35度以上的高温,大家一起完成各种团队协作活动,有点难受的感觉,不过机会也挺难得的,从毕业工作后,就再也没有过这样锻炼机会了。更让人感动的是,员工家属也跟员工一起参与每一项活动。

下午海滩边的真人丛林CS,海滩自由活动,就显得轻松多了。晚上的啤酒、烧烤很不错,只是跟三年前相比,少了很多新鲜感。第一次“出海”,登上了情人岛,只能从岛上回头看整个海滩的全景,却没有面向岛的另一端的视野。很想看看一望无际的大海是什么样子。随着烧烤逐渐开展,不觉天色也暗了下来。一轮明月伴着海潮,从岛旁边的海平面逐渐升起,与海平面的小岛相呼应,看到这一景,真正体会到了诗人描绘“海上明月共潮生”的壮观。

总的说,一天的时间,挺丰富的,也还算轻松。

整整三年了,两次西冲之行竟是如此的相似,刚入职部门,一个完全陌生的团队,一样的茫然。不同的是感觉现在的发展有无限多种可能,而不是局限在一个一团死水一般的小范围之中。一个团队过长时间没有新的血液加入没有流动,就会陷入一种家长制和内耗中去。重新开始一个全新的工作,就像又一张白纸摆在了自己面前。现在也具备了描绘这张白纸的能力,知道自己想要的工作方式是什么,而不是等待着别人的安排。

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 归档目录:生活札记 | 标签: , , |

借物的阿莉艾蒂

写于2011年7月24日,深圳坂田。

很长时间都没有像现在这样静下来看部片子了,昨天把《借物的阿莉艾蒂》看完了。故事情节很简单,结局也没有太出乎意料,情理之中吧,但总觉得还缺少点什么,又找了几篇影评,总的说是部好片。

影片一开始就出现不和谐的一面,乌鸦和猫应该都发现了小阿莉艾蒂,应该是为了争夺“猎物”打起来,让人有种不安的感觉,外面的世界对于小人族来说危险重重。直到出现小阿莉艾蒂回家的路上与愤怒的肥猫道别、从窗户翻进卧室的温馨画面出现,悬着的一颗心才落了地。

阿莉艾蒂妈妈出场的时候,表情有点夸张,差点被雷到了。

后面的故事围绕着方糖展开,翔送方糖并附上几个字,影片中没有看到翻译,想应该是“你掉的方糖”的意思。后面送上花儿的时候也附上了几个字,应该是“我想见你”吧。

阿莉艾蒂还方糖的时候,隔着纱窗,两人第一次语言交流,似乎不只是阿莉艾蒂来还方糖并告诉翔不要干预他们一家的生活这么简单。乌鸦又一次出场,缓解了尴尬局面,阿莉艾蒂被翔救了下来,本想后面应该是两个人倾心而谈,最后致谢离去呢。没想到是女主人公惆怅地看着男主人公惆怅地看着手里的树叶却没有看到自己,然后女主人公悄然离去。看到这一幕,心底似乎有什么被触到了。

后面不幸的“拆迁”还是发生了,阿莉艾蒂妈妈被春姨抓走,阿莉艾蒂与翔默契配合解救妈妈的过程将故事推向了高潮。

土著小人的出现,让人觉得有点意外,似乎也带来了更多的喜感,呵呵。
最后,小阿莉艾蒂与翔道别,互换礼物,挥泪离去的一幕着实让人感动了一下。

终于在富于野外生存经验的土著小人的帮助下,阿莉艾蒂一家开始了漫漫搬家旅程。浆果,鱼儿,这些画面的出现,让人相像他们以后的生活应该也会非常快乐的。而翔也迎来了早上的第一缕阳光,似乎预示着他在手术后也会好起来。总算是一个不算完美的完美结局。

试想一下期待的完美结局,阿莉艾蒂一家住进了翔的祖父辈从英国定制的小人居里,和翔一家一起过着和谐相处的生活,处处能够得到他们的保护与帮助,但是这样他们又属于什么关系呢,寄居更或者是饲养关系?我想都不好吧。而且,现实中应该更多的是像春姨这样对小人族怀着好奇与仇恨的人,是容不下小人族的。也许别人安排好的路看上去很顺畅,但是并不一定是最适合自己的,幸福还是需要自己去创造。

| 1 分2 分3 分4 分5 分 (5.00- 7票) Loading ... Loading ... | 归档目录:生活札记, 观影随想 | 标签: , , |

SkyDrive、DropBox和Google Drive三大公有云存储服务对比

严格意义上说,iCloud相对较为封闭,不算是通用的云存储。上面三种云存储应用,笔者都有使用,就各自的优缺点说一下使用的感受。

SkyDrive还是同Windows绑定太紧密,客户端只支持在Windows Vista SP2以上版本上面安装,XP用户就只能通过网页手动同步,无法体验本地文件夹与网络文件夹的自动同步。自动同步功能还是非常有用的,如:在iPad上面的照片可以很快上传到网络上面,然后在PC上面查看。反之亦然。在自动同步上面做得最好的应该是DropBox,但是DropBox只有2G的免费空间,这个显得有点寒碜。同时DropBox几乎支持目前的所有操作系统。

GDrive在国外应该是很不错的应用,与GoogleDocs天然绑定,15G的共享空间,但是非常无赖,国内还要修改本地的hosts文件来访问,并且修改之后也不稳定。这里提供一个可用的hosts文件配置:

文件路径:C:\Windows\System32\Drivers\etc\hosts

在文件末尾加入如下内容:

173.194.38.128 drive.google.com
203.208.46.180 docs.google.com
203.208.46.180 0.docs.google.com
203.208.46.180 1.docs.google.com
203.208.46.180 2.docs.google.com
203.208.46.180 3.docs.google.com
203.208.46.180 4.docs.google.com
203.208.46.180 5.docs.google.com

再就是移动设备上面,不能支持多媒体文件的播放。而其他两种都可以支持本地播放器播放临时文件。

在快速分享存储内容上面,三者都大同小异。基于账户,基于隐秘链接,公开给所有人三种都有实现。

对于文件历史版本备份,三者都能保存一定时间的文件的历史版本,GoogleDrive和DropBox还带有回收站,误删文件可以从回收站中找回。

相信随着互联网业务发展的日新月异,用户的增多,空间、平台、收费与否都不是问题。阻碍信息流通的产品设计会越来越少。

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 归档目录:移动互联 |

华为终端最近挺热闹

酝酿了3个多月的华为Ascend P6终于在伦敦Roundhouse亮相,这一次在宣传和营销上可谓做足了功夫。昨晚失眠,索性就把发布会的视频翻出来过了一下。并没有微博和各个消费电子门户上面造势的那样惊艳,只能说是一部普通的手机罢了。牺牲了电池容量和本可以在去年就发布的时间点,换来了6.18mm的超薄厚度。K3V2始终是一个硬伤,这次发布会中没有强调P6是用的K3V2E。高通的骁龙系列都从4核心1.2GHZ发展到了枭龙800的4核心2GHZ+,覆盖了低中高端的所有需求。而华为的终端机型,无论处于哪个档次,一直使用K3V2,这样的做法让人看不出终端开始走向高端的趋势。

22257642_1371567595555_500

1.5GHZ 4核心CPU,720P HD 4.7英寸屏,2000mHa电池,前置500W像素、后置800W像素摄像头,2GRAM,从配置上面看不到任何“旗舰”的标志。这些配置都是去年的主流配置,在今年Q3相信各大厂商都会推出新的主流配置手机,这个配置会被甩到很远,而正是那时,P6才放量上市。加上细节问题百出的不争气Emotion UI,相比之下,恐怕消费者不会把P6放在首选的位置。余总承东1000万的销售量恐难以达到。

 

再来看一下,一直作为卖点的超薄、外观设计。不得不承认,P6的外观设计颠覆了之前的华为手机外观的印象。同事常笑谈,手机像情人,如果一个手机只是屏幕非常非常大,如美腿(Ascend Mate),只是厚度非常非常薄,如P6,就好象一个男人在夸她家的妹子胸大,只有胸大,相信没有人认为这是每个人都喜欢的美。外观设计的确比较出众,但是要想到这是一个“1000多人跨部门合作”的成果,这样外观必然是有一些标杆参照的,否则必然是一个各方妥协没有一致性的怪物。仔细看一下P6的外观,正面上方可以说是iPhone5的,下方是索尼一直坚持的双C倒角造型。金属外壳,可以看出为了打造旗舰,舍出了血本。2688的价格,如果真像发布会上面与S4和iPhone5对比的那样,那么也算是良心价了。这个价格应该是吸取了Ascend D2初期定价过高的教训,但是仍然过高了,相信不出一个月会有大幅的跳水。

 

总的来说,还是可以看到进步的,希望P6是一个终端的转折点,以P6为基础,将配置与主流机型拉齐打造出真正的旗舰。

| 1 分2 分3 分4 分5 分 (4.83- 6票) Loading ... Loading ... | 归档目录:数码硬件 | 标签: , , |