锋利的Bash(3):三剑客(初探)

初极狭,才通人。

1
ls | sed "s:^:`pwd`/:" | tr "\n" ":" | grep :

引言

配置hadoop环境时候,需要把hadoop的一些链接库jar包导入CLASSPATH变量,但是挨个写又麻烦又容易出错。所以在网上找到这么一条脚本可以直接输出当前目录下所有文件的绝对路径并且用:分割。
最后一个grep命令是为了显示用的,将分隔符高亮显示。

ls

其实没什么好说的。但是反正也总结了,就写得全一点。

  • -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为”.”的视为隐藏档,不会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/“
  • -R 若目录下有文件,则以下之文件亦皆依序列出

sed

三剑客之一。支持正则表达式。
s应该算是常用命令。注意的是sed的执行模式是每次读入一行到缓存空间进行处理,如果要处理跨行内容或者是多行内容需要额外的处理。

sed “s:^:pwd/:”

解释一下就是s执行sed的替换命令,正常情况是以sed “/regex1/s/regex2/str3”的形式执行sed替换命令,意义是对成功匹配regex1的行中,将regex2替换为str3。由于我们在sed命令中嵌入了pwd命令,而该命令的返回中是包含/的。会和sed命令中的/冲突,因此我们把/替换为:占位符。
该条命令的意思就是把每行的行首加上所在文件夹的绝对路径再加上一个/。

tr命令

tr命令可以对来自标准输入的字符进行替换、压缩和删除。

Read More

使用MRUnit进行单元测试

安装MRUnit

首先在官网下载MRUnit,我也上传了一份到服务器上[点此下载]。我安装的版本是适用于hadoop2.x的mrunit-1.1.0。

安装完MRUnit之后,还没完事,因为MRUnit是依赖于另外两个包:mockito-all.jar和powermock-mockitod.jar。我安装的hadoop版本是2.6.5,在自带的hadoop链接库中可以找到mockito-all-1.8.5.jar。那么剩下需要安装的就是powermock包。在网上查询powermock包可以找到两个主要的下载链接。一个是powermock的github主页,我第一次就是从这里下载的1.7.1版本的包。但是会出现NoSuchMethodError (setMockName)的Exception,参考这篇文章,我猜测应该是版本不对应的原因。根据这篇文章,powermock和mockito的版本需要搭配.

Mockito PowerMock
2.0.0-beta - 2.0.42-beta 1.6.5+
1.10.19 1.6.4
1.10.8 - 1.10.x 1.6.2+
1.9.5-rc1 - 1.9.5 1.5.0 - 1.5.6
1.9.0-rc1 & 1.9.0 1.4.10 - 1.4.12
1.8.5 1.3.9 - 1.4.9
1.8.4 1.3.7 & 1.3.8
1.8.3 1.3.6
1.8.1 & 1.8.2 1.3.5
1.8 1.3
1.7 1.2.5

但是在github主页提供的下载中只有1.7.1的版本,还有一个下载powermock-api-mockito-common-1.6.6的包,但是需要搭配hadoop中的1.8.5的版本都是不行的。另外还可以找到一个maven repository可以提供下载。这里我下载的是1.4.8版本。
还有一个下载链接,我没有用到,在这里保留一下,以备不时之需。
安装之后,在project structure中加入链接库路径。

其实maven是一个很好的项目管理工具,但是出于学习成本的原因一直没能去学习它,这里挖个坑,以后有时间争取学习一下这个工具。

Read More

hadoop实战

第一章 Hadoop简介

1.2 什么是Hadoop

与众不同之处:

  • 方便:运行在一般商用机器构成的大型集群上,或者如EC2等云计算服务上。
  • 健壮:致力于在一般的甚至廉价的商用机器上运行。
  • 可扩展:方便的增加节点。
  • 简单:MR编程模型。

1.4 Hadoop与SQL数据库比较

  • 用向外扩展代替向上扩展
  • 用键值对代替关系表
  • 用函数式编程代替声明式查询
  • 用离线批处理代替在线处理

1.5 理解MapReduce

管道有助于进程原语的组合重用。消息队列有助于进程原语的同步。在mapreduce中,mapper和reducer对应为进程原语。

第二章 初识Hadoop

2.1 Hadoop的构造模块

  • 一组守护进程:Namenode,Datanode,SecondaryNamenode,JobTracker,TaskTracker
  • SNN(SecondaryNameNode),类似于NameNode,独占一台服务器,与NameNode不同的是不接受或记录HDFS的任何实时变化,它只与NameNode通信,根据集群配置的时间间隔获取NameNode的快照。Namenode失效后,SNN需要手动配置。
  • 类似于HDFS,计算的守护进程也是主从结构:JobTracker和TaskTracker。JobT负责分配节点监控运行等任务,TaskTrakcer管理各个任务在各自从节点上的执行情况。每个节点上只有一个TaskT,但是每个TaskT可以生成多个JVM来并行处理map或red任务。
  • Namenode和JobTracker分别驻留在两台服务器上,每个从节点均驻留Namenode和Tasktracker。

Read More

RIOT文档四

1. Scope, Audience and Purpose

1.1 Scope

本文档描述了典型的物联网的安全使用情况和应用TCG技术这些用例提供指导。

由于物联网设备在成本、使用和功能上有很大的差异,所以没有万能的解决方案来解决物联网安全问题。不同设备和系统的实际安全要求会有所不同。因此,该解决方案列表应被视为一个菜单,实现者可以选择最适合自己的产品或服务。

这个文件不是一个TCG规范,因此不规范。此外,只看本文档不能得到一个实现产品的细节或者解决方案。因此必须权衡许多其他方面和设计问题来得到一个好的解决方案

1.2 Audience and Propose

本文档的目标受众是物联网设备、软件和服务提供商。该文件是一个介绍了TCG技术如何应用于解决物联网市场空间的安全问题的高抽象层次的文档。作为一个高层次的文件,这篇文档很适合为商务人员和技术人员作为初始起点去调查TCG技术是否适合自己的安全需求的解决方案。

2. Preface

大多数计算机安全都是在软件堆栈中实现的:例如,操作系统使用加密技术来确保静止和运动中的数据,而操作系统和应用程序则经过精心设计和配置,以保护用户的隐私和对恶意输入的鲁棒性。尽管在构建安全系统的科学和实践方面已经取得了很大的进展,但大多数不平凡的软件系统仍然存在可利用的缺陷。传统的受感染和被漏洞利用的系统的恢复是耗费时间和昂贵的:例如,需要重新安装操作系统和应用程序,需要更改密码和机器证书。这通常意味着物理访问(例如从DVD安装)和访问重要凭证(例如向生产商注册设备)。

再一次,大多数下一代物联网软件和服务机器的浪潮将在软件堆栈中实现,但面对软件缺陷,有些事情根本不可能在没有硬件支持的情况下实现。例如,只有软件解决方案,攻击者可能能够不可逆转的将设备变砖。另外的一些攻击会窃取装置秘密(Device Secret)使得设备不能安全地重新配置,永远允许攻击者冒充一个设备或窃听通信。这些问题不是物联网系统的新的或独特的,但他们在物联网系统中会变得更麻烦,因为物联网系统繁多,安全特征极少,基本不可能手动管理,而且被攻击后有可能很危险。简言之,只通过软件的解决方案是脆弱的,容易发生不可挽回的损失。

脆弱的软件唯一的解决方案对消费者和设备和服务提供商都有风险。设备供应商对无法在现场修理的系统保证保修。客户冒着数据、隐私和时间的风险,而且在最糟糕的情况下,客户的健康和财富都可能被置于风险之中。

TCG技术不能提供一个应用于所有的物联网设备和服务的即时生效的解决方案,但他们可以使现有的和将来的物联网解决方案从根本上远比今天更鲁棒。本文档定义了一套安全相关的用例,并描述了TCG技术可以应用到的问题。

3. Use Case

Read More

RIOT文档三

Device Identity with DICE and RIoT: Keys and Certificates

Abstract

该规范描述了基于TLS协议和X.509客户端证书的加密设备标识和认证方案。协议和证书格式可以由任何类型的安全处理器实现,但是尤其适用于适合于DICE+RIoT的安全架构。没有基于硬件的安全性的设备也可以在软件中实现协议,尽管这样将导致对最终的身份和认证较低的保证。

1. Contents

(略)

2. Terms and Definitions

Alias Key, Credential, and Certificate
Alias Key是由设备创建的非对称密钥对,每个新固件版本都要创建新的Alias Key(也可以更频繁的创建)。Alias Key的公钥通过设备的设备DeviceID Key进行认证,以形成Alias Key Certificate。Key和Certificate一起构成了Credential。

Attestation
认证是一个设备的安全配置的加密报告。在这个规范中,认证信息被编码为一个名为固件ID(FWID:Firmware ID)的加密散列值。

DeviceID Key, Credential, and Certificate
设备标识(DeviceID)是一种非对称密钥对,它作为设备的长期标识符。该规范假定DeviceID永远不变。如果供应商提供了一种机制来更改DeviceID,不管是使用远程使用加密协议,还是在重新制造,那么该规范中的协议将把它识别为不同的设备。

如果DeviceID密钥对是使用DICE+RIoT机制创建的,那么DeviceID将与设备硬件身份和RIoT Core组件联系起来。RIoT Core被认为是不变的,因此DeviceID不会改变。
DeviceID公钥可以通过设备厂商认证或自认证以形成DeviceID证书。

Device Identity Composition Engine (DICE)
DICE,是一个硬件/固件的能力,它能生成一个密码学上的唯一值,用于在设备上启动的最低层的软件。
兼容DICE的平台支持RIoT风格的安全架构。

Composite Identity
Composite Identity是一种数据结构,它编码了设备的硬件标识(DeviceID)和正在运行的固件(FWID)。

Compound Device Identity (CDI)

Read More

本站总访问量