在linux的alias中使用awk遇到的问题

场景很简单, 通过一个命令别名(alias)直接输出当前的机器的ip地址.

不需要使用ifconfig命令, 用ping就可以了. (更简单用 hostname -i 命令即可.)

ping -c 1 命令用来指定只ping一次, 后面是机器名或者域名.

查看机器名的命令是 hostname, 所以很简单, 直接

ping -c 1 `hostname`

就可以得到ip地址的信息了.

PING jiacheo (192.168.0.22) 56(84) bytes of data.
64 bytes from jiacheo (192.168.0.22): icmp_seq=0 ttl=64 time=0.034 ms
--- jiacheo ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0m
rtt min/avg/max/mdev = 0.034/0.034/0.034/0.000 ms, pipe 2

然后我只需要显示第一行的 (192.168.0.22)就可以了. 这时需要用到awk

ping -c 1 `hostname` | awk '{if(NR==1) pirnt $3}'

执行结果:

(192.168.0.22)

貌似没什么问题.

使用alias:

编辑~/.bashrc 文件, 最后加入

alias ip="ping -c 1 `hostname` | awk '{if(NR==1) pirnt $3}'

保存后, source ~/.bashrc 一下(或者重新登录终端)

在命令控制台敲入: ip  回车后显示

PING jiacheo (192.168.0.22) 56(84) bytes of data.

奇怪了, 开始怀疑是awk没有识别出分隔符.
后来想想, 在.bashrc里面定义的 环境变量都是可以用$var 来引用的, 这里的$是不是需要转义
在英明伟大神武牛叉轰轰的 莹莹的指导下, 果然是$符号的问题, 要转义一下就可以了. 转义的方法就是 在前面加个\

alias ip="ping -c 1 `hostname` | awk '{if(NR==1) pirnt \$3}'"

输出结果:

(192.168.0.22)

蛋疼扯了这么多, 就说明一个道理, 在定义alias的时候, 要注意特殊符号需要转义. 嗯.

IBM推出HTML5编辑器Maqetta

该编辑器名为 Maqetta , 是基于HTML5的标准, 使用ajax技术, 后端用java和osgi实现. 请看截图:

下载源文件后, 直接用.bat批处理启动

可以发现是用osgi来构建的, 跟eclipse是一样的, 基于osgi. 这样可以搞很多插件啦.

启动后访问 http://localhost:50000/maqetta/ 就可以看到界面效果了, 如图, 我简单搞了一些UI上去, 效果还是不错, 可以查看源文件, 也可以预览.

嗯, 该项目已经贡献给dojo开源项目了, 你可以在其上修改并开源你自己的版本, 哈哈.

git地址是: https://github.com/maqetta

以后准备了解如何使用OSGI来构建web应用, 做平台化离不开啊, 伤不起啊, 有木有!!!!!!!

高可用性系统经验分享之总结

昨天听了毕玄的课程, 在此做一下简短的小结.高可用性系统经验分享总结

1. 要做好监控监控好系统里面那些关键的点:哪些点影响全局, 哪些点对主流程没影响?

2. 要做好隔离不要将所有的东西都串起来搞, 一个系统挂了导致其他都挂. 隔离的手段: 系统拆分, 分级(P1,P2,P3,P4)

3.要理清并减少依赖特别是核心系统, 应该去除太多的依赖, 最好就似乎直接连接数据库, 这样稳定性只有数据库和系统本身, 而不用担心依赖系统的稳健程度.

4.缓存读操作一律走缓存, 当然缓存的时间限度要估量好.

5.优雅降级首先应该是将系统拆分成N个独立的功能点, 当遇到瓶颈的时候可以考虑将不影响主流程的功能去掉, 做到优雅降级.简单的实现就是一大堆的系统开关, 然后在每个功能点都使用开关. 当出现需要降级的情况的时候, 就可以在后台使用开关来降级了.

一致性哈希

学习分布式, 一致性哈希是最最基础的知识, 所以要理解好.

那什么是一致性哈希呢?(what)

百度百科 上的解释很专业术语. 要一句话定义貌似也有难度: 一致性哈希算法是在哈希算法基础上,提出的在动态变化的分布式环境中,哈希算法应该满足的几个条件: 平衡性, 单调性和分散性.

1.平衡性是指 hash的结果应该平均分配到各个节点, 这样从算法上就解决了负载均衡问题.

2.单调性是指 在新增或者删减节点时, 同一个key访问到的值总是一样的.

3.分散性是指 数据应该分散的存放在 分布式集群中的各个节点(节点自己可以有备份), 不必要每个节点都存储所有的数据.

 

为什么要一致性哈希?(why)

这个问题问得很好…首先我们要看看不使用一致性hash, 我们的分布式集群如何工作.

1. 普通集群, 把固定的key映射到固定的节点上, 节点只存放各自key的数据, 如图:

Gmail 开始支持粘贴图片了

目前只支持firefox4, 当你用截图工具截图之后, 想要发在邮件里, 无需事先保存在电脑上再上传, 直接Ctrl+V就可以了, 如图:

gmail_new_feature

从今往后, 有了firefox4和gmail, 你就可以完全抛弃office outlook啦!

原帖在这里: http://beerpla.net/2011/04/06/goodbye-outlook-i-dont-need-you-anymore-gmail-now-lets-you-paste-images-directly-from-clipboard/

网站PV流量统计工具的实现

一, 概述

像CNZZ那样提供一段js代码然后帮助站长们统计网页的PV流量是如何实现的呢? 这里浅谈了一下实现方法, 其实很多网站内部的PV统计也是如此的, 只不过需要记录的数据比较多而已.

二, 需求

实现一个网站访问量统计工具, 能够得到被访问页面的URL, 被访问页面的前导URL, 以及访客所在地理位置.

三, 设计

分为两部分, 一是前端, 一是后端.

Hive环境搭建与入门

一、概述
hive是一个基于hadoop的数据仓库基础设施, 提供数据的提取转换加载和查询, 不适于少数据量(比如几亿)的数据查询, 也不适于实时或者在线数据的查询, 是一个非实时的, 离线的数据查询工具. hive没有自己的文件格式, 只需要普通的文件格式或者用户自定义的格式就可以了.

二、环境搭建

hive不需要神马集群配置, 只是需要编译一个环境就好了, 编译的过程, 国人表示很蛋疼, 因为他的ant脚本中, 使用的镜像居然是facebook的, 翻墙了都没用表示很纠结. 所以需要把facebook的镜像改为可用的(最好是国内的, 诸如 人人网, 北京交通大学等等镜像), 镜像的选择可以根据个人喜好和地理位置自由选取, 当然是不能被GFW墙了的.(参考http://www.apache.org/dyn/closer.cgi/hadoop/core/)
1. 下载源代码: svn co http://svn.apache.org/repos/asf/hive/trunk hive

基于zookeeper实现的分布式锁

A distributed lock base on zookeeper.

zookeeper是hadoop下面的一个子项目, 用来协调跟hadoop相关的一些分布式的框架, 如hadoop, hive, pig等, 其实他们都是动物, 所以叫zookeeper(本人歪歪).

zookeeper其实是集群中每个节点都维护着一棵相同的树, 树的结构跟linux的目录结构的概念差不多, 以/为跟节点, 下边可以扩展任意的节点和叶子节点, 每个节点都可以写入数据. 基于zookeeper的分布式锁的实现, 其实是得益于zookeeper同步文件的强大性, 我们相信每时每刻我们访问zookeeper的树时, 相同节点返回的数据都是一致的. 这要靠zookeeper内部的一些算法来实现. 特别是leader的选举算法, 这里就不说了, 感兴趣的话可以去搜索一下看看.

我们知道了zookeeper集群的每个节点的数据都是一致的, 那么我们可以通过这些节点来作为锁的标志.

首先给锁设置一下API, 至少要包含, lock(锁住), unlock(解锁), isLocked(是否锁住)三个方法

洗牌算法的实现

所谓洗牌, 就是把牌搀和整理,以便继续玩, 要的就是把原来的牌的顺序打乱, 以便游戏的公平公正性.

传统的洗牌算法是将牌一次性洗好, 然后把洗好的牌按顺序取, 这也跟现实中的洗牌比较像.

而本人实现的一个洗牌算法, 是不打乱原来的牌的顺序的, 只是在取牌的时候, 是无序(随机)的, 这也得到的牌也是乱序的, 也能得到洗牌的效果.

例如下图所示:

淘宝客API研究

1.每个推广API都可以绑定用户的登陆帐户, 这个帐户可以是alimama的, 也可以是淘宝的, 这样用户在登陆到网址之后, 搜索的结果就可以是用户自己的推广链接了. 这个是完全可以实现的, 但是目前很多回扣网址是先把回扣给自己, 自己取其中一部分, 再给用户回扣的.

2.API自带了排序功能. 这一按价格, 佣金比率, 信用,  销量等进行排序, 这样可以呈现给用户更好的体验. 要得到某个关键词的最高佣金, 其实是很简单的, 按照佣金降序排序一下就可以了.