<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>江.雪.儿 SnowRivEr</title>
	<atom:link href="http://snowriver.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://snowriver.org/blog</link>
	<description>SnowRivEr&#039;s online home</description>
	<lastBuildDate>Mon, 14 May 2012 04:50:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>人生在于折腾-找房子</title>
		<link>http://snowriver.org/blog/2012/05/12/apartment/</link>
		<comments>http://snowriver.org/blog/2012/05/12/apartment/#comments</comments>
		<pubDate>Sat, 12 May 2012 08:54:11 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[瑞典生活]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=675</guid>
		<description><![CDATA[昨天刚签了租房子的协议。小公寓房，2室，65平米使用面积。房子在一个小岩石山坡上，边上有些树，从阳台上可以看到一点海。 打开看大地图]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2012/05/12/apartment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>人生在于折腾-到瑞典工作</title>
		<link>http://snowriver.org/blog/2012/05/12/lifeinturbulance/</link>
		<comments>http://snowriver.org/blog/2012/05/12/lifeinturbulance/#comments</comments>
		<pubDate>Fri, 11 May 2012 21:31:31 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[瑞典生活]]></category>
		<category><![CDATA[瑞典]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=669</guid>
		<description><![CDATA[在上海呆了7年，每天来回穿过整个上海。有点厌倦了这样的生活。决定到国外呆几年。具体呆几年，也无法确定。反正到了该折腾的时候了。这是否是最后一次折腾，几年之后还能不能折腾的动，我也不知道。 在申请了几个职位之后，瑞典的这个职位最先下来。那就到瑞典来了！在瑞典曾经出差呆过半年，这儿清新、宁静、安逸的环境是我喜欢的；免费的教育、医疗是我向往的；孤独无聊的生活也是需要我忍受的。 拿到了这边的合同和offer后开始办各种手续。折腾哪！下面的这些手续记录，如果也有朋友办类似的事，可以参考一下。 到公证处证明老婆孩子的亲属关系！到底要哪些资料？那得看具体谁办了，反正把所有相关的都带上总没错。我在凤阳路660号的东方公证处公证，地铁2号线南京东路出口 到了公证处之后，问我是要证明“复印件和原件一致”还是“直接证明关系”。是要“瑞典语”还是“英语”，瑞典语翻译不但贵而且慢。这可是我去之前没有考虑到的！想问前一阵子到瑞典工作的同事又不好意思打电话，半夜啊！瑞典大使馆咨询又只有下午3-5点。回公司再来一趟吧 问了大使馆，说哪种格式都可以。问了同事，他是办直接关系证明，英语翻译，并且老婆孩子只要在一起一份就可以了。而且办公证的时候需要告诉他们需要外事处认证。再跑一趟公证处 几天后拿到公证。自己不能拆。跑到外事处认证。 准备好了在移民局网上申请。资料要亲属关系公证、护照（小孩也要）、出生证、结婚证、合同、Offer。付款的时候怎么都付不成功。让有瑞典银行卡的同事帮忙付款才成功。 网上申请好了之后，拿到一个check number。 再到移民局网上咨询的地方问Case Number。然后可以用Case Number可以在网上查询到状态 第二天收到移民局的邮件说settled。这是有史以来最快的一次，官方说法可是有可能要6个月的，上一个同事就等了一个月 和大使馆预约拍照，采集指纹 几周后可以拿UT卡，就是工作许可和居住许可在一起的一张卡。我拿上老婆孩子的护照去拿，说不行，要么自己领，要么要证明关系的东西 过两天拿着公证再次造访，拿到老婆孩子的UT卡 陪老爸老妈到出入境管理处办护照 到公证处那一张表格，用于让档案处填证明关系的。 到档案所在地让证明关系，所谓的证明关系就是根据我以前填过放在档案里的东西，写一个东西。多年前把老妈的名字写成了同音字。怎么办呢，打电话给公证出，说就写老爸一个人的吧 再到公证处证明我是我老爸老妈的孩子，怪！公证员说，同音字没有关系，你再去档案处办一下吧。小鬼难缠哪，有一小点权利都要用到极致 第二天，在自己动手丰衣足食后。办了老爸老妈公证。 再次到外事处公证 国内部分手续告一段落。接下来到瑞典部分。手续也不少，但是人家的小鬼态度都很好，虽然都会按章办事 到瑞典之后第一步就是到税务局办Personal Number。税务局好像叫Skateverket，应该每个城市都有。办的时候要护照、UT卡、合同、Offer。这个税务局说要4-6周，可能两周就够了。可以多到税务局问，反正人家态度好 接下来赶紧开始看房子，blocket.se上有很多。瑞典的很多政策和居住地点密切相关，没有固定出差地点可能会有问题 拿到Personal Number之后，在税务局注册医疗。办理ID卡，没有个人居住地点可能会有问题。ID卡的通知会发到邮箱里，而邮递员会看是否有你的名字。只有拿到通知后才能到税务局拿ID卡。上面写一个c/o(Care of的意思)公司的名字可能会有点用 到银行办张卡，要不然工资没法打进来。瑞典有些银行要预约，曾经打电话给SEB预约，没有回应。在Handelsbanken办了一张卡。也办了网上银行 在瑞典有很多类型的福利，有些是类似免税，有些是公司补贴。现在我听说的有下面这些。 上学免费 医疗基本免费 午饭有一张卡可以用，公司好像会出800块一个月。好像在超市里买午饭类的东西也可以用。 运动类补助。具体没用过 上面还说有一个车补什么的，还没有搞明白 小孩学习东西，像羽毛球啊！很便宜，只要几百块一个学期 每个小孩有1050每个月的补助 小孩挺小就可以放到Day Care去，可以从早上七八点一直放到下午四五点 听说生一个小孩也有多少补助的。有很长时间的产假和陪产假 成人全职学习好像还可以拿钱的。 如果失业了，第一年好像可以拿80%的薪水，政府出的 买房子首付15%，还有10%需要在10年内付清，其余可以付利息。利息可以退税 听说请人干活也可以退税，不知道是请个人还是必须是公司 公司配了一个手机，可是申请一张额外的SIM卡。可以用那张SIM卡在家里3G上网，因为公司签的协议是无限数据流量，所以无所谓 Massage，公司内部就有，听说是公司出150，自己出150，没试过。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2012/05/12/lifeinturbulance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>打伞</title>
		<link>http://snowriver.org/blog/2012/03/31/%e6%89%93%e4%bc%9e/</link>
		<comments>http://snowriver.org/blog/2012/03/31/%e6%89%93%e4%bc%9e/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 08:43:44 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[生活随笔]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=666</guid>
		<description><![CDATA[前两天下雨，在家里找来找去只找到老婆的粉色伞。走在路上感觉特别别扭。一会后面走上来一个女的。打了一把伞，上面写着“临港福寿园”。我还是宁可打粉色的伞了。 到了公司之后，和其他同事一说。“幸亏你住在城乡结合部，如果在新天地附近走，那说不定就被误会了”。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2012/03/31/%e6%89%93%e4%bc%9e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高德导航没有声音解决方法</title>
		<link>http://snowriver.org/blog/2012/02/01/%e9%ab%98%e5%be%b7%e5%af%bc%e8%88%aa%e6%b2%a1%e6%9c%89%e5%a3%b0%e9%9f%b3%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</link>
		<comments>http://snowriver.org/blog/2012/02/01/%e9%ab%98%e5%be%b7%e5%af%bc%e8%88%aa%e6%b2%a1%e6%9c%89%e5%a3%b0%e9%9f%b3%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 14:04:44 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=659</guid>
		<description><![CDATA[买了iphone4s之后下来高德导航。第一天测试使用从家到公司，操作还是很方便的，就是没有声音。怎么设置都没有用！下班之后搜索，发现问这个问题的人还挺多，安装各种方法试了都不行。偶然试一下插上耳机，居然有声音了！虽然不是很完美，总是能用了！ 土了，最终原因居然是左边的静音按钮打开了。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2012/02/01/%e9%ab%98%e5%be%b7%e5%af%bc%e8%88%aa%e6%b2%a1%e6%9c%89%e5%a3%b0%e9%9f%b3%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几篇不错的virgo文档</title>
		<link>http://snowriver.org/blog/2012/01/06/%e5%87%a0%e7%af%87%e4%b8%8d%e9%94%99%e7%9a%84virgo%e6%96%87%e6%a1%a3/</link>
		<comments>http://snowriver.org/blog/2012/01/06/%e5%87%a0%e7%af%87%e4%b8%8d%e9%94%99%e7%9a%84virgo%e6%96%87%e6%a1%a3/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 15:01:48 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[架沟设计]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=656</guid>
		<description><![CDATA[On OSGi, Spring and Eclipse Virgo OSGi Debugging in Eclipse Virgo virgo的shell有两个，如果根据这篇文档没有找到对应的命令，那么应该是连错地方了。一个配在config目录下的osgi.console.telnet.properties里，还有一个配在repository/ext下。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2012/01/06/%e5%87%a0%e7%af%87%e4%b8%8d%e9%94%99%e7%9a%84virgo%e6%96%87%e6%a1%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Integration – XML BookOrderProcessing理解</title>
		<link>http://snowriver.org/blog/2011/12/13/spring-integration-xml-bookorderprocessing/</link>
		<comments>http://snowriver.org/blog/2011/12/13/spring-integration-xml-bookorderprocessing/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 14:21:41 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[ESB]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=647</guid>
		<description><![CDATA[Spring Integration本身比较简单。但是在STS里的图形显示实在是不好理解。到处都充斥着通道的信息。而这些信息在大部分情况下都没有任何作用。有谁见过ps -ef &#124; grep root，里的｜还要转们突出显示的。下面这个图是从STS里剪的。实在难以理解，还不如直接看xml文件呢。 把该例子的图重新用BPEL/BPMN方式画了一下。至少我自己看起来容易多了。 消息进来之后第一步先根据xpath将消息分成几块。 然后检查根据消息检查是否在库存里面有。 根据是否有做一个条件路由。 有就直接发货。 没有就先转换一下消息格式让供货商能够理解。 然后再给供货商发消息。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2011/12/13/spring-integration-xml-bookorderprocessing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Integration &#8211; Quote Example理解</title>
		<link>http://snowriver.org/blog/2011/12/12/spring-integration-quote-demo/</link>
		<comments>http://snowriver.org/blog/2011/12/12/spring-integration-quote-demo/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 14:58:22 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[架沟设计]]></category>
		<category><![CDATA[Spring Integration]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=635</guid>
		<description><![CDATA[前两天看了一个关于Spring Integation的Webnar。感觉相当不错。Spring从最初的反转控制到现在做的如此之大确实让人感叹。Spring的那些人既能写代码，又能做这么好的演讲，另人佩服。 准备花段时间看一下，也把自己的理解记一下。 大致翻了一下Spring 参考文档 下载了并安装了Spring Tools Suite 下载了示例代码 解压示例代码，并在STS里以导入Maven工程方式导入。 Spring的依赖注入之后各个模块之间的关系不是特别直观了。完全依赖于对Spring配置文件的理解。Quote是一个非常简单的例子。 // Spring 依赖这些namespace来决定需要干什么 // 这是一个输入的通道，名字叫tickers。每300ms调用一次tickerStream的nextTicker函数 // 这是一个输出通道，名字叫quotes。 // 上面tickerStream bean // 一个quoteService bean。在上面的例子中只有输入和输出通道。QuoteService里定义的另外一组输入和输出。 QuoteService定义。 @MessageEndpoint public class QuoteService { // 输入通道是tickers，输出通道是quotes @ServiceActivator(inputChannel="tickers", outputChannel="quotes") public Quote lookupQuote(String ticker) { BigDecimal price = new BigDecimal(new Random().nextDouble() * 100); return new Quote(ticker, price.setScale(2, RoundingMode.HALF_EVEN)); } } Spring根据上面几个通道定义，将每一个输入和输出一相连，就形成了一个有机的链条。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2011/12/12/spring-integration-quote-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>技术人员思维 &#8211; 造车轮、设计汽车</title>
		<link>http://snowriver.org/blog/2011/12/07/techthinkingmakeyetanotherwheel/</link>
		<comments>http://snowriver.org/blog/2011/12/07/techthinkingmakeyetanotherwheel/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 15:16:00 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[管理杂思]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=631</guid>
		<description><![CDATA[大部分人的思维都是差不多的。希望别人做的更好一点。认为自己能比别人做得更好。技术人员尤甚。 软件开发当中有两大误区。一是自己能造比别人更好的车轮。造车轮比打磨车轮更有成就感。 当我们做一个功能的时候，外面往往有许多几经存在的模块可供使用。但是开发人员选型时总有各种各样的理由，功能不够、不适合使用、性能达不到。因为这些模块都达不到开发人员心目中的标准。理由各种各样，不一而足。但是目的一样，想自己做，我能比别人做的更好。但结果往往差强人意。做的总是没有想的好。以前我一直也是这么自信，甚至动手自己写一个Java虚拟机。但最后结果除了跑一个没有任何外部依赖的简单程序之外一无用处。 在做一个功能的时候，选择一个差不多的开源3PP，再把她调教调教是比较好的方法。任何一个功能有太多太多的东西需要考虑了。像配置文件怎么读取啊！ 二是集成汽车很容易。设计汽车比改装汽车更有成就感。 有一位名人曾经说过，“汽车吗！不就是沙发下面加四个轮子吗！”。沙发也有，车轮也有，把他们放到一起不就行了吗。 我们做软件系统的时候也有这样的问题。很多模块都现成有，把他们集成在一起不就行了。但到做的时候发现，事情往往要复杂很多。如相同功能有n多模块可供选择，那选那个呢？每次都有选型问题。每个模块之间如何通信？每次模块升级了之后根着升不？ 在做一个系统的时候，选择一个差不多的开源系统。将中间少部分能显示系统核心价值的模块替换掉。大部分软件，系统架构不是核心价值。何必要把大部分时间花在不是核心价值的地方呢！ 上面的描述适用于大部分像我这样做的没有想的好的人。把想的理想的东西打个三折再和已有的东西比较。把估计的精力乘三倍看是否能接受。如果还是很确定，那么可以勇往直前。 就像某些执着的牛人，做的总比想的好，而且一做就是一辈子。要不成功都难。让中 国再多一些强人，把大众也买了，就像买沃尔沃一样。]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2011/12/07/techthinkingmakeyetanotherwheel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle查询数据库中所有表的记录数</title>
		<link>http://snowriver.org/blog/2011/12/06/oraclerownumalltables/</link>
		<comments>http://snowriver.org/blog/2011/12/06/oraclerownumalltables/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 09:59:45 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[转帖]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=627</guid>
		<description><![CDATA[本文转自 http://space.itpub.net/17179887/viewspace-628297 首先建立一个计算函数 create or replace function count_rows(table_name in varchar2, owner in varchar2 default null) return number authid current_user IS num_rows number; stmt varchar2(2000); begin if owner is null then stmt := 'select count(*) from "'&#124;&#124;table_name&#124;&#124;'"'; else stmt := 'select count(*) from "'&#124;&#124;owner&#124;&#124;'"."'&#124;&#124;table_name&#124;&#124;'"'; end if; execute immediate stmt into num_rows; return num_rows; end; 然后通过计算函数进行统计 select [...]]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2011/12/06/oraclerownumalltables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB-分片</title>
		<link>http://snowriver.org/blog/2011/08/29/mongodb-sharding-2/</link>
		<comments>http://snowriver.org/blog/2011/08/29/mongodb-sharding-2/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 15:35:42 +0000</pubDate>
		<dc:creator>riv</dc:creator>
				<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[分片]]></category>

		<guid isPermaLink="false">http://snowriver.org/blog/?p=616</guid>
		<description><![CDATA[关于MongoDB的分片，网上有许多资料。象Sharding IntroductionSimple Initial Sharding ArchitectureSharding Administration配置mongodb分片群集(sharding cluster)。但是这些文档对分片数据服务器mongod、配置服务器（config server）和路由服务器mongos的关系，都是一带而过。让我搜了半天才明白。现把我的理解记下来，要不然过几天我又忘了。 配置服务器实际上保持的是一个路由表。而路由服务器自己没有保存任何配置数据。路由服务器将什么数据在哪个分片（数据服务器）的信息保存到配置服务器中。配置服务器和分片数据服务器之间没有任何的物理连接关系。他们之间的逻辑关系也完全通过路由服务器来建立。不需要手工往配置服务器中添加有哪些分片数据服务器。而是再启动路由服务器时指定配置服务器，再往路由服务器服务器添加分片数据服务器。 试着用mongo连接到数据服务器，往里面插几条记录。那么基本上会发现，这些记录会保持到其中一个分片中。那是因为MongoDB会写完一个数据块才会分区。数据块的默认大小为64M，具体在config.settings中保存，可以直接修改这个值来修改数据块大小。所以平常要测试分区效果还是需要比较多的数据的。也不要试着用mongo连接到其中一个分片上，然后插入数据，试图从路由服务器上能够取到。因为在配置服务器里根本就没有这些数据保持在哪个分片的信息。只有通过路由服务器才会将这些信息保持到配置服务器中。 配置服务器只能是奇数个。可以是一个，也可以3个。我的理解就是一个复制集（replicate set）。 下面是用来建立测试环境的系统配置。有三个分片，每个分片两个数据服务器，一个仲裁服务器。3个配置服务器。一个路由服务器。按照时间情况可以将这些服务器配置到几个物理机器上，不需要美个服务器对应一个物理服务器。在脚本中有一个sleep语句。这个sleep配置在我的2010年的MBA上可以成功，如果机器不一样可以使用不一样的sleep值。 #!/bin/bash export bindir=/opt/mongodb-osx-x86_64-1.8.2/bin export datadir=/opt/mongodb-osx-x86_64-1.8.2/data killall mongod killall mongos rm -rf "$datadir"/ echo "*************Create config servers******************" mkdir -p "$datadir"/cfg/data1 "$datadir"/cfg/data2 "$datadir"/cfg/data3 "$datadir"/cfg/log "$bindir"/mongod --dbpath "$datadir"/cfg/data1 --port 27041 --configsvr --rest --oplogSize 8 > "$datadir"/cfg/log/cfg1.log&#038; "$bindir"/mongod --dbpath "$datadir"/cfg/data2 --port 27042 --configsvr --rest --oplogSize 8 [...]]]></description>
		<wfw:commentRss>http://snowriver.org/blog/2011/08/29/mongodb-sharding-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

