LINK_MAXとサブディレクトリの関係
- LINK_MAX
- 1ファイルあたりの最大リンク数
ハードリンクとは
データとそのデータに付けた名前を繋げるもの
linuxの場合、inodeに名前を付けて繋げること
/ |- test |- test1/ |- test2 drwxr-xr-x 3 root root 4096 10月 7 15:06 . drwxr-xr-x 28 root root 4096 10月 7 15:04 .. drwxr-xr-x 2 root root 4096 10月 7 15:05 test1 -rw-r--r-- 1 root root 0 10月 7 15:06 test2
何故LINKL_MAXがサブディレクトリ数と関係するのか
サブディレクトリの最大個数がLINK_MAX-2個なのはディレクトリ・ファイルなどのデータは1つ以上のハードリンクを持っている。testディレクトリについてlnでリンク数をみると
drwxr-xr-x 3 root root 4096 10月 7 15:06 .
上記より3となっている。これはtestディレクトリと同じデータを見るリンク、
- /からtestへのリンク
- testからtest(.)へのリンク
- test1からtest(test1での..)へのリンク
以上3つのリンクが存在する。
決して、testディレクトリの中にディレクトリ. .. test1の3つのディレクトリがあるからではない。testの指すデータへのリンクが3つあることを表している。
例)LINK_MAXが127の時
testの持てるサブディレクトリ数は
- /からtestへのリンク
- testからtest(.)へのリンク
以上はすでに存在しているので、125個。
"$0 == __FILE__"やshift() について
if $0 == __FILE__の条件式を用いた場合、実行中のプログラムがコマンドライン引数で指定された時に真になる。偽であれば、if内は実行されず、このプログラムはライブラリとして使用される。
def func() #ライブラリとして実行される end puts("hello") if $0 == __FILE__ puts("実行中") end
shift()
配列の先頭を取り除いて、それを返す。残りの要素は元の配列に格納されたままになっているが、先頭の要素はない。
irb(main):004:0> a = [3, "aa", "bb"] => [3, "aa", "bb"] irb(main):005:0> p a.shift() 3 => 3 irb(main):006:0> a => ["aa", "bb"]
Symbolクラス
- 識別子
- 変数や定数、関数、メソッドなどにつける名前。英字またはアンダースコアをから始め、2文字目以降は0個以上の英数字またはアンダースコアでつなげる規則
- :識別子
- Symbolクラスのオブジェクト表記
- Symbol
- 任意の文字列と一対一に対応するオブジェクト。文字列の代わりに用いることも可能だが、必ずしも文字列と同じ振る舞いをするわけではない。
- SymbolオブジェクトはRubyの内部では整数扱いなので、高速に比較できる
- Symbolオブジェクトは数値と異なり、人間にとって意味のある記述ができる。(つまり人間に解りやすい)
StringとSymbolの違い
Stringでは"a"と書くたびにオブジェクトが生成されます。しかしSymbolの:aは1つのオブジェクトだけを指すので、Stringと違って複数のオブジェクトが生成されることはない。
一区切り
7月から9月までRubyについて勉強して、その内容をこのブログに上げてきました。その数52記事。9月が終わったということで、今日は今までのまとめをしたいと思います。
「Hello World!」から始まって、関数、配列、ハッシュ、ファイル、ライブラリ、永続化、例外を勉強してきました。いろいろプログラムを書いていった中で、理解できなくて先に進めなかったり、レビューしてたらバグを発見されて m9(^Д^)プギャー になったり・・・。いい思ひ出。その中でも、
- クラスメソッド・インスタンスメソッドの違いがわからない
- 変数名の付け方が難しい
- bitmapで描画したシェルピンスキーのギャスケット
- 俳句みたいな文書を作るプログラム
- 鶴亀算ならぬ鶴亀トンボ算を解くプログラム
が強い印象に残ってます。
bitmapで描画したシェルピンスキーのギャスケット
複雑な三角形を組み合わせてbitmapをつくりました。下記が本を写経して作った画像。
左右対称じゃない三角形ができました。
俳句みたいな文書を作るプログラム
575になるように単語を配列に格納し、ランダムで表示させる俳句作成プログラムを作りました。実行結果は以下です。
馬高く 嵐駆け出す 医師の咳 山高く 隣うらやむ 川の音 川静か 柳飛び込む 馬の山
などテキトーな俳句ができます。数さえ合っていれば、俳句にのように見えるもんなんですねー。