You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
UTF-8はWikipediaに書かれている通り、 当初は、Plan 9で用いるエンコードとしてベル研究所で考案された。 ものだけど、最近古本屋で見つけた「インターネットヒストリー」の村井純先生のあとがきに気になる記述があった。 ちょっと長くなるけど引用する。 かなり昔の話だが、ベル研のUNIXを作ったオペレーティングシステムを担当していたグループにオペレーティングシステムについての講演を頼まれたときに「日本語」の話をしたことがある。正直にいうと、ケン・トンプソンやデニスリッチなど、コンピュータ界のノーベル賞といわれるチューリング賞をとった錚々たるメンバーを前にして、当時「ただの研究者」であった自分がオペレーティングシステムについて何を話したらよいのだろうと悩んでしまった。結局開き直って話すことにしたのが漢字の問題だったわけだ。しかし、このときの講演の内容が、彼らにとっては1バイト1文字と
2016-07-21: このページの記述は古いうえに、(当初から)致命的に間違っている箇所があります。 今のところ気づいているのは、 ヒンティングの強弱と LCD レンダリングモードの直交した指定ができないというのは大嘘。当時から FreeType のリファレンスにちゃんと説明がある。 Firefox のレンダリングは cairo に移行済。 LCD フィルタは freetype 側に実装され、現在では多くの環境で適切に使用されている。 cairo で hintstyle の設定が無視される問題は Bugzilla を見る限りまだ残っているように思えるけれど、手元で試した感じでは反映されているような…。気のせいかも(適当)。 pango は HarfBuzz に移行。 TrueType のバイトコードヒンティングは、 2.6.4 で水平方向のヒンティング命令を無視する処理が追加され、サブピ
Shebangとは、UNIXのシェルスクリプトの業界標準で、シェルスクリプトの一行目のコメントの、#!を意味する。sheが短母音か長母音か分からなかったので、英語ネイティブにたずねたところ、人によって意見が違う。短母音の方が多数派のようなので、一応シバンが近いものになるだろう。日本語版のWikipediaでも、シバンとしている。この機能には他にも多数の名前があるが、もっとも有名なのが、Shebangだそうだ。 その業界標準的な文法は、以下の通り(ただし、後述するように、この文字列の扱いについては違いがある) #! 文字列 [改行] 普通、実行権限のついたファイルは、標準のシェルで実行されるが、このShebangがある場合は、#!から改行までの間の文字列を、後述するバラバラな方法で解釈して、execで実行し、その際の引数には元のシェルスクリプトファイルへのパスが指定される。 問題は、このsh
プロセス置き換えとか、名前付きパイプとか、とても便利な機能なのだけど、その仕組みはどうなっているのだろう?断片的な知識ばかりでは、その核心にはなかなか辿り着けない。サンプルコードの真似はできるけど、それ以上の発想はできない...。もっと根本的なところからちゃんと理解しておかないと、いつまでたってもコマンドの使い方の本質が理解できないと感じた。プロセスとは何か?パイプとは何か?リダイレクションとは何か?ファイルディスクリプタとは何か?可能な限りその本質を探ってみようと思う。 UNIXのプロセス UNIXでは、複数のユーザーがログインした状態で、同時に複数の処理を依頼される状況が多々ある。 ところが、どんなに高性能なCPUであっても、ある瞬間に処理できるのはたった1つの処理だけである。 そんな時OSは、それぞれの処理に必要なメモリ領域を割り当てて、CPUをタイミングよく切り替えながら同時並行的
UNIXの歴史にはある大きな転換点があり、そこには「もう一つの未来」の可能性が開けていました。この転換期に起こった出来事は「UNIX戦争」として知られていますが、その背景に「UNIXをC++で分散OSに書き直す」という野心的な計画があったことは、今ではほとんど語られることはありません。 私は、この一連の出来事の時期に、『日経エレクトロニクス』の記者としてUNIXの動向を追っていました。当時の出来事の概要を、取材者の視点から書き記しておきたいと思います。多くの読者にとって初耳の情報も含まれていると思います。 一連の出来事の発端は1987年に発表された、Sun、AT&T、Microsoftによる統合UNIXの発表です。この発表の前夜がどういう時代だったか、という話がまず必要でしょう。 統合前夜 1980年代後半は、コンピュータの歴史でも重要な時期でした。この時期、32ビット・マイクロプロセッサ
「リダイレクトとパイプを図示してみた」の補足です。気づいたことを書き足しただけなので短いです。 (1)id:simply-k:20100731:1280607841 (2)id:simply-k:20100801:1280617927 (3)id:simply-k:20100802:1280617927 リダイレクトとパイプの比較 リダイレクトとパイプを、0、1、2といった番号*1の指定という観点から比較してみます。 リダイレクト 0、1、2などの番号を直接指定する。 (「0<」、「1>」、「2>」など) パイプ パイプ前のコマンドの標準出力と、パイプ後のコマンドの標準入力を結合する。正確には、パイプ前のコマンドの1番にデフォルトで割当てられられた出力ストリームと、パイプ後のコマンドの0番にデフォルトで割り当てられた入力ストリームが、結合されたかのように振る舞う。0、1、2などの番号は、ス
前々回、前回の続きです。今回は、様々なリダイレクトやパイプを組み合わせた複雑なケースを説明します。 前回: id:simply-k:20100801:1280617927 補足: id:simply-k:20100803:1280796958 (11) コマンドA 2>&1 | コマンドB リダイレクトとパイプを組み合わせたケースです。2段階に分割して考えます。 (11-1) 「コマンドA 2>&1」、「コマンドB」 パイプの前後のコマンドを単独実行する場合です。「コマンドA 2>&1」では、コマンドAの標準エラー出力を、標準出力にリダイレクトします。このため、コマンドAの標準出力のデータと標準エラー出力のデータは、まとめて標準出力(stdout-a)に出力されます。「コマンドB」は、リダイレクトの無い、通常のコマンド実行です。 (11-2) コマンドA 2>&1 | コマンドB 「コマン
前回の続きです。今回は、リダイレクトの記号が複数のケースと、パイプを使うケースを説明します。 前回: id:simply-k:20100731:1280607841 次回: id:simply-k:20100802:1280617927 (7) コマンド 1> ファイル 2>&1 2段階に分割して考えます。リダイレクトの記号が複数の場合は、左側から順に考えます。 (7-1) 1> ファイル 1番の出力先(標準出力)をファイルにリダイレクトします。内部的には、ファイルを書き込み用にオープンし、その出力ストリームを1番に結び付けます。*1 (7-2) 2>&1 2番の出力先(標準エラー出力)を1番の出力先(ファイル)にリダイレクトします。内部的には、1番に結びつけられたストリーム(file)を2番に結び付けます。リダイレクトしない場合に標準出力と標準エラー出力に分かれて出力されるデータが、同じ
自分自身の知識を整理するため、リダイレクトとパイプの考え方を図示してみました。記事は3回に分ける予定です。 前回: - 次回: id:simply-k:20100801:1280617927 はじめに Unix/LinuxのシェルスクリプトやWindowsのコマンドプロンプトで使用するリダイレクトとパイプについて、考え方を図示しました。リダイレクトの表記法は、sh/bashやコマンドプロンプトを前提にしています。 リダイレクトやパイプについての初歩的な説明は省いていますので、そのような説明がほしい方は、他のサイトや書籍を参照してください。 (1) コマンド リダイレクトやパイプを使用しないコマンド実行です。 図の中の矢印は、ストリーム(データの流れ)を示しています。標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)が、自動的にオープンされます。それぞれ、データ
このエントリはhttp://d.hatena.ne.jp/takahirox/20120131/1328006885を和訳したものです。 はじめに 最近UNIX 6thのソースコードの読書メモを書き終えました。 みさなんにもUNIX 6thのソースコードを読むことをオススメします。 その理由をこのエントリで書いていきます。 まとめ UNIX 6thは初めてOSのソースコードを読む人にうってつけ! 今すぐ読み始めましょう! UNIX 6thのソースコードはこちらなどで読むことができます。 http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 UNIX 6thのソースコードを読むことをオススメする理由 たったの10,000行 最近のLinuxカーネルのソースコードは100万行を超えています。全てを理解するのは至難の業です。 一方、UNIX 6thのカー
Mosh の REPL が Ctrl-D で抜けられないとご指摘いただいていた件。 そもそも Ctrl-D って何だっけ?と立ち止まり調べましたが当たり前すぎて(?)記事にすらなってないので書いておきます。 ユーザーから見た Ctrl-D 入力終了を対話型のプログラムにしらせることに使う。 例えば irb から抜けるとき。 dekisugi% irb irb(main):001:0> puts "Hello" Hello => nil irb(main):002:0> # Ctrl-D で irb から抜ける その対話型プログラムが持つ exit や quit などの終了コマンドを入力するよりも楽ですね。 人によっては Ctrl-C を使う場合もあるかもしれません。(そのプログラムが SIGINT をどう扱っているかに依存するので、Ctrl-c で終了しない場合もよくあります。) 追記 i
たとえば、あなたが午後いっぱいを費やして製作したオーディオ・ファイルの再生を楽しみながら、「やあ、こいつはすごい音だ! こっちに移動しておくとしよう」と思ったとする。そのとき、潜在意識が違和感を唱えるのだ。「ええと、mvだっけ、rmじゃないのか?」…やっちまった。そのショックはよくわかる。誰にでもありうる失敗だ。だが、失われたファイルを取り戻す簡単な方法はある。しかも、それはどの標準Linuxシステムでも使える方法だから、覚えておいて絶対に損はない。 簡単に説明すると、Linuxファイルシステム上にあるように見えるファイルは、実際はinodeへのリンクに過ぎない。inodeには、ファイルのあらゆるプロパティ(アクセス権や所有権など)のほか、ファイルの中味が実際に存在するディスク上のデータブロックのアドレスも記録される。rmコマンドでファイルを削除すると、ファイルのinodeを指すリンクは削
Named Directory という機能があるらしい。 やり方は簡単で、 hash コマンドの -d オプションを利用する。 hash -d 名前=ディレクトリパス 以後、cd ~名前 で移動できるようになる。 たとえば以下のようにすると、 % hash -d test=/usr/local/src こんな感じで移動できるようになる。 % cd ~test ~test% # ここはプロンプトの設定にもよる ~test% pwd /usr/local/src ちなみに、 setopt auto_cd としておくと、 もっと簡単に移動できる。 % ~test ~test% 追記: どうも、hash -d でなくともよく 実際には任意の変数に cd ~変数 とすることでその変数の文字列が指すパスに 移動することが出来るようだ。 したがって、変数なら何でも良いので % src=/usr/loca
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く