めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

2010-01-01から1年間の記事一覧

SELinux 入門(5) - libsemanage

libsemanageとは semanage コマンドのバックエンドのライブラリ。バイナリのポリシーを直接操作するという強力なツールで、これにより、semanage コマンドで広範囲な設定・管理ができるようになっている。逆に言うと、semanage で管理する場合、ダイレクトに…

SELinux 入門 (4) - svirt

svirt とは KVM の仮想マシンプロセスには、svirt_t タイプが設定されて、仮想マシンプロセスからホスト上の不要なリソースへのアクセスは禁止される。しかしながら、すべての仮想マシンプロセスは、同じ svirt_t タイプなので、これだけでは、仮想マシン間…

SELinux 入門(3) - ユーザ管理

Linux ユーザと SELinux ユーザのマッピング /etc/selinux/targeted/seusers に設定。ただし、ファイルを編集するのではなく、semanage コマンドで確認、変更する。 # semanage login -l ログイン名 SELinux ユーザー MLS/MCS 範囲 __default__ unconfined_u…

SELinux 入門 (2) - ポリシーソースを眺めてみる

RHEL6 の targeted ポリシーのソース全体(マクロ展開した後の生のポリシー)を眺めます。※ 実際にポリシーを書く時はマクロを駆使するので、以下の生ポリシーを書く必要はありません。 ポリシーソースの入手 # rpm -Uvh selinux-policy-3.7.19-54.el6.src.r…

SELinux 入門 (1) - まずは全体像を理解する。

パーソナルメモです。。。。執筆中。(整理できたら、もうちょっとフォーマルなものにします。)参考資料 SELinux Project Wiki環境は RHEL6.0 前提です。 # rpm -qa | grep -E "(policy|selinux)" | sort checkpolicy-2.0.22-1.el6.i686 libselinux-2.0.94-…

JAQL実行環境のセットアップ手順 (0.5.1 pre-build 版)

前提 最新の JAQL は、Hadoop 0.20.2 が前提になっています。以下の手順は、Hadoop 0.20.2 と組み合わせる場合の手順です。 JDK は 6 以上が必要です。 Hadoop 0.20.2 のクラスタを用意する。 (参考)http://itpro.nikkeibp.co.jp/article/COLUMN/20100910/…

プロのためのLinuxシステム構築・運用技術

Amazonの書籍案内はこちらをどうぞ。技術評論社のサイトに目次が掲載されましたので、こちらも参照ください。内容が気になる方のために、各章の概要を転載しておきます。 第1章 Linuxサーバの構築 Linuxサーバ構築の基礎となるサーバ・ハードウェアの仕組み…

Cassandraソース解析(3) - Bootstrap 処理

執筆中です。 ざっくり全体像 クラスタに未参加のノードを新規に起動して、クラスタに参加させる処理を Bootstrap と呼ぶ。ざっくりの流れは・・・Bootstrap中のノードのリストに追加する。 ↓ 担当 Token をもらって、担当 Range が決まる。(基本的には、デ…

Cassandraソース解析(2) - Gossip による情報交換を整理する

ざっくり全体像 各ノードは、定期的に『ランダムに選んだノード、および、ランダムに選んだシード』と Gossip パケットを交換する。Gossip パケットの 1 回のやりとりは、Syn → Ack → Ack2 の 3way で行われる。このやりとりの中で、双方のノードは、相手が…

Cassandraソース解析(1) - ノード起動時の動きから読んでいく

訳あって、Cassandra のソースを読んでいます。バージョンは 0.6.8 です。(以下、執筆中です。日々変わります。) 主な登場人物 CassandraDaemon : 最初に起動するデーモン StorageService : データアクセス処理の中心となるシングルトン CustomTThreadPool…

Jaql入門(番外編) - バスケット解析

何をするかと言うと。。。 ASCII.technologies 2011年1月号で、リッテルの清田さんが、バスケット解析処理を Hive で記述した例を掲載しています。同じ事を Jaql でやって、Hive との違いを味わってみます。 前準備 使用するデータは、Pig に付属の Web 検索…

Jaql入門(4) - さまざまなサンプル

wordcount jaql> splitArr = builtin("com.acme.extensions.expr.SplitIterExpr$Descriptor"); // 組み込みの split 関数 jaql> read(lines("Karamazov.txt")) -> expand splitArr( $, "[^\\w]+" ) -> group by $word = $ into { $word, num: count($) } -> …

Jaql入門(3) - ユーザ定義関数

median 関数を定義して使用する例です。足し算(add)と配列をソートしたときの真ん中の値(median)を定義して使用しています。 $ nl function.jql 1 $add = fn($a, $b) ( 2 $a + $b 3 ); 4 // $add( 1, 1 ); => 2 5 $median = fn($items) ( 6 $sorted = $i…

Jaql入門(2) - 基本操作と変数の使用

7人兄弟の英語と理科の試験結果を処理します。 Filter $ nl filter.jql 1 [ 2 { id: 1, math: 10, science: 100 }, 3 { id: 2, math: 90, science: 30 }, 4 { id: 3, math: 20, science: 80 }, 5 { id: 4, math: 40, science: 60 }, 6 { id: 5, math: 80, sc…

Jaql入門(1) - データフローと I/O

Hello, World! $ nl hello.jql 1 [{text: 'Hello, World!'}] -> write(file('hoge.json')); 2 read(file('hoge.json')); 3 quit; $ jaqlshell -cb hello.jql { "location": "hoge.json", "type": "local" } [ { "text": "Hello, World!" } ]Jaqlが扱うデータ…

JAQL実行環境のセットアップ手順 (obsolete)

注意 最新バージョン 0.5.1 が pre-build バイナリで提供されるようになりました。pre-build バイナリを利用した手順はこちらです。以下の手順は、0.4 が最新の時代の手順ですので、古い内容になりますが、参考のために残しておきます。 -------------------…

確率変数の測度の導出

すいません。。。。趣味のメモになってます。 定義 確率空間 の上の確率変数 X から誘導される可測空間 を考える。この時、 に誘導される確率(測度)を次式で定義する。 定理 証明は次の通り: が の指示関数、すなわち、の場合を考えると、 で、自明に一致…

ピアソンのカイ二乗検定の基礎となる定理

mimetex の練習がてらに。。。。 定義 : 確率 に従う母集団からのランダムサンプルここに、は、の開集合とする。 : 尤度関数ここに、 を帰無仮説の範囲とする。(つまり、 が帰無仮説。) 定理 すなわち、、もしくは、 とする時、証明、および、成立条件は、…

MapReduce デザインパターン (6)

"Graph algorithms" を考えます。下図の S, A, B, C, D は 5 つの Web ページで、矢印は、Web リンクを表しているとします。(このような関係は、『有向グラフ』と捉えることができます。)このとき、ページ S からスタートして、最低、何クリックで、A 〜 D…

MapReduce デザインパターン (5)

"Inverted Indexing" を行います。これは、文書番号がついた複数の文書がある時に、単語から文書を検索するための辞書を作成するものですが、最も簡単な辞書としては、 (Key, Value) = (単語, その単語を含む文書の文書番号のリスト)というデータの集まりが…

MapReduce デザインパターン (4)

"word co-occurrence problem" の Pairs パターンの応用問題を考えます。例えば、(You, are), (You, don't) ・・・など You から始まる単語のペアが全部で 120 回出現しており、その中で、(You, are) が 80 回だとすると、全体に対する割合は、80 / 120 * 10…

MapReduce デザインパターン (3)

"word co-occurrence problem" (文書内の近くにペアで出現する単語の数をカウントする処理)の2つの基本パターンである "Pairs" と "Stripes" から、Stripes を見てみます。 ソースコード 今度は、1つのレコード(1行)の中に同時に含まれる単語のペアの…

MapReduce デザインパターン (2)

"word co-occurrence problem" (文書内の近くにペアで出現する単語の数をカウントする処理)の2つの基本パターンである "Pairs" と "Stripes" から、まずは、Pairs を見てみます。 事前準備 「カラマーゾフの兄弟」のテキストを HDFS に保存しておきます。…

MapReduce デザインパターン (1)

はじめに この一連のメモは、Data-Intensive Text Processing with MapReduceに掲載されている Pseudo-code を実際に Hadoop で実行可能な Java クラスとして書いてみることを目的としています。Java のソースコードを掲載するついでに、各デザインパターン…

Haskell の Monad を圏論の Monad と対比する (2)

前回定義した圏論の Monad となるトリプレット (T, η, μ)から逆に、Haskell の Monad を構成するとこうなります。(Monad 則をつかってごにょごにょ計算すると分かります。) x >>= f := (μ.Tf)(x) return x := η(x) f:a->T a (Haskell的に言うと f:a->m a)…

Haskell の Monad を圏論の Monad と対比する (1)

定義 Haskell 圏 : H Objects O := "Haskell で定義される type の集合" = {Int, Char, String, (Int -> Int), ....} Morphisms M := "Haskell で定義される全ての関数の集合" Haskell の Monad m から誘導される Endofunctor T Object mapping T_O: Type ->…

Hine Sweeper

はてなダイアリーのシンタックス・ハイライトが Haskell に対応してると聞きました。。。hscurses ライブラリを入れてコンパイルしたら、TTY コンソールからこんな感じでお楽しみください。(移動:hjkl、マーク:x、開く:スペース) #################### # 1…

ゲーデルの対角化定理の厳密な証明を対角線論法と対比する

前原昭二「数学基礎論入門」「8.5ゲーデルの対角化定理-定理8.3」の証明を対角線論法との対比を明確にしようとがんばった結果。 (1) *n* :自然数nに対応する対象式(論理記号としてのn) 『A』 :論理式Aのゲーデル数に対応する対象式(論理記号) An(ξ) :…