FTPのファイル属性とそのビット表記について

FTPのファイル属性の仕組みを知る(ビット表記)

この記事は次のブログに引っ越しました。

FTPのファイル属性の仕組みを知る(ビット表記)を含むブックマーク CommentsAdd Star ファイルの属性が707の場合、"rwx---rwx"と3桁ずつで表記されます。これは最初の3桁がオーナーの属性、次の3桁がグループの属性、最後の3桁がその他の属性を示しています。各3桁は左から呼び出し(read)、書き込み(write)、実行(execute)が有効か否かを示している。無効だと"-"と表記される。つまり、オーナーの属性が"rwx"の場合だと、オーナーは、このファイルに対して、読み込みも書き込みも実行も出来る権限があるということになる。ここで注目して欲しいのが、"rwx"という表記は人間にとってわかりやすくしているだけで、実際にはスイッチのようなものであるということ。有効な場合は"1"(オン)、無効な場合は"0"(オフ)とした場合、"rwx---rwx"は"111000111"と書ける。つまり、これは2進数で表現できるということで、これを8進数に変換すると"707"となる。本当は9桁(9ビット)の2進数でファイルの属性をコントロールしているのだが、人間にわかりやすいように表示を"rwx"にしたり、8進数にしたりしているということを知っておいて欲しい。FTPパーミッションとは関係ないが、昔MSXMIDIを扱っていたときに、2進数(バイナリ)でフィルタというかマスク処理をよくやっていた。この2進法の”0”(ゼロ)と”1”(いち)をオン・オフと見なして、スイッチ(リレー)に関連付ける概念を理解すると、プリンタケーブル、LAN、シリアルケーブルで通信できる理屈や、プログラムからハードウェアをコントロールする根本的な仕組みやプロトコルとはなんぞやというのが、紐解けるようになる。まぁ、これ自体を知ったところで実務には役に立たないかもしれないが、ハード屋さんの苦労やソフト屋さんの苦労がお互いに分かりづらいなか、接点があると知るだけでも、つながりが持てると思うのです。うちのメンバーの今後のスキルアップのための、覚え書きとしてこの記事を書いてみた。いつかちゃんとした記事にしたいな。

PHPで"AND,OR,XOR"を使ってバイナリ計算をする

この記事は次のブログに引っ越しました。

論理演算子 記号 利用例 備考 AND & 1 & 2 = 0 0001 AND 0010 = 0000 OR 1 2 = 3 0001 OR 0010 = 0011 XOR ^ 5 ^ 6 = 3 0101 XOR 0110 = 0011 NOT ~ ~(5 ^ 6) = -4 NOT(0101 XOR 0110) = !0011 = 11111111111111111111111111111100 利用例として、ファイルのアクセス権(ファイルの属性)で、その他が書き込みになっているかのチェックに使える。 $perms = fileperms("hoge.txt"); 8進数だと"40707" = 10進数だと"16839" = 2進数だと"100000111000111" 100000000000010 ■関連URL こちらも、よくまとまっています。 http://www.phppro.jp/phptips/archives/vol48/1