投稿

12月, 2013の投稿を表示しています

*nixの入門にBSDはどうですか

ディストリビューション/パッケージマネージャ Advent Calender 25+1日目の記事です.
最終日なのにておくれましたが、神は寛大なので赦してくれるとおもいます.

さて、みなさんディストリビューションと言うと、Linuxばかりです.
たしかにカーネルだけを開発するLinuxと違いユーザーランドも作るBSD系は
ディストリビューションがあまりないです.
しかし、FreeBSDにいくつかディストリビューションがあるのはご存知でしょうか

Debian GNU/kFreeBSD
Gentoo BSD
ArchBSD
PC-BSD

上3つは、みなさんもどこかで目にした名前だとおもいます.

特に上2つ、DebianとGentooは本家がカーネルだけをBSDに挿し替えたプロジェクトとしてやっています.
FreeBSDのカーネルと同時に開発されてるユーザーランドのツール郡は、それをパッケージ化していますが、
その他追加としてインストールするパッケージはLinux同様それぞれのチームが保守管理しています.
しかし、FreeBSDはPortsで独自にパッチを当てていることが多く、普通にビルドしようとしてもコケることが多いです(ビルドシステムを提供するGentooはBSDで使うと割と悲惨です)

しかし、下二つ(ArchBSDとPC-BSD)はPortsからビルドしパッケージ化しているため、
比較的多くのパッケージが容易に使用できます.




ArchBSDはArchチームは関係なく、Archファンがやってるプロジェクトで、
今年の始めに*.isoなインストールメディアがリリースされた新しいプロジェクトです.
最初は全くパッケージがありませんでしたが最近はGnome等のパッケージも用意されています.
pacmanが使えるFreeBSDという感じなので、pacman以外のメリットはあんまりないかもしれません.







そして、最後に上げたPC-BSD、これを特に今回は紹介します

PC-BSDは、他3つと違い、純粋にFreeBSDのためだけのディストリビューションです.
Linux向けディストリビューションの派生とかじゃありません.
プロジェクトは2005年から始まっていますが2006年にiXsystemsが買収し、
現在もiXsystems社の元開発が行われています.



Debian、Gentoo、…

The Rust Programming Language

Rust Advent Calender 21 + 1日目の記事です. (ておくれました)

といっても特に良いTipsとかあるわけではないのですが、
今回初めて知って、インストールして使用してみた雑感などをば.

インストール

私が普段使用しているArch Linuxなら、
なんと公式のレポジトリ ( community repo )入りを果たしているために
最新のRust ( rust-0.8 )が特に特別な操作をしなくともインストールできます
# pacman -S rust Gentooの場合は
# layman -a gentoo-rust としOverlayを追加した上でrustをemergeしてください.
rust-0.8のebuildのIUSEが間違っててそもそもemergeが開始できなかった問題は修正されたはず
ただ、私の環境ではなぜかstage0のビルドでコンパイラがエラーを吐いたので、
rust-0.8でなくrust-9999をemergeしました.

Debian/Ubuntu/Mintの場合はnightly buildのPPAがある模様

Mac OS Xならhomebrewやmac portsですんなり入るっぽいです.

RedHat系は知りません.

つかってみる

公式にmanualtutorialがあります.
結構詳しくて良いですね.学習しやすそう.

とりあえず定番、フィボナッチ数を表示してみる
実行結果
0 term: 0
1 term: 1
2 term: 1
3 term: 2
4 term: 3
5 term: 5
6 term: 8
7 term: 13
8 term: 21
9 term: 34 変数は基本immutable、mutableな変数の宣言はmutで修飾しています.
パターンマッチが簡単に使えるのが良いです.
また、記法の雰囲気が従来のC系の言語に近いので
この言語を使ってみる精神的障壁が低いかもしれませんね.

見てわかる通り、ifやwhileの条件式(conditioal)は()で括ったりはしません.
関数の返り値はreturnで返しますが、実行の最後の値を返り値とみなせるようです
(returnの省略)
;セミコロンは文末やセパレータではなく、nilまたは()を返す文として;が使われるようです
(return ()と等…

情報技術者試験

イメージ
合格しました


@toshi_a被害者の会

イメージ
これは mikutter Advent Calender 2013 8日目の記事になります.



@toshi_a というておくれの教祖については、
mikutterユーザーの皆様はよくご存知だと思います.

そんな彼は今年のAdvent Calenderにかような記事を出しました

mikutter Advent Calendar 2013 3日目 mikutterのマルチアカウント・マルチサービス

mikutterは次期メジャーアップデートのver0.3からマルチアカウント・マルチサービスに対応しています.
その例として彼は*プレイしたこともない*艦これをプレイするプラグインをリリースしました.


私がこれに気がついたのはこの記事が書かれた実に2日後でしたが、
まだmikutterで艦これという声は聞こえてきていませんでした.
そこで、!!純粋に!!mikutterで艦これをしてみたいという欲求の元このプラグインをインストールしました.


結果



そして
mikutterで艦これ、やってみました。動作しました。ruby1.9だと動作しないかも? なんでアイコンが全部妙高さんになるんですかね…… http://t.co/BzSeI6XRih
— 全てのておくれを生まれる前に消し去りたい (@kotatsu_mi) 2013, 12月 5
http://t.co/zpclz6ulfd このmikutter艦これプラグインのとしぁさんの巧妙な罠のせいでreplyタブがめっちゃ怖いしとしぁさん赦さない http://t.co/QvefdYtkYg
— 全てのておくれを生まれる前に消し去りたい (@kotatsu_mi) 2013, 12月 5
おい……
TL大破wwwwざまぁwwwww
— TweetSurface (@toshi_a) 2013, 12月 5
艦これプラグインで艦これやってる人初めて見た気がする #mikutterhttp://t.co/iM4I3I93zL
— TweetSurface (@toshi_a) 2013, 12月 6
おい!

これは許さんぞ…… おのれ……!! 純粋な気持ちを踏みにじった@toshi_aめ…!!


それからどーした



パッチ作って、
  ( ^ω^) これを
  ⊃)  (⊂

  ( ^ω^) こうして
  ≡⊃⊂≡

  ( ^ω^) こうじゃ
 …

FreeBSDの進化

これは ディストリビューション/パッケージマネージャ Advent Calender 8日目の記事です.

最近OSSというとLinuxがフィーチャーされがちで、BSDは古臭いイメージを持たれている方が多いかとおもいます.

ports? make install? めんどくせー、バイナリパッケージないのかよ.
えっバイナリパッケージあるけどインストールと削除とインストール済みリスト表示が全部別々のコマンドだって?
しかも削除するときはバージョン番号まで指定?
やってらんねー.

そんなあなたでも大丈夫、次期リリースのFreeBSD 10からはpkg(8)がパッケージ管理の標準になります.
現行の最新版リリースであるFreeBSD 9.2でも、このパッケージマネージャは試すことができるので、試してみてください

これで記事を終えるのは流石にひどいのでざっと使い方など説明

なにができるのか
# pkg                                                                                                        
usage: pkg [-v] [-d] [-l] [-N] [-j <jail name or id>|-c <chroot path>] [-C <configuration file>] <command> [<args>]

Global options supported:
        -d             Increment debug level
        -j             Execute pkg(1) inside a jail(8)
        -c             Execute pkg(1) inside a chroot(8)
        -C             Use the specified configuration file
        -l             List available command and exit
        -v             Display pkg(1) version
   …

カーネルおさんぽまっぷ超入門

イメージ
Kernel/VM Advent Calender 2013 7日目

カーネル/VMはておくれなすごい人がけっこう集って、ネタとか披露しているようです.
今年のAdvent Calenderも既に濃い内容が集っています.

でも、私達パンピーにはカーネルとかちょっと難しすぎてそもそも
カーネル/VMという主題自体敬遠しちゃう……

ということで本当にカーネルの第一歩をやってみよう、というのがこの記事です.
記事タイトルはえりっく氏(@siritori)から無断で肖ってます.ありがとうございます


今年の他の記事が高度な内容なので
この記事が低レベル(低レイヤということでなく本当に程度が低いという意味で)ですいません.
普段からカーネル/VMに参加してる皆様、さようなら.
カーネル/VM界隈わいわいしてておもしろそうだけど怖くて敬遠してる方々、こんにちは.

前置きはこのぐらいで本文行きます. 少々長め.


1. イントロ

まず、いきなりカーネルのソースを読むのは無理です.どこから読んでいいやら、
よしんば読み始めてもどう読んで良いやらでさっぱりです.完全に未知の領域なわけですから.

最初は自分の興味のある場所から読んでいくのが良いかもしれません.

unixのファイルパーミッションって、user名を参照してアクセスの可否を決定してるっぽいけど、user名って/Users/hogeにあたるディレクトリ名からとってるのかな。それで考えるとsuはどうやって実装されてるんだろ。
— しょごたん (@_sgtn) 2013, 12月 7 今回のネタはこれで行きましょう.ついさっきTLに流れてきました.
 実装が気になる? なら見てみればいいじゃない提督!

2. はじめかた

ということで、今回はsuコマンドがどうやってコマンドを発行したユーザーを判別しているか、
追ってみます

まずsuコマンドのソースについて.
ArchLinuxで、
$pacman -Qo /usr/bin/su とすると、util-linuxパッケージに入ってることがわかります.
util-linuxで検索すると、ここからソースのtarballが入手できることが判明.
あ、ArchならabsのPKGBUILDに対してmakepkg -o、Gentooならportageのebuildに対してebuild unpackでソー…

ArchLinuxでHaskell Platform!

みなさん、Haskellしてますか? (挨拶)

Haskellの環境といえばHaskell Platformですが、
ArchLinuxにはHaskell Platformのバイナリパッケージがありません.

しかしご安心、Archには心強いAURという仕組みがありますね!
AURにはHaskell Platformがあります https://aur.archlinux.org/packages/haskell-platform/

しかし問題なのは、ArchのextraレポジトリのGHCのバージョン等の兼ね合いで
ビルドが通らないことがあります.
現時点は2013.02がビルトが通りますが、2012.04の時にはGHC7.4.2をAURからビルドするハメになりました.
それにパッケージは常に最新を使いたいのがArch-erですね?

そこで、次のようにしましょう.

1. まず、/etc/pacman.confの編集
[haskell-core]
Server = http://xsounds.org/~haskell/core/$arch これを[extra]の前に置くことでghcやhaskellの各パッケージはここから持ってくることができます

2. つぎに署名の追加
pacman-key -r 4209170B
pacman-key --lsign-key 4209170B これで先に追加したレポジトリが使用可能になります.
ここで署名を追加してよいか(haskell-coreレポジトリを信用するかどうか)は、個々人の責任の元に行いましょう

3. パッケージのインストール
pacman -S $(cat haskellplatform) これだけで大丈夫です.
ここで読み込んでるhaskellplatformは次のgistを使いましょう(これがミソですよ).


このリストはちゃんとHaskell Platformのパッケージを網羅できてるとおもいます.
インストールも成功できるはず.

これでパッケージ郡をインストールすれば、Haskell Platformと同等の環境が手に入りますね
 以上でした