【svn】バックアップをとりましょうの巻
(ΦωΦ)にゃ♪
今日はネコの日だって(ΦωΦ)
さてさて。svnのお話。
最近、とあるsvnを引き取ってくれといわれたので、引き取ったら、
バックアップが1年以上動いていなかった.....orz
てか、ディレクトリ毎まんまrsyncsしようとしてたらしく、それがこけてたよ|ωΦ)
svnにはsvnsyncという便利なコマンドがあります。
svnのミラーを作る感じ。
仮に本体が使えなくなっても、ミラーをとっておくとそっからデータを参照できたり、
最終的には本体に昇格させることも可能です
移行のときにも使えるよ(ΦωΦ)♪
前提
今回は、svnの本体はすでに存在してまふ。
svnのバージョンはこんな感じ。古め
$svn --version svn, version 1.6.11 (r934486)
仮に、バックアップを取りたいリポジトリの名前をnekoとして
手順を説明していきます
バックアップ先のサーバさんの準備
バックアップ先のサーバさんにリポを作る
$cd /var/svn/repos
$/usr/bin/svnadmin create neko
pre-revprop-changeを作る
svnsynvはフックの仕組みで動くので、リビジョンの変更可能にするために設定をいれます
cd neko/hooks
vim pre-revprop-change
pre-revprop-changeの中身はこれだけでOK。
#!/bin/bash exit 0
フックスクリプトに実行権限を付与
$chmod +x pre-revprop-change
本体svnのuuidとバックアップ先のuuidをそろえる
#セット $/usr/bin/svnadmin setuuid /var/svn/repos/neko ${本体svnのuuid} #変更されていることを確認(本体のsvnのuuid調べるときもこのコマンド) $/usr/bin/svnlook uuid neko
svn本体からsvnsyncの設定
svnsync実行
$/usr/bin/svnsync sync svn+ssh://${バックアップ先のIP}/var/svn/repos/neko
動作確認
ちゃんとsyncできた?
最新のリビジョン番号みてみる
$/usr/bin/svnlook youngest neko
バックアップ先からチェックアウトできる?
適当なところからチェックアウトしてみて(ΦωΦ)♪
$svn checkout svn+ssh://${バックアップ先のIP}/var/svn/repos/neko #なんとなくからじゃないよねーって確認した $ ls
ちなみに、下準備でsetuuidをちゃんとしてないと、
本体から、バックアップに切り替えたときに
svn: Repository UUID 'fecb33dc-96d4-4d15-a2d6-66e738cd1f83' doesn't match expected UUID '7c6c9d4a-4ae7-452e-9002-9b899cebdb0f'
みたいなエラーがでてうっとおしいよ
そのほか
全然本質じゃないけど、大きなリポをバックアップ取るときは
バックグラウンドで流すのを忘れずに。。
$nohup /usr/bin/svnsync sync svn+ssh://${バックアップ先のIP}/var/svn/repos/neko &
バックアップ先で様子見など。。
$while true; do svnlook youngest repo; sleep 5; done
もっといい方法があるかもしれないけど、ひとまず。。
追記
同期先リポジトリのロックを取得できませんでした。現在 'hostname:378ba4cd-6fc1-48fa-bb22-33e092a7d8bb' が所持しています
途中でエラーになるとたまにでる
$ svn propdel svn:sync-lock --revprop -r 0 svn+ssh://${バックアップ先のIP}/data/svn/repos/neko 属性 'svn:sync-lock' をリポジトリのリビジョン 0 から削除しました
svnsync: Error while replaying commit
なんか、ファイル名に空白が入っていたよ(つд⊂)エーン
空白いやよー。
スキップオプションとかないので、こけたリビジョンのsvn diffとって
$svn diff -r 146:147 svn+ssh://${本体のIP}/var/svn/repos/neko
その変更をシンク先にコミット|o゚д゚)
なんかsync先のリビジョン番号をみているみたいなので、
うまくスキップできました。。。。
力技。。もっといい方法があるやも
【mac】texいれたお
珍しく資料を作る需要ができた。
ちょっとしたテキスト資料であれば、最近気に入って使っているTreeを使うんだけど
画像とか入れたり、ある程度きちんとした資料を作りたいので、
texを使う事にした。
なんでtex?
昔、大学で論文書くのに使ってたりして
pLatexがもともと好きだからっていう。。
HomeBrewでインストールできるのかね・・・?
HomeBrewとかでインストールできないかなーと探してみた。
$brew search tex asciitex chktex latex-mk rtf2latex2e texwrapper auctex gettext latex2html texi2html vilistextum bibtex2html html2text latex2rtf texinfo blahtexml itex2mml libgtextutils texmacs If you meant `tex' precisely: Installing TeX from source is weird and gross, requires a lot of patches, and only builds 32-bit (and thus can't use Homebrew deps on Snow Leopard.) We recommend using a MacTeX distribution: http://www.tug.org/mactex/
なんかMacTexを薦めてきた。。
MacTex...なんだろ。。pLatex使いたいんだけど。。
まあいいか。。。
MacTexいれる
なんかここに色々情報がのっていた
Mac - TeX Wiki
MacTexのダウンロード
公式サイトからパッケージをダウンロードしてくる
MacTeX - TeX Users Group
こっからシャキシャキ「続ける」ボタンの連打で行けるかと思ったんだけど
なんか4Gくらいディスク容量が必要らしい。
え。。そんなに何入れてくるの
ひどまず「続ける」をポチットする
ここで「カスタム」選択して、不要なインストールをやめよう
なんか軒並みダウンロードしそうなのを
2つにしぼった
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Mac#teb97a16
に説明が載ってるけど
TeXLive-2012:TeXLive本体
GUI-Applications:アプリケーションフォルダの中にTexフォルダができて
便利なツールがたくさん入るらしい。
これでインストール完了。
動作確認
tex編集用のフォルダを作成する
$ pwd /Users/pnsk/Documents/workspace $ mkdir tex $ ls direct intellij tex
texフォルダに移動して
ちょーシンプルなファイル(test.tex)を作成してコンパイルする
\documentclass[11pt,a4paper]{jsarticle} \title{タイトル} \author{pnsk} \date{2013/02/11} \begin{document} \maketitle \section{texいれてみた} テスト \end{document}
実行
$ platex test.tex $ ls test.aux test.dvi test.log test.tex
dviファイルがみれない。。
dviファイルで更新した内容の表示確認したいんだけど。。
なんか面倒だからdviファイルをpdfに変換した
$dvipdfmx test.dvi test.dvi -> test.pdf [1] 2146 bytes written
ひとまず。。
【読書】Webサービス開発 ~ [速習]リーンスタートアップ〜
本屋さんで目について思わず購入してしまった。
一番初めの「[速習]リーンスタートアップ」の章のまとめ。
たかだか15ページくらいのものなんだけど。。
今考えているプロジェクトの進め方に模索しながら読んでみた。
リーンスタートアップのプロセス
メモトピックだけまとめる。
「膨大なリソースを投入してロケットを打ち上げるのではなくて、
車の運転のように操作ごとにフィードバッグを得ながら
調整を行うプロセスを重視して運用せよ」
自分が現在立てている仮説に対して、本当にそれがあっているのかを確かめながら
「ユーザにとって」本当に価値のあるものを見つける事。
難しいけど、可能な限り考えていかなきゃなぁ・・・と。
自分の考える仮説が、どこまであっているのかを
振り返りながら、軌道修正しながら進めていかないと、
ただの独りよがりになっちゃうなぁ。
仮説の設定では、価値仮説と成長仮説をたてること。
価値仮説:なぜそれを使うか。
(ユーザ: )は
(欲求: )したいが、
(課題: )ので、
(製品の特徴: )に価値がある
成長仮説:なぜ利用者が増えるのか
(ユーザ: )は、
(きっかけ: )することで、
(需要の発生: )するようになる
仮説の検証では、BMLループを行う
- Build
- Measure
- Learn
実用最小限のプロダクトを用意してBMLループを繰り返す
Build
できる限り最小限の労力と時間
Measure
「コホート分析」
コホートはユーザグループのことをさす。
複数のユーザグループに施策の出し分けをして、比較評価する
「アクティブ比率に注目する」
→プロダクトのパフォーマンスを純粋に評価するため
Learn
計測結果から、なぜその結果が得られたのかを考えること。
本文より
「どんなに多くのユーザの結果を拾っても、
やることだけが増えて余計に混乱し、次ぐに何をしたらよいかさえ
わからなくなります。」
この状況はよく目にするし、自分自身も陥らないように
とても注意を払う必要があるな。。
ピボット(方向転換)
成長がとまった、または鈍化した場合に考える
クックパッドの仮説
食品流通プロジェクトの例が書かれているのだが、
以下、メモ。
ピボット(方向転換)する基準について:
今やろうとしている施策の成功/失敗をあらかじめ定義しておく事
なるほど。これはやっておこう。
てか、すでにまとまっている内容を、さらに割愛するとか邪道かも。。(;゚ロ゚)ハッ
でも参考しにしお( • ̀ω•́ )✧
【読書】プロダクティブ・プログラマ 〜実践編〜
技法編の続き。
【読書】プロダクティブ・プログラマ 〜技法編〜 - 気ままなつぶやき
以前書いたの技法編と同じく
とても個人的な見解を織り交ぜて、気に入った部分だけをピックアップしますた
古代の哲学者の教え
複雑性には、2つある。
- 本質的複雑性:本質的な複雑さ
- 偶発的複雑性:本質に関係なく生まれてしまった複雑さ
この中から偶発的複雑性の原因を見つけだし、排除し、
本質的複雑性に対して対処する。
偶発的複雑性に時間をとられてはいけない
オッカムの剃刀
「ある事柄を説明するために、必要以上に多くの前提を仮定するべきではない」
過去の教訓
「昔のテクノロジーから得られる教訓にも目を向けてみる」
by 本書のNOTE
権威を疑う
開発チームをまたいだ標準化も、方法を誤ると
標準化されていないことよりも、悪となる可能性がある
「当たり前とされていることに疑問を持つ」
怒れるサル
「今までそうしてきたから」を理由にしてはいけない
「なぜそうしてきたか」を考えなければならない。
これは本当に大事なことだと思うなぁ(´・ω・`)
目的が達成できるのであれば、慣例に習う意味なんてないと個人的には思う。
流れるようなインターフェイス
DSLで主流になっているスタイル
JavaBeansの仕様から外れた例。
アンチオブジェクト
問題の「前景」と「背景」を入れ替えて、問題をより単純にして解決する
メタプログラミング
Javaのリフレクションは制限が強い
JVM上で動くGroovy。Javaより、簡潔にリフレクションのコードが記述できる
また、RubyはJavaよりも遥かにメタプログラミングをサポートしている
ただし、使い方を誤ってはいけない
Composed MethodパターンとSLAP
Composed MethodパターンとTemplate Methodパターンの説明。
要は、処理をメソッドに分割しているのと継承。
再利用が可能になり、TDDも採用しやすくなる。
SLAP
Single Level of Abstraction Principle
「同じメソッドに属するコードの抽象化のレベルを統一する」
多言語プログラミング
これはスキップ
理想のツールを探す
理想のテキストエディアを求めて
「理想のエディタ」に必要な機能
- マクロレコーダ:同操作を繰り返す場合は、マクロレコーダを活用
- コマンドラインからの起動が可能:TextMateはできるよ
- 正規表現による検索・置換が可能
- データの追加が可能なクリップボード
- マルチレジスタ
- クロスプラットフォーム
不適切なツールを拒否する
適切なツールを選ぶのと同じくらい重要
こんな感じ(○゚ε゚○)
適切なツールを選択するって難しいな。
それがフリーのツールであれば、もう少し気楽に取り組めるんだけど
有償のものを導入したい場合は、失敗した時のリスクもあるから、色々検討が必要。
むずかしいね
【linux】ディスクパーティション
メモ。
今回はディスクパーティションを切ったよ。
環境
$cat /etc/issue CentOS release 6.2 (Final)
初期状態の確認
$df -h Filesystem Size Used Avail Use% マウント位置 /dev/sda2 30G 1.6G 27G 6% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda1 504M 63M 416M 14% /boot
ディスクのパーティション情報の確認
#rootユーザで実行 $/sbin/fdisk -l ディスク /dev/sda: 599.6 GB, 599550590976 バイト ヘッド 255, セクタ 63, シリンダ 72891 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0004a604 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 66 524288 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 66 3982 31457280 83 Linux /dev/sda3 3982 4243 2097152 82 Linux スワップ / Solaris
わいわいと情報がでてきたよ。
まあひとまず、/dev/sda3まであるってことがわかた
(ほとんど何もわかっておらんw)
ディスクパーティション追加
パーティションの追加をする
この一連の操作はLinuxコマンド集 - 【 fdisk 】 ハード・ディスクのパーティションを設定する:ITproがすごくわかりやすい。
細かいことはこれをみよう
$/sbin/fdisk /dev/sda 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): n #パーティションの新規追加 コマンドアクション e 拡張 p 基本パーティション (1-4) p 選択した領域 4 最初 シリンダ (4243-72891, 初期値 4243): 初期値 4243 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (4243-72891, 初期値 72891): 初期値 72891 を使います コマンド (m でヘルプ): p #パーティション情報を表示して確認 ディスク /dev/sda: 599.6 GB, 599550590976 バイト ヘッド 255, セクタ 63, シリンダ 72891 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0004a604 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 66 524288 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 66 3982 31457280 83 Linux /dev/sda3 3982 4243 2097152 82 Linux スワップ / Solaris /dev/sda4 4243 72891 551417213+ 83 Linux コマンド (m でヘルプ): w #変更の保存 パーティションテーブルは変更されました!
設定が追加されているのを確認
$/sbin/fdisk -l ディスク /dev/sda: 599.6 GB, 599550590976 バイト ヘッド 255, セクタ 63, シリンダ 72891 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0004a604 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 66 524288 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 66 3982 31457280 83 Linux /dev/sda3 3982 4243 2097152 82 Linux スワップ / Solaris /dev/sda4 4243 72891 551417213+ 83 Linux
sda4が増えているのが確認できたね。
サーバの再起動
設定を反映するためには再起動が必要。
サーバ再起動する前は、/dev/sda4がまだ存在しない
$/sbin/shutdown -r now
ファイル・システムを構築する
$/sbin/mkfs.ext3 /dev/sda4
デバイスとファイルシステムのマウント
マウントするポイントとなるディレクトリを作成する
$mkdir data
fstabを変更してデバイスとマウントポイントの設定をする
$vim /etc/fstab
fstabには、下記のように項目を追加する
/dev/sda4 /data ext3 defaults 1 2
それぞれの意味は、前から
- マウントするブロックデバイス」
- マウントポイント
- ファイルシステム
- マウントオプション
- ファイルシステムをdumpする?(0:しない、1:する)
- システム起動時にfsckする?(0:しない、1以上をしている場合は「する」。あとはboot時の優先度になるので、1:ルートファイルシステムでチェック、2以降は:ルートファイルシステム以外を指定する)
fstabの編集を反映する
$mount -a
確認
$mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sda4 on /data type ext3 (rw)
きたぜきたぜ
$df -h Filesystem Size Used Avail Use% マウント位置 /dev/sda2 30G 1.6G 27G 6% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda1 504M 63M 416M 14% /boot /dev/sda4 518G 198M 492G 1% /data
万歳三唱ヽ(`(∀`(´∀`)´∀)´)ノ
2012年を振り返り。
てか去年は違う方のブログに書いてた。
1年のふりかえり - pnskのブログ
2012年は本当に「試練の年」だったなぁ。
1月ー2月
某プラットフォームの認証システムを開発中。
開発メンバーは実質わたし1人。
同期がプロデューサーやディレクターとのやり取りをしてくれて
わたしは仕様変更や新しい仕様について実装していく感じ。
二人三脚だな。
もうただただ実装。
しんどいとか辛いとかそういった事に目を向けていては
リリースが間に合わないと思っていたので
ただただ必死w
得た事
大変な中でも、新しい技術を学んで時期であり、
エンジニアとしてはとても鍛えられた時期
新しいものに対する耐性が一気についた。
自分でも「あぁここ乗り越えたら大きく成長できるだろうな」と実感していた
3月-5月
1つの節目。
いつも背中を押してくれていた先輩社員の退社を知らされた3月の初め。
「まだ何も恩返ししてないのに」ただそれだけ思った。
急に知らされたのでショックすぎた。。
それから
一緒にやってきた同期と、もう一人いつも応援してくれた先輩も
会社を去っていった。
ごーん.....orzってかんじ。
開発に必死なのやら、ショックなのやらでもうどうしたらいいんだ状態で
入社してからこれほどにも押しつぶされそうになったことがなかったなぁ。
本当に背中を押してくれていた尊敬できる人たちが皆無になった時期ですた。
本当にただただ悲しさがこみ上げていた時期。
得た事
本当に精神的に鍛えられた時期。
これほど辛かった時期はないので、これ以上のことがへっちゃらになった
いいのかは謎w
6月-9月
孤独期
7月頃にずっと開発してきた認証システムのリリース。
本当にあれほどに「独り」を感じた事はなかったなぁw
6月に入社仕立てのメンバーと2人で認証システム。
てか実質ひとりであった。
毎日のようにVMWareが落ち、障害アラートがなり・・・。
毎日のように、仕様についてのお問い合わせとかがくる。
組織的にまだ新しく未熟な面もあったので、自分がもっていた常識が通じない。
アラートの反応スピードも、解決スピードもただただもどかしさを感じていた。
でもきっとわたしにスーパースキルがあれば乗り切れたのだろうな
9月にシステムを落ち着かせ、サーバを実機に変更し
認証チームに2人メンバーを追加してもらって、チームを去った。
10-12
開発標準化チームに専念
以前からやりたかった開発標準チームに専念する事になった
業務委託さん2人との3人体制。
本当に、自分がこれやろって思った事を進めていける場所。
でも、いくらさぼっても誰も文句を言われない場所。
5年目ですでに古株とか早いなぁ
今の環境に甘んじたら終わるなぁと思いながら
自分で自分の背中を押す感じ。
総括
お別れが多い1年でした。
その中で自分を、エンジニアとして1から磨き直さなきゃいけないなぁと
思った1年でした。
途中から模索しながら、過ごしていた気がする
そして最後の最後に、かわいい後輩が背中を押してくれた。
来年どうするか
自分次第でなんとかなるんじゃないの?
を都合良く使ってしまわない事。
もっとチャレンジしていこう。
【linux】mailコマンド
「すみませーん。
mailコマンドで送り主設定したいんですけどできないんですー」(○´ω`○)ゞ
っていうお問い合わせより。
いやいや、なんでまた・・・とか思ってたけど、
結論から言うと、CentOS6系では標準でmailコマンドが入っていないっぽい。
無知の知(・ω・。)
ちなみに5系の場合
$ cat /etc/issue CentOS release 5.4 (Final)
φ( ゜゜)ノ
$/bin/mail -s test pnsk-mail@hogehoge.com -- -f test@test.mail
これで、
宛先がpnsk-mail@hogehoge.com
送り主がtest@test.mail
6系の場合
$ cat /etc/issue CentOS release 6.2 (Final) $ ls -l /bin/mail lrwxrwxrwx 1 root root 5 1月 19 19:14 2012 /bin/mail -> mailx
なんか、mailxコマンドになってる。
さっきのmailコマンドと同じ事をしようとするとこんな感じ↓
$/bin/mail -s "test" -r test@test.mail pnsk-mail@hogehoge.com
なんか宛先は必ず一番最後にもってこないとイケナイ。