トップ «前の日記(30-January-2013) 最新 次の日記(01-February-2013)» 編集

つれづれなるままに

これまでの訪問者人
本日の訪問者人  昨日の訪問者人
月齢14.6

AI | AIきりたん | Ast | Beat Saber | CeVIO | Cn | cover | de | Emacs | En | Es | fr | git | html | iPad | It | Just Dance | misc | MMD | MV | NEUTRINO | OVA | PC | PV | Ru | SF | SKK | stable diffusion | SynthesizerV | tDiary | Th | Vocaloid | VRC | VRChat MMD | Vsinger | Vtuber | was | YuNi | お茶 | アニメ | アメリカ | イラスト | オカリナ | カゲプロ | キズナアイ | テレビ | ノベル | ノーベル賞 | ビートセイバー | フィートセイバー | フランス | ラズパイ | ラノベ | 万葉語 | 世界 | 中国 | 予定 | 即売会 | 台湾 | 台風 | 合成してみた | 同人 | 地震 | 宇宙 | 家電 | 展示 | 描いてみた | 政治 | 旅行 | 日記 | 映画 | 時事 | 書道 | 歌ってみた | 歴史 | 海外 | 演奏してみた | 漫画 | 特撮 | 科学 | 英国 | 訃報 | 語学 | 踊ってみた | 陶笛 | 障害 | 音楽 | 飲み |

31-January-2013 寒い眠い疲れた [長年日記]

_ [PC] だる

このところ、寒いせいか、かなり体がだるいんですよ。

そして、ひたすら眠いし。

血行が悪くなっているんでしょうね。あたまがくらくらしたりもするし。

ううむ。

_ [PC] 改行コード

まぁ、ご存知の通りOSによって改行コードは違うんですよね。

unix: LF (^J)

Windows:CRLF (^M^J)

Mac: CR (^M)

でも、本来の意味としては、LFはラインフィードだからラインプリンターの行を進めるだけの意味だし、CRは行を進めないで行の先頭に戻ることなんですよね。で、CR+LFがいわゆる改行になるわけです。(昔のキーボードでは復改なんて書いてあるのがありましたっけ。)

で、何が言いたいかというと、普通のテキストデータで上のコードを入れても、そのままの制御になってくれないんですよね。

まぁ、あたりまえっちゃあ、あたりまえなんですけど。

昔はメモ帳でunixのテキストもMacのテキストも開けなくて困ったものです。

ところが、これ、ツールによっては不思議な挙動をしたりします。

単純にsedとかtrとかで改行を置き換えてもそんなことはおきないのですけど、perlとかでMacのテキストを読み込んでファイルに吐き出そうとしたときに、行が全て上書きされてしまって珍妙な行が1行だけ出力される、なんてことがありました。多分、私の実装が悪いせいなんだと思いますけど。多分、1行読み込んだときに、行末のCRで行頭に戻り、そのまま次の行が読み込まれてしまうためにどんどん上書きされてしまうんでしょう。普通、1行読んでからchompで改行コードをはずすんですけど、そこまで到達しないと。うまくCRをデリミターとして認識してやらないといけないです。unixとかWindowsについてはちゃんと認識してくれるんですけど。これは多分、LFをデリミターとして認識してるからではないでしょうか。

何でこんなことを考えてるかというと、Fortranの例の1カラム目の制御コードの扱いのためなんです。

Fortranでは印字のときに1カラム目の文字で改行や改ページを制御してくれます。具体的には

     write(*,1000)
     write(*,2000)
     write(*,3000)
1000 format(1h ,’here’)
2000 format(1h0,’ummm’)
3000 format(1h1,’there’)
4000 format(1h+,’       oh??’

と入力したときに、

here
(空行)
ummm
^Lthere  oh??

みたいな感じになります。(ちゃんと空行が出るかなぁ?)

h記述子はホレリスといって、1hxとというのはhのあとの文字1個を出力するという意味になります。で、特に0,1,+などに特殊な意味があるわけです。(ちなみに、古いコードになるとホレリスばりばりで文字列を出力していて、ものすごく読みづらいです。Fortran 95以降ではobsoleteになっているはず。)

まぁ、古い時代の遺物なんですけど、昔の処理系ではこの1カラム目を読み取ってちゃんと改行処理や改ページ処理をしてくれました。そして、重ねがきもちゃんとやってくれたんです。

Fortranがunixに移植されたときは、そのままの文字として出力されるようになったんです。(20年前のHP-UXの場合は、機番6または*のときはちゃんとコードが反映されていましたが、ファイルをopenして使用するときは1カラム目がそのまま出力されていました。)

それでは困るということで、当時のunixにはasaというコマンドがあって、改行コードを変換してくれたものでした。

それが最近のLinuxとかにはないんですよね。

最初のころは、Cとかで1カラム目を上記の改行コードに置き換えることで対応できたんですけど、最近のLinuxではうまく重ね書きが表現できないんです。

sedのスクリプトを書いてみました。

s/^0/\n/;
s/^1/\f/;
s/^+/\r/;

でも、行の先頭に^Mは入るんですけど、重ね書きにはなってくれません。

ううむ。もしかして、上の変換の順番を変えるとうまくいったりして?

_ [PC] SKKFEP

めまぐるしく更新が続いているSKKFEPに追従しております。

まぁ、色々と実験的な実装があるので、色々とあったりします。

時々、Google翻訳を使ってるときに、日本語入力が突然できなくなったり。そのときはすかさず^G。でも、IEだとお気に入りのサイドバーが出てしまうんですよね。アプリに制御を渡さないでSKKFEPの制御にする方法がるらしいのですが、どこにドキュメント化されてるんだろ。。(裏コードらしい。)

あと、この日記を書いてる間にはまったのですけど、上カーソルが効かなくなったりして。SKKFEPでは予測変換をしてくれていて、予測内容が出てきたところで.とか↓とかを入力すると確定するようになっています。どこかでこのカーソル処理が飲み込まれてしまっているのかなぁ?

中見のことはよく知らないので、対処方法はわからないのですけど。

さらにSKKGateとかSKKNetとかを、意味もなく立ち上げてるので、そこらへんが悪さしてるという可能性はあります。

はて?

もしかして、時々ネットにつながらなくなるのもこれらのせいだったりして??

まぁ、疑うのはやめましょう。

自分で実装したアプリだったら、まず自分を疑うのが鉄則ですけど、givenなものについては、まず自分の操作や設定をまず疑わなくては。

_ [地震] 茨城

23時53分ごろに茨城県北部を震源としたマグニチュード4.7の地震がありました。

震源近くでは震度5-だったようです。

津波の心配はないということです。

東京の方は震度1ぐらいだったから、全然気付きませんでした。

本日のツッコミ(全2件) [ツッコミを入れる]
_ よも (02-February-2013 17:09)

うーん…関東地方、地震が頻発してますね。

_ おおむらゆう (03-February-2013 22:09)

北海道のはびっくりしましたよ。茨城は昔から多いんですよね。


【PR】ブログへ記事を投稿して報酬ゲット!アフィリエイトのA8.net