クラなんとか or くらなんとか or cla なんとかの日記

2010-12-25

MacOSX でのユーザの作り方(dscl)

メモ的に

全然知らなかったんだけど,MacOSX では,DirectoryService でユーザとかのリソースを管理してるみたい.

ということでユーザを作ってみた.

$ sudo dscl . -create /Groups/git gid 601
$ sudo dscl . -create /Users/git
$ sudo dscl . -create /Users/git RealName 'git version control'
$ sudo dscl . -create /Users/git UniqueID 601
$ sudo dscl . -create /Users/git PrimaryGroupID 601
$ sudo dscl . -create /Users/git NFSHomeDirectory /Users/git
$ sudo dscl . -create /Users/git UserShell /opt/local/bin/zsh
$ sudo dscl . -create /Users/git uid 601
$ sudo dscl . -create /Users/git gid 601
$ sudo passwd git ← パスワード設定
$ sudo createhomedir -b -u git

確認

$ sudo dscl . -read /Groups/git
$ sudo dscl . -read /Users/git
$ id git
uid=601(git) gid=601(git) ....

第一引数の"."(ドット) は,ローカルのdatasource らしい.

最初 /etc/{passwd,group} を直編集して,何でできないか不思議だったよ.

追記(2010/12/26 16:29)

uid/gid を,指定していなかったらそもそも createhomedir できなかったよ.

ご参考

2010-10-17

YAPC::Asia 2010 にいってきた

今回で二回目の参加になります

前回は,@issm さんと一緒に参加したんですけど,

今回は,@hatyuki さんも居て三人で回ったりもした感じでした.

それも ゆるくPerl を語る会 が出会いの場になったからですね.*1

ゆる Perl を開始してくれた id:trinity777 ++

時刻的にも,最後のまとめ的な位置付けということもあると思うのだけど,

最後のkeynote が一番心に残っているのですよ.

やっぱりid:miyagawa さんかっけー(miyagawa rocks) と思った訳です.

とあいえ,id:miyagawa さんのスライドにもあったけど,

Perl is glue language. なんすよ.

ちょっと話が飛びますが,id:nekokak さんの発表であったんだけど,

id:kazuhooku が書いてるから安心みたいな話があって,

普通に納得したりしてた.*2

一定の信頼があって,繋りがあるってことかなー.と思うんですよ.

その辺がglue なんかなー.とか.

つまりはPerl は最初から他のものの力を借りるように

デザインされていたんだよ.(Ω ΩΩ<な,なんだってー)

オブジェクト指向って,メッセージパッシング,疎結合みたいな独立したオブジェクトがあって,

それがいっぱい集まって有機的に何かを形成しているみたいなイメージ*3

があるんで,そういうモデルなんかなー.とか.*4

Larry も言ってたんだけど,

"楽しまなければならない"

好きなことをやればいいと思うのですよ.

やりたいことをやればいい.

コードを書いたり,いろいろすればいいと思うのです.

それで join するみたいなイメージを自分は持ちました.

ということで,萌えもポロリも涙も笑いもSQLインジェクションもある.

YAPC::Asia 2011 に,みなさんも行ってみませんか?*5

今後の話

そういう訳で,ゆる Perl も何回か続けてみたけど,

どうやら継続できそうに思えたので,

今度は Nagoya.pm にバージョンアップしてみて,

ゆるPerl 自体の活動が変わる訳じゃないんだけど,

だんだん,みんなが楽しめるようなことをやるように変化していきたいな.と思っています.*6

そんで,rocks と思われる存在になるのもいいんだけど,

自分なんかはそんなにスゴイ人じゃないし,コミュニティにコミットしてないので,できてないので駄目じゃん.じゃなくても.

まずは rocks と言われてる人を見て欲しい.

その空気みたいなものを Nagoya.pm の人と一緒に感じたいなー.とは思いました.

よせがき?

あ,かってに後夜祭の中で,いっぱいサインしてもらいました.

提案してくれた id:nipotan さん,id:yappo さん,他サインしてもらったみなさんありがとうございましたー.

本当,旧なお願いで申し訳ありませんでした.*7

脱線話1

JavaScript をテストするJSTAPd の話とか,

mod_rewrite をテストする話とか,

省サーバ運用の話でid:nekokak さんが自分が決めたところまでは自分で見たいみたいな話があって,

そういう感覚って,完全に TDD の安心に繋がってるのかなー.とか思ったりもしてみた.

というか,Perl 界隈でテスト書かないとか無いですよね.みたいな*8

ということで,TDD 的な思想が当たり前過ぎてグリーンバンドをしてたけど,誰も触れてくれなかったYO!

脱線話2

Perl の人(主にd の付く人)は PHP をあまりイジめないでください,とか

Perl の人怖いとかいう話もあって,*9

うーん.評価とイジメは違うんだけどなー.

とか,PHP をHack するみたいな発想が,そもそもないのかなー.とかは思ったりした.

Ruby 界隈はそういうのも充分懐が広い気が(勝手に)してる.*10

あー,これもPHP DIS ってる,とか言われちゃうかなー?

リンク

  • サインしてもらいました

言語設計者たちが考えること

オライリージャパン
売り上げランキング: 1530
おすすめ度の平均: 4.0
3 軽い読み物
5 個性豊かな言語設計者の考え方がわかる

  • とりあえず

Smalltalkで学ぶオブジェクト指向プログラミングの本質
青木 淳 浅岡 浩子 澤本 依里
日経BP社
売り上げランキング: 128284
おすすめ度の平均: 4.0
5 オブジェクト指向を習う
4 古典的な「Smalltalk-80」の子孫であるVisualWorksの入門書として
4 オブジェクト指向で1冊目じゃなきゃ
2 ちょっとこれは・・・
4 “純正”Smalltalk-80の流れを受け継ぐVisualWorksの入門書として

  • たまたま思い出した

情熱プログラマー ソフトウェア開発者の幸せな生き方
Chad Fowler
オーム社
売り上げランキング: 134342
おすすめ度の平均: 4.5
5 「ソフトウェア開発者の幸せな生き方」とは
3 並ではあるが若手(のみに)読ませたい
5 社会人のみならず、学生にも是非読んで欲しい一冊

*1:途中一緒に昼食したとき,PHP のライブラリのポーティングの話をずーっとしてたのは秘密だ.

*2:誤解して欲しくないんだけど,無条件に受け入れるという話ではなく,理由があってやっているだろうから聞けばわかるだろうな.という予想みたいな話

*3:Smalltalk で学ぶオブジェクト指向プログラミングの本質

*4:逆か?自分にはそういう心理モデルがあるから,そう理解してしまうだけ?そう認識するだけ?Naming is hard

*5:あり?Hokkaido.pm だっけ?

*6:ゆるPerl in 岡山.とか?

*7:してもらったサインは,スタッフが美味しくいただきました.後で上げる?

*8id:yappo さんのセッションのときでもテスト書いてない型?と訊かれて誰も(?)手を上げてなかったような

*9:主に id:tokuhirom の人だけじゃね?という意見があったり無かったり

*10:OOP 界隈と密結合で,ファシリテーションとかあるから?メタプログラミングが関係するとか?そういえば PHP のメタプログラミングの話もしたなー(閑話休題)

2010-10-09

Git-Http をやってみた

ようするに,以下が必要らしい.

  • WebDAV
  • Git --bare 的なもの
  • git server-update

Apache 側は

  • ロケーションに対して DAV on する
  • passwd (Auth)
$ cd /etc/apache2
$ vi httpd.conf
$ git diff httpd.conf
-#Include /private/etc/apache2/extra/httpd-dav.conf
+Include /private/etc/apache2/extra/httpd-dav.conf

*1

repository 側は,

  • hooks/post-update - update-server-info
$ mkdir ~/Sites/my-new-repo.git
$ cd !$
$ git init --bare
$ cp hooks/post-update.sample hooks/post-update
# 最初から update-server-info の設定になってる!
$ vi .htaccess
$ cat !$
AuthType Basic
AuthName "Git"
AuthUserFile /Users/clairvy/Sites/my-new-repo.git/passwd
Require valid-user

最初 info/refs が無くてなんでやねん.

と思っていたら.単に typo していただけだったという.

参考

*1:なんかコマンドで a2e 的な有効にしたりするのかなぁ?

2010-09-22

Git 勉強会に行ってきたよ

会では全然Git の話とかしてなかった気もしましすが,

なんか名指しされたので Git 関連の今の自分の設定的な話を

一回まとめて晒しておこうかな.と思います.

最初に設定するような人は参考にしてもいいかもしれません.

自分は Zsh と Emacs 派なので,Git 関連は以下を使っています.

  • .gitconfig のalias
  • Zsh の補完機能
  • Zsh のプロンプト変更機能(vcs_info)
  • Emacs (Egg.el)
  • gisty - gist へポストするコマンドラインツール

.gitconfig の alias

Git はデフォルトだと短いサブコマンドが使えません.

そこでSubversion でも使っていた感じで使えるよう適当にalias しています.

# $HOME/.gitconfig
[alias]
        st = status
        ci = commit
        co = checkout
        br = branch
	dif = diff

diff は,di だと ci を打ち間違えそうだし,df だと

イメージとして df コマンドが思い浮かぶので,dif と

あまり短くない感じになっています.

この辺は好みで.

Zsh の補完機能

Zsh は補完機能が豊富なので,とりあえず compinit だけでも使えます.

#!/usr/bin/env zsh
# .zshrc の設定

# 補完設定
autoload -Uz compinit; compinit

# 自前で用意した関数用の設定
typeset -U fpath
fpath=(~/.zfunctions/Completion ${fpath})

自分の場合は,最近 git submodules を覚えたので,

それ補完してくれる設定を使っています.

それについては d:id:clairvy:20100909:1283982598 を参照のこと.

で,良いのを見付けたので,http://gist.github.com/591626

使おうと思っています.これを.zshrc からロードするようにすればOK.

$HOME/.zfunctions/Completion/_git

ファイルを置いています.

vcs_info - プロンプトに branch 名を表示

トピックブランチを切るようになると,ブランチをコロコロ切り替えるので,

現在の居るブランチを知りたいと思うようになります.

git br で毎回調べるのもいいですが,

Zsh ならプロンプトに出しておくのもいいでしょう.

#!/usr/bin/env zsh

# プロンプト用
setopt prompt_subst
autoload -U colors; colors

if [[ $ZSH_VERSION == 4.3.* ]]; then # 今だとあまり無いけど,一応古いもの対策
  autoload -Uz vcs_info
  zstyle ':vcs_info:*' formats '(%s)-[%b]'
  zstyle ':vcs_info:*' actionformats '(%s)-[%b|%a]'
  precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
  }
fi

参考

  • man zshcontrib

以前,一つ前のブランチに戻りたいという要望を見た気がするので,

cd - 的な git co - 的な機能もあってもいいかなー.と

今妄想中だったりします.

と思って検索したらあったので設定しました.

これは,submodule の設定も含んでいるので,.zshrc からロードしています.

参考

Egg

Emacs は Egg.el を使っています.

コマンドラインで Chunk を扱うコマンドは全然覚えてませんが,

一部をstaging したり,undo するときには結構便利に使っています.

;;; git(egg)
(setq egg-git-command "/opt/local/bin/git") ; MacPorts 版の git を使う
(setq load-path (cons (concat home "/.emacs.d/egg") ; egg へのパス
                      load-path))
(require 'egg)

上記設定で,M-x egg-status で差分が出るので,

その変更に対して,staging したりコミットしたりできます.

C-x v b でブランチ作成とか,C-x v ~ でチェックアウトとかできるけど,

自分はコマンドラインで確認しながらやることが多いです.

gisty

gist を使うときには,コマンドラインで gisty というコマンドを使っています.

これを使ってpost してから,更に変更を加えて,

というパターンが多いです.

gisty も補完してくれるよう設定してあります.

が $HOME/.zfunctions/Completion/_gisty に置いてあります.

参考

2010-09-04

Scala座01 にいってきた

なんかよくわからんけど,Ust配信と場内無線LAN 提供係になってみた.

発表はあまりちゃんと聞けなかった気がするので,

後で資料見たい感じ.

(何しに行ったの?www)

LT をしましたが,発表慣れしてないので,

超スピードでスライドを飛ばしまって,

時間があまるわ,見てる人には意味不明だわ

で,ご迷惑をおかけしました.

これは練習するしかないね.

覚えてること

  • takedasoft さんにブログ参考にさせてもらってます御礼を言えなかった
  • kmizu さん(だっけ?)に,ヒントをもらった
    • インタプリタを起動させっぱなしにするとか?
  • id:papamitra さんと ensime 話をしたかった
    • まぁ,これは 名古屋Scala に行けばいいか
  • _ のスコープは,レキシカル

スタッフとしての反省点

  • 一般の人から見てスタッフがわかりにくかった気がする.
    • 中央とか電源が取り難かったけど,すぐに対応ができなかった
    • 誰がスタッフかわかれば,その人から相談できた気がする
  • 休憩があまり無かったので,色々後手
    • 電源の件もそうだけど,Ust でどうやったらいいかとか連携の相談もできなかった
  • 机密集しすぎで移動できぬ
    • トイレ行けたの,LT の準備したときだけだったり

とあいえ,なんとか終わったので良かったです.

また次回のScala 座でお会いしましょう.