2013年3月28日木曜日

sudoユーザのてっとりばやい作り方

最近メモばかりで…、ちゃんとしたロジックを上げていないけど、使うとき必ず検索するのでメモ。

wheelグループに追加するのが早い。


 usermod -G wheel user_name

 visudo

    %wheel ALL~の行がコメントアウトされているので有効にする

2013年3月25日月曜日

tomcatのログなどメモ


30日前まで保存

vi /etc/crontab
#!/bin/bash
LOGDIR='/home/tomcat/Logs'
find ${LOGDIR} -mtime +31 -type f -exec rm -rf {} \;


 tomcatのログのlogrotateで管理

/etc/logrotate.d配下に以下のファイルを名前「tomcat」で配置


# Logrotate file for Tomcat

/opt/apache-tomcat-7/logs/catalina.out {
missingok
copytruncate
daily
rotate 30
sharedscripts
postrotate
/bin/rm -f /opt/apache-tomcat-7/logs/`date --d '31 days ago' '+*%Y-%m-%d.log'`
endscript
}


2013年3月23日土曜日

第25回データマイニング勉強会+WEB東京に参加してきた。

はじめに。

http://www.slideshare.net/hamadakoichi/tokyo-webmining-openingtalk


自己紹介。全員 ^o^;
ところどころメモ。


○コンバージョン
http://www.okuramkt.com/dic/effect/conversion.html


○Hadoop from PFI
http://www.slideshare.net/pfi/hadoop-2525724/36


○WEBHIVE from リクルート
https://github.com/recruitcojp/WebHive


○Cloudera Impala:HIVEをより早くしたもの(x10~30、x2~3、最速はx97)
→cloudera manager
→Impala:METAデータを自動で更新しない
http://www.slideshare.net/shiumachi/tokyo-webmining-20130323slideshare?ref=https://twitter.com/search?q=%23TokyoWebmining&src=hash


○データ分析する上で、SQLとか基本的な部分は押させておかないといかん。


○レコメンデーション運用
サービスをもっとよくする取り組み。
Amazonみたいなやつ。
PCとスマホ。
たくさん使ってくれる人にパーソナライズする。

予習・復習が出せたら面白いだろうな。

○ネット調査モニター
マーケティングリサーチ会社intage
動機付け。
理解出来なかった場合、わからなかった場合どうする?
ずっと同じデータだったらいい加減なんじゃないかと推測出来る。

楽しさ、達成感
→感情的なアプローチ

構造方程式モデリング SEM
:複数の要因感の関係を分析する統計手法。

測定値の背後に構成概念をつける。その集合として潜在変数を数値化。

例えば「学力」も潜在変数。各強化の得点や環境でなんとなく割り出されるもの。
SEMモデルと分析データを比較し、推論が合っているかどうか確認する手法。


多母集団同時解析
:2つの集団が異なる母集団と認めた上で、集団間に回答傾向の差が生じているのか検討する

→グラフィカルモデリング


○Hadoopと~
fusionIO

ムーアの法則
TOCの理論
ROI


知らないことたくさん聞けて楽しかった。
次回は解析手法と最適解探索アルゴリズムにつながる機械学習の話とかも聞けたら嬉しい。

2013年3月16日土曜日

eclipse EGitでbareリポジトリのcloneを作成する

EGitパースペクティブにリポジトリを設定する方法はここがわかりやすい。

EGitでは、リポジトリを登録する際、ソースを設置するディレクトリを指定出来る。

例えば以下の様な場所にソースが出来る。

/root/git/example

Javaプロジェクトのソースに、上記のパスを設定する必要がある。

gitリポジトリにcommitしてpush、pullする

ソースをcommitしてリポジトリAに反映しても、リポジトリAから作成したbareリポジトリB(開発者はそこからソースを取得する)には反映されないので、各開発者がpullしても、bareリポジトリにpushすることが必要。

コマンド、もしくはEclipseなどのツールで行う。

コマンドの場合は、リポジトリAからbareリポジトリBに対して以下のコマンドを実行する。

# git push ssh://example.com/opt/git/example.git

Eclipseの場合、commitと同自にpushが出来るので利用すると楽。
これでpullの準備が出来ました!

次回はバージョンとかタグの管理を行えることを目指す。

2013年3月12日火曜日

2013年3月6日水曜日

gitサーバからsshでcloneを作成出来る環境を作成する

サーバ側では、ベアリポジトリと呼ばれる特別なリポジトリを作成する。

# git clone --bare [元のリポジトリ] [bareリポジトリ名]

bareリポジトリが出来たら、ssh経由でサーバに設置する。

# scp -r [bareリポジトリ名] [user]@[ホスト or IPアドレス]:/[bareリポジトリを設定したディレクトリパス]

これで、以下のコマンドで、設置したサーバにsshアクセス出来るユーザならばcloneを作成出来るようになる。

 # git clone [user]@[ホスト or IPアドレス]:/[bareリポジトリパス]



大体git-scm.com見れば良い。


後日:
これって以下の作業を簡易的に行う方法だったぽい。

http://blog.s21g.com/articles/1312

eclipseでgitを使う

以下がわかりやすかった。

Git事始め 基本コマンドの整理


インストール

# yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel
...
Complete!
# git clone git://git.kernel.org/pub/scm/git/git.git (最新版取得)
Initialized empty Git repository in /home/git/.git/
remote: Counting objects: 149959, done.
remote: Compressing objects: 100% (38734/38734), done.
remote: Total 149959 (delta 109920), reused 149194 (delta 109288)
Receiving objects: 100% (149959/149959), 34.94 MiB | 1.86 MiB/s, done.
Resolving deltas: 100% (109920/109920), done.
# yum install git-core

ユーザの登録

#(or $) git config --global user.name "[現在のログインユーザ名]"
#(or $) git config --global user.email "[メールアドレス]"

設定の確認

#(or $) git config --list

gitのヘルプ

#(or $) git help <verb>


管理したいディレクトリでGitを使用するコマンド

必要なファイルを追跡対象にする

#(or $) git init
#(or $) git add *.java
#(or $) git add *.properties

.gitが設置してあるディレクトリでステータスを確認したい場合

#(or $) git status

何も変更が無ければ以下のように出力される。
# On branch master
nothing to commit (working directory clean)

例えばREADMEファイルを一つ追加すると
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README
nothing added to commit but untracked files present (use "git add" to track)

のように、Untracked filesがあることを知らせてくれる。
前回のスナップショットにこのファイルが無い場合、明示的に指示しない限りgitはこのファイルをバージョン管理・追跡に含めません。


新しいファイルの追跡


#(or $) git add README

これでREADMEファイルを追跡対象に含みました。
(ディレクトリを指定すると、配下のファイルすべてを追跡)
以下のようにstatusにnew fileが記載されます。

#(or $) git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# new file:   README
#

Changes to be committedによって、ステージされていると判断できます。
RAEDMEファイルを変更してgit statusを実行すると以下ようになります。

#(or $) git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# new file:   README
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   README
#

注意すべきは、ファイルを変更したら必ずgit addして、ファイルをステージすること。
ステージしたものがコミットできるものと認識しておくことが必要です。

無視したいファイル


ログファイルやビルドシステムが自動生成するファイルは、.gitignoreファイルに記載しておく。
ワイルドカードが使用できる。

例えば以下のように、.oまたは.aで終わるファイルとアーカイブファイルを無視します。

#(or $) cat .gitignore
*.[oa]
*~

logやtmp、pidといったファイルをここに入れてきます。
.gitignoreのファイル記述パターン

.gitignore ファイルに記述するパターンの規則は、次のようになります。

空行あるいは # で始まる行は無視される
標準の glob パターン(正規表現)を使用可能
ディレクトリを指定するには、パターンの最後にスラッシュ (/) をつける
パターンを逆転させるには、最初に感嘆符 (!) をつける

他の例

# コメント。これは無視されます
*.a       # .a ファイルは無視
!lib.a    # しかし、lib.a ファイルだけは .a であっても追跡対象とします
/TODO     # ルートディレクトリの TODO ファイルだけを無視し、サブディレクトリの TODO は無視しません
build/    # build/ ディレクトリのすべてのファイルを無視します
doc/*.txt # doc/notes.txt は無視しますが、doc/server/arch.txt は無視しません


変更内容の確認



引数無git diffは、変更したけれどステージしていない内容を見れます。

次にコミットするステージされた内容も知りたいときは、以下を使用します。

#(or $)git diff --cached

これで、ステージされたすべての変更を見ることができます。
すべてステージするとgit diffは何も表示しなくなるので、git commitを
行うと、すべてコミットができる。

git addをしたく無いとき、する必要が無いときには、git commit -a
とすることで、変更状態から自動的にステージしてコミットすることができます。

gitのリポジトリからファイルを削除したい

以下を使用します。

#(or $) git rm [対象ファイル]

gitの追跡からのみファイルを削除するには(HDD上には残します)

以下を使用します。

#(or $) git rm --cached [対象ファイル]


ファイル名の変更(mvコマンドを使用する)

#(or $) git mv [file_from] [file_tc]

コミット履歴の閲覧

以下のコマンドが便利です。

#(or $) git log --pretty=format:"%h - %an, %ar : %s"
#(or $) git log -p [-N]
pはコミットのdiffを表示するオプション
Nは直近いくつのエントリーを表示するかを指定します。

#(or $) git log -stat
各コミットのちょっとした統計データを確認する

オプションはたくさんあります。

オプション 説明
-p  各コミットのパッチを表示する
--stat  各コミットで変更されたファイルの統計情報を表示する
--shortstat --stat コマンドのうち、変更/追加/削除 の行だけを表示する
--name-only コミット情報の後に変更されたファイルの一覧を表示する
--name-status   変更されたファイルと 追加/修正/削除 情報を表示する
--abbrev-commit SHA-1 チェックサムの全体 (40文字) ではなく最初の数文字のみを表示する
--relative-date 完全な日付フォーマットではなく、相対フォーマット (“2 weeks ago” など) で日付を表示する
--graph ブランチやマージの歴史を、ログ出力とともにアスキーグラフで表示する
--pretty    コミットを別のフォーマットで表示する。オプションとして oneline, short, full, fuller そして format (独自フォーマットを設定する) を指定可能

履歴を見るとても便利な機能 gitk

以下でインストールするとgitkコマンドで使用可能。

#(or $) yum install gitk



作業のやり直し

直近のコミットをもう一度やり直す。
これは、ステージングエリアの内容をコミットに使用します。

#(or $) git commit --amend


ステージしたファイルの取り消し

git statusコマンドでreset用のコマンドを確認することもできます。

ex)
#(or $) git reset HEAD [ファイル名]


ファイルへの変更の取り消し

git statusコマンドでcheckout用のコマンドを確認することもできます。
ファイルの変更をすべて取り消す危険なコマンド

ex)
#(or $) git checkout -- [ファイル名]


リモートリポジトリについて

確認

名前に対応するURLも一緒に表示
#(or $) git remote -v

リモートリポジトリの追加

#(or $) git remote add pd [gitURL]


他のリポジトリから情報を取得する

#(or $) git fetch [リモートリポジトリ名]


リモートへのプッシュ

プロジェクトがみんなと共有できる状態に達したら、上流にプッシュします。

#(or $) git push [remote-name] [branch-name]