<?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>Allegro Nanu</title>
	<atom:link href="http://www.inanu.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.inanu.net</link>
	<description>The Day Turns Into Years ...</description>
	<lastBuildDate>Tue, 15 May 2012 02:02:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>NoSQL 数据建模技术</title>
		<link>http://www.inanu.net/post/775.html</link>
		<comments>http://www.inanu.net/post/775.html#comments</comments>
		<pubDate>Tue, 15 May 2012 02:02:12 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=775</guid>
		<description><![CDATA[全文译自墙外文章“NoSQL Data Modeling Techniques”，译得不好，还请见谅。这篇文章看完之后，你可能会对NoSQL的数据结构会有些感觉。我的感觉是，关系型数据库想把一致性，完整性，索引，CRUD都干好，NoSQL只干某一种事，但是牺牲了很多别的东西。总体来说，我觉得NoSQL更适合做Cache。 NoSQL 数据库经常被用作很多非功能性的地方，如，扩展性，性能和一致性的地方。这些NoSQL的特性在理论和实践中都正在被大众广泛地研究着，研究的热点正是那些和性能分布式相关的非功能性的东西，我们都知道 CAP（一致性(Consistency)， 可用性(Availability)， 分区容忍性(Partition tolerance) 理论被很好地应用于了 NoSQL 系统中，在分布式系统中，这三个要素最多只能同时实现两个，而NoSQL一般放弃的是一致性）。但在另一方面，NoSQL的数据建模技术却因为缺乏像关系型数据库那样的基础理论没有被世人很好地研究。这篇文章从数据建模方面对NoSQL家族进行了比较，并讨论几个常见的数据建模技术。 要开始讨论数据建模技术，我们不得不或多或少地先系统地看一下NoSQL数据模型的成长的趋势，以此我们可以了一些他们内在的联系。下图是NoSQL家族的进化图，我们可以看到这样的进化：Key-Value时代，BigTable时代，Document时代，全文搜索时代，和Graph数据库时代： 首先，我们需要注意的是SQL和关系型数据模型已存在了很长的时间，这种面向用户的自然性意味着： 最终用户一般更感兴趣于数据的聚合显示，而不是分离的数据，这主要通过SQL来完成。 我们无法通过人手工控制数据的并发性，完整性，一致性，或是数据类型校验这些东西的。这就是为什么SQL需要在事务，二维表结构（schema）和外表联合上做很多事。 另一方面，SQL可以让软件应用程序在很多情况下不需要关心数据库的数据聚合，和数据完整性和有效性进行控制。而如果我们去除了数据一致性，完整性这些东西，会对性能和分布存储有着重的帮助。正因为如此，我们才有数据模型的进化： Key-Value 键值对存储是非常简单而强大的。下面的很多技术基本上都是基于这个技术开始发展的。但是，Key-Value有一个非常致命的问题，那就是如果我们需要查找一段范围内的key。（陈皓注：学过hash-table数据结构的人都应该知道，hash-table是非序列容器，其并不像数组，链接，队列这些有序容器，我们可以控制数据存储的顺序）。于是，有序键值 （Ordered Key-Value） 数据模型被设计出来解决这一限制，来从根本上提高数据集的问题。 Ordered Key-Value 有序键值模型也非常强大，但是，其也没有对Value提供某种数据模型。通常来说，Value的模型可以由应用负责解析和存取。这种很不方便，于是出现了 BigTable类型的数据库，这个数据模型其实就是map里有map，map里再套map，一层一层套下去，也就是层层嵌套的key-value（value里又是一个key-value），这种数据库的Value主要通过“列族”（column families），列，和时间截来控制版本。（关于时间截来对数据的版本控制主要是解决数据存储并发问题，也就是所谓的乐观锁，详见《多版本并发控制(MVCC)在分布式系统中的应用》） Document databases 文档数据库 改进了 BigTable 模型，并提供了两个有意义的改善。第一个是允许Value中有主观的模式（scheme），而不是map套map。第二个是索引。 Full Text Search Engines 全文搜索引擎可以被看作是文档数据库的一个变种，他们可以提供灵活的可变的数据模式（scheme）以及自动索引。他们之间的不同点主要是，文档数据库用字段名做索引，而全文搜索引擎用字段值做索引。 Graph &#8230;<p class="read-more"><a href="http://www.inanu.net/post/775.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/775.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet Master 配置文件示例</title>
		<link>http://www.inanu.net/post/767.html</link>
		<comments>http://www.inanu.net/post/767.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 03:43:23 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=767</guid>
		<description><![CDATA[一份 Puppet Master 主控端配置文件示例。 配置文件默认位于：/etc/puppet/puppet.conf 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 &#8230;<p class="read-more"><a href="http://www.inanu.net/post/767.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/767.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet Agent 配置文件示例</title>
		<link>http://www.inanu.net/post/765.html</link>
		<comments>http://www.inanu.net/post/765.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 03:41:01 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=765</guid>
		<description><![CDATA[一份 Puppet Agent 节点配置文件示例。 配置文件默认位于：/etc/puppet/puppet.conf 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 &#8230;<p class="read-more"><a href="http://www.inanu.net/post/765.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/765.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>科鲁兹1.6发动机爆震分析</title>
		<link>http://www.inanu.net/post/761.html</link>
		<comments>http://www.inanu.net/post/761.html#comments</comments>
		<pubDate>Thu, 12 Jan 2012 15:14:36 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[汽车驾驶]]></category>
		<category><![CDATA[发动机]]></category>
		<category><![CDATA[机油]]></category>
		<category><![CDATA[汽油]]></category>
		<category><![CDATA[爆震]]></category>
		<category><![CDATA[科鲁兹]]></category>
		<category><![CDATA[积碳]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=761</guid>
		<description><![CDATA[我家小科是 1.6 发动机，AT 自动变速箱，第一次发现发动机爆震敲缸是在 8000 公里左右，当时很是恼火，起步、爬坡，甚至时速 50 &#8211; 60KM 时踩油门都会发出崩溃的敲缸声。与 4S 店交涉、检查 N 次，未果…… 后来，经过我自己的分析实验，总结了一下缓解，甚至可以消除爆震的方法。 一、机油问题 这里我要说的不是机油品质问题，我一直换的 4S 店号称原厂的机油，没用过其他的。但是后来发现 4S 店非常坑爹！为啥呢？偶然一次我拔出机油尺看看，发现油位居然还高出标尺最高处一段！这就说明机油加冒了啊！后来想想，4S 店是为了多卖我一小桶机油！而且每次都这样！后来自己用注射器 + 软管抽出来 500ml，机油位在标尺大约 2/3 的位置。跑了一段，感觉发动机声音小了一些，油耗就不知道了，没有精确计算过，不过感觉总会省一些吧，毕竟机油过多也耗油的。说到爆震敲缸，确实缓解了一些，只是一些些…… 可以说没有太大的效果，但聊胜于无啊…… 查了科鲁兹说明书，机油加满是 4.5L，但自从这次之后，我就只加 4L，感觉良好。但如果你要跑高速，最好还是多加一些。总体来说，抽出过满的机油应该是可以稍微缓解爆震敲缸问题。 二、油品问题 发现爆震敲缸，且愈演愈烈之后，我尝试过以下几种方案： A. 93 B. 93 + 燃油添加剂 C. &#8230;<p class="read-more"><a href="http://www.inanu.net/post/761.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/761.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet 数组和函数</title>
		<link>http://www.inanu.net/post/759.html</link>
		<comments>http://www.inanu.net/post/759.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 06:41:00 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[数组]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=759</guid>
		<description><![CDATA[Puppet 中数组和函数的使用方法。 介绍 你的pupept代码是整个基础设施的生活的文档,保持它整洁和良好的结构是个非常好的方式 ,使其更易于维护和理解.Puppet给了您很多工具去做到这点,工具包括有这些: Arrays (数组) defines (函数) Dependencies (依赖) Inheritance (继承) Tags (标签) Class parameters(类参数) Run stage (运行阶段) 我们将看到如何使用所有上面的工具,甚至更多.当你通过阅读本章,试验着上面例子,看到这些功能可是否可以帮助你的puppet代码进行简化和改善,和自己的代码相比较. 使用数组资源 “If we wish to count lines of code, we should not regard them as lines produced but as &#8230;<p class="read-more"><a href="http://www.inanu.net/post/759.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/759.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet selector和case语句</title>
		<link>http://www.inanu.net/post/757.html</link>
		<comments>http://www.inanu.net/post/757.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 06:30:48 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[selector]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=757</guid>
		<description><![CDATA[Puppet 中 selector 和 case 语句的使用。 使用selectors和case语句 虽然你可以使用if写出任何条件语句,puppet支持额外的表单,以帮助你更容易地使用条件表达式,select和case语句. 1. 添加下列内容到你的puppet代码: 1 2 3 4 5 6 7 8 9 $systemtype = $operatingsystem ? &#123; &#34;Ubuntu&#34; =&#62; &#34;debianlike&#34;, &#34;Debian&#34; =&#62; &#34;debianlike&#34;, &#34;RedHat&#34; =&#62; &#34;redhatlike&#34;, &#34;Fedora&#34; =&#62; &#34;redhatlike&#34;, &#34;CentOS&#34; =&#62; &#34;redhatlike&#34;, &#125; &#8230;<p class="read-more"><a href="http://www.inanu.net/post/757.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/757.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet 数组和条件语句</title>
		<link>http://www.inanu.net/post/755.html</link>
		<comments>http://www.inanu.net/post/755.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 06:22:01 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[数组]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=755</guid>
		<description><![CDATA[Puppet 中有关数组和条件语句的使用。 遍历数组 puppet中数组是个强大的特性之一,不论你何时对列表中的字符串执行相同的操作,数组可能会帮你忙.你可以创建一个数组,只需要其内容放在方括号中([]). 1 $lunch = &#91; &#34;eggs&#34;, &#34;beans&#34;, &#34;chips&#34; &#93; 1. 增加以下内容到你的puppet代码里: 1 2 3 4 5 6 7 8 9 $packages = &#91; &#34;ruby1.8-dev&#34;, &#34;ruby1.8&#34;, &#34;ri1.8&#34;, &#34;rdoc1.8&#34;, &#34;irb1.8&#34;, &#34;libreadline-ruby1.8&#34;, &#34;libruby1.8&#34;, &#34;libopenssl-ruby&#34; &#93; package &#123; $packages: ensure =&#62; &#8230;<p class="read-more"><a href="http://www.inanu.net/post/755.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/755.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet 管理 MySQL 示例</title>
		<link>http://www.inanu.net/post/752.html</link>
		<comments>http://www.inanu.net/post/752.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 05:44:08 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=752</guid>
		<description><![CDATA[puppet运维管理中，经常会配置nginx，mysql,每家公司都有自己的安装方法，因部分运维同学要求，给与puppet代码示例，puppet中文资料比较少，puppet pro 那本到是非常多的实例，但全是英文，本次贴出puppet mysql 部分代码供学习参考，相对来说通用，只作参考，具体的话，大家可以根据实际情况对代码进行修改。以更适合您的生产环境。 接下来一起学习，如何使用puppet来管理mysql安装等操作代码示例。 代码示例 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 class mysql::mysql &#8230;<p class="read-more"><a href="http://www.inanu.net/post/752.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/752.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOS6 搭建 Git Server 管理 Puppet</title>
		<link>http://www.inanu.net/post/742.html</link>
		<comments>http://www.inanu.net/post/742.html#comments</comments>
		<pubDate>Sat, 31 Dec 2011 02:30:01 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=742</guid>
		<description><![CDATA[这几天研究 Puppet，刚好需要搭建一个 Git Repository。把过程及遇到的问题简答记录一下。 环境：CentOS 6.2 x86_64 1. 安装 RPM [root@c1.inanu.net]# yum install httpd [root@c1.inanu.net]# yum install git git-daemon 此处安装 httpd 和 gitweb 是为了能够通过 web 对 git 进行方便的浏览、管理。正好 apache 也可以用来替换掉 puppet 自带的 WEBrick，一举两得了。 2. 配置 Git 在 CentOS 中，Git 是以 &#8230;<p class="read-more"><a href="http://www.inanu.net/post/742.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/742.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Puppet 获取客户端 IP</title>
		<link>http://www.inanu.net/post/732.html</link>
		<comments>http://www.inanu.net/post/732.html#comments</comments>
		<pubDate>Sat, 31 Dec 2011 01:33:40 +0000</pubDate>
		<dc:creator>Nanu</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://www.inanu.net/?p=732</guid>
		<description><![CDATA[在运维工作中遇到需要取客户端的IP地址，怎么取呢，shell可以取得，想换另外一种方法，如是就用巧用puppet来实现取客户端的ip地址，这其实也不算什么puppet技巧，前面跟大家讲过，客户端会通过facter取得客户端相关信息发送到服务端，只需要在puppetmaste端取其值便可以。 puppet 技巧基础 了解puppet是如何工作的，即puppet的工作流程，熟悉puppet操作，任何技巧都是要有相应的基础才能得以实现。puppet也一样，如还没有掌握puppet基础知识，可以参阅其它文章，另外就是puppet官网上阅读资料。 puppet 代码示例 代码功能说明：获得和客户端所在的网段，并获得客户端eth0的IP地址。 [root@c1.inanu.net]# cat ip.pp 1 2 3 $nanu = regsubst&#40;$ipaddress_eth0, &#34;(.*)\..*&#34;, &#34;\1.0&#34;&#41; notify &#123; $ipaddress_eth0: &#125; notify &#123; $nanu: &#125; puppet 代码测试 输出结果如下： notice: 192.168.2.0 notice: //Notify[192.168.2.0]/message: defined 'message' as '192.168.2.0' notice: 192.168.2.220 notice: &#8230;<p class="read-more"><a href="http://www.inanu.net/post/732.html">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.inanu.net/post/732.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

