yuu_nkjm blog
2012-02-01(Wed) 編集
[locate][openSUSE][Linux] locateに検索漏れ(updatedbにインデックス漏れ)がある
インデックスが意図通り作成されていないと思った時は,updatedbの実行者(RUN_UPDATEDB_AS)と,除外ディレクトリの設定(UPDATEDB_PRUNEPATHS)の確認をする.
/etc/sysconfig エディタ 現在の選択: Applications/Locate RUN_UPDATEDB_AS: nobody ファイル: /etc/sysconfig/locate 入力可能な値: nobody, root または任意の値 既定値: nobody 説明: updatedb has a parameter "--localuser". It runs the "find" command as this user. Some people think this is a security hole if set to 'root' (because some directory information can be read which is normally protected). Others think it is useful to hold all files in the database. So if you want full information in locate db, set RUN_UPDATEDB_AS=root. If you want security use RUN_UPDATEDB_AS=nobody.
管理しているサーバではnobodyでの実行になっていた.セキュリティ的にはnobodyの方が良いのだろうが,rootでインデックス作ったほうが便利は便利なんだよなー.
いずれにせよ,存在するはずのファイルがlocateで見つからないぞって時は,まずはfindしてみた方が良いな.
2013-02-01(Fri) 編集
[R言語] 統計処理言語Rによるグラフの重ね描き
別サイトに掲載していた記事を再掲載.2008-09-29に書いた様だ.
はじめに
シミュレーションの結果のグラフをひたすら描画させることを目的としてR言語を使ってみました.後輩に作業内容を伝えるために書いている文書を公開.プログラム書いてから,日が経ってしまったので,なかなか思い出せない….
やりたいこと
- ./result/id/ディレクトリの下にある,CSVファイルにsimWriterという関数を適用する.
- 色分けしたグラフを重ね書きする.
一括処理をする
一括処理のコード全体
resultDir = "./result/" ids <- list.files(resultDir); <strong>#(1)</strong> for (id in ids) { <strong>#(2)</strong> directoryName <- paste(resultDir, id, "/csv", sep=""); <strong>#(3)</strong> files <- list.files(directoryName, pattern=".csv"); <strong>#(4)</strong> for(file in files){ fileBase <- sub('(.*).[^.]*', "1", file); <strong>#(5)</strong> try(simWriter(resultDir, id, fileBase)); <strong>#(6)</strong> } }
(1) result以下のディレクトリ階層は以下のようになっている.idsにA01,A02,A03が入る.
./result/ │ ├─ A01 ─csv─┬──000.csv ├─ A02 ├──001.csv ├─ A03 ├──002.csv
(2) シェルスクリプトチックなループ.
(3) paste関数は与えられた文字列を結合する関数.sepの値が結合部に挿入される.空にしたい時は""と書く.
(4) list.file関数により,対象ディレクトリ以下のpatternにマッチするファイル名を取り出す.
(5) 正規表現を使った文字列操作.sub関数により拡張子を取り除いた文字列を生成.
(6) try関数を用いることで,エラーがあっても停止せずに継続できる.
グラフの重ね描き
simWriter <- (resultDir, id, fileBase) dataFileName <- paste("resultDir", "hoge", sep="") orgDataFileName <- paste("resultDir", "fuga", sep="") resultTable<- read.table (dataFileName, header = T, sep="t", skip=2); <strong>#(1)</strong> subjectTable<- read.table (orgDataFileName, header=T, sep="t"); drawSimResult(resultTable); drawOrgData(subjectTable); dev.off(); }
(1) データの読み込み.セパレータはタブ.dataFileNameの先頭2行には人間が識別する用のデータが入っているのでスキップ.
drawSimResult <- function(resultTable){ plot(resultTable$kilo, resultTable$speed, type ="p", pch=15, col="blue", ylim=c(5,135), xlim=c(0.7,10.3), xlab = "", ylab = ""); #(1) }
(1) 散布図を書く.x軸がresultTableのkilo列,y軸がresultTableのspeed列.線は引かず点だけ.点の形は■(15番),色は青(16進数のカラーコードでもいける),x軸の描画範囲は0.7~10.3,Y軸の描画範囲は,5~135.x軸ラベル,y軸ラベルは無し.
drawOrgData <- function(subjectTable){ par(new = T); <strong>#(1)</strong> plot(subjectTable$KILO, subjectTable$SPEED, type ="p", pch=15, col="#FFE4B5", ylim=c(5,135), xlim=c(0.7,10.3), xlab = "", ylab = ""); }
(1) グラフの上書きをするコマンド(par(new = T)).
データファイルの中身
dataFileNameの中身はこんな感じ.
人間が読み取る データが二行 kilotspeed 1t100 2t110
orgDatFileNameの中身はこんな感じ.
KILOtSPEED 1t100 2t110